mirror of
https://github.com/Spythere/srjp-td2.git
synced 2026-05-03 13:38:12 +00:00
feat/restruct: saving timetables to local storage
This commit is contained in:
@@ -1,12 +1,18 @@
|
||||
import { defineStore } from 'pinia';
|
||||
import { useApiStore } from './api.store';
|
||||
import type { ActiveTrain } from '../types/common.types';
|
||||
import type { ActiveTrain, TimetableData, ViewMode } from '../types/common.types';
|
||||
import { unitNameCorrections } from '../utils/trainUtils';
|
||||
|
||||
export const useGlobalStore = defineStore('global', {
|
||||
state: () => ({
|
||||
darkMode: false,
|
||||
viewMode: 'active' as ViewMode,
|
||||
|
||||
selectedActiveTrain: null as ActiveTrain | null,
|
||||
selectedStorageTimetable: null as TimetableData | null,
|
||||
|
||||
storageTimetables: {} as Record<number, TimetableData>,
|
||||
|
||||
selectedTrain: null as ActiveTrain | null,
|
||||
generatedDate: null as Date | null,
|
||||
generatedMs: 0,
|
||||
}),
|
||||
@@ -18,6 +24,51 @@ export const useGlobalStore = defineStore('global', {
|
||||
|
||||
return apiStore.activeData.trains.filter((train) => train.timetable).sort((t1, t2) => t1.driverName.localeCompare(t2.driverName, 'pl-PL'));
|
||||
},
|
||||
|
||||
currentTimetableData(): TimetableData | null {
|
||||
if (this.viewMode == 'active') {
|
||||
const selectedTrain = this.selectedActiveTrain;
|
||||
|
||||
if (!selectedTrain || !selectedTrain.timetable) return null;
|
||||
|
||||
return {
|
||||
trainNo: selectedTrain.trainNo,
|
||||
mass: selectedTrain.mass,
|
||||
length: selectedTrain.length,
|
||||
driverId: selectedTrain.driverId,
|
||||
driverName: selectedTrain.driverName,
|
||||
category: selectedTrain.timetable.category,
|
||||
hasDangerousCargo: selectedTrain.timetable.hasDangerousCargo,
|
||||
hasExtraDeliveries: selectedTrain.timetable.hasExtraDeliveries,
|
||||
warningNotes: selectedTrain.timetable.warningNotes,
|
||||
path: selectedTrain.timetable.path,
|
||||
route: selectedTrain.timetable.route,
|
||||
trainMaxSpeed: selectedTrain.timetable.trainMaxSpeed,
|
||||
timetableId: selectedTrain.timetable.timetableId,
|
||||
stopListString: selectedTrain.timetable.stopList
|
||||
.filter((stop) => stop.mainStop || (/^podg|po|pe$/.test(stop.stopNameRAW) && !/^sbl/i.test(stop.stopNameRAW)))
|
||||
.map(
|
||||
(stop) =>
|
||||
`${stop.arrivalLine ?? ''};${stop.arrivalTimestamp};${stop.stopNameRAW};${stop.stopTime ? stop.stopTime + '_' + stop.stopType : ''};${
|
||||
stop.mainStop
|
||||
};${stop.stopDistance};${stop.departureTimestamp};${stop.departureLine ?? ''}`
|
||||
)
|
||||
.join('~~'),
|
||||
headUnits: selectedTrain.stockString
|
||||
.split(';')
|
||||
.slice(0, 3)
|
||||
.filter((s, i) => i == 0 || /-\d+$/.test(s))
|
||||
.map((s) => {
|
||||
const unitName = s.slice(0, s.indexOf('-'));
|
||||
|
||||
return unitNameCorrections[unitName] ?? unitName;
|
||||
}),
|
||||
};
|
||||
} else {
|
||||
const selectedStorageTimetable = this.selectedStorageTimetable;
|
||||
return selectedStorageTimetable;
|
||||
}
|
||||
},
|
||||
},
|
||||
actions: {},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user