diff --git a/package-lock.json b/package-lock.json index dfd9606..98f7a49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "dotenv": "^8.6.0", "firebase": "^9.8.1", "howler": "^2.2.1", + "pinia": "^2.0.14", "socket.io-client": "^4.4.1", "vue": "^3.2.34", "vue-i18n": "^9.1.6", @@ -8462,6 +8463,56 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pinia": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.0.14.tgz", + "integrity": "sha512-0nPuZR4TetT/WcLN+feMSjWJku3SQU7dBbXC6uw+R6FLQJCsg+/0pzXyD82T1FmAYe0lsx+jnEDQ1BLgkRKlxA==", + "dependencies": { + "@vue/devtools-api": "^6.1.4", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.2.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.1.tgz", + "integrity": "sha512-xmkJ56koG3ptpLnpgmIzk9/4nFf4CqduSJbUM0OdPoU87NwRuZ6x49OLhjSa/fC15fV+5CbEnrxU4oyE022svg==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -10581,7 +10632,7 @@ "version": "4.1.6", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.6.tgz", "integrity": "sha512-pxnwLxeb/Z5SP80JDRzVjh58KsM6jZHRAOtTpS7sXLS4ogXNKC9ANxHHZqLLeVHZN35jCtI4JdmLLbLiC1kBow==", - "dev": true, + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -18003,6 +18054,23 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, + "pinia": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.0.14.tgz", + "integrity": "sha512-0nPuZR4TetT/WcLN+feMSjWJku3SQU7dBbXC6uw+R6FLQJCsg+/0pzXyD82T1FmAYe0lsx+jnEDQ1BLgkRKlxA==", + "requires": { + "@vue/devtools-api": "^6.1.4", + "vue-demi": "*" + }, + "dependencies": { + "vue-demi": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.1.tgz", + "integrity": "sha512-xmkJ56koG3ptpLnpgmIzk9/4nFf4CqduSJbUM0OdPoU87NwRuZ6x49OLhjSa/fC15fV+5CbEnrxU4oyE022svg==", + "requires": {} + } + } + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -19526,7 +19594,7 @@ "version": "4.1.6", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.6.tgz", "integrity": "sha512-pxnwLxeb/Z5SP80JDRzVjh58KsM6jZHRAOtTpS7sXLS4ogXNKC9ANxHHZqLLeVHZN35jCtI4JdmLLbLiC1kBow==", - "dev": true + "devOptional": true }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", diff --git a/package.json b/package.json index 472c29c..928f8dd 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "dotenv": "^8.6.0", "firebase": "^9.8.1", "howler": "^2.2.1", + "pinia": "^2.0.14", "socket.io-client": "^4.4.1", "vue": "^3.2.34", "vue-i18n": "^9.1.6", diff --git a/src/App.vue b/src/App.vue index 9707a2c..179853c 100644 --- a/src/App.vue +++ b/src/App.vue @@ -84,12 +84,10 @@ import Clock from '@/components/App/Clock.vue'; import StorageManager from '@/scripts/managers/storageManager'; import { computed, ComputedRef, defineComponent, provide, ref } from 'vue'; -import { ACTIONS, GETTERS } from './constants/storeConstants'; -import { StoreData } from './scripts/interfaces/StoreData'; -import { useStore } from './store'; import packageInfo from '.././package.json'; import StatusIndicator from './components/App/StatusIndicator.vue'; +import { useStore } from './store/store'; export default defineComponent({ components: { @@ -99,13 +97,9 @@ export default defineComponent({ setup() { const store = useStore(); - store.dispatch(ACTIONS.connectToAPI); + store.connectToAPI(); - const data: ComputedRef = computed(() => store.getters[GETTERS.allData]); - - const currentRegion: ComputedRef<{ id: string; value: string }> = computed( - () => store.getters[GETTERS.currentRegion] - ); + const currentRegion = store.region; // const sceneryDataStatus = computed(() => data.value.sceneryDataStatus); @@ -114,15 +108,14 @@ export default defineComponent({ provide('isFilterCardVisible', isFilterCardVisible); return { - data, currentRegion, isFilterCardVisible, - dispatcherDataStatus: computed(() => data.value.dispatcherDataStatus), + dispatcherDataStatus: store.dataStatuses.dispatchers, - trainCount: computed(() => data.value.trainList.length), + trainCount: store.trainCount, - dispatcherCount: computed(() => data.value.stationList.filter((station) => station.onlineInfo).length), + dispatcherCount: store.stationList.filter((station) => station.onlineInfo).length, openFilterCard() { isFilterCardVisible.value = true; diff --git a/src/components/App/StatusIndicator.vue b/src/components/App/StatusIndicator.vue index 65ad6bf..1edd7f2 100644 --- a/src/components/App/StatusIndicator.vue +++ b/src/components/App/StatusIndicator.vue @@ -154,25 +154,20 @@ -
- -
+