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