Newer
Older
import api from '@/helpers/api'
import { useRouter, useRoute } from "vue-router"
import WorkflowsTable from "@/components/workflows/WorkflowsTable.vue"
import { useI18n } from "vue-i18n"
import { mapGtId, setEvalColors } from "@/helpers/utils"
import { store } from "@/helpers/store"
import Filters from "@/components/workflows/filters/Filters.vue"
import SelectButton from "primevue/selectbutton"
import WorkflowsTimeline from "@/components/workflows/WorkflowsTimeline.vue"
import filtersStore from "@/store/filters-store"
const { t } = useI18n()
const data = ref([])
const filteredData = ref([])
const defs = ref({})
const router = useRouter()
const route = useRoute()
{ name: t('table'), value: 'table' }
watch(() => filtersStore.gt, () => {
filteredData.value = data.value.filter(({ metadata }) => filtersStore.gt.findIndex(({ value }) => value === mapGtId(metadata.gt_workspace['id']) ) > -1)
})
watch(selectedOption, ({ value }) => {
router.push({ query: { view: value } })
})
await router.isReady()
const filtered = options.value.filter((option) => {
return route.query.view && route.query.view === option.value
})
selectedOption.value = filtered.length > 0 ? filtered[0] : options.value[0]
let gtList = store.gtList
if (!gtList.length) {
gtList = await api.getGroundTruth()
store.setGTList(gtList)
}
let workflows = store.workflows
if (!workflows.length) {
workflows = await api.getWorkflows()
store.setWorkflows(workflows)
}
const runs = []
for await (let gt of gtList) {
try {
const latestRuns = await api.getLatestRuns(gt.id,)
if (latestRuns.length > 0) {
runs.push(...latestRuns)
}
} catch (e) {
}
}
data.value = runs
defs.value = await api.getEvalDefinitions()
filteredData.value = data.value
setEvalColors(data.value)
})
<template>
<div class="flex mb-3">
<SelectButton v-model="selectedOption" :options="options" optionLabel="name"></SelectButton>
<WorkflowsTimeline v-if="selectedOption.value === 'timeline'" />
<WorkflowsTable v-else :data="filteredData" :defs="defs" />
</div>
</template>