diff --git a/package.json b/package.json index 0c4834d..a1b275d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stacjownik", - "version": "1.18.3", + "version": "1.18.4", "private": true, "scripts": { "dev": "vite", diff --git a/src/components/Global/StationStatusBadge.vue b/src/components/Global/StationStatusBadge.vue index ea4cc55..7624045 100644 --- a/src/components/Global/StationStatusBadge.vue +++ b/src/components/Global/StationStatusBadge.vue @@ -23,6 +23,9 @@ export default defineComponent({ dispatcherStatus: { type: Number as PropType }, + dispatcherTimestamp: { + type: Number as PropType + }, isOnline: { type: Boolean } @@ -59,7 +62,9 @@ export default defineComponent({ return 'unknown'; default: - if (this.dispatcherStatus >= Date.now() + 25500000) return 'no-limit'; + if (this.dispatcherTimestamp != null && this.dispatcherStatus >= Date.now() + 25500000) + return 'no-limit'; + return 'online'; } } diff --git a/src/components/SceneryView/SceneryInfo/SceneryInfoDispatcher.vue b/src/components/SceneryView/SceneryInfo/SceneryInfoDispatcher.vue index 8fca022..daba48c 100644 --- a/src/components/SceneryView/SceneryInfo/SceneryInfoDispatcher.vue +++ b/src/components/SceneryView/SceneryInfo/SceneryInfoDispatcher.vue @@ -24,6 +24,7 @@ diff --git a/src/components/TrainsView/TrainTable.vue b/src/components/TrainsView/TrainTable.vue index 81ee5a7..e821aaf 100644 --- a/src/components/TrainsView/TrainTable.vue +++ b/src/components/TrainsView/TrainTable.vue @@ -52,7 +52,7 @@ export default defineComponent({ mixins: [modalTrainMixin], - setup(props) { + setup() { const store = useStore(); const searchedTrain = inject('searchedTrain') as Ref; const searchedDriver = inject('searchedDriver') as Ref; diff --git a/src/scripts/utils/filterUtils.ts b/src/scripts/utils/filterUtils.ts index 95272be..f669c9e 100644 --- a/src/scripts/utils/filterUtils.ts +++ b/src/scripts/utils/filterUtils.ts @@ -3,6 +3,17 @@ import { Status } from '../../typings/common'; import { HeadIdsTypes } from '../data/stationHeaderNames'; import Station from '../interfaces/Station'; +const dispatcherStatusPriority = [ + Status.ActiveDispatcher.UNKNOWN, + Status.ActiveDispatcher.INVALID, + Status.ActiveDispatcher.NOT_LOGGED_IN, + Status.ActiveDispatcher.UNAVAILABLE, + Status.ActiveDispatcher.AFK, + Status.ActiveDispatcher.ENDING, + Status.ActiveDispatcher.NO_SPACE, + undefined +]; + export const sortStations = ( a: Station, b: Station, @@ -19,7 +30,11 @@ export const sortStations = ( break; case 'status': - diff = (a.onlineInfo?.dispatcherStatus || 0) - (b.onlineInfo?.dispatcherStatus || 0); + diff = + (a.onlineInfo?.dispatcherTimestamp ?? + dispatcherStatusPriority.indexOf(a.onlineInfo?.dispatcherStatus)) - + (b.onlineInfo?.dispatcherTimestamp ?? + dispatcherStatusPriority.indexOf(b.onlineInfo?.dispatcherStatus)); break; case 'dispatcher': diff --git a/src/store/mainStore.ts b/src/store/mainStore.ts index 2756f67..60c4eba 100644 --- a/src/store/mainStore.ts +++ b/src/store/mainStore.ts @@ -138,6 +138,13 @@ export const useStore = defineStore('store', { [] as ScheduledTrain[] ); + const dispatcherTimestamp = + scenery.dispatcherStatus == Status.ActiveDispatcher.NO_LIMIT + ? Date.now() + 25500000 + : scenery.dispatcherStatus > 5 + ? scenery.dispatcherStatus + : null; + list.push({ name: scenery.stationName, hash: scenery.stationHash, @@ -153,6 +160,7 @@ export const useStore = defineStore('store', { scheduledTrains: scheduledTrains, stationTrains: stationTrains, dispatcherStatus: scenery.dispatcherStatus, + dispatcherTimestamp: dispatcherTimestamp, isOnline: scenery.isOnline == 1, diff --git a/src/store/typings.ts b/src/store/typings.ts index 543c153..e145fc2 100644 --- a/src/store/typings.ts +++ b/src/store/typings.ts @@ -105,6 +105,7 @@ export interface OnlineScenery { dispatcherIsSupporter: boolean; dispatcherStatus: Status.ActiveDispatcher | number; + dispatcherTimestamp: number | null; isOnline: boolean;