Use <router-link> instead of a @click handler in SceneryTimetable

This commit is contained in:
dominik-korsa
2024-08-21 13:29:53 +02:00
parent a818cd980b
commit 9837ae97e1
5 changed files with 19 additions and 21 deletions
@@ -63,14 +63,13 @@
{{ $t('scenery.no-timetables') }} {{ $t('scenery.no-timetables') }}
</div> </div>
<div <router-link
class="timetable-item" class="timetable-item block-link"
v-else v-else
v-for="(row, i) in sceneryTimetables" v-for="(row, i) in sceneryTimetables"
:key="row.train.id + i" :key="row.train.id + i"
tabindex="0" tabindex="0"
@click.prevent.stop="driverMixin_showDriverView(row.train.id)" :to="row.train.driverRouteLocation"
@keydown.enter.prevent="driverMixin_showDriverView(row.train.id)"
> >
<span class="timetable-general"> <span class="timetable-general">
<span class="general-info"> <span class="general-info">
@@ -169,7 +168,7 @@
</span> </span>
</span> </span>
</span> </span>
</div> </router-link>
</transition-group> </transition-group>
</div> </div>
</section> </section>
@@ -196,7 +195,7 @@ export default defineComponent({
components: { Loading, ScheduledTrainStatus }, components: { Loading, ScheduledTrainStatus },
mixins: [dateMixin, routerMixin, trainCategoryMixin, driverViewMixin], mixins: [dateMixin, routerMixin, trainCategoryMixin],
props: { props: {
station: { station: {
@@ -391,7 +390,6 @@ export default defineComponent({
background: #353535; background: #353535;
cursor: pointer;
z-index: 10; z-index: 10;
&.empty { &.empty {
+1 -12
View File
@@ -18,7 +18,7 @@
v-for="train in trains" v-for="train in trains"
:key="train.id" :key="train.id"
> >
<router-link class="block-link" :to="getTrainRoute(train.id)"> <router-link class="block-link" :to="train.driverRouteLocation">
<TrainInfo :train="train" :extended="false" /> <TrainInfo :train="train" :extended="false" />
</router-link> </router-link>
</li> </li>
@@ -64,17 +64,6 @@ export default defineComponent({
}; };
}, },
methods: {
getTrainRoute(trainId: string) {
return {
name: 'DriverView',
query: {
trainId,
}
}
}
},
computed: { computed: {
dataStatus() { dataStatus() {
if (this.store.isOffline) return Status.Data.Offline; if (this.store.isOffline) return Status.Data.Offline;
+2 -2
View File
@@ -7,7 +7,7 @@ const routes: Array<RouteRecordRaw> = [
component: () => import('../views/StationsView.vue'), component: () => import('../views/StationsView.vue'),
props: (route) => ({ props: (route) => ({
region: route.query.region region: route.query.region
}) }),
}, },
{ {
path: '/trains', path: '/trains',
@@ -55,7 +55,7 @@ const routes: Array<RouteRecordRaw> = [
component: () => import('../views/JournalDispatchers.vue'), component: () => import('../views/JournalDispatchers.vue'),
props: (route) => ({ props: (route) => ({
region: route.query.region region: route.query.region
}) }),
}, },
{ {
path: '/:catchAll(.*)', path: '/:catchAll(.*)',
+7
View File
@@ -86,6 +86,13 @@ export const useMainStore = defineStore('mainStore', {
isSupporter: train.driverIsSupporter, isSupporter: train.driverIsSupporter,
driverLevel: train.driverLevel, driverLevel: train.driverLevel,
driverRouteLocation: {
name: 'DriverView',
query: {
trainId: train.id
}
},
timetableData: timetable timetableData: timetable
? { ? {
timetableId: timetable.timetableId, timetableId: timetable.timetableId,
+4
View File
@@ -1,3 +1,5 @@
import { RouteLocationRaw } from 'vue-router';
export type Availability = 'default' | 'unavailable' | 'nonPublic' | 'abandoned' | 'nonDefault'; export type Availability = 'default' | 'unavailable' | 'nonPublic' | 'abandoned' | 'nonDefault';
export type ScenerySpawnType = 'passenger' | 'freight' | 'loco' | 'all'; export type ScenerySpawnType = 'passenger' | 'freight' | 'loco' | 'all';
@@ -70,6 +72,8 @@ export interface Train {
isTimeout: boolean; isTimeout: boolean;
isSupporter: boolean; isSupporter: boolean;
driverRouteLocation: RouteLocationRaw,
timetableData?: { timetableData?: {
timetableId: number; timetableId: number;
category: string; category: string;