Spaces:
Runtime error
Runtime error
params for scale and translate padding
Browse files
frontend/src/lib/Canvas.svelte
CHANGED
|
@@ -39,29 +39,25 @@
|
|
| 39 |
}
|
| 40 |
|
| 41 |
onMount(() => {
|
| 42 |
-
const margin = {
|
| 43 |
-
top: 0,
|
| 44 |
-
right: 0,
|
| 45 |
-
bottom: 0,
|
| 46 |
-
left: 0
|
| 47 |
-
};
|
| 48 |
const scale = width / containerEl.clientWidth;
|
|
|
|
|
|
|
| 49 |
const zoomHandler = zoom()
|
| 50 |
-
.scaleExtent([1 / scale, 1])
|
| 51 |
// .extent([
|
| 52 |
// [0, 0],
|
| 53 |
// [width, height]
|
| 54 |
// ])
|
| 55 |
.translateExtent([
|
| 56 |
-
[-
|
| 57 |
-
[width +
|
| 58 |
])
|
| 59 |
.tapDistance(10)
|
| 60 |
.on('zoom', zoomed);
|
| 61 |
|
| 62 |
const selection = select(canvasEl.parentElement)
|
| 63 |
.call(zoomHandler as any)
|
| 64 |
-
.call(zoomHandler.scaleTo as any, 1 / scale /
|
| 65 |
.on('pointermove', handlePointerMove)
|
| 66 |
.on('pointerleave', handlePointerLeave);
|
| 67 |
|
|
@@ -69,8 +65,8 @@
|
|
| 69 |
function zoomReset() {
|
| 70 |
console.log('zoom reset');
|
| 71 |
const scale = width / containerEl.clientWidth;
|
| 72 |
-
zoomHandler.scaleExtent([1 / scale /
|
| 73 |
-
selection.call(zoomHandler.scaleTo as any, 1 / scale /
|
| 74 |
}
|
| 75 |
window.addEventListener('resize', zoomReset);
|
| 76 |
return () => {
|
|
|
|
| 39 |
}
|
| 40 |
|
| 41 |
onMount(() => {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
const scale = width / containerEl.clientWidth;
|
| 43 |
+
const translatePadding = 0.1;
|
| 44 |
+
const scalePadding = 1.2;
|
| 45 |
const zoomHandler = zoom()
|
| 46 |
+
.scaleExtent([1 / scale / scalePadding, 1])
|
| 47 |
// .extent([
|
| 48 |
// [0, 0],
|
| 49 |
// [width, height]
|
| 50 |
// ])
|
| 51 |
.translateExtent([
|
| 52 |
+
[-width * translatePadding, -height * translatePadding],
|
| 53 |
+
[width * (1 + translatePadding), height * (1 + translatePadding)]
|
| 54 |
])
|
| 55 |
.tapDistance(10)
|
| 56 |
.on('zoom', zoomed);
|
| 57 |
|
| 58 |
const selection = select(canvasEl.parentElement)
|
| 59 |
.call(zoomHandler as any)
|
| 60 |
+
.call(zoomHandler.scaleTo as any, 1 / scale / scalePadding)
|
| 61 |
.on('pointermove', handlePointerMove)
|
| 62 |
.on('pointerleave', handlePointerLeave);
|
| 63 |
|
|
|
|
| 65 |
function zoomReset() {
|
| 66 |
console.log('zoom reset');
|
| 67 |
const scale = width / containerEl.clientWidth;
|
| 68 |
+
zoomHandler.scaleExtent([1 / scale / scalePadding, 1])
|
| 69 |
+
selection.call(zoomHandler.scaleTo as any, 1 / scale / scalePadding);
|
| 70 |
}
|
| 71 |
window.addEventListener('resize', zoomReset);
|
| 72 |
return () => {
|