diff --git a/frontend/vite/src/stores/dashboard.ts b/frontend/vite/src/stores/dashboard.ts index ebd1f2d6..76195892 100644 --- a/frontend/vite/src/stores/dashboard.ts +++ b/frontend/vite/src/stores/dashboard.ts @@ -13,6 +13,7 @@ import { GET_SAMPLE_GROUPS_BY_ACTION, GET_SAMPLE_LAGGARDS, } from '../graphql/dashboard.queries' +import { mapOrder } from '../utils' import { useApiUtil } from "../composables"; const { withClientQuery } = useApiUtil(); @@ -107,7 +108,7 @@ export const useDashBoardStore = defineStore('dashboard', () => { endDate: dashboard.value.filterRange.to } await withClientQuery(GET_SAMPLE_GROUP_BY_STATUS, filters , 'countSampleGroupByStatus', 'network-only') - .then(payload => dashboard.value.overViewStats.samples = payload.data) + .then(payload => dashboard.value.overViewStats.samples = mapOrder(payload.data, ["scheduled","expected","received", "awaiting", "approved"], "group")) } // GET_ANALYSIS_GROUP_BY_STATUS @@ -117,7 +118,7 @@ export const useDashBoardStore = defineStore('dashboard', () => { endDate: dashboard.value.filterRange.to } await withClientQuery(GET_ANALYSIS_GROUP_BY_STATUS, filters , 'countAnalyteGroupByStatus', 'network-only') - .then(payload => dashboard.value.overViewStats.analyses = payload.data) + .then(payload => dashboard.value.overViewStats.analyses = mapOrder(payload.data, ["pending","resulted"], "group")) } // GET_WORKSHEET_GROUP_BY_STATUS @@ -127,7 +128,7 @@ export const useDashBoardStore = defineStore('dashboard', () => { endDate: dashboard.value.filterRange.to } await withClientQuery(GET_WORKSHEET_GROUP_BY_STATUS,filters, 'countWorksheetGroupByStatus', 'network-only') - .then(payload => dashboard.value.overViewStats.worksheets = payload.data) + .then(payload => dashboard.value.overViewStats.worksheets = mapOrder(payload.data, ["empty","awaiting","pending"], "group")) } // GET_extras_GROUP_BY_STATUS @@ -137,7 +138,7 @@ export const useDashBoardStore = defineStore('dashboard', () => { endDate: dashboard.value.filterRange.to } await withClientQuery(GET_EXTRAS_GROUP_BY_STATUS, filters , 'countExtrasGroupByStatus', 'network-only') - .then(payload => dashboard.value.overViewStats.extras = payload.data) + .then(payload => dashboard.value.overViewStats.extras = mapOrder(payload.data, ["sample cancelled", "sample rejected", "sample invalidated", "analysis retracted", "analysis retested"], "group")) } // GET_ANALYSIS_GROUP_BY_INSTRUMENT diff --git a/frontend/vite/src/utils.ts b/frontend/vite/src/utils.ts index b582e354..fc12e726 100644 --- a/frontend/vite/src/utils.ts +++ b/frontend/vite/src/utils.ts @@ -149,9 +149,29 @@ export const stringifyNumber = (n: number):string => { return deca[Math.floor(n/10)-2] + 'y-' + special[n%10]; } +/** + * Sort array of objects based on another array + */ + +export const mapOrder = (array, order, key) => { + + return array.sort( function (a, b) { + var A = a[key], B = b[key]; + + if (order.indexOf(A) > order.indexOf(B)) { + return 1; + } else { + return -1; + } + + }); + +}; + export default { isNullOrWs, parseUrlParams, startsWith, + mapOrder, }; \ No newline at end of file