mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-10-12 06:54:04 +00:00
BUG: Fixed issue witd drag drop animation
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user