Skip to content

Commit b966695

Browse files
authored
Visual Bug fix: Data Shadow and Legend Preservation (#221)
1 parent 3b1289a commit b966695

1 file changed

Lines changed: 13 additions & 2 deletions

File tree

frontend/src/pages/leaderboard/components/UserTrendChart.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ export default function UserTrendChart({ leaderboardId, defaultUsers, defaultGpu
198198

199199
const chartRef = useRef<ReactECharts>(null);
200200
const [zoomState, setZoomState] = useState<Array<{ startValue?: number; endValue?: number }>>([]);
201+
const [legendSelected, setLegendSelected] = useState<Record<string, boolean>>({});
201202

202203
// Local state for axis input fields (not applied until button clicked)
203204
const [xStartInput, setXStartInput] = useState("");
@@ -232,9 +233,15 @@ export default function UserTrendChart({ leaderboardId, defaultUsers, defaultGpu
232233
}
233234
}, []);
234235

235-
// Clear saved zoom state when restore is triggered
236+
// Track legend selection changes so toggled-off series stay off across re-renders
237+
const onLegendSelectChanged = useCallback((params: { selected: Record<string, boolean> }) => {
238+
setLegendSelected(params.selected);
239+
}, []);
240+
241+
// Clear saved zoom state and legend selection when restore is triggered
236242
const onRestore = useCallback(() => {
237243
setZoomState([]);
244+
setLegendSelected({});
238245
setXStartInput("");
239246
setXEndInput("");
240247
setYMinInput("");
@@ -342,9 +349,10 @@ export default function UserTrendChart({ leaderboardId, defaultUsers, defaultGpu
342349
() => ({
343350
datazoom: onDataZoom,
344351
restore: onRestore,
352+
legendselectchanged: onLegendSelectChanged,
345353
...(isCodeViewingAllowed && { click: onChartClick }),
346354
}),
347-
[onDataZoom, onRestore, isCodeViewingAllowed, onChartClick]
355+
[onDataZoom, onRestore, onLegendSelectChanged, isCodeViewingAllowed, onChartClick]
348356
);
349357

350358
// Fetch custom trend data on mount
@@ -1011,6 +1019,7 @@ export default function UserTrendChart({ leaderboardId, defaultUsers, defaultGpu
10111019
filterMode,
10121020
bottom: 40,
10131021
height: 20,
1022+
showDataShadow: false,
10141023
borderColor: isDark ? "#555" : "#ccc",
10151024
backgroundColor: isDark ? "#333" : "#f5f5f5",
10161025
fillerColor: isDark ? "rgba(100,100,100,0.3)" : "rgba(200,200,200,0.3)",
@@ -1029,6 +1038,7 @@ export default function UserTrendChart({ leaderboardId, defaultUsers, defaultGpu
10291038
filterMode,
10301039
right: 10,
10311040
width: 20,
1041+
showDataShadow: false,
10321042
borderColor: isDark ? "#555" : "#ccc",
10331043
backgroundColor: isDark ? "#333" : "#f5f5f5",
10341044
fillerColor: isDark ? "rgba(100,100,100,0.3)" : "rgba(200,200,200,0.3)",
@@ -1094,6 +1104,7 @@ export default function UserTrendChart({ leaderboardId, defaultUsers, defaultGpu
10941104
textStyle: {
10951105
color: textColor,
10961106
},
1107+
...(Object.keys(legendSelected).length > 0 && { selected: legendSelected }),
10971108
},
10981109
grid: {
10991110
left: "5%",

0 commit comments

Comments
 (0)