1 Commits

Author SHA1 Message Date
Sebastian Seedorf
b3aec5e6b2 fix: skip sort in real mode, API already returns ORDER BY real_time ASC 2026-06-05 13:10:04 +02:00
2 changed files with 7 additions and 9 deletions

View File

@@ -24,15 +24,13 @@ export default function UpsChart({ config, upsRows, timeMode, onEdit, onDelete }
(el, w, h, lRef) => { (el, w, h, lRef) => {
if (upsRows.length < 2) return null; if (upsRows.length < 2) return null;
const sorted = [...upsRows].sort((a, b) => const data = timeMode === 'tick'
timeMode === 'tick' ? [...upsRows].sort((a, b) => a.game_tick - b.game_tick)
? a.game_tick - b.game_tick : upsRows;
: new Date(a.real_time).getTime() - new Date(b.real_time).getTime(), const xs = data.map((r) =>
);
const xs = sorted.map((r) =>
timeMode === 'tick' ? r.game_tick : new Date(r.real_time).getTime() / 1000, timeMode === 'tick' ? r.game_tick : new Date(r.real_time).getTime() / 1000,
); );
const ys = sorted.map((r) => r.ups); const ys = data.map((r) => r.ups);
const xAxis: uPlot.Axis = { const xAxis: uPlot.Axis = {
...AXIS_BASE, ...AXIS_BASE,

View File

@@ -57,11 +57,11 @@ export function usePlot(
// Defer mouseleave — prevents React hydration events firing before lastIdxRef set // Defer mouseleave — prevents React hydration events firing before lastIdxRef set
requestAnimationFrame(() => { requestAnimationFrame(() => {
plot.over.onmouseleave = () => { plot.over.addEventListener('mouseleave', () => {
const p = plotRef.current; const p = plotRef.current;
if (!p) return; if (!p) return;
p.setCursor({ left: idxToPixel(p, lastIdxRef.current), top: -10 }); p.setCursor({ left: idxToPixel(p, lastIdxRef.current), top: -10 });
}; });
}); });
} }
// deps is intentionally dynamic — passed by parent to allow external rebuild triggers // deps is intentionally dynamic — passed by parent to allow external rebuild triggers