mirror of
https://github.com/Spythere/stacjownik.git
synced 2026-05-03 05:18:11 +00:00
restruct: scenery info components
This commit is contained in:
@@ -1,69 +1,11 @@
|
||||
<template>
|
||||
<div class="scenery-info">
|
||||
<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>
|
||||
|
||||
@@ -89,15 +31,20 @@ import SceneryInfoIcons from './SceneryInfo/SceneryInfoIcons.vue';
|
||||
import SceneryInfoUserList from './SceneryInfo/SceneryInfoUserList.vue';
|
||||
import SceneryInfoSpawnList from './SceneryInfo/SceneryInfoSpawnList.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';
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
SceneryInfoDispatcher,
|
||||
SceneryInfoGeneral,
|
||||
SceneryInfoIcons,
|
||||
SceneryInfoAuthors,
|
||||
SceneryInfoUserList,
|
||||
SceneryInfoSpawnList,
|
||||
SceneryInfoRoutes
|
||||
SceneryInfoRoutes,
|
||||
},
|
||||
props: {
|
||||
station: {
|
||||
@@ -134,20 +81,6 @@ h3.section-header {
|
||||
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 {
|
||||
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' }}
|
||||
</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
|
||||
v-if="station?.generalInfo?.availability == 'nonPublic'"
|
||||
class="icon-info"
|
||||
@@ -60,6 +41,33 @@
|
||||
: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
|
||||
v-if="station?.generalInfo?.SUP"
|
||||
class="icon-info"
|
||||
@@ -75,14 +83,6 @@
|
||||
alt="dSAT 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>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -511,8 +511,10 @@
|
||||
"abbrev": "Station symbol:",
|
||||
"lines-title": "Real lines",
|
||||
"project-title": "Project name",
|
||||
"additional-tools-title": "Additional tools",
|
||||
"one-way-routes": "Signle track routes",
|
||||
"two-way-routes": "Double track routes",
|
||||
"no-data": "No available data about this scenery",
|
||||
"option-active-timetables": "Active timetables",
|
||||
"option-timetables-history": "Timetables history PL1",
|
||||
"option-dispatchers-history": "Dispatchers history PL1",
|
||||
|
||||
@@ -497,8 +497,10 @@
|
||||
"abbrev": "Skrót posterunku:",
|
||||
"lines-title": "Rzeczywiste linie",
|
||||
"project-title": "Projekt",
|
||||
"additional-tools-title": "Dodatkowe narzędzia",
|
||||
"one-way-routes": "Szlaki jednotorowe",
|
||||
"two-way-routes": "Szlaki dwutorowe",
|
||||
"no-data": "Brak informacji o tej scenerii",
|
||||
"option-active-timetables": "Aktywne rozkłady jazdy",
|
||||
"option-timetables-history": "Historia rozkładów PL1",
|
||||
"option-dispatchers-history": "Historia dyżurów PL1",
|
||||
|
||||
Reference in New Issue
Block a user