Skip to content

Commit 1b9647a

Browse files
committed
Fix advanced analytics startup
1 parent b30ab4c commit 1b9647a

3 files changed

Lines changed: 44 additions & 37 deletions

File tree

src/App.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Suspense, lazy, useEffect, useRef } from 'react';
22
import { HashRouter, Navigate, Route, Routes, useLocation } from 'react-router-dom';
33

4+
import { advancedAnalyticsRequestCacheKey } from '@/lib/analytics/cacheKey';
45
import { resolveAdvancedAnalyticsTimeRange } from '@/lib/analytics/timeRange';
56
import { runAdvancedAnalytics } from '@/lib/tauri';
67
import { Sidebar } from '@/components/Sidebar';
@@ -158,9 +159,6 @@ export default function App() {
158159
}
159160
startupAdvancedAnalyticsDataVersion.current = startupDataVersionKey;
160161

161-
const requestCacheKey = (request: AdvancedAnalyticsRunRequest) =>
162-
JSON.stringify({ request, dataVersion });
163-
164162
const fixedAllTimeRange: AdvancedAnalyticsTimeRangeConfig = { preset: 'all' };
165163
const requestsByRangeKey = new Map<string, AdvancedAnalyticsRunRequest>();
166164
const appendRequestForRange = (timeRange: AdvancedAnalyticsTimeRangeConfig | undefined) => {
@@ -192,7 +190,10 @@ export default function App() {
192190
try {
193191
const response = await runAdvancedAnalytics(request);
194192
if (!cancelled) {
195-
setCachedAdvancedAnalytics(requestCacheKey(request), response);
193+
setCachedAdvancedAnalytics(
194+
advancedAnalyticsRequestCacheKey(request, dataVersion),
195+
response
196+
);
196197
}
197198
} catch (error) {
198199
console.error('Automatic startup advanced analytics computation failed', error);

src/lib/analytics/cacheKey.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import type { AdvancedAnalyticsRunRequest } from '@/types';
2+
3+
export function advancedAnalyticsRequestCacheKey(
4+
request: AdvancedAnalyticsRunRequest,
5+
dataVersion: string | null
6+
) {
7+
const requestSignature = {
8+
startDate: request.startDate,
9+
endDate: request.endDate,
10+
metrics: request.metrics.map((metric) => ({
11+
id: metric.id,
12+
kind: metric.kind,
13+
base: metric.base,
14+
formula: metric.formula
15+
})),
16+
streaks: request.streaks.map((streak) => ({
17+
id: streak.id,
18+
metricId: streak.metricId,
19+
additionalMetricIds: streak.additionalMetricIds,
20+
period: streak.period,
21+
thresholdOperator: streak.thresholdOperator,
22+
thresholdValue: streak.thresholdValue
23+
})),
24+
charts: request.charts.map((chart) => ({
25+
id: chart.id,
26+
chartType: chart.chartType,
27+
metricIds: chart.metricIds,
28+
granularity: chart.granularity
29+
}))
30+
};
31+
32+
return JSON.stringify({ request: requestSignature, dataVersion });
33+
}

src/pages/AdvancedAnalyticsPage.tsx

Lines changed: 6 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { open } from '@tauri-apps/plugin-dialog';
33

44
import { AnalyticsLibrary } from '@/components/analytics/AnalyticsLibrary';
55
import { TransferSelectionPanel } from '@/components/analytics/TransferSelectionPanel';
6+
import { advancedAnalyticsRequestCacheKey } from '@/lib/analytics/cacheKey';
67
import {
78
buildAdvancedAnalyticsTransferFile,
89
mergeAdvancedAnalyticsTransferData,
@@ -79,34 +80,6 @@ function AnalyticsLoadingBar({
7980
);
8081
}
8182

82-
function requestCacheKey(request: AdvancedAnalyticsRunRequest, dataVersion: string | null) {
83-
const requestSignature = {
84-
startDate: request.startDate,
85-
endDate: request.endDate,
86-
metrics: request.metrics.map((metric) => ({
87-
id: metric.id,
88-
kind: metric.kind,
89-
base: metric.base,
90-
formula: metric.formula
91-
})),
92-
streaks: request.streaks.map((streak) => ({
93-
id: streak.id,
94-
metricId: streak.metricId,
95-
additionalMetricIds: streak.additionalMetricIds,
96-
period: streak.period,
97-
thresholdOperator: streak.thresholdOperator,
98-
thresholdValue: streak.thresholdValue
99-
})),
100-
charts: request.charts.map((chart) => ({
101-
id: chart.id,
102-
chartType: chart.chartType,
103-
metricIds: chart.metricIds,
104-
granularity: chart.granularity
105-
}))
106-
};
107-
return JSON.stringify({ request: requestSignature, dataVersion });
108-
}
109-
11083
function buildRequest(
11184
range: { startDate?: string; endDate?: string },
11285
metrics: AdvancedAnalyticsRunRequest['metrics'],
@@ -217,7 +190,7 @@ export function AdvancedAnalyticsPage() {
217190
const request = buildRequest(range, metrics, streaks, charts);
218191
return {
219192
request,
220-
cacheKey: requestCacheKey(request, dataVersion)
193+
cacheKey: advancedAnalyticsRequestCacheKey(request, dataVersion)
221194
};
222195
}, [charts, dataVersion, metrics, selectedItem, streaks]);
223196

@@ -238,7 +211,7 @@ export function AdvancedAnalyticsPage() {
238211
const request = buildRequest(range, metrics, streaks, charts);
239212
byRangeKey.set(key, {
240213
request,
241-
cacheKey: requestCacheKey(request, dataVersion)
214+
cacheKey: advancedAnalyticsRequestCacheKey(request, dataVersion)
242215
});
243216
}
244217

@@ -367,7 +340,7 @@ export function AdvancedAnalyticsPage() {
367340
for (const metric of viewTabMetrics) {
368341
const range = resolveAdvancedAnalyticsTimeRange(metric.timeRange);
369342
const request = buildRequest(range, metrics, streaks, charts);
370-
const cacheKey = requestCacheKey(request, dataVersion);
343+
const cacheKey = advancedAnalyticsRequestCacheKey(request, dataVersion);
371344
const response = getResponse(cacheKey);
372345
results[metric.id] = response?.metricResults[metric.id];
373346
}
@@ -379,7 +352,7 @@ export function AdvancedAnalyticsPage() {
379352
for (const streak of streaks) {
380353
const range = resolveAdvancedAnalyticsTimeRange(STREAK_FIXED_TIME_RANGE);
381354
const request = buildRequest(range, metrics, streaks, charts);
382-
const cacheKey = requestCacheKey(request, dataVersion);
355+
const cacheKey = advancedAnalyticsRequestCacheKey(request, dataVersion);
383356
const response = getResponse(cacheKey);
384357
results[streak.id] = response?.streakResults[streak.id];
385358
}
@@ -391,7 +364,7 @@ export function AdvancedAnalyticsPage() {
391364
for (const chart of charts) {
392365
const range = resolveAdvancedAnalyticsTimeRange(chart.timeRange);
393366
const request = buildRequest(range, metrics, streaks, charts);
394-
const cacheKey = requestCacheKey(request, dataVersion);
367+
const cacheKey = advancedAnalyticsRequestCacheKey(request, dataVersion);
395368
const response = getResponse(cacheKey);
396369
results[chart.id] = response?.chartResults[chart.id];
397370
}

0 commit comments

Comments
 (0)