Запилил стор для расписания стримов
This commit is contained in:
parent
d128e6f90a
commit
e04bc5ba98
|
@ -1,15 +1,37 @@
|
|||
import {defineStore} from "pinia";
|
||||
import axios from "axios";
|
||||
|
||||
export const useScheduleStore = defineStore('Schedule', {
|
||||
state: () => ({
|
||||
fetchingDates: true,
|
||||
fetchingTable: true,
|
||||
fetchingLinks: true
|
||||
dates: Object,
|
||||
links: Object,
|
||||
schedules: Object
|
||||
}),
|
||||
getters: {
|
||||
|
||||
},
|
||||
actions: {
|
||||
async getDates(){
|
||||
await axios
|
||||
.get('/api/v1/dates')
|
||||
.then((response) => {
|
||||
this.dates = response.data;
|
||||
});
|
||||
},
|
||||
async getLinks(){
|
||||
await axios
|
||||
.get('/api/v1/links')
|
||||
.then((response)=>{
|
||||
this.links = response.data;
|
||||
})
|
||||
},
|
||||
async getSchedules(){
|
||||
await axios
|
||||
.get('/api/v1/schedules')
|
||||
.then((response)=>{
|
||||
this.schedules = response.data;
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
})
|
||||
|
|
|
@ -10,33 +10,30 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import axios from "axios";
|
||||
import ScheduleTable from "./Schedule/ScheduleTable.vue";
|
||||
import Links from "./Schedule/Links.vue";
|
||||
import {ref} from "vue";
|
||||
import {useScheduleStore} from '../stores/schedule.js';
|
||||
|
||||
export default {
|
||||
name: "Schedule",
|
||||
components: {Links, ScheduleTable},
|
||||
data: () => ({
|
||||
dates: [],
|
||||
dates: ref(),
|
||||
scheduleStore: useScheduleStore(),
|
||||
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() {
|
||||
this.getDates();
|
||||
this.scheduleStore.getDates().then(()=>{
|
||||
this.dates = this.scheduleStore.dates;
|
||||
this.fetching = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
<script>
|
||||
import axios from "axios";
|
||||
import {ref} from "vue";
|
||||
import {useScheduleStore} from '../../stores/schedule.js';
|
||||
|
||||
export default {
|
||||
name: "Links",
|
||||
data: () => ({
|
||||
links: [],
|
||||
links: ref(),
|
||||
fetching: true,
|
||||
scheduleStore: useScheduleStore(),
|
||||
windowHeight: document.documentElement.clientHeight,
|
||||
windowWidth: document.documentElement.clientWidth,
|
||||
isWide: window.innerWidth >= 460
|
||||
}),
|
||||
mounted() {
|
||||
axios
|
||||
.get('/api/v1/links')
|
||||
.then(response => {
|
||||
this.links = response.data;
|
||||
this.fetching = false;
|
||||
});
|
||||
this.scheduleStore.getLinks().then(()=>{
|
||||
this.links = this.scheduleStore.links;
|
||||
this.fetching = false;
|
||||
});
|
||||
this.myEventHandler();
|
||||
window.addEventListener("resize", this.myEventHandler, { passive: true });
|
||||
},
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
<script>
|
||||
import axios from "axios";
|
||||
import {useScheduleStore} from '../../stores/schedule.js';
|
||||
import {ref} from "vue";
|
||||
|
||||
export default {
|
||||
name: "ScheduleTable",
|
||||
data: () => ({
|
||||
schedules: [],
|
||||
schedules: ref(),
|
||||
scheduleStore: useScheduleStore(),
|
||||
fetching: true
|
||||
}),
|
||||
methods: {
|
||||
|
@ -14,12 +16,10 @@
|
|||
}
|
||||
},
|
||||
mounted() {
|
||||
axios
|
||||
.get('/api/v1/schedules')
|
||||
.then(response => {
|
||||
this.schedules = response.data;
|
||||
this.fetching = false;
|
||||
});
|
||||
this.scheduleStore.getSchedules().then(()=>{
|
||||
this.schedules = this.scheduleStore.schedules;
|
||||
this.fetching = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
Loading…
Reference in New Issue