fix(beszel): don't clear live data on transient connection errors
Keep showing existing charts during brief WebSocket reconnections instead of flashing the error UI. The error state only shows when no data was ever received (genuine initial connection failure).
This commit is contained in:
2 files changed
+40
-41
No files matched your search
@@ -51,47 +51,47 @@ type BeszelAreaChartProps = Omit<AreaChartProps, "dataKey" | "curveType" | "with
|
||||
yAxisDomain?: [number, string];
|
||||
};
|
||||
|
||||
const BeszelAreaChart = memo(
|
||||
({
|
||||
yAxisFormatter,
|
||||
yAxisDomain,
|
||||
yAxisProps: yAxisPropsOverride,
|
||||
type = "default",
|
||||
...props
|
||||
}: BeszelAreaChartProps) => {
|
||||
const mergedYAxis = useMemo(
|
||||
() => ({
|
||||
...yAxisBase,
|
||||
width: 32,
|
||||
tickMargin: 2,
|
||||
...(yAxisDomain ? { domain: yAxisDomain } : {}),
|
||||
tickFormatter: yAxisFormatter,
|
||||
...yAxisPropsOverride,
|
||||
}),
|
||||
[yAxisFormatter, yAxisDomain, yAxisPropsOverride],
|
||||
);
|
||||
const BeszelAreaChart = memo(({
|
||||
yAxisFormatter,
|
||||
yAxisDomain,
|
||||
yAxisProps: yAxisPropsOverride,
|
||||
type = "default",
|
||||
...props
|
||||
}: BeszelAreaChartProps) => {
|
||||
const mergedYAxis = useMemo(
|
||||
() => ({
|
||||
...yAxisBase,
|
||||
width: 48,
|
||||
tickMargin: 2,
|
||||
...(yAxisDomain ? { domain: yAxisDomain } : {}),
|
||||
tickFormatter: yAxisFormatter,
|
||||
...yAxisPropsOverride,
|
||||
}),
|
||||
[yAxisFormatter, yAxisDomain, yAxisPropsOverride],
|
||||
);
|
||||
|
||||
return (
|
||||
<AreaChart
|
||||
dataKey="time"
|
||||
curveType="monotone"
|
||||
withGradient={false}
|
||||
connectNulls
|
||||
withDots={false}
|
||||
type={type}
|
||||
strokeWidth={1}
|
||||
fillOpacity={0.2}
|
||||
areaChartProps={noAnimation}
|
||||
withXAxis
|
||||
withYAxis
|
||||
w="100%"
|
||||
style={chartStyle}
|
||||
yAxisProps={mergedYAxis}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
},
|
||||
);
|
||||
return (
|
||||
<AreaChart
|
||||
dataKey="time"
|
||||
curveType="monotone"
|
||||
withGradient={false}
|
||||
connectNulls
|
||||
withDots={false}
|
||||
type={type}
|
||||
strokeWidth={1}
|
||||
fillOpacity={0.2}
|
||||
areaChartProps={{
|
||||
// margin: { top: 0, right: 0, bottom: 0, left: 10 },
|
||||
}}
|
||||
withXAxis
|
||||
withYAxis
|
||||
w="100%"
|
||||
style={chartStyle}
|
||||
yAxisProps={mergedYAxis}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
});
|
||||
|
||||
export const useSystemChartData = (
|
||||
systemStats: BeszelSystemStatsRecord[] | undefined,
|
||||
|
||||
@@ -37,7 +37,6 @@ export const useLiveStats = (integrationIds: string[], systemId: string, enabled
|
||||
);
|
||||
|
||||
const onError = useCallback((err: unknown) => {
|
||||
setData(null);
|
||||
setError(err instanceof Error ? err : new Error(String(err)));
|
||||
}, []);
|
||||
|
||||
|
||||
Reference in new issue
Block a user