Compare commits
2 Commits
4018fd3334
...
e10b5abe90
Author | SHA1 | Date | |
---|---|---|---|
|
e10b5abe90 | ||
|
be218a5fea |
|
@ -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",
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
import {defineStore} from "pinia";
|
||||
|
||||
export const useScheduleStore = defineStore('Schedule', {
|
||||
state: () => ({
|
||||
fetchingDates: true,
|
||||
fetchingTable: true,
|
||||
fetchingLinks: true
|
||||
}),
|
||||
getters: {
|
||||
|
||||
},
|
||||
actions: {
|
||||
|
||||
},
|
||||
})
|
|
@ -1,12 +1,11 @@
|
|||
<template>
|
||||
<v-sheet class="bg-gradient h-100 w-100 d-flex justify-center">
|
||||
<v-sheet class="mt-5 mb-5 rounded-lg w-75">
|
||||
<p class="text-h3 ma-5">Расписание стримов</p>
|
||||
<p class="ma-5 text-h4">{{ parseDate(dates[0].current_date) }} - {{ parseDate(dates[1].current_date) }}</p>
|
||||
<ScheduleTable/>
|
||||
<p class="text-h3 ma-5">Ссылочки</p>
|
||||
<Links/>
|
||||
</v-sheet>
|
||||
<v-sheet class="mt-5 mb-5 rounded-lg w-75">
|
||||
<p class="text-h3 ma-5">Расписание стримов</p>
|
||||
<v-skeleton-loader v-if="fetching" type="text" />
|
||||
<p v-else class="ma-5 text-h4"> {{ parseDate(dates[0].current_date) }} - {{ parseDate(dates[1].current_date) }}</p>
|
||||
<ScheduleTable/>
|
||||
<p class="text-h3 ma-5">Ссылочки</p>
|
||||
<Links/>
|
||||
</v-sheet>
|
||||
</template>
|
||||
|
||||
|
@ -19,31 +18,31 @@ export default {
|
|||
name: "Schedule",
|
||||
components: {Links, ScheduleTable},
|
||||
data: () => ({
|
||||
dates: []
|
||||
dates: [],
|
||||
fetching: true
|
||||
}),
|
||||
methods: {
|
||||
parseDate(date){
|
||||
let dateArr = date.split("-");
|
||||
return dateArr[2] + "." + dateArr[1];
|
||||
},
|
||||
async getDates(){
|
||||
await axios
|
||||
.get('/api/v1/dates')
|
||||
.then(response => {
|
||||
this.dates = response.data;
|
||||
this.fetching = false;
|
||||
});
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
axios
|
||||
.get('/api/v1/dates')
|
||||
.then(response => (this.dates = response.data));
|
||||
this.getDates();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.bg-gradient {
|
||||
background: linear-gradient(-45deg, #f103b0, #f0a068, #4fdbfeff);
|
||||
background-size: 200% 200%;
|
||||
animation: gradient 15s ease infinite;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
@keyframes gradient {
|
||||
0% {
|
||||
background-position: 0 50%;
|
||||
|
|
|
@ -1,14 +1,19 @@
|
|||
<script>
|
||||
import axios from "axios";
|
||||
|
||||
export default {
|
||||
name: "Links",
|
||||
data: () => ({
|
||||
links: []
|
||||
links: [],
|
||||
fetching: true
|
||||
}),
|
||||
mounted() {
|
||||
axios
|
||||
.get('/api/v1/links')
|
||||
.then(response => (this.links = response.data));
|
||||
.then(response => {
|
||||
this.links = response.data;
|
||||
this.fetching = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -16,7 +21,8 @@
|
|||
<template>
|
||||
<div class="w-100 d-flex justify-center">
|
||||
<v-list class="w-66">
|
||||
<v-list-item class="ma-5 bg-gradient-noh" elevation="6" v-for="link in links" :href="link.link"> <!-- style="background-color: #E57373; color: #FFFFFF" -->
|
||||
<v-skeleton-loader v-if="fetching" type="list-item"/>
|
||||
<v-list-item v-else class="ma-5 bg-gradient-noh" elevation="6" v-for="link in links" :href="link.link"> <!-- style="background-color: #E57373; color: #FFFFFF" -->
|
||||
<template v-slot:prepend>
|
||||
<v-avatar :image="link.image" rounded="0"></v-avatar>
|
||||
</template>
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
<script>
|
||||
import axios from "axios";
|
||||
|
||||
export default {
|
||||
name: "ScheduleTable",
|
||||
data: () => ({
|
||||
schedules: []
|
||||
schedules: [],
|
||||
fetching: true
|
||||
}),
|
||||
methods: {
|
||||
parseDate(date){
|
||||
|
@ -14,14 +16,18 @@
|
|||
mounted() {
|
||||
axios
|
||||
.get('/api/v1/schedules')
|
||||
.then(response => (this.schedules = response.data));
|
||||
.then(response => {
|
||||
this.schedules = response.data;
|
||||
this.fetching = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="w-100 d-flex justify-center">
|
||||
<v-table class="text-h5 w-66">
|
||||
<v-skeleton-loader v-if="fetching" type="table"/>
|
||||
<v-table v-else class="text-h5 w-66">
|
||||
<tbody>
|
||||
<tr v-for="schedule in schedules">
|
||||
<td>{{ parseDate(schedule.current_date) }} {{ schedule.weekday_name }} {{ schedule.stream_time }}</td>
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
<template>
|
||||
<v-app>
|
||||
<Schedule></Schedule>
|
||||
<v-sheet class="bg-gradient h-100 w-100 d-flex justify-center">
|
||||
<Schedule/>
|
||||
</v-sheet>
|
||||
</v-app>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Schedule from "./Schedule.vue"
|
||||
import Schedule from "./Schedule.vue";
|
||||
|
||||
export default {
|
||||
name: "Welcome",
|
||||
|
@ -15,4 +17,11 @@ export default {
|
|||
|
||||
<style scoped>
|
||||
|
||||
.bg-gradient {
|
||||
background: linear-gradient(-45deg, #f103b0, #f0a068, #4fdbfeff);
|
||||
background-size: 200% 200%;
|
||||
animation: gradient 15s ease infinite;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
|
@ -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");
|
||||
|
|
Loading…
Reference in New Issue