SYNC: fixed diagram references when using zoom

This commit is contained in:
SPRINX0\prochazka
2025-03-28 16:24:05 +01:00
committed by Diflow
parent a8a8f9b3e5
commit 6fce43a122
3 changed files with 18 additions and 3 deletions

View File

@@ -638,7 +638,7 @@
function recomputeReferencePositions() { function recomputeReferencePositions() {
for (const ref of Object.values(referenceRefs) as any[]) { for (const ref of Object.values(referenceRefs) as any[]) {
if (ref) ref.recomputePosition(); if (ref) ref.recomputePosition(zoomKoef);
} }
} }
@@ -915,6 +915,7 @@
onRemoveReference={removeReference} onRemoveReference={removeReference}
designer={value} designer={value}
{settings} {settings}
{zoomKoef}
/> />
{/each} {/each}
<!-- <!--

View File

@@ -1,6 +1,7 @@
<script lang="ts"> <script lang="ts">
import Designer from './Designer.svelte'; import Designer from './Designer.svelte';
import DiagramDesignerReference from './DiagramDesignerReference.svelte'; import DiagramDesignerReference from './DiagramDesignerReference.svelte';
// import QueryDesignerReference from './QueryDesignerReference.svelte';
export let columnFilter; export let columnFilter;
</script> </script>

View File

@@ -9,6 +9,8 @@
export let domTables; export let domTables;
export let settings; export let settings;
export let zoomKoef;
let src = null; let src = null;
let dst = null; let dst = null;
@@ -19,7 +21,7 @@
const arhi = 12; const arhi = 12;
const arpad = 3; const arpad = 3;
export function recomputePosition() { export function recomputePosition(zoomKoef) {
const { designerId, sourceId, targetId, columns, joinType } = reference; const { designerId, sourceId, targetId, columns, joinType } = reference;
/** @type {DomTableRef} */ /** @type {DomTableRef} */
@@ -31,6 +33,17 @@
const targetRect = targetTable.getRect(); const targetRect = targetTable.getRect();
if (!sourceRect || !targetRect) return null; if (!sourceRect || !targetRect) return null;
if (zoomKoef > 0) {
sourceRect.left /= zoomKoef;
sourceRect.right /= zoomKoef;
sourceRect.top /= zoomKoef;
sourceRect.bottom /= zoomKoef;
targetRect.left /= zoomKoef;
targetRect.right /= zoomKoef;
targetRect.top /= zoomKoef;
targetRect.bottom /= zoomKoef;
}
src = { src = {
x: (sourceRect.left + sourceRect.right) / 2, x: (sourceRect.left + sourceRect.right) / 2,
y: (sourceRect.top + sourceRect.bottom) / 2, y: (sourceRect.top + sourceRect.bottom) / 2,
@@ -47,7 +60,7 @@
$: { $: {
domTables; domTables;
recomputePosition(); recomputePosition(zoomKoef);
} }
</script> </script>