diff --git a/components/pages/event-data/EventDataTable.js b/components/pages/event-data/EventDataTable.js index 8260ac35..88de0109 100644 --- a/components/pages/event-data/EventDataTable.js +++ b/components/pages/event-data/EventDataTable.js @@ -13,15 +13,18 @@ export function EventDataTable({ data = [] }) { return ( - + {row => ( - - {row.event} + + {row.eventName} )} - - {row => row.field} + + {row => row.fieldName} + + + {row => row.dataType} {({ total }) => total.toLocaleString()} diff --git a/lib/constants.ts b/lib/constants.ts index 9362b456..dcb64143 100644 --- a/lib/constants.ts +++ b/lib/constants.ts @@ -48,12 +48,12 @@ export const FILTER_COLUMNS = { referrer: 'referrer_domain', title: 'page_title', query: 'url_query', - event: 'event_name', region: 'subdivision1', - type: 'event_type', + eventType: 'event_type', + eventName: 'event_name', }; -export const IGNORED_FILTERS = ['startDate', 'endDate', 'timezone', 'unit', 'eventType']; +export const IGNORED_FILTERS = ['startDate', 'endDate', 'timezone', 'unit']; export const COLLECTION_TYPE = { event: 'event', diff --git a/lib/types.ts b/lib/types.ts index 3ce852ae..7cc9a619 100644 --- a/lib/types.ts +++ b/lib/types.ts @@ -153,4 +153,5 @@ export interface QueryFilters { export interface QueryOptions { joinSession?: boolean; + ignoreFilters?: string[]; } diff --git a/pages/api/event-data/events.ts b/pages/api/event-data/events.ts index 1d74c3d2..e8693108 100644 --- a/pages/api/event-data/events.ts +++ b/pages/api/event-data/events.ts @@ -21,15 +21,19 @@ export default async ( await useAuth(req, res); if (req.method === 'GET') { - const { websiteId, startAt, endAt, field, event } = req.query; + const { websiteId, startAt, endAt, eventName } = req.query; if (!(await canViewWebsite(req.auth, websiteId))) { return unauthorized(res); } - const data = await getEventDataEvents(websiteId, new Date(+startAt), new Date(+endAt), { - field, - event, + const startDate = new Date(+startAt); + const endDate = new Date(+endAt); + + const data = await getEventDataEvents(websiteId, { + startDate, + endDate, + eventName, }); return ok(res, data); diff --git a/pages/api/event-data/stats.ts b/pages/api/event-data/stats.ts index 8fdf9438..969568e2 100644 --- a/pages/api/event-data/stats.ts +++ b/pages/api/event-data/stats.ts @@ -28,7 +28,10 @@ export default async ( return unauthorized(res); } - const results = await getEventDataFields(websiteId, new Date(+startAt), new Date(+endAt)); + const startDate = new Date(+startAt); + const endDate = new Date(+endAt); + + const results = await getEventDataFields(websiteId, { startDate, endDate }); const data = results.reduce( (obj, row) => { diff --git a/queries/analytics/eventData/getEventDataEvents.ts b/queries/analytics/eventData/getEventDataEvents.ts index fae46db1..d0d4ff46 100644 --- a/queries/analytics/eventData/getEventDataEvents.ts +++ b/queries/analytics/eventData/getEventDataEvents.ts @@ -4,7 +4,7 @@ import { CLICKHOUSE, PRISMA, runQuery } from 'lib/db'; import { QueryFilters, WebsiteEventDataFields } from 'lib/types'; export async function getEventDataEvents( - ...args: [websiteId: string, filters: QueryFilters & { field?: string; event?: string }] + ...args: [websiteId: string, filters: QueryFilters] ): Promise { return runQuery({ [PRISMA]: () => relationalQuery(...args), @@ -12,20 +12,18 @@ export async function getEventDataEvents( }); } -async function relationalQuery( - websiteId: string, - filters: QueryFilters & { field?: string; event?: string }, -) { +async function relationalQuery(websiteId: string, filters: QueryFilters) { const { rawQuery, parseFilters } = prisma; + const { eventName } = filters; const { params } = await parseFilters(websiteId, filters); - if (event) { + if (eventName) { return rawQuery( ` select - website_event.event_name as event, - event_data.event_key as field, - event_data.data_type as type, + website_event.event_name as eventName, + event_data.event_key as fieldName, + event_data.data_type as dataType, event_data.string_value as value, count(*) as total from event_data @@ -33,7 +31,7 @@ async function relationalQuery( on website_event.event_id = event_data.website_event_id where event_data.website_id = {{websiteId::uuid}} and event_data.created_at between {{startDate}} and {{endDate}} - and websit_event.event_name = {{event}} + and websit_event.event_name = {{eventName}} group by website_event.event_name, event_data.event_key, event_data.data_type, event_data.string_value order by 1 asc, 2 asc, 3 asc, 4 desc `, @@ -44,9 +42,9 @@ async function relationalQuery( return rawQuery( ` select - website_event.event_name as event, - event_data.event_key as field, - event_data.data_type as type, + website_event.event_name as eventName, + event_data.event_key as fieldName, + event_data.data_type as dataType, count(*) as total from event_data inner join website_event @@ -61,21 +59,18 @@ async function relationalQuery( ); } -async function clickhouseQuery( - websiteId: string, - filters: QueryFilters & { field?: string; event?: string }, -) { +async function clickhouseQuery(websiteId: string, filters: QueryFilters) { const { rawQuery, parseFilters } = clickhouse; - const { event } = filters; + const { eventName } = filters; const { params } = await parseFilters(websiteId, filters); - if (event) { + if (eventName) { return rawQuery( ` select - event_name as event, - event_key as field, - data_type as type, + event_name as eventName, + event_key as fieldName, + data_type as dataType, string_value as value, count(*) as total from event_data @@ -93,9 +88,9 @@ async function clickhouseQuery( return rawQuery( ` select - event_name as event, - event_key as field, - data_type as type, + event_name as eventName, + event_key as fieldName, + data_type as dataType, count(*) as total from event_data where website_id = {websiteId:UUID}