mirror of
https://github.com/Spythere/genera-tor.git
synced 2026-05-03 05:28:13 +00:00
OrderN: wygląd i optymalizacja generowania tekstu
This commit is contained in:
@@ -14,10 +14,6 @@
|
|||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
#app_wrapper {
|
|
||||||
padding: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 500px) {
|
@media screen and (max-width: 500px) {
|
||||||
#app {
|
#app {
|
||||||
font-size: calc(1vw + 0.5rem);
|
font-size: calc(1vw + 0.5rem);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="rozkaz">
|
<div class="rozkaz">
|
||||||
<OrderNVue @generate-message="generateMessage" v-if="orderType == 'N'" />
|
<OrderNVue v-if="orderType == 'N'" />
|
||||||
<OrderSVue v-if="orderType == 'S'" />
|
<OrderSVue v-if="orderType == 'S'" />
|
||||||
|
|
||||||
<section class="info">
|
<section class="info">
|
||||||
@@ -74,12 +74,6 @@ export default defineComponent({
|
|||||||
info: store.orderInfo,
|
info: store.orderInfo,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
|
||||||
generateMessage(orderBody: string) {
|
|
||||||
this.store.orderMessage = orderBody;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
+98
-85
@@ -206,18 +206,101 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent, reactive } from 'vue';
|
||||||
import { useStore } from '../store/store';
|
import { useStore } from '../store/store';
|
||||||
|
|
||||||
export default defineComponent({
|
type OrderRowRange = 1 | 2 | 3 | 4 | 5;
|
||||||
emits: ['generateMessage'],
|
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
setup() {
|
setup() {
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
|
const order = reactive(store.orderN);
|
||||||
|
|
||||||
|
const rowMethods = [
|
||||||
|
() => {
|
||||||
|
const { header } = order;
|
||||||
|
|
||||||
|
const message = `<i>Rozkaz pisemny "N" nr ${header.orderNo || '_'} dla pociągu nr ${
|
||||||
|
header.trainNo || '_'
|
||||||
|
} dnia ${header.date} ${new Date().getUTCFullYear()}r.</i>`;
|
||||||
|
|
||||||
|
return message;
|
||||||
|
},
|
||||||
|
|
||||||
|
() => {
|
||||||
|
const { row1 } = order;
|
||||||
|
|
||||||
|
const message = `Od ${row1.from || '_'} do ${row1.to || '_'} tor nr ${
|
||||||
|
row1.trackNo || '_'
|
||||||
|
} jest zamknięty, ruch jednotorowy dwukierunkowy wprowadzono po torze nr ${row1.trackNo2 || '_'}`;
|
||||||
|
|
||||||
|
return message;
|
||||||
|
},
|
||||||
|
|
||||||
|
() => {
|
||||||
|
const { row2 } = order;
|
||||||
|
|
||||||
|
let message = `ZEZWALAM po otrzymaniu ${row2.option1 || '_'}`;
|
||||||
|
|
||||||
|
if (row2.checkbox == 'checkbox-2a') {
|
||||||
|
message += ` przejechać obok wskazującego sygnał "Stój" semafora ${row2.signalType || '_'} `;
|
||||||
|
|
||||||
|
if (row2.signalType == 'wyjazdowego') message += row2.signal1;
|
||||||
|
if (row2.signalType == 'drogowskazowego')
|
||||||
|
message += `${row2.signal2 || '_'} (odnoszącego się do wyjazdu pociągu)`;
|
||||||
|
if (row2.signalType == 'wjazdowego') message += `${row2.signal3 || '_'} na post. odg. bez sem. wyjazdowego`;
|
||||||
|
|
||||||
|
message += ` i wyjechać w kierunku ${row2.direction || '_'} na tor szlakowy ${row2.option2 || '_'} nr ${
|
||||||
|
row2.trackNoTo1 || '_'
|
||||||
|
}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (row2.checkbox == 'checkbox-2b') {
|
||||||
|
message += ` z toru nr ${
|
||||||
|
row2.trackNoFrom || '_'
|
||||||
|
} nie posiadającego semafora wyjazdowego wyjechać w kierunku ${row2.trackNoTo2 || '_'} na tor szlakowy ${
|
||||||
|
row2.option3 || '_'
|
||||||
|
}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
return message;
|
||||||
|
},
|
||||||
|
|
||||||
|
() => {
|
||||||
|
const { row3 } = order;
|
||||||
|
|
||||||
|
let message = `${row3.option1} pociągu odbędzie się w kierunku: ${row3.direction} do km ${row3.toKilometer} skąd ${row3.option2} ma wrócić po torze lewym nr ${row3.trackNo} najpóźniej o godz. ${row3.untilHour} min. ${row3.untilMin}`;
|
||||||
|
|
||||||
|
return message;
|
||||||
|
},
|
||||||
|
|
||||||
|
() => {
|
||||||
|
const { row4 } = order;
|
||||||
|
|
||||||
|
let message = `WJAZD z toru szlakowego nr ${row4.trackNo} na ${row4.optionStation} ${row4.stationName} odbędzie się po otrzymaniu: `;
|
||||||
|
|
||||||
|
if (row4.checkbox == 'checkbox-4a')
|
||||||
|
message += `sygnału zastępczego "Sz" na osobnym urządzeniu ustawionym z ${row4.side} strony toru`;
|
||||||
|
|
||||||
|
if (row4.checkbox == 'checkbox-4b')
|
||||||
|
message += 'rozkazu pisemnego "N" (doręczonego lub przekazanego przez urządzenia łączności)';
|
||||||
|
|
||||||
|
return message;
|
||||||
|
},
|
||||||
|
|
||||||
|
() => {
|
||||||
|
const { row5 } = order;
|
||||||
|
|
||||||
|
const message = `ZEZWALAM wjechać z toru szlakowego nr ${row5.trackNo} z kierunku ${row5.direction} na ${row5.stationType} ${row5.stationName} i przejechać obok sygnału "Stój" na ${row5.on} `;
|
||||||
|
|
||||||
|
return message;
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
store,
|
||||||
order: store.orderN,
|
order: store.orderN,
|
||||||
message: store.orderMessage,
|
rowMethods,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -230,96 +313,26 @@ export default defineComponent({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.generateMessage();
|
||||||
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
generateMessage() {
|
generateMessage() {
|
||||||
let message = this.generateHeaderMessage();
|
let message = this.rowMethods[0]();
|
||||||
|
|
||||||
if (this.order.row1.enabled) message += this.generate1stRowMessage();
|
for (let i = 1; i <= 5; i++) {
|
||||||
if (this.order.row2.enabled) message += this.generate2ndRowMessage();
|
if (!this.order[`row${i as OrderRowRange}`].enabled) continue;
|
||||||
if (this.order.row3.enabled) message += this.generate3rdRowMessage();
|
|
||||||
if (this.order.row4.enabled) message += this.generate4thRowMessage();
|
|
||||||
if (this.order.row5.enabled) message += this.generate5thRowMessage();
|
|
||||||
|
|
||||||
this.$emit('generateMessage', message);
|
message += ` <b> [ ${i} ] </b> ${this.rowMethods[i]()}`;
|
||||||
// const row1Message = `Od ${header.} do tor nr jest zamknięty, ruch jednotorowy dwukierunkowy wprowadzono po torze nr `
|
|
||||||
},
|
|
||||||
|
|
||||||
generateHeaderMessage() {
|
|
||||||
const { header } = this.order;
|
|
||||||
|
|
||||||
const message = `<i>Rozkaz pisemny "N" nr ${header.orderNo || '_'} dla pociągu nr ${header.trainNo || '_'} dnia ${
|
|
||||||
header.date
|
|
||||||
} ${new Date().getUTCFullYear()}r.</i>`;
|
|
||||||
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
generate1stRowMessage() {
|
|
||||||
const { row1 } = this.order;
|
|
||||||
|
|
||||||
const message = ` <b> [ 1 ] </b> Od ${row1.from || '_'} do ${row1.to || '_'} tor nr ${
|
|
||||||
row1.trackNo || '_'
|
|
||||||
} jest zamknięty, ruch jednotorowy dwukierunkowy wprowadzono po torze nr ${row1.trackNo2 || '_'}`;
|
|
||||||
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
generate2ndRowMessage() {
|
|
||||||
const { row2 } = this.order;
|
|
||||||
|
|
||||||
let message = ` <b> [ 2 ] </b> <b>ZEZWALAM</b> po otrzymaniu ${row2.option1 || '_'}`;
|
|
||||||
|
|
||||||
if (row2.checkbox == 'checkbox-2a') {
|
|
||||||
message += ` przejechać obok wskazującego sygnał "Stój" semafora ${row2.signalType || '_'} `;
|
|
||||||
|
|
||||||
if (row2.signalType == 'wyjazdowego') message += row2.signal1;
|
|
||||||
if (row2.signalType == 'drogowskazowego')
|
|
||||||
message += `${row2.signal2 || '_'} (odnoszącego się do wyjazdu pociągu)`;
|
|
||||||
if (row2.signalType == 'wjazdowego') message += `${row2.signal3 || '_'} na post. odg. bez sem. wyjazdowego`;
|
|
||||||
|
|
||||||
message += ` i wyjechać w kierunku ${row2.direction || '_'} na tor szlakowy ${row2.option2 || '_'} nr ${
|
|
||||||
row2.trackNoTo1 || '_'
|
|
||||||
}`;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (row2.checkbox == 'checkbox-2b') {
|
this.store.orderMessage = message;
|
||||||
message += ` z toru nr ${row2.trackNoFrom || '_'} nie posiadającego semafora wyjazdowego wyjechać w kierunku ${
|
|
||||||
row2.trackNoTo2 || '_'
|
|
||||||
} na tor szlakowy ${row2.option3 || '_'}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
return message;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
generate3rdRowMessage() {
|
generateFooter() {
|
||||||
const { row3 } = this.order;
|
}
|
||||||
|
|
||||||
let message = ` <b> [ 3 ] </b> ${row3.option1} pociągu odbędzie się w kierunku: ${row3.direction} do km ${row3.toKilometer} skąd ${row3.option2} ma wrócić po torze lewym nr ${row3.trackNo} najpóźniej o godz. ${row3.untilHour} min. ${row3.untilMin}`;
|
|
||||||
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
generate4thRowMessage() {
|
|
||||||
const { row4 } = this.order;
|
|
||||||
|
|
||||||
let message = ` <b> [ 4 ] </b> <b>WJAZD</b> z toru szlakowego nr ${row4.trackNo} na ${row4.optionStation} ${row4.stationName} odbędzie się po otrzymaniu: `;
|
|
||||||
|
|
||||||
if (row4.checkbox == 'checkbox-4a')
|
|
||||||
message += `sygnału zastępczego "Sz" na osobnym urządzeniu ustawionym z ${row4.side} strony toru`;
|
|
||||||
|
|
||||||
if (row4.checkbox == 'checkbox-4b')
|
|
||||||
message += 'rozkazu pisemnego "N" (doręczonego lub przekazanego przez urządzenia łączności)';
|
|
||||||
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
|
|
||||||
generate5thRowMessage() {
|
|
||||||
const { row5 } = this.order;
|
|
||||||
|
|
||||||
const message = ` <b> [ 5 ] </b> <b>ZEZWALAM</b> wjechać z toru szlakowego nr ${row5.trackNo} z kierunku ${row5.direction} na ${row5.stationType} ${row5.stationName} i przejechać obok sygnału "Stój" na ${row5.on} `;
|
|
||||||
|
|
||||||
return message;
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
+3
-2
@@ -16,9 +16,9 @@ export const useStore = defineStore('store', {
|
|||||||
|
|
||||||
orderN: {
|
orderN: {
|
||||||
header: {
|
header: {
|
||||||
orderNo: '',
|
orderNo: '1',
|
||||||
trainNo: '',
|
trainNo: '',
|
||||||
date: '',
|
date: new Date().toLocaleDateString('pl-PL', { day: '2-digit', month: 'long' }),
|
||||||
},
|
},
|
||||||
|
|
||||||
row1: {
|
row1: {
|
||||||
@@ -115,3 +115,4 @@ export const useStore = defineStore('store', {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+33
-7
@@ -1,9 +1,35 @@
|
|||||||
$bgCol: #012E40;
|
$bgCol: #313638;
|
||||||
$accentCol: #F28705;
|
$accentCol: #0defff;
|
||||||
|
|
||||||
body, html {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
min-height: 100vh;
|
|
||||||
|
|
||||||
|
body,
|
||||||
|
html {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
button.g-button {
|
||||||
|
outline: 2px solid white;
|
||||||
|
border: none;
|
||||||
|
background: none;
|
||||||
|
color: white;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
padding: 0.5em;
|
||||||
|
|
||||||
|
font-size: 1em;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 150ms ease-in;
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: $accentCol;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus-visible {
|
||||||
|
outline: 2px solid $accentCol;
|
||||||
|
color: $accentCol;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+58
-18
@@ -1,12 +1,21 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="home">
|
<div class="home">
|
||||||
<OrderVue />
|
<div class="home_container">
|
||||||
|
<div class="order_container">
|
||||||
|
<OrderVue />
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="generated-message">
|
<div class="message_container">
|
||||||
Wygenerowana wiadomość:
|
<h3>Wiadomość do wyświetlenia na czacie symulatora:</h3>
|
||||||
<div v-html="store.orderMessage"></div>
|
|
||||||
|
<div class="message_body" v-html="store.orderMessage"></div>
|
||||||
|
|
||||||
|
<div class="message_actions">
|
||||||
|
<button class="g-button" @click="copyMessage">Zapisz ten rozkaz</button>
|
||||||
|
<button class="g-button" @click="copyMessage">Kopiuj wiadomość rozkazu</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button @click="copyMessage">Kopiuj wiadomość rozkazu</button>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -37,26 +46,57 @@ export default defineComponent({
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
min-height: 100vh;
|
||||||
|
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
|
|
||||||
|
.home_container {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
align-items: flex-start;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order_container {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
margin-right: 0.5em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.container {
|
.message_container {
|
||||||
|
padding: 0 1em;
|
||||||
|
width: 500px;
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin: 0;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
margin: 0 0.5em;
|
||||||
|
font-size: 0.85em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.message_actions {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: start;
|
justify-content: center;
|
||||||
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.generated-message {
|
.message_body {
|
||||||
position: sticky;
|
min-height: 250px;
|
||||||
top: 0;
|
|
||||||
|
|
||||||
padding: 1em 0.5em;
|
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
margin-left: 1em;
|
|
||||||
width: 450px;
|
|
||||||
height: auto;
|
|
||||||
|
|
||||||
border: 1px solid white;
|
background-color: #fff;
|
||||||
// user-select: none;
|
border-radius: 0.5em;
|
||||||
|
color: black;
|
||||||
|
padding: 0.5em;
|
||||||
|
user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user