From 8bedc4dfc62dba4374c3f02b9308a723052b8dad Mon Sep 17 00:00:00 2001 From: Spythere Date: Sat, 11 Feb 2023 03:08:24 +0100 Subject: [PATCH 01/12] =?UTF-8?q?feature:=20vmax=20szlak=C3=B3w?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SceneryInfo/SceneryInfoRoutes.vue | 220 +++++++++--------- src/components/TrainsView/TrainSchedule.vue | 4 + src/scripts/interfaces/StationRoutes.ts | 57 ++--- src/scripts/interfaces/Train.ts | 2 +- src/scripts/interfaces/TrainStop.ts | 2 +- src/store/store.ts | 118 +++++----- src/store/storeTypes.ts | 3 +- 7 files changed, 207 insertions(+), 199 deletions(-) diff --git a/src/components/SceneryView/SceneryInfo/SceneryInfoRoutes.vue b/src/components/SceneryView/SceneryInfo/SceneryInfoRoutes.vue index 50ef6f0..ee1fda2 100644 --- a/src/components/SceneryView/SceneryInfo/SceneryInfoRoutes.vue +++ b/src/components/SceneryView/SceneryInfo/SceneryInfoRoutes.vue @@ -1,114 +1,106 @@ - - - - - + + + + + diff --git a/src/components/TrainsView/TrainSchedule.vue b/src/components/TrainsView/TrainSchedule.vue index e8fe839..29b9d86 100644 --- a/src/components/TrainsView/TrainSchedule.vue +++ b/src/components/TrainsView/TrainSchedule.vue @@ -89,6 +89,7 @@ import dateMixin from '../../mixins/dateMixin'; import imageMixin from '../../mixins/imageMixin'; import Train from '../../scripts/interfaces/Train'; import TrainStop from '../../scripts/interfaces/TrainStop'; +import { useStore } from '../../store/store'; import StopDate from '../Global/StopDate.vue'; export default defineComponent({ @@ -106,6 +107,8 @@ export default defineComponent({ setup(props) { return { + store: useStore(), + lastConfirmed: computed(() => { return props.train.timetableData!.followingStops.findIndex( (stop, i, stops) => stop.confirmed && !stops[i + 1]?.confirmed && !stops[i + 1]?.stopped @@ -424,3 +427,4 @@ ul.stop_list > li.stop { } } + diff --git a/src/scripts/interfaces/StationRoutes.ts b/src/scripts/interfaces/StationRoutes.ts index 434c343..b7587ac 100644 --- a/src/scripts/interfaces/StationRoutes.ts +++ b/src/scripts/interfaces/StationRoutes.ts @@ -1,27 +1,30 @@ -export default interface StationRoutes { - oneWay: - { - name: string; - catenary: boolean; - SBL: boolean; - TWB: boolean; - isInternal: boolean; - tracks: number; - }[]; - - twoWay: { - name: string; - catenary: boolean; - SBL: boolean; - TWB: boolean; - isInternal: boolean; - tracks: number; - }[]; - - /* [catenary, noCatenary] */ - oneWayCatenaryRouteNames: string[]; - oneWayNoCatenaryRouteNames: string[]; - twoWayCatenaryRouteNames: string[]; - twoWayNoCatenaryRouteNames: string[]; - sblRouteNames: string[]; -} \ No newline at end of file +export default interface StationRoutes { + oneWay: { + name: string; + catenary: boolean; + SBL: boolean; + TWB: boolean; + isInternal: boolean; + tracks: number; + speed: number; + length: number; + }[]; + + twoWay: { + name: string; + catenary: boolean; + SBL: boolean; + TWB: boolean; + isInternal: boolean; + tracks: number; + speed: number; + length: number; + }[]; + + /* [catenary, noCatenary] */ + oneWayCatenaryRouteNames: string[]; + oneWayNoCatenaryRouteNames: string[]; + twoWayCatenaryRouteNames: string[]; + twoWayNoCatenaryRouteNames: string[]; + sblRouteNames: string[]; +} diff --git a/src/scripts/interfaces/Train.ts b/src/scripts/interfaces/Train.ts index b4e4dfb..8c46386 100644 --- a/src/scripts/interfaces/Train.ts +++ b/src/scripts/interfaces/Train.ts @@ -12,7 +12,7 @@ export default interface Train { driverId: number; trainNo: number; driverName: string; - driverLevel: number; + driverLevel?: number; currentStationName: string; currentStationHash: string; locoURL: string; diff --git a/src/scripts/interfaces/TrainStop.ts b/src/scripts/interfaces/TrainStop.ts index 7062d13..3572504 100644 --- a/src/scripts/interfaces/TrainStop.ts +++ b/src/scripts/interfaces/TrainStop.ts @@ -1,4 +1,4 @@ -export default interface TrainStop { +export default interface TrainStop { stopName: string; stopNameRAW: string; stopType: string; diff --git a/src/store/store.ts b/src/store/store.ts index b72cdc8..ac12b04 100644 --- a/src/store/store.ts +++ b/src/store/store.ts @@ -24,6 +24,7 @@ export const useStore = defineStore('store', { stationList: [], trainList: [], + routesList: [], sceneryData: [], lastDispatcherStatuses: [], @@ -115,8 +116,8 @@ export const useStore = defineStore('store', { sceneries: timetable.sceneries, } : undefined, - }; - }) as Train[]; + } as Train; + }); }, getDispatcherStatus(onlineStationData: StationAPIData) { @@ -294,65 +295,72 @@ export const useStore = defineStore('store', { return; } - this.stationList = sceneryData.map((scenery) => ({ - name: scenery.name, + this.stationList = sceneryData.map((scenery) => { + return { + name: scenery.name, - generalInfo: { - ...scenery, - authors: scenery.authors?.split(',').map((a) => a.trim()), - routes: - scenery.routes - ?.split(';') - .filter((routeString) => routeString) - .reduce( - (acc, routeString) => { - const specs1 = routeString.split('_')[0]; - const isInternal = specs1.startsWith('!'); - const name = isInternal ? specs1.replace('!', '') : specs1; + generalInfo: { + ...scenery, + authors: scenery.authors?.split(',').map((a) => a.trim()), + routes: + scenery.routes + ?.split(';') + .filter((routeString) => routeString) + .reduce( + (acc, routeString) => { + const specs1 = routeString.split('_')[0]; + const isInternal = specs1.startsWith('!'); + const name = isInternal ? specs1.replace('!', '') : specs1; - const specs2 = routeString.split('_')[1].split(''); - const twoWay = specs2[0] == '2'; - const catenary = specs2[1] == 'E'; - const SBL = specs2[2] == 'S'; - const TWB = specs2[3] ? true : false; + const specs2 = routeString.split('_')[1].split(''); + const twoWay = specs2[0] == '2'; + const catenary = specs2[1] == 'E'; + const SBL = specs2[2] == 'S'; + const TWB = specs2[3] ? true : false; + const speed = Number(routeString.split(':')[1]) || 0; + const length = Number(routeString.split(':')[2]) || 0; - const propName = twoWay - ? catenary - ? 'twoWayCatenaryRouteNames' - : 'twoWayNoCatenaryRouteNames' - : catenary - ? 'oneWayCatenaryRouteNames' - : 'oneWayNoCatenaryRouteNames'; - acc[twoWay ? 'twoWay' : 'oneWay'].push({ - name, - SBL, - TWB, - catenary, - isInternal, - tracks: twoWay ? 2 : 1, - }); - if (!isInternal) acc[propName].push(name); + const propName = twoWay + ? catenary + ? 'twoWayCatenaryRouteNames' + : 'twoWayNoCatenaryRouteNames' + : catenary + ? 'oneWayCatenaryRouteNames' + : 'oneWayNoCatenaryRouteNames'; - if (SBL) acc['sblRouteNames'].push(name); + acc[twoWay ? 'twoWay' : 'oneWay'].push({ + name, + SBL, + TWB, + catenary, + isInternal, + tracks: twoWay ? 2 : 1, + length, + speed, + }); + if (!isInternal) acc[propName].push(name); - return acc; - }, - { - oneWay: [], - twoWay: [], - sblRouteNames: [], - oneWayCatenaryRouteNames: [], - oneWayNoCatenaryRouteNames: [], - twoWayCatenaryRouteNames: [], - twoWayNoCatenaryRouteNames: [], - } as StationRoutes - ) || {}, - checkpoints: scenery.checkpoints - ? scenery.checkpoints.split(';').map((sub) => ({ checkpointName: sub, scheduledTrains: [] })) - : [], - }, - })); + if (SBL) acc['sblRouteNames'].push(name); + + return acc; + }, + { + oneWay: [], + twoWay: [], + sblRouteNames: [], + oneWayCatenaryRouteNames: [], + oneWayNoCatenaryRouteNames: [], + twoWayCatenaryRouteNames: [], + twoWayNoCatenaryRouteNames: [], + } as StationRoutes + ) || {}, + checkpoints: scenery.checkpoints + ? scenery.checkpoints.split(';').map((sub) => ({ checkpointName: sub, scheduledTrains: [] })) + : [], + }, + }; + }); }, connectToWebsocket() { diff --git a/src/store/storeTypes.ts b/src/store/storeTypes.ts index 632ef84..d06fef5 100644 --- a/src/store/storeTypes.ts +++ b/src/store/storeTypes.ts @@ -69,8 +69,9 @@ export interface StationJSONData { SUP: boolean; routes: string; + checkpoints: string | null; authors?: string; availability: Availability; -} +} \ No newline at end of file From e959eac6c541ff696ebfd8d7079489c4d6df2507 Mon Sep 17 00:00:00 2001 From: Spythere Date: Sat, 11 Feb 2023 03:14:43 +0100 Subject: [PATCH 02/12] hotfix --- src/scripts/interfaces/Train.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/interfaces/Train.ts b/src/scripts/interfaces/Train.ts index 8c46386..b4e4dfb 100644 --- a/src/scripts/interfaces/Train.ts +++ b/src/scripts/interfaces/Train.ts @@ -12,7 +12,7 @@ export default interface Train { driverId: number; trainNo: number; driverName: string; - driverLevel?: number; + driverLevel: number; currentStationName: string; currentStationHash: string; locoURL: string; From 2f6e2e740236f322bbe25aeb37d141d87270dfb6 Mon Sep 17 00:00:00 2001 From: Spythere Date: Sun, 12 Feb 2023 00:30:05 +0100 Subject: [PATCH 03/12] =?UTF-8?q?fix:=20responsywno=C5=9B=C4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.scss | 2 +- src/components/SceneryView/SceneryInfo/SceneryInfoRoutes.vue | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/App.scss b/src/App.scss index 4fb119d..267bc52 100644 --- a/src/App.scss +++ b/src/App.scss @@ -46,7 +46,7 @@ font-size: 1rem; @include smallScreen() { - font-size: calc(0.5rem + 1.1vw); + font-size: calc(0.65rem + 1.1vw); } @include screenLandscape() { diff --git a/src/components/SceneryView/SceneryInfo/SceneryInfoRoutes.vue b/src/components/SceneryView/SceneryInfo/SceneryInfoRoutes.vue index ee1fda2..71a1941 100644 --- a/src/components/SceneryView/SceneryInfo/SceneryInfoRoutes.vue +++ b/src/components/SceneryView/SceneryInfo/SceneryInfoRoutes.vue @@ -61,9 +61,11 @@ export default defineComponent({ ul.routes-list { margin: 0.45em 0.25em; display: flex; + justify-content: center; + flex-wrap: wrap; li { - margin: 0.2em 0.25em; + margin: 0.5em 0.25em; span { padding: 0.2em 0.25em; From 36d71292bcc4e9aa7e004262f053f9d267d95ba5 Mon Sep 17 00:00:00 2001 From: Spythere Date: Sun, 12 Feb 2023 00:42:37 +0100 Subject: [PATCH 04/12] =?UTF-8?q?feature:=20url=20projekt=C3=B3w?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/SceneryView/SceneryHeader.vue | 2 +- src/components/SceneryView/SceneryInfo.vue | 26 ++++++++++++-------- src/scripts/interfaces/Station.ts | 5 ++-- src/store/storeTypes.ts | 1 + 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/components/SceneryView/SceneryHeader.vue b/src/components/SceneryView/SceneryHeader.vue index 40126df..ab40750 100644 --- a/src/components/SceneryView/SceneryHeader.vue +++ b/src/components/SceneryView/SceneryHeader.vue @@ -1,6 +1,6 @@