(1);
const selectLabels: { label: string, value: Slice }[] = [
{ label: 'Hour', value: 'hour' },
@@ -21,7 +21,10 @@ const selectLabelsAvailable = computed<{ label: string, value: Slice, disabled:
});
})
-const eventsData = await useFetch(`/api/data/count`, { headers: useComputedHeaders({ custom: { 'x-schema': 'events' } }), lazy: true });
+const eventsData = await useFetch(`/api/data/count`, {
+ headers: useComputedHeaders({ custom: { 'x-schema': 'events' } }),
+ lazy: true
+});
@@ -54,9 +57,9 @@ const eventsData = await useFetch(`/api/data/count`, { headers: useComputedHeade
sub="Events stacked bar chart.">
-
-
+
+
diff --git a/dashboard/server/api/domains/list.ts b/dashboard/server/api/domains/list.ts
index 99bf6d2..87c8364 100644
--- a/dashboard/server/api/domains/list.ts
+++ b/dashboard/server/api/domains/list.ts
@@ -10,9 +10,9 @@ export default defineEventHandler(async event => {
const result = await VisitModel.aggregate([
{ $match: { project_id, } },
- { $group: { _id: "$website" } },
+ { $group: { _id: "$website", visits: { $sum: 1 } } },
]);
- return result as { _id: string }[];
+ return result as { _id: string, visits: number }[];
});
\ No newline at end of file
diff --git a/dashboard/server/api/timeline/visits.ts b/dashboard/server/api/timeline/visits.ts
index ce65d71..f8ddcd8 100644
--- a/dashboard/server/api/timeline/visits.ts
+++ b/dashboard/server/api/timeline/visits.ts
@@ -16,8 +16,7 @@ export default defineEventHandler(async event => {
const timelineData = await executeAdvancedTimelineAggregation({
projectId: project_id,
model: VisitModel,
- from, to, slice, timeOffset, domain,
- debug: true
+ from, to, slice, timeOffset, domain
});
return timelineData;
});
diff --git a/dashboard/server/utils/getRequestData.ts b/dashboard/server/utils/getRequestData.ts
index cd9f821..5a37463 100644
--- a/dashboard/server/utils/getRequestData.ts
+++ b/dashboard/server/utils/getRequestData.ts
@@ -56,10 +56,13 @@ export async function getRequestData(event: H3Event, requir
const pid = getHeader(event, 'x-pid');
if (!pid) return setResponseStatus(event, 400, 'x-pid is required');
- const domain = getHeader(event, 'x-domain');
+ let domain: any = getHeader(event, 'x-domain');
if (requireDomain) {
if (domain == null || domain == undefined || domain.length == 0) return setResponseStatus(event, 400, 'x-domain is required');
}
+ if (domain === 'ALL DOMAINS') {
+ domain = { $ne: '_NODOMAIN_' }
+ }
const slice = getHeader(event, 'x-slice') as Slice;
if (!slice && requireSlice) return setResponseStatus(event, 400, 'x-slice is required');