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
3 changed files with 9 additions and 10 deletions

View File

@@ -50,7 +50,7 @@ export default function SignalsChart({
const { containerRef, legendRef } = usePlot( const { containerRef, legendRef } = usePlot(
(el, w, h, lRef) => { (el, w, h, lRef) => {
const data = buildSeriesData(rows, config.signal_type, timeMode, config.series_limit); const data = buildSeriesData(rows, config.signal_type, timeMode);
if (!data) return null; if (!data) return null;
const { keys, allXs, data: seriesData } = data; const { keys, allXs, data: seriesData } = data;

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

@@ -1,5 +1,7 @@
import type { SignalRow, ChartConfig, TimeMode } from '@/lib/types'; import type { SignalRow, ChartConfig, TimeMode } from '@/lib/types';
const MAX_SERIES = 80;
export interface SeriesData { export interface SeriesData {
keys: string[]; keys: string[];
allXs: number[]; allXs: number[];
@@ -10,7 +12,6 @@ export function buildSeriesData(
rows: SignalRow[], rows: SignalRow[],
signalType: ChartConfig['signal_type'], signalType: ChartConfig['signal_type'],
timeMode: TimeMode, timeMode: TimeMode,
seriesLimit: number = 80,
): SeriesData | null { ): SeriesData | null {
const seriesMap = new Map<string, Map<number, number>>(); const seriesMap = new Map<string, Map<number, number>>();
@@ -33,7 +34,7 @@ export function buildSeriesData(
if (seriesMap.size === 0) return null; if (seriesMap.size === 0) return null;
const keys = [...seriesMap.keys()].slice(0, seriesLimit); const keys = [...seriesMap.keys()].slice(0, MAX_SERIES);
const allXs = [ const allXs = [
...new Set( ...new Set(
keys.flatMap((k) => { keys.flatMap((k) => {