From e83aa40f82ee0008e6f4d60fea7bb33446565385 Mon Sep 17 00:00:00 2001 From: Spythere Date: Fri, 8 Dec 2023 16:16:14 +0100 Subject: [PATCH 001/137] aktualizacja endpointu API statystyk --- src/components/JournalView/DailyStats.vue | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/src/components/JournalView/DailyStats.vue b/src/components/JournalView/DailyStats.vue index bd1e010..3cfa2e2 100644 --- a/src/components/JournalView/DailyStats.vue +++ b/src/components/JournalView/DailyStats.vue @@ -5,15 +5,12 @@ {{ $t('app.loading') }} - - {{ $t('journal.daily-stats-info') }} - -

{{ $t('journal.daily-stats-title') }} {{ new Date().toLocaleDateString($i18n.locale) }}

+
@@ -177,23 +174,9 @@ export default defineComponent({ async fetchDailyTimetableStats() { try { const res: API.DailyStats.Response = await ( - await axios.get(`${URLs.stacjownikAPI}/api/getDailyTimetableStats`) + await axios.get(`${URLs.stacjownikAPI}/api/getDailyStats`) ).data; - // this.stats = { - // totalTimetables: res.totalTimetables, - // distanceSum: res.distanceSum, - // distanceAvg: res.distanceAvg, - // // timetableAuthor: res.maxTimetable?.authorName || '', - // // timetableDriver: res.maxTimetable?.driverName || '', - // // timetableId: res.maxTimetable?.id || 0, - // // timetableRouteDistance: res.maxTimetable?.routeDistance || 0, - - // mostActiveDispatchers: res.mostActiveDispatchers, - // mostActiveDrivers: res.mostActiveDrivers, - // longestDuties: res.longestDuties - // }; - this.stats = res; this.statsStatus = Status.Data.Loaded; From 71e5044cb4b2963a8dea9957f93dbc3886070566 Mon Sep 17 00:00:00 2001 From: Spythere Date: Fri, 8 Dec 2023 16:20:17 +0100 Subject: [PATCH 002/137] poprawki designu dziennika RJ --- .../JournalTimetables/TimetableGeneral.vue | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/components/JournalView/JournalTimetables/TimetableGeneral.vue b/src/components/JournalView/JournalTimetables/TimetableGeneral.vue index 4a0a44a..b469d2c 100644 --- a/src/components/JournalView/JournalTimetables/TimetableGeneral.vue +++ b/src/components/JournalView/JournalTimetables/TimetableGeneral.vue @@ -111,16 +111,17 @@ export default defineComponent({ gap: 0.5em; margin-bottom: 0.5em; - - @include smallScreen() { - justify-content: center; - } } .info-date { margin-right: 0.5em; } +.badges { + display: flex; + gap: 0.25em; +} + .info-badge { padding: 0.05em 0.35em; color: black; @@ -142,7 +143,14 @@ export default defineComponent({ cursor: pointer; display: flex; flex-wrap: wrap; + justify-content: center; align-items: center; gap: 0.25em; } + +@include smallScreen { + .item-general { + justify-content: center; + } +} From d875433d56b182c151b36ef18eeb8613d471ebc5 Mon Sep 17 00:00:00 2001 From: Spythere Date: Fri, 8 Dec 2023 17:14:49 +0100 Subject: [PATCH 003/137] =?UTF-8?q?ulepszone=20zapami=C4=99tywanie=20zak?= =?UTF-8?q?=C5=82adek=20statystyk=20w=20dzienniku?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{DailyStats.vue => JournalDailyStats.vue} | 6 +- .../JournalView/JournalDriverStats.vue | 2 + src/components/JournalView/JournalOptions.vue | 2 - src/components/JournalView/JournalStats.vue | 95 ++++++++----------- src/store/mainStore.ts | 2 - src/store/typings.ts | 2 - 6 files changed, 44 insertions(+), 65 deletions(-) rename src/components/JournalView/{DailyStats.vue => JournalDailyStats.vue} (98%) diff --git a/src/components/JournalView/DailyStats.vue b/src/components/JournalView/JournalDailyStats.vue similarity index 98% rename from src/components/JournalView/DailyStats.vue rename to src/components/JournalView/JournalDailyStats.vue index 3cfa2e2..7f6e796 100644 --- a/src/components/JournalView/DailyStats.vue +++ b/src/components/JournalView/JournalDailyStats.vue @@ -139,8 +139,10 @@ import { API } from '../../typings/api'; import { Status } from '../../typings/common'; export default defineComponent({ + name: 'journal-daily-stats', + mixins: [dateMixin], - emits: ['toggleStatsOpen'], + // emits: ['toggleStatsOpen'], data() { return { @@ -154,7 +156,7 @@ export default defineComponent({ activated() { this.startFetchingDailyStats(); - this.$emit('toggleStatsOpen', true); + // this.$emit('toggleStatsOpen', true); }, deactivated() { diff --git a/src/components/JournalView/JournalDriverStats.vue b/src/components/JournalView/JournalDriverStats.vue index ee2d2f8..1062ab6 100644 --- a/src/components/JournalView/JournalDriverStats.vue +++ b/src/components/JournalView/JournalDriverStats.vue @@ -59,6 +59,8 @@ import { useStore } from '../../store/mainStore'; import { Status } from '../../typings/common'; export default defineComponent({ + name: 'journal-driver-stats', + data() { return { store: useStore(), diff --git a/src/components/JournalView/JournalOptions.vue b/src/components/JournalView/JournalOptions.vue index 48a33ac..738e1d7 100644 --- a/src/components/JournalView/JournalOptions.vue +++ b/src/components/JournalView/JournalOptions.vue @@ -184,8 +184,6 @@ export default defineComponent({ watch: { async 'store.driverStatsName'() { await this.fetchDriverStats(); - - // if (value) this.store.currentStatsTab = 'driver'; }, async 'searchersValues.search-driver'(value: string | undefined) { diff --git a/src/components/JournalView/JournalStats.vue b/src/components/JournalView/JournalStats.vue index be1d03a..23ae57d 100644 --- a/src/components/JournalView/JournalStats.vue +++ b/src/components/JournalView/JournalStats.vue @@ -1,27 +1,26 @@ diff --git a/src/components/JournalView/typings.ts b/src/components/JournalView/typings.ts index a0c4772..37fab92 100644 --- a/src/components/JournalView/typings.ts +++ b/src/components/JournalView/typings.ts @@ -46,4 +46,17 @@ export namespace Journal { id: TimetableSorterKey; dir: 'asc' | 'desc'; } + + export enum StatsTab { + DRIVER_STATS = 'journal-driver-stats', + DISPATCHER_STATS = 'journal-dispatcher-stats', + DAILY_STATS = 'journal-daily-stats' + } + + export interface StatsButton { + tab: StatsTab; + localeKey: string; + iconName: string; + disabled: boolean; + } } diff --git a/src/locales/en.json b/src/locales/en.json index 96f4d0d..b9c1e4a 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -371,6 +371,9 @@ "driver-stats-title": "DRIVER STATS", "driver-stats-info": "Enter a proper nickname into filters [F] to see user's driving statistics!", + "dispatcher-stats-title": "DISPATCHER STATS", + "dispatcher-stats-info": "Enter a proper nickname into filters [F] to see user's dispatcher statistics!", + "stats-loading": "Fetching statistics...", "stats-error": "Oops! An unexpected error occurred while trying to fetch statistics! :/", diff --git a/src/locales/pl.json b/src/locales/pl.json index fb40a76..b0eacfd 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -349,9 +349,12 @@ "daily-stats-title": "STATYSTYKI DNIA", "daily-stats-info": "Dzisiejsze statystyki nie są jeszcze dostępne!", - "driver-stats-title": "STATYSTYKI GRACZA", + "driver-stats-title": "STAT. MASZYNISTY", "driver-stats-info": "Wpisz nazwę użytkownika w filtrach [F], aby zobaczyć jego statystyki maszynisty!", + "dispatcher-stats-title": "STATYSTYKI DYŻURNEGO", + "dispatcher-stats-info": "Wpisz nazwę użytkownika w filtrach [F], aby zobaczyć jego statystyki dyżurnego!", + "stats-loading": "Pobieranie statystyk...", "stats-error": "Ups! Wystąpił błąd podczas próby pobrania statystyk!", diff --git a/src/store/mainStore.ts b/src/store/mainStore.ts index f98c242..56db71f 100644 --- a/src/store/mainStore.ts +++ b/src/store/mainStore.ts @@ -19,6 +19,7 @@ export const useMainStore = defineStore('store', { dispatcherStatsName: '', dispatcherStatsData: undefined, + dispatcherStatsStatus: Status.Data.Initialized, driverStatsName: '', driverStatsData: undefined, diff --git a/src/styles/JournalSection.scss b/src/styles/JournalSection.scss index eadc5b7..e0593a0 100644 --- a/src/styles/JournalSection.scss +++ b/src/styles/JournalSection.scss @@ -53,9 +53,7 @@ justify-content: space-between; align-items: center; gap: 0.5em; - position: relative; - margin-bottom: 0.5em; } .btn--load-data { diff --git a/src/styles/JournalStats.scss b/src/styles/JournalStats.scss index d9752bd..3a68ca1 100644 --- a/src/styles/JournalStats.scss +++ b/src/styles/JournalStats.scss @@ -2,24 +2,30 @@ @import 'responsive.scss'; .stats-tab { + position: absolute; + right: 0; + z-index: 99; + + transform: translateY(1em); + + width: 100%; + background-color: #1a1a1a; box-shadow: 0 0 5px 1px $accentCol; padding: 1em; display: flex; align-items: flex-end; +} - margin-bottom: 0.5em; - - width: 100%; +hr.header-separator { + margin-bottom: 1em; } .info-stats { display: flex; flex-wrap: wrap; gap: 0.5em; - - margin-top: 1em; } .stat-badge { diff --git a/src/styles/dropdown.scss b/src/styles/dropdown.scss index a349a70..b7326ca 100644 --- a/src/styles/dropdown.scss +++ b/src/styles/dropdown.scss @@ -30,7 +30,8 @@ top: calc(100% + 0.5em); background-color: $bgCol; - box-shadow: 0 5px 10px 2px #0f0f0f; + // box-shadow: 0 5px 10px 2px #0f0f0f; + box-shadow: 0 0 5px 1px $accentCol; width: 100%; max-width: 550px; diff --git a/src/styles/dropdown_filters.scss b/src/styles/dropdown_filters.scss index 1176a6c..914242c 100644 --- a/src/styles/dropdown_filters.scss +++ b/src/styles/dropdown_filters.scss @@ -5,11 +5,6 @@ .actions-bar { display: flex; gap: 0.5em; - margin-bottom: 0.5em; -} - -.filters-options { - position: relative; } h1.option-title { diff --git a/src/styles/global.scss b/src/styles/global.scss index e08f06f..cbfa8e9 100644 --- a/src/styles/global.scss +++ b/src/styles/global.scss @@ -11,7 +11,7 @@ --clr-skr: #ff5100; --clr-twr: #ffbb00; - --clr-error: #df3e3e; + --clr-error: #fa3636; --clr-warning: #c59429; --clr-donator: #f7a4ff; @@ -158,6 +158,10 @@ ul { color: #ccc; } + &--error { + color: var(--clr-error); + } + &--donator { color: var(--clr-donator); text-shadow: var(--clr-donator) 0 0 10px; @@ -183,7 +187,7 @@ a.a-button { &[data-disabled='true'] { user-select: none; pointer-events: none; - opacity: 0.85; + opacity: 0.7; } &.btn--filled { diff --git a/src/views/JournalDispatchers.vue b/src/views/JournalDispatchers.vue index 0359447..a2b5ca3 100644 --- a/src/views/JournalDispatchers.vue +++ b/src/views/JournalDispatchers.vue @@ -3,15 +3,19 @@
- +
+ + + +
{{ $t('journal.data-refreshed-at') }}: {{ dataRefreshedAt.toLocaleString($i18n.locale) }} @@ -33,22 +37,33 @@ diff --git a/src/components/JournalView/JournalDriverStats.vue b/src/components/JournalView/JournalDriverStats.vue index 2c2bfaa..5d591ef 100644 --- a/src/components/JournalView/JournalDriverStats.vue +++ b/src/components/JournalView/JournalDriverStats.vue @@ -1,9 +1,12 @@ - - diff --git a/src/components/TrainsView/StopLabel.vue b/src/components/TrainsView/StopLabel.vue new file mode 100644 index 0000000..443c3ff --- /dev/null +++ b/src/components/TrainsView/StopLabel.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/src/components/Global/TrainModal.vue b/src/components/TrainsView/TrainModal.vue similarity index 87% rename from src/components/Global/TrainModal.vue rename to src/components/TrainsView/TrainModal.vue index d05857a..89ced97 100644 --- a/src/components/Global/TrainModal.vue +++ b/src/components/TrainsView/TrainModal.vue @@ -15,19 +15,12 @@ diff --git a/src/scripts/interfaces/Station.ts b/src/scripts/interfaces/Station.ts index da48e47..2212562 100644 --- a/src/scripts/interfaces/Station.ts +++ b/src/scripts/interfaces/Station.ts @@ -1,5 +1,5 @@ import { Availability, OnlineScenery, ScheduledTrain } from '../../store/typings'; -import StationRoutes from './StationRoutes'; +import { StationRoutes } from './StationRoutes'; export default interface Station { name: string; diff --git a/src/scripts/interfaces/StationRoutes.ts b/src/scripts/interfaces/StationRoutes.ts index 2d8fffc..24c82d3 100644 --- a/src/scripts/interfaces/StationRoutes.ts +++ b/src/scripts/interfaces/StationRoutes.ts @@ -1,25 +1,8 @@ -export default interface StationRoutes { - oneWay: { - name: string; - catenary: boolean; - SBL: boolean; - TWB: boolean; - isInternal: boolean; - tracks: number; - speed: number; - length: number; - }[]; +import { StationRoutesInfo } from '../../store/typings'; - twoWay: { - name: string; - catenary: boolean; - SBL: boolean; - TWB: boolean; - isInternal: boolean; - tracks: number; - speed: number; - length: number; - }[]; +export interface StationRoutes { + oneWay: StationRoutesInfo[]; + twoWay: StationRoutesInfo[]; /* [catenary, noCatenary] */ oneWayCatenaryRouteNames: string[]; diff --git a/src/store/mainStore.ts b/src/store/mainStore.ts index 4f5abd3..d1ef716 100644 --- a/src/store/mainStore.ts +++ b/src/store/mainStore.ts @@ -1,5 +1,4 @@ import { defineStore } from 'pinia'; -import StationRoutes from '../scripts/interfaces/StationRoutes'; import Train from '../scripts/interfaces/Train'; import { parseSpawns, getScheduledTrains, getStationTrains } from './utils'; @@ -9,6 +8,7 @@ import { Status } from '../typings/common'; import Station from '../scripts/interfaces/Station'; import { useApiStore } from './apiStore'; import { API } from '../typings/api'; +import { StationRoutes } from '../scripts/interfaces/StationRoutes'; export const useMainStore = defineStore('store', { state: () => @@ -155,46 +155,39 @@ export const useMainStore = defineStore('store', { const apiStore = useApiStore(); return apiStore.sceneryData.map((scenery) => { + const routes = scenery.routesInfo.reduce( + (acc, route) => { + const tracksKey = route.routeTracks == 2 ? 'twoWay' : 'oneWay'; + const isElectric = route.isElectric; + const routesKey: keyof StationRoutes = `${tracksKey}${ + !isElectric ? 'No' : '' + }CatenaryRouteNames`; + + if (!route.isInternal) acc[routesKey].push(route.routeName); + if (route.isRouteSBL) acc['sblRouteNames'].push(route.routeName); + + acc[tracksKey].push(route); + + return acc; + }, + { + oneWay: [], + oneWayCatenaryRouteNames: [], + oneWayNoCatenaryRouteNames: [], + twoWay: [], + twoWayCatenaryRouteNames: [], + twoWayNoCatenaryRouteNames: [], + sblRouteNames: [] + } as StationRoutes + ); + return { name: scenery.name, generalInfo: { ...scenery, authors: scenery.authors?.split(',').map((a) => a.trim()), - routes: - scenery.routesInfo.reduce( - (acc, route) => { - const propName: keyof StationRoutes = `${ - route.routeTracks == 2 ? 'twoWay' : 'oneWay' - }${route.isElectric ? '' : 'No'}CatenaryRouteNames`; - - acc[route.routeTracks == 2 ? 'twoWay' : 'oneWay'].push({ - name: route.routeName, - SBL: route.isRouteSBL, - TWB: false, - catenary: route.isElectric, - isInternal: route.isInternal, - tracks: route.routeTracks, - length: route.routeLength, - speed: route.routeSpeed - }); - - if (!route.isInternal) acc[propName].push(route.routeName); - - if (route.isRouteSBL) acc['sblRouteNames'].push(route.routeName); - - return acc; - }, - { - oneWay: [], - twoWay: [], - sblRouteNames: [], - oneWayCatenaryRouteNames: [], - oneWayNoCatenaryRouteNames: [], - twoWayCatenaryRouteNames: [], - twoWayNoCatenaryRouteNames: [] - } as StationRoutes - ) || {}, + routes: routes, checkpoints: scenery.checkpoints ? scenery.checkpoints .split(';') diff --git a/src/store/typings.ts b/src/store/typings.ts index 88382a1..0923bd9 100644 --- a/src/store/typings.ts +++ b/src/store/typings.ts @@ -35,6 +35,7 @@ export interface StationRoutesInfo { routeLength: number; routeSpeed: number; routeTracks: number; + hidden?: boolean; } export interface StationJSONData { From 9acf3c740ccb452d39afa62f40a7e9dbedae54be Mon Sep 17 00:00:00 2001 From: Spythere Date: Sat, 6 Jan 2024 17:40:43 +0100 Subject: [PATCH 036/137] =?UTF-8?q?dodano=20wyb=C3=B3r=20z=20listy=20autor?= =?UTF-8?q?=C3=B3w=20w=20filtrach?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StationsView/StationFilterCard.vue | 296 ++++++++++-------- src/locales/en.json | 5 +- src/locales/pl.json | 4 +- 3 files changed, 169 insertions(+), 136 deletions(-) diff --git a/src/components/StationsView/StationFilterCard.vue b/src/components/StationsView/StationFilterCard.vue index c664778..ad7f89a 100644 --- a/src/components/StationsView/StationFilterCard.vue +++ b/src/components/StationsView/StationFilterCard.vue @@ -60,8 +60,9 @@
-
-
{{ $t('filters.minimum-hours-title') }}
+
+

{{ $t('filters.minimum-hours-title') }}

+ {{ @@ -75,16 +76,27 @@
+ + + +
@@ -196,6 +208,19 @@ export default defineComponent({ currentOptionsActive() { return true; + }, + + authors() { + return this.store.stationList + .reduce((acc, station) => { + station.generalInfo?.authors?.forEach((author) => { + if (author.trim() != '' && !acc.includes(author.toLocaleLowerCase())) + acc.push(author.toLocaleLowerCase()); + }); + + return acc; + }, [] as string[]) + .sort((a, b) => a.localeCompare(b)); } }, @@ -230,12 +255,12 @@ export default defineComponent({ if (this.saveOptions) StorageManager.setStringValue(target.name, target.value); }, - handleAuthorsInput(e: Event) { - clearTimeout(this.delayInputTimer); + handleAuthorsInput() { + console.log(this.authorsInputValue); - this.delayInputTimer = window.setTimeout(() => { - this.handleInput(e); - }, 400); + this.filterStore.changeFilterValue('authors', this.authorsInputValue); + + if (this.saveOptions) StorageManager.setStringValue('authors', this.authorsInputValue); }, changeNumericFilterValue(name: string, value: number, saveToStorage = false) { @@ -297,136 +322,139 @@ export default defineComponent({ @import '../../styles/card.scss'; @import '../../styles/animations.scss'; +h3.section-header { + text-align: center; + margin: 0.5em 0; +} + .card { display: grid; grid-template-rows: 1fr auto; +} - &_info { - background-color: #111; - padding: 0.5em; +.card_info { + background-color: #111; + padding: 0.5em; +} + +.card_controls { + display: flex; + gap: 0.5em; + + input { + border-radius: 0.5em 0.5em 0 0; + height: 100%; + } +} + +.card_content { + padding: 1em 0.5em; + + display: flex; + flex-direction: column; + + gap: 1em; + overflow: auto; +} + +.card_title { + font-size: 2em; + font-weight: 700; + color: $accentCol; + + text-align: center; +} + +.card_regions { + display: flex; + justify-content: center; + + label > input { + display: none; } - &_controls { + label > span { + padding: 0.25em 0.5em; + margin: 0 0.25em; + + cursor: pointer; + + background-color: gray; + + &.checked { + background-color: seagreen; + } + } +} + +.card_timestamp { + display: flex; + flex-direction: column; + justify-content: center; + + .clock { + display: flex; + align-items: center; + justify-content: center; + + font-size: 1.2em; + text-align: center; + + span { + min-width: 120px; + font-weight: bold; + color: $accentCol; + } + + button { + padding: 0.2em 0.6em; + } + } +} + +.card_authors-search { + margin: 1em 0; + + form { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 0.5em; + width: 100%; + margin-top: 1em; + } + + input { + width: 70%; + max-width: 400px; + padding: 0.5em; + outline: 1px solid white; + } +} + +.card_actions { + width: 100%; + padding: 0.5em; + + .filter-option { + max-width: 50%; + margin: 0 auto; + } + + .action-buttons { display: flex; gap: 0.5em; - - input { - border-radius: 0.5em 0.5em 0 0; - height: 100%; - } - } - - &_content { - padding: 1em 0.5em; - - display: flex; - flex-direction: column; - - gap: 1em; - overflow: auto; - } - - &_title { - font-size: 2em; - font-weight: 700; - color: $accentCol; - - text-align: center; - } - - &_regions { - display: flex; - justify-content: center; - - label > input { - display: none; - } - - label > span { - padding: 0.25em 0.5em; - margin: 0 0.25em; - - cursor: pointer; - - background-color: gray; - - &.checked { - background-color: seagreen; - } - } - } - - &_timestamp { - display: flex; - flex-direction: column; - justify-content: center; - - .clock { - display: flex; - align-items: center; - justify-content: center; - - font-size: 1.2em; - margin-top: 0.5em; - - span { - min-width: 120px; - font-weight: bold; - color: $accentCol; - } - - button { - padding: 0.2em 0.6em; - } - } - } - - &_modes { - display: flex; - justify-content: center; - - .option { - margin: 0 1em; - } - } - - &_authors-search { - display: inline-block; - margin: 0 auto; - width: 60%; - min-width: 240px; - - input { - width: 100%; - padding: 0.5em; - border: 1px solid white; - } - } - - &_actions { width: 100%; - padding: 0.5em; - .filter-option { - max-width: 50%; + margin-top: 0.5em; + + button { + width: 50%; margin: 0 auto; - } + padding: 0.5em; - .action-buttons { - display: flex; - gap: 0.5em; - width: 100%; - - margin-top: 0.5em; - - button { - width: 50%; - margin: 0 auto; - padding: 0.5em; - - &[data-selected='true'] { - background-color: forestgreen; - } + &[data-selected='true'] { + background-color: forestgreen; } } } diff --git a/src/locales/en.json b/src/locales/en.json index 5792dcb..2a4a4f5 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -227,7 +227,10 @@ "routes-2t-cat": "MIN. CATENARY DOUBLE TRACK ROUTES", "routes-2t-other": "MIN. OTHER DOUBLE TRACK ROUTES" }, - "authors-search": "Search by author (other filters apply)", + "authors-search": "SEARCH BY AUTHOR NAME (other filters apply):", + "authors-placeholder": "Enter the author nickname...", + "authors-button-title": "Search", + "minimum-hours-title": "SHOW ONLY SCENERIES UNTIL:", "now": "NOW", "hour": "h", diff --git a/src/locales/pl.json b/src/locales/pl.json index 348abb4..c54b56d 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -218,7 +218,9 @@ "routes-2t-other": "SZLAKI DWUTOROWE NIEZELEKTR. (MINIMUM)" }, - "authors-search": "Szukaj autora (uwzględnia inne filtry)", + "authors-search": "SZUKAJ AUTORA (uwzględnia inne filtry):", + "authors-placeholder": "Wpisz nick autora...", + "authors-button-title": "Szukaj", "minimum-hours-title": "POKAŻ TYLKO SCENERIE DOSTĘPNE MINIMUM DO:", "now": "TERAZ", "hour": " godz.", From f836a075b0840c1e820a4b420ba8214a8c03a3eb Mon Sep 17 00:00:00 2001 From: Spythere Date: Sat, 13 Jan 2024 15:41:40 +0100 Subject: [PATCH 037/137] hotfix: pobieranie historii RJ nieznanych scenerii --- src/components/SceneryView/SceneryTimetablesHistory.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/SceneryView/SceneryTimetablesHistory.vue b/src/components/SceneryView/SceneryTimetablesHistory.vue index 8d08825..9ec1aa2 100644 --- a/src/components/SceneryView/SceneryTimetablesHistory.vue +++ b/src/components/SceneryView/SceneryTimetablesHistory.vue @@ -114,7 +114,7 @@ export default defineComponent({ const response: API.TimetableHistory.Response = await ( await http.get('api/getTimetables', { params: { - issuedFrom: this.station?.name + issuedFrom: this.station?.name || this.onlineScenery?.name } }) ).data; From 186ce81819392b238570ccbda9997eb466ffc0d7 Mon Sep 17 00:00:00 2001 From: Spythere Date: Sat, 13 Jan 2024 17:28:16 +0100 Subject: [PATCH 038/137] =?UTF-8?q?hotfix:=20filtrowanie=20aktywnych=20rj?= =?UTF-8?q?=20do=20odpowiednich=20region=C3=B3w?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/utils.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/store/utils.ts b/src/store/utils.ts index bf23475..443365f 100644 --- a/src/store/utils.ts +++ b/src/store/utils.ts @@ -196,6 +196,7 @@ export function getScheduledTrains( return trainList.reduce((acc: ScheduledTrain[], train) => { if (!train.timetableData) return acc; + if (train.region != sceneryData.region) return acc; const timetable = train.timetableData; if (!timetable.sceneries.includes(sceneryData.stationHash)) return acc; From fadecc9d2c28cbb4be6a50daca67723a45688774 Mon Sep 17 00:00:00 2001 From: Spythere Date: Wed, 24 Jan 2024 20:35:15 +0100 Subject: [PATCH 039/137] =?UTF-8?q?fix=20liter=C3=B3wki=20w=20t=C5=82umacz?= =?UTF-8?q?eniu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/TrainsView/StopLabel.vue | 70 +++++++++++++++++-------- src/locales/en.json | 2 +- 2 files changed, 48 insertions(+), 24 deletions(-) diff --git a/src/components/TrainsView/StopLabel.vue b/src/components/TrainsView/StopLabel.vue index 443c3ff..7debd3d 100644 --- a/src/components/TrainsView/StopLabel.vue +++ b/src/components/TrainsView/StopLabel.vue @@ -3,13 +3,17 @@ {{ timestampToString(stop.arrivalScheduled) }} @@ -23,20 +27,36 @@ - {{ stop.duration }} {{ stop.type == '' ? 'pt' : stop.type }} + {{ stop.duration || stop.departureDelay - stop.arrivalDelay }} + {{ stop.type == '' ? 'pt' : stop.type }} {{ timestampToString(stop.departureScheduled) }} @@ -78,6 +98,10 @@ $stopDefaultClr: #252525; $stopNameClr: #22a8d1; .stop-label { + display: flex; + flex-wrap: wrap; + align-items: center; + &[data-sbl='true'] { .date { display: none; @@ -90,10 +114,6 @@ $stopNameClr: #22a8d1; } } - display: flex; - flex-wrap: wrap; - align-items: center; - .name { background: $stopNameClr; padding: 0.3em 0.5em; @@ -112,18 +132,22 @@ $stopNameClr: #22a8d1; } .stop { - &.ph, - &.ph-pm, - &.pm { + &[data-stop-types='ph'], + &[data-stop-types='ph-pm'], + &[data-stop-types='pm'] { background: $stopExchangeClr; } background: $stopDefaultClr; + + &[data-stop-status='delayed'] { + color: $delayedClr; + } } .arrival, .departure { - &.delayed { + &[data-status='delayed'] { s { color: #999; } @@ -133,7 +157,7 @@ $stopNameClr: #22a8d1; } } - &.preponed { + &[data-status='preponed'] { s { color: #999; } diff --git a/src/locales/en.json b/src/locales/en.json index 2a4a4f5..c918dd9 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -12,7 +12,7 @@ "p4": "Every person who decides to contribute at least {b1} (in case of PayPal it must be a payment including additional transaction fees) for the development of Stacjownik, will receive (upon a personal request) {img}{b2} of username in the app and on my Discord server (after verifying the payment author, preferably by providing the username directly with the payment).", "p4-b1": "5 PLN", "p4-b2": "a symbolic highlight", - "p5": "Thank you and enjoy the app!
~ Spythegre", + "p5": "Thank you and enjoy the app!
~ Spythere", "action-exit": "Maybe next time...", "action-paypal": "DONATE WITH PAYPAL", "action-buycoffee": "BUY ME A COFFEE!", From 6d3b32cd7d9b09bcc97691ed2506aa2b089f1f38 Mon Sep 17 00:00:00 2001 From: Spythere Date: Wed, 24 Jan 2024 20:35:49 +0100 Subject: [PATCH 040/137] bump: 1.20.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9bd8b67..2284120 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stacjownik", - "version": "1.20.1", + "version": "1.20.2", "private": true, "scripts": { "dev": "vite", From a8f683a585fac6d1f729e6b90f9e63951ffab775 Mon Sep 17 00:00:00 2001 From: Spythere Date: Fri, 26 Jan 2024 13:38:28 +0100 Subject: [PATCH 041/137] mock data --- src/data/mockActiveData.json | 4 +- src/data/mockWebsocketData.json | 2138 ------------------------------- 2 files changed, 2 insertions(+), 2140 deletions(-) delete mode 100644 src/data/mockWebsocketData.json diff --git a/src/data/mockActiveData.json b/src/data/mockActiveData.json index 44781de..b59bf96 100644 --- a/src/data/mockActiveData.json +++ b/src/data/mockActiveData.json @@ -8732,7 +8732,7 @@ "departureDelay": 0, "beginsHere": true, "terminatesHere": false, - "confirmed": 0, + "confirmed": 1, "stopped": 0, "stopTime": null }, @@ -9380,7 +9380,7 @@ "stopType": "", "stopDistance": 123.62, "pointId": "1663532077406", - "comments": null, + "comments": "test123", "mainStop": true, "arrivalLine": "Sk", "arrivalTimestamp": 1701889320000, diff --git a/src/data/mockWebsocketData.json b/src/data/mockWebsocketData.json deleted file mode 100644 index 34d823c..0000000 --- a/src/data/mockWebsocketData.json +++ /dev/null @@ -1,2138 +0,0 @@ -{ - "stations": [ - { - "dispatcherId": 39569, - "dispatcherName": "Anoniasty", - "dispatcherIsSupporter": false, - "stationName": "Kowalewo", - "stationHash": "47693386", - "region": "eu", - "maxUsers": 9, - "currentUsers": 2, - "spawn": 0, - "lastSeen": 1699279724118, - "dispatcherExp": 6, - "nameFromHeader": "Kowalewo", - "spawnString": null, - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 1, - "dispatcherRate": 7 - }, - { - "dispatcherId": 40470, - "dispatcherName": "Stellwerk", - "dispatcherIsSupporter": false, - "stationName": "Sulechów", - "stationHash": "ca9a1276", - "region": "usw", - "maxUsers": 7, - "currentUsers": 0, - "spawn": 0, - "lastSeen": 1699279712294, - "dispatcherExp": 0, - "nameFromHeader": "Sulechów", - "spawnString": null, - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 1, - "dispatcherRate": 0 - }, - { - "dispatcherId": 36438, - "dispatcherName": "paweld", - "dispatcherIsSupporter": true, - "stationName": "Orniki", - "stationHash": "4590c058", - "region": "eu", - "maxUsers": 19, - "currentUsers": 1, - "spawn": 1, - "lastSeen": 1699279723169, - "dispatcherExp": 13, - "nameFromHeader": "Orniki", - "spawnString": "L13,-1,650,True,False,False,TOW;Tm6,1,350,True,False,False,OSOB;Tm7,1,350,True,False,False,POSP;Tm8,1,200,True,True,False,EZT", - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 1, - "dispatcherRate": 155 - }, - { - "dispatcherId": 26516, - "dispatcherName": "ares0272", - "dispatcherIsSupporter": true, - "stationName": "Wielichowo", - "stationHash": "528d4512", - "region": "eu", - "maxUsers": 29, - "currentUsers": 0, - "spawn": 0, - "lastSeen": 1699279105797, - "dispatcherExp": 8, - "nameFromHeader": "Wielichowo", - "spawnString": null, - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 0, - "dispatcherRate": 6 - }, - { - "dispatcherId": 43651, - "dispatcherName": "Kooder_B0ard", - "dispatcherIsSupporter": true, - "stationName": "Torzyn", - "stationHash": "1800a035", - "region": "eu", - "maxUsers": 10, - "currentUsers": 1, - "spawn": 1, - "lastSeen": 1699279718503, - "dispatcherExp": 3, - "nameFromHeader": "Torzyn", - "spawnString": "Tor101,-1,250,False,False,False,TOW;Tor18,-1,25,False,False,True,LUZ;Tor20,-1,25,False,False,True,LUZ", - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 1, - "dispatcherRate": 6 - }, - { - "dispatcherId": 43651, - "dispatcherName": "Kooder_B0ard", - "dispatcherIsSupporter": true, - "stationName": "Tomysłów", - "stationHash": "e4f9138a", - "region": "eu", - "maxUsers": 9, - "currentUsers": 0, - "spawn": 0, - "lastSeen": 1699279347053, - "dispatcherExp": 3, - "nameFromHeader": "Tomysłów", - "spawnString": null, - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 0, - "dispatcherRate": 22 - }, - { - "dispatcherId": 32911, - "dispatcherName": "Misiek1977", - "dispatcherIsSupporter": false, - "stationName": "Wełtawa", - "stationHash": "87c1a388", - "region": "eu", - "maxUsers": 9, - "currentUsers": 0, - "spawn": 0, - "lastSeen": 1699279720410, - "dispatcherExp": 17, - "nameFromHeader": "Wełtawa", - "spawnString": null, - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 1, - "dispatcherRate": 26 - }, - { - "dispatcherId": 4365, - "dispatcherName": "JachuPL", - "dispatcherIsSupporter": true, - "stationName": "Aleksandrów Kujawski", - "stationHash": "4e0599d3", - "region": "eu", - "maxUsers": 9, - "currentUsers": 1, - "spawn": 1, - "lastSeen": 1699279721833, - "dispatcherExp": 9, - "nameFromHeader": "Aleksandrów Kujawski", - "spawnString": "AK_E106,1,600,True,False,False,TOW;AK_H103,-1,360,True,False,False,POSP;AK_L,1,240,True,True,False,EZT;AK_Tm18,1,30,False,False,False,SM42", - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 1, - "dispatcherRate": 2 - }, - { - "dispatcherId": 32531, - "dispatcherName": "Pawlox450x", - "dispatcherIsSupporter": true, - "stationName": "Czermin", - "stationHash": "2ce4e4b8", - "region": "eu", - "maxUsers": 15, - "currentUsers": 2, - "spawn": 1, - "lastSeen": 1699279722173, - "dispatcherExp": 14, - "nameFromHeader": "Czermin", - "spawnString": "E5,-1,650,True,False,False,TOW1;M7,1,650,True,False,False,TOW2;Tm101,1,320,True,False,False,POSP1;Tm102,1,270,True,False,False,POSP2;Tm103,1,220,True,False,False,POSP3;Tor114,1,175,True,False,False,OSOB", - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 1, - "dispatcherRate": 248 - }, - { - "dispatcherId": 43737, - "dispatcherName": "xdzz", - "dispatcherIsSupporter": true, - "stationName": "Hetmanice", - "stationHash": "89fcee89", - "region": "eu", - "maxUsers": 8, - "currentUsers": 1, - "spawn": 1, - "lastSeen": 1699279716897, - "dispatcherExp": 1, - "nameFromHeader": "Hetmanice", - "spawnString": "H,-1,600,True,False,False,ALL2;N,1,600,True,False,False,ALL1;Tm1,1,300,False,False,False,SPAL", - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 1, - "dispatcherRate": 1 - }, - { - "dispatcherId": 27240, - "dispatcherName": "Iuviw", - "dispatcherIsSupporter": false, - "stationName": "Grabów", - "stationHash": "e3222787", - "region": "eu", - "maxUsers": 9, - "currentUsers": 0, - "spawn": 0, - "lastSeen": 1699278811837, - "dispatcherExp": 8, - "nameFromHeader": "Grabów", - "spawnString": null, - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 0, - "dispatcherRate": 0 - }, - { - "dispatcherId": 38826, - "dispatcherName": "07_KolejowyMichal", - "dispatcherIsSupporter": false, - "stationName": "Łęczyca", - "stationHash": "01afea8c", - "region": "eu", - "maxUsers": 7, - "currentUsers": 0, - "spawn": 1, - "lastSeen": 1699279722419, - "dispatcherExp": 1, - "nameFromHeader": "Łęczyca", - "spawnString": "Lc_F,-1,700,True,False,False,TOW;Lc_J,1,220,True,False,False,POS;Lc_Tm2,1,200,True,True,False,EZT;Tm105,-1,30,False,False,True,SM42B", - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 1, - "dispatcherRate": 0 - }, - { - "dispatcherId": 27240, - "dispatcherName": "Iuviw", - "dispatcherIsSupporter": false, - "stationName": "Lisków", - "stationHash": "e2517545", - "region": "eu", - "maxUsers": 9, - "currentUsers": 0, - "spawn": 0, - "lastSeen": 1699279717776, - "dispatcherExp": 8, - "nameFromHeader": "Lisków", - "spawnString": null, - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 1, - "dispatcherRate": 0 - }, - { - "dispatcherId": 10776, - "dispatcherName": "barti123", - "dispatcherIsSupporter": true, - "stationName": "wierzbin", - "stationHash": "f571b857", - "region": "eu", - "maxUsers": 4, - "currentUsers": 0, - "spawn": 0, - "lastSeen": 1699279202082, - "dispatcherExp": 11, - "nameFromHeader": "wierzbin", - "spawnString": null, - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 0, - "dispatcherRate": 0 - }, - { - "dispatcherId": 10776, - "dispatcherName": "barti123", - "dispatcherIsSupporter": true, - "stationName": "wierzbin", - "stationHash": "f571b857", - "region": "ru", - "maxUsers": 4, - "currentUsers": 1, - "spawn": 0, - "lastSeen": 1699279726030, - "dispatcherExp": 11, - "nameFromHeader": "wierzbin", - "spawnString": null, - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 1, - "dispatcherRate": 0 - }, - { - "dispatcherId": 2097, - "dispatcherName": "MeGusta", - "dispatcherIsSupporter": true, - "stationName": "Winiary", - "stationHash": "45f6860c", - "region": "ru", - "maxUsers": 21, - "currentUsers": 0, - "spawn": 0, - "lastSeen": 1699279718481, - "dispatcherExp": 14, - "nameFromHeader": "Winiary", - "spawnString": null, - "networkConnectionString": "2023.2.1Stable030", - "isOnline": 1, - "dispatcherRate": 0 - } - ], - "dispatchers": [ - ["47693386", "eu", 2, 0], - ["4590c058", "eu", 0, 1699305685182], - ["87c1a388", "eu", 0, 1699282800000], - ["4e0599d3", "eu", 0, 1699282800000], - ["2ce4e4b8", "eu", 0, 1699286400000], - ["01afea8c", "eu", 0, 1699286400000], - ["89fcee89", "eu", 2, 0], - ["e2517545", "eu", 4, 0], - ["1800a035", "eu", 2, 0] - ], - "trains": [ - { - "trainNo": 45100, - "mass": 463400, - "speed": 126, - "length": 221, - "distance": 1285, - "stockString": "EP07-408;111a_PKPIC_B9nopuvz_02;159a_PKPIC_B9mnopuz_01;159a_PKPIC_B9mnopuz_01;159a_PKPIC_B9mnopuz_01;112a_PKPIC_A9ou_01;154a_PKPIC_B10mnouz_01;154a_PKPIC_B10mnouz_01;112a_PKPIC_A9ou_01", - "driverName": "macio2011", - "driverId": 17457, - "driverIsSupporter": false, - "driverLevel": 1, - "currentStationHash": "1800a035", - "currentStationName": "Torzyn", - "signal": "3144", - "connectedTrack": "", - "online": 1, - "lastSeen": 1699279722490, - "region": "eu", - "isTimeout": false, - "timetable": { - "SKR": false, - "TWR": false, - "category": "MPE", - "stopList": [ - { - "stopName": "Aleksandrów Kujawski", - "stopNameRAW": "Aleksandrów Kujawski", - "stopType": "", - "stopDistance": 0, - "pointId": "1526676928508", - "comments": "", - "mainStop": true, - "arrivalLine": null, - "arrivalTimestamp": 0, - "arrivalRealTimestamp": 0, - "arrivalDelay": 0, - "departureLine": "NsWg", - "departureTimestamp": 1699278780000, - "departureRealTimestamp": 1699278780000, - "departureDelay": 0, - "beginsHere": true, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": null - }, - { - "stopName": "Torzyn, podg.", - "stopNameRAW": "Torzyn, podg.", - "stopType": "", - "stopDistance": 7.44, - "pointId": "1607086198259", - "comments": null, - "mainStop": false, - "arrivalLine": "Bo", - "arrivalTimestamp": 1699279020000, - "arrivalRealTimestamp": 1699279020000, - "arrivalDelay": 0, - "departureLine": "To-To po.", - "departureTimestamp": 1699279020000, - "departureRealTimestamp": 1699279020000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Torzyn, po.", - "stopNameRAW": "Torzyn, po.", - "stopType": "", - "stopDistance": 8.19, - "pointId": "1607086084988", - "comments": null, - "mainStop": false, - "arrivalLine": "To-To po.", - "arrivalTimestamp": 1699279020000, - "arrivalRealTimestamp": 1699279020000, - "arrivalDelay": 0, - "departureLine": "Sw", - "departureTimestamp": 1699279020000, - "departureRealTimestamp": 1699279020000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Most, podg.", - "stopNameRAW": "Most, podg.", - "stopType": "", - "stopDistance": 14.13, - "pointId": "1621270524779", - "comments": null, - "mainStop": false, - "arrivalLine": "Pl", - "arrivalTimestamp": 1699279320000, - "arrivalRealTimestamp": 1699279320000, - "arrivalDelay": 0, - "departureLine": "We-Mo", - "departureTimestamp": 1699279320000, - "departureRealTimestamp": 1699279320000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Wełtawa", - "stopNameRAW": "Wełtawa", - "stopType": "", - "stopDistance": 16.91, - "pointId": "1621270473180", - "comments": null, - "mainStop": true, - "arrivalLine": "We-Mo", - "arrivalTimestamp": 1699279560000, - "arrivalRealTimestamp": 1699279560000, - "arrivalDelay": 0, - "departureLine": "Sk", - "departureTimestamp": 1699279560000, - "departureRealTimestamp": 1699279560000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Hetmanice", - "stopNameRAW": "Hetmanice", - "stopType": "", - "stopDistance": 24, - "pointId": "1597258756937", - "comments": null, - "mainStop": true, - "arrivalLine": "NW", - "arrivalTimestamp": 1699279860000, - "arrivalRealTimestamp": 1699279860000, - "arrivalDelay": 0, - "departureLine": null, - "departureTimestamp": 0, - "departureRealTimestamp": 0, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": true, - "confirmed": 0, - "stopped": 0, - "stopTime": null - } - ], - "route": "Aleksandrów Kujawski|Hetmanice", - "timetableId": 454991, - "sceneries": ["89fcee89", "87c1a388", "1800a035", "4e0599d3"] - } - }, - { - "trainNo": 31863, - "mass": 401400, - "speed": 2, - "length": 171, - "distance": 193, - "stockString": "EU07-324;154a_PKPIC_B10mnouz_01;154a_PKPIC_B10mnouz_01;154a_PKPIC_B10mnouz_01;154a_PKPIC_B10mnouz_01;154a_PKPIC_B10mnouz_01;612a_PKPIC_BD4osuv_01", - "driverName": "kolejowyy", - "driverId": 35654, - "driverIsSupporter": false, - "driverLevel": 6, - "currentStationHash": "47693386", - "currentStationName": "Kowalewo", - "signal": "KoB_M", - "connectedTrack": "", - "online": 1, - "lastSeen": 1699279712260, - "region": "eu", - "isTimeout": false, - "timetable": { - "SKR": false, - "TWR": false, - "category": "MPE", - "stopList": [ - { - "stopName": "ORNIKI", - "stopNameRAW": "ORNIKI", - "stopType": "pt", - "stopDistance": 0, - "pointId": "1680860229161", - "comments": null, - "mainStop": true, - "arrivalLine": null, - "arrivalTimestamp": 0, - "arrivalRealTimestamp": 0, - "arrivalDelay": 0, - "departureLine": "Or-OrRz", - "departureTimestamp": 1699277280000, - "departureRealTimestamp": 1699277400000, - "departureDelay": 2, - "beginsHere": true, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": null - }, - { - "stopName": "Orniki Rzeka, po.", - "stopNameRAW": "Orniki Rzeka, po.", - "stopType": "", - "stopDistance": 2.6, - "pointId": "1680860463849", - "comments": null, - "mainStop": false, - "arrivalLine": "Or-OrRz", - "arrivalTimestamp": 1699277340000, - "arrivalRealTimestamp": 1699277460000, - "arrivalDelay": 2, - "departureLine": "Op", - "departureTimestamp": 1699277340000, - "departureRealTimestamp": 1699277460000, - "departureDelay": 2, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Torzyn, podg.", - "stopNameRAW": "Torzyn, podg.", - "stopType": "", - "stopDistance": 8.64, - "pointId": "1607086198259", - "comments": null, - "mainStop": false, - "arrivalLine": "Bo", - "arrivalTimestamp": 1699277580000, - "arrivalRealTimestamp": 1699277700000, - "arrivalDelay": 2, - "departureLine": "To-To po.", - "departureTimestamp": 1699277580000, - "departureRealTimestamp": 1699277820000, - "departureDelay": 4, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Torzyn, po.", - "stopNameRAW": "Torzyn, po.", - "stopType": "", - "stopDistance": 9.39, - "pointId": "1607086084988", - "comments": null, - "mainStop": false, - "arrivalLine": "To-To po.", - "arrivalTimestamp": 1699277580000, - "arrivalRealTimestamp": 1699277820000, - "arrivalDelay": 4, - "departureLine": "Sw", - "departureTimestamp": 1699277580000, - "departureRealTimestamp": 1699277820000, - "departureDelay": 4, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Tomysłów", - "stopNameRAW": "Tomysłów", - "stopType": "ph", - "stopDistance": 16.79, - "pointId": "1673297221546", - "comments": null, - "mainStop": true, - "arrivalLine": "Zs", - "arrivalTimestamp": 1699277880000, - "arrivalRealTimestamp": 1699278120000, - "arrivalDelay": 4, - "departureLine": "Ws", - "departureTimestamp": 1699277940000, - "departureRealTimestamp": 1699278240000, - "departureDelay": 5, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 1 - }, - { - "stopName": "Borowiki, podg.", - "stopNameRAW": "Borowiki, podg.", - "stopType": "", - "stopDistance": 24.81, - "pointId": "1555098605745", - "comments": null, - "mainStop": false, - "arrivalLine": "Rk", - "arrivalTimestamp": 1699278240000, - "arrivalRealTimestamp": 1699278600000, - "arrivalDelay": 6, - "departureLine": null, - "departureTimestamp": 1699278240000, - "departureRealTimestamp": 1699278600000, - "departureDelay": 6, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Borowiki, po.", - "stopNameRAW": "Borowiki, po.", - "stopType": "", - "stopDistance": 24.81, - "pointId": "1555098646906", - "comments": null, - "mainStop": false, - "arrivalLine": null, - "arrivalTimestamp": 1699278240000, - "arrivalRealTimestamp": 1699278600000, - "arrivalDelay": 6, - "departureLine": "WW-Br", - "departureTimestamp": 1699278240000, - "departureRealTimestamp": 1699278600000, - "departureDelay": 6, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Wielichowo Wieś", - "stopNameRAW": "Wielichowo Wieś", - "stopType": "", - "stopDistance": 28.68, - "pointId": "1555098762025", - "comments": null, - "mainStop": true, - "arrivalLine": "WW-Br", - "arrivalTimestamp": 1699278420000, - "arrivalRealTimestamp": 1699278720000, - "arrivalDelay": 5, - "departureLine": "Żak-WW", - "departureTimestamp": 1699278420000, - "departureRealTimestamp": 1699278720000, - "departureDelay": 5, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Żakówek, po.", - "stopNameRAW": "Żakówek, po.", - "stopType": "", - "stopDistance": 29.98, - "pointId": "1555098864988", - "comments": null, - "mainStop": false, - "arrivalLine": "Żak-WW", - "arrivalTimestamp": 1699278420000, - "arrivalRealTimestamp": 1699278720000, - "arrivalDelay": 5, - "departureLine": "WG(gt)-Żak", - "departureTimestamp": 1699278420000, - "departureRealTimestamp": 1699278720000, - "departureDelay": 5, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Wielichowo Główne gt", - "stopNameRAW": "Wielichowo Główne gt", - "stopType": "", - "stopDistance": 32.14, - "pointId": "1555098993221", - "comments": null, - "mainStop": true, - "arrivalLine": "WG(gt)-Żak", - "arrivalTimestamp": 1699278540000, - "arrivalRealTimestamp": 1699278840000, - "arrivalDelay": 5, - "departureLine": "WG-WG(gt)", - "departureTimestamp": 1699278540000, - "departureRealTimestamp": 1699278840000, - "departureDelay": 5, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Wielichowo Główne", - "stopNameRAW": "Wielichowo Główne", - "stopType": "ph", - "stopDistance": 33.24, - "pointId": "1555099057163", - "comments": null, - "mainStop": true, - "arrivalLine": "WG-WG(gt)", - "arrivalTimestamp": 1699278600000, - "arrivalRealTimestamp": 1699278960000, - "arrivalDelay": 6, - "departureLine": "Sj", - "departureTimestamp": 1699278900000, - "departureRealTimestamp": 1699278960000, - "departureDelay": 1, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 5 - }, - { - "stopName": "KOWALEWO", - "stopNameRAW": "KOWALEWO", - "stopType": "ph", - "stopDistance": 41, - "pointId": "1672560716523", - "comments": null, - "mainStop": true, - "arrivalLine": "Da", - "arrivalTimestamp": 1699279320000, - "arrivalRealTimestamp": 1699279440000, - "arrivalDelay": 2, - "departureLine": "Uj", - "departureTimestamp": 1699279380000, - "departureRealTimestamp": 1699279500000, - "departureDelay": 2, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 1 - }, - { - "stopName": "Wełtawa", - "stopNameRAW": "Wełtawa", - "stopType": "", - "stopDistance": 47.12, - "pointId": "1621270473180", - "comments": null, - "mainStop": true, - "arrivalLine": "Sk", - "arrivalTimestamp": 1699279740000, - "arrivalRealTimestamp": 1699279860000, - "arrivalDelay": 2, - "departureLine": null, - "departureTimestamp": 0, - "departureRealTimestamp": 0, - "departureDelay": 2, - "beginsHere": false, - "terminatesHere": true, - "confirmed": 0, - "stopped": 0, - "stopTime": null - } - ], - "route": "ORNIKI|Wełtawa", - "timetableId": 454986, - "sceneries": ["87c1a388", "47693386", "528d4512", "e4f9138a", "1800a035", "4590c058"] - } - }, - { - "trainNo": 605523, - "mass": 199000, - "speed": 0, - "length": 106, - "distance": 22, - "stockString": "SM42-820;102a_PKPE_siec_01;24Z_PKPE_Ks_01:;24Z_PKPE_Ks_01:;24Z_PKPE_Ks_01:;304C_PLK_Rob", - "driverName": "MaciejG96", - "driverId": 17721, - "driverIsSupporter": true, - "driverLevel": 9, - "currentStationHash": "4590c058", - "currentStationName": "Orniki", - "signal": "L13", - "connectedTrack": "", - "online": 0, - "lastSeen": 1699279507024, - "region": "eu", - "isTimeout": false - }, - { - "trainNo": 83192, - "mass": 363400, - "speed": 32, - "length": 169, - "distance": 110, - "stockString": "EP07-391;111a_PKPIC_B9nopuvz_02;159a_PKPIC_B9mnopuz_01;159a_PKPIC_B9mnopuz_01;158a_PKPIC_A9mnopuz_01;110a_PKPIC_Bcdu_02;110a_PKPIC_Bcdu_02", - "driverName": "Monteusz", - "driverId": 37614, - "driverIsSupporter": true, - "driverLevel": 17, - "currentStationHash": "2ce4e4b8", - "currentStationName": "Czermin", - "signal": "Z", - "connectedTrack": "", - "online": 1, - "lastSeen": 1699279718477, - "region": "eu", - "isTimeout": false, - "timetable": { - "SKR": false, - "TWR": false, - "category": "MPE", - "stopList": [ - { - "stopName": "ORNIKI", - "stopNameRAW": "ORNIKI", - "stopType": "", - "stopDistance": 0, - "pointId": "1680860229161", - "comments": null, - "mainStop": true, - "arrivalLine": null, - "arrivalTimestamp": 0, - "arrivalRealTimestamp": 0, - "arrivalDelay": 0, - "departureLine": "Or-OrRz", - "departureTimestamp": 1699278180000, - "departureRealTimestamp": 1699278180000, - "departureDelay": 0, - "beginsHere": true, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": null - }, - { - "stopName": "Orniki Rzeka, po.", - "stopNameRAW": "Orniki Rzeka, po.", - "stopType": "", - "stopDistance": 2.6, - "pointId": "1680860463849", - "comments": null, - "mainStop": false, - "arrivalLine": "Or-OrRz", - "arrivalTimestamp": 1699278240000, - "arrivalRealTimestamp": 1699278240000, - "arrivalDelay": 0, - "departureLine": "Op", - "departureTimestamp": 1699278240000, - "departureRealTimestamp": 1699278240000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Torzyn, po.", - "stopNameRAW": "Torzyn, po.", - "stopType": "", - "stopDistance": 8, - "pointId": "1607086084988", - "comments": null, - "mainStop": false, - "arrivalLine": "Sw", - "arrivalTimestamp": 1699278420000, - "arrivalRealTimestamp": 1699278420000, - "arrivalDelay": 0, - "departureLine": "To-To po.", - "departureTimestamp": 1699278420000, - "departureRealTimestamp": 1699278420000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Torzyn, podg.", - "stopNameRAW": "Torzyn, podg.", - "stopType": "", - "stopDistance": 8.75, - "pointId": "1607086198259", - "comments": null, - "mainStop": false, - "arrivalLine": "To-To po.", - "arrivalTimestamp": 1699278480000, - "arrivalRealTimestamp": 1699278480000, - "arrivalDelay": 0, - "departureLine": "Bo", - "departureTimestamp": 1699278480000, - "departureRealTimestamp": 1699278480000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Aleksandrów Kujawski", - "stopNameRAW": "Aleksandrów Kujawski", - "stopType": "ph", - "stopDistance": 16.19, - "pointId": "1526676928508", - "comments": null, - "mainStop": true, - "arrivalLine": "NsWg", - "arrivalTimestamp": 1699278780000, - "arrivalRealTimestamp": 1699278780000, - "arrivalDelay": 0, - "departureLine": "Oc", - "departureTimestamp": 1699278840000, - "departureRealTimestamp": 1699278840000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 1 - }, - { - "stopName": "Wełtawa", - "stopNameRAW": "Wełtawa", - "stopType": "pt", - "stopDistance": 21.54, - "pointId": "1621270473180", - "comments": null, - "mainStop": true, - "arrivalLine": "Sk", - "arrivalTimestamp": 1699279080000, - "arrivalRealTimestamp": 1699279080000, - "arrivalDelay": 0, - "departureLine": "We-Mo", - "departureTimestamp": 1699279800000, - "departureRealTimestamp": 1699279800000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 12 - }, - { - "stopName": "Most, podg.", - "stopNameRAW": "Most, podg.", - "stopType": "", - "stopDistance": 24.31, - "pointId": "1621270524779", - "comments": null, - "mainStop": false, - "arrivalLine": "We-Mo", - "arrivalTimestamp": 1699280040000, - "arrivalRealTimestamp": 1699279320000, - "arrivalDelay": -12, - "departureLine": "Pl", - "departureTimestamp": 1699280040000, - "departureRealTimestamp": 1699279320000, - "departureDelay": -12, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "SBL_1624_1625, podst.", - "stopNameRAW": "SBL_1624_1625, podst.", - "stopType": "", - "stopDistance": 28.84, - "pointId": "1641043664728", - "comments": null, - "mainStop": false, - "arrivalLine": "Fw", - "arrivalTimestamp": 1699280280000, - "arrivalRealTimestamp": 1699279560000, - "arrivalDelay": -12, - "departureLine": "SBL_it1595_1625", - "departureTimestamp": 1699280280000, - "departureRealTimestamp": 1699279560000, - "departureDelay": -12, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "SBL_1594_1595, podst.", - "stopNameRAW": "SBL_1594_1595, podst.", - "stopType": "", - "stopDistance": 31.82, - "pointId": "1641043515962", - "comments": null, - "mainStop": false, - "arrivalLine": "SBL_it1595_1625", - "arrivalTimestamp": 1699280400000, - "arrivalRealTimestamp": 1699279680000, - "arrivalDelay": -12, - "departureLine": "SBL_CzPl_it1594", - "departureTimestamp": 1699280400000, - "departureRealTimestamp": 1699279680000, - "departureDelay": -12, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Czermin Południe, po.", - "stopNameRAW": "Czermin Południe, po.", - "stopType": "", - "stopDistance": 33.15, - "pointId": "1604769310125", - "comments": null, - "mainStop": false, - "arrivalLine": "SBL_CzPl_it1594", - "arrivalTimestamp": 1699280400000, - "arrivalRealTimestamp": 1699279680000, - "arrivalDelay": -12, - "departureLine": "Cz-CzPl2", - "departureTimestamp": 1699280400000, - "departureRealTimestamp": 1699279680000, - "departureDelay": -12, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "CZERMIN", - "stopNameRAW": "CZERMIN", - "stopType": "", - "stopDistance": 36.18, - "pointId": "1604768381526", - "comments": null, - "mainStop": true, - "arrivalLine": "Cz-CzPl2", - "arrivalTimestamp": 1699280580000, - "arrivalRealTimestamp": 1699279860000, - "arrivalDelay": -12, - "departureLine": null, - "departureTimestamp": 0, - "departureRealTimestamp": 0, - "departureDelay": -12, - "beginsHere": false, - "terminatesHere": true, - "confirmed": 0, - "stopped": 0, - "stopTime": null - } - ], - "route": "ORNIKI|CZERMIN", - "timetableId": 454988, - "sceneries": ["2ce4e4b8", "87c1a388", "4e0599d3", "1800a035", "4590c058"] - } - }, - { - "trainNo": 2026, - "mass": 253000, - "speed": 0, - "length": 130, - "distance": 740, - "stockString": "2EN57-038+1715", - "driverName": "Sachstrain", - "driverId": 43358, - "driverIsSupporter": false, - "driverLevel": 0, - "currentStationHash": "47693386", - "currentStationName": "Kowalewo", - "signal": "KoA_J", - "connectedTrack": "", - "online": 0, - "lastSeen": 1699279565408, - "region": "eu", - "isTimeout": false - }, - { - "trainNo": 61856, - "mass": 182000, - "speed": 94, - "length": 86, - "distance": 1378, - "stockString": "EN71-014", - "driverName": "PolskiEn57", - "driverId": 29362, - "driverIsSupporter": false, - "driverLevel": 7, - "currentStationHash": "2ce4e4b8", - "currentStationName": "Czermin", - "signal": "S1", - "connectedTrack": "", - "online": 1, - "lastSeen": 1699279718660, - "region": "eu", - "isTimeout": false, - "timetable": { - "SKR": false, - "TWR": false, - "category": "ROJ", - "stopList": [ - { - "stopName": "CZERMIN", - "stopNameRAW": "CZERMIN", - "stopType": "", - "stopDistance": 0, - "pointId": "1604768381526", - "comments": null, - "mainStop": true, - "arrivalLine": null, - "arrivalTimestamp": 0, - "arrivalRealTimestamp": 0, - "arrivalDelay": 0, - "departureLine": "Cz-CzPl2", - "departureTimestamp": 1699279500000, - "departureRealTimestamp": 1699279500000, - "departureDelay": 0, - "beginsHere": true, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": null - }, - { - "stopName": "Czermin Południe, po.", - "stopNameRAW": "Czermin Południe, po.", - "stopType": "ph", - "stopDistance": 3.03, - "pointId": "1604769310125", - "comments": null, - "mainStop": false, - "arrivalLine": "Cz-CzPl2", - "arrivalTimestamp": 1699279620000, - "arrivalRealTimestamp": 1699279620000, - "arrivalDelay": 0, - "departureLine": "SBL_CzPl_it1594", - "departureTimestamp": 1699279680000, - "departureRealTimestamp": 1699279680000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 1 - }, - { - "stopName": "SBL_1594_1595, podst.", - "stopNameRAW": "SBL_1594_1595, podst.", - "stopType": "", - "stopDistance": 4.36, - "pointId": "1641043515962", - "comments": null, - "mainStop": false, - "arrivalLine": "SBL_CzPl_it1594", - "arrivalTimestamp": 1699279740000, - "arrivalRealTimestamp": 1699279740000, - "arrivalDelay": 0, - "departureLine": "SBL_it1595_1625", - "departureTimestamp": 1699279740000, - "departureRealTimestamp": 1699279740000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "SBL_1624_1625, podst.", - "stopNameRAW": "SBL_1624_1625, podst.", - "stopType": "", - "stopDistance": 7.34, - "pointId": "1641043664728", - "comments": null, - "mainStop": false, - "arrivalLine": "SBL_it1595_1625", - "arrivalTimestamp": 1699279860000, - "arrivalRealTimestamp": 1699279860000, - "arrivalDelay": 0, - "departureLine": "Fw", - "departureTimestamp": 1699279860000, - "departureRealTimestamp": 1699279860000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Orniki Rzeka, po.", - "stopNameRAW": "Orniki Rzeka, po.", - "stopType": "ph", - "stopDistance": 11.32, - "pointId": "1680860463849", - "comments": null, - "mainStop": false, - "arrivalLine": "Op", - "arrivalTimestamp": 1699280040000, - "arrivalRealTimestamp": 1699280040000, - "arrivalDelay": 0, - "departureLine": "Or-OrRz", - "departureTimestamp": 1699280100000, - "departureRealTimestamp": 1699280100000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 1 - }, - { - "stopName": "ORNIKI", - "stopNameRAW": "ORNIKI", - "stopType": "ph", - "stopDistance": 13.92, - "pointId": "1680860229161", - "comments": null, - "mainStop": true, - "arrivalLine": "Or-OrRz", - "arrivalTimestamp": 1699280160000, - "arrivalRealTimestamp": 1699280160000, - "arrivalDelay": 0, - "departureLine": "Or-Pe", - "departureTimestamp": 1699280280000, - "departureRealTimestamp": 1699280280000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 2 - }, - { - "stopName": "Peplin, po.", - "stopNameRAW": "Peplin, po.", - "stopType": "ph", - "stopDistance": 15.57, - "pointId": "1680862076736", - "comments": null, - "mainStop": false, - "arrivalLine": "Or-Pe", - "arrivalTimestamp": 1699280400000, - "arrivalRealTimestamp": 1699280400000, - "arrivalDelay": 0, - "departureLine": "So", - "departureTimestamp": 1699280460000, - "departureRealTimestamp": 1699280460000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 1 - }, - { - "stopName": "Gawrony, po.", - "stopNameRAW": "Gawrony, po.", - "stopType": "ph", - "stopDistance": 19.89, - "pointId": "1551303126423", - "comments": null, - "mainStop": false, - "arrivalLine": "Wt", - "arrivalTimestamp": 1699280700000, - "arrivalRealTimestamp": 1699280700000, - "arrivalDelay": 0, - "departureLine": "Łc-Gw", - "departureTimestamp": 1699280760000, - "departureRealTimestamp": 1699280760000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 1 - }, - { - "stopName": "Łęczyca", - "stopNameRAW": "Łęczyca", - "stopType": "", - "stopDistance": 27.77, - "pointId": "1551303091533", - "comments": null, - "mainStop": true, - "arrivalLine": "Łc-Gw", - "arrivalTimestamp": 1699281180000, - "arrivalRealTimestamp": 1699281180000, - "arrivalDelay": 0, - "departureLine": null, - "departureTimestamp": 0, - "departureRealTimestamp": 0, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": true, - "confirmed": 0, - "stopped": 0, - "stopTime": null - } - ], - "route": "CZERMIN|Łęczyca", - "timetableId": 454995, - "sceneries": ["01afea8c", "4590c058", "2ce4e4b8"] - } - }, - { - "trainNo": 714857, - "mass": 80000, - "speed": 17, - "length": 16, - "distance": 62, - "stockString": "EP08-006", - "driverName": "dan145bis", - "driverId": 28947, - "driverIsSupporter": false, - "driverLevel": 0, - "currentStationHash": "89fcee89", - "currentStationName": "Hetmanice", - "signal": "G", - "connectedTrack": "", - "online": 1, - "lastSeen": 1699279713784, - "region": "eu", - "isTimeout": false, - "timetable": { - "SKR": false, - "TWR": false, - "category": "LTE", - "stopList": [ - { - "stopName": "Tomysłów", - "stopNameRAW": "Tomysłów", - "stopType": "", - "stopDistance": 0, - "pointId": "1673297221546", - "comments": null, - "mainStop": true, - "arrivalLine": null, - "arrivalTimestamp": 0, - "arrivalRealTimestamp": 0, - "arrivalDelay": 0, - "departureLine": "Ws", - "departureTimestamp": 1699279260000, - "departureRealTimestamp": 1699279020000, - "departureDelay": -4, - "beginsHere": true, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": null - }, - { - "stopName": "Hetmanice", - "stopNameRAW": "Hetmanice", - "stopType": "", - "stopDistance": 9.04, - "pointId": "1597258756937", - "comments": null, - "mainStop": true, - "arrivalLine": "Lg", - "arrivalTimestamp": 1699279680000, - "arrivalRealTimestamp": 1699279440000, - "arrivalDelay": -4, - "departureLine": "NW", - "departureTimestamp": 1699279680000, - "departureRealTimestamp": 1699279440000, - "departureDelay": -4, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Most, podg.", - "stopNameRAW": "Most, podg.", - "stopType": "pt", - "stopDistance": 15.59, - "pointId": "1621270524779", - "comments": null, - "mainStop": false, - "arrivalLine": "Pl", - "arrivalTimestamp": 1699280040000, - "arrivalRealTimestamp": 1699279800000, - "arrivalDelay": -4, - "departureLine": "We-Mo", - "departureTimestamp": 1699280220000, - "departureRealTimestamp": 1699279980000, - "departureDelay": -4, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 3 - }, - { - "stopName": "Wełtawa", - "stopNameRAW": "Wełtawa", - "stopType": "", - "stopDistance": 18.37, - "pointId": "1621270473180", - "comments": null, - "mainStop": true, - "arrivalLine": "We-Mo", - "arrivalTimestamp": 1699280460000, - "arrivalRealTimestamp": 1699280220000, - "arrivalDelay": -4, - "departureLine": "Sk", - "departureTimestamp": 1699280460000, - "departureRealTimestamp": 1699280220000, - "departureDelay": -4, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Orniki Rzeka, po.", - "stopNameRAW": "Orniki Rzeka, po.", - "stopType": "", - "stopDistance": 23.25, - "pointId": "1680860463849", - "comments": null, - "mainStop": false, - "arrivalLine": "Op", - "arrivalTimestamp": 1699280640000, - "arrivalRealTimestamp": 1699280400000, - "arrivalDelay": -4, - "departureLine": "Or-OrRz", - "departureTimestamp": 1699280640000, - "departureRealTimestamp": 1699280400000, - "departureDelay": -4, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "ORNIKI", - "stopNameRAW": "ORNIKI", - "stopType": "", - "stopDistance": 25.85, - "pointId": "1680860229161", - "comments": null, - "mainStop": true, - "arrivalLine": "Or-OrRz", - "arrivalTimestamp": 1699280820000, - "arrivalRealTimestamp": 1699280580000, - "arrivalDelay": -4, - "departureLine": null, - "departureTimestamp": 0, - "departureRealTimestamp": 0, - "departureDelay": -4, - "beginsHere": false, - "terminatesHere": true, - "confirmed": 0, - "stopped": 0, - "stopTime": null - } - ], - "route": "Tomysłów|ORNIKI", - "timetableId": 454992, - "sceneries": ["4590c058", "87c1a388", "89fcee89", "e4f9138a"] - } - }, - { - "trainNo": 462621, - "mass": 613400, - "speed": 0, - "length": 341, - "distance": 854, - "stockString": "EP07-1056;110a_PKPIC_Bcdu_01;110a_PKPIC_Bcdu_02;112a_PKPIC_A9ou_01;113a_PKPIC_WRbd_01;111a_PKPIC_B10ou_01;111a_PKPIC_B10ou_01;111a_PKPIC_B10ou_01;111a_PKPIC_B10ou_01;111a_PKPIC_B10ou_01;111a_PKPIC_B9nopuvz_02;111a_PKPIC_B9nopuvz_02;111a_PKPIC_B10ou_01;111a_PKPIC_B9nopuvz_02", - "driverName": "Rafik725", - "driverId": 42734, - "driverIsSupporter": true, - "driverLevel": 9, - "currentStationHash": "4590c058", - "currentStationName": "Orniki", - "signal": "D2", - "connectedTrack": "", - "online": 0, - "lastSeen": 1699278682013, - "region": "eu", - "isTimeout": false - }, - { - "trainNo": 83172, - "mass": 613400, - "speed": 45, - "length": 341, - "distance": 265, - "stockString": "EP07-1056;110a_PKPIC_Bcdu_01;110a_PKPIC_Bcdu_02;112a_PKPIC_A9ou_01;113a_PKPIC_WRbd_01;111a_PKPIC_B10ou_01;111a_PKPIC_B10ou_01;111a_PKPIC_B10ou_01;111a_PKPIC_B10ou_01;111a_PKPIC_B10ou_01;111a_PKPIC_B9nopuvz_02;111a_PKPIC_B9nopuvz_02;111a_PKPIC_B10ou_01;111a_PKPIC_B9nopuvz_02", - "driverName": "Rafik725", - "driverId": 42734, - "driverIsSupporter": true, - "driverLevel": 9, - "currentStationHash": "4e0599d3", - "currentStationName": "Aleksandrów Kujawski", - "signal": "AK_S", - "connectedTrack": "Oc/1", - "online": 1, - "lastSeen": 1699279714235, - "region": "eu", - "isTimeout": false, - "timetable": { - "SKR": false, - "TWR": false, - "category": "MPE", - "stopList": [ - { - "stopName": "ORNIKI", - "stopNameRAW": "ORNIKI", - "stopType": "", - "stopDistance": 0, - "pointId": "1680860229161", - "comments": null, - "mainStop": true, - "arrivalLine": null, - "arrivalTimestamp": 0, - "arrivalRealTimestamp": 0, - "arrivalDelay": 0, - "departureLine": "Or-OrRz", - "departureTimestamp": 1699279080000, - "departureRealTimestamp": 1699279080000, - "departureDelay": 0, - "beginsHere": true, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": null - }, - { - "stopName": "Orniki Rzeka, po.", - "stopNameRAW": "Orniki Rzeka, po.", - "stopType": "", - "stopDistance": 2.6, - "pointId": "1680860463849", - "comments": null, - "mainStop": false, - "arrivalLine": "Or-OrRz", - "arrivalTimestamp": 1699279140000, - "arrivalRealTimestamp": 1699279140000, - "arrivalDelay": 0, - "departureLine": "Op", - "departureTimestamp": 1699279140000, - "departureRealTimestamp": 1699279140000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Hetmanice", - "stopNameRAW": "Hetmanice", - "stopType": "", - "stopDistance": 8.61, - "pointId": "1597258756937", - "comments": null, - "mainStop": true, - "arrivalLine": "NW", - "arrivalTimestamp": 1699279380000, - "arrivalRealTimestamp": 1699279380000, - "arrivalDelay": 0, - "departureLine": "Lg", - "departureTimestamp": 1699279380000, - "departureRealTimestamp": 1699279380000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 1, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Aleksandrów Kujawski", - "stopNameRAW": "Aleksandrów Kujawski", - "stopType": "ph", - "stopDistance": 15.55, - "pointId": "1526676928508", - "comments": null, - "mainStop": true, - "arrivalLine": "Oc", - "arrivalTimestamp": 1699279620000, - "arrivalRealTimestamp": 1699279620000, - "arrivalDelay": 0, - "departureLine": "Ci", - "departureTimestamp": 1699279680000, - "departureRealTimestamp": 1699279680000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 1 - }, - { - "stopName": "Czermin Kolonia, po.", - "stopNameRAW": "Czermin Kolonia, po.", - "stopType": "", - "stopDistance": 19.21, - "pointId": "1604768764485", - "comments": null, - "mainStop": false, - "arrivalLine": "Pg", - "arrivalTimestamp": 1699279860000, - "arrivalRealTimestamp": 1699279860000, - "arrivalDelay": 0, - "departureLine": "CzK-Cz", - "departureTimestamp": 1699279860000, - "departureRealTimestamp": 1699279860000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "CZERMIN", - "stopNameRAW": "CZERMIN", - "stopType": "ph", - "stopDistance": 23.93, - "pointId": "1604768381526", - "comments": null, - "mainStop": true, - "arrivalLine": "CzK-Cz", - "arrivalTimestamp": 1699280040000, - "arrivalRealTimestamp": 1699280040000, - "arrivalDelay": 0, - "departureLine": "Cz-CzPl2", - "departureTimestamp": 1699280160000, - "departureRealTimestamp": 1699280160000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 2 - }, - { - "stopName": "Czermin Południe, po.", - "stopNameRAW": "Czermin Południe, po.", - "stopType": "", - "stopDistance": 26.96, - "pointId": "1604769310125", - "comments": null, - "mainStop": false, - "arrivalLine": "Cz-CzPl2", - "arrivalTimestamp": 1699280220000, - "arrivalRealTimestamp": 1699280220000, - "arrivalDelay": 0, - "departureLine": "SBL_CzPl_it1594", - "departureTimestamp": 1699280220000, - "departureRealTimestamp": 1699280220000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "SBL_1594_1595, podst.", - "stopNameRAW": "SBL_1594_1595, podst.", - "stopType": "", - "stopDistance": 28.29, - "pointId": "1641043515962", - "comments": null, - "mainStop": false, - "arrivalLine": "SBL_CzPl_it1594", - "arrivalTimestamp": 1699280340000, - "arrivalRealTimestamp": 1699280340000, - "arrivalDelay": 0, - "departureLine": "SBL_it1595_1625", - "departureTimestamp": 1699280340000, - "departureRealTimestamp": 1699280340000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "SBL_1624_1625, podst.", - "stopNameRAW": "SBL_1624_1625, podst.", - "stopType": "", - "stopDistance": 31.27, - "pointId": "1641043664728", - "comments": null, - "mainStop": false, - "arrivalLine": "SBL_it1595_1625", - "arrivalTimestamp": 1699280460000, - "arrivalRealTimestamp": 1699280460000, - "arrivalDelay": 0, - "departureLine": "Fw", - "departureTimestamp": 1699280460000, - "departureRealTimestamp": 1699280460000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Most, podg.", - "stopNameRAW": "Most, podg.", - "stopType": "", - "stopDistance": 35.8, - "pointId": "1621270524779", - "comments": null, - "mainStop": false, - "arrivalLine": "Pl", - "arrivalTimestamp": 1699280700000, - "arrivalRealTimestamp": 1699280700000, - "arrivalDelay": 0, - "departureLine": "We-Mo", - "departureTimestamp": 1699280700000, - "departureRealTimestamp": 1699280700000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Wełtawa", - "stopNameRAW": "Wełtawa", - "stopType": "", - "stopDistance": 38.57, - "pointId": "1621270473180", - "comments": null, - "mainStop": true, - "arrivalLine": "We-Mo", - "arrivalTimestamp": 1699280940000, - "arrivalRealTimestamp": 1699280940000, - "arrivalDelay": 0, - "departureLine": null, - "departureTimestamp": 0, - "departureRealTimestamp": 0, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": true, - "confirmed": 0, - "stopped": 0, - "stopTime": null - } - ], - "route": "ORNIKI|Wełtawa", - "timetableId": 454993, - "sceneries": ["87c1a388", "2ce4e4b8", "4e0599d3", "89fcee89", "4590c058"] - } - }, - { - "trainNo": 24485, - "mass": 416300, - "speed": 0, - "length": 218, - "distance": 26, - "stockString": "EP09-012;158a_PKPIC_A9mnopuz_01;113a_PKPIC_WRbd_01;Bau84_PKPIC_B10nou_01;Bau84_PKPIC_B10nou_01;Bau84_PKPIC_B10nou_01;111a_PKPIC_B9nopuvz_01;Bau84_PKPIC_B10nou_01;Bau84_PKPIC_B10nou_01", - "driverName": "Regulson22", - "driverId": 17093, - "driverIsSupporter": true, - "driverLevel": 20, - "currentStationHash": "4590c058", - "currentStationName": "Orniki", - "signal": "D2", - "connectedTrack": "", - "online": 1, - "lastSeen": 1699279709263, - "region": "eu", - "isTimeout": false - }, - { - "trainNo": 930847, - "mass": 74000, - "speed": 34, - "length": 14, - "distance": 3670, - "stockString": "SM42-329_PLREG", - "driverName": "barti123", - "driverId": 10776, - "driverIsSupporter": true, - "driverLevel": 15, - "currentStationHash": "f571b857", - "currentStationName": "wierzbin", - "signal": "We_A", - "connectedTrack": "Wk/1", - "online": 1, - "lastSeen": 1699279724187, - "region": "ru", - "isTimeout": false - }, - { - "trainNo": 202687, - "mass": 253000, - "speed": 0, - "length": 130, - "distance": 740, - "stockString": "2EN57-038+1715", - "driverName": "Sachstrain", - "driverId": 43358, - "driverIsSupporter": false, - "driverLevel": 0, - "currentStationHash": "47693386", - "currentStationName": "Kowalewo", - "signal": "KoA_J", - "connectedTrack": "", - "online": 1, - "lastSeen": 1699279721013, - "region": "eu", - "isTimeout": false, - "timetable": { - "SKR": false, - "TWR": false, - "category": "PWE", - "stopList": [ - { - "stopName": "KOWALEWO", - "stopNameRAW": "KOWALEWO", - "stopType": "", - "stopDistance": 0, - "pointId": "1672560716523", - "comments": null, - "mainStop": true, - "arrivalLine": null, - "arrivalTimestamp": 0, - "arrivalRealTimestamp": 0, - "arrivalDelay": 0, - "departureLine": "Da", - "departureTimestamp": 1699279920000, - "departureRealTimestamp": 1699279920000, - "departureDelay": 0, - "beginsHere": true, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": null - }, - { - "stopName": "SBL_1492_1493, podst.", - "stopNameRAW": "SBL_1492_1493, podst.", - "stopType": "", - "stopDistance": 6.33, - "pointId": "1641043041231", - "comments": null, - "mainStop": false, - "arrivalLine": "Lk", - "arrivalTimestamp": 1699280340000, - "arrivalRealTimestamp": 1699280340000, - "arrivalDelay": 0, - "departureLine": "SBL_it1493_CzPd", - "departureTimestamp": 1699280340000, - "departureRealTimestamp": 1699280340000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Czermin Podgórze, po.", - "stopNameRAW": "Czermin Podgórze, po.", - "stopType": "", - "stopDistance": 7.17, - "pointId": "1604768602045", - "comments": null, - "mainStop": false, - "arrivalLine": "SBL_it1493_CzPd", - "arrivalTimestamp": 1699280340000, - "arrivalRealTimestamp": 1699280340000, - "arrivalDelay": 0, - "departureLine": "SBL_itCzPd_1523", - "departureTimestamp": 1699280340000, - "departureRealTimestamp": 1699280340000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "SBL_1522_1523, podst.", - "stopNameRAW": "SBL_1522_1523, podst.", - "stopType": "", - "stopDistance": 9.4, - "pointId": "1641043328771", - "comments": null, - "mainStop": false, - "arrivalLine": "SBL_itCzPd_1523", - "arrivalTimestamp": 1699280520000, - "arrivalRealTimestamp": 1699280520000, - "arrivalDelay": 0, - "departureLine": "SBL_it1523_Cz", - "departureTimestamp": 1699280520000, - "departureRealTimestamp": 1699280520000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "CZERMIN", - "stopNameRAW": "CZERMIN", - "stopType": "", - "stopDistance": 12.24, - "pointId": "1604768381526", - "comments": null, - "mainStop": true, - "arrivalLine": "SBL_it1523_Cz", - "arrivalTimestamp": 1699280700000, - "arrivalRealTimestamp": 1699280700000, - "arrivalDelay": 0, - "departureLine": "Cz-CzPl2", - "departureTimestamp": 1699280700000, - "departureRealTimestamp": 1699280700000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Czermin Południe, po.", - "stopNameRAW": "Czermin Południe, po.", - "stopType": "", - "stopDistance": 15.27, - "pointId": "1604769310125", - "comments": null, - "mainStop": false, - "arrivalLine": "Cz-CzPl2", - "arrivalTimestamp": 1699280820000, - "arrivalRealTimestamp": 1699280820000, - "arrivalDelay": 0, - "departureLine": "SBL_CzPl_it1594", - "departureTimestamp": 1699280820000, - "departureRealTimestamp": 1699280820000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "SBL_1594_1595, podst.", - "stopNameRAW": "SBL_1594_1595, podst.", - "stopType": "", - "stopDistance": 16.6, - "pointId": "1641043515962", - "comments": null, - "mainStop": false, - "arrivalLine": "SBL_CzPl_it1594", - "arrivalTimestamp": 1699280940000, - "arrivalRealTimestamp": 1699280940000, - "arrivalDelay": 0, - "departureLine": "SBL_it1595_1625", - "departureTimestamp": 1699280940000, - "departureRealTimestamp": 1699280940000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "SBL_1624_1625, podst.", - "stopNameRAW": "SBL_1624_1625, podst.", - "stopType": "", - "stopDistance": 19.58, - "pointId": "1641043664728", - "comments": null, - "mainStop": false, - "arrivalLine": "SBL_it1595_1625", - "arrivalTimestamp": 1699281120000, - "arrivalRealTimestamp": 1699281120000, - "arrivalDelay": 0, - "departureLine": "Fw", - "departureTimestamp": 1699281120000, - "departureRealTimestamp": 1699281120000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "ORNIKI", - "stopNameRAW": "ORNIKI", - "stopType": "", - "stopDistance": 26.06, - "pointId": "1680860229161", - "comments": null, - "mainStop": true, - "arrivalLine": "Wm", - "arrivalTimestamp": 1699281420000, - "arrivalRealTimestamp": 1699281420000, - "arrivalDelay": 0, - "departureLine": "Or-OrRz", - "departureTimestamp": 1699281420000, - "departureRealTimestamp": 1699281420000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Orniki Rzeka, po.", - "stopNameRAW": "Orniki Rzeka, po.", - "stopType": "", - "stopDistance": 28.66, - "pointId": "1680860463849", - "comments": null, - "mainStop": false, - "arrivalLine": "Or-OrRz", - "arrivalTimestamp": 1699281480000, - "arrivalRealTimestamp": 1699281480000, - "arrivalDelay": 0, - "departureLine": "Op", - "departureTimestamp": 1699281480000, - "departureRealTimestamp": 1699281480000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Most, podg.", - "stopNameRAW": "Most, podg.", - "stopType": "", - "stopDistance": 33.01, - "pointId": "1621270524779", - "comments": null, - "mainStop": false, - "arrivalLine": "Pl", - "arrivalTimestamp": 1699281780000, - "arrivalRealTimestamp": 1699281780000, - "arrivalDelay": 0, - "departureLine": "We-Mo", - "departureTimestamp": 1699281780000, - "departureRealTimestamp": 1699281780000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Wełtawa", - "stopNameRAW": "Wełtawa", - "stopType": "", - "stopDistance": 35.78, - "pointId": "1621270473180", - "comments": null, - "mainStop": true, - "arrivalLine": "We-Mo", - "arrivalTimestamp": 1699282020000, - "arrivalRealTimestamp": 1699282020000, - "arrivalDelay": 0, - "departureLine": "Sk", - "departureTimestamp": 1699282020000, - "departureRealTimestamp": 1699282020000, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": false, - "confirmed": 0, - "stopped": 0, - "stopTime": 0 - }, - { - "stopName": "Aleksandrów Kujawski", - "stopNameRAW": "Aleksandrów Kujawski", - "stopType": "", - "stopDistance": 41.13, - "pointId": "1526676928508", - "comments": null, - "mainStop": true, - "arrivalLine": "Oc", - "arrivalTimestamp": 1699282320000, - "arrivalRealTimestamp": 1699282320000, - "arrivalDelay": 0, - "departureLine": null, - "departureTimestamp": 0, - "departureRealTimestamp": 0, - "departureDelay": 0, - "beginsHere": false, - "terminatesHere": true, - "confirmed": 0, - "stopped": 0, - "stopTime": null - } - ], - "route": "KOWALEWO|Aleksandrów Kujawski", - "timetableId": 454996, - "sceneries": ["4e0599d3", "87c1a388", "4590c058", "2ce4e4b8", "47693386"] - } - } - ], - "stationsSWDRStatus": true, - "dispatchersSWDRStatus": true, - "trainsSWDRStatus": true, - "updatersSWDRStatus": true, - "connectedSocketCount": 24 -} From 05c38e10e3e8ed252e210c96e9b3f0f597d3a7b4 Mon Sep 17 00:00:00 2001 From: Spythere Date: Fri, 26 Jan 2024 13:38:45 +0100 Subject: [PATCH 042/137] =?UTF-8?q?hotfix=20postoj=C3=B3w=20pt=20w=20SRJP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/TrainsView/StopLabel.vue | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/TrainsView/StopLabel.vue b/src/components/TrainsView/StopLabel.vue index 7debd3d..d7841fc 100644 --- a/src/components/TrainsView/StopLabel.vue +++ b/src/components/TrainsView/StopLabel.vue @@ -29,8 +29,9 @@ Date: Fri, 26 Jan 2024 13:39:04 +0100 Subject: [PATCH 043/137] bump wersji --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2284120..922dedb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stacjownik", - "version": "1.20.2", + "version": "1.20.3", "private": true, "scripts": { "dev": "vite", From f130e6900b0c242a8676500d908534700591aa30 Mon Sep 17 00:00:00 2001 From: Spythere Date: Fri, 26 Jan 2024 13:54:47 +0100 Subject: [PATCH 044/137] hotfix: brak komentarzy dla ostatniej stacji w RJ --- src/components/TrainsView/TrainSchedule.vue | 59 ++------------------- src/data/mockActiveData.json | 2 +- 2 files changed, 4 insertions(+), 57 deletions(-) diff --git a/src/components/TrainsView/TrainSchedule.vue b/src/components/TrainsView/TrainSchedule.vue index b4cf3dd..e9ac578 100644 --- a/src/components/TrainsView/TrainSchedule.vue +++ b/src/components/TrainsView/TrainSchedule.vue @@ -30,19 +30,12 @@ -
+
-
- -
+
-
+
@@ -121,13 +114,6 @@ export interface TrainScheduleStop { sceneryHash: string; distance: number; - // arrivalTrackCount: number; - // departureTrackCount: number; - - // currentArrivalRoute?: StationRoutesInfo; - // currentDepartureRoute?: StationRoutesInfo; - // nextArrivalRoute?: StationRoutesInfo; - arrivalLine: string | null; departureLine: string | null; @@ -157,8 +143,6 @@ export default defineComponent({ computed: { scheduleStops(): TrainScheduleStop[] { let currentSceneryIndex = 0; - // let lastDepartureTrackCount = 2; - // let lastArrivalTrackCount = 2; return ( this.train.timetableData?.followingStops.map((stop, i, arr) => { @@ -170,33 +154,6 @@ export default defineComponent({ ) currentSceneryIndex++; - // const sceneryInfo = this.apiStore.sceneryData.find( - // (sd) => - // sd.name.toLocaleLowerCase() == - // this.timetableSceneryNames[currentSceneryIndex].toLocaleLowerCase() - // ); - - // const nextSceneryInfo = this.apiStore.sceneryData.find( - // (sd) => - // sd.name.toLocaleLowerCase() == - // this.timetableSceneryNames[currentSceneryIndex + 1]?.toLocaleLowerCase() - // ); - - // const currentDepartureRoute = sceneryInfo?.routesInfo.find( - // (r) => r.routeName == stop.departureLine - // ); - - // const currentArrivalRoute = sceneryInfo?.routesInfo.find( - // (r) => r.routeName == stop.arrivalLine - // ); - - // const nextArrivalRoute = nextSceneryInfo?.routesInfo.find( - // (r) => r.routeName == arr[i + 1]?.arrivalLine - // ); - - // lastDepartureTrackCount = currentDepartureRoute?.routeTracks ?? lastDepartureTrackCount; - // lastArrivalTrackCount = currentArrivalRoute?.routeTracks ?? lastArrivalTrackCount; - return { nameHtml: stop.stopName, nameRaw: stop.stopNameRAW, @@ -217,16 +174,6 @@ export default defineComponent({ arrivalLine: stop.arrivalLine, departureLine: stop.departureLine, - // arrivalSpeed: nextArrivalRoute?.routeSpeed ?? null, - // departureSpeed: currentDepartureRoute?.routeSpeed ?? null, - - // arrivalTrackCount: currentArrivalRoute?.routeTracks ?? lastArrivalTrackCount, - // departureTrackCount: currentDepartureRoute?.routeTracks ?? lastDepartureTrackCount, - - // currentArrivalRoute, - // currentDepartureRoute, - // nextArrivalRoute, - type: stop.stopType, distance: stop.stopDistance, isActive: this.activeMinorStops.includes(i), diff --git a/src/data/mockActiveData.json b/src/data/mockActiveData.json index b59bf96..e6a3164 100644 --- a/src/data/mockActiveData.json +++ b/src/data/mockActiveData.json @@ -9380,7 +9380,7 @@ "stopType": "", "stopDistance": 123.62, "pointId": "1663532077406", - "comments": "test123", + "comments": "test121", "mainStop": true, "arrivalLine": "Sk", "arrivalTimestamp": 1701889320000, From c7da8477fa97ab216c3af9a31a235ce2eeaf7195 Mon Sep 17 00:00:00 2001 From: Spythere Date: Tue, 30 Jan 2024 13:58:47 +0100 Subject: [PATCH 045/137] =?UTF-8?q?przywr=C3=B3cenie=20komunikacji=20po=20?= =?UTF-8?q?WS=20(test)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + src/App.vue | 52 +++++++- src/store/apiStore.ts | 75 +---------- src/store/mainStore.ts | 97 +------------- src/typings/api.ts | 8 ++ src/websocket.ts | 14 ++ yarn.lock | 292 +++++++++++++++++++++++++++++------------ 7 files changed, 286 insertions(+), 253 deletions(-) create mode 100644 src/websocket.ts diff --git a/package.json b/package.json index 922dedb..72235fa 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "howler": "^2.2.4", "pinia": "^2.1.6", "sass": "^1.67.0", + "socket.io-client": "^4.7.4", "vue": "^3.3.4", "vue-i18n": "^9.4.1", "vue-router": "^4.2.4" diff --git a/src/App.vue b/src/App.vue index 7140476..66df5ae 100644 --- a/src/App.vue +++ b/src/App.vue @@ -47,6 +47,8 @@ import TrainModal from './components/TrainsView/TrainModal.vue'; import StorageManager from './managers/storageManager'; import { useApiStore } from './store/apiStore'; import { Status } from './typings/common'; +import { Websocket } from './typings/api'; +import socket from './websocket'; export default defineComponent({ components: { @@ -86,7 +88,39 @@ export default defineComponent({ this.setReleaseURL(); this.setupOfflineHandling(); - this.apiStore.setupAPI(); + this.apiStore.setupStaticAPIData(); + this.connectToWebsocket(); + }, + + async connectToWebsocket() { + this.apiStore.dataStatuses.connection = Status.Data.Loading; + + console.log('ws connecting'); + + socket.on('connect_error', (err) => { + console.error(`WS connection error: ${err.message}`); + + this.apiStore.dataStatuses.connection = Status.Data.Error; + this.apiStore.websocketData = undefined; + }); + + let timeFrom = Date.now(); + socket.on('connect', () => { + socket.emit('CONNECTION', { version: packageInfo.version }, () => { + console.log(`Connection time: ${Date.now() - timeFrom}ms`); + }); + + console.log('ws connected'); + }); + + socket.on('UPDATE', (data: Websocket.Payload) => { + console.log('ws update'); + + this.apiStore.websocketData = data; + this.apiStore.dataStatuses.connection = Status.Data.Loaded; + }); + + this.fetchWebsocketData(); }, setupOfflineHandling() { @@ -101,16 +135,24 @@ export default defineComponent({ handleOfflineMode() { this.store.isOffline = true; - this.apiStore.stopActiveDataScheduler(); - this.apiStore.activeData = undefined; - + this.apiStore.websocketData = undefined; this.apiStore.dataStatuses.connection = Status.Data.Offline; }, handleOnlineMode() { this.store.isOffline = false; - this.apiStore.setupAPI(); + this.apiStore.setupStaticAPIData(); + this.connectToWebsocket(); + }, + + fetchWebsocketData() { + socket.emit('FETCH_DATA', (data: Websocket.Payload) => { + console.log('ws fetch data'); + + this.apiStore.websocketData = data; + this.apiStore.dataStatuses.connection = Status.Data.Loaded; + }); }, changeLang(lang: string) { diff --git a/src/store/apiStore.ts b/src/store/apiStore.ts index d0de6c3..b8000be 100644 --- a/src/store/apiStore.ts +++ b/src/store/apiStore.ts @@ -1,9 +1,11 @@ import { defineStore } from 'pinia'; import http from '../http'; -import { API } from '../typings/api'; +import { API, Websocket } from '../typings/api'; import axios from 'axios'; import { Status } from '../typings/common'; import { StationJSONData } from './typings'; +import { io } from 'socket.io-client'; +import packageInfo from '../../package.json'; export const useApiStore = defineStore('apiStore', { state: () => ({ @@ -20,43 +22,19 @@ export const useApiStore = defineStore('apiStore', { donatorsData: [] as API.Donators.Response, sceneryData: [] as StationJSONData[], - activeDataTimeout: undefined as number | undefined + websocketData: undefined as Websocket.Payload | undefined + + // activeDataTimeout: undefined as number | undefined }), actions: { - async setupAPI() { + async setupStaticAPIData() { // Static data this.fetchStockInfoData(); this.fetchDonatorsData(); this.fetchStationsGeneralInfo(); - - if (this.activeDataTimeout === undefined) this.startActiveDataScheduler(); }, - // async setDataStatuses() { - // if (!window.navigator.onLine) { - // this.dataStatuses.connection = Status.Data.Offline; - // this.dataStatuses.sceneries = Status.Data.Offline; - // this.dataStatuses.trains = Status.Data.Offline; - // this.dataStatuses.dispatchers = Status.Data.Offline; - // this.dataStatuses.timetables = Status.Data.Offline; - // } - - // if (!this.activeData?.activeSceneries) { - // this.dataStatuses.connection = Status.Data.Loaded; - // this.dataStatuses.sceneries = Status.Data.Error; - // this.dataStatuses.trains = Status.Data.Error; - // this.dataStatuses.dispatchers = Status.Data.Error; - - // return; - // } - - // this.dataStatuses.connection = Status.Data.Loaded; - // this.dataStatuses.sceneries = Status.Data.Loaded; - // this.dataStatuses.trains = !this.activeData.trains ? Status.Data.Warning : Status.Data.Loaded; - // this.dataStatuses.dispatchers = Status.Data.Loaded; - // }, - async fetchDonatorsData() { try { const response = await http.get('api/getDonators'); @@ -79,45 +57,6 @@ export const useApiStore = defineStore('apiStore', { } }, - async startActiveDataScheduler() { - if (!window.navigator.onLine) { - this.dataStatuses.connection = Status.Data.Offline; - return; - } - - if (import.meta.env.VITE_API_MODE === 'mock') { - const mockActiveData = await import('../data/mockActiveData.json'); - this.dataStatuses.connection = Status.Data.Loaded; - this.activeData = mockActiveData; - - console.warn('Stacjownik działa w trybie mockowania danych z WS'); - - return; - } - - try { - const data = (await http.get('api/getActiveData')).data; - - this.activeData = data; - this.dataStatuses.connection = Status.Data.Loaded; - } catch (error) { - this.dataStatuses.connection = Status.Data.Error; - console.error('Wystąpił błąd podczas pobierania danych online z API!'); - } finally { - this.activeDataTimeout = window.setTimeout( - () => { - this.startActiveDataScheduler(); - }, - ~~(1000 * (Math.random() * (25 - 20) + 25)) - ); - } - }, - - async stopActiveDataScheduler() { - window.clearTimeout(this.activeDataTimeout); - this.activeDataTimeout = undefined; - }, - async fetchStationsGeneralInfo() { const sceneryData: StationJSONData[] = (await http.get('api/getSceneries')) .data; diff --git a/src/store/mainStore.ts b/src/store/mainStore.ts index d1ef716..d68d534 100644 --- a/src/store/mainStore.ts +++ b/src/store/mainStore.ts @@ -34,7 +34,7 @@ export const useMainStore = defineStore('store', { trainList(): Train[] { const apiStore = useApiStore(); - return (apiStore.activeData?.trains ?? []) + return (apiStore.websocketData?.activeTrains ?? []) .filter((train) => train.timetable || train.online) .map((train) => { const stock = train.stockString.split(';'); @@ -88,9 +88,9 @@ export const useMainStore = defineStore('store', { const apiStore = useApiStore(); if (state.isOffline) return []; - if (!apiStore.activeData?.activeSceneries) return []; + if (!apiStore.websocketData?.activeSceneries) return []; - return apiStore.activeData?.activeSceneries.reduce((list, scenery) => { + return apiStore.websocketData?.activeSceneries.reduce((list, scenery) => { if (scenery.isOnline !== 1 && Date.now() - scenery.lastSeen > 1000 * 60 * 2) return list; if (scenery.dispatcherStatus == Status.ActiveDispatcher.UNKNOWN) return list; @@ -197,96 +197,5 @@ export const useMainStore = defineStore('store', { }; }); } - }, - actions: { - async processStationsOnlineInfo(activeData: API.ActiveData.Response) { - if (!activeData.activeSceneries) return; - - const onlineSceneries = activeData.activeSceneries.reduce((acc, scenery) => { - const savedStation = this.stationList.find((st) => scenery.stationName === st.name); - - if (scenery.isOnline !== 1 && Date.now() - scenery.lastSeen > 1000 * 60 * 2) return acc; - if (scenery.dispatcherStatus == Status.ActiveDispatcher.UNKNOWN) return acc; - - const station = this.stationList.find((s) => s.name === scenery.stationName); - - const scheduledTrains = getScheduledTrains(this.trainList, scenery, station?.generalInfo); - - const stationTrains = getStationTrains( - this.trainList, - scheduledTrains, - this.region.id, - scenery - ); - - // Remove checkpoint duplicates - const uniqueScheduledTrains = scheduledTrains.reduce( - (uniqueList, sTrain) => - uniqueList.find((v) => v.trainId === sTrain.trainId) - ? uniqueList - : [...uniqueList, sTrain], - [] as ScheduledTrain[] - ); - - const dispatcherTimestamp = - scenery.dispatcherStatus == Status.ActiveDispatcher.NO_LIMIT - ? Date.now() + 25500000 - : scenery.dispatcherStatus > 5 - ? scenery.dispatcherStatus - : null; - - const onlineInfo = { - name: scenery.stationName, - hash: scenery.stationHash, - region: scenery.region, - maxUsers: scenery.maxUsers, - currentUsers: scenery.currentUsers, - spawns: parseSpawns(scenery.spawnString), - dispatcherName: scenery.dispatcherName, - dispatcherRate: scenery.dispatcherRate, - dispatcherId: scenery.dispatcherId, - dispatcherExp: scenery.dispatcherExp, - dispatcherIsSupporter: scenery.dispatcherIsSupporter, - scheduledTrains: scheduledTrains, - stationTrains: stationTrains, - dispatcherStatus: scenery.dispatcherStatus, - dispatcherTimestamp: dispatcherTimestamp, - - isOnline: scenery.isOnline == 1, - - scheduledTrainCount: { - all: uniqueScheduledTrains.length, - confirmed: uniqueScheduledTrains.filter((train) => train.stopInfo.confirmed).length, - unconfirmed: uniqueScheduledTrains.filter((train) => !train.stopInfo.confirmed).length - } - }; - - if (savedStation) savedStation.onlineInfo = onlineInfo; - else - this.stationList.push({ - name: onlineInfo.name, - onlineInfo: onlineInfo - }); - - acc.push(onlineInfo); - - return acc; - }, [] as OnlineScenery[]); - - // Reset online info of already offline sceneries - this.stationList - .filter( - (station) => - station.onlineInfo && - onlineSceneries.findIndex( - (os) => os.region == station.onlineInfo!.region && station.name == os.name - ) != -1 - ) - .forEach((station) => (station.onlineInfo = undefined)); - }, - - async changeRegion(region: StoreState['region']) { - this.region = region; - } } }); diff --git a/src/typings/api.ts b/src/typings/api.ts index 0a0d19e..d7bca54 100644 --- a/src/typings/api.ts +++ b/src/typings/api.ts @@ -368,3 +368,11 @@ export namespace GithubAPI { } } } + +export namespace Websocket { + export interface Payload { + activeSceneries: API.ActiveSceneries.Response; + activeTrains: API.ActiveTrains.Response; + connectedSocketCount: number; + } +} diff --git a/src/websocket.ts b/src/websocket.ts new file mode 100644 index 0000000..46b0cc2 --- /dev/null +++ b/src/websocket.ts @@ -0,0 +1,14 @@ +import { io } from 'socket.io-client'; + +const URL = + import.meta.env.VITE_WS_MODE === 'development' + ? 'http://localhost:3001' + : 'https://stacjownik.spythere.eu'; + +const socket = io(URL, { + transports: ['websocket', 'polling'], + rememberUpgrade: true, + reconnection: true +}); + +export default socket; diff --git a/yarn.lock b/yarn.lock index 5108bc9..89e1c13 100644 --- a/yarn.lock +++ b/yarn.lock @@ -42,7 +42,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz" integrity sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.1", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.4.0-0": +"@babel/core@^7.11.1": version "7.20.7" resolved "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz" integrity sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw== @@ -929,11 +929,116 @@ resolved "https://registry.npmjs.org/@canvas/image-data/-/image-data-1.0.0.tgz" integrity sha512-BxOqI5LgsIQP1odU5KMwV9yoijleOPzHL18/YvNqF9KFSGF2K/DLlYAbDQsWqd/1nbaFuSkYD/191dpMtNh4vw== +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + +"@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + "@esbuild/linux-x64@0.18.20": version "0.18.20" resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz" integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + +"@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" @@ -1025,7 +1130,7 @@ "@firebase/util" "1.9.3" tslib "^2.1.0" -"@firebase/app-compat@0.2.19", "@firebase/app-compat@0.x": +"@firebase/app-compat@0.2.19": version "0.2.19" resolved "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.19.tgz" integrity sha512-QkJDqYqjhvs4fTMcRVXQkP9hbo5yfoJXDWkhU4VA5Vzs8Qsp76VPzYbqx5SD5OmBy+bz/Ot1UV8qySPGI4aKuw== @@ -1036,12 +1141,12 @@ "@firebase/util" "1.9.3" tslib "^2.1.0" -"@firebase/app-types@0.9.0", "@firebase/app-types@0.x": +"@firebase/app-types@0.9.0": version "0.9.0" resolved "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz" integrity sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q== -"@firebase/app@0.9.19", "@firebase/app@0.x": +"@firebase/app@0.9.19": version "0.9.19" resolved "https://registry.npmjs.org/@firebase/app/-/app-0.9.19.tgz" integrity sha512-t/SHyZ3xWkR77ZU9VMoobDNFLdDKQ5xqoCAn4o16gTsA1C8sJ6ZOMZ02neMOPxNHuQXVE4tA8ukilnDbnK7uJA== @@ -1326,7 +1431,7 @@ node-fetch "2.6.7" tslib "^2.1.0" -"@firebase/util@1.9.3", "@firebase/util@1.x": +"@firebase/util@1.9.3": version "1.9.3" resolved "https://registry.npmjs.org/@firebase/util/-/util-1.9.3.tgz" integrity sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA== @@ -1431,7 +1536,7 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@1.4.14": +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== @@ -1457,7 +1562,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -1577,6 +1682,11 @@ resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz" integrity sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA== +"@socket.io/component-emitter@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" + integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== + "@surma/rollup-plugin-off-main-thread@^2.2.3": version "2.2.3" resolved "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz" @@ -1597,26 +1707,16 @@ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz" integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== -"@types/node@*": +"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0": version "18.11.18" resolved "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz" integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== -"@types/node@^20.6.2", "@types/node@>= 14": +"@types/node@^20.6.2": version "20.6.2" resolved "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz" integrity sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw== -"@types/node@>=12.12.47": - version "18.11.18" - resolved "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz" - integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== - -"@types/node@>=13.7.0": - version "18.11.18" - resolved "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz" - integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== - "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" @@ -1651,7 +1751,7 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.7.0": +"@typescript-eslint/parser@^6.7.0": version "6.9.1" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.1.tgz" integrity sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg== @@ -1741,14 +1841,14 @@ resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz" integrity sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw== -"@volar/language-core@~1.10.0", "@volar/language-core@1.10.1": +"@volar/language-core@1.10.1", "@volar/language-core@~1.10.0": version "1.10.1" resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.1.tgz" integrity sha512-JnsM1mIPdfGPxmoOcK1c7HYAsL6YOv0TCJ4aW3AXPZN/Jb4R77epDyMZIVudSGjWMbvv/JfUa+rQ+dGKTmgwBA== dependencies: "@volar/source-map" "1.10.1" -"@volar/source-map@~1.10.0", "@volar/source-map@1.10.1": +"@volar/source-map@1.10.1", "@volar/source-map@~1.10.0": version "1.10.1" resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.1.tgz" integrity sha512-3/S6KQbqa7pGC8CxPrg69qHLpOvkiPHGJtWPkI/1AXCsktkJ6gIk/5z4hyuMp8Anvs6eS/Kvp/GZa3ut3votKA== @@ -1772,7 +1872,7 @@ estree-walker "^2.0.2" source-map-js "^1.0.2" -"@vue/compiler-dom@^3.3.0", "@vue/compiler-dom@3.3.4": +"@vue/compiler-dom@3.3.4", "@vue/compiler-dom@^3.3.0": version "3.3.4" resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz" integrity sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w== @@ -1851,7 +1951,7 @@ estree-walker "^2.0.2" magic-string "^0.30.0" -"@vue/reactivity@^3.3.0", "@vue/reactivity@3.3.4": +"@vue/reactivity@3.3.4", "@vue/reactivity@^3.3.0": version "3.3.4" resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz" integrity sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ== @@ -1883,7 +1983,7 @@ "@vue/compiler-ssr" "3.3.4" "@vue/shared" "3.3.4" -"@vue/shared@^3.3.0", "@vue/shared@3.3.4": +"@vue/shared@3.3.4", "@vue/shared@^3.3.0": version "3.3.4" resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz" integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ== @@ -1906,7 +2006,7 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.10.0, acorn@^8.5.0, acorn@^8.9.0: +acorn@^8.10.0, acorn@^8.5.0, acorn@^8.9.0: version "8.10.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== @@ -1921,7 +2021,7 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.6.0, ajv@>=8: +ajv@^8.6.0: version "8.11.2" resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz" integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== @@ -2084,7 +2184,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.21.3, browserslist@^4.21.4, "browserslist@>= 4.21.0": +browserslist@^4.21.3, browserslist@^4.21.4: version "4.21.4" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== @@ -2151,15 +2251,7 @@ chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.2: +chalk@^4.0.0, chalk@^4.0.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -2210,16 +2302,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + color-string@^1.9.0: version "1.9.1" resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" @@ -2314,7 +2406,7 @@ de-indent@^1.0.2: resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz" integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== -debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: +debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -2449,6 +2541,22 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" +engine.io-client@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.5.3.tgz#4cf6fa24845029b238f83c628916d9149c399bc5" + integrity sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + engine.io-parser "~5.2.1" + ws "~8.11.0" + xmlhttprequest-ssl "~2.0.0" + +engine.io-parser@~5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.1.tgz#9f213c77512ff1a6cc0c7a86108a7ffceb16fcfb" + integrity sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ== + es-abstract@^1.19.0, es-abstract@^1.20.4: version "1.20.5" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz" @@ -2545,7 +2653,7 @@ eslint-plugin-prettier@^5.0.0: prettier-linter-helpers "^1.0.0" synckit "^0.8.5" -eslint-plugin-vue@^9.0.0, eslint-plugin-vue@^9.17.0: +eslint-plugin-vue@^9.17.0: version "9.18.1" resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.18.1.tgz" integrity sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg== @@ -2571,7 +2679,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^6.2.0 || ^7.0.0 || ^8.0.0", "eslint@^7.0.0 || ^8.0.0", eslint@^8.49.0, "eslint@>= 8.0.0", eslint@>=6.0.0, eslint@>=7.0.0, eslint@>=8.0.0: +eslint@^8.49.0: version "8.52.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz" integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg== @@ -2852,6 +2960,11 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" @@ -3052,7 +3165,7 @@ ico-endec@*: resolved "https://registry.npmjs.org/ico-endec/-/ico-endec-0.1.6.tgz" integrity sha512-ZdLU38ZoED3g1j3iEyzcQj+wAkY2xfWNkymszfJPoxucIUhK7NayQ+/C4Kv0nDFMIsbtbEHldv3V8PU494/ueQ== -idb@^7.0.1, idb@7.0.1: +idb@7.0.1, idb@^7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz" integrity sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg== @@ -3098,7 +3211,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.3, inherits@^2.0.4, inherits@2: +inherits@2, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3826,7 +3939,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^3.0.3, "prettier@>= 3.0.0", prettier@>=3.0.0: +prettier@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz" integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== @@ -4023,7 +4136,7 @@ rollup-plugin-terser@^7.0.0: serialize-javascript "^4.0.0" terser "^5.0.0" -"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^2.0.0, rollup@^2.43.1: +rollup@^2.43.1: version "2.79.1" resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== @@ -4051,7 +4164,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@^5.0.1, safe-buffer@>=5.1.0, safe-buffer@~5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -4070,7 +4183,7 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -sass@*, sass@^1.67.0: +sass@^1.67.0: version "1.67.0" resolved "https://registry.npmjs.org/sass/-/sass-1.67.0.tgz" integrity sha512-SVrO9ZeX/QQyEGtuZYCVxoeAL5vGlYjJ9p4i4HFuekWl8y/LtJ7tJc10Z+ck1c8xOuoBm2MYzcLfTAffD0pl/A== @@ -4084,28 +4197,7 @@ semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.5: - version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.6: - version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.8: - version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.5.4: +semver@^7.3.5, semver@^7.3.6, semver@^7.3.8, semver@^7.5.4: version "7.5.4" resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -4194,7 +4286,25 @@ slash@^3.0.0: resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -source-map-js@^1.0.2, "source-map-js@>=0.6.2 <2.0.0": +socket.io-client@^4.7.4: + version "4.7.4" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.7.4.tgz#5f0e060ff34ac0a4b4c5abaaa88e0d1d928c64c8" + integrity sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.2" + engine.io-client "~6.5.2" + socket.io-parser "~4.2.4" + +socket.io-parser@~4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" + integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== @@ -4232,13 +4342,6 @@ streamx@^2.15.0: fast-fifo "^1.1.0" queue-tick "^1.0.1" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -4280,6 +4383,13 @@ string.prototype.trimstart@^1.0.6: define-properties "^1.1.4" es-abstract "^1.20.4" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" @@ -4402,7 +4512,7 @@ tempy@^0.6.0: type-fest "^0.16.0" unique-string "^2.0.0" -terser@^5.0.0, terser@^5.4.0: +terser@^5.0.0: version "5.16.1" resolved "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz" integrity sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw== @@ -4485,7 +4595,7 @@ type-fest@^0.20.2: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -typescript@*, typescript@^5.2.2, typescript@>=4.2.0, typescript@>=4.4.4: +typescript@^5.2.2: version "5.2.2" resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== @@ -4591,7 +4701,7 @@ vite-plugin-pwa@^0.16.5: workbox-build "^7.0.0" workbox-window "^7.0.0" -"vite@^3.1.0 || ^4.0.0", vite@^4.0.0, vite@^4.4.9: +vite@^4.4.9: version "4.5.1" resolved "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz" integrity sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA== @@ -4653,7 +4763,7 @@ vue-tsc@^1.8.11: "@vue/typescript" "1.8.11" semver "^7.3.8" -"vue@^2.6.14 || ^3.3.0", vue@^3.0.0, "vue@^3.0.0-0 || ^2.6.0", vue@^3.2.0, vue@^3.2.25, vue@^3.3.4, vue@3.3.4: +vue@^3.3.4: version "3.3.4" resolved "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz" integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw== @@ -4873,7 +4983,7 @@ workbox-sw@7.0.0: resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.0.0.tgz" integrity sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA== -workbox-window@^7.0.0, workbox-window@7.0.0: +workbox-window@7.0.0, workbox-window@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-7.0.0.tgz" integrity sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA== @@ -4895,11 +5005,21 @@ wrappy@1: resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +ws@~8.11.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" + integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== + xml-name-validator@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== +xmlhttprequest-ssl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" + integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" From c06d75b981aa78a7d7c9d215378932b58579eb64 Mon Sep 17 00:00:00 2001 From: Spythere Date: Tue, 30 Jan 2024 14:00:38 +0100 Subject: [PATCH 046/137] lock fix; linting --- package-lock.json | 168 +++++++++++++++++++++++++++++++++++++----- src/store/apiStore.ts | 2 - yarn.lock | 26 +++---- 3 files changed, 161 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4ef64d7..27e3b16 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "stacjownik", - "version": "1.19.4", + "version": "1.20.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "stacjownik", - "version": "1.19.4", + "version": "1.20.3", "dependencies": { "core-js": "^3.32.2", "dotenv": "^16.3.1", @@ -14,6 +14,7 @@ "howler": "^2.2.4", "pinia": "^2.1.6", "sass": "^1.67.0", + "socket.io-client": "^4.7.4", "vue": "^3.3.4", "vue-i18n": "^9.4.1", "vue-router": "^4.2.4" @@ -2840,6 +2841,11 @@ "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==", "dev": true }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, "node_modules/@surma/rollup-plugin-off-main-thread": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", @@ -4156,7 +4162,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -4399,6 +4404,26 @@ "once": "^1.4.0" } }, + "node_modules/engine.io-client": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz", + "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", + "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/es-abstract": { "version": "1.20.5", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz", @@ -5061,9 +5086,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "dev": true, "funding": [ { @@ -5071,7 +5096,6 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -6312,7 +6336,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, "license": "MIT" }, "node_modules/muggle-string": { @@ -7538,6 +7561,32 @@ "node": ">=8" } }, + "node_modules/socket.io-client": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.4.tgz", + "integrity": "sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/source-map": { "version": "0.8.0-beta.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", @@ -8152,9 +8201,9 @@ "dev": true }, "node_modules/vite": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz", - "integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", + "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", "dev": true, "dependencies": { "esbuild": "^0.18.10", @@ -8727,6 +8776,26 @@ "dev": true, "license": "ISC" }, + "node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", @@ -8736,6 +8805,14 @@ "node": ">=12" } }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -10722,6 +10799,11 @@ "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==", "dev": true }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, "@surma/rollup-plugin-off-main-thread": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", @@ -11640,7 +11722,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -11801,6 +11882,23 @@ "once": "^1.4.0" } }, + "engine.io-client": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz", + "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "engine.io-parser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", + "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==" + }, "es-abstract": { "version": "1.20.5", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz", @@ -12286,9 +12384,9 @@ "dev": true }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "dev": true }, "form-data": { @@ -13127,8 +13225,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "muggle-string": { "version": "0.3.1", @@ -13945,6 +14042,26 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, + "socket.io-client": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.4.tgz", + "integrity": "sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" + } + }, + "socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + }, "source-map": { "version": "0.8.0-beta.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", @@ -14377,9 +14494,9 @@ "dev": true }, "vite": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz", - "integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", + "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", "dev": true, "requires": { "esbuild": "^0.18.10", @@ -14776,12 +14893,23 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "requires": {} + }, "xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", "dev": true }, + "xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/src/store/apiStore.ts b/src/store/apiStore.ts index b8000be..4da32d9 100644 --- a/src/store/apiStore.ts +++ b/src/store/apiStore.ts @@ -4,8 +4,6 @@ import { API, Websocket } from '../typings/api'; import axios from 'axios'; import { Status } from '../typings/common'; import { StationJSONData } from './typings'; -import { io } from 'socket.io-client'; -import packageInfo from '../../package.json'; export const useApiStore = defineStore('apiStore', { state: () => ({ diff --git a/yarn.lock b/yarn.lock index 89e1c13..9d6b325 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1684,7 +1684,7 @@ "@socket.io/component-emitter@~3.1.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" + resolved "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz" integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== "@surma/rollup-plugin-off-main-thread@^2.2.3": @@ -2543,7 +2543,7 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: engine.io-client@~6.5.2: version "6.5.3" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.5.3.tgz#4cf6fa24845029b238f83c628916d9149c399bc5" + resolved "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz" integrity sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q== dependencies: "@socket.io/component-emitter" "~3.1.0" @@ -2554,7 +2554,7 @@ engine.io-client@~6.5.2: engine.io-parser@~5.2.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.1.tgz#9f213c77512ff1a6cc0c7a86108a7ffceb16fcfb" + resolved "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz" integrity sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ== es-abstract@^1.19.0, es-abstract@^1.20.4: @@ -2927,9 +2927,9 @@ flatted@^3.2.9: integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== follow-redirects@^1.15.0: - version "1.15.2" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + version "1.15.5" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz" + integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== form-data@^4.0.0: version "4.0.0" @@ -4288,7 +4288,7 @@ slash@^3.0.0: socket.io-client@^4.7.4: version "4.7.4" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.7.4.tgz#5f0e060ff34ac0a4b4c5abaaa88e0d1d928c64c8" + resolved "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.4.tgz" integrity sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg== dependencies: "@socket.io/component-emitter" "~3.1.0" @@ -4298,7 +4298,7 @@ socket.io-client@^4.7.4: socket.io-parser@~4.2.4: version "4.2.4" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" + resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz" integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== dependencies: "@socket.io/component-emitter" "~3.1.0" @@ -4702,9 +4702,9 @@ vite-plugin-pwa@^0.16.5: workbox-window "^7.0.0" vite@^4.4.9: - version "4.5.1" - resolved "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz" - integrity sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA== + version "4.5.2" + resolved "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz" + integrity sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w== dependencies: esbuild "^0.18.10" postcss "^8.4.27" @@ -5007,7 +5007,7 @@ wrappy@1: ws@~8.11.0: version "8.11.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" + resolved "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz" integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== xml-name-validator@^4.0.0: @@ -5017,7 +5017,7 @@ xml-name-validator@^4.0.0: xmlhttprequest-ssl@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" + resolved "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz" integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== y18n@^5.0.5: From bb7ccf98fdae05bcc72b22a1e15b9fc6c2556a6d Mon Sep 17 00:00:00 2001 From: Spythere Date: Tue, 30 Jan 2024 16:41:27 +0100 Subject: [PATCH 047/137] bump wersji --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 72235fa..36c818c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stacjownik", - "version": "1.20.3", + "version": "1.20.4", "private": true, "scripts": { "dev": "vite", From 30fce3787b9bc587c47d6049963bc545e7141f91 Mon Sep 17 00:00:00 2001 From: Spythere Date: Fri, 2 Feb 2024 21:13:21 +0100 Subject: [PATCH 048/137] usprawnienia pobierania danych; statusy SWDR na semaforze --- src/App.vue | 50 +----- src/components/App/StatusIndicator.vue | 207 ++++++++++++------------- src/store/apiStore.ts | 46 ++++-- src/store/mainStore.ts | 7 +- src/typings/api.ts | 12 ++ src/websocket.ts | 14 -- 6 files changed, 158 insertions(+), 178 deletions(-) delete mode 100644 src/websocket.ts diff --git a/src/App.vue b/src/App.vue index 66df5ae..b71478b 100644 --- a/src/App.vue +++ b/src/App.vue @@ -47,8 +47,6 @@ import TrainModal from './components/TrainsView/TrainModal.vue'; import StorageManager from './managers/storageManager'; import { useApiStore } from './store/apiStore'; import { Status } from './typings/common'; -import { Websocket } from './typings/api'; -import socket from './websocket'; export default defineComponent({ components: { @@ -88,39 +86,7 @@ export default defineComponent({ this.setReleaseURL(); this.setupOfflineHandling(); - this.apiStore.setupStaticAPIData(); - this.connectToWebsocket(); - }, - - async connectToWebsocket() { - this.apiStore.dataStatuses.connection = Status.Data.Loading; - - console.log('ws connecting'); - - socket.on('connect_error', (err) => { - console.error(`WS connection error: ${err.message}`); - - this.apiStore.dataStatuses.connection = Status.Data.Error; - this.apiStore.websocketData = undefined; - }); - - let timeFrom = Date.now(); - socket.on('connect', () => { - socket.emit('CONNECTION', { version: packageInfo.version }, () => { - console.log(`Connection time: ${Date.now() - timeFrom}ms`); - }); - - console.log('ws connected'); - }); - - socket.on('UPDATE', (data: Websocket.Payload) => { - console.log('ws update'); - - this.apiStore.websocketData = data; - this.apiStore.dataStatuses.connection = Status.Data.Loaded; - }); - - this.fetchWebsocketData(); + this.apiStore.setupAPIData(); }, setupOfflineHandling() { @@ -135,24 +101,14 @@ export default defineComponent({ handleOfflineMode() { this.store.isOffline = true; - this.apiStore.websocketData = undefined; + this.apiStore.activeData = undefined; this.apiStore.dataStatuses.connection = Status.Data.Offline; }, handleOnlineMode() { this.store.isOffline = false; - this.apiStore.setupStaticAPIData(); - this.connectToWebsocket(); - }, - - fetchWebsocketData() { - socket.emit('FETCH_DATA', (data: Websocket.Payload) => { - console.log('ws fetch data'); - - this.apiStore.websocketData = data; - this.apiStore.dataStatuses.connection = Status.Data.Loaded; - }); + this.apiStore.setupAPIData(); }, changeLang(lang: string) { diff --git a/src/components/App/StatusIndicator.vue b/src/components/App/StatusIndicator.vue index aa07cc9..9689bf8 100644 --- a/src/components/App/StatusIndicator.vue +++ b/src/components/App/StatusIndicator.vue @@ -36,11 +36,11 @@ - + - + - + - + - + -
+
@@ -194,125 +198,120 @@ - - diff --git a/src/components/JournalView/JournalTimetables/TimetableExtra.vue b/src/components/JournalView/JournalTimetables/TimetableExtra.vue index 5558533..50b9d3b 100644 --- a/src/components/JournalView/JournalTimetables/TimetableExtra.vue +++ b/src/components/JournalView/JournalTimetables/TimetableExtra.vue @@ -53,7 +53,6 @@
- -
diff --git a/src/components/TrainsView/TrainInfo.vue b/src/components/TrainsView/TrainInfo.vue index 7c772ce..0b9064a 100644 --- a/src/components/TrainsView/TrainInfo.vue +++ b/src/components/TrainsView/TrainInfo.vue @@ -97,13 +97,11 @@
- +
- {{ train.locoType }} -  • {{ $t('trains.cars') }}: - {{ train.stockList.length - 1 }} + {{ $t('trains.cars') }}: {{ train.stockList.length - 1 }}
@@ -125,13 +123,13 @@ import styleMixin from '../../mixins/styleMixin'; import trainInfoMixin from '../../mixins/trainInfoMixin'; import Train from '../../scripts/interfaces/Train'; import ProgressBar from '../Global/ProgressBar.vue'; -import TrainThumbnail from '../Global/TrainThumbnail.vue'; import { useMainStore } from '../../store/mainStore'; import { useApiStore } from '../../store/apiStore'; +import StockList from '../Global/StockList.vue'; export default defineComponent({ mixins: [trainInfoMixin, styleMixin], - components: { ProgressBar, TrainThumbnail }, + components: { ProgressBar, StockList }, props: { train: { @@ -153,13 +151,6 @@ export default defineComponent({ }); - - - diff --git a/src/http.ts b/src/http.ts deleted file mode 100644 index 2a8d224..0000000 --- a/src/http.ts +++ /dev/null @@ -1,10 +0,0 @@ -import axios from 'axios'; - -const http = axios.create({ - baseURL: - import.meta.env.VITE_API_MODE === 'development' - ? 'http://localhost:3001' - : 'https://stacjownik.spythere.eu' -}); - -export default http; diff --git a/src/store/apiStore.ts b/src/store/apiStore.ts index 2279f33..49de11a 100644 --- a/src/store/apiStore.ts +++ b/src/store/apiStore.ts @@ -1,12 +1,18 @@ import { defineStore } from 'pinia'; -import http from '../http'; import { API } from '../typings/api'; import { Status } from '../typings/common'; import { StationJSONData } from './typings'; +import axios, { AxiosInstance } from 'axios'; // Update seconds cron for active data scheduler const UPDATE_SECONDS = [3, 23, 43]; +export enum APIMode { + PRODUCTION = 0, + DEV = 1, + MOCK = 2 +} + export const useApiStore = defineStore('apiStore', { state: () => ({ dataStatuses: { @@ -18,11 +24,34 @@ export const useApiStore = defineStore('apiStore', { donatorsData: [] as API.Donators.Response, sceneryData: [] as StationJSONData[], + client: undefined as AxiosInstance | undefined, + activeDataScheduler: undefined as number | undefined }), actions: { async setupAPIData() { + let baseURL = 'https://stacjownik.spythere.eu'; + + switch (import.meta.env.VITE_API_MODE) { + case 'development': + baseURL = 'http://localhost:3001'; + break; + case 'mocking': + baseURL = 'http://localhost:3123'; + break; + default: + break; + } + + this.client = axios.create({ + baseURL + }); + + this.connectToAPI(); + }, + + async connectToAPI() { // Static data this.fetchDonatorsData(); this.fetchStationsGeneralInfo(); @@ -46,7 +75,7 @@ export const useApiStore = defineStore('apiStore', { async fetchActiveData() { try { - const response = await http.get('api/getActiveData'); + const response = await this.client!.get('api/getActiveData'); this.activeData = response.data; this.dataStatuses.connection = Status.Data.Loaded; @@ -60,7 +89,7 @@ export const useApiStore = defineStore('apiStore', { async fetchDonatorsData() { try { - const response = await http.get('api/getDonators'); + const response = await this.client!.get('api/getDonators'); this.donatorsData = response.data; } catch (error) { @@ -69,8 +98,9 @@ export const useApiStore = defineStore('apiStore', { }, async fetchStationsGeneralInfo() { - const sceneryData: StationJSONData[] = (await http.get('api/getSceneries')) - .data; + const sceneryData: StationJSONData[] = ( + await this.client!.get('api/getSceneries') + ).data; if (!sceneryData) { this.dataStatuses.sceneries = Status.Data.Error; diff --git a/src/views/JournalDispatchers.vue b/src/views/JournalDispatchers.vue index 297c5e2..b47fdfb 100644 --- a/src/views/JournalDispatchers.vue +++ b/src/views/JournalDispatchers.vue @@ -37,7 +37,6 @@ diff --git a/src/components/Global/RegionDropdown.vue b/src/components/Global/RegionDropdown.vue index d515ce1..42fc10b 100644 --- a/src/components/Global/RegionDropdown.vue +++ b/src/components/Global/RegionDropdown.vue @@ -59,8 +59,6 @@ export default defineComponent({ 'store.region.id': { handler(regionId) { this.selectedItemIndex = this.regionList.findIndex((reg) => reg.id == regionId); - - console.log('region id', regionId); } }, '$route.query.region': { diff --git a/src/components/Global/StockList.vue b/src/components/Global/StockList.vue index 3a4429b..8ac4d48 100644 --- a/src/components/Global/StockList.vue +++ b/src/components/Global/StockList.vue @@ -98,8 +98,6 @@ export default defineComponent({ fallbackName += isCarPassenger ? 'passenger' : 'cargo'; } - console.log(stockName, fallbackName); - (event.target as HTMLImageElement).src = `/images/icon-${fallbackName}.png`; } } diff --git a/src/components/StationsView/StationFilterCard.vue b/src/components/StationsView/StationFilterCard.vue index ad7f89a..c7baad9 100644 --- a/src/components/StationsView/StationFilterCard.vue +++ b/src/components/StationsView/StationFilterCard.vue @@ -256,8 +256,6 @@ export default defineComponent({ }, handleAuthorsInput() { - console.log(this.authorsInputValue); - this.filterStore.changeFilterValue('authors', this.authorsInputValue); if (this.saveOptions) StorageManager.setStringValue('authors', this.authorsInputValue); diff --git a/src/locales/en.json b/src/locales/en.json index 8630c2c..11ae77d 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -2,6 +2,7 @@ "donations": { "button-title": "TOSS A COIN", "header": "Toss a coin to Stacjownik!", + "donator-title": "Project is supported by more than {count} people, including:", "p1": "Hello o7! This is Spythere, the creator of Stacjownik, Pojazdownik and several other applications that enhance the gameplay of Train Driver 2!", "p2": "{b1} is a completely free tool, created and continuously developed for the Train Driver 2 simulator community since 2020. However, a part of the project is sustained solely through my private financial contribution. Features such as {b2} or {b3} (operating on my {link} - to which you are warmly invited) must function on a dedicated server where they can collect and process data, and then display it on the website.", "p2-b1": "Stacjownik", diff --git a/src/locales/pl.json b/src/locales/pl.json index 2cfd36d..ecf8f06 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -2,6 +2,7 @@ "donations": { "button-title": "GROSZA DAJ", "header": "Grosza daj Stacjownikowi!", + "donator-title": "Projekt wspiera już ponad {count} osób, w tym:", "p1": "Hej o7! Z tej strony Spythere, twórca Stacjownika, Pojazdownika oraz kilku innych aplikacji wspomagających rozgrywkę symulatora Train Driver 2!", "p2": "{b1} to narzędzie całkowicie darmowe, tworzone i rozwijane dla społeczności symulatora TD2 nieprzerwanie od 2020 roku. Jednakże, część projektu jest podtrzymywana wyłącznie dzięki mojemu prywatnemu wkładowi finansowemu. Funkcje takie jak {b2} czy też {b3} działający na moim {link} (na który serdeczne zapraszam) muszą działać na wydzielonym serwerze, gdzie będą mogły zbierać i przetwarzać dane, aby następnie pokazać je na stronie.", "p2-b1": "Stacjownik", diff --git a/src/styles/global.scss b/src/styles/global.scss index 94e5cef..0d3e79b 100644 --- a/src/styles/global.scss +++ b/src/styles/global.scss @@ -49,6 +49,9 @@ body { padding: 0; font-family: 'Quicksand', sans-serif; font-weight: 500; + text-rendering: optimizeLegibility !important; + -webkit-font-smoothing: antialiased !important; + overflow-y: scroll; &.no-scroll { diff --git a/src/views/StationsView.vue b/src/views/StationsView.vue index f6f419a..e52f9de 100644 --- a/src/views/StationsView.vue +++ b/src/views/StationsView.vue @@ -8,9 +8,18 @@ ref="filterCardRef" /> - +
+ @@ -109,4 +118,20 @@ export default defineComponent({ margin-bottom: 0.5em; } + +button.btn-donation { + $btnColor: #254069; + + background-color: $btnColor; + + &:hover { + background-color: lighten($btnColor, 5%); + } + + @include smallScreen { + span { + display: none; + } + } +} From 5f8d7480d114dbc01c40a9dc368e5dd9d1eab7cf Mon Sep 17 00:00:00 2001 From: Spythere Date: Sun, 3 Mar 2024 14:46:37 +0100 Subject: [PATCH 067/137] fix designu --- src/components/Global/StockList.vue | 26 +++++++++++++++++++++---- src/components/TrainsView/TrainInfo.vue | 10 ++++------ 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/components/Global/StockList.vue b/src/components/Global/StockList.vue index 8ac4d48..bc4bc80 100644 --- a/src/components/Global/StockList.vue +++ b/src/components/Global/StockList.vue @@ -1,6 +1,22 @@ From a7861b361dbb0e4aae48bfdc4f086b9bf44e6869 Mon Sep 17 00:00:00 2001 From: Spythere Date: Sun, 3 Mar 2024 15:10:29 +0100 Subject: [PATCH 068/137] =?UTF-8?q?design=20statystyk=20poci=C4=85gu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/TrainsView/TrainInfo.vue | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/components/TrainsView/TrainInfo.vue b/src/components/TrainsView/TrainInfo.vue index d730570..3aae1b5 100644 --- a/src/components/TrainsView/TrainInfo.vue +++ b/src/components/TrainsView/TrainInfo.vue @@ -100,17 +100,18 @@
- - - {{ `${~~((train as any)[stat.name] * (stat.multiplier || 1))}${stat.unit}` }} - - -
+ {{ train.speed }}km/h - - {{ $t('trains.cars') }}: {{ train.stockList.length - 1 }} - +
+ {{ train.length }}m + • + {{ (train.mass / 1000).toFixed(1) }}t + + • + {{ $t('trains.cars') }}: {{ train.stockList.length - 1 }} + +
+ @@ -167,7 +168,7 @@ export default defineComponent({ flex-direction: column; text-align: center; - gap: 0.25em; + gap: 0.5em; } .train-info { From 6f45663c6c5f1add2bbf784af29a56dd489ef004 Mon Sep 17 00:00:00 2001 From: Spythere Date: Sun, 3 Mar 2024 19:04:17 +0100 Subject: [PATCH 069/137] design stock listy --- src/components/Global/StockList.vue | 2 +- src/components/TrainsView/TrainInfo.vue | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Global/StockList.vue b/src/components/Global/StockList.vue index bc4bc80..256dceb 100644 --- a/src/components/Global/StockList.vue +++ b/src/components/Global/StockList.vue @@ -150,7 +150,7 @@ img { p { text-align: center; color: #aaa; - font-size: 0.9em; + font-size: 0.95em; margin-bottom: 1em; } diff --git a/src/components/TrainsView/TrainInfo.vue b/src/components/TrainsView/TrainInfo.vue index 3aae1b5..0e90e00 100644 --- a/src/components/TrainsView/TrainInfo.vue +++ b/src/components/TrainsView/TrainInfo.vue @@ -168,7 +168,7 @@ export default defineComponent({ flex-direction: column; text-align: center; - gap: 0.5em; + line-height: 1.5em; } .train-info { From 9f5d882119361d2f8fe91d7bd3651bf1832af269 Mon Sep 17 00:00:00 2001 From: Spythere Date: Sun, 3 Mar 2024 20:30:05 +0100 Subject: [PATCH 070/137] poprawki tabelki scenerii --- src/components/StationsView/StationTable.vue | 164 ++++++++++--------- src/locales/pl.json | 3 +- src/scripts/data/stationHeaderNames.ts | 3 +- 3 files changed, 88 insertions(+), 82 deletions(-) diff --git a/src/components/StationsView/StationTable.vue b/src/components/StationsView/StationTable.vue index def5b98..10f6603 100644 --- a/src/components/StationsView/StationTable.vue +++ b/src/components/StationsView/StationTable.vue @@ -9,6 +9,7 @@ :key="headerName" @click="changeSorter(headerName)" class="header-text" + :class="headerName" >
@@ -146,51 +147,49 @@
-
- - {{ station.generalInfo.routes.doubleElectrifiedNames.length }} - + + {{ station.generalInfo.routes.singleElectrifiedNames.length }} + - - {{ station.generalInfo.routes.doubleOtherNames.length }} - -
+ + {{ station.generalInfo.routes.singleOtherNames.length }} + +
+ -
+ +
+ + {{ station.generalInfo.routes.doubleElectrifiedNames.length }} + -
- - {{ station.generalInfo.routes.singleElectrifiedNames.length }} - - - - {{ station.generalInfo.routes.singleOtherNames.length }} - -
+ + {{ station.generalInfo.routes.doubleOtherNames.length }} +
@@ -360,7 +359,7 @@ export default defineComponent({ }, changeSorter(headerName: HeadIdsTypes) { - if (headerName == 'general' || headerName == 'routes') return; + if (headerName == 'general') return; this.stationFiltersStore.changeSorter(headerName); } @@ -405,7 +404,10 @@ $rowCol: #424242; table { border-collapse: collapse; + table-layout: fixed; width: 100%; + min-width: 1200px; + white-space: wrap; @include smallScreen() { min-width: auto; @@ -419,16 +421,41 @@ table { position: sticky; top: 0; - &.header-text { - min-width: 10em; + &.station { + width: 200px; + } + + &.min-lvl { + width: 100px; + } + + &.status { + width: 140px; + } + + &.dispatcher { + width: 230px; + } + + &.dispatcher-lvl { + width: 100px; + } + + &.routes-double, + &.routes-single { + width: 75px; + } + + &.general { + width: 160px; + } + + &.user { + width: 150px; } &.header-image { - min-width: 65px; - - &.user { - min-width: 80px; - } + width: 50px; } padding: 0.5em 0.25em; @@ -467,10 +494,11 @@ tr { } td { - padding: 0.25em 1em; + padding: 0.15em 0; text-align: center; - cursor: pointer; + overflow: hidden; + text-overflow: ellipsis; &.inactive { opacity: 0.2; @@ -534,11 +562,6 @@ tr { } .station-info { - /* Images */ - display: flex; - gap: 5px; - justify-content: center; - .icon-info { vertical-align: middle; line-height: 32px; @@ -546,6 +569,7 @@ tr { width: 32px; height: 32px; font-size: 12px; + margin: 0 3px; outline: 2px solid #2b2b2b; border-radius: 5px; @@ -553,28 +577,6 @@ tr { } .station-tracks { - & > div { - display: grid; - grid-template-columns: 3em 3px 3em; - gap: 5px; - justify-content: center; - - & > div { - display: flex; - gap: 5px; - - &.double-tracks { - justify-content: flex-end; - } - - &.single-tracks { - justify-content: flex-start; - } - } - } - - text-align: center; - .no-catenary { background-color: #939393; } @@ -589,10 +591,12 @@ tr { } .track { - width: 1.25em; + display: inline-block; text-align: center; + width: 1.3em; padding: 0.35em 0; font-size: 1.1em; + margin: 0 0.2em; } } diff --git a/src/locales/pl.json b/src/locales/pl.json index ecf8f06..13b9e4e 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -231,7 +231,8 @@ "status": "Status", "dispatcher": "Dyżurny", "dispatcher-lvl": "Poziom\ndyżurnego", - "routes": "Szlaki\n2tor {'|'} 1tor", + "routes-single": "Szlaki\n1-torowe", + "routes-double": "Szlaki\n2-torowe", "general": "Informacje\nogólne", "user": "Maszyniści online", "spawn": "Otwarte spawny", diff --git a/src/scripts/data/stationHeaderNames.ts b/src/scripts/data/stationHeaderNames.ts index 7c018e4..39d7597 100644 --- a/src/scripts/data/stationHeaderNames.ts +++ b/src/scripts/data/stationHeaderNames.ts @@ -4,7 +4,8 @@ export const headIds = [ 'status', 'dispatcher', 'dispatcher-lvl', - 'routes', + 'routes-single', + 'routes-double', 'general' ] as const; From 40bbdbe4fab16df2b0f966d1c3ddf693519f13d0 Mon Sep 17 00:00:00 2001 From: Spythere Date: Sun, 3 Mar 2024 21:44:39 +0100 Subject: [PATCH 071/137] =?UTF-8?q?sortowanie=20po=20liczbie=20szlak=C3=B3?= =?UTF-8?q?w=20i=20ocenie=20dy=C5=BCurnego?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/StationsView/StationTable.vue | 36 ++++++++++---------- src/scripts/data/stationHeaderNames.ts | 1 + src/scripts/utils/filterUtils.ts | 16 +++++++++ src/store/mainStore.ts | 2 ++ 4 files changed, 37 insertions(+), 18 deletions(-) diff --git a/src/components/StationsView/StationTable.vue b/src/components/StationsView/StationTable.vue index 10f6603..7ee0ec4 100644 --- a/src/components/StationsView/StationTable.vue +++ b/src/components/StationsView/StationTable.vue @@ -240,8 +240,12 @@ {{ station.onlineInfo?.maxUsers || 0 }} - - {{ station.onlineInfo?.spawns.length || 0 }} + + {{ station.onlineInfo?.dispatcherRate ?? 0 }} + + + + {{ station.onlineInfo?.spawns.length ?? 0 }} { const routes = scenery.routesInfo.reduce( (acc, route) => { + if (route.hidden) return acc; + const tracksKey = route.routeTracks == 2 ? 'double' : 'single'; const isElectric = route.isElectric; const routesKey: keyof StationRoutes = `${tracksKey}${ From 17f6f9c8efe8112beafbb46055f970db02eb6cb5 Mon Sep 17 00:00:00 2001 From: Spythere Date: Sun, 3 Mar 2024 22:17:15 +0100 Subject: [PATCH 072/137] poprawki designu scenerii --- src/components/Global/StationStatusBadge.vue | 2 +- .../SceneryInfo/SceneryInfoDispatcher.vue | 90 ++++++++++--------- src/views/SceneryView.vue | 1 + 3 files changed, 51 insertions(+), 42 deletions(-) diff --git a/src/components/Global/StationStatusBadge.vue b/src/components/Global/StationStatusBadge.vue index 6301d27..7e455a4 100644 --- a/src/components/Global/StationStatusBadge.vue +++ b/src/components/Global/StationStatusBadge.vue @@ -86,7 +86,7 @@ $online: #09a116; $unknown: #b93c3c; .status-badge { - border-radius: 1rem; + border-radius: 1em; font-weight: 500; padding: 0.2em 0.55em; diff --git a/src/components/SceneryView/SceneryInfo/SceneryInfoDispatcher.vue b/src/components/SceneryView/SceneryInfo/SceneryInfoDispatcher.vue index 231673e..ca5cb42 100644 --- a/src/components/SceneryView/SceneryInfo/SceneryInfoDispatcher.vue +++ b/src/components/SceneryView/SceneryInfo/SceneryInfoDispatcher.vue @@ -1,15 +1,15 @@ @@ -59,45 +66,46 @@ export default defineComponent({ diff --git a/src/views/SceneryView.vue b/src/views/SceneryView.vue index 4429fdd..054d54a 100644 --- a/src/views/SceneryView.vue +++ b/src/views/SceneryView.vue @@ -236,6 +236,7 @@ button.back-btn { height: 95vh; min-height: 750px; max-height: 1000px; + overflow: auto; display: flex; flex-direction: column; From 986c7ba95ef119f5c10a40cd9a65919b2aa63086 Mon Sep 17 00:00:00 2001 From: Spythere Date: Mon, 4 Mar 2024 17:46:09 +0100 Subject: [PATCH 073/137] asdek --- public/images/icon-ASDEK.svg | 4 ++++ .../SceneryInfo/SceneryInfoIcons.vue | 24 ++++++++++++------- src/components/StationsView/StationTable.vue | 8 +++++++ src/locales/en.json | 3 ++- src/locales/pl.json | 1 + src/scripts/interfaces/Station.ts | 1 + 6 files changed, 32 insertions(+), 9 deletions(-) create mode 100644 public/images/icon-ASDEK.svg diff --git a/public/images/icon-ASDEK.svg b/public/images/icon-ASDEK.svg new file mode 100644 index 0000000..9fc1ac7 --- /dev/null +++ b/public/images/icon-ASDEK.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/components/SceneryView/SceneryInfo/SceneryInfoIcons.vue b/src/components/SceneryView/SceneryInfo/SceneryInfoIcons.vue index c06f5af..b7c23fc 100644 --- a/src/components/SceneryView/SceneryInfo/SceneryInfoIcons.vue +++ b/src/components/SceneryView/SceneryInfo/SceneryInfoIcons.vue @@ -28,14 +28,6 @@ >
- SUP (RASP-UZK) - + SUP (RASP-UZK) + + dSAT ASDEK + SUP (RASP-UZK) + + dSAT ASDEK diff --git a/src/locales/en.json b/src/locales/en.json index 11ae77d..0039d70 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -251,7 +251,8 @@ "control-type": "Control type: ", "signals-type": "Signals type: ", "SBL": "This scenery has automatic block signalling (ABS/SBL) system on following routes: ", - "SUP": "Requires the SUP application (level crossing remote control simulator)", + "SUP": "Requires the SUP program (level crossing remote control)", + "ASDEK": "Requires the ASDEK program (defect detection of moving rolling stock)", "TWB-all": "This scenery has two-way route blockade on all routes", "TWB-routes": "This scenery has two-way route blockade on following routes: ", "default": "This scenery is available by default", diff --git a/src/locales/pl.json b/src/locales/pl.json index 13b9e4e..2a4e090 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -245,6 +245,7 @@ "signals-type": "Sygnalizacja: ", "SBL": "Sceneria posiada SBL na szlakach: ", "SUP": "Wymaga programu SUP do kontroli systemu RASP-UZK", + "ASDEK": "Wymaga programu ASDEK do detekcji stanów awaryjnych taboru w ruchu", "default": "Sceneria dostępna domyślnie w paczce z grą", "non-public": "Sceneria niepubliczna", "unavailable": "Sceneria niedostępna", diff --git a/src/scripts/interfaces/Station.ts b/src/scripts/interfaces/Station.ts index 921952a..453f07e 100644 --- a/src/scripts/interfaces/Station.ts +++ b/src/scripts/interfaces/Station.ts @@ -21,6 +21,7 @@ export default interface Station { controlType: string; SUP: boolean; + ASDEK: boolean; authors?: string[]; availability: Availability; From b4a9d4ca3bffe5c8942825b387d05dd2489455ec Mon Sep 17 00:00:00 2001 From: Spythere Date: Mon, 4 Mar 2024 17:50:45 +0100 Subject: [PATCH 074/137] =?UTF-8?q?brakuj=C4=85ce=20t=C5=82umaczenia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/locales/en.json | 6 ++++-- src/locales/pl.json | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/locales/en.json b/src/locales/en.json index 0039d70..c15cdd8 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -235,13 +235,15 @@ "sceneries": { "headers": { "station": "Station", - "min-lvl": "Min. dispatcher\nlevel", + "min-lvl": "Station\nlevel", "status": "Status", "dispatcher": "Dispatcher", "dispatcher-lvl": "Dispatcher\nlevel", - "routes": "Routes\ndouble {'|'} single", + "routes-single": "1-track\nroutes", + "routes-double": "2-track\nroutes", "general": "General info", "user": "Drivers online", + "like": "Dispatcher rating", "spawn": "Spawns online", "timetableAll": "Active timetables", "timetableConfirmed": "Confirmed timetables", diff --git a/src/locales/pl.json b/src/locales/pl.json index 2a4e090..cc8f575 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -227,7 +227,7 @@ "headers": { "station": "Stacja", "abbr": "Skrót\nposterunku", - "min-lvl": "Min. poziom\ndyżurnego", + "min-lvl": "Poziom\nstacji", "status": "Status", "dispatcher": "Dyżurny", "dispatcher-lvl": "Poziom\ndyżurnego", @@ -235,6 +235,7 @@ "routes-double": "Szlaki\n2-torowe", "general": "Informacje\nogólne", "user": "Maszyniści online", + "like": "Ocena dyżurnego", "spawn": "Otwarte spawny", "timetableAll": "Aktywne rozkłady jazdy", "timetableConfirmed": "Zatwierdzone rozkłady jazdy", From 032f82acd2f99ed1a5b62e0f7533a66bfc9f1309 Mon Sep 17 00:00:00 2001 From: Spythere Date: Mon, 4 Mar 2024 18:06:47 +0100 Subject: [PATCH 075/137] =?UTF-8?q?animacje=20status=C3=B3w=20listy=20scen?= =?UTF-8?q?erii;=20fixy=20t=C5=82umacze=C5=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/StationsView/StationTable.vue | 563 ++++++++++--------- src/locales/en.json | 4 +- src/locales/pl.json | 5 +- 3 files changed, 288 insertions(+), 284 deletions(-) diff --git a/src/components/StationsView/StationTable.vue b/src/components/StationsView/StationTable.vue index fcb063e..6ecd927 100644 --- a/src/components/StationsView/StationTable.vue +++ b/src/components/StationsView/StationTable.vue @@ -1,294 +1,298 @@ @@ -400,8 +404,9 @@ $rowCol: #424242; .table_wrapper { overflow: auto; - overflow-y: hidden; font-weight: 500; + height: 90vh; + min-height: 550px; } .no-stations { @@ -430,39 +435,39 @@ table { top: 0; &.station { - width: 200px; + width: 12em; } &.min-lvl { - width: 120px; + width: 4em; } &.status { - width: 140px; + width: 10em; } &.dispatcher { - width: 230px; + width: 12em; } &.dispatcher-lvl { - width: 100px; + width: 6em; } &.routes-double, &.routes-single { - width: 80px; + width: 7em; } &.general { - width: 160px; + width: 10em; } &.header-image { - width: 60px; + width: 3.5em; &.user { - width: 75px; + width: 5em; } } diff --git a/src/locales/en.json b/src/locales/en.json index c15cdd8..2756bdf 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -234,8 +234,8 @@ }, "sceneries": { "headers": { - "station": "Station", - "min-lvl": "Station\nlevel", + "station": "Scenery", + "min-lvl": "Scenery\nlevel", "status": "Status", "dispatcher": "Dispatcher", "dispatcher-lvl": "Dispatcher\nlevel", diff --git a/src/locales/pl.json b/src/locales/pl.json index cc8f575..fe87555 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -225,9 +225,8 @@ }, "sceneries": { "headers": { - "station": "Stacja", - "abbr": "Skrót\nposterunku", - "min-lvl": "Poziom\nstacji", + "station": "Sceneria", + "min-lvl": "Poziom\nscenerii", "status": "Status", "dispatcher": "Dyżurny", "dispatcher-lvl": "Poziom\ndyżurnego", From a19fdbc19d67bcefb9e1754a4ef4dea2ad4f3276 Mon Sep 17 00:00:00 2001 From: Spythere Date: Mon, 4 Mar 2024 18:18:37 +0100 Subject: [PATCH 076/137] hotfix --- src/store/typings.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/store/typings.ts b/src/store/typings.ts index 78e7349..7bce92a 100644 --- a/src/store/typings.ts +++ b/src/store/typings.ts @@ -53,6 +53,7 @@ export interface StationJSONData { controlType: string; SUP: boolean; + ASDEK: boolean; // routes: string; routesInfo: StationRoutesInfo[]; From 03465a148786397a40826c61cbb2fc3d96cdcc36 Mon Sep 17 00:00:00 2001 From: Spythere Date: Mon, 4 Mar 2024 20:31:54 +0100 Subject: [PATCH 077/137] poprawki --- src/components/StationsView/StationTable.vue | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/StationsView/StationTable.vue b/src/components/StationsView/StationTable.vue index 6ecd927..ffd4b39 100644 --- a/src/components/StationsView/StationTable.vue +++ b/src/components/StationsView/StationTable.vue @@ -246,17 +246,17 @@ - {{ station.onlineInfo?.currentUsers || 0 }} + {{ station.onlineInfo?.currentUsers ?? '-' }} / - {{ station.onlineInfo?.maxUsers || 0 }} + {{ station.onlineInfo?.maxUsers ?? '-' }} - - {{ station.onlineInfo?.dispatcherRate ?? 0 }} + + {{ station.onlineInfo?.dispatcherRate ?? '-' }} - {{ station.onlineInfo?.spawns.length ?? 0 }} + {{ station.onlineInfo?.spawns.length ?? '-' }} - {{ station.onlineInfo?.scheduledTrainCount.all }} + {{ station.onlineInfo?.scheduledTrainCount.all ?? '-' }} - {{ station.onlineInfo?.scheduledTrainCount.unconfirmed }} + {{ station.onlineInfo?.scheduledTrainCount.unconfirmed ?? '-' }} - {{ station.onlineInfo?.scheduledTrainCount.confirmed }} + {{ station.onlineInfo?.scheduledTrainCount.confirmed ?? '-' }} From 41b1ab398c1b7b3bc1dd8b2515787ff214710f29 Mon Sep 17 00:00:00 2001 From: Spythere Date: Mon, 4 Mar 2024 20:32:05 +0100 Subject: [PATCH 078/137] bump: 1.22.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dfb4a91..e84f20f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stacjownik", - "version": "1.21.1", + "version": "1.22.0", "private": true, "scripts": { "dev": "vite", From 20826d905d477146c94ef40f1b49cf67cbcc7955 Mon Sep 17 00:00:00 2001 From: Spythere Date: Mon, 4 Mar 2024 21:10:43 +0100 Subject: [PATCH 079/137] =?UTF-8?q?poprawki=20t=C5=82umacze=C5=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/i18n.ts | 19 +++++++++++++++++++ src/locales/pl.json | 2 +- src/main.ts | 18 ++---------------- 3 files changed, 22 insertions(+), 17 deletions(-) create mode 100644 src/i18n.ts diff --git a/src/i18n.ts b/src/i18n.ts new file mode 100644 index 0000000..bf1b9b2 --- /dev/null +++ b/src/i18n.ts @@ -0,0 +1,19 @@ +import enLang from './locales/en.json'; +import plLang from './locales/pl.json'; + +import { createI18n } from 'vue-i18n'; + +const i18n = createI18n({ + locale: 'pl', + legacy: false, + warnHtmlMessage: false, + fallbackLocale: 'pl', + + messages: { + en: enLang, + pl: plLang + }, + enableLegacy: false +}); + +export default i18n; diff --git a/src/locales/pl.json b/src/locales/pl.json index fe87555..4068725 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -2,7 +2,7 @@ "donations": { "button-title": "GROSZA DAJ", "header": "Grosza daj Stacjownikowi!", - "donator-title": "Projekt wspiera już ponad {count} osób, w tym:", + "donator-title": "Projekt ma już ponad {count} wspierających, w tym:", "p1": "Hej o7! Z tej strony Spythere, twórca Stacjownika, Pojazdownika oraz kilku innych aplikacji wspomagających rozgrywkę symulatora Train Driver 2!", "p2": "{b1} to narzędzie całkowicie darmowe, tworzone i rozwijane dla społeczności symulatora TD2 nieprzerwanie od 2020 roku. Jednakże, część projektu jest podtrzymywana wyłącznie dzięki mojemu prywatnemu wkładowi finansowemu. Funkcje takie jak {b2} czy też {b3} działający na moim {link} (na który serdeczne zapraszam) muszą działać na wydzielonym serwerze, gdzie będą mogły zbierać i przetwarzać dane, aby następnie pokazać je na stronie.", "p2-b1": "Stacjownik", diff --git a/src/main.ts b/src/main.ts index eec3e7f..d359bd7 100644 --- a/src/main.ts +++ b/src/main.ts @@ -2,26 +2,12 @@ import { createApp, Directive, ref } from 'vue'; import App from './App.vue'; import router from './router'; -import enLang from './locales/en.json'; -import plLang from './locales/pl.json'; +import i18n from './i18n'; -import { createI18n } from 'vue-i18n'; import { createPinia } from 'pinia'; import useCustomSW from './mixins/useCustomSW'; -const i18n = createI18n({ - locale: 'pl', - legacy: false, - warnHtmlMessage: false, - fallbackLocale: 'pl', - messages: { - en: enLang, - pl: plLang - }, - enableLegacy: false -}); - -// SW +// Service worker useCustomSW(); const clickOutsideDirective: Directive = { From 17ebdace82f3569726dd0259dfbc316e2a915b7f Mon Sep 17 00:00:00 2001 From: Spythere Date: Mon, 4 Mar 2024 21:13:12 +0100 Subject: [PATCH 080/137] fix filtrowania ocenami --- src/scripts/utils/{filterUtils.ts => stationFilterUtils.ts} | 4 ++-- src/store/stationFiltersStore.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/scripts/utils/{filterUtils.ts => stationFilterUtils.ts} (100%) diff --git a/src/scripts/utils/filterUtils.ts b/src/scripts/utils/stationFilterUtils.ts similarity index 100% rename from src/scripts/utils/filterUtils.ts rename to src/scripts/utils/stationFilterUtils.ts index 797b16f..6e9f394 100644 --- a/src/scripts/utils/filterUtils.ts +++ b/src/scripts/utils/stationFilterUtils.ts @@ -72,8 +72,8 @@ export const sortStations = ( case 'like': diff = - (b.onlineInfo ? b.onlineInfo.dispatcherRate : -Infinity) - - (a.onlineInfo ? a.onlineInfo.dispatcherRate : -Infinity); + (a.onlineInfo ? a.onlineInfo.dispatcherRate : -Infinity) - + (b.onlineInfo ? b.onlineInfo.dispatcherRate : -Infinity); break; case 'spawn': diff --git a/src/store/stationFiltersStore.ts b/src/store/stationFiltersStore.ts index cc9a253..d8f8af8 100644 --- a/src/store/stationFiltersStore.ts +++ b/src/store/stationFiltersStore.ts @@ -1,7 +1,7 @@ import { defineStore } from 'pinia'; import inputData from '../data/options.json'; import { useMainStore } from './mainStore'; -import { filterStations, sortStations } from '../scripts/utils/filterUtils'; +import { filterStations, sortStations } from '../scripts/utils/stationFilterUtils'; import { HeadIdsTypes } from '../scripts/data/stationHeaderNames'; import StorageManager from '../managers/storageManager'; import { Filter } from '../components/StationsView/typings'; From 436e3e63f9fe26647e71899f85c277bcc1b205b1 Mon Sep 17 00:00:00 2001 From: Spythere Date: Tue, 5 Mar 2024 15:27:42 +0100 Subject: [PATCH 081/137] hotfixy --- src/App.vue | 6 +++++- src/components/App/UpdateModal.vue | 19 +++++++++++++++++++ src/components/StationsView/StationTable.vue | 2 +- src/components/TrainsView/newFile.ts | 14 -------------- 4 files changed, 25 insertions(+), 16 deletions(-) create mode 100644 src/components/App/UpdateModal.vue delete mode 100644 src/components/TrainsView/newFile.ts diff --git a/src/App.vue b/src/App.vue index 6fdb05c..09c9829 100644 --- a/src/App.vue +++ b/src/App.vue @@ -6,6 +6,8 @@ + +
@@ -47,13 +49,15 @@ import TrainModal from './components/TrainsView/TrainModal.vue'; import StorageManager from './managers/storageManager'; import { useApiStore } from './store/apiStore'; import { Status } from './typings/common'; +import UpdateModal from './components/App/UpdateModal.vue'; export default defineComponent({ components: { Clock, StatusIndicator, AppHeader, - TrainModal + TrainModal, + UpdateModal }, data: () => ({ diff --git a/src/components/App/UpdateModal.vue b/src/components/App/UpdateModal.vue new file mode 100644 index 0000000..dd46a77 --- /dev/null +++ b/src/components/App/UpdateModal.vue @@ -0,0 +1,19 @@ + + + + + diff --git a/src/components/StationsView/StationTable.vue b/src/components/StationsView/StationTable.vue index ffd4b39..4b84614 100644 --- a/src/components/StationsView/StationTable.vue +++ b/src/components/StationsView/StationTable.vue @@ -1,6 +1,6 @@