Added original signal names option

+Added an option to show original (internal) signal names
This commit is contained in:
izawartka 2025-07-27 22:34:17 +02:00
parent a624e092eb
commit 7ffdf87409
7 changed files with 44 additions and 11 deletions

View File

@ -7,6 +7,7 @@ export default function SettingsManager(props) {
const [ trackColorMode, setTrackColorMode ] = useState(Constants.trackColorModeDefault); const [ trackColorMode, setTrackColorMode ] = useState(Constants.trackColorModeDefault);
const [ showTrackHoverInfo, setShowTrackHoverInfo ] = useState(true); const [ showTrackHoverInfo, setShowTrackHoverInfo ] = useState(true);
const [ extendedSignals, setExtendedSignals ] = useState(true); const [ extendedSignals, setExtendedSignals ] = useState(true);
const [ originalSignalNames, setOriginalSignalNames ] = useState(false);
const [ settingsLoaded, setSettingsLoaded ] = useState(false); const [ settingsLoaded, setSettingsLoaded ] = useState(false);
const loadLayersSettings = useCallback(() => { const loadLayersSettings = useCallback(() => {
@ -29,6 +30,7 @@ export default function SettingsManager(props) {
showTrackHoverInfo, setShowTrackHoverInfo, showTrackHoverInfo, setShowTrackHoverInfo,
trackColorMode, setTrackColorMode, trackColorMode, setTrackColorMode,
extendedSignals, setExtendedSignals, extendedSignals, setExtendedSignals,
originalSignalNames, setOriginalSignalNames
}}> }}>
{ props.children } { props.children }
</SettingsContext.Provider> </SettingsContext.Provider>

View File

@ -7,7 +7,7 @@ import AlwaysUpText from '../text/AlwaysUpText';
import C from '../../../helpers/extendedSignalsConstants'; import C from '../../../helpers/extendedSignalsConstants';
export default function SignalExtendedRenderer(props) { export default function SignalExtendedRenderer(props) {
const { object } = props; const { object, showOriginalName } = props;
const [x, y] = object.pos.toSVGCoords(); const [x, y] = object.pos.toSVGCoords();
const baseRot = object.rot.y; const baseRot = object.rot.y;
@ -18,23 +18,24 @@ export default function SignalExtendedRenderer(props) {
return ( return (
<g className="extended-signal" transform={`translate(${x}, ${y}) rotate(${rot})`}> <g className="extended-signal" transform={`translate(${x}, ${y}) rotate(${rot})`}>
<SignalIcon object={object} pointsData={pointsData} /> <SignalIcon object={object} pointsData={pointsData} />
<SignalNameText object={object} rot={rot} pointsData={pointsData} /> <SignalNameText object={object} rot={rot} pointsData={pointsData} showOriginalName={showOriginalName} />
</g> </g>
); );
} }
function SignalNameText(props) { function SignalNameText(props) {
const {object, rot, pointsData} = props; const {object, rot, pointsData, showOriginalName} = props;
const isOverhead = object.signal_elements.isOverhead(); const isOverhead = object.signal_elements.isOverhead();
const baseY = isOverhead ? pointsData.headOffsetY + pointsData.polePoints.end : 0; const baseY = isOverhead ? pointsData.headOffsetY + pointsData.polePoints.end : 0;
const name = showOriginalName ? object.name : object.getPrintableSignalName();
return ( return (
<AlwaysUpText <AlwaysUpText
baseRot={rot} baseRot={rot}
additionalRot={-90} additionalRot={-90}
offsetY={baseY + C.NAME_TEXT_OFFSET} offsetY={baseY + C.NAME_TEXT_OFFSET}
text={object.getPrintableSignalName()} text={name}
reverseAnchor={true} reverseAnchor={true}
/> />
); );

View File

@ -5,12 +5,12 @@ import SettingsContext from '../../../contexts/SettingsContext';
export default function SignalRenderer(props) { export default function SignalRenderer(props) {
const { object } = props; const { object } = props;
const { extendedSignals } = useContext(SettingsContext); const { extendedSignals, originalSignalNames: showOriginalName } = useContext(SettingsContext);
if (extendedSignals && object.signal_elements) { if (extendedSignals && object.signal_elements) {
return <MemoizedSignalExtendedRenderer object={object} />; return <MemoizedSignalExtendedRenderer object={object} showOriginalName={showOriginalName} />;
} else { } else {
return <MemoizedSignalStandardRenderer object={object} />; return <MemoizedSignalStandardRenderer object={object} showOriginalName={showOriginalName} />;
} }
} }

View File

@ -2,8 +2,9 @@ import { ReactSVG } from "react-svg";
import AlwaysUpText from "../text/AlwaysUpText"; import AlwaysUpText from "../text/AlwaysUpText";
export default function SignalStandardRenderer(props) { export default function SignalStandardRenderer(props) {
const { object } = props; const { object, showOriginalName } = props;
const [x, y] = object.pos.toSVGCoords(); const [x, y] = object.pos.toSVGCoords();
const name = showOriginalName ? object.name : object.getPrintableSignalName();
return ( return (
<g className="signal" transform={`translate(${x}, ${y}) rotate(${object.rot.y})`}> <g className="signal" transform={`translate(${x}, ${y}) rotate(${object.rot.y})`}>
@ -22,7 +23,7 @@ export default function SignalStandardRenderer(props) {
baseRot={object.rot.y} baseRot={object.rot.y}
additionalRot={-90} additionalRot={-90}
offsetY={-2} offsetY={-2}
text={object.getPrintableSignalName()} text={name}
/> />
</g> </g>
); );

View File

@ -1,4 +1,5 @@
import ExtendedSignalsCheckbox from "./ExtendedSignalsCheckbox"; import ExtendedSignalsCheckbox from "./ExtendedSignalsCheckbox";
import OriginalSignalNamesCheckbox from "./OriginalSignalNamesCheckbox";
import ShowTrackHoverInfoCheckbox from "./ShowTrackHoverInfoCheckbox"; import ShowTrackHoverInfoCheckbox from "./ShowTrackHoverInfoCheckbox";
import TrackColorMode from "./track-color-mode/TrackColorMode"; import TrackColorMode from "./track-color-mode/TrackColorMode";
@ -9,6 +10,7 @@ export default function LayerOptionsMenu() {
<div className="layer-options-menu-checkboxes"> <div className="layer-options-menu-checkboxes">
<ShowTrackHoverInfoCheckbox /> <ShowTrackHoverInfoCheckbox />
<ExtendedSignalsCheckbox /> <ExtendedSignalsCheckbox />
<OriginalSignalNamesCheckbox />
</div> </div>
<TrackColorMode /> <TrackColorMode />
</div> </div>

View File

@ -0,0 +1,26 @@
import { useContext } from "react";
import SettingsContext from "../../contexts/SettingsContext";
export default function OriginalSignalNamesCheckbox(props) {
const { originalSignalNames, setOriginalSignalNames, layers } = useContext(SettingsContext);
const handleChange = (event) => {
setOriginalSignalNames(event.target.checked);
};
let divClass = 'original-signal-names-checkbox';
if (!layers['signals']) divClass += ' hidden';
return (
<div className={divClass}>
<label>
<input
type="checkbox"
checked={originalSignalNames}
onChange={handleChange}
/>
Original signal names
</label>
</div>
);
}

View File

@ -80,7 +80,8 @@
} }
.extended-signals-checkbox input, .extended-signals-checkbox input,
.show-track-hover-info-checkbox input { .show-track-hover-info-checkbox input,
.original-signal-names-checkbox input {
margin-right: 0.5em; margin-right: 0.5em;
vertical-align: middle; vertical-align: middle;
} }