feat(charting): unify configurable time windows

This commit is contained in:
Developer
2026-07-15 18:55:57 +00:00
parent 3871f24724
commit e0f66a51f7
25 changed files with 1607 additions and 1146 deletions
@@ -1,7 +1,10 @@
import { Activity, Clock, Play, RefreshCw, TriangleAlert } from "lucide-react";
import { useState } from "react";
import { LineSeriesChart } from "../../components/LineSeriesChart";
import { chartRangesThrough } from "../../components/chartRanges";
import {
chartRangesThrough,
type ChartRangeValue,
} from "../../components/chartRanges";
import {
useRunSchedulerAction,
useSchedulerRuns,
@@ -29,9 +32,9 @@ function statusVariant(
}
export function QbittorrentTab({ instance }: { instance: ServiceInstance }) {
const [windowSeconds, setWindowSeconds] = useState(1800);
const [selectedRange, setSelectedRange] = useState<ChartRangeValue>(1800);
const status = useSchedulerStatus(instance.id);
const samples = useSchedulerSamples(instance.id, windowSeconds);
const samples = useSchedulerSamples(instance.id, selectedRange);
const runs = useSchedulerRuns(instance.id);
const runNow = useRunSchedulerAction();
const stale = Boolean(status.data?.enabled && status.data.is_stale);
@@ -111,9 +114,9 @@ export function QbittorrentTab({ instance }: { instance: ServiceInstance }) {
series={chartSeries}
unit="bytes"
height={300}
rangeOptions={chartRangesThrough(86400)}
rangeSeconds={windowSeconds}
onRangeChange={setWindowSeconds}
rangeOptions={chartRangesThrough(86_400)}
rangeSeconds={selectedRange}
onRangeChange={setSelectedRange}
/>
)}
</CardContent>