Skip to content

Commit 34827be

Browse files
committed
Sort graph labels
1 parent 3040263 commit 34827be

3 files changed

Lines changed: 28 additions & 25 deletions

File tree

frontend/src/components/BarChart.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,16 @@ const BarChart: React.FC<BarChartProps> = ({ graphData, aspectRatio = 4 }) => {
4646
},
4747
},
4848
plugins: {
49+
legend: {
50+
position: "right" as const,
51+
align: "start" as const,
52+
labels: {
53+
boxWidth: 12,
54+
padding: 6,
55+
font: { size: 11 },
56+
},
57+
maxWidth: 400,
58+
},
4959
zoom: {
5060
pan: {
5161
enabled: false,

frontend/src/components/LabResultsPlot.tsx

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,27 @@ const LabResultsPlot: React.FC<LabResultsPlotProps> = ({
1818
}) => {
1919
const [plotComponents, setPlotComponents] = useState<string[]>([]);
2020

21-
const experimentChartData: ChartDataSet[] = selectedExperiments.map((exp, expIdx) => ({
22-
label: exp.name,
23-
color: getLabResultColor(expIdx, 0),
24-
pattern: EXPERIMENT_PATTERNS[expIdx % EXPERIMENT_PATTERNS.length],
25-
data: Object.entries(exp.finalConcentrations)
26-
.filter(([, concentration]) => Number(concentration) !== 0)
27-
.map(([x, y]) => ({ x, y }))
28-
.sort((a, b) => a.x.localeCompare(b.x)),
29-
}));
30-
31-
const simulationChartData: ChartDataSet[] = [];
21+
const chartDatasets: ChartDataSet[] = [];
3222
selectedExperiments.forEach((exp, expIdx) => {
23+
chartDatasets.push({
24+
label: exp.name,
25+
color: getLabResultColor(expIdx, 0),
26+
pattern: EXPERIMENT_PATTERNS[expIdx % EXPERIMENT_PATTERNS.length],
27+
data: Object.entries(exp.finalConcentrations)
28+
.filter(([, concentration]) => Number(concentration) !== 0)
29+
.map(([x, y]) => ({ x, y }))
30+
.sort((a, b) => a.x.localeCompare(b.x)),
31+
});
3332
const simulations = simulationQueries[exp.name] ?? [];
3433
simulations.forEach((simulation, simIdx) => {
3534
const chartDataSet = convertSimulationToChartData(simulation, exp.name);
35+
chartDataSet.label = `– ${chartDataSet.label}`;
3636
chartDataSet.color = getLabResultColor(expIdx, simIdx + 1);
3737
chartDataSet.pattern = EXPERIMENT_PATTERNS[expIdx % EXPERIMENT_PATTERNS.length];
38-
simulationChartData.push(chartDataSet);
38+
chartDatasets.push(chartDataSet);
3939
});
4040
});
4141

42-
const chartDatasets: ChartDataSet[] = [...experimentChartData, ...simulationChartData].filter(
43-
(ds): ds is ChartDataSet => ds !== undefined
44-
);
45-
4642
const allComponents = Array.from(new Set(chartDatasets.flatMap((ds) => ds.data.map((point) => point.x)))).sort();
4743

4844
if (selectedExperiments.length === 0) {

frontend/tests/components/LabResultPlot.test.tsx

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ describe("LabResultsPlot Component", () => {
6666
expect(graphData.flatMap((d: ChartDataSet) => d.label)).toEqual(
6767
expect.arrayContaining([
6868
"Experiment Gondor",
69+
"– Narnia - Experiment Gondor",
70+
"– Mordor - Experiment Gondor",
6971
"Experiment Rohan",
70-
"Narnia - Experiment Gondor",
71-
"Mordor - Experiment Gondor",
7272
])
7373
);
7474

@@ -100,7 +100,7 @@ describe("LabResultsPlot Component", () => {
100100

101101
expect(graphData[0].data).toEqual([{ x: "CO2", y: 0.4 }]);
102102

103-
expect(graphData[1].data).toEqual([{ x: "CO2", y: 0.3 }]);
103+
expect(graphData[1].data).toEqual([]);
104104
});
105105

106106
it("handles multiple component selection correctly", () => {
@@ -123,10 +123,7 @@ describe("LabResultsPlot Component", () => {
123123
{ x: "H2O", y: 0.4 },
124124
]);
125125

126-
expect(graphData[1].data).toEqual([
127-
{ x: "CO2", y: 0.3 },
128-
{ x: "H2O", y: 0.5 },
129-
]);
126+
expect(graphData[1].data).toEqual([]);
130127
});
131128

132129
it("shows all data when no components are filtered", () => {
@@ -142,8 +139,8 @@ describe("LabResultsPlot Component", () => {
142139
const graphData = JSON.parse(barChart.getAttribute("data-graph-data") || "[]");
143140

144141
expect(graphData[0].data).toHaveLength(3);
145-
expect(graphData[1].data).toHaveLength(3);
142+
expect(graphData[1].data).toHaveLength(2);
146143
expect(graphData[2].data).toHaveLength(2);
147-
expect(graphData[3].data).toHaveLength(2);
144+
expect(graphData[3].data).toHaveLength(3);
148145
});
149146
});

0 commit comments

Comments
 (0)