Merge branch '9-reschedule-calendar-interval' into 'master'

Перенесла интервал календаря в параметры и починила запрос

See merge request astra/astra-frontend!504
This commit is contained in:
Kirill Andrusyak
2023-08-17 10:15:34 +00:00
5 changed files with 88 additions and 20 deletions

View File

@@ -70,17 +70,9 @@ export default {
return this.pageSettings.find((el) => el.id === "settings"); return this.pageSettings.find((el) => el.id === "settings");
}, },
}, },
mounted() {
let href = window.location.href.slice(22);
this.pageSettings.forEach((el, index) => {
el.path === href.substr(href.lastIndexOf("#"))
? (this.pageSettings[index].active = true)
: (this.pageSettings[index].active = false);
});
},
watch: { watch: {
"$route.path"() { "$route.path"(value) {
if (this.$router.currentRoute._value.fullPath === "/calendar") { if (value === "/calendar") {
this.currentPageBorder = true; this.currentPageBorder = true;
this.pageSettings.forEach((el) => this.pageSettings.forEach((el) =>
el.path === "#/calendar" ? (el.active = true) : (el.active = false) el.path === "#/calendar" ? (el.active = true) : (el.active = false)
@@ -88,6 +80,13 @@ export default {
} else this.currentPageBorder = false; } else this.currentPageBorder = false;
}, },
}, },
mounted() {
this.pageSettings.forEach((el, index) => {
el.path === "#" + this.$route.path
? (this.pageSettings[index].active = true)
: (this.pageSettings[index].active = false);
});
},
}; };
</script> </script>

View File

@@ -39,6 +39,7 @@ export default {
computed: { computed: {
...mapState({ ...mapState({
selectedRecordId: (state) => state.calendar.selectedRecordId, selectedRecordId: (state) => state.calendar.selectedRecordId,
selectedDates: (state) => state.calendar.selectedDates,
}), }),
}, },
methods: { methods: {
@@ -53,7 +54,12 @@ export default {
}, },
...mapActions({ ...mapActions({
changeSelectedRecordId: "changeSelectedRecordId", changeSelectedRecordId: "changeSelectedRecordId",
changeSelectedDates: "changeSelectedDates",
getEvents: "getEvents",
}), }),
convertDate(date) {
return moment(date?.split(".")?.reverse()?.join("-"));
},
}, },
watch: { watch: {
selectedRecordId(value) { selectedRecordId(value) {
@@ -62,6 +68,59 @@ export default {
previewVisibility(value) { previewVisibility(value) {
if (!value) this.changeSelectedRecordId(null); if (!value) this.changeSelectedRecordId(null);
}, },
"$route.query": {
immediate: true,
deep: true,
handler(value) {
if (this.$route.path === "/calendar") {
if (!value?.start || !value?.end) {
this.changeSelectedDates({
from: moment().clone().startOf("week"),
to: moment().clone().endOf("week"),
});
this.$router.replace({
query: {
start: this.selectedDates?.from?.format("DD.MM.YYYY"),
end: this.selectedDates?.to?.format("DD.MM.YYYY"),
},
});
} else if (
value?.start !== this.selectedDates?.from?.format("DD.MM.YYYY") ||
value?.end !== this.selectedDates?.to?.format("DD.MM.YYYY")
)
this.changeSelectedDates({
from: this.convertDate(value?.start),
to: this.convertDate(value?.end),
});
}
},
},
selectedDates: {
deep: true,
immediate: true,
handler(newVal, oldVal) {
if (
!newVal?.from?.isSame(oldVal?.from) ||
!newVal?.to?.isSame(oldVal?.to)
) {
this.getEvents();
if (
this.$route.query?.start !== newVal?.from?.format("DD.MM.YYYY") &&
this.$route.query?.end !== newVal?.to?.format("DD.MM.YYYY")
) {
this.$router.replace({
query: {
start: newVal?.from?.format("DD.MM.YYYY"),
end: newVal?.to?.format("DD.MM.YYYY"),
},
});
}
}
},
},
},
beforeUnmount() {
this.$route.query = {};
}, },
}; };
</script> </script>

View File

@@ -111,15 +111,18 @@ export default {
}, },
methods: { methods: {
previousWeek() { previousWeek() {
this.dates.from = this.dates.from.clone().subtract(1, "week"); const diff = this.dates?.to?.diff(this.dates?.from, "days") + 1;
this.dates.to = this.dates.to.clone().subtract(1, "week"); this.dates.from = this.dates.from.clone().subtract(diff, "day");
this.dates.to = this.dates.to.clone().subtract(diff, "day");
}, },
nextWeek() { nextWeek() {
this.dates.from = this.dates.from.clone().add(1, "week"); const diff = this.dates?.to?.diff(this.dates?.from, "days") + 1;
this.dates.to = this.dates.to.clone().add(1, "week"); this.dates.from = this.dates.from.clone().add(diff, "day");
this.dates.to = this.dates.to.clone().add(diff, "day");
}, },
...mapActions({ ...mapActions({
changeSelectedDates: "changeSelectedDates", changeSelectedDates: "changeSelectedDates",
getEvents: "getEvents",
}), }),
saveDatesChange() { saveDatesChange() {
this.calendarVisibility = false; this.calendarVisibility = false;
@@ -142,9 +145,17 @@ export default {
this.changeSelectedDates(val); this.changeSelectedDates(val);
}, },
}, },
}, selectedDates: {
mounted() { deep: true,
this.initializeDates(); immediate: true,
handler(val) {
if (
!val?.from.isSame(this.dates?.from) ||
!val?.to.isSame(this.dates?.to)
)
this.initializeDates();
},
},
}, },
}; };
</script> </script>

View File

@@ -239,7 +239,6 @@ export default {
this.changeCurrentTime(); this.changeCurrentTime();
this.timeCoilInitialization(); this.timeCoilInitialization();
this.startTimer(); this.startTimer();
this.getEvents();
}, },
beforeUnmount() { beforeUnmount() {
this.stopTimer(); this.stopTimer();

View File

@@ -25,8 +25,8 @@ const actions = {
commit("setSelectedRecordId", id); commit("setSelectedRecordId", id);
}, },
getEvents({ commit, state }) { getEvents({ commit, state }) {
const start = state.selectedDates.from.toISOString(); const start = state.selectedDates.from.format("YYYY-MM-DDTHH:mm:ss");
const end = state.selectedDates.to.toISOString(); const end = state.selectedDates.to.format("YYYY-MM-DDTHH:mm:ss");
fetchWrapper.get(`events?start=${start}&end=${end}`).then((data) => { fetchWrapper.get(`events?start=${start}&end=${end}`).then((data) => {
if (Array.isArray(data)) { if (Array.isArray(data)) {
commit("setEvents", data); commit("setEvents", data);