diff --git a/package-lock.json b/package-lock.json index e4b0d56..b5d825a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,7 @@ "dependencies": { "@mdi/font": "^7.4.47", "axios": "^1.6.4", + "pinia": "^2.1.7", "typescript": "^5.3.3", "vue": "^3.4.14", "vuetify": "^3.4.10" @@ -605,6 +606,11 @@ "@vue/shared": "3.4.14" } }, + "node_modules/@vue/devtools-api": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz", + "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" + }, "node_modules/@vue/reactivity": { "version": "3.4.14", "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.14.tgz", @@ -906,6 +912,56 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pinia": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", + "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", + "dependencies": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "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/postcss": { "version": "8.4.33", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", diff --git a/package.json b/package.json index 0208e13..e8c2083 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "dependencies": { "@mdi/font": "^7.4.47", "axios": "^1.6.4", + "pinia": "^2.1.7", "typescript": "^5.3.3", "vue": "^3.4.14", "vuetify": "^3.4.10" diff --git a/resources/stores/Schedule.js b/resources/stores/Schedule.js new file mode 100644 index 0000000..8c07e3c --- /dev/null +++ b/resources/stores/Schedule.js @@ -0,0 +1,15 @@ +import {defineStore} from "pinia"; + +export const useScheduleStore = defineStore('Schedule', { + state: () => ({ + fetchingDates: true, + fetchingTable: true, + fetchingLinks: true + }), + getters: { + + }, + actions: { + + }, +}) diff --git a/resources/views/Preloader/Preloader.vue b/resources/views/Preloader/Preloader.vue new file mode 100644 index 0000000..f955302 --- /dev/null +++ b/resources/views/Preloader/Preloader.vue @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/resources/views/Preloader/PreloaderWindow.vue b/resources/views/Preloader/PreloaderWindow.vue new file mode 100644 index 0000000..fbd1ea3 --- /dev/null +++ b/resources/views/Preloader/PreloaderWindow.vue @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/resources/views/Schedule.vue b/resources/views/Schedule.vue index 7d1989c..8281ee5 100644 --- a/resources/views/Schedule.vue +++ b/resources/views/Schedule.vue @@ -1,12 +1,10 @@ - - - Расписание стримов - {{ parseDate(dates[0].current_date) }} - {{ parseDate(dates[1].current_date) }} - - Ссылочки - - + + Расписание стримов + {{ parseDate(dates[0].current_date) }} - {{ parseDate(dates[1].current_date) }} + + Ссылочки + @@ -14,6 +12,7 @@ import axios from "axios"; import ScheduleTable from "./Schedule/ScheduleTable.vue"; import Links from "./Schedule/Links.vue"; +import {useScheduleStore} from '../stores/Schedule.js'; export default { name: "Schedule", @@ -30,20 +29,16 @@ export default { mounted() { axios .get('/api/v1/dates') - .then(response => (this.dates = response.data)); + .then(response => { + this.dates = response.data; + useScheduleStore().fetchingDates = false; + }); } } diff --git a/resources/welcome.js b/resources/welcome.js index a36974b..e93cac9 100644 --- a/resources/welcome.js +++ b/resources/welcome.js @@ -1,5 +1,6 @@ import './js/bootstrap'; -import {createApp} from 'vue' +import { createApp } from 'vue' +import { createPinia } from 'pinia' import App from './views/Welcome.vue' import { createVuetify } from 'vuetify' import 'vuetify/styles' @@ -7,9 +8,11 @@ import * as components from 'vuetify/components' import * as directives from 'vuetify/directives' import '@mdi/font/css/materialdesignicons.css' +const pinia = createPinia(); + const vuetify = createVuetify({ components, directives -}) +}); -createApp(App).use(vuetify).mount("#app") +createApp(App).use(vuetify).use(pinia).mount("#app");
Расписание стримов
{{ parseDate(dates[0].current_date) }} - {{ parseDate(dates[1].current_date) }}
Ссылочки