BUG: Fixed issue witd drag drop animation

This commit is contained in:
Ivymaster
2026-09-09 12:21:46 +02:00
parent 6ea1d4610d
commit 4ecd4b5a65
2 changed files with 61 additions and 11 deletions
+7 -1
View File
@@ -76,7 +76,8 @@ export default {
"resize",
"event-hover",
"event-unhover",
"open-reservierung"
"open-reservierung",
"events-reloaded",
],
data() {
@@ -101,6 +102,11 @@ export default {
showRaster: true,
};
},
watch: {
events() {
this.$emit('events-reloaded');
}
},
computed: {
backgrounds() {
let now = luxon.DateTime.now().setZone(this.timezone);
+54 -10
View File
@@ -438,15 +438,24 @@ export default {
return this.$api.call(ApiSearchbar.search(params));
},
getPromiseFunc(start, end) {
const hasRoom = !!this.ort_kurzbz;
const hasRooms = this.rooms.length > 0;
const hasLektoren = this.lecturers.length > 0;
const hasStg = !!this.stg;
const hasStg = this.studiengaenge.length > 0;
const filter = {};
if (hasRoom) filter.ort = this.ort_kurzbz;
if (hasStg) filter.stg = this.stg;
if (hasLektoren) filter.uid = this.lecturers.map((l) => l.uid);
if (hasRooms) filter.ort = this.rooms.map((room) => room.ort_kurzbz);
if (hasStg) {
filter.stg = this.studiengaenge.map(
({ stg_kz, semester, orgform_kurzbz }) => ({
stg_kz,
semester,
orgform_kurzbz,
}),
);
}
if (hasLektoren)
filter.uid = this.lecturers.map((lecture) => lecture.uid);
let response = null;
if (this.previewRole === 'lektor')
@@ -532,7 +541,7 @@ export default {
const { item, start, end } = payload;
const obj = item[0];
if (!obj?.orig?.kalender_id)
return alert('Kein gültiges Kalender-Event zum Resizen');
return;
const dates = this._parseDates(start, end);
@@ -967,18 +976,42 @@ export default {
},
updateKalenderEventElementDisplay(calendarGruppenId, startDT, endDT) {
if (!calendarGruppenId)
return alert('Kein gültiges Kalender-Event zum Resizen');
return;
let startOfDay = startDT.startOf('day');
let newPotentialStart = startDT.diff(startOfDay).toMillis() ?? 1;
let newPotentialEnd = endDT.diff(startOfDay).toMillis();
let element = document.querySelector(
const calendar = this.$refs.calendar?.$el;
let element = calendar?.querySelector(
`[data-group-id="event-group-${calendarGruppenId}"]`,
);
if (!element) return alert('Kein gültiges Kalender-Event zum Resizen');
if (!element) return;
const targetGridLine = [...calendar.querySelectorAll(
'.fhc-calendar-base-grid-line',
)].find((gridLine) => {
const [rowStart, columnStart, rowEnd] = getComputedStyle(
gridLine,
).gridArea.split(' / ');
return (
rowStart === '1' &&
columnStart === String(startDT.weekday) &&
rowEnd === '-1'
);
});
const changedDay =
targetGridLine && element.parentElement !== targetGridLine;
setTimeout(() => {
if (!calendar.contains(element)) return;
if (changedDay) {
targetGridLine.insertBefore(element, null);
element.classList.add('tempus-temporary-calendar-event');
}
element.style.gridRowEnd = 't_' + newPotentialEnd;
element.style.gridRowStart = 't_' + newPotentialStart;
}, 100);
@@ -993,7 +1026,6 @@ export default {
element.appendChild(outerDiv);
const calendar = document.querySelector('.fhc-calendar-base-grid');
const eventRect = element.getBoundingClientRect();
const offset = 300;
@@ -1013,6 +1045,17 @@ export default {
});
}
},
clearTemporaryEvents() {
const calendar = this.$refs.calendar?.$el;
if (!calendar) return;
const tempEvents = calendar.querySelectorAll(
'.tempus-temporary-calendar-event',
);
tempEvents.forEach((event) => {
event.remove();
});
}
},
watch: {
lecturers: {
@@ -1162,6 +1205,7 @@ export default {
@open-reservierung="openReservierung"
:extra-backgrounds="extraBackgrounds"
@update:range="handleRange"
@events-reloaded="clearTemporaryEvents"
class="responsive-calendar"
/>
</template>