studiocms
Version:
Astro Native CMS for AstroDB. Built from the ground up by the Astro community.
71 lines (70 loc) • 2.18 kB
JavaScript
import { checkDate } from "./checkDate.js";
const buildPageRouteDataObject = (webVitalData) => {
const perRouteData = [];
const last24HoursData = [];
const last7DaysData = [];
const last30DaysData = [];
if (webVitalData.length > 0) {
for (const item of webVitalData) {
const { pathname, route, timestamp } = item;
if (checkDate(timestamp).isInLast24Hours()) {
const index2 = last24HoursData.findIndex((entry) => entry.pagePathname === pathname);
if (index2 !== -1) {
last24HoursData[index2].analyticData.pageViews += 1;
} else {
last24HoursData.push({
pagePathname: pathname,
analyticData: {
pageRoute: route,
pageViews: 1
}
});
}
}
if (checkDate(timestamp).isInLast7Days()) {
const index2 = last7DaysData.findIndex((entry) => entry.pagePathname === pathname);
if (index2 !== -1) {
last7DaysData[index2].analyticData.pageViews += 1;
} else {
last7DaysData.push({
pagePathname: pathname,
analyticData: {
pageRoute: route,
pageViews: 1
}
});
}
}
if (checkDate(timestamp).isInLast30Days()) {
const index2 = last30DaysData.findIndex((entry) => entry.pagePathname === pathname);
if (index2 !== -1) {
last30DaysData[index2].analyticData.pageViews += 1;
} else {
last30DaysData.push({
pagePathname: pathname,
analyticData: {
pageRoute: route,
pageViews: 1
}
});
}
}
const index = perRouteData.findIndex((entry) => entry.pagePathname === pathname);
if (index !== -1) {
perRouteData[index].analyticData.pageViews += 1;
} else {
perRouteData.push({
pagePathname: pathname,
analyticData: {
pageRoute: route,
pageViews: 1
}
});
}
}
}
return { last24HoursData, last7DaysData, last30DaysData, perRouteData };
};
export {
buildPageRouteDataObject
};