aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/frontend/src/graph/ZoomCanvas.tsx
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2023-09-04 22:03:40 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2023-09-05 00:25:11 +0200
commite7835fc640e3ce0d50a98a55392a21ef8658af4f (patch)
treece955e26c34c911915592548c2074356602fde82 /subprojects/frontend/src/graph/ZoomCanvas.tsx
parentbuild: remove unused Java modules from container (diff)
downloadrefinery-e7835fc640e3ce0d50a98a55392a21ef8658af4f.tar.gz
refinery-e7835fc640e3ce0d50a98a55392a21ef8658af4f.tar.zst
refinery-e7835fc640e3ce0d50a98a55392a21ef8658af4f.zip
refactor: disable all animations for large graphs
Diffstat (limited to 'subprojects/frontend/src/graph/ZoomCanvas.tsx')
-rw-r--r--subprojects/frontend/src/graph/ZoomCanvas.tsx14
1 files changed, 9 insertions, 5 deletions
diff --git a/subprojects/frontend/src/graph/ZoomCanvas.tsx b/subprojects/frontend/src/graph/ZoomCanvas.tsx
index 2bb7f139..0254bc59 100644
--- a/subprojects/frontend/src/graph/ZoomCanvas.tsx
+++ b/subprojects/frontend/src/graph/ZoomCanvas.tsx
@@ -34,10 +34,11 @@ export type ChangeZoomCallback = (factor: number) => void;
34 34
35export type SetFitZoomCallback = (fitZoom: boolean) => void; 35export type SetFitZoomCallback = (fitZoom: boolean) => void;
36 36
37export type FitZoomCallback = (newSize?: { 37export type FitZoomCallback = ((newSize?: {
38 width: number; 38 width: number;
39 height: number; 39 height: number;
40}) => void; 40}) => void) &
41 ((newSize: boolean) => void);
41 42
42export default function ZoomCanvas({ 43export default function ZoomCanvas({
43 children, 44 children,
@@ -79,7 +80,7 @@ export default function ZoomCanvas({
79 } 80 }
80 let width = 0; 81 let width = 0;
81 let height = 0; 82 let height = 0;
82 if (newSize === undefined) { 83 if (newSize === undefined || typeof newSize === 'boolean') {
83 const elementRect = elementRef.current.getBoundingClientRect(); 84 const elementRect = elementRef.current.getBoundingClientRect();
84 const currentFactor = d3.zoomTransform(canvasRef.current).k; 85 const currentFactor = d3.zoomTransform(canvasRef.current).k;
85 width = elementRect.width / currentFactor; 86 width = elementRect.width / currentFactor;
@@ -96,8 +97,11 @@ export default function ZoomCanvas({
96 (canvasRect.width - 2 * fitPaddingOrDefault) / width, 97 (canvasRect.width - 2 * fitPaddingOrDefault) / width,
97 (canvasRect.height - 2 * fitPaddingOrDefault) / height, 98 (canvasRect.height - 2 * fitPaddingOrDefault) / height,
98 ); 99 );
99 const zoomTransition = makeTransition(canvasRef.current); 100 const target =
100 zoomRef.current.transform(zoomTransition, d3.zoomIdentity.scale(factor)); 101 newSize === false
102 ? d3.select(canvasRef.current)
103 : makeTransition(canvasRef.current);
104 zoomRef.current.transform(target, d3.zoomIdentity.scale(factor));
101 }, 105 },
102 [fitPaddingOrDefault, makeTransition], 106 [fitPaddingOrDefault, makeTransition],
103 ); 107 );