Fix timeseries for precision by week (#9505)

* fix week aggregation for time series

* undo x axis type & tooltip change

* clean up logic for first day of N weeks
This commit is contained in:
Azri Kahar
2021-11-15 23:07:47 +08:00
committed by GitHub
parent 8f5200c6fc
commit 2cf9315b94

View File

@@ -13,6 +13,7 @@ import { useFieldsStore } from '@/stores';
import { Filter } from '@directus/shared/types';
import { abbreviateNumber } from '@/utils/abbreviate-number';
import { getEndpoint } from '@/utils/get-endpoint';
import { addWeeks } from 'date-fns';
export default defineComponent({
props: {
@@ -180,7 +181,10 @@ export default defineComponent({
function toISO(metric: Record<string, any>) {
const year = metric[`${props.dateField}_year`];
const month = padZero(metric[`${props.dateField}_month`] ?? 1);
const day = padZero(metric[`${props.dateField}_day`] ?? 1);
const week = metric[`${props.dateField}_week`];
const day = week
? padZero(getFirstDayOfNWeeksForYear(week, year))
: padZero(metric[`${props.dateField}_day`] ?? 1);
const hour = padZero(metric[`${props.dateField}_hour`] ?? 0);
const minute = padZero(metric[`${props.dateField}_minute`] ?? 0);
const second = padZero(metric[`${props.dateField}_second`] ?? 0);
@@ -190,6 +194,10 @@ export default defineComponent({
function padZero(value: number) {
return String(value).padStart(2, '0');
}
function getFirstDayOfNWeeksForYear(numberOfWeeks: number, year: number) {
return addWeeks(new Date(year, 0, 1), numberOfWeeks).getDate();
}
}
function getGroups() {
@@ -202,6 +210,9 @@ export default defineComponent({
case 'month':
groups = ['year', 'month'];
break;
case 'week':
groups = ['year', 'month', 'week'];
break;
case 'day':
groups = ['year', 'month', 'day'];
break;