From 070e835fa405194e6117aa9a073a372ffaf0b714 Mon Sep 17 00:00:00 2001 From: Hugh Kaznowski Date: Sat, 5 Sep 2026 18:00:56 +0100 Subject: [PATCH] Resolve ui stuff --- webapp/src/App.tsx | 23 +- webapp/src/components/Alerts.tsx | 13 +- webapp/src/components/CollapsibleSection.tsx | 12 +- webapp/src/components/Dashboards.tsx | 47 ++-- webapp/src/components/HelpIcon.tsx | 2 +- webapp/src/components/LogPreview.tsx | 8 +- webapp/src/components/LogTimeline.tsx | 34 ++- webapp/src/components/Metrics.tsx | 20 +- webapp/src/components/Params.tsx | 20 +- webapp/src/index.css | 240 ++++++++++--------- webapp/src/lib/themes.ts | 192 +++++++-------- 11 files changed, 350 insertions(+), 261 deletions(-) diff --git a/webapp/src/App.tsx b/webapp/src/App.tsx index eb7c0de..f055571 100644 --- a/webapp/src/App.tsx +++ b/webapp/src/App.tsx @@ -1,7 +1,7 @@ import { useEffect, useRef, useState, type ReactNode } from 'react' import { NavMenu } from './components/NavMenu' import { FilterBar } from './components/FilterBar' -import { LogTimeline, computePresetRange, type TimeRange, type TimeRangePresetId } from './components/LogTimeline' +import { LogTimeline, computeBucketMs, computePresetRange, type TimeRange, type TimeRangePresetId } from './components/LogTimeline' import { LogPreview } from './components/LogPreview' import { Params } from './components/Params' import { Metrics } from './components/Metrics' @@ -122,7 +122,13 @@ function StandaloneLog() { } try { const [nextBuckets, nextLogs] = await Promise.all([ - fetchTimeline({ startMs: effectiveRange?.startMs, endMs: effectiveRange?.endMs, filter: filter || undefined }), + fetchTimeline({ + startMs: effectiveRange?.startMs, + endMs: effectiveRange?.endMs, + // Only meaningful for a fixed window — 'all' has no span to derive a resolution from, so it keeps the server's default bucketing. + bucketMs: effectiveRange ? computeBucketMs(effectiveRange.endMs - effectiveRange.startMs) : undefined, + filter: filter || undefined, + }), fetchLogs({ startMs: effectiveRange?.startMs, endMs: effectiveRange?.endMs, limit: 1000, filter: filter || undefined }), ]) if (!cancelled) { @@ -235,7 +241,13 @@ function FullApp() { try { const [nextStats, nextBuckets, nextLogs] = await Promise.all([ fetchStats(), - fetchTimeline({ startMs: effectiveRange?.startMs, endMs: effectiveRange?.endMs, filter: filter || undefined }), + fetchTimeline({ + startMs: effectiveRange?.startMs, + endMs: effectiveRange?.endMs, + // Only meaningful for a fixed window — 'all' has no span to derive a resolution from, so it keeps the server's default bucketing. + bucketMs: effectiveRange ? computeBucketMs(effectiveRange.endMs - effectiveRange.startMs) : undefined, + filter: filter || undefined, + }), fetchLogs({ startMs: effectiveRange?.startMs, endMs: effectiveRange?.endMs, limit: 1000, filter: filter || undefined }), ]) if (!cancelled) { @@ -265,7 +277,7 @@ function FullApp() {
-
+
} /> -