Allow filtering of events with url.
parent
1cff704379
commit
f69dbaeaf6
|
@ -64,7 +64,7 @@ export function getFilterQuery(table, filters = {}, params = []) {
|
||||||
|
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 'url':
|
case 'url':
|
||||||
if (table === 'session' || table === 'pageview') {
|
if (table === 'pageview' || table === 'event') {
|
||||||
arr.push(`and ${table}.${key}=$${params.length + 1}`);
|
arr.push(`and ${table}.${key}=$${params.length + 1}`);
|
||||||
params.push(decodeURIComponent(value));
|
params.push(decodeURIComponent(value));
|
||||||
}
|
}
|
||||||
|
@ -110,11 +110,11 @@ export function getFilterQuery(table, filters = {}, params = []) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function parseFilters(table, filters = {}, params = []) {
|
export function parseFilters(table, filters = {}, params = []) {
|
||||||
const { domain, url, referrer, os, browser, device, country, event_type } = filters;
|
const { domain, url, event_url, referrer, os, browser, device, country, event_type } = filters;
|
||||||
|
|
||||||
const pageviewFilters = { domain, url, referrer };
|
const pageviewFilters = { domain, url, referrer };
|
||||||
const sessionFilters = { os, browser, device, country };
|
const sessionFilters = { os, browser, device, country };
|
||||||
const eventFilters = { event_type };
|
const eventFilters = { url: event_url, event_type };
|
||||||
|
|
||||||
return {
|
return {
|
||||||
pageviewFilters,
|
pageviewFilters,
|
||||||
|
@ -502,8 +502,11 @@ export function getSessionMetrics(website_id, start_at, end_at, field, filters =
|
||||||
|
|
||||||
export function getPageviewMetrics(website_id, start_at, end_at, field, table, filters = {}) {
|
export function getPageviewMetrics(website_id, start_at, end_at, field, table, filters = {}) {
|
||||||
const params = [website_id, start_at, end_at];
|
const params = [website_id, start_at, end_at];
|
||||||
console.log({ table, filters });
|
const { pageviewQuery, sessionQuery, eventQuery, joinSession } = parseFilters(
|
||||||
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(table, filters, params);
|
table,
|
||||||
|
filters,
|
||||||
|
params,
|
||||||
|
);
|
||||||
|
|
||||||
return rawQuery(
|
return rawQuery(
|
||||||
`
|
`
|
||||||
|
@ -514,6 +517,7 @@ export function getPageviewMetrics(website_id, start_at, end_at, field, table, f
|
||||||
and ${table}.created_at between $2 and $3
|
and ${table}.created_at between $2 and $3
|
||||||
${pageviewQuery}
|
${pageviewQuery}
|
||||||
${joinSession && sessionQuery}
|
${joinSession && sessionQuery}
|
||||||
|
${eventQuery}
|
||||||
group by 1
|
group by 1
|
||||||
order by 2 desc
|
order by 2 desc
|
||||||
`,
|
`,
|
||||||
|
|
|
@ -83,12 +83,13 @@ export default async (req, res) => {
|
||||||
|
|
||||||
const data = await getPageviewMetrics(websiteId, startDate, endDate, column, table, {
|
const data = await getPageviewMetrics(websiteId, startDate, endDate, column, table, {
|
||||||
domain,
|
domain,
|
||||||
url: type !== 'url' ? url : undefined,
|
url: type !== 'url' && table !== 'event' ? url : undefined,
|
||||||
referrer: type !== 'referrer' ? referrer : undefined,
|
referrer: type !== 'referrer' ? referrer : undefined,
|
||||||
os: type !== 'os' ? os : undefined,
|
os: type !== 'os' ? os : undefined,
|
||||||
browser: type !== 'browser' ? browser : undefined,
|
browser: type !== 'browser' ? browser : undefined,
|
||||||
device: type !== 'device' ? device : undefined,
|
device: type !== 'device' ? device : undefined,
|
||||||
country: type !== 'country' ? country : undefined,
|
country: type !== 'country' ? country : undefined,
|
||||||
|
event_url: type !== 'url' && table === 'event' ? url : undefined,
|
||||||
});
|
});
|
||||||
|
|
||||||
return ok(res, data);
|
return ok(res, data);
|
||||||
|
|
Loading…
Reference in New Issue