diff --git a/package.json b/package.json index f69734da..b3c3a60f 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "@react-spring/web": "^9.7.3", "@tanstack/react-query": "^5.28.6", "@umami/prisma-client": "^0.14.0", - "@umami/redis-client": "^0.25.0", + "@umami/redis-client": "^0.26.0", "bcryptjs": "^2.4.3", "chalk": "^4.1.1", "chart.js": "^4.4.2", diff --git a/src/app/api/reports/funnel/route.ts b/src/app/api/reports/funnel/route.ts index 471ae709..6033c633 100644 --- a/src/app/api/reports/funnel/route.ts +++ b/src/app/api/reports/funnel/route.ts @@ -8,7 +8,7 @@ import { reportParms } from '@/lib/schema'; export async function POST(request: Request) { const schema = z.object({ ...reportParms, - window: z.number().positive(), + window: z.coerce.number().positive(), steps: z .array( z.object({ diff --git a/src/components/hooks/queries/useReport.ts b/src/components/hooks/queries/useReport.ts index f7d2a1a0..45aea19c 100644 --- a/src/components/hooks/queries/useReport.ts +++ b/src/components/hooks/queries/useReport.ts @@ -3,6 +3,7 @@ import { useCallback, useEffect, useState } from 'react'; import { useApi } from '../useApi'; import { useTimezone } from '../useTimezone'; import { useMessages } from '../useMessages'; +import { parseDateRange } from '@/lib/date'; export function useReport( reportId: string, @@ -24,14 +25,12 @@ export function useReport( const data: any = await get(`/reports/${id}`); const { dateRange } = data?.parameters || {}; - const { startDate, endDate } = dateRange || {}; - if (startDate && endDate) { - dateRange.startDate = new Date(startDate); - dateRange.endDate = new Date(endDate); - } - - data.parameters = { ...defaultParameters?.parameters, ...data.parameters }; + data.parameters = { + ...defaultParameters?.parameters, + ...data.parameters, + dateRange: parseDateRange(dateRange.value), + }; setReport(data); }; diff --git a/src/queries/sql/pageviews/getPageviewMetrics.ts b/src/queries/sql/pageviews/getPageviewMetrics.ts index 0b472e95..f7604298 100644 --- a/src/queries/sql/pageviews/getPageviewMetrics.ts +++ b/src/queries/sql/pageviews/getPageviewMetrics.ts @@ -32,7 +32,6 @@ async function relationalQuery( websiteId, { ...filters, - eventType: column === 'event_name' ? EVENT_TYPE.customEvent : EVENT_TYPE.pageView, }, { joinSession: SESSION_COLUMNS.includes(type) }, ); @@ -54,7 +53,6 @@ async function relationalQuery( from website_event where website_event.website_id = {{websiteId::uuid}} and website_event.created_at between {{startDate}} and {{endDate}} - and event_type = {{eventType}} group by visit_id ) x on x.visit_id = website_event.visit_id @@ -96,14 +94,14 @@ async function clickhouseQuery( eventType: column === 'event_name' ? EVENT_TYPE.customEvent : EVENT_TYPE.pageView, }); - let excludeDomain = ''; let sql = ''; + let excludeDomain = ''; if (EVENT_COLUMNS.some(item => Object.keys(filters).includes(item))) { let entryExitQuery = ''; if (column === 'referrer_domain') { - excludeDomain = `and referrer_domain != hostname and referrer_domain != ''`; + excludeDomain = `and referrer_domain != hostname and hostname != ''`; } if (type === 'entry' || type === 'exit') { @@ -115,7 +113,6 @@ async function clickhouseQuery( from website_event where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} - and event_type = {eventType:UInt32} group by visit_id) x ON x.visit_id = website_event.visit_id and x.target_created_at = website_event.created_at`; @@ -127,7 +124,6 @@ async function clickhouseQuery( ${entryExitQuery} where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} - and event_type = {eventType:UInt32} ${excludeDomain} ${filterQuery} group by x @@ -139,7 +135,7 @@ async function clickhouseQuery( let groupByQuery = ''; if (column === 'referrer_domain') { - excludeDomain = `and t != hostname`; + excludeDomain = `and t != hostname and hostname != ''`; } let columnQuery = `arrayJoin(${column})`; @@ -164,7 +160,6 @@ async function clickhouseQuery( from website_event_stats_hourly website_event where website_id = {websiteId:UUID} and created_at between {startDate:DateTime64} and {endDate:DateTime64} - and event_type = {eventType:UInt32} ${excludeDomain} ${filterQuery} ${groupByQuery}) as g diff --git a/yarn.lock b/yarn.lock index 9fde2bef..24c194e6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3417,10 +3417,10 @@ chalk "^4.1.2" debug "^4.3.4" -"@umami/redis-client@^0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@umami/redis-client/-/redis-client-0.25.0.tgz#8bf01f22ceb3b90e15e59ab8daf44f838b83a6a7" - integrity sha512-j2GUehtrUfNPuikmcVXucgnL04gQOtbLiG20NqdlUXlDA/ebkV/waDfcYtMLuvXOFwiEeTatqPFEfXYuLDwJWw== +"@umami/redis-client@^0.26.0": + version "0.26.0" + resolved "https://registry.yarnpkg.com/@umami/redis-client/-/redis-client-0.26.0.tgz#0476e903a30322a43247dc292003224686971c12" + integrity sha512-j2vxb1gYF5zfk7BkrHgau2MwKsB5ijbQh2w1WoIvbP41cqTMsFm/zUrjhZ0cP1ZxR/riQR1AWxKmqNggYRZ5eA== dependencies: debug "^4.3.4" redis "^4.5.1"