diff --git a/package.json b/package.json index 7f9655e..e7b806e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stacjownik", - "version": "1.27.0", + "version": "1.28.0", "private": true, "type": "module", "scripts": { diff --git a/public/site.webmanifest b/public/site.webmanifest index 98b71b8..957439b 100644 --- a/public/site.webmanifest +++ b/public/site.webmanifest @@ -13,7 +13,7 @@ "type": "image/png" } ], - "theme_color": "#ffc014", + "theme_color": "#4d4d4d", "background_color": "#4d4d4d", "display": "standalone", "start_url": "." diff --git a/src/components/Global/StockList.vue b/src/components/Global/StockList.vue index a85ea62..fe0a894 100644 --- a/src/components/Global/StockList.vue +++ b/src/components/Global/StockList.vue @@ -8,7 +8,7 @@ :key="i" >
-

{{ vehicleName.replace(/_/g, ' ') }}

+
{{ vehicleName.replace(/_/g, ' ') }}
({{ vehicleCargo }})
@@ -180,7 +180,6 @@ export default defineComponent({ align-items: flex-end; overflow: auto; margin: 0 auto; - padding: 1em 0; } ul > li > span { @@ -189,20 +188,11 @@ ul > li > span { cursor: crosshair; } -img { - max-height: 60px; - width: auto; - height: auto; -} - -img.traction-only { - max-width: 100%; -} - .stock-text { text-align: center; color: #aaa; font-size: 0.9em; margin-bottom: 0.25em; + padding: 0.25em 0; } diff --git a/src/components/Global/VehicleThumbnail.vue b/src/components/Global/VehicleThumbnail.vue index 206dfa6..e5c6c1b 100644 --- a/src/components/Global/VehicleThumbnail.vue +++ b/src/components/Global/VehicleThumbnail.vue @@ -1,5 +1,5 @@ diff --git a/src/components/JournalView/JournalDispatchers/JournalDispatchersList.vue b/src/components/JournalView/JournalDispatchers/JournalDispatchersList.vue index 9260f46..91942e0 100644 --- a/src/components/JournalView/JournalDispatchers/JournalDispatchersList.vue +++ b/src/components/JournalView/JournalDispatchers/JournalDispatchersList.vue @@ -1,48 +1,44 @@ + + diff --git a/src/components/JournalView/JournalTimetables/JournalTimetableEntry.vue b/src/components/JournalView/JournalTimetables/JournalTimetableEntry.vue new file mode 100644 index 0000000..f68f9bc --- /dev/null +++ b/src/components/JournalView/JournalTimetables/JournalTimetableEntry.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/src/components/JournalView/JournalTimetables/JournalTimetablesList.vue b/src/components/JournalView/JournalTimetables/JournalTimetablesList.vue index 17b2d96..f82a881 100644 --- a/src/components/JournalView/JournalTimetables/JournalTimetablesList.vue +++ b/src/components/JournalView/JournalTimetables/JournalTimetablesList.vue @@ -1,63 +1,37 @@ - - diff --git a/src/components/JournalView/typings.ts b/src/components/JournalView/typings.ts index 447c427..367d002 100644 --- a/src/components/JournalView/typings.ts +++ b/src/components/JournalView/typings.ts @@ -66,4 +66,16 @@ export namespace Journal { iconName: string; disabled: boolean; } + + export interface TimetableStopDetails { + stopName: string; + arrivalTimestamp: number; + scheduledArrivalTimestamp: number; + departureTimestamp: number; + scheduledDepartureTimestamp: number; + stopTime: number; + stopType: string; + isConfirmed: boolean; + } } + diff --git a/src/components/StationsView/StationTable.vue b/src/components/StationsView/StationTable.vue index 76caee8..0a8d925 100644 --- a/src/components/StationsView/StationTable.vue +++ b/src/components/StationsView/StationTable.vue @@ -407,9 +407,9 @@ export default defineComponent({ $rowCol: #424242; .station_table { - height: 90vh; + height: calc(100vh - 11em); max-height: 2000px; - min-height: 700px; + min-height: 500px; overflow: auto; font-weight: 500; } diff --git a/src/components/Tooltip/BaseTooltip.vue b/src/components/Tooltip/BaseTooltip.vue index 6e4a14f..7c97ee6 100644 --- a/src/components/Tooltip/BaseTooltip.vue +++ b/src/components/Tooltip/BaseTooltip.vue @@ -29,7 +29,7 @@ export default defineComponent({ border-radius: 0.25em; width: 100%; - background-color: #333; + background-color: #1f1f1f; box-shadow: 0 0 5px 2px #aaa; } diff --git a/src/components/Tooltip/Tooltip.vue b/src/components/Tooltip/Tooltip.vue index 060d312..029fe26 100644 --- a/src/components/Tooltip/Tooltip.vue +++ b/src/components/Tooltip/Tooltip.vue @@ -13,6 +13,8 @@ import BaseTooltip from './BaseTooltip.vue'; import SpawnsTooltip from './SpawnsTooltip.vue'; import UsersTooltip from './UsersTooltip.vue'; +const BOX_PADDING_PX = 20; + export default defineComponent({ components: { DonatorTooltip, VehiclePreviewTooltip, BaseTooltip, SpawnsTooltip, UsersTooltip }, @@ -33,14 +35,14 @@ export default defineComponent({ const boxWidth = previewEl.getBoundingClientRect().width; let translateX = '0', - translateY = '30px'; + translateY = `calc(-100% - ${BOX_PADDING_PX}px)`; - if (val[0] <= boxWidth / 2) { + if (val[0] <= boxWidth / 2 + BOX_PADDING_PX) { previewEl.style.left = '0'; - translateX = '0px'; - } else if (val[0] >= clientWidth - boxWidth / 2) { + translateX = BOX_PADDING_PX + 'px'; + } else if (val[0] >= clientWidth - boxWidth / 2 - BOX_PADDING_PX) { previewEl.style.left = '100%'; - translateX = '-100%'; + translateX = `calc(-100% - ${BOX_PADDING_PX}px)`; } else { previewEl.style.left = `${val[0]}px`; translateX = '-50%'; @@ -49,10 +51,10 @@ export default defineComponent({ previewEl.style.top = `${val[1]}px`; const isOutside = - val[1] + previewEl.getBoundingClientRect().height + 30 >= - window.innerHeight + window.scrollY; + val[1] - previewEl.getBoundingClientRect().height <= + window.scrollY + BOX_PADDING_PX * 2; - if (isOutside) translateY = 'calc(-100% - 30px)'; + if (isOutside) translateY = BOX_PADDING_PX + 'px'; previewEl.style.transform = `translate(${translateX}, ${translateY})`; }); } diff --git a/src/components/Tooltip/VehiclePreviewTooltip.vue b/src/components/Tooltip/VehiclePreviewTooltip.vue index a677bff..2d1e929 100644 --- a/src/components/Tooltip/VehiclePreviewTooltip.vue +++ b/src/components/Tooltip/VehiclePreviewTooltip.vue @@ -89,7 +89,7 @@ export default defineComponent({ .tooltip-content { width: 300px; min-height: 200px; - background-color: #333; + background-color: #1f1f1f; box-shadow: 0 0 10px 2px #aaa; padding: 0.5em; diff --git a/src/components/TrainsView/StopLabel.vue b/src/components/TrainsView/StopLabel.vue index 15731bc..4730f65 100644 --- a/src/components/TrainsView/StopLabel.vue +++ b/src/components/TrainsView/StopLabel.vue @@ -4,10 +4,10 @@ :data-minor="stop.isSBL || (stop.nameRaw.endsWith(', po') && !stop.duration)" > - + - + - + TWR - + SKR @@ -129,6 +139,20 @@
{{ displayTrainPosition(train) }}
+ +
+
+ TWR - {{ $t('general.TWR') }} + ({{ train.timetableData?.warningNotes }}) +
+ +
+ SKR - {{ $t('general.SKR') }} +
+
@@ -199,7 +223,7 @@ export default defineComponent({ query: { 'search-driver': this.train.driverName } - } + }; } } }); @@ -226,6 +250,10 @@ export default defineComponent({ line-height: 1.5em; } +.train-dangers { + margin-top: 0.5em; +} + .train-info { display: grid; grid-template-columns: 2fr 1fr; diff --git a/src/components/TrainsView/TrainTable.vue b/src/components/TrainsView/TrainTable.vue index acb7c20..a16a8fa 100644 --- a/src/components/TrainsView/TrainTable.vue +++ b/src/components/TrainsView/TrainTable.vue @@ -82,10 +82,10 @@ export default defineComponent({ @import '../../styles/animations.scss'; .train-table { - position: relative; + height: calc(100vh - 11em); + min-height: 500px; - height: 90vh; - min-height: 550px; + position: relative; overflow-y: auto; overflow-x: hidden; } diff --git a/src/locales/en.json b/src/locales/en.json index fa92d66..68f3c50 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -83,7 +83,9 @@ "ZN": "inspection / diagnostic type", "ZU": "other maintenance type", - "ZG": "emergency (deprecated category)", + "ZG": "emergency (deprecated)", + + "AP": "voivodeship regio (deprecated)", "E": "electric loco", "J": "EMU", @@ -407,9 +409,10 @@ "driver-return-link": "GO BACK", "driver-not-found-header": "Train not found! :/", - "driver-not-found-desc-1": "This train has already been terminated or it's offline.", + "driver-not-found-desc-1": "This train has already been terminated, changed its number or is offline.", "driver-not-found-desc-2": "You can browse timetable history in the", "driver-not-found-journal": "TIMETABLES JOURNAL", + "driver-not-found-others": "Player {driver} is online as:", "driver-not-found-return": "GO BACK TO THE MAIN SITE" }, "train-stats": { @@ -438,6 +441,7 @@ "no-further-data": "No further data for current parameters", "loading-further-data": "Loading...", + "route-length": "Route length:", "station-count": "Stations:", @@ -455,11 +459,16 @@ "minutes": "{value} min | {value} mins", "seconds": "{value} s", - "stock-info": "DETAILS", + "entry-details": "DETAILS", + "no-entry-details": "NO DETAILS AVAILABLE", + "stock-length": "Length", "stock-mass": "Mass", "stock-max-speed": "Max. speed", + "stock-dangers": "ADDITIONAL NOTES", + "stock-preview": "STOCK PREVIEW", + "load-data": "Load further data...", "last-seen-at": "Last seen at", diff --git a/src/locales/pl.json b/src/locales/pl.json index 86815a9..2842955 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -82,6 +82,8 @@ "ZU": "inny utrzymaniowy", "ZG": "ratunkowy (kat. wycofana)", + "AP": "wojewódzki osobowy (kat. wycofana)", + "E": "elektrowóz", "J": "EZT", "S": "spalinowóz", @@ -393,9 +395,10 @@ "driver-return-link": "POWRÓT", "driver-not-found-header": "Nie znaleziono pociągu! :/", - "driver-not-found-desc-1": "Ten pociąg prawdopodobnie zakończył już swój bieg lub jest offline.", + "driver-not-found-desc-1": "Ten pociąg prawdopodobnie zakończył już swój bieg, zmienił numer lub jest offline.", "driver-not-found-desc-2": "Historię rozkładów jazdy możesz przejrzeć w", "driver-not-found-journal": "DZIENNIKU RJ", + "driver-not-found-others": "Gracz {driver} jest online jako:", "driver-not-found-return": "WRÓĆ NA STRONĘ GŁÓWNĄ" }, "train-stats": { @@ -440,11 +443,16 @@ "timetable-abandoned": "PORZUCONY", "timetable-online-button": "RJ ONLINE", - "stock-info": "SZCZEGÓŁY", + "entry-details": "SZCZEGÓŁY", + "no-entry-details": "BRAK DOSTĘPNYCH SZCZEGÓŁÓW", + "stock-length": "Długość", "stock-mass": "Masa", "stock-max-speed": "Prędkość maks.", + "stock-dangers": "DODATKOWE UWAGI", + "stock-preview": "PODGLĄD SKŁADU", + "load-data": "Pobierz dalszą historię...", "last-seen-at": "Ostatnio widziany na: ", diff --git a/src/mixins/dateMixin.ts b/src/mixins/dateMixin.ts index e9e5390..cb693e4 100644 --- a/src/mixins/dateMixin.ts +++ b/src/mixins/dateMixin.ts @@ -57,6 +57,10 @@ export default defineComponent({ : ''; }, + dateStringToTimestamp(dateString?: string) { + return dateString ? new Date(dateString).getTime() : 0; + }, + calculateDuration(timestampMs: number, showSeconds = false) { const secondsTotal = Math.floor(timestampMs / 1000); const minsTotal = Math.round(timestampMs / 60000); @@ -70,8 +74,8 @@ export default defineComponent({ minsInHour )}` : showSeconds && secondsTotal <= 60 - ? this.$t('journal.seconds', { value: secondsTotal }, secondsTotal) - : this.$t('journal.minutes', { value: minsTotal }, minsTotal); + ? this.$t('journal.seconds', { value: secondsTotal }, secondsTotal) + : this.$t('journal.minutes', { value: minsTotal }, minsTotal); } } }); diff --git a/src/router/index.ts b/src/router/index.ts index 53ec168..90de42b 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -69,7 +69,8 @@ const router = createRouter({ if ( (to.name == 'SceneryView' || to.name == 'DriverView') && from.name !== to.name && - from.query['view'] === undefined + from.query['view'] === undefined && + !savedPosition ) return { el: `.app_main`, top: -15 }; @@ -79,10 +80,4 @@ const router = createRouter({ routes }); -router.beforeEach((to, from, next) => { - next((vm) => { - (vm as any)['xd'] = 'xd'; - }); -}); - export default router; diff --git a/src/store/apiStore.ts b/src/store/apiStore.ts index a8ddd86..69f84e5 100644 --- a/src/store/apiStore.ts +++ b/src/store/apiStore.ts @@ -19,6 +19,7 @@ export const useApiStore = defineStore('apiStore', { sceneryData: [] as StationJSONData[], nextUpdateTime: 0, + nextDataCheckTime: 0, client: undefined as AxiosInstance | undefined, @@ -48,17 +49,26 @@ export const useApiStore = defineStore('apiStore', { }, async connectToAPI() { - // Static data - this.fetchDonatorsData(); - this.fetchStationsGeneralInfo(); - this.fetchVehiclesInfo(); - window.requestAnimationFrame(this.updateTick); }, updateTick(t: number) { if (this.dataStatuses.connection == Status.Data.Offline) return; + // Static data refresh + if (t >= this.nextDataCheckTime) { + this.fetchDonatorsData(); + this.fetchVehiclesInfo(); + + // Revalidation after staling + this.fetchStationsGeneralInfo().then(() => { + this.fetchStationsGeneralInfo(); + }); + + this.nextDataCheckTime = t + 3600000; + } + + // Active data fefresh if (t >= this.nextUpdateTime) { this.fetchActiveData(); this.nextUpdateTime = t + 20000; @@ -68,17 +78,6 @@ export const useApiStore = defineStore('apiStore', { }, async fetchActiveData() { - // if (import.meta.env.VITE_API_ACTIVE_DATA_MODE == 'mocking') { - // import('../../tests/data/getActiveData.json').then((data) => { - // console.warn('activeData: mocking mode'); - // this.activeData = data.default as API.ActiveData.Response; - - // this.dataStatuses.connection = Status.Data.Loaded; - // }); - - // return; - // } - if (!this.activeData) this.dataStatuses.connection = Status.Data.Loading; try { @@ -105,7 +104,7 @@ export const useApiStore = defineStore('apiStore', { async fetchStationsGeneralInfo() { try { const sceneryData: StationJSONData[] = ( - await this.client!.get('api/getSceneries') + await this.client!.get(`api/getSceneries`) ).data; this.dataStatuses.sceneries = Status.Data.Loaded; @@ -117,16 +116,6 @@ export const useApiStore = defineStore('apiStore', { }, async fetchVehiclesInfo() { - // if (import.meta.env.VITE_API_VEHICLES_MODE == 'mocking') { - // import('../../tests/data/vehicles.json').then((data) => { - // console.warn('vehicles.json: mocking mode'); - // this.vehiclesData = data.default; - // this.dataStatuses.vehicles = Status.Data.Loaded; - // }); - - // return; - // } - try { const response = await this.client!.get('api/getVehicles'); diff --git a/src/store/mainStore.ts b/src/store/mainStore.ts index 67d5a1c..5dea181 100644 --- a/src/store/mainStore.ts +++ b/src/store/mainStore.ts @@ -94,7 +94,8 @@ export const useMainStore = defineStore('mainStore', { followingStops: timetable.stopList, routeDistance: timetable.stopList[timetable.stopList.length - 1].stopDistance, sceneries: timetable.sceneries, - // sceneryNames: sceneryNames.reverse(), + warningNotes: timetable.warningNotes, + timetablePath: timetable.path.split(';').map((pathElementString) => { const [arrival, station, departure] = pathElementString.split(','); diff --git a/src/styles/JournalSection.scss b/src/styles/JournalSection.scss index 74a34cb..d837c33 100644 --- a/src/styles/JournalSection.scss +++ b/src/styles/JournalSection.scss @@ -11,8 +11,8 @@ .list_wrapper { overflow-y: auto; - height: 90vh; - min-height: 650px; + height: calc(100vh - 12.5em); + min-height: 500px; margin-top: 0.5em; position: relative; @@ -20,7 +20,7 @@ } .journal_wrapper { - max-width: 1500px; + max-width: var(--max-container-width); width: 100%; margin: 0 auto; diff --git a/src/styles/JournalStats.scss b/src/styles/JournalStats.scss index 708bb0a..af5416a 100644 --- a/src/styles/JournalStats.scss +++ b/src/styles/JournalStats.scss @@ -8,7 +8,6 @@ z-index: 99; transform: translateY(1em); - width: 100%; background-color: #1a1a1a; @@ -30,7 +29,7 @@ hr.section-separator { .info-stats { display: flex; flex-wrap: wrap; - justify-content: center; + gap: 0.5em; } diff --git a/src/styles/animations.scss b/src/styles/animations.scss index d489d17..f9db750 100644 --- a/src/styles/animations.scss +++ b/src/styles/animations.scss @@ -41,11 +41,11 @@ $animType: ease-in-out; } &-enter-active { - transition: all $animDuration ease-out; + transition: all $animDuration ease-in-out; } &-leave-active { - transition: all $animDuration ease-out; + transition: all $animDuration ease-in-out; } } diff --git a/src/styles/badge.scss b/src/styles/badge.scss index 46499be..edaa5a9 100644 --- a/src/styles/badge.scss +++ b/src/styles/badge.scss @@ -1,4 +1,5 @@ @import 'variables.scss'; +@import 'responsive.scss'; .badge { font-weight: 600; diff --git a/src/styles/global.scss b/src/styles/global.scss index 04224be..2d3bc8f 100644 --- a/src/styles/global.scss +++ b/src/styles/global.scss @@ -227,6 +227,10 @@ a.a-button { &:hover { background-color: #424242; } + + &:disabled { + opacity: 0.75; + } } &.btn--option { @@ -345,3 +349,11 @@ a.a-button { width: 100%; } } + +.g-separator { + display: block; + width: 100%; + height: 2px; + background-color: #aaa; + margin: 0.5em 0; +} diff --git a/src/typings/api.ts b/src/typings/api.ts index cebe68c..8327bf6 100644 --- a/src/typings/api.ts +++ b/src/typings/api.ts @@ -17,13 +17,13 @@ export namespace API { trainsAPI: APIDataStatus; dispatchersAPI: APIDataStatus; sceneryRequirementsAPI: APIDataStatus; - caches: APICache[]; } export interface Response { activeSceneries?: API.ActiveSceneries.Response; trains?: API.ActiveTrains.Response; apiStatuses?: APIStatuses; + caches: APICache[]; } } @@ -204,6 +204,7 @@ export namespace API { sceneries: string[]; path: string; + warningNotes: string | null; } } @@ -246,8 +247,6 @@ export namespace API { authorName?: string; authorId?: number; - stopsString?: string; - stockString?: string; stockHistory: string[]; @@ -255,17 +254,18 @@ export namespace API { stockLength?: number; maxSpeed?: number; - hashesString?: string; currentSceneryName?: string; currentSceneryHash?: string; - routeSceneries?: string; - checkpointArrivals?: string[]; - checkpointDepartures?: string[]; - checkpointArrivalsScheduled?: string[]; - checkpointDeparturesScheduled?: string[]; - checkpointStopTypes?: string[]; - visitedSceneries?: string[]; + routeSceneries: string; + checkpointArrivals: string[]; + checkpointDepartures: string[]; + checkpointArrivalsScheduled: string[]; + checkpointDeparturesScheduled: string[]; + checkpointStopTypes: string[]; + visitedSceneries: string[]; + sceneryNames: string[]; path: string; + warningNotes: string | null; } export type Response = Data[]; diff --git a/src/typings/common.ts b/src/typings/common.ts index 97f7ad4..7fd270e 100644 --- a/src/typings/common.ts +++ b/src/typings/common.ts @@ -72,19 +72,22 @@ export interface Train { isTimeout: boolean; isSupporter: boolean; - driverRouteLocation: RouteLocationRaw, + driverRouteLocation: RouteLocationRaw; - timetableData?: { - timetableId: number; - category: string; - route: string; - followingStops: TrainStop[]; - TWR: boolean; - SKR: boolean; - routeDistance: number; - sceneries: string[]; - timetablePath: TimetablePathElement[]; - }; + timetableData?: TrainTimetableData; +} + +export interface TrainTimetableData { + timetableId: number; + category: string; + route: string; + followingStops: TrainStop[]; + TWR: boolean; + SKR: boolean; + routeDistance: number; + sceneries: string[]; + timetablePath: TimetablePathElement[]; + warningNotes: string | null; } export interface Station { diff --git a/src/views/DriverView.vue b/src/views/DriverView.vue index 2ddf9a9..01eeb02 100644 --- a/src/views/DriverView.vue +++ b/src/views/DriverView.vue @@ -3,6 +3,13 @@
+ + train icon + + {{ $t('trains.driver-return-link') }} + + +

⦻ {{ $t('trains.driver-not-found-header') }}

-

+ +

{{ $t('trains.driver-not-found-desc-1') }}
{{ $t('trains.driver-not-found-desc-2') }} !

- << {{ $t('trains.driver-not-found-return') }} +

+ + + +

+ +
+ +
+ +
+ << {{ $t('trains.driver-not-found-return') }} +
@@ -78,14 +109,14 @@ $viewBgCol: #1a1a1a; .driver-view { margin: 0 auto; padding: 1em 0; - max-width: 2000px; - min-height: 95vh; + max-width: var(--max-container-width); + min-height: calc(100vh - 7em); } .actions { display: flex; align-items: flex-end; - justify-content: flex-end; + justify-content: space-between; gap: 0.5em; } @@ -108,10 +139,10 @@ $viewBgCol: #1a1a1a; background-color: $viewBgCol; text-align: center; padding: 1em; + border-radius: 0.5em 0.5em; p { - padding: 1em 0; - color: #aaa; + padding: 0.5em 0; } a { @@ -120,6 +151,13 @@ $viewBgCol: #1a1a1a; } } +.other-driver-trains { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 0.5em; +} + @include smallScreen { .actions > a > span.hidable { display: none; diff --git a/src/views/JournalTimetables.vue b/src/views/JournalTimetables.vue index 927de8c..34a2434 100644 --- a/src/views/JournalTimetables.vue +++ b/src/views/JournalTimetables.vue @@ -306,14 +306,6 @@ export default defineComponent({ this.searchersValues[v as Journal.TimetableSearchKey] = options[v] ?? ''; }); - // this.searchersValues['search-date'] = options['search-date'] ?? ''; - // this.searchersValues['search-driver'] = options['search-driver'] ?? ''; - // this.searchersValues['search-train'] = options['search-train'] ?? ''; - // this.searchersValues['search-dispatcher'] = options['search-dispatcher'] ?? ''; - // this.searchersValues['search-issuedFrom'] = options['search-issuedFrom'] ?? ''; - // this.searchersValues['search-via'] = options['search-via'] ?? ''; - // this.searchersValues['search-terminatingAt'] = options['search-terminatingAt'] ?? ''; - this.sorterActive.id = (options['sorter-active'] as Journal.TimetableSorterKey) ?? 'timetableId'; diff --git a/src/views/SceneryView.vue b/src/views/SceneryView.vue index f0b3d8c..a1a3441 100644 --- a/src/views/SceneryView.vue +++ b/src/views/SceneryView.vue @@ -234,7 +234,7 @@ button.back-btn { padding: 1em 0.5em; height: calc(100vh - 0.5em); - min-height: 800px; + min-height: 500px; max-height: 2000px; } diff --git a/src/views/StationsView.vue b/src/views/StationsView.vue index c1b7eff..1da3f61 100644 --- a/src/views/StationsView.vue +++ b/src/views/StationsView.vue @@ -101,7 +101,6 @@ export default defineComponent({ gap: 0.5em; position: relative; - margin-bottom: 0.5em; } @@ -122,4 +121,8 @@ button.btn-donation { } } } + +.count { + padding: 0.5em; +} diff --git a/src/views/TrainsView.vue b/src/views/TrainsView.vue index fa543f1..c5aee1e 100644 --- a/src/views/TrainsView.vue +++ b/src/views/TrainsView.vue @@ -117,13 +117,12 @@ export default defineComponent({ @import '../styles/responsive.scss'; .trains-view { - min-height: 600px; position: relative; } .trains_wrapper { margin: 1rem auto; - max-width: 1500px; + max-width: var(--max-container-width); } .trains_topbar {