From dfe90bfd2d9d746bacba06f1885cce39c2747846 Mon Sep 17 00:00:00 2001 From: izawartka <59137928+izawartka@users.noreply.github.com> Date: Fri, 11 Jul 2025 01:28:41 +0200 Subject: [PATCH] Added isolations end markers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit +Added isolation end markers rendering on the Isolations layer *Renamed the “Isolations IDs” layer to “Isolations” --- src/components/map/Map.css | 5 ++ .../object-renderers/IsolationIdRenderer.js | 51 +++++++++++++++---- src/helpers/constants.js | 1 + 3 files changed, 46 insertions(+), 11 deletions(-) diff --git a/src/components/map/Map.css b/src/components/map/Map.css index f7ef8b1..7c95820 100644 --- a/src/components/map/Map.css +++ b/src/components/map/Map.css @@ -32,6 +32,11 @@ fill: #ffa; } +.map svg path.isolation-end-marker { + stroke: #ffa; + stroke-width: 0.5px; +} + .map svg g.track-object circle { fill: #eee; } diff --git a/src/components/map/object-renderers/IsolationIdRenderer.js b/src/components/map/object-renderers/IsolationIdRenderer.js index 54bd3a3..3a6088f 100644 --- a/src/components/map/object-renderers/IsolationIdRenderer.js +++ b/src/components/map/object-renderers/IsolationIdRenderer.js @@ -1,4 +1,6 @@ +import { useMemo } from "react"; import SimpleLabelText from "../text/SimpleLabelText"; +import { TrackConnectionType } from "../../../model/track-connection"; export default function IsolationIdRenderer(props) { const { object } = props; @@ -6,16 +8,43 @@ export default function IsolationIdRenderer(props) { const [x, y] = pos.toSVGCoords(); const text = object.id_isolation ?? ''; - if (object.hide_isolation || !text) { - return null; - } + const showText = (!object.hide_isolation && !!text); - return + return (<> + {showText && } + + + ); +} + +function IsolationEndMarker(props) { + const { object, isStart = false } = props; + + const isShown = useMemo(() => { + return object.connections.some(conn => + (isStart ? conn.type === TrackConnectionType.START : conn.type === TrackConnectionType.END) && + conn.otherTrack.id_isolation !== object.id_isolation + ); + }, [object, isStart]); + + if (!isShown) return null; + + const pos = isStart ? object.points.start : object.points.end; + const [x, y] = pos.toSVGCoords(); + const angle = isStart ? object.getStartAngleXZ() : object.getEndAngleXZ(); + + const cos = Math.cos(angle); + const sin = Math.sin(angle); + + return } diff --git a/src/helpers/constants.js b/src/helpers/constants.js index 0c535d9..bdce374 100644 --- a/src/helpers/constants.js +++ b/src/helpers/constants.js @@ -76,6 +76,7 @@ const Constants = { { id: 'isolations-ids', name: 'Isolations IDs', + name: 'Isolations', default: false, }, {