diff --git a/src/components/StationsView/StationTable.vue b/src/components/StationsView/StationTable.vue
index c381e85..bdb5312 100644
--- a/src/components/StationsView/StationTable.vue
+++ b/src/components/StationsView/StationTable.vue
@@ -64,7 +64,7 @@
!station.generalInfo.nonPublic &&
!station.generalInfo.unavailable
"
- :style="calculateExpStyle(station.generalInfo.reqLevel, station.generalInfo.supportersOnly)"
+ :style="calculateExpStyle(station.generalInfo.reqLevel)"
>
{{ station.generalInfo.reqLevel >= 2 ? station.generalInfo.reqLevel : 'L' }}
@@ -109,43 +109,43 @@
- {{ station.generalInfo.routes.twoWay.catenary }}
+ {{ station.generalInfo.routes.twoWayCatenaryRouteNames.length }}
- {{ station.generalInfo.routes.twoWay.noCatenary }}
+ {{ station.generalInfo.routes.twoWayNoCatenaryRouteNames.length }}
- {{ station.generalInfo.routes.oneWay.catenary }}
+ {{ station.generalInfo.routes.oneWayCatenaryRouteNames.length }}
- {{ station.generalInfo.routes.oneWay.noCatenary }}
+ {{ station.generalInfo.routes.oneWayNoCatenaryRouteNames.length }}
|
@@ -175,10 +175,10 @@
/>
@@ -296,11 +296,11 @@ export default defineComponent({
},
openForumSite(e: Event, url: string | undefined) {
- if(!url) return;
+ if (!url) return;
- e.preventDefault();
- window.open(url, '_blank');
- }
+ e.preventDefault();
+ window.open(url, '_blank');
+ },
},
});
diff --git a/src/scripts/interfaces/Station.ts b/src/scripts/interfaces/Station.ts
index 6265180..091bbda 100644
--- a/src/scripts/interfaces/Station.ts
+++ b/src/scripts/interfaces/Station.ts
@@ -1,4 +1,5 @@
import ScheduledTrain from "./ScheduledTrain";
+import StationRoutes from "./StationRoutes";
export default interface Station {
name: string;
@@ -8,13 +9,11 @@ export default interface Station {
url: string;
reqLevel: number;
- supportersOnly: boolean;
+ // supportersOnly: boolean;
lines: string;
project: string;
- SBL: string;
- TWB: string;
signalType: string;
controlType: string;
@@ -24,17 +23,14 @@ export default interface Station {
nonPublic: boolean;
unavailable: boolean;
- routes: {
- oneWay: { catenary: number; noCatenary: number };
- twoWay: { catenary: number; noCatenary: number };
- };
+ routes: StationRoutes;
checkpoints: {
checkpointName: string;
scheduledTrains: ScheduledTrain[];
}[];
};
-
+
onlineInfo?: {
hash: string;
name: string;
@@ -42,23 +38,23 @@ export default interface Station {
maxUsers: number;
currentUsers: number;
- spawns: { spawnName: string; spawnLength: number }[];
+ spawns: { spawnName: string; spawnLength: number }[];
dispatcherRate: number;
dispatcherName: string;
dispatcherExp: number;
dispatcherId: number;
dispatcherIsSupporter: boolean;
-
+
statusTimestamp: number;
statusTimeString: string;
statusID: string;
-
+
stationTrains?: {
driverName: string;
trainNo: number;
stopStatus?: string;
}[];
-
+
scheduledTrains?: ScheduledTrain[];
}
diff --git a/src/scripts/interfaces/StationRoutes.ts b/src/scripts/interfaces/StationRoutes.ts
new file mode 100644
index 0000000..662329a
--- /dev/null
+++ b/src/scripts/interfaces/StationRoutes.ts
@@ -0,0 +1,23 @@
+export default interface StationRoutes {
+ oneWay:
+ {
+ name: string;
+ catenary: boolean;
+ SBL: boolean;
+ TWB: boolean
+ }[];
+
+ twoWay: {
+ name: string;
+ catenary: boolean;
+ SBL: boolean;
+ TWB: boolean
+ }[];
+
+ /* [catenary, noCatenary] */
+ oneWayCatenaryRouteNames: string[];
+ oneWayNoCatenaryRouteNames: string[];
+ twoWayCatenaryRouteNames: string[];
+ twoWayNoCatenaryRouteNames: string[];
+ sblRouteNames: string[];
+}
\ No newline at end of file
diff --git a/src/scripts/managers/stationFilterManager.ts b/src/scripts/managers/stationFilterManager.ts
index 253bd57..89c5734 100644
--- a/src/scripts/managers/stationFilterManager.ts
+++ b/src/scripts/managers/stationFilterManager.ts
@@ -77,26 +77,25 @@ const filterStations = (station: Station, filters: Filter) => {
if (station.generalInfo?.unavailable && filters['unavailable']) return returnMode;
if (station.generalInfo) {
+ const routes = station.generalInfo.routes;
+
if (station.generalInfo.default && filters['default']) return returnMode;
if (!station.generalInfo.default && filters['notDefault']) return returnMode;
if (filters['real'] && station.generalInfo.lines != '') return returnMode;
if (filters['fictional'] && station.generalInfo.lines == '') return returnMode;
- // if (station.generalInfo.reqLevel == -1) return true;
- // if (station.generalInfo.reqLevel == -1 && filters['minLevel'] == 0) return true;
-
if (station.generalInfo.reqLevel + ((station.generalInfo.nonPublic || station.generalInfo.unavailable) ? 1 : 0) < filters['minLevel']) return returnMode;
if (station.generalInfo.reqLevel + ((station.generalInfo.nonPublic || station.generalInfo.unavailable) ? 1 : 0) > filters['maxLevel']) return returnMode;
- if (filters['no-1track'] && (station.generalInfo.routes.oneWay.catenary != 0 || station.generalInfo.routes.oneWay.noCatenary != 0)) return returnMode;
- if (filters['no-2track'] && (station.generalInfo.routes.twoWay.catenary != 0 || station.generalInfo.routes.twoWay.noCatenary != 0)) return returnMode;
+ if (filters['no-1track'] && (routes.oneWayCatenaryRouteNames.length != 0 || routes.oneWayNoCatenaryRouteNames.length != 0)) return returnMode;
+ if (filters['no-2track'] && (routes.twoWayCatenaryRouteNames.length != 0 || routes.twoWayNoCatenaryRouteNames.length != 0)) return returnMode;
- if (station.generalInfo.routes.oneWay.catenary < filters['minOneWayCatenary']) return returnMode;
- if (station.generalInfo.routes.oneWay.noCatenary < filters['minOneWay']) return returnMode;
+ if (routes.oneWayCatenaryRouteNames.length < filters['minOneWayCatenary']) return returnMode;
+ if (routes.oneWayNoCatenaryRouteNames.length < filters['minOneWay']) return returnMode;
- if (station.generalInfo.routes.twoWay.catenary < filters['minTwoWayCatenary']) return returnMode;
- if (station.generalInfo.routes.twoWay.noCatenary < filters['minTwoWay']) return returnMode;
+ if (routes.twoWayCatenaryRouteNames.length < filters['minTwoWayCatenary']) return returnMode;
+ if (routes.twoWayNoCatenaryRouteNames.length < filters['minTwoWay']) return returnMode;
if (filters[station.generalInfo.controlType]) return returnMode;
if (filters[station.generalInfo.signalType]) return returnMode;
@@ -112,7 +111,7 @@ const filterStations = (station: Station, filters: Filter) => {
if (filters['ręczne'] && station.generalInfo.controlType.includes('ręczne')) return returnMode;
- if (filters['SBL'] && station.generalInfo.SBL) return returnMode;
+ if (filters['SBL'] && routes.sblRouteNames.length > 0) return returnMode;
}
return true;
diff --git a/src/scripts/utils/apiURLs.ts b/src/scripts/utils/apiURLs.ts
index 1279798..be84faf 100644
--- a/src/scripts/utils/apiURLs.ts
+++ b/src/scripts/utils/apiURLs.ts
@@ -1,5 +1,5 @@
export const URLs = {
- sceneryData: "https://spythere.github.io/api/stationDataDev.json",
+ sceneryData: "https://spythere.github.io/api/stationDataNew.json",
sceneryDataDev: "http://127.0.0.1:8000/data",
stations: "https://api.td2.info.pl:9640/?method=getStationsOnline",
trains: "https://api.td2.info.pl:9640/?method=getTrainsOnline",
diff --git a/src/store/index.ts b/src/store/index.ts
index 8c58626..36e3c6d 100644
--- a/src/store/index.ts
+++ b/src/store/index.ts
@@ -22,6 +22,7 @@ import { DataStatus } from "@/scripts/enums/DataStatus";
import { getLocoURL, getStatusID, getStatusTimestamp, getTimestamp, getTrainStopStatus, parseSpawns, timestampToString } from "@/scripts/utils/storeUtils";
import { URLs } from '@/scripts/utils/apiURLs';
import ScheduledTrain from '@/scripts/interfaces/ScheduledTrain';
+import StationRoutes from '@/scripts/interfaces/StationRoutes';
export interface State {
stationList: Station[],
@@ -52,27 +53,14 @@ interface StationJSONData {
reqLevel: number;
- supportersOnly: boolean;
+ // supportersOnly: boolean;
signalType: string;
controlType: string;
SUP: boolean;
- SBL: string;
- TWB: string;
-
- routes: {
- oneWay: {
- catenary: number;
- noCatenary: number;
- };
- twoWay: {
- catenary: number;
- noCatenary: number;
- }
- };
-
+ routes: string;
checkpoints: string | null;
default: boolean;
@@ -351,11 +339,44 @@ export const store = createStore({
mutations: {
SET_SCENERY_DATA(state, data: StationJSONData[]) {
+
state.stationList = data.map(stationData => ({
name: stationData.name,
generalInfo: {
...stationData,
+ routes: stationData.routes?.split(";").filter(routeString => routeString).reduce((acc, routeString) => {
+ const name = routeString.split("_")[0];
+ const specs = routeString.split("_")[1].split("");
+
+ const twoWay = specs[0] == "2";
+ const catenary = specs[1] == "E";
+ const SBL = specs[2] == "S";
+ const TWB = specs[3] ? true : false;
+
+ const propName = twoWay
+ ? catenary
+ ? 'twoWayCatenaryRouteNames'
+ : 'twoWayNoCatenaryRouteNames'
+ : catenary
+ ? 'oneWayCatenaryRouteNames'
+ : 'oneWayNoCatenaryRouteNames';
+
+ acc[twoWay ? 'twoWay' : 'oneWay'].push({ name, SBL, TWB, catenary });
+ acc[propName].push(name);
+
+ if (SBL) acc['sblRouteNames'].push(name);
+
+ return acc;
+ }, {
+ oneWay: [],
+ twoWay: [],
+ sblRouteNames: [],
+ oneWayCatenaryRouteNames: [],
+ oneWayNoCatenaryRouteNames: [],
+ twoWayCatenaryRouteNames: [],
+ twoWayNoCatenaryRouteNames: []
+ } as StationRoutes) || {},
checkpoints: stationData.checkpoints ? stationData.checkpoints.split(";").map(sub => ({ checkpointName: sub, scheduledTrains: [] })) : [],
}
}));