From 69ff85cfb12bb219ccc2f2847c1d1467ab9c1e69 Mon Sep 17 00:00:00 2001 From: Spythere Date: Mon, 3 Jun 2024 22:26:58 +0200 Subject: [PATCH] chore: added route electrification indicators in train schedule --- public/images/icon-w4a.png | Bin 0 -> 3325 bytes src/components/TrainsView/TrainSchedule.vue | 87 ++++++++++++++++---- 2 files changed, 69 insertions(+), 18 deletions(-) create mode 100644 public/images/icon-w4a.png diff --git a/public/images/icon-w4a.png b/public/images/icon-w4a.png new file mode 100644 index 0000000000000000000000000000000000000000..f4700913ddda510e6c8615f7cf629a2faea4ed04 GIT binary patch literal 3325 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 Hu0mjf@pdc% literal 0 HcmV?d00001 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%); } }