diff --git a/src/components/TrainsView/TrainInfoSimple.vue b/src/components/TrainsView/TrainInfoSimple.vue index f73a3f9..86f60dc 100644 --- a/src/components/TrainsView/TrainInfoSimple.vue +++ b/src/components/TrainsView/TrainInfoSimple.vue @@ -42,11 +42,10 @@
+ {{ currentDistance(train.timetableData.followingStops) }} km / {{ train.timetableData.routeDistance }} km | - - {{ $t('trains.route-progress') }} {{ confirmedPercentage(train.timetableData.followingStops) }}% - + |
@@ -118,6 +117,26 @@ export default defineComponent({ offline: require('@/assets/icon-offline.svg'), }, }), + + methods: { + generateProgressBar(train: Train) { + if (!train.timetableData) return ''; + + const percentage = this.confirmedPercentage(train.timetableData.followingStops); + + const mainStops = train.timetableData.followingStops.filter((stop) => stop.stopName.startsWith('')); + const skipRatio = Math.floor(mainStops.length / 10); + + let progressBarString = ` ${percentage}% `; + + mainStops.forEach((stop, i) => { + if (skipRatio > 0 && i % 10 == skipRatio) return; + progressBarString += ``; + }); + + return progressBarString; + }, + }, }); @@ -150,7 +169,8 @@ export default defineComponent({ background-color: #202020; gap: 0.5em; - &:hover, &:focus { + &:hover, + &:focus { background: #292929; } } diff --git a/src/components/TrainsView/TrainTimetableCard.vue b/src/components/TrainsView/TrainTimetableCard.vue index da400a0..626cf96 100644 --- a/src/components/TrainsView/TrainTimetableCard.vue +++ b/src/components/TrainsView/TrainTimetableCard.vue @@ -71,9 +71,10 @@ export default defineComponent({ max-width: 1300px; max-height: calc(100vh - 2em); + background-color: #202020; + + top: 0; transform: translate(-50%, 1em); - - border: 1px solid white; } diff --git a/src/mixins/trainInfoMixin.ts b/src/mixins/trainInfoMixin.ts index f6b1e54..f19ca60 100644 --- a/src/mixins/trainInfoMixin.ts +++ b/src/mixins/trainInfoMixin.ts @@ -63,6 +63,10 @@ export default defineComponent({ .join(' > '); }, + currentDistance(stops: TrainStop[]) { + return stops.filter(stop => stop.confirmed).slice(-1)[0]?.stopDistance || 0; + }, + confirmedPercentage(stops: TrainStop[]) { return ((stops.filter((stop) => stop.confirmed).length / stops.length) * 100).toFixed(0); },