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,
},
{