Poprawki statusów danych

This commit is contained in:
2022-02-09 22:27:07 +01:00
parent 75308f97f8
commit 7066977f23
9 changed files with 30 additions and 13 deletions
+7
View File
@@ -242,6 +242,13 @@ export default defineComponent({
return; return;
} }
if (timetableDataStatus == DataStatus.Loading) {
this.setSignalStatus(timetableDataStatus);
this.indicator.status = timetableDataStatus;
this.indicator.message = 'Ładowanie rozkładów jazdy...';
return;
}
this.setSignalStatus(DataStatus.Loaded); this.setSignalStatus(DataStatus.Loaded);
this.indicator.status = DataStatus.Loaded; this.indicator.status = DataStatus.Loaded;
+6 -3
View File
@@ -1,16 +1,16 @@
<template> <template>
<div class="train-table" @keydown.esc="closeTimetableCard"> <div class="train-table" @keydown.esc="closeTimetableCard">
<transition name="anim" mode="out-in"> <transition name="anim" mode="out-in">
<div :key="timetableLoaded"> <div :key="trainsDataStatus">
<div class="traffic-warning" v-if="distanceLimitExceeded"> <div class="traffic-warning" v-if="distanceLimitExceeded">
{{ $t('trains.distance-exceeded') }} {{ $t('trains.distance-exceeded') }}
</div> </div>
<div class="table-info no-trains" v-if="trains.length == 0 && timetableLoaded"> <div class="table-info no-trains" v-if="trains.length == 0 && trainsDataStatus == 2">
{{ $t('trains.no-trains') }} {{ $t('trains.no-trains') }}
</div> </div>
<div class="table-info loading" v-if="trains.length == 0 && !timetableLoaded"> <div class="table-info loading" v-if="trains.length == 0 && trainsDataStatus == 0">
{{ $t('trains.loading') }} {{ $t('trains.loading') }}
</div> </div>
@@ -81,6 +81,7 @@ export default defineComponent({
const store = useStore(); const store = useStore();
const timetableDataStatus: ComputedRef<DataStatus> = computed(() => store.getters[GETTERS.timetableDataStatus]); const timetableDataStatus: ComputedRef<DataStatus> = computed(() => store.getters[GETTERS.timetableDataStatus]);
const trainsDataStatus: ComputedRef<DataStatus> = computed(() => store.getters[GETTERS.trainsDataStatus]);
const searchedTrain = inject('searchedTrain') as Ref<string>; const searchedTrain = inject('searchedTrain') as Ref<string>;
const searchedDriver = inject('searchedDriver') as Ref<string>; const searchedDriver = inject('searchedDriver') as Ref<string>;
@@ -106,7 +107,9 @@ export default defineComponent({
currentTrains, currentTrains,
sorterActive: inject('sorterActive') as { id: string | number; dir: number }, sorterActive: inject('sorterActive') as { id: string | number; dir: number },
trainsDataStatus: computed(() => trainsDataStatus.value),
timetableLoaded: computed(() => timetableDataStatus.value === DataStatus.Loaded), timetableLoaded: computed(() => timetableDataStatus.value === DataStatus.Loaded),
timetableWarning: computed(() => timetableDataStatus.value === DataStatus.Warning),
timetableError: computed(() => timetableDataStatus.value === DataStatus.Error), timetableError: computed(() => timetableDataStatus.value === DataStatus.Error),
distanceLimitExceeded: computed( distanceLimitExceeded: computed(
() => props.trains.findIndex(({ timetableData }) => timetableData && timetableData.routeDistance > 200) != -1 () => props.trains.findIndex(({ timetableData }) => timetableData && timetableData.routeDistance > 200) != -1
+1 -1
View File
@@ -27,7 +27,7 @@ export const GETTERS = {
timetableDataStatus: "timetableDataStatus", timetableDataStatus: "timetableDataStatus",
sceneryDataStatus: "sceneryDataStatus", sceneryDataStatus: "sceneryDataStatus",
dispatcherDataStatus: "dispatcherDataStatus", dispatcherDataStatus: "dispatcherDataStatus",
trainsDataStatus: "trainDataStatus", trainsDataStatus: "trainsDataStatus",
dataStatus: "dataStatus", dataStatus: "dataStatus",
currentRegion: "currentRegion" currentRegion: "currentRegion"
+2 -1
View File
@@ -47,7 +47,8 @@
"no-limit": "NO LIMIT", "no-limit": "NO LIMIT",
"unavailable": "UNAVAILABLE", "unavailable": "UNAVAILABLE",
"brb": "AFK", "brb": "AFK",
"no-space": "NO SPACE" "no-space": "NO SPACE",
"unknown": "UNKNOWN"
}, },
"options": { "options": {
"filters": "FILTERS", "filters": "FILTERS",
+2 -1
View File
@@ -47,7 +47,8 @@
"no-limit": "BEZ LIMITU", "no-limit": "BEZ LIMITU",
"unavailable": "NIEDOSTĘPNY", "unavailable": "NIEDOSTĘPNY",
"brb": "Z/W", "brb": "Z/W",
"no-space": "BRAK MIEJSCA" "no-space": "BRAK MIEJSCA",
"unknown": "NIEZNANY"
}, },
"options": { "options": {
"filters": "FILTRY", "filters": "FILTRY",
+2 -1
View File
@@ -5,6 +5,7 @@ export const getLocoURL = (locoType: string): string => (`https://rj.td2.info.pl
export const getStatusID = (stationStatus: any): string => { export const getStatusID = (stationStatus: any): string => {
if (!stationStatus) return "not-signed"; if (!stationStatus) return "not-signed";
if (stationStatus == -1) return "unknown";
const statusCode = stationStatus[2]; const statusCode = stationStatus[2];
const statusTimestamp = stationStatus[3]; const statusTimestamp = stationStatus[3];
@@ -33,7 +34,7 @@ export const getStatusID = (stationStatus: any): string => {
}; };
export const getStatusTimestamp = (stationStatus: any): number => { export const getStatusTimestamp = (stationStatus: any): number => {
if (!stationStatus) return -2; if (!stationStatus || stationStatus == -1) return -2;
const statusCode = stationStatus[2]; const statusCode = stationStatus[2];
const statusTimestamp = stationStatus[3]; const statusTimestamp = stationStatus[3];
+3 -3
View File
@@ -5,8 +5,6 @@ import { createStore, useStore as baseUseStore, Store } from 'vuex'
import axios from "axios"; import axios from "axios";
// import JSONStationData from "@/data/stationData.json";
import Station from "@/scripts/interfaces/Station"; import Station from "@/scripts/interfaces/Station";
import Train from "@/scripts/interfaces/Train"; import Train from "@/scripts/interfaces/Train";
import TrainStop from "@/scripts/interfaces/TrainStop"; import TrainStop from "@/scripts/interfaces/TrainStop";
@@ -90,6 +88,7 @@ export const store = createStore<State>({
}), }),
timetableDataStatus: (state): DataStatus => state.timetableDataStatus, timetableDataStatus: (state): DataStatus => state.timetableDataStatus,
sceneryDataStatus: (state): DataStatus => state.sceneryDataStatus, sceneryDataStatus: (state): DataStatus => state.sceneryDataStatus,
trainsDataStatus: (state): DataStatus => state.trainsDataStatus,
dataStatus: (state): DataStatus => state.dataConnectionStatus, dataStatus: (state): DataStatus => state.dataConnectionStatus,
currentRegion: (state): { id: string; value: string } => state.region currentRegion: (state): { id: string; value: string } => state.region
}, },
@@ -131,7 +130,7 @@ export const store = createStore<State>({
const updatedStationList: Station['onlineInfo'][] = onlineStationsData.message.reduce((acc, station) => { const updatedStationList: Station['onlineInfo'][] = onlineStationsData.message.reduce((acc, station) => {
if (station.region !== this.state.region.id || !station.isOnline) return acc; if (station.region !== this.state.region.id || !station.isOnline) return acc;
const stationStatus = onlineDispatchersData.success ? onlineDispatchersData.message.find((status: string[]) => status[0] == station.stationHash && status[1] == this.state.region.id) : undefined; const stationStatus = onlineDispatchersData.success ? onlineDispatchersData.message.find((status: string[]) => status[0] == station.stationHash && status[1] == this.state.region.id) : -1;
const statusTimestamp = getStatusTimestamp(stationStatus); const statusTimestamp = getStatusTimestamp(stationStatus);
const statusID = getStatusID(stationStatus); const statusID = getStatusID(stationStatus);
@@ -193,6 +192,7 @@ export const store = createStore<State>({
// Statuses // Statuses
commit(MUTATIONS.SET_DATA_CONNECTION_STATUS, DataStatus.Loaded); commit(MUTATIONS.SET_DATA_CONNECTION_STATUS, DataStatus.Loaded);
// commit(MUTATIONS.SET_TIMETABLE_DATA_STATUS, DataStatus.Loading);
dispatch(ACTIONS.fetchTimetableData); dispatch(ACTIONS.fetchTimetableData);
}) })
.catch(() => { .catch(() => {
+6
View File
@@ -5,6 +5,7 @@ $unav: #ff3d5d;
$brb: #e6a100; $brb: #e6a100;
$no-space: #222; $no-space: #222;
$taken: #09a116; $taken: #09a116;
$unknown: rgb(185, 60, 60);
.status-badge { .status-badge {
border-radius: 1rem; border-radius: 1rem;
@@ -47,4 +48,9 @@ $taken: #09a116;
color: white; color: white;
font-size: 0.85em; font-size: 0.85em;
} }
&.unknown {
background-color: $unknown;
font-size: 0.95em;
}
} }
-2
View File
@@ -129,8 +129,6 @@ export default defineComponent({
provide('sorterActive', sorterActive); provide('sorterActive', sorterActive);
const computedTrains: ComputedRef<Train[]> = computed(() => { const computedTrains: ComputedRef<Train[]> = computed(() => {
if (timetableDataStatus.value != DataStatus.Loaded) return [];
return filteredTrainList(trainList.value, searchedTrain.value, searchedDriver.value, sorterActive.value); return filteredTrainList(trainList.value, searchedTrain.value, searchedDriver.value, sorterActive.value);
}); });