diff --git a/dashboard/components/dashboard/TopCards.vue b/dashboard/components/dashboard/TopCards.vue index 8013ecb..c5f6fe7 100644 --- a/dashboard/components/dashboard/TopCards.vue +++ b/dashboard/components/dashboard/TopCards.vue @@ -21,14 +21,24 @@ const chartSlice = computed(() => { function transformResponse(input: { _id: string, count: number }[]) { + const data = input.map(e => e.count || 0); + const labels = input.map(e => DateService.getChartLabelFromISO(e._id, navigator.language, chartSlice.value)); + const pool = [...input.map(e => e.count || 0)]; - pool.pop(); + const avg = pool.reduce((a, e) => a + e, 0) / pool.length; - const diffPercent: number = (100 / avg * (input.at(-1)?.count || 0)) - 100; + + const targets = input.slice(Math.floor(input.length / 4 * 3)); + const targetAvg = targets.reduce((a, e) => a + e.count, 0) / targets.length; + + const diffPercent: number = (100 / avg * (targetAvg)) - 100; + const trend = Math.max(Math.min(diffPercent, 99), -99); + return { data, labels, trend } + } const visitsData = useFetch('/api/timeline/visits', { diff --git a/dashboard/components/events/EventsStackedBarChart.vue b/dashboard/components/events/EventsStackedBarChart.vue index 13212d7..e8723b2 100644 --- a/dashboard/components/events/EventsStackedBarChart.vue +++ b/dashboard/components/events/EventsStackedBarChart.vue @@ -14,10 +14,9 @@ function transformResponse(input: { _id: string, name: string, count: number }[] data: input, from: input[0]._id, to: safeSnapshotDates.value.to - }, slice.value, { - advanced: true, - advancedGroupKey: 'name' - }); + }, + slice.value, + { advanced: true, advancedGroupKey: 'name' }); const parsedDatasets: any[] = []; @@ -62,6 +61,7 @@ function transformResponse(input: { _id: string, name: string, count: number }[] datasets: parsedDatasets, labels: fixed.labels } + } const errorData = ref<{ errored: boolean, text: string }>({ @@ -83,7 +83,7 @@ function onResponse(e: any) { const eventsStackedData = useFetch(`/api/timeline/events_stacked`, { lazy: true, immediate: false, transform: transformResponse, - headers: useComputedHeaders({slice}), + headers: useComputedHeaders({ slice }), onResponseError, onResponse }); diff --git a/dashboard/pages/events.vue b/dashboard/pages/events.vue index 87b7767..27ed523 100644 --- a/dashboard/pages/events.vue +++ b/dashboard/pages/events.vue @@ -29,7 +29,7 @@ const eventsData = await useFetch(`/api/data/count`, { headers: useComputedHeade