Skip to content

Commit 53f2cb1

Browse files
committed
combine side-effects for both axes in a single callback
1 parent 8e29a5a commit 53f2cb1

File tree

1 file changed

+16
-18
lines changed

1 file changed

+16
-18
lines changed

apps/class-solid/src/components/plots/ChartContainer.tsx

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -71,35 +71,33 @@ export function ChartContainer(props: {
7171
pan: [0, 0],
7272
});
7373

74-
// Update scaleXInstance when scaleX props change
74+
// Update scales when props change
7575
createEffect(() => {
76-
const [min, max] = chart.scalePropsX.domain;
77-
const pan = chart.pan[0];
76+
const [minX, maxX] = chart.scalePropsX.domain;
77+
const [minY, maxY] = chart.scalePropsY.domain;
78+
const [panX, panY] = chart.pan;
7879
const zoom = chart.zoom;
79-
const zoomedDomain = getZoomedAndPannedDomainLinear(min, max, pan, zoom);
8080

81+
const zoomedXDomain = getZoomedAndPannedDomainLinear(
82+
minX,
83+
maxX,
84+
panX,
85+
zoom,
86+
);
8187
const scaleX = supportedScales[chart.scalePropsX.type]()
8288
.range(chart.scalePropsX.range)
83-
.domain(zoomedDomain);
84-
85-
updateChart("scaleX", () => scaleX);
86-
});
89+
.domain(zoomedXDomain);
8790

88-
// Update scales when props change
89-
createEffect(() => {
90-
const [min, max] = chart.scalePropsY.domain;
91-
const pan = chart.pan[1];
92-
const zoom = chart.zoom;
93-
94-
const zoomedDomain =
91+
const zoomedYDomain =
9592
chart.scalePropsY.type === "log"
96-
? getZoomedAndPannedDomainLog(min, max, pan, zoom)
97-
: getZoomedAndPannedDomainLinear(min, max, pan, zoom);
93+
? getZoomedAndPannedDomainLog(minY, maxY, panY, zoom)
94+
: getZoomedAndPannedDomainLinear(minY, maxY, panY, zoom);
9895

9996
const scaleY = supportedScales[chart.scalePropsY.type]()
10097
.range(chart.scalePropsY.range)
101-
.domain(zoomedDomain);
98+
.domain(zoomedYDomain);
10299

100+
updateChart("scaleX", () => scaleX);
103101
updateChart("scaleY", () => scaleY);
104102
});
105103

0 commit comments

Comments
 (0)