diff --git a/src/components/TrainsView/TrainTable.vue b/src/components/TrainsView/TrainTable.vue index 645c74a..e31944e 100644 --- a/src/components/TrainsView/TrainTable.vue +++ b/src/components/TrainsView/TrainTable.vue @@ -49,6 +49,7 @@ import TrainInfo from '@/components/TrainsView/TrainInfo.vue'; import { DataStatus } from '@/scripts/enums/DataStatus'; import { GETTERS } from '@/constants/storeConstants'; import TrainTimetableCard from './TrainTimetableCard.vue'; +import { ref } from 'vue'; export default defineComponent({ components: { @@ -74,7 +75,6 @@ export default defineComponent({ defaultVehicleIcons: defaultVehicleIconsJSON, - chosenTrain: null as Train | null, }), setup(props) { @@ -91,6 +91,9 @@ export default defineComponent({ //.slice(currentPage.value * PAGE_CAPACITY, currentPage.value * PAGE_CAPACITY + PAGE_CAPACITY); }); + const chosenTrainId = ref(null) as Ref; + const chosenTrain = computed(() => props.trains.find(train => train.trainNo + train.driverName === chosenTrainId.value)); + // watch([searchedTrain, searchedDriver], () => { // currentPage.value = 0; // }); @@ -105,6 +108,9 @@ export default defineComponent({ searchedDriver, currentTrains, + chosenTrain, + chosenTrainId, + sorterActive: inject('sorterActive') as { id: string | number; dir: number }, trainsDataStatus: computed(() => trainsDataStatus.value), distanceLimitExceeded: computed( @@ -139,11 +145,11 @@ export default defineComponent({ }, showTrainTimetable(train: Train) { - this.chosenTrain = train; + this.chosenTrainId = train.trainNo + train.driverName; }, closeTimetableCard() { - this.chosenTrain = null; + this.chosenTrainId = null; }, }, }); diff --git a/src/store/index.ts b/src/store/index.ts index 789976e..4e2e0a2 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -134,6 +134,8 @@ export const store = createStore({ }, async fetchOnlineData({ commit }) { + console.log("Pobieranie danych"); + // Pobierz dane o pociągach i rozkładach jazdy z API Stacjownika const trainsAPIData: { response: TrainAPIData[], errorMessage?: string } = (await axios.get(`${URLs.stacjownikAPI}/api/getActiveTrainList`)).data; diff --git a/src/views/TrainsView.vue b/src/views/TrainsView.vue index c30a7de..278b66d 100644 --- a/src/views/TrainsView.vue +++ b/src/views/TrainsView.vue @@ -47,14 +47,19 @@ const filteredTrainList = ( searchedTrain: string, searchedDriver: string, sorterActive: { id: string; dir: number } -) => { - +) => { return trainList .filter( (train) => (searchedTrain.length > 0 ? train.trainNo.toString().startsWith(searchedTrain) : true) && (searchedDriver.length > 0 ? train.driverName.toLowerCase().startsWith(searchedDriver.toLowerCase()) : true) ) + .sort((a, b) => { + const commentsA = a.timetableData?.followingStops.some(s => s.comments) ? 1 : 0; + const commentsB = b.timetableData?.followingStops.some(s => s.comments) ? 1 : 0; + + return commentsB - commentsA; + }) .sort((a: Train, b: Train) => { switch (sorterActive.id) { case 'mass':