diff --git a/public/images/icon-w4a.png b/public/images/icon-w4a.png new file mode 100644 index 0000000..f470091 Binary files /dev/null and b/public/images/icon-w4a.png differ diff --git a/src/components/TrainsView/TrainSchedule.vue b/src/components/TrainsView/TrainSchedule.vue index ecb4a77..961f5c6 100644 --- a/src/components/TrainsView/TrainSchedule.vue +++ b/src/components/TrainsView/TrainSchedule.vue @@ -56,7 +56,19 @@ -
{{ stop.departureLine }}
+
+ {{ stop.departureLine }} | {{ stop.departureLineSpeed }} + + + + +
+
+ + {{ scheduleStops[i + 1].arrivalLine }} | + {{ scheduleStops[i + 1].arrivalLineSpeed }} + + + + +
@@ -117,6 +142,12 @@ export interface TrainScheduleStop { arrivalLine: string | null; departureLine: string | null; + arrivalLineSpeed: number; + arrivalLineElectrified: boolean | null; + + departureLineSpeed: number; + departureLineElectrified: boolean | null; + comments: string | null; } @@ -154,6 +185,17 @@ export default defineComponent({ ) currentSceneryIndex++; + const sceneryName = this.train.timetableData!.sceneryNames[currentSceneryIndex]; + const sceneryInfo = this.apiStore.sceneryData.find((st) => st.name == sceneryName); + + const arrivalLineInfo = sceneryInfo?.routesInfo.find( + (r) => r.routeName == stop.arrivalLine + ); + + const departureLineInfo = sceneryInfo?.routesInfo.find( + (r) => r.routeName == stop.departureLine + ); + return { nameHtml: stop.stopName, nameRaw: stop.stopNameRAW, @@ -172,7 +214,12 @@ export default defineComponent({ comments: stop.comments ?? null, arrivalLine: stop.arrivalLine, + arrivalLineSpeed: arrivalLineInfo?.routeSpeed ?? 0, + arrivalLineElectrified: arrivalLineInfo?.isElectric ?? null, + departureLine: stop.departureLine, + departureLineSpeed: departureLineInfo?.routeSpeed ?? 0, + departureLineElectrified: departureLineInfo?.isElectric ?? null, type: stop.stopType, distance: stop.stopDistance, @@ -181,7 +228,7 @@ export default defineComponent({ isSBL: /sbl/gi.test(stop.stopName), position: stop.beginsHere ? 'begin' : stop.terminatesHere ? 'end' : 'en-route', sceneryHash: '', - sceneryName: this.train.timetableData!.sceneryNames[currentSceneryIndex], + sceneryName, status: stop.confirmed ? 'confirmed' : stop.stopped ? 'stopped' : 'unconfirmed' }; }) ?? [] @@ -483,22 +530,26 @@ $blinkAnim: 0.5s ease-in-out alternate infinite blink; } } -.bottom-line-info { - .scenery-change-name { - position: relative; - margin: 0.25em 0; +.scenery-route { + display: flex; + align-items: center; + gap: 5px; +} - &::before { - content: ''; - position: absolute; - height: 2px; - width: 30px; - background-color: #aaa; +.scenery-change-name { + position: relative; + margin: 0.25em 0; - top: 50%; - right: calc(100% + 5px); - transform: translate(0, -50%); - } + &::before { + content: ''; + position: absolute; + height: 2px; + width: 30px; + background-color: #aaa; + + top: 50%; + right: calc(100% + 5px); + transform: translate(0, -50%); } }