Skip to content

Commit b36173c

Browse files
committed
linting
1 parent 1281a5d commit b36173c

File tree

3 files changed

+106
-83
lines changed

3 files changed

+106
-83
lines changed

apps/api/src/query/builders/devices.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import type { SimpleQueryConfig } from "../types";
21
import { Analytics } from "../../types/tables";
2+
import type { SimpleQueryConfig } from "../types";
33

4-
export const DevicesBuilders: Record<string, SimpleQueryConfig<typeof Analytics.events>> = {
4+
export const DevicesBuilders: Record<string, SimpleQueryConfig> = {
55
browser_name: {
66
table: Analytics.events,
77
fields: [

apps/api/src/query/builders/performance.ts

Lines changed: 99 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -3,165 +3,185 @@ import type { SimpleQueryConfig } from "../types";
33

44
export const PerformanceBuilders: Record<string, SimpleQueryConfig> = {
55
performance_metrics: {
6-
table: Analytics.web_vitals,
6+
table: Analytics.events,
77
fields: [
8-
'AVG(fcp) as avg_fcp',
9-
'AVG(lcp) as avg_lcp',
10-
'AVG(cls) as avg_cls',
11-
'AVG(fid) as avg_fid',
12-
'AVG(inp) as avg_inp',
8+
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
9+
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
10+
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
11+
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
12+
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
13+
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
14+
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
1315
'COUNT(*) as total_events'
1416
],
15-
where: [],
16-
timeField: 'timestamp',
17-
allowedFilters: ['path', 'device_type', 'browser_name', 'country', 'region', 'os_name'],
17+
where: ['event_name = \'screen_view\''],
18+
timeField: 'time',
19+
allowedFilters: ['path', 'device_type', 'browser_name', 'country'],
1820
customizable: true
1921
},
2022

2123
slow_pages: {
22-
table: Analytics.web_vitals,
24+
table: Analytics.events,
2325
fields: [
24-
'path as name',
26+
'path(path) as name',
2527
'COUNT(DISTINCT anonymous_id) as visitors',
26-
'AVG(fcp) as avg_fcp',
27-
'AVG(lcp) as avg_lcp',
28-
'AVG(cls) as avg_cls',
29-
'AVG(fid) as avg_fid',
30-
'AVG(inp) as avg_inp',
28+
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
29+
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
30+
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
31+
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
32+
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
33+
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
34+
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
3135
'COUNT(*) as pageviews'
3236
],
33-
where: ["path != ''"],
34-
groupBy: ['path'],
35-
orderBy: 'avg_lcp DESC',
37+
where: ['event_name = \'screen_view\'', 'path != \'\'', 'load_time > 0'],
38+
groupBy: ['path(path)'],
39+
orderBy: 'avg_load_time DESC',
3640
limit: 100,
37-
timeField: 'timestamp',
41+
timeField: 'time',
3842
allowedFilters: ['path', 'device_type', 'browser_name'],
3943
customizable: true
4044
},
4145

4246
performance_by_device: {
43-
table: Analytics.web_vitals,
47+
table: Analytics.events,
4448
fields: [
4549
'device_type as name',
4650
'COUNT(DISTINCT anonymous_id) as visitors',
47-
'AVG(fcp) as avg_fcp',
48-
'AVG(lcp) as avg_lcp',
49-
'AVG(cls) as avg_cls',
50-
'AVG(fid) as avg_fid',
51-
'AVG(inp) as avg_inp',
51+
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
52+
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
53+
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
54+
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
55+
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
56+
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
57+
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
5258
'COUNT(*) as pageviews'
5359
],
54-
where: ["device_type != ''"],
60+
where: ['event_name = \'screen_view\'', 'device_type != \'\'', 'load_time > 0'],
5561
groupBy: ['device_type'],
56-
orderBy: 'avg_lcp DESC',
62+
orderBy: 'avg_load_time DESC',
5763
limit: 100,
58-
timeField: 'timestamp',
64+
timeField: 'time',
5965
allowedFilters: ['path', 'device_type', 'browser_name'],
6066
customizable: true
6167
},
6268

6369
performance_by_browser: {
64-
table: Analytics.web_vitals,
70+
table: Analytics.events,
6571
fields: [
66-
"CONCAT(browser_name, ' ', browser_version) as name",
72+
'CONCAT(browser_name, \' \', browser_version) as name',
6773
'COUNT(DISTINCT anonymous_id) as visitors',
68-
'AVG(fcp) as avg_fcp',
69-
'AVG(lcp) as avg_lcp',
70-
'AVG(cls) as avg_cls',
71-
'AVG(fid) as avg_fid',
72-
'AVG(inp) as avg_inp',
74+
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
75+
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
76+
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
77+
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
78+
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
79+
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
80+
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
7381
'COUNT(*) as pageviews'
7482
],
7583
where: [
76-
"browser_name != ''",
77-
"browser_version != ''",
78-
'browser_version IS NOT NULL'
84+
'event_name = \'screen_view\'',
85+
'browser_name != \'\'',
86+
'browser_version != \'\'',
87+
'browser_version IS NOT NULL',
88+
'load_time > 0'
7989
],
8090
groupBy: ['browser_name', 'browser_version'],
81-
orderBy: 'avg_lcp DESC',
91+
orderBy: 'avg_load_time DESC',
8292
limit: 100,
83-
timeField: 'timestamp',
93+
timeField: 'time',
8494
allowedFilters: ['path', 'device_type', 'browser_name'],
8595
customizable: true
8696
},
8797

8898
performance_by_country: {
89-
table: Analytics.web_vitals,
99+
table: Analytics.events,
90100
fields: [
91101
'country as name',
92102
'COUNT(DISTINCT anonymous_id) as visitors',
93-
'AVG(fcp) as avg_fcp',
94-
'AVG(lcp) as avg_lcp',
95-
'AVG(cls) as avg_cls',
96-
'AVG(fid) as avg_fid',
97-
'AVG(inp) as avg_inp',
103+
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
104+
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
105+
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
106+
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
107+
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
108+
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
109+
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
98110
'COUNT(*) as pageviews'
99111
],
100-
where: ["country != ''"],
112+
where: ['event_name = \'screen_view\'', 'country != \'\'', 'load_time > 0'],
101113
groupBy: ['country'],
102-
orderBy: 'avg_lcp DESC',
114+
orderBy: 'avg_load_time DESC',
103115
limit: 100,
104-
timeField: 'timestamp',
116+
timeField: 'time',
105117
allowedFilters: ['path', 'device_type', 'browser_name'],
106-
customizable: true
118+
customizable: true,
119+
plugins: { normalizeGeo: true, deduplicateGeo: true }
107120
},
108121

109122
performance_by_os: {
110-
table: Analytics.web_vitals,
123+
table: Analytics.events,
111124
fields: [
112125
'os_name as name',
113126
'COUNT(DISTINCT anonymous_id) as visitors',
114-
'AVG(fcp) as avg_fcp',
115-
'AVG(lcp) as avg_lcp',
116-
'AVG(cls) as avg_cls',
117-
'AVG(fid) as avg_fid',
118-
'AVG(inp) as avg_inp',
127+
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
128+
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
129+
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
130+
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
131+
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
132+
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
133+
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
119134
'COUNT(*) as pageviews'
120135
],
121-
where: ["os_name != ''"],
136+
where: ['event_name = \'screen_view\'', 'os_name != \'\'', 'load_time > 0'],
122137
groupBy: ['os_name'],
123-
orderBy: 'avg_lcp DESC',
138+
orderBy: 'avg_load_time DESC',
124139
limit: 100,
125-
timeField: 'timestamp',
140+
timeField: 'time',
126141
allowedFilters: ['path', 'device_type', 'browser_name'],
127142
customizable: true
128143
},
129144

130145
performance_by_region: {
131-
table: Analytics.web_vitals,
146+
table: Analytics.events,
132147
fields: [
133-
"CONCAT(region, ', ', country) as name",
148+
'CONCAT(region, \', \', country) as name',
134149
'COUNT(DISTINCT anonymous_id) as visitors',
135-
'AVG(fcp) as avg_fcp',
136-
'AVG(lcp) as avg_lcp',
137-
'AVG(cls) as avg_cls',
138-
'AVG(fid) as avg_fid',
139-
'AVG(inp) as avg_inp',
150+
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
151+
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
152+
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
153+
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
154+
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
155+
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
156+
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
140157
'COUNT(*) as pageviews'
141158
],
142-
where: ["region != ''"],
159+
where: ['event_name = \'screen_view\'', 'region != \'\'', 'load_time > 0'],
143160
groupBy: ['region', 'country'],
144-
orderBy: 'avg_lcp DESC',
161+
orderBy: 'avg_load_time DESC',
145162
limit: 100,
146-
timeField: 'timestamp',
163+
timeField: 'time',
147164
allowedFilters: ['path', 'device_type', 'browser_name'],
148165
customizable: true
149166
},
150167

151168
performance_time_series: {
152-
table: Analytics.web_vitals,
169+
table: Analytics.events,
153170
fields: [
154-
'toDate(timestamp) as date',
155-
'AVG(fcp) as avg_fcp',
156-
'AVG(lcp) as avg_lcp',
157-
'AVG(cls) as avg_cls',
158-
'AVG(fid) as avg_fid',
159-
'AVG(inp) as avg_inp',
171+
'toDate(time) as date',
172+
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
173+
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
174+
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
175+
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
176+
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
177+
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
178+
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
160179
'COUNT(*) as pageviews'
161180
],
162-
groupBy: ['toDate(timestamp)'],
181+
where: ['event_name = \'screen_view\''],
182+
groupBy: ['toDate(time)'],
163183
orderBy: 'date ASC',
164-
timeField: 'timestamp',
184+
timeField: 'time',
165185
allowedFilters: ['path', 'device_type', 'browser_name'],
166186
customizable: true
167187
}

apps/dashboard/app/(main)/websites/[id]/_components/tabs/performance-tab.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,9 +286,12 @@ export function WebsitePerformanceTab({
286286
};
287287
}
288288

289-
const data = performanceResults
289+
const data: Record<string, any> = {};
290+
performanceResults
290291
.filter(result => result.success && result.data)
291-
.reduce((acc, result) => Object.assign(acc, result.data), {} as Record<string, any>);
292+
.forEach(result => {
293+
Object.assign(data, result.data);
294+
});
292295

293296
const allPages = data.slow_pages || [];
294297
const filteredPages = filterPagesByPerformance(allPages, activeFilter);

0 commit comments

Comments
 (0)