From bba700c4d52f12f893bcf0e7b7dce34ff03981a8 Mon Sep 17 00:00:00 2001 From: Gregory Bednov Date: Fri, 17 Jan 2025 01:10:07 +0300 Subject: [PATCH] modified: src/AddObjectForm.svelte modified: src/CustomShapeRendererModule.ts modified: src/Diagram.svelte --- src/AddObjectForm.svelte | 36 +++++++++++++++------- src/CustomShapeRendererModule.ts | 51 +++++++++++++++++--------------- src/Diagram.svelte | 16 ++++++++++ 3 files changed, 69 insertions(+), 34 deletions(-) diff --git a/src/AddObjectForm.svelte b/src/AddObjectForm.svelte index ec8ae08..81d380a 100644 --- a/src/AddObjectForm.svelte +++ b/src/AddObjectForm.svelte @@ -38,7 +38,7 @@ const функцииПоТипу = { 'ZДополнительный']}; function addFunction() { - функции = [...функции, { тип: 'ВыполняемаяФункция', значение: 'Регистрация' }]; + функции = [...функции, { тип: 'ВыполняемаяФункция', значение: 'Регистрация' }] } function removeFunction(index: number) { @@ -47,7 +47,7 @@ function removeFunction(index: number) { let являетсяПаз = false; let ручной = false; -let направление: 'Открывается' | 'Закрывается' | 'ОстаётсяНаМесте' | null = null; +let направление: 'Открывается' | 'Закрывается' | 'ОстаётсяНаМесте' | null = null function handleSubmit() { const data = @@ -74,10 +74,10 @@ function handleSubmit() { } }; - console.log(величина); + console.log(to_svg(0,0)); } -function to_svg(x, y) { +export function to_svg(x, y):SVGElement { const r = svgCreate('g'); if (типОбъекта === 'ИсполнительныйМеханизм') { var circle = svgCreate('circle', @@ -89,18 +89,34 @@ function to_svg(x, y) { stroke: "CanvasText", }); - var line = svgCreate('line', - { + var lineAttrs: { + x1: any; + x2: any; + y1: any; + y2: number; + stroke: string; + "marker-start"?: string; + "marker-end"?: string; + } = { x1: x, x2: x, y1: y, y2: y - 42, stroke: "CanvasText", - }) + } - svgAppend(r, circle); - svgAppend(r, line); // здесь НЕОБХОДИМО добавить стрелки в разных направлениях TODO - return r; + if (направление == "Открывается" || направление == "ОстаётсяНаМесте") { + lineAttrs["marker-start"] = "url(#arrow)" + } + + if (направление == "Закрывается" || направление == "ОстаётсяНаМесте") { + lineAttrs["marker-end"] = "url(#arrow)" + } + + const line = svgCreate("line", lineAttrs); + svgAppend(r, circle) + svgAppend(r, line) + return r } if (являетсяПаз) { diff --git a/src/CustomShapeRendererModule.ts b/src/CustomShapeRendererModule.ts index e5532bb..a8b6450 100644 --- a/src/CustomShapeRendererModule.ts +++ b/src/CustomShapeRendererModule.ts @@ -7,7 +7,7 @@ import { attr as svgAttr, create as svgCreate } from 'tiny-svg'; - +import to_svg from "./AddObjectForm.svelte" @@ -29,35 +29,38 @@ class CustomShapeRenderer extends BaseRenderer { drawShape(visuals, element, attrs): SVGElement { - var circle = svgCreate('circle'); + // var circle = svgCreate('circle'); - svgAttr(circle, { - cx: `${element.width / 2}`, - cy: `${element.height / 2 - 52}`, - r: '2.5mm', - fill: "none", - stroke: "CanvasText", - }); + // svgAttr(circle, { + // cx: `${element.width / 2}`, + // cy: `${element.height / 2 - 52}`, + // r: '2.5mm', + // fill: "none", + // stroke: "CanvasText", + // }); - var line = svgCreate('line'); - svgAttr(line, { - x1: element.width / 2, - x2: element.width / 2, - y1: element.height/2, - y2: element.height/2 - 40 - 2, - stroke: "CanvasText", + // var line = svgCreate('line'); + // svgAttr(line, { + // x1: element.width / 2, + // x2: element.width / 2, + // y1: element.height/2, + // y2: element.height/2 - 40 - 2, + // stroke: "CanvasText", - }) + // }) - var g = svgCreate('g'); - svgAppend(g, circle); - svgAppend(g, line); + // var g = svgCreate('g'); + // svgAppend(g, circle); + // svgAppend(g, line); - svgAttr(g, assign({}, this.SHAPE_STYLE, attrs || {})); - svgAppend(visuals, g); - console.log(visuals); + // svgAttr(g, assign({}, this.SHAPE_STYLE, attrs || {})); + // svgAppend(visuals, g); - return g; + return to_svg(element.x, element.y); + + //console.log(visuals); + +// return g; } } diff --git a/src/Diagram.svelte b/src/Diagram.svelte index 7b7896b..caba9f8 100644 --- a/src/Diagram.svelte +++ b/src/Diagram.svelte @@ -17,6 +17,22 @@ }); + + + + + + + +