mirror of
https://github.com/BioArchLinux/Rosa.git
synced 2025-03-10 12:02:43 +00:00
complete dependency render
This commit is contained in:
parent
17427b42c3
commit
6e7295f16e
4 changed files with 55 additions and 12 deletions
22
frontend/src/components/PackageInfo/PackageDependency.vue
Normal file
22
frontend/src/components/PackageInfo/PackageDependency.vue
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<script setup>
|
||||||
|
const props = defineProps({
|
||||||
|
name: String,
|
||||||
|
type: String,
|
||||||
|
dist: String
|
||||||
|
})
|
||||||
|
|
||||||
|
function generatePackageLinkUrl(name, dist) {
|
||||||
|
switch (dist) {
|
||||||
|
case 'arch':
|
||||||
|
return `https://archlinux.org/packages/?q=${name}`
|
||||||
|
case 'bioarch':
|
||||||
|
return `https://bioarchlinux.org/packages/${name}`
|
||||||
|
default:
|
||||||
|
console.log('generatePackageLinkUrl(): unreachable')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<p><a :href="generatePackageLinkUrl(name, dist)">{{ name }}</a><span v-if="type !== 'dep'"> ({{ type }})</span></p>
|
||||||
|
</template>
|
|
@ -1,3 +1,5 @@
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
|
|
||||||
|
export const packageList = ref([])
|
||||||
|
export const packageIndex = ref([])
|
||||||
export const displayPackages = ref([])
|
export const displayPackages = ref([])
|
||||||
|
|
|
@ -6,9 +6,8 @@ import Index from 'flexsearch/dist/module/index'
|
||||||
|
|
||||||
import { requestPackageIndex } from '../api'
|
import { requestPackageIndex } from '../api'
|
||||||
|
|
||||||
import { displayPackages } from '@/state'
|
import { packageIndex, displayPackages } from '@/state'
|
||||||
|
|
||||||
let packageIndex = null
|
|
||||||
const searchIndex = new Index({ tokenize: 'forward' })
|
const searchIndex = new Index({ tokenize: 'forward' })
|
||||||
|
|
||||||
let searchInput = ref("")
|
let searchInput = ref("")
|
||||||
|
@ -21,20 +20,20 @@ function updateSearchIndex(pkglist) {
|
||||||
|
|
||||||
requestPackageIndex()
|
requestPackageIndex()
|
||||||
.then((obj) => {
|
.then((obj) => {
|
||||||
packageIndex = obj
|
packageIndex.value = obj
|
||||||
displayPackages.value = obj
|
displayPackages.value = obj
|
||||||
updateSearchIndex(obj)
|
updateSearchIndex(obj)
|
||||||
})
|
})
|
||||||
|
|
||||||
watch(searchInput, async(newVal, oldVal) => {
|
watch(searchInput, async(newVal, oldVal) => {
|
||||||
if (searchInput.value.length === 0) {
|
if (searchInput.value.length === 0) {
|
||||||
displayPackages.value = packageIndex
|
displayPackages.value = packageIndex.value
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const searchResult = searchIndex.search(searchInput.value)
|
const searchResult = searchIndex.search(searchInput.value)
|
||||||
const finalResult = []
|
const finalResult = []
|
||||||
searchResult.forEach((idx) => {
|
searchResult.forEach((idx) => {
|
||||||
finalResult.push(packageIndex[idx])
|
finalResult.push(packageIndex.value[idx])
|
||||||
})
|
})
|
||||||
displayPackages.value = finalResult
|
displayPackages.value = finalResult
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,10 +3,12 @@ import { ref } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
|
|
||||||
import PackageActions from '@/components/PackageInfo/PackageActions.vue'
|
import PackageActions from '@/components/PackageInfo/PackageActions.vue'
|
||||||
|
import PackageDependency from '@/components/PackageInfo/PackageDependency.vue'
|
||||||
import ViewDetail from '@/components/PackageInfo/ViewDetail.vue'
|
import ViewDetail from '@/components/PackageInfo/ViewDetail.vue'
|
||||||
|
|
||||||
import moment from 'moment'
|
import moment from 'moment'
|
||||||
import { requestPackageInfo } from '@/api'
|
|
||||||
|
import { requestPackageInfo, requestPackageList } from '@/api'
|
||||||
import { calculateSize } from '@/utils/sizing'
|
import { calculateSize } from '@/utils/sizing'
|
||||||
import { formatPackager } from '@/utils/packager'
|
import { formatPackager } from '@/utils/packager'
|
||||||
|
|
||||||
|
@ -24,11 +26,29 @@ requestPackageInfo(route.params.packageName)
|
||||||
.then(obj => {
|
.then(obj => {
|
||||||
pkginfo.value = obj
|
pkginfo.value = obj
|
||||||
|
|
||||||
depends.value = obj.depends.split('\n').filter((elem) => elem.length > 0)
|
|
||||||
optdepends.value = obj.optdepends.split('\n').filter((elem) => elem.length > 0)
|
|
||||||
makedepends.value = obj.makedepends.split('\n').filter((elem) => elem.length > 0)
|
|
||||||
files.value = obj.files.split('\n').filter((elem) => elem.length > 0)
|
files.value = obj.files.split('\n').filter((elem) => elem.length > 0)
|
||||||
builddate.value = moment.unix(obj.builddate).format('YYYY-MM-DD HH:MM:SS')
|
builddate.value = moment.unix(obj.builddate).format('YYYY-MM-DD HH:MM:SS')
|
||||||
|
|
||||||
|
const o_depends = obj.depends.split('\n').filter((elem) => elem.length > 0)
|
||||||
|
const o_optdepends = obj.optdepends.split('\n').filter((elem) => elem.length > 0)
|
||||||
|
const o_makedepends = obj.makedepends.split('\n').filter((elem) => elem.length > 0)
|
||||||
|
|
||||||
|
requestPackageList()
|
||||||
|
.then((list) => {
|
||||||
|
list.forEach((bioarchPackageName) => {
|
||||||
|
function mapPackageDistribution(pkg) {
|
||||||
|
if (bioarchPackageName === pkg) {
|
||||||
|
return { name: pkg, dist: 'bioarch' }
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return { name: pkg, dist: 'arch' }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
depends.value = o_depends.map(mapPackageDistribution)
|
||||||
|
optdepends.value = o_optdepends.map(mapPackageDistribution)
|
||||||
|
makedepends.value = o_makedepends.map(mapPackageDistribution)
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -78,9 +98,9 @@ requestPackageInfo(route.params.packageName)
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<h3 class="pkginfo-section">Dependencies</h3>
|
<h3 class="pkginfo-section">Dependencies</h3>
|
||||||
<p v-for="dep in depends"> {{ dep }}</p>
|
<PackageDependency :name="dep.name" :dist="dep.dist" type="dep" v-for="dep in depends"></PackageDependency>
|
||||||
<p v-for="optdep in optdepends"> {{ optdep }} (optional)</p>
|
<PackageDependency :name="optdep.name" :dist="optdep.dist" type="optional" v-for="optdep in optdepends"></PackageDependency>
|
||||||
<p v-for="makedep in makedepends"> {{ makedep }} (make)</p>
|
<PackageDependency :name="makedep.name" :dist="makedep.dist" type="make" v-for="makedep in makedepends"></PackageDependency>
|
||||||
|
|
||||||
<h3 class="pkginfo-section">Package Content</h3>
|
<h3 class="pkginfo-section">Package Content</h3>
|
||||||
<ViewDetail :message="`View the file list for ${pkginfo.name}`">
|
<ViewDetail :message="`View the file list for ${pkginfo.name}`">
|
||||||
|
|
Loading…
Add table
Reference in a new issue