-
{{ $t('journal.dispatcher-name') }}
-
{{ item.authorName }}
+
{{ timetable.trainCategoryCode }}
+
{{ timetable.trainNo }}
+ |
{{ timetable.driverName }} |
+
#{{ timetable.timetableId }}
+
+
+
+ {{ timetable.route.replace('|', ' - ') }}
+
+
+
+
+
+
+ >
+ {{ scenery.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('journal.dispatcher-name') }}
+
+ {{ timetable.authorName }}
+
+
+
+
+
+
+ {{ $t('journal.route-length') }}
+ {{ !timetable.fulfilled ? timetable.currentDistance + ' /' : '' }}
+ {{ timetable.routeDistance }} km
+
+ •
+
+ {{ $t('journal.station-count') }}
+ {{ timetable.confirmedStopsCount }} /
+ {{ timetable.allStopsCount }}
+
-
+
+ {{ timetable.stockString}}
@@ -165,16 +153,14 @@ import { TimetableHistory } from '../../scripts/interfaces/api/TimetablesAPIData
import { URLs } from '../../scripts/utils/apiURLs';
import { useStore } from '../../store/store';
import JournalOptions from './JournalOptions.vue';
+import { JournalTimetableSearcher } from '../../types/JournalTimetablesTypes';
+import modalTrainMixin from '../../mixins/modalTrainMixin';
const TIMETABLES_API_URL = `${URLs.stacjownikAPI}/api/getTimetables`;
-type JournalTimetableSearcher = {
- [key in 'search-driver' | 'search-train']: string;
-};
-
export default defineComponent({
components: { DriverStats, Loading, JournalOptions },
- mixins: [dateMixin, routerMixin],
+ mixins: [dateMixin, routerMixin, modalTrainMixin],
name: 'JournalTimetables',
@@ -192,6 +178,8 @@ export default defineComponent({
showReturnButton: false,
statsCardOpen: false,
+ timetableHistory: [] as TimetableHistory[],
+
journalTimetableFilters,
}),
@@ -219,7 +207,6 @@ export default defineComponent({
const scrollElement: Ref
= ref(null);
return {
- historyList: ref([]) as Ref,
historyDataStatus,
isDataLoading: computed(() => historyDataStatus.value.status === DataStatus.Loading),
@@ -256,48 +243,60 @@ export default defineComponent({
window.removeEventListener('wheel', this.handleScroll);
},
- methods: {
- navigateToTimetable(historyItem: TimetableHistory) {
- if (historyItem.terminated) return;
+ computed: {
+ computedTimetableHistory() {
+ return this.timetableHistory.map((timetable) => ({
+ timetable,
+ sceneryList: this.getSceneryList(timetable),
+ }));
+ },
+ },
- this.navigateTo('/trains', {
- trainNo: historyItem.trainNo,
- driverName: historyItem.driverName,
- });
+ methods: {
+ showTimetable(timetable: TimetableHistory) {
+ if (timetable.terminated) return;
+
+ this.selectModalTrain(timetable.driverName + timetable.trainNo.toString());
+ // this.navigateTo('/trains', {
+ // trainNo: timetable.trainNo,
+ // driverName: timetable.driverName,
+ // });
},
closeCard() {
this.statsCardOpen = false;
},
- getSceneryList(item: TimetableHistory) {
- return item.sceneriesString.split('%').map((name, i) => {
+ getSceneryList(timetable: TimetableHistory) {
+ return timetable.sceneriesString.split('%').map((name, i) => {
const beginDateHTML =
' (o. ' +
- (item.beginDate != item.scheduledBeginDate
- ? `${this.localeTime(item.beginDate, this.$i18n.locale)} `
+ (timetable.beginDate != timetable.scheduledBeginDate
+ ? `${this.localeTime(timetable.beginDate, this.$i18n.locale)} `
: '') +
- `${this.localeTime(item.scheduledBeginDate, this.$i18n.locale)})`;
+ `${this.localeTime(timetable.scheduledBeginDate, this.$i18n.locale)})`;
const endDateHTML =
' (p. ' +
- (item.endDate != item.scheduledEndDate && item.fulfilled
+ (timetable.endDate != timetable.scheduledEndDate && timetable.fulfilled
? `${this.localeTime(
- item.fulfilled ? item.endDate : item.scheduledEndDate,
+ timetable.fulfilled ? timetable.endDate : timetable.scheduledEndDate,
this.$i18n.locale
)} `
: '') +
`${this.localeTime(
- item.fulfilled || (item.terminated && !item.fulfilled) ? item.scheduledEndDate : item.endDate,
+ timetable.fulfilled || (timetable.terminated && !timetable.fulfilled)
+ ? timetable.scheduledEndDate
+ : timetable.endDate,
this.$i18n.locale
)})`;
const abandonedDateHTML = ` (porz. ${this.localeTime(
- item.fulfilled ? item.scheduledEndDate : item.endDate,
+ timetable.fulfilled ? timetable.scheduledEndDate : timetable.endDate,
this.$i18n.locale
)})`;
- return { name, confirmed: i < item.confirmedStopsCount, beginDateHTML, endDateHTML, abandonedDateHTML };
+ return { name, confirmed: i < timetable.confirmedStopsCount, beginDateHTML, endDateHTML, abandonedDateHTML };
});
},
@@ -332,7 +331,7 @@ export default defineComponent({
async addHistoryData() {
this.scrollDataLoaded = false;
- const countFrom = this.historyList.length;
+ const countFrom = this.timetableHistory.length;
const responseData: TimetableHistory[] = await (
await axios.get(`${TIMETABLES_API_URL}?${this.currentQuery}&countFrom=${countFrom}`)
@@ -345,7 +344,7 @@ export default defineComponent({
return;
}
- this.historyList.push(...responseData);
+ this.timetableHistory.push(...responseData);
this.scrollDataLoaded = true;
},
@@ -406,12 +405,12 @@ export default defineComponent({
if (!responseData) return;
// Response data exists
- this.historyList = responseData;
+ this.timetableHistory = responseData;
// Stats display
this.store.driverStatsName =
- this.historyList.length > 0 && this.searchersValues['search-driver'].trim()
- ? this.historyList[0].driverName
+ this.timetableHistory.length > 0 && this.searchersValues['search-driver'].trim()
+ ? this.timetableHistory[0].driverName
: '';
this.historyDataStatus.status = DataStatus.Loaded;
@@ -428,38 +427,46 @@ export default defineComponent({
diff --git a/src/scripts/interfaces/api/TimetablesAPIData.ts b/src/scripts/interfaces/api/TimetablesAPIData.ts
index 122da2a..7100024 100644
--- a/src/scripts/interfaces/api/TimetablesAPIData.ts
+++ b/src/scripts/interfaces/api/TimetablesAPIData.ts
@@ -31,6 +31,10 @@ export interface TimetableHistory {
stockMass?: number;
stockLength?: number;
maxSpeed?: number;
+
+ hashesString?: string;
+ currentSceneryName?: string;
+ currentSceneryHash?: string;
}
export interface SceneryTimetableHistory {
diff --git a/src/types/JournalTimetablesTypes.ts b/src/types/JournalTimetablesTypes.ts
new file mode 100644
index 0000000..0805257
--- /dev/null
+++ b/src/types/JournalTimetablesTypes.ts
@@ -0,0 +1,3 @@
+export type JournalTimetableSearcher = {
+ [key in 'search-driver' | 'search-train']: string;
+};