Build the merged dataset + series description for the Compare page's
overlay charts. Each input session contributes one row per sample to
the merged array with its values stored under the prefixed key
${ sessionId }::${ pid }, and the array is sorted ascending by t.
Recharts plots each series independently — gaps in one session's
values (rows where another session contributed instead) get joined
by connectNulls=true at the chart layer.
Alignment:
trip-start — t stays as-is (each session's elapsed seconds).
gps — every session's t is shifted so its first GPS
lock lands at t = 0. Sessions with no GPS samples fall back
to trip-start.
The returned series array is in (session-order, pid-order)
lexicographic order so chart legends stay deterministic across
re-renders.
Build the merged dataset + series description for the Compare page's overlay charts. Each input session contributes one row per sample to the merged array with its values stored under the prefixed key
${ sessionId }::${ pid }, and the array is sorted ascending byt.Recharts plots each series independently — gaps in one session's values (rows where another session contributed instead) get joined by
connectNulls=trueat the chart layer.Alignment:
trip-start—tstays as-is (each session's elapsed seconds).gps— every session'stis shifted so its first GPS lock lands att = 0. Sessions with no GPS samples fall back to trip-start.The returned
seriesarray is in(session-order, pid-order)lexicographic order so chart legends stay deterministic across re-renders.