From 3d6817302673febda812e352926da56d1436380a Mon Sep 17 00:00:00 2001 From: Shawn Yama Date: Mon, 10 Jun 2024 18:27:02 -0400 Subject: [PATCH] Model diagram wheel disable (#3761) --- .../graph-scaffolder/src/core/renderer.ts | 23 +++--- .../graph-scaffolder/src/types/index.ts | 1 + .../css/theme/extensions/_selectbutton.scss | 18 +++-- .../model-diagrams/tera-model-diagram.vue | 70 +++++++++++-------- .../petrinet/petrinet-renderer.ts | 2 +- .../src/model-representation/service.ts | 2 + 6 files changed, 71 insertions(+), 45 deletions(-) diff --git a/packages/client/graph-scaffolder/src/core/renderer.ts b/packages/client/graph-scaffolder/src/core/renderer.ts index 56ff604437..99728697fe 100644 --- a/packages/client/graph-scaffolder/src/core/renderer.ts +++ b/packages/client/graph-scaffolder/src/core/renderer.ts @@ -346,6 +346,7 @@ export abstract class Renderer extends EventEmitter { .style('pointer-events', 'none'); } }; + const zoomEnd = () => { if (!this.graph || !chart) return; this.zoomTransformObject = d3.zoomTransform(chart.node() as Element); @@ -354,16 +355,20 @@ export abstract class Renderer extends EventEmitter { const minZoom = 0.05; const maxZoom = Math.max(2, Math.floor((this.graph.width as number) / this.chartSize.width)); + const zoomRange = this.options.zoomRange || [minZoom, maxZoom]; + + this.zoom = d3 + .zoom() + .filter((event: MouseEvent) => { + if (renderer.options?.zoomModifier) { + return !(event.type === 'wheel') || event?.[renderer.options.zoomModifier]; + } + return true; + }) + .scaleExtent(zoomRange) + .on('zoom', zoomed) + .on('end', zoomEnd); - if (this.options.zoomRange) { - this.zoom = d3 - .zoom() - .scaleExtent(this.options.zoomRange) - .on('zoom', zoomed) - .on('end', zoomEnd); - } else { - this.zoom = d3.zoom().scaleExtent([minZoom, maxZoom]).on('zoom', zoomed).on('end', zoomEnd); - } svg.call(this.zoom as any).on('dblclick.zoom', null); if (this.options.useStableZoomPan && this.zoomTransformObject) { diff --git a/packages/client/graph-scaffolder/src/types/index.ts b/packages/client/graph-scaffolder/src/types/index.ts index ccc7d8e670..f3e7bf63e4 100644 --- a/packages/client/graph-scaffolder/src/types/index.ts +++ b/packages/client/graph-scaffolder/src/types/index.ts @@ -64,6 +64,7 @@ export interface Options { useZoom?: boolean; zoomRange?: [number, number]; + zoomModifier?: string; useStableLayout?: boolean; // Attempt to use the same set of zoom parameters across layout changes diff --git a/packages/client/hmi-client/src/assets/css/theme/extensions/_selectbutton.scss b/packages/client/hmi-client/src/assets/css/theme/extensions/_selectbutton.scss index 0241b5c644..1da774d810 100644 --- a/packages/client/hmi-client/src/assets/css/theme/extensions/_selectbutton.scss +++ b/packages/client/hmi-client/src/assets/css/theme/extensions/_selectbutton.scss @@ -6,25 +6,25 @@ border-radius: 6px; border: 1px solid var(--surface-border); background-color: var(--tab-backgroundcolor-unselected); - height: 40px; + height: 40px; .p-button { padding: 12px; - border-radius: $borderRadius; + border-radius: $borderRadius; background-color: var(--tab-backgroundcolor-unselected); border: none; &:hover { background: $toggleButtonHoverBg; } &:focus { - background: $toggleButtonActiveBg; + background: $toggleButtonActiveBg; &.p-highlight { background: $toggleButtonBg; - } + } } &.p-highlight { background: $toggleButtonBg; - border-radius: $borderRadius; + border-radius: $borderRadius; } } } @@ -42,6 +42,10 @@ height:24px; border-radius: $borderRadius; + .p-button-label { + font-size: var(--font-caption); + } + .p-button { padding: 8px; border-radius: $smallBorderRadius; @@ -54,6 +58,6 @@ .p-selectbutton.p-button-xsm { @extend .p-button-sm; .p-button-label { - font-size: var(--font-caption); + font-size: var(--font-tiny); } -} \ No newline at end of file +} diff --git a/packages/client/hmi-client/src/components/model/petrinet/model-diagrams/tera-model-diagram.vue b/packages/client/hmi-client/src/components/model/petrinet/model-diagrams/tera-model-diagram.vue index 7eff5bc1fd..4d5ba7410a 100644 --- a/packages/client/hmi-client/src/components/model/petrinet/model-diagrams/tera-model-diagram.vue +++ b/packages/client/hmi-client/src/components/model/petrinet/model-diagrams/tera-model-diagram.vue @@ -4,12 +4,7 @@ :show-tooltip="!isEmpty(hoveredTransitionId)" >
- +
@@ -40,6 +28,7 @@