From 980606f094d25cbf44763c4747d0828cdd566c77 Mon Sep 17 00:00:00 2001 From: Chris Rimmer Date: Fri, 25 Jul 2025 21:32:38 +0100 Subject: [PATCH 1/4] Update percentage calculation to use total count per property key --- .../src/app/[site]/events/components/EventProperties.tsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/client/src/app/[site]/events/components/EventProperties.tsx b/client/src/app/[site]/events/components/EventProperties.tsx index 563e65351..9af021b60 100644 --- a/client/src/app/[site]/events/components/EventProperties.tsx +++ b/client/src/app/[site]/events/components/EventProperties.tsx @@ -63,9 +63,6 @@ export function EventProperties({ return sumB - sumA; }); - // Find the highest count to calculate percentages for values - const maxCount = Math.max(...properties.map((prop) => prop.count)); - return (
{values.map((property) => { - const percentage = (property.count / maxCount) * 100; + const totalCount = properties.filter(event => event.propertyKey === property.propertyKey) + .reduce((sum, event) => sum + event.count, 0); + const percentage = (property.count / totalCount) * 100; return (
Date: Fri, 25 Jul 2025 21:50:35 +0100 Subject: [PATCH 2/4] Add tooltips for event property values so you can see the whole value if it got truncated --- .../events/components/EventProperties.tsx | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/client/src/app/[site]/events/components/EventProperties.tsx b/client/src/app/[site]/events/components/EventProperties.tsx index 9af021b60..49447088d 100644 --- a/client/src/app/[site]/events/components/EventProperties.tsx +++ b/client/src/app/[site]/events/components/EventProperties.tsx @@ -4,7 +4,9 @@ import NumberFlow from "@number-flow/react"; import { Info } from "lucide-react"; import { memo } from "react"; import { EventProperty } from "../../../../api/analytics/events/useGetEventProperties"; -import { cn } from "../../../../lib/utils"; +import { cn, getCountryName } from "../../../../lib/utils"; +import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; +import { CountryFlag } from "@/app/[site]/components/shared/icons/CountryFlag"; interface EventPropertiesProps { properties: EventProperty[]; @@ -108,7 +110,18 @@ export function EventProperties({ >
- {property.propertyValue} + + +
+ {property.propertyValue} +
+
+ +

+ {property.propertyValue} +

+
+
From 8884ef021d6e2059246657d8118ee3f3843da883 Mon Sep 17 00:00:00 2001 From: Chris Rimmer Date: Fri, 25 Jul 2025 22:24:35 +0100 Subject: [PATCH 3/4] Fix showing object event values as `[object Object]` and add tooltip so you can see the whole value if it got truncated --- .../app/[site]/events/components/EventLogItem.tsx | 15 +++++++++++++-- .../[site]/events/components/EventProperties.tsx | 3 +-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/client/src/app/[site]/events/components/EventLogItem.tsx b/client/src/app/[site]/events/components/EventLogItem.tsx index 53df7f8b2..cf4d35e58 100644 --- a/client/src/app/[site]/events/components/EventLogItem.tsx +++ b/client/src/app/[site]/events/components/EventLogItem.tsx @@ -181,10 +181,21 @@ export function EventLogItem({ event }: EventLogItemProps) { {key}:{" "} - {String(value)} + + + + {(typeof value === 'object') ? JSON.stringify(value) : String(value)} + + + + + {(typeof value === 'object') ? JSON.stringify(value) : String(value)} + + + ))}
diff --git a/client/src/app/[site]/events/components/EventProperties.tsx b/client/src/app/[site]/events/components/EventProperties.tsx index 49447088d..7010952de 100644 --- a/client/src/app/[site]/events/components/EventProperties.tsx +++ b/client/src/app/[site]/events/components/EventProperties.tsx @@ -4,9 +4,8 @@ import NumberFlow from "@number-flow/react"; import { Info } from "lucide-react"; import { memo } from "react"; import { EventProperty } from "../../../../api/analytics/events/useGetEventProperties"; -import { cn, getCountryName } from "../../../../lib/utils"; +import { cn } from "../../../../lib/utils"; import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; -import { CountryFlag } from "@/app/[site]/components/shared/icons/CountryFlag"; interface EventPropertiesProps { properties: EventProperty[]; From 7089efeab6088949c2d623e5b947f03b1955da1b Mon Sep 17 00:00:00 2001 From: Chris Rimmer Date: Tue, 18 Nov 2025 22:58:17 +0000 Subject: [PATCH 4/4] Re-queue failed pageview batch for retry on next interval --- server/src/services/tracker/pageviewQueue.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/src/services/tracker/pageviewQueue.ts b/server/src/services/tracker/pageviewQueue.ts index ac20e1f76..3fb34307e 100644 --- a/server/src/services/tracker/pageviewQueue.ts +++ b/server/src/services/tracker/pageviewQueue.ts @@ -124,7 +124,9 @@ class PageviewQueue { format: "JSONEachRow", }); } catch (error) { - this.logger.error(error, "Error processing pageview queue"); + this.logger.error(error, `Error processing pageview queue, re-adding ${batch.length} items to the start of the queue`); + // Re-queue the failed batch so it can be retried on the next interval + this.queue.unshift(...batch); } finally { this.processing = false; }