From 3a3ba61454dae9ef42bc125d0f9cb926e0659311 Mon Sep 17 00:00:00 2001 From: Spythere Date: Fri, 3 Oct 2025 00:57:57 +0200 Subject: [PATCH] refactor: components restructure; removed deprecated files --- src/App.vue | 2 +- src/components/Order.vue | 232 -------- src/components/OrderFooter.vue | 101 ---- src/components/OrderN.vue | 518 ------------------ src/components/OrderO.vue | 199 ------- src/components/OrderS.vue | 448 --------------- .../OrderListPanel.vue} | 10 +- .../OrderMessagePanel.vue} | 8 +- .../OrderTrainPickerPanel.vue} | 45 +- src/components/SideBar.vue | 145 ----- src/locales/en.json | 6 +- src/locales/pl.json | 6 +- src/mixins/orderFooterMixin.ts | 30 - src/mixins/orderStorageMixin.ts | 94 ---- src/mixins/orderValidationMixin.ts | 32 -- src/store/store.ts | 3 +- src/types/dataTypes.ts | 4 +- src/views/Home.vue | 45 +- 18 files changed, 51 insertions(+), 1877 deletions(-) delete mode 100644 src/components/Order.vue delete mode 100644 src/components/OrderFooter.vue delete mode 100644 src/components/OrderN.vue delete mode 100644 src/components/OrderO.vue delete mode 100644 src/components/OrderS.vue rename src/components/{OrderList.vue => Panels/OrderListPanel.vue} (95%) rename src/components/{OrderMessage.vue => Panels/OrderMessagePanel.vue} (98%) rename src/components/{OrderTrainPicker.vue => Panels/OrderTrainPickerPanel.vue} (87%) delete mode 100644 src/components/SideBar.vue delete mode 100644 src/mixins/orderFooterMixin.ts delete mode 100644 src/mixins/orderStorageMixin.ts delete mode 100644 src/mixins/orderValidationMixin.ts diff --git a/src/App.vue b/src/App.vue index dbd9114..968a979 100644 --- a/src/App.vue +++ b/src/App.vue @@ -52,7 +52,7 @@ function handleQueries() { const id = query.get('sceneryId'); if (id != null) { - store.panelMode = 'OrderTrainPicker'; + store.panelMode = 'OrderTrainPickerPanel'; } } diff --git a/src/components/Order.vue b/src/components/Order.vue deleted file mode 100644 index b951107..0000000 --- a/src/components/Order.vue +++ /dev/null @@ -1,232 +0,0 @@ - - - - - diff --git a/src/components/OrderFooter.vue b/src/components/OrderFooter.vue deleted file mode 100644 index bd2ddce..0000000 --- a/src/components/OrderFooter.vue +++ /dev/null @@ -1,101 +0,0 @@ - - - - - diff --git a/src/components/OrderN.vue b/src/components/OrderN.vue deleted file mode 100644 index b37887e..0000000 --- a/src/components/OrderN.vue +++ /dev/null @@ -1,518 +0,0 @@ - - - diff --git a/src/components/OrderO.vue b/src/components/OrderO.vue deleted file mode 100644 index 1fb2554..0000000 --- a/src/components/OrderO.vue +++ /dev/null @@ -1,199 +0,0 @@ - - - - - diff --git a/src/components/OrderS.vue b/src/components/OrderS.vue deleted file mode 100644 index 733653d..0000000 --- a/src/components/OrderS.vue +++ /dev/null @@ -1,448 +0,0 @@ - - - diff --git a/src/components/OrderList.vue b/src/components/Panels/OrderListPanel.vue similarity index 95% rename from src/components/OrderList.vue rename to src/components/Panels/OrderListPanel.vue index 3ebdf29..0369272 100644 --- a/src/components/OrderList.vue +++ b/src/components/Panels/OrderListPanel.vue @@ -61,10 +61,10 @@ diff --git a/src/locales/en.json b/src/locales/en.json index 2703cbd..0ee7cac 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -4,9 +4,9 @@ "en": "ENG" }, "navbar": { - "order-message": "ORDER MESSAGE", - "order-list": "SAVED ORDERS", - "order-train-picker": "TRAINS" + "OrderMessagePanel": "ORDER MESSAGE", + "OrderListPanel": "SAVED ORDERS", + "OrderTrainPickerPanel": "TRAINS" }, "update": { "update-available-text": "New GeneraTOR version is available!", diff --git a/src/locales/pl.json b/src/locales/pl.json index 55eb40b..87a89de 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -13,9 +13,9 @@ "info-2": "Pełny changelog dostępny na GitHubie projektu" }, "navbar": { - "order-message": "TREŚĆ ROZKAZU", - "order-list": "ZAPISANE ROZ.", - "order-train-picker": "POCIĄGI" + "OrderMessagePanel": "TREŚĆ ROZKAZU", + "OrderListPanel": "ZAPISANE ROZKAZY", + "OrderTrainPickerPanel": "POCIĄGI" }, "order-message": { "title": "Wiadomość do wyświetlenia na czacie symulatora:", diff --git a/src/mixins/orderFooterMixin.ts b/src/mixins/orderFooterMixin.ts deleted file mode 100644 index d788576..0000000 --- a/src/mixins/orderFooterMixin.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { defineComponent } from 'vue'; -import { useStore } from '../store/store'; - -export default defineComponent({ - setup() { - return { - store: useStore() - }; - }, - - methods: { - generateFooter() { - const footer = this.store.orderFooter; - - const messageArray = []; - - messageArray.push(`stacja: ${footer.stationName ?? ''}`); - if (footer.checkpointName) messageArray.push(`posterunek: ${footer.checkpointName}`); - if (footer.hour) messageArray.push(`godz. ${footer.hour}`); - if (footer.minutes) messageArray.push(`min. ${footer.minutes}`); - if (footer.dispatcherName) messageArray.push(`dyżurny ruchu ${footer.dispatcherName}`); - if (footer.secondaryDispatcherName) - messageArray.push(`z polecenia dyżurnego ruchu ${footer.secondaryDispatcherName}`); - - this.store.footerMessage = `\n--------\n${messageArray.join( - ', ' - )}\n--------\nRozkaz otrzymałem, maszynista: (potwierdzić otrzymanie rozkazu)`; - } - } -}); diff --git a/src/mixins/orderStorageMixin.ts b/src/mixins/orderStorageMixin.ts deleted file mode 100644 index e3e5e15..0000000 --- a/src/mixins/orderStorageMixin.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { defineComponent } from 'vue'; -import { useStore } from '../store/store'; -import { LocalStorageOrderLegacy } from '../types/orderTypes'; - -function alertWrongOrderFormat() { - alert('Wystąpił błąd podczas przetwarzania rozkazu! Informacje mogą być niepoprawne!'); - console.warn('Zły format zapisanego rozkazu!'); -} - -export default defineComponent({ - setup() { - return { - store: useStore() - }; - }, - - methods: { - removeLocalOrder(order: LocalStorageOrderLegacy) { - localStorage.removeItem(order.id); - - if (this.store.chosenLocalOrderId == order.id) this.store.chosenLocalOrderId = ''; - // localStorage.setItem('orderCount', (Number(localStorage.getItem('orderCount')) - 1).toString()); - }, - - selectLocalOrder(localOrder: LocalStorageOrderLegacy) { - // const localOrder = JSON.parse(JSON.stringify(order)); - const { orderBody: localOrderBody, orderFooter: localOrderFooter } = localOrder; - - this.store[localOrder.orderType].header.date = localOrderBody.header.date; - this.store[localOrder.orderType].header.orderNo = localOrderBody.header.orderNo; - this.store[localOrder.orderType].header.trainNo = localOrderBody.header.trainNo; - - if (localOrder.orderType == 'orderN' || localOrder.orderType == 'orderS') { - const currentOrder = this.store[localOrder.orderType]; - - if (localOrderBody.rows.length != currentOrder.rows.length) { - alertWrongOrderFormat(); - return; - } - - for (let rowIndex = 0; rowIndex < currentOrder.rows.length; rowIndex++) { - const row = currentOrder.rows[rowIndex]; - - if (localOrderBody.rows[rowIndex] === undefined) { - alertWrongOrderFormat(); - continue; - } - - for (const rowProp in row) { - if (localOrderBody.rows[rowIndex][rowProp] === undefined) { - alertWrongOrderFormat(); - continue; - } - - (currentOrder.rows[rowIndex] as any)[rowProp] = localOrderBody.rows[rowIndex][rowProp]; - } - } - } - - if (localOrder.orderType == 'orderO') { - const currentOrder = this.store[localOrder.orderType]; - - for (let rowIndex = 0; rowIndex < currentOrder.orderList.length; rowIndex++) { - const row = currentOrder.orderList[rowIndex]; - - if (localOrderBody.orderList[rowIndex] === undefined) { - alertWrongOrderFormat(); - continue; - } - - for (const rowProp in row) { - if (localOrderBody.orderList[rowIndex][rowProp] === undefined) { - alertWrongOrderFormat(); - continue; - } - - (currentOrder.orderList[rowIndex] as any)[rowProp] = - localOrderBody.orderList[rowIndex][rowProp]; - } - } - - currentOrder.other = localOrderBody.other; - } - - for (const key in this.store.orderFooter) { - (this.store.orderFooter as any)[key] = localOrderFooter[key]; - } - - this.store.chosenOrderType = localOrder.orderType; - this.store.chosenLocalOrderId = localOrder.id; - this.store.panelMode = 'OrderMessage'; - } - } -}); diff --git a/src/mixins/orderValidationMixin.ts b/src/mixins/orderValidationMixin.ts deleted file mode 100644 index 04cd7ed..0000000 --- a/src/mixins/orderValidationMixin.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { defineComponent } from 'vue'; -import { useStore } from '../store/store'; - -export default defineComponent({ - setup() { - return { - store: useStore(), - }; - }, - - methods: { - verifyOrderFields() { - // const header = this.store[this.store.chosenOrderType].header; - const footer = this.store.orderFooter; - - const fieldsToCorrect = []; - - // if (!header.orderNo) fieldsToCorrect.push('numer rozkazu'); - // if (!header.trainNo) fieldsToCorrect.push('numer pociągu / manewru'); - // if (!header.date) fieldsToCorrect.push('data'); - - if (!footer.stationName) fieldsToCorrect.push('stacja'); - if (!footer.checkpointName) fieldsToCorrect.push('posterunek'); - if (!footer.hour) fieldsToCorrect.push('godzina'); - if (!footer.minutes) fieldsToCorrect.push('minuta'); - if (!footer.dispatcherName && !footer.secondaryDispatcherName) - fieldsToCorrect.push('dyżurny ruchu (lub z polecenia dyżurnego ruchu)'); - - return fieldsToCorrect; - } - } -}); diff --git a/src/store/store.ts b/src/store/store.ts index 6751638..b6bace8 100644 --- a/src/store/store.ts +++ b/src/store/store.ts @@ -8,6 +8,7 @@ import { import StorageManager from '../managers/storageManager'; import i18n from '../i18n'; +import { TPanelMode } from '../types/dataTypes'; export const useStore = defineStore('store', { state: () => { @@ -24,7 +25,7 @@ export const useStore = defineStore('store', { helperModalOpen: false, orderDarkMode: false, - panelMode: 'OrderMessage', + panelMode: 'OrderMessagePanel' as TPanelMode, chosenOrderType: 'orderN' as TOrder, chosenLocalOrderId: '', diff --git a/src/types/dataTypes.ts b/src/types/dataTypes.ts index d4a2357..0fad6df 100644 --- a/src/types/dataTypes.ts +++ b/src/types/dataTypes.ts @@ -32,4 +32,6 @@ export interface ISceneryData { routes: string; signalType: string; url: string; -} \ No newline at end of file +} + +export type TPanelMode = 'OrderListPanel' | 'OrderMessagePanel' | 'OrderTrainPickerPanel'; \ No newline at end of file diff --git a/src/views/Home.vue b/src/views/Home.vue index f47d186..6a62d22 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -9,12 +9,12 @@
@@ -34,42 +34,29 @@ import { useStore } from '../store/store'; import { useI18n } from 'vue-i18n'; import Order from '../components/Order/Order.vue'; -import OrderMessage from '../components/OrderMessage.vue'; -import OrderList from '../components/OrderList.vue'; -import OrderTrainPicker from '../components/OrderTrainPicker.vue'; +import OrderMessagePanel from '../components/Panels/OrderMessagePanel.vue'; +import OrderListPanel from '../components/Panels/OrderListPanel.vue'; +import OrderTrainPickerPanel from '../components/Panels/OrderTrainPickerPanel.vue'; +import { TPanelMode } from '../types/dataTypes'; const { t } = useI18n(); const store = useStore(); -const navActions = [ - { - mode: 'OrderMessage', - value: 'order-message' - }, - { - mode: 'OrderList', - value: 'order-list' - }, - { - mode: 'OrderTrainPicker', - value: 'order-train-picker' - } -]; +const navActions: TPanelMode[] = ['OrderListPanel', 'OrderMessagePanel', 'OrderTrainPickerPanel']; -function selectOrderMode(mode: string) { +function selectOrderMode(mode: TPanelMode) { store.panelMode = mode; } const panelComponent = computed(() => { switch (store.panelMode) { - case 'OrderMessage': - return OrderMessage; - case 'OrderList': - return OrderList; - case 'OrderTrainPicker': - return OrderTrainPicker; + case 'OrderListPanel': + return OrderListPanel; + case 'OrderTrainPickerPanel': + return OrderTrainPickerPanel; + case 'OrderMessagePanel': default: - return OrderMessage; + return OrderMessagePanel; } });