diff --git a/src/components/Global/TrainModal.vue b/src/components/Global/TrainModal.vue new file mode 100644 index 0000000..5beb324 --- /dev/null +++ b/src/components/Global/TrainModal.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/src/components/SceneryView/SceneryInfo.vue b/src/components/SceneryView/SceneryInfo.vue index 4465cc4..0c76dce 100644 --- a/src/components/SceneryView/SceneryInfo.vue +++ b/src/components/SceneryView/SceneryInfo.vue @@ -103,6 +103,7 @@ export default defineComponent({ diff --git a/src/components/SceneryView/SceneryTimetable.vue b/src/components/SceneryView/SceneryTimetable.vue index e9cae5d..62d2b57 100644 --- a/src/components/SceneryView/SceneryTimetable.vue +++ b/src/components/SceneryView/SceneryTimetable.vue @@ -25,6 +25,10 @@ + + + +
@@ -41,13 +45,8 @@ v-for="(scheduledTrain, i) in computedScheduledTrains" :key="i + 1" tabindex="0" - @click="navigateTo('/trains', { trainNo: scheduledTrain.trainNo, driverName: scheduledTrain.driverName })" - @keydown.enter=" - navigateTo('/trains', { - trainNo: scheduledTrain.trainNo, - driverName: scheduledTrain.driverName, - }) - " + @click.prevent.stop="selectTrain(scheduledTrain.trainId)" + @keydown.enter.prevent="selectTrain(scheduledTrain.trainId)" > @@ -166,11 +165,12 @@ import dateMixin from '@/mixins/dateMixin'; import routerMixin from '@/mixins/routerMixin'; import { useStore } from '@/store/store'; import Loading from '../Global/Loading.vue'; +import TrainModal from '../Global/TrainModal.vue'; export default defineComponent({ name: 'SceneryTimetable', - components: { SelectBox, Loading }, + components: { SelectBox, Loading, TrainModal }, mixins: [dateMixin, routerMixin], @@ -188,6 +188,8 @@ export default defineComponent({ warning: require('@/assets/icon-warning.svg'), timetable: require('@/assets/icon-timetable.svg'), }, + + chosenTrainId: null as string | null, }), setup(props) { @@ -236,6 +238,12 @@ export default defineComponent({ }; }, + computed: { + chosenTrain() { + return this.store.trainList.find((train) => train.trainId == this.chosenTrainId); + }, + }, + methods: { loadSelectedOption() { if (!this.station) return; @@ -251,6 +259,14 @@ export default defineComponent({ selectCheckpoint(cp: { checkpointName: string }) { this.selectedCheckpoint = cp.checkpointName; }, + + selectTrain(trainId: string) { + this.chosenTrainId = trainId; + }, + + closeTrainModal() { + this.chosenTrainId = null; + }, }, mounted() { diff --git a/src/components/TrainsView/TrainInfo.vue b/src/components/TrainsView/TrainInfo.vue index 3a87e41..2f2cc4d 100644 --- a/src/components/TrainsView/TrainInfo.vue +++ b/src/components/TrainsView/TrainInfo.vue @@ -1,17 +1,9 @@