mirror of
https://github.com/Spythere/stacjownik.git
synced 2026-05-03 13:28:11 +00:00
restruct: scenery info components
This commit is contained in:
@@ -1,69 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="scenery-info">
|
<div class="scenery-info">
|
||||||
<section>
|
<section>
|
||||||
<div class="scenery-info-general">
|
<SceneryInfoIcons :station="station" />
|
||||||
<SceneryInfoIcons :station="station" />
|
<SceneryInfoGeneral :station="station" />
|
||||||
|
<SceneryInfoRoutes v-if="station" :station="station" />
|
||||||
|
<SceneryInfoAuthors :station="station" />
|
||||||
|
|
||||||
<div class="scenery-general-list" v-if="station?.generalInfo">
|
|
||||||
<span>
|
|
||||||
<b>{{ $t('availability.title') }}:</b>
|
|
||||||
{{ $t(`availability.${station.generalInfo.availability}`) }}
|
|
||||||
|
|
||||||
<span v-if="station.generalInfo.reqLevel > -1">
|
|
||||||
-
|
|
||||||
{{
|
|
||||||
$t(
|
|
||||||
'scenery.req-level',
|
|
||||||
{ lvl: station.generalInfo.reqLevel },
|
|
||||||
station.generalInfo.reqLevel
|
|
||||||
)
|
|
||||||
}}
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span>
|
|
||||||
• <b>{{ $t('controls.title') }}:</b>
|
|
||||||
{{ $t(`controls.${station.generalInfo.controlType}`) }}
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span>
|
|
||||||
• <b>{{ $t('signals.title') }}:</b>
|
|
||||||
{{ $t(`signals.${station.generalInfo.signalType}`) }}
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span v-if="station.generalInfo.lines">
|
|
||||||
• <b>{{ $t('scenery.lines-title') }}:</b> {{ station.generalInfo.lines }}
|
|
||||||
</span>
|
|
||||||
<span v-if="station.generalInfo.project">
|
|
||||||
• <b>{{ $t('scenery.project-title') }}: </b>
|
|
||||||
<a
|
|
||||||
style="color: salmon; text-decoration: underline; font-weight: bold"
|
|
||||||
:href="station.generalInfo.projectUrl"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
{{ station.generalInfo.project }}
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<SceneryInfoRoutes v-if="station" :station="station" />
|
|
||||||
|
|
||||||
<div
|
|
||||||
class="scenery-authors"
|
|
||||||
v-if="station?.generalInfo?.authors && station.generalInfo.authors.length > 0"
|
|
||||||
>
|
|
||||||
<b>
|
|
||||||
{{
|
|
||||||
$t(
|
|
||||||
'scenery.authors-title',
|
|
||||||
{ authors: station.generalInfo.authors.length },
|
|
||||||
station.generalInfo.authors.length
|
|
||||||
)
|
|
||||||
}}:
|
|
||||||
</b>
|
|
||||||
{{ station.generalInfo.authors.join(', ') }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div style="margin: 2em 0; height: 2px; background-color: white"></div>
|
<div style="margin: 2em 0; height: 2px; background-color: white"></div>
|
||||||
|
|
||||||
@@ -89,15 +31,20 @@ import SceneryInfoIcons from './SceneryInfo/SceneryInfoIcons.vue';
|
|||||||
import SceneryInfoUserList from './SceneryInfo/SceneryInfoUserList.vue';
|
import SceneryInfoUserList from './SceneryInfo/SceneryInfoUserList.vue';
|
||||||
import SceneryInfoSpawnList from './SceneryInfo/SceneryInfoSpawnList.vue';
|
import SceneryInfoSpawnList from './SceneryInfo/SceneryInfoSpawnList.vue';
|
||||||
import SceneryInfoRoutes from './SceneryInfo/SceneryInfoRoutes.vue';
|
import SceneryInfoRoutes from './SceneryInfo/SceneryInfoRoutes.vue';
|
||||||
|
import SceneryInfoGeneral from './SceneryInfo/SceneryInfoGeneral.vue';
|
||||||
|
import SceneryInfoAuthors from "./SceneryInfo/SceneryInfoAuthors.vue";
|
||||||
|
|
||||||
import { ActiveScenery, Station } from '../../typings/common';
|
import { ActiveScenery, Station } from '../../typings/common';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components: {
|
components: {
|
||||||
SceneryInfoDispatcher,
|
SceneryInfoDispatcher,
|
||||||
|
SceneryInfoGeneral,
|
||||||
SceneryInfoIcons,
|
SceneryInfoIcons,
|
||||||
|
SceneryInfoAuthors,
|
||||||
SceneryInfoUserList,
|
SceneryInfoUserList,
|
||||||
SceneryInfoSpawnList,
|
SceneryInfoSpawnList,
|
||||||
SceneryInfoRoutes
|
SceneryInfoRoutes,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
station: {
|
station: {
|
||||||
@@ -134,20 +81,6 @@ h3.section-header {
|
|||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.scenery-info-general {
|
|
||||||
margin-top: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scenery-general-list {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
|
|
||||||
span {
|
|
||||||
margin: 0 0.15em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.scenery-topic a {
|
.scenery-topic a {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<template>
|
||||||
|
<section
|
||||||
|
class="scenery-authors"
|
||||||
|
v-if="station?.generalInfo?.authors && station.generalInfo.authors.length > 0"
|
||||||
|
>
|
||||||
|
<b>
|
||||||
|
{{
|
||||||
|
$t(
|
||||||
|
'scenery.authors-title',
|
||||||
|
{ authors: station.generalInfo.authors.length },
|
||||||
|
station.generalInfo.authors.length
|
||||||
|
)
|
||||||
|
}}:
|
||||||
|
</b>
|
||||||
|
{{ station.generalInfo.authors.join(', ') }}
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { defineComponent, PropType } from 'vue';
|
||||||
|
import { Station } from '../../../typings/common';
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
props: {
|
||||||
|
station: {
|
||||||
|
type: Object as PropType<Station>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
<template>
|
||||||
|
<section class="info-general">
|
||||||
|
<div v-if="station?.generalInfo === undefined">
|
||||||
|
<b>{{ $t('scenery.no-data') }}</b>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-else>
|
||||||
|
<span>
|
||||||
|
<b>{{ $t('availability.title') }}:</b>
|
||||||
|
{{ $t(`availability.${station.generalInfo.availability}`) }}
|
||||||
|
|
||||||
|
<span v-if="station.generalInfo.reqLevel > -1">
|
||||||
|
-
|
||||||
|
{{
|
||||||
|
$t(
|
||||||
|
'scenery.req-level',
|
||||||
|
{ lvl: station.generalInfo.reqLevel },
|
||||||
|
station.generalInfo.reqLevel
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<span>
|
||||||
|
• <b>{{ $t('controls.title') }}:</b>
|
||||||
|
{{ $t(`controls.${station.generalInfo.controlType}`) }}
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<span>
|
||||||
|
• <b>{{ $t('signals.title') }}:</b>
|
||||||
|
{{ $t(`signals.${station.generalInfo.signalType}`) }}
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<span v-if="station.generalInfo.lines">
|
||||||
|
• <b>{{ $t('scenery.lines-title') }}:</b> {{ station.generalInfo.lines }}
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<span v-if="station.generalInfo.project">
|
||||||
|
• <b>{{ $t('scenery.project-title') }}: </b>
|
||||||
|
<a
|
||||||
|
style="color: salmon; text-decoration: underline; font-weight: bold"
|
||||||
|
:href="station.generalInfo.projectUrl"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
{{ station.generalInfo.project }}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<span v-if="additionalTools.length != 0">
|
||||||
|
• <b>{{ $t('scenery.additional-tools-title') }}: </b>
|
||||||
|
{{ additionalTools.join(', ') }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { defineComponent, PropType } from 'vue';
|
||||||
|
import { Station } from '../../../typings/common';
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
props: {
|
||||||
|
station: {
|
||||||
|
type: Object as PropType<Station>
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
additionalTools() {
|
||||||
|
if (this.$props.station?.generalInfo === undefined) return [];
|
||||||
|
let tools = [];
|
||||||
|
|
||||||
|
if (this.$props.station.generalInfo.SUP) tools.push('SUP');
|
||||||
|
if (this.$props.station.generalInfo.ASDEK) tools.push('ASDEK');
|
||||||
|
|
||||||
|
return tools;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.info-general {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
div {
|
||||||
|
margin: 0 0.15em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -17,25 +17,6 @@
|
|||||||
{{ station?.generalInfo.reqLevel >= 2 ? station?.generalInfo.reqLevel : 'L' }}
|
{{ station?.generalInfo.reqLevel >= 2 ? station?.generalInfo.reqLevel : 'L' }}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span
|
|
||||||
v-if="station?.generalInfo"
|
|
||||||
class="scenery-icon icon-info"
|
|
||||||
:class="station?.generalInfo.controlType.replace('+', '-')"
|
|
||||||
:title="
|
|
||||||
$t('sceneries.info.control-type') + $t(`controls.${station?.generalInfo.controlType}`)
|
|
||||||
"
|
|
||||||
>
|
|
||||||
{{ $t(`controls.abbrevs.${station.generalInfo.controlType}`) }}
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<img
|
|
||||||
v-if="station?.generalInfo?.signalType"
|
|
||||||
class="icon-info"
|
|
||||||
:src="`/images/icon-${station.generalInfo.signalType}.svg`"
|
|
||||||
:alt="station.generalInfo.signalType"
|
|
||||||
:title="$t('sceneries.info.signals-type') + $t(`signals.${station.generalInfo.signalType}`)"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<img
|
<img
|
||||||
v-if="station?.generalInfo?.availability == 'nonPublic'"
|
v-if="station?.generalInfo?.availability == 'nonPublic'"
|
||||||
class="icon-info"
|
class="icon-info"
|
||||||
@@ -60,6 +41,33 @@
|
|||||||
:title="$t('sceneries.info.abandoned')"
|
:title="$t('sceneries.info.abandoned')"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<span
|
||||||
|
v-if="station?.generalInfo"
|
||||||
|
class="scenery-icon icon-info"
|
||||||
|
:class="station?.generalInfo.controlType.replace('+', '-')"
|
||||||
|
:title="
|
||||||
|
$t('sceneries.info.control-type') + $t(`controls.${station?.generalInfo.controlType}`)
|
||||||
|
"
|
||||||
|
>
|
||||||
|
{{ $t(`controls.abbrevs.${station.generalInfo.controlType}`) }}
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<img
|
||||||
|
v-if="station?.generalInfo?.signalType"
|
||||||
|
class="icon-info"
|
||||||
|
:src="`/images/icon-${station.generalInfo.signalType}.svg`"
|
||||||
|
:alt="station.generalInfo.signalType"
|
||||||
|
:title="$t('sceneries.info.signals-type') + $t(`signals.${station.generalInfo.signalType}`)"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<img
|
||||||
|
v-if="station?.generalInfo?.lines"
|
||||||
|
class="icon-info"
|
||||||
|
src="/images/icon-real.svg"
|
||||||
|
alt="real scenery"
|
||||||
|
:title="`${$t('sceneries.info.real')} ${station.generalInfo.lines}`"
|
||||||
|
/>
|
||||||
|
|
||||||
<img
|
<img
|
||||||
v-if="station?.generalInfo?.SUP"
|
v-if="station?.generalInfo?.SUP"
|
||||||
class="icon-info"
|
class="icon-info"
|
||||||
@@ -75,14 +83,6 @@
|
|||||||
alt="dSAT ASDEK"
|
alt="dSAT ASDEK"
|
||||||
:title="$t('sceneries.info.ASDEK')"
|
:title="$t('sceneries.info.ASDEK')"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<img
|
|
||||||
v-if="station?.generalInfo?.lines"
|
|
||||||
class="icon-info"
|
|
||||||
src="/images/icon-real.svg"
|
|
||||||
alt="real scenery"
|
|
||||||
:title="`${$t('sceneries.info.real')} ${station.generalInfo.lines}`"
|
|
||||||
/>
|
|
||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -511,8 +511,10 @@
|
|||||||
"abbrev": "Station symbol:",
|
"abbrev": "Station symbol:",
|
||||||
"lines-title": "Real lines",
|
"lines-title": "Real lines",
|
||||||
"project-title": "Project name",
|
"project-title": "Project name",
|
||||||
|
"additional-tools-title": "Additional tools",
|
||||||
"one-way-routes": "Signle track routes",
|
"one-way-routes": "Signle track routes",
|
||||||
"two-way-routes": "Double track routes",
|
"two-way-routes": "Double track routes",
|
||||||
|
"no-data": "No available data about this scenery",
|
||||||
"option-active-timetables": "Active timetables",
|
"option-active-timetables": "Active timetables",
|
||||||
"option-timetables-history": "Timetables history PL1",
|
"option-timetables-history": "Timetables history PL1",
|
||||||
"option-dispatchers-history": "Dispatchers history PL1",
|
"option-dispatchers-history": "Dispatchers history PL1",
|
||||||
|
|||||||
@@ -497,8 +497,10 @@
|
|||||||
"abbrev": "Skrót posterunku:",
|
"abbrev": "Skrót posterunku:",
|
||||||
"lines-title": "Rzeczywiste linie",
|
"lines-title": "Rzeczywiste linie",
|
||||||
"project-title": "Projekt",
|
"project-title": "Projekt",
|
||||||
|
"additional-tools-title": "Dodatkowe narzędzia",
|
||||||
"one-way-routes": "Szlaki jednotorowe",
|
"one-way-routes": "Szlaki jednotorowe",
|
||||||
"two-way-routes": "Szlaki dwutorowe",
|
"two-way-routes": "Szlaki dwutorowe",
|
||||||
|
"no-data": "Brak informacji o tej scenerii",
|
||||||
"option-active-timetables": "Aktywne rozkłady jazdy",
|
"option-active-timetables": "Aktywne rozkłady jazdy",
|
||||||
"option-timetables-history": "Historia rozkładów PL1",
|
"option-timetables-history": "Historia rozkładów PL1",
|
||||||
"option-dispatchers-history": "Historia dyżurów PL1",
|
"option-dispatchers-history": "Historia dyżurów PL1",
|
||||||
|
|||||||
Reference in New Issue
Block a user