From 49fdbadf9bafb91c7045e10f741e9c1973d0ce46 Mon Sep 17 00:00:00 2001 From: "amtul.noor" Date: Mon, 8 Apr 2024 18:31:29 +0200 Subject: [PATCH] feat: implement gt list sorting --- .../workflows/WorkflowsTimeline.vue | 75 ++++++++- src/helpers/sort.ts | 12 ++ src/locales/en.json | 8 +- src/store/workflows-store.ts | 142 +++++++++++++++++- 4 files changed, 228 insertions(+), 9 deletions(-) create mode 100644 src/helpers/sort.ts diff --git a/src/components/workflows/WorkflowsTimeline.vue b/src/components/workflows/WorkflowsTimeline.vue index e957da8..5ff5660 100644 --- a/src/components/workflows/WorkflowsTimeline.vue +++ b/src/components/workflows/WorkflowsTimeline.vue @@ -3,6 +3,7 @@ import TimelineItem from "@/components/workflows/timeline/TimelineItem.vue" import Dropdown from 'primevue/dropdown' import {computed, onMounted, ref, watch} from "vue" import {EvaluationMetrics, getMaxValueByMetric} from '@/helpers/metrics' +import { SortOptions } from '@/helpers/sort' import { useI18n } from "vue-i18n" import type { DropdownOption, EvaluationResultsDocumentWide, Workflow, GroundTruth } from "@/types" import { DropdownPassThroughStyles } from '@/helpers/pt' @@ -12,11 +13,26 @@ import timelineStore from "@/store/timeline-store" import TrendLegend from "@/components/workflows/TrendLegend.vue"; const { t } = useI18n() -const gtList = computed(() => workflowsStore.gt.filter(({ id }) => filtersStore.gt.findIndex(({ value }) => value === id) > -1)) const workflows = ref([]) const selectedMetric = ref(null) -const metrics = computed(() => Object.keys(EvaluationMetrics).map(key => ({ value: EvaluationMetrics[key], label: t(EvaluationMetrics[key]) }))) const selectedMetricValue = computed(() => selectedMetric.value?.value || EvaluationMetrics.CER_MEAN) +const gtList = computed(() => ( + workflowsStore.gt.filter(({ id }) => filtersStore.gt.findIndex(({ value }) => value === id) > -1) + ) +) +const metrics = computed(() => ( + Object.keys(EvaluationMetrics).map(key => ({ value: EvaluationMetrics[key], label: t(EvaluationMetrics[key]) })) + ) +) +const sortOpts = computed(() => ( + Object.keys(SortOptions).map(key => ( + { + value: SortOptions[key], + label: t(SortOptions[key]), + } + )) +)) +const selectedSortType = ref(null) onMounted(async () => { selectedMetric.value = metrics.value[0] @@ -30,11 +46,53 @@ watch(selectedMetric, ), { immediate: true } ) + +watch( + selectedSortType, + (type) => { + switch (type?.value) { + case 'year_asc': + workflowsStore.sortGtbyYearAsc() + break + case 'year_desc': + workflowsStore.sortGtbyYearDesc() + break + case 'label_asc': + workflowsStore.sortGtbyLabelAsc() + break + case 'label_desc': + workflowsStore.sortGtbyLabelDesc() + break + case 'metric_asc': + workflowsStore.sortGtbyMetricAsc(selectedMetricValue.value) + break + case 'metric_desc': + workflowsStore.sortGtbyMetricDesc(selectedMetricValue.value) + break + } + } +) + +watch( + selectedMetricValue, + (metric) => { + if (selectedSortType.value) { + switch (selectedSortType.value.value) { + case 'metric_asc': + workflowsStore.sortGtbyMetricAsc(metric) + break + case 'metric_desc': + workflowsStore.sortGtbyMetricDesc(metric) + break + } + } + }, +)