diff --git a/src/components/map/Map.css b/src/components/map/Map.css
index eadb3f5..197ec63 100644
--- a/src/components/map/Map.css
+++ b/src/components/map/Map.css
@@ -49,11 +49,11 @@
stroke: #eee;
}
-.map svg g.extended-signal-icon g {
+.map svg g.extended-signal-icon {
stroke: #eee;
}
-.map svg g.extended-signal-icon g path.background {
+.map svg g.extended-signal-icon path.background {
fill: #111;
}
diff --git a/src/components/map/object-renderers/SignalExtendedRenderer.js b/src/components/map/object-renderers/SignalExtendedRenderer.js
index 5b9c3b8..3d64899 100644
--- a/src/components/map/object-renderers/SignalExtendedRenderer.js
+++ b/src/components/map/object-renderers/SignalExtendedRenderer.js
@@ -7,45 +7,63 @@ export default function SignalExtendedRenderer(props) {
const { object } = props;
const [x, y] = object.pos.toSVGCoords();
- const overheadRot = object.signal_elements.isOverhead() ? 180 : 0;
const baseRot = object.rot.y;
- const rot = AngleHelper.normalizeDegAngle(overheadRot + baseRot);
+ const rot = AngleHelper.normalizeDegAngle(baseRot);
+
+ const pointsData = getSignalPointsData(object);
+
+ return (
+
+
+
+
+ );
+}
+
+function SignalNameText(props) {
+ const {object, rot, pointsData} = props;
+
const upsideDown = rot >= 180;
const upsideDownRot = upsideDown ? 90 : -90;
const anchor = upsideDown ? "start" : "end";
+ const isOverhead = object.signal_elements.isOverhead();
+ const baseY = isOverhead ? pointsData.headOffsetY + pointsData.polePoints.end : 0;
+
+
return (
-
-
-
-
-
-
- {object.getPrintableSignalName()}
-
-
+
+
+ {object.getPrintableSignalName()}
+
);
}
function SignalIcon(props) {
- const { object } = props;
+ const { object, pointsData } = props;
+ return (
+
+ { getBase(pointsData) }
+ { getOverheadFrame(object) }
+ { getPole(pointsData) }
+ { getBars(object, pointsData) }
+ { getSigns(object, pointsData) }
+ { getHead(object, pointsData) }
+
+ );
+}
+
+function getSignalPointsData(object) {
const halfBaseWidth = getHalfBaseWidth(object);
const headOffsetX = getHeadOffsetX(object);
const polePoints = getPolePoints(object, headOffsetX);
const headOffsetY = getHeadOffsetY(object, polePoints);
- return (
-
- { getBase(halfBaseWidth) }
- { getOverheadFrame(object) }
- { getPole(polePoints, headOffsetY, headOffsetX) }
- { getBars(object, polePoints, headOffsetY) }
- { getSigns(object, polePoints, headOffsetY) }
- { getHead(object, headOffsetY, headOffsetX) }
-
- );
+ return {
+ halfBaseWidth, headOffsetX, polePoints, headOffsetY
+ };
}
function getHeadOffsetY(object, polePoints) {
@@ -67,7 +85,7 @@ function getHalfBaseWidth(object) {
return 0.4536;
}
-function getBase(halfBaseWidth) {
+function getBase({halfBaseWidth}) {
if(halfBaseWidth === 0) return null;
return ;
}
@@ -131,7 +149,7 @@ function getPolePoints(object, headOffsetX) {
return polePoints;
}
-function getPole(polePoints, headOffsetY, headOffsetX) {
+function getPole({polePoints, headOffsetY, headOffsetX}) {
if(!polePoints) return null;
if(headOffsetX) {
@@ -190,13 +208,13 @@ function getUnit(key, unitType, x, y) {
}
}
-function getHead(object, headOffsetY, headOffsetX) {
+function getHead(object, {headOffsetY, headOffsetX}) {
if(object.signal_elements.isMechanical()) {
- return getHeadMech(object, headOffsetY);
+ return getHeadMech(object, {headOffsetY});
}
if(object.signal_elements.type === SignalElementsEnums.Type.TOP) {
- return getHeadTOP(object, headOffsetY);
+ return getHeadTOP(object, {headOffsetY});
}
const isDoubleDwarf = object.signal_elements.type === SignalElementsEnums.Type.DWARF_DOUBLE;
@@ -214,7 +232,7 @@ function getHead(object, headOffsetY, headOffsetX) {
return units;
}
-function getHeadTOP(object, headOffsetY) {
+function getHeadTOP(object, {headOffsetY}) {
const isLeft = object.signal_elements.headPosition === SignalElementsEnums.HeadPosition.LEFT;
const r = 0.6;
const whiteCX = isLeft ? r*2 : -r*2;
@@ -254,7 +272,7 @@ function getCustomMechHead(y, fileName) {
;
}
-function getHeadMech(object, headOffsetY) {
+function getHeadMech(object, {headOffsetY}) {
const mechType = object.signal_elements.mechType;
switch(mechType) {
@@ -289,16 +307,16 @@ function getHeadMech(object, headOffsetY) {
}
}
-function getBar(object, headOffsetX, y, isYellow, key = 0) {
+function getBar(y, isYellow, key = 0) {
const yellowOff = isYellow ? 0.2 : 0;
return
- ;
- ;
+ ;
+ ;
}
-function getBars(object, polePoints, headOffsetY) {
+function getBars(object, {polePoints, headOffsetY}) {
if(!polePoints) return null;
const barType = object.signal_elements.bar;
@@ -311,13 +329,13 @@ function getBars(object, polePoints, headOffsetY) {
default:
return null;
case SignalElementsEnums.BarType.YELLOW:
- return getBar(object, 0, y, true);
+ return getBar(y, true);
case SignalElementsEnums.BarType.GREEN:
- return getBar(object, 0, y, false);
+ return getBar(y, false);
case SignalElementsEnums.BarType.YELLOW_GREEN:
return <>
- { getBar(object, 0, y, true, 0) }
- { getBar(object, 0, y - 0.8, false, 1) }
+ { getBar(y, true, 0) }
+ { getBar(y - 0.8, false, 1) }
>
}
}
@@ -353,7 +371,7 @@ function getSign(id, y) {
}
-function getSigns(object, polePoints, headOffsetY) {
+function getSigns(object, {polePoints, headOffsetY}) {
if(!polePoints) return null;
const signs = [];
let y = headOffsetY + polePoints.signs;