poprawki do braku pokazywania się niezapisanych scenerii

This commit is contained in:
2023-12-07 16:16:06 +01:00
parent 188857d335
commit 0dc2c505db
14 changed files with 10678 additions and 85 deletions
@@ -33,6 +33,8 @@
>
{{ historyItem.dispatcherLevel >= 2 ? historyItem.dispatcherLevel : 'L' }}
</b>
<b v-else>?</b>
</td>
<td class="text--primary">
<b>{{ historyItem.dispatcherRate }}</b>
@@ -84,12 +86,10 @@ export default defineComponent({
components: { Loading },
props: {
station: {
type: Object as PropType<Station>,
required: true
type: Object as PropType<Station>
},
onlineScenery: {
type: Object as PropType<OnlineScenery>,
required: false
type: Object as PropType<OnlineScenery>
}
},
@@ -113,10 +113,17 @@ export default defineComponent({
countFrom = 0,
countLimit = 30
): Promise<API.DispatcherHistory.Response | null> {
if (!this.station && !this.onlineScenery) {
this.dataStatus = Status.Data.Loaded;
return null;
}
try {
this.dataStatus = Status.Data.Loading;
const requestString = `${URLs.stacjownikAPI}/api/getDispatchers?stationName=${this.station.name}&countFrom=${countFrom}&countLimit=${countLimit}`;
const requestString = `${URLs.stacjownikAPI}/api/getDispatchers?stationName=${
this.station?.name || this.onlineScenery?.name
}&countFrom=${countFrom}&countLimit=${countLimit}`;
const historyAPIData: API.DispatcherHistory.Response = await (
await axios.get(requestString)
).data;
@@ -130,7 +137,9 @@ export default defineComponent({
}
},
navigateToHistory() {
this.$router.push(`/journal/dispatchers?sceneryName=${this.station.name}`);
this.$router.push(
`/journal/dispatchers?sceneryName=${this.station?.name || this.onlineScenery?.name}`
);
}
}
});
+10 -8
View File
@@ -1,11 +1,11 @@
<template>
<section class="info-header">
<a class="scenery-name" :href="station.generalInfo?.url" target="_blank">
{{ station.name }}
<a class="scenery-name" :href="station?.generalInfo?.url" target="_blank">
{{ stationName.replace(/_/g, ' ') }}
</a>
<div class="scenery-abbrev">
{{ $t('scenery.abbrev') }} <b>{{ station.generalInfo?.abbr }}</b>
<div class="scenery-abbrev" v-if="station?.generalInfo?.abbr">
{{ $t('scenery.abbrev') }} <b>{{ station.generalInfo.abbr }}</b>
</div>
<div class="scenery-hash" v-if="onlineScenery?.hash">#{{ onlineScenery.hash }}</div>
@@ -20,13 +20,16 @@ import { OnlineScenery } from '../../store/typings';
export default defineComponent({
props: {
station: {
type: Object as PropType<Station>,
type: Object as PropType<Station>
},
stationName: {
type: String,
required: true
},
onlineScenery: {
type: Object as PropType<OnlineScenery>,
required: false
type: Object as PropType<OnlineScenery>
}
}
});
@@ -58,4 +61,3 @@ export default defineComponent({
font-size: 1.2em;
}
</style>
../../store/storeTypes
+6 -8
View File
@@ -1,10 +1,10 @@
<template>
<div class="scenery-info">
<section>
<div class="scenery-info-general" v-if="station.generalInfo">
<div class="scenery-info-general">
<SceneryInfoIcons :station="station" />
<div class="scenery-general-list">
<div class="scenery-general-list" v-if="station?.generalInfo">
<span>
<b>{{ $t('availability.title') }}:</b>
{{ $t(`availability.${station.generalInfo.availability}`) }}
@@ -46,11 +46,11 @@
</span>
</div>
<SceneryInfoRoutes :station="station" />
<SceneryInfoRoutes v-if="station" :station="station" />
<div
class="scenery-authors"
v-if="station.generalInfo.authors && station.generalInfo.authors.length > 0"
v-if="station?.generalInfo?.authors && station.generalInfo.authors.length > 0"
>
<b>
{{
@@ -102,13 +102,11 @@ export default defineComponent({
},
props: {
station: {
type: Object as PropType<Station>,
required: true
type: Object as PropType<Station>
},
onlineScenery: {
type: Object as PropType<OnlineScenery>,
required: false
type: Object as PropType<OnlineScenery>
}
}
});
@@ -1,24 +1,33 @@
<template>
<section class="info-icons">
<span
v-if="station.generalInfo && station.generalInfo.reqLevel >= 0"
class="scenery-icon icon-info level"
:style="calculateExpStyle(station.generalInfo.reqLevel)"
>
{{ station.generalInfo.reqLevel >= 2 ? station.generalInfo.reqLevel : 'L' }}
<span v-if="!station || !station.generalInfo">
<img
class="icon-info"
src="/images/icon-unknown.svg"
alt="icon-unknown"
:title="$t('desc.unknown')"
/>
</span>
<span
v-if="station.generalInfo"
v-if="station?.generalInfo && station?.generalInfo.reqLevel >= 0"
class="scenery-icon icon-info level"
:style="calculateExpStyle(station?.generalInfo.reqLevel)"
>
{{ station?.generalInfo.reqLevel >= 2 ? station?.generalInfo.reqLevel : 'L' }}
</span>
<span
v-if="station?.generalInfo"
class="scenery-icon icon-info"
:class="station.generalInfo.controlType.replace('+', '-')"
:title="$t('desc.control-type') + $t(`controls.${station.generalInfo.controlType}`)"
v-html="getControlTypeAbbrev(station.generalInfo.controlType)"
:class="station?.generalInfo.controlType.replace('+', '-')"
:title="$t('desc.control-type') + $t(`controls.${station?.generalInfo.controlType}`)"
v-html="getControlTypeAbbrev(station?.generalInfo.controlType)"
>
</span>
<img
v-if="station.generalInfo?.SUP"
v-if="station?.generalInfo?.SUP"
class="icon-info"
src="/images/icon-SUP.svg"
alt="SUP (RASP-UZK)"
@@ -26,7 +35,7 @@
/>
<img
v-if="station.generalInfo?.signalType"
v-if="station?.generalInfo?.signalType"
class="icon-info"
:src="`/images/icon-${station.generalInfo.signalType}.svg`"
:alt="station.generalInfo.signalType"
@@ -34,7 +43,7 @@
/>
<img
v-if="station.generalInfo?.availability == 'nonPublic'"
v-if="station?.generalInfo?.availability == 'nonPublic'"
class="icon-info"
src="/images/icon-lock.svg"
alt="Non-public scenery"
@@ -42,7 +51,7 @@
/>
<img
v-if="station.generalInfo?.availability == 'unavailable'"
v-if="station?.generalInfo?.availability == 'unavailable'"
class="icon-info"
src="/images/icon-unavailable.svg"
alt="Unavailable scenery"
@@ -50,7 +59,7 @@
/>
<img
v-if="station.generalInfo?.availability == 'abandoned'"
v-if="station?.generalInfo?.availability == 'abandoned'"
class="icon-info"
src="/images/icon-abandoned.svg"
alt="Abandoned scenery"
@@ -58,20 +67,12 @@
/>
<img
v-if="station.generalInfo?.lines"
v-if="station?.generalInfo?.lines"
class="icon-info"
src="/images/icon-real.svg"
alt="real scenery"
:title="`${$t('desc.real')} ${station.generalInfo.lines}`"
/>
<img
v-if="!station.generalInfo"
class="icon-info"
src="/images/icon-unknown.svg"
alt="icon-unknown"
:title="$t('desc.unknown')"
/>
</section>
</template>
@@ -85,8 +86,7 @@ export default defineComponent({
mixins: [stationInfoMixin, styleMixin],
props: {
station: {
type: Object as PropType<Station>,
required: true
type: Object as PropType<Station>
}
}
});
@@ -13,7 +13,7 @@
</span>
</span>
<span class="header_links">
<span class="header_links" v-if="station">
<a
:href="`https://pragotron-td2.web.app/board?name=${station.name}`"
target="_blank"
@@ -201,12 +201,10 @@ export default defineComponent({
props: {
station: {
type: Object as PropType<Station>,
required: true
type: Object as PropType<Station>
},
onlineScenery: {
type: Object as PropType<OnlineScenery>,
required: false
type: Object as PropType<OnlineScenery>
}
},
@@ -243,19 +241,21 @@ export default defineComponent({
computed: {
tabliceZbiorczeHref() {
let url = `https://tablice-td2.web.app/?station=${this.station.name}`;
let url = `https://tablice-td2.web.app/?station=${this.station!.name}`;
if (this.chosenCheckpoint) url += `&checkpoint=${this.chosenCheckpoint}`;
return url;
},
computedScheduledTrains() {
if (!this.station) return [];
return (
this.onlineScenery?.scheduledTrains
?.filter(
(train) =>
train.checkpointName.toLocaleLowerCase() ==
(this.chosenCheckpoint || this.station.name).toLocaleLowerCase() &&
(this.chosenCheckpoint || this.station!.name).toLocaleLowerCase() &&
train.region == this.store.region.id
)
.sort((a, b) => {
@@ -273,6 +273,8 @@ export default defineComponent({
methods: {
loadSelectedOption() {
if (!this.station) return;
this.chosenCheckpoint =
this.station.generalInfo?.checkpoints[0]?.checkpointName || this.station.name;
},
@@ -80,12 +80,10 @@ export default defineComponent({
mixins: [dateMixin, listObserverMixin],
props: {
station: {
type: Object as PropType<Station>,
required: true
type: Object as PropType<Station>
},
onlineScenery: {
type: Object as PropType<OnlineScenery>,
required: false
type: Object as PropType<OnlineScenery>
}
},
@@ -103,8 +101,15 @@ export default defineComponent({
methods: {
async fetchAPIData(countFrom = 0, countLimit = 15) {
if (!this.station && !this.onlineScenery) {
this.dataStatus = Status.Data.Loaded;
return;
}
try {
const requestString = `${URLs.stacjownikAPI}/api/getTimetables?issuedFrom=${this.station.name}&countFrom=${countFrom}&countLimit=${countLimit}`;
const requestString = `${URLs.stacjownikAPI}/api/getTimetables?issuedFrom=${
this.station?.name || this.onlineScenery?.name
}&countFrom=${countFrom}&countLimit=${countLimit}`;
const response: API.TimetableHistory.Response = await (await axios.get(requestString)).data;
@@ -117,7 +122,9 @@ export default defineComponent({
},
navigateToHistory() {
this.$router.push(`/journal/timetables?issuedFrom=${this.station.name}`);
this.$router.push(
`/journal/timetables?issuedFrom=${this.station?.name || this.onlineScenery?.name}`
);
}
},
components: { Loading }