[NOT READY] fix granularity

This commit is contained in:
Emily
2024-12-07 18:24:48 +01:00
parent ad8e9e1ead
commit 78f979d23a
3 changed files with 13 additions and 10 deletions

View File

@@ -16,7 +16,7 @@ export default defineEventHandler(async event => {
const timelineData = await executeTimelineAggregation({ const timelineData = await executeTimelineAggregation({
projectId: project_id, projectId: project_id,
model: EventModel, model: EventModel,
from, to, slice, from, to, slice
}); });
return timelineData; return timelineData;
}); });

View File

@@ -69,19 +69,22 @@ export async function executeAdvancedTimelineAggregation<T = {}>(options: Advanc
...options.customGroup ...options.customGroup
} }
}, },
{
$sort: { "_id.isoDate": 1 }
},
{ {
$densify: { $densify: {
field: "_id.isoDate", field: "_id.isoDate",
range: { range: {
step: 1, step: 1,
unit: granularity, unit: granularity,
bounds: "full" bounds: [
new Date(options.from),
new Date(options.to)
]
} }
} }
}, },
{
$sort: { "_id.isoDate": 1 }
},
{ {
$addFields: { count: { $ifNull: ["$count", 0] }, } $addFields: { count: { $ifNull: ["$count", 0] }, }
}, },

View File

@@ -75,21 +75,21 @@ class DateService {
getGranularityData(slice: Slice, dateField: string) { getGranularityData(slice: Slice, dateField: string) {
const dateFromParts: Record<string, any> = {}; const dateFromParts: Record<string, any> = {};
let granularity = ''; let granularity;
switch (slice) { switch (slice) {
case 'hour': case 'hour':
dateFromParts.hour = { $hour: { date: dateField } } dateFromParts.hour = { $hour: { date: dateField } }
granularity = 'hour'; granularity = granularity || 'hour';
case 'day': case 'day':
dateFromParts.day = { $dayOfMonth: { date: dateField } } dateFromParts.day = { $dayOfMonth: { date: dateField } }
granularity = 'day'; granularity = granularity || 'day';
case 'month': case 'month':
dateFromParts.month = { $month: { date: dateField } } dateFromParts.month = { $month: { date: dateField } }
granularity = 'month'; granularity = granularity || 'month';
case 'year': case 'year':
dateFromParts.year = { $year: { date: dateField } } dateFromParts.year = { $year: { date: dateField } }
granularity = 'year'; granularity = granularity || 'year';
} }
return { dateFromParts, granularity } return { dateFromParts, granularity }