mirror of
https://github.com/directus/directus.git
synced 2026-01-28 07:48:04 -05:00
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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user