- {properties.length > 0 && (
-
-
Params
-
- {properties.map((item) => (
- {
- setFilter(
- `properties.${item.name}`,
- item.value ? String(item.value) : '',
- 'is',
- );
- }}
- />
- ))}
-
-
- )}
-
-
Common
-
- {common.map((item) => (
- item.onClick?.()}
- />
- ))}
-
-
+
+
item.name.join('.')}
+ columns={[
+ {
+ name: 'Name',
+ className: 'text-left',
+ width: 'auto',
+ render(item) {
+ return (
+
+ {item.name.map((name, index) => (
+
+ {name}
+
+ ))}
+
+ );
+ },
+ },
+ {
+ name: 'Value',
+ className: 'text-right font-mono font-medium',
+ width: 'auto',
+ render(item) {
+ const render = () => {
+ if (
+ item.name[0] === 'duration' &&
+ typeof item.value === 'number'
+ ) {
+ return (
+
+
+ ({item.value}ms)
+ {' '}
+ {number.formatWithUnit(item.value / 1000, 'min')}
+
+ );
+ }
-
-
-
Similar events
-
-
-
-
+ if (
+ isNil(item.value) ||
+ item.value === '' ||
+ item.value === '\x00\x00'
+ ) {
+ return -
;
+ }
+
+ if (typeof item.value === 'string') {
+ return {item.value}
;
+ }
+
+ if ((item.value as unknown) instanceof Date) {
+ return (
+
+ {formatDateTime(item.value as unknown as Date)}
+
+ );
+ }
+
+ return (
+
+ {JSON.stringify(item.value)}
+
+ );
+ };
+
+ if (
+ item.name[0] &&
+ item.value &&
+ filterable[item.name[0] as keyof typeof filterable]
+ ) {
+ return (
+
+ );
+ }
+
+ return render();
+ },
+ },
+ ]}
+ />
+
+
+
+
+
Similar events
+
+
+
+
);
}
diff --git a/packages/trpc/src/routers/event.ts b/packages/trpc/src/routers/event.ts
index c6b3b1ce..7c52fdaf 100644
--- a/packages/trpc/src/routers/event.ts
+++ b/packages/trpc/src/routers/event.ts
@@ -96,6 +96,12 @@ export const eventRouter = createTRPCRouter({
...input,
take: 50,
cursor: input.cursor ? new Date(input.cursor) : undefined,
+ select: {
+ properties: true,
+ sessionId: true,
+ deviceId: true,
+ profileId: true,
+ },
});
// Hacky join to get profile for entire session