WIP: Conflicts resolved 2

This commit is contained in:
Ivymaster
2026-07-09 16:11:19 +02:00
parent 829d50ef0a
commit 8cee31388e
3 changed files with 67 additions and 64 deletions
+62 -59
View File
@@ -348,24 +348,9 @@ export default {
this.$refs.calendar.resetEventLoader();
if (this.lastRange) this.handleRange(this.lastRange);
},
addToFilter: function (filter, type) {
if (type === "ort") {
const ort_kurzbz = filter.ort_kurzbz;
if (!this.rooms.some((room) => room.ort_kurzbz === ort_kurzbz)) {
this.rooms.push({ ort_kurzbz });
}
} else if (type === "mitarbeiter") {
const uid = filter.uid;
const label = filter.name;
if (!this.lecturers.some((l) => l.uid === uid)) {
this.lecturers.push({
uid,
label,
showEvents: true,
overlays: { blocks: true, wishes: true },
});
}
}
jumpToKw(kw) {
const num = parseInt(kw);
if (!num) return;
const date = luxon.DateTime.fromObject(
{
@@ -1185,48 +1170,66 @@ export default {
},
},
mounted() {
this.reservierungPending = false;
this.bcc = new BroadcastChannel("fhc-dnd");
this.bcc.addEventListener("message", (e) => {
if (e.data === "dropped" && !this.reservierungPending)
this.$refs.calendar.resetEventLoader();
});
},
beforeUnmount() {
this.bcc.close();
},
async created() {
await this.$api
.call(ApiRenderers.loadTempusRenderers())
.then((res) => res.data)
.then((data) => {
for (let rendertype of Object.keys(data)) {
let modalTitle = null;
let modalContent = null;
let calendarEvent = null;
if (data[rendertype].modalTitle)
modalTitle = Vue.markRaw(
Vue.defineAsyncComponent(
() => import(data[rendertype].modalTitle),
),
);
if (data[rendertype].modalContent)
modalContent = Vue.markRaw(
Vue.defineAsyncComponent(
() => import(data[rendertype].modalContent),
),
);
if (data[rendertype].calendarEvent)
calendarEvent = Vue.markRaw(
Vue.defineAsyncComponent(
() => import(data[rendertype].calendarEvent),
),
);
}
});
},
this.reservierungPending = false;
this.bcc = new BroadcastChannel('fhc-dnd');
this.bcc.addEventListener('message', e => {
if (e.data === 'dropped' && !this.reservierungPending)
this.$refs.calendar.resetEventLoader();
});
},
beforeUnmount() {
this.bcc.close();
},
async created()
{
await this.$api
.call(ApiRenderers.loadTempusRenderers())
.then(res => res.data)
.then(data => {
for (let rendertype of Object.keys(data)) {
let modalTitle = null;
let modalContent = null;
let calendarEvent = null;
if (data[rendertype].modalTitle)
modalTitle = Vue.markRaw(Vue.defineAsyncComponent(() => import(data[rendertype].modalTitle)));
if (data[rendertype].modalContent)
modalContent = Vue.markRaw(Vue.defineAsyncComponent(() => import(data[rendertype].modalContent)));
if (data[rendertype].calendarEvent)
calendarEvent = Vue.markRaw(Vue.defineAsyncComponent(() => import(data[rendertype].calendarEvent)));
if (data[rendertype].calendarEventStyles){
var head = document.head;
if(!head.querySelector(`link[href="${data[rendertype].calendarEventStyles}"]`)){
var link = document.createElement("link");
link.type = "text/css";
link.rel = "stylesheet";
link.href = data[rendertype].calendarEventStyles;
head.appendChild(link);
}
}
if(this.renderers === null) {
this.renderers = {};
}
if (!this.renderers[rendertype]) {
this.renderers[rendertype] = {}
}
this.renderers[rendertype].modalTitle = modalTitle;
this.renderers[rendertype].modalContent = modalContent;
this.renderers[rendertype].calendarEvent = calendarEvent;
}
});
this.$api.call(ApiTempusConfig.getHeader())
.then(res => {
this.visibleStatusArray = res.data.visible_status;
this.visibleStatus = ['all'];
});
this.$api.call(ApiInfo.getStudiengaenge())
.then(res => {this.studiengaenge_all = res.data});
},
template: `
<div class="tempus">
<div class="tempus" data-cy="tempus">
<keyboard-shortcuts :shortcuts="keyboardShortcuts" />
<header class="navbar navbar-expand-lg navbar-dark bg-dark flex-md-nowrap p-0 shadow">
<div class="col-md-4 col-lg-3 col-xl-2 d-flex align-items-center">
@@ -73,9 +73,9 @@ export const tempusApi = {
getPlannerEvents: (startDate, endDate) =>
cy
.request({
method: "GET",
method: "POST",
url: `${KALENDER_API}/Kalender/getPlan`,
qs: {
body: {
start_date: startDate,
end_date: endDate,
},
@@ -38,7 +38,7 @@ class TempusPage {
setupIntercepts = () => {
cy.intercept({ method: "GET", url: "**/StgTree" }).as("fetchCourseTree");
cy.intercept({
method: "GET",
method: "POST",
url: /\/tempus\/Kalender\/getPlan(?:\?|$)/,
}).as("fetchPlanData");
cy.intercept({
@@ -61,7 +61,7 @@ class TempusPage {
url: "**/components/stv/studiensemester/set**",
}).as("setSemester");
cy.intercept({
method: "GET",
method: "POST",
url: "**/tempus/Kalender/getRaumvorschlag**",
}).as("fetchRoomSuggestions");
cy.intercept({
@@ -73,7 +73,7 @@ class TempusPage {
url: "**/tempus/OperationalResourceToCalenderAPI/getAssignedResourcesByCalender/**",
}).as("fetchAssignedResources");
cy.intercept({
method: "GET",
method: "POST",
url: "**/tempus/coursepicker/getByStg**",
}).as("fetchCoursePickerCourses");
cy.intercept({