radames commited on
Commit
a677067
1 Parent(s): b4efffa

params for scale and translate padding

Browse files
Files changed (1) hide show
  1. frontend/src/lib/Canvas.svelte +8 -12
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
- [-margin.left, -margin.top],
57
- [width + margin.right, height + margin.bottom]
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 / 1.5)
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 / 2, 1]);
73
- selection.call(zoomHandler.scaleTo as any, 1 / scale / 1.5);
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 () => {