Allow filtering on session fields.

This commit is contained in:
Mike Cao 2022-04-10 03:51:43 -07:00
parent edd1645bab
commit fb2dc9f5ab
19 changed files with 275 additions and 211 deletions

View file

@ -33,22 +33,31 @@ export default async (req, res) => {
return unauthorized(res);
}
const { id, type, start_at, end_at, url, referrer } = req.query;
const { id, type, start_at, end_at, url, referrer, os, browser, device, country } = req.query;
const websiteId = +id;
const startDate = new Date(+start_at);
const endDate = new Date(+end_at);
if (sessionColumns.includes(type)) {
let data = await getSessionMetrics(websiteId, startDate, endDate, type, { url, referrer });
let data = await getSessionMetrics(websiteId, startDate, endDate, type, {
os,
browser,
device,
country,
});
if (type === 'language') {
let combined = {};
for (let { x, y } of data) {
x = String(x).toLowerCase().split('-')[0];
if (!combined[x]) combined[x] = { x, y };
else combined[x].y += y;
if (!combined[x]) {
combined[x] = { x, y };
} else {
combined[x].y += y;
}
}
data = Object.values(combined);
@ -77,8 +86,12 @@ export default async (req, res) => {
getTable(type),
{
domain,
url: type !== 'url' && url,
referrer,
url: type !== 'url' ? url : undefined,
referrer: type !== 'referrer' ? referrer : undefined,
os: type !== 'os' ? os : undefined,
browser: type !== 'browser' ? browser : undefined,
device: type !== 'device' ? device : undefined,
country: type !== 'country' ? country : undefined,
},
);