mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-10-18 17:59:35 +00:00
fixed issue with unresponsive reservation delete buttons in widget and my lv plan
This commit is contained in:
@@ -236,6 +236,7 @@ class StundenplanLib
|
||||
|
||||
if ($is_mitarbeiter && empty($ort_kurzbz)) {
|
||||
// request for personal lvplan show only reservations of logged in user
|
||||
$this->_ci->addMeta("meta", "adis");
|
||||
$reservierungen = $this->_ci->ReservierungModel->getReservierungenMitarbeiter($start_date, $end_date, $uid);
|
||||
} else {
|
||||
// querying the reservierungen
|
||||
|
||||
@@ -96,7 +96,7 @@ class Reservierung_model extends DB_Model
|
||||
$query_result = $this->execReadOnlyQuery("
|
||||
SELECT
|
||||
DISTINCT(insertvon),
|
||||
'reservierung' as type, beginn, ende, datum,
|
||||
'reservierung' as type, beginn, ende, datum, array_agg(DISTINCT reservierung_id) AS reservierung_id,
|
||||
COALESCE(titel, beschreibung) as topic,
|
||||
array_agg(DISTINCT mitarbeiter_kurzbz) as lektor,
|
||||
array_agg(DISTINCT (gruppe,verband,semester,studiengang_kz,gruppen_kuerzel)) as gruppe,
|
||||
|
||||
@@ -215,18 +215,18 @@ export default {
|
||||
:style="eventStyle(event)"
|
||||
>
|
||||
<component
|
||||
v-if="mode == 'event'"
|
||||
v-if="renderers && mode == 'event'"
|
||||
:is="renderers[event.type]?.modalContent"
|
||||
:event="event"
|
||||
@create-event="(event) => $emit('create-event', event)"
|
||||
></component>
|
||||
<component
|
||||
v-else-if="mode == 'eventheader'"
|
||||
v-else-if="renderers && mode == 'eventheader'"
|
||||
:is="renderers[event.type]?.modalTitle"
|
||||
:event="event"
|
||||
></component>
|
||||
<component
|
||||
v-else
|
||||
v-else-if="renderers"
|
||||
:is="renderers[event.type]?.calendarEvent"
|
||||
:event="event"
|
||||
@delete-event="(event) => $emit('delete-event', event)"
|
||||
|
||||
@@ -5,6 +5,8 @@ import { useRenderers } from '../../composables/Renderers.js';
|
||||
|
||||
import ModeList from '../Calendar/Mode/List.js';
|
||||
|
||||
import ApiRoomPlan from '../../api/factory/calendar/roomPlan.js';
|
||||
|
||||
export default {
|
||||
name: "CalendarWidget",
|
||||
components: {
|
||||
@@ -49,17 +51,36 @@ export default {
|
||||
},
|
||||
updateRange(rangeInterval) {
|
||||
this.rangeInterval = rangeInterval;
|
||||
}
|
||||
},
|
||||
deleteEvent(event) {
|
||||
if (event.type === "reservierung") {
|
||||
this.deleteReservation(event);
|
||||
}
|
||||
},
|
||||
async deleteReservation(event) {
|
||||
if (
|
||||
luxon.DateTime.fromISO(`${event.datum}T${event.beginn}`) <
|
||||
luxon.DateTime.now()
|
||||
)
|
||||
return;
|
||||
|
||||
await this.$api.call(
|
||||
ApiRoomPlan.deleteRoomReservation(event.reservierung_id),
|
||||
);
|
||||
|
||||
this.reset();
|
||||
},
|
||||
},
|
||||
setup(props) {
|
||||
const rangeInterval = Vue.ref(null);
|
||||
|
||||
const { events } = useEventLoader(rangeInterval, props.getPromiseFunc);
|
||||
const { events, reset } = useEventLoader(rangeInterval, props.getPromiseFunc);
|
||||
const { renderers } = useRenderers();
|
||||
|
||||
return {
|
||||
rangeInterval,
|
||||
events,
|
||||
reset,
|
||||
renderers
|
||||
};
|
||||
},
|
||||
@@ -80,17 +101,17 @@ export default {
|
||||
{{ $p.t('lehre/noLvFound') }}
|
||||
</div>
|
||||
<component
|
||||
v-else-if="mode == 'eventheader'"
|
||||
v-else-if="renderers && mode == 'eventheader'"
|
||||
:is="renderers[event.type]?.modalTitle"
|
||||
:event="event"
|
||||
></component>
|
||||
<component
|
||||
v-else-if="mode == 'event'"
|
||||
v-else-if="renderers && mode == 'event'"
|
||||
:is="renderers[event.type]?.modalContent"
|
||||
:event="event"
|
||||
></component>
|
||||
<div
|
||||
v-else
|
||||
v-else-if="renderers"
|
||||
:class="'event-type-' + event.type + ' ' + mode + 'PageContainer'"
|
||||
:style="eventStyle(event)"
|
||||
>
|
||||
@@ -98,6 +119,7 @@ export default {
|
||||
:is="renderers[event.type]?.calendarEvent"
|
||||
:event="event"
|
||||
:timeSlotDisplayBehavior="'always'"
|
||||
@delete-event="(event) => deleteEvent(event)"
|
||||
></component>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -2,6 +2,7 @@ import FhcCalendar from "../../Calendar/LvPlan.js";
|
||||
|
||||
import ApiLvPlan from '../../../api/factory/lvPlan.js';
|
||||
import ApiAuthinfo from '../../../api/factory/authinfo.js';
|
||||
import ApiRoomPlan from '../../../api/factory/calendar/roomPlan.js';
|
||||
|
||||
export const DEFAULT_MODE_LVPLAN_DESKTOP = "Week";
|
||||
export const DEFAULT_MODE_LVPLAN_MOBILE = "List";
|
||||
@@ -134,6 +135,24 @@ export default {
|
||||
this.isMitarbeiter = authInfo.isMitarbeiter;
|
||||
this.isStudent = authInfo.isStudent;
|
||||
},
|
||||
deleteEvent(event) {
|
||||
if (event.type === "reservierung") {
|
||||
this.deleteReservation(event);
|
||||
}
|
||||
},
|
||||
async deleteReservation(event) {
|
||||
if (
|
||||
luxon.DateTime.fromISO(`${event.datum}T${event.beginn}`) <
|
||||
luxon.DateTime.now()
|
||||
)
|
||||
return;
|
||||
|
||||
await this.$api.call(
|
||||
ApiRoomPlan.deleteRoomReservation(event.reservierung_id),
|
||||
);
|
||||
|
||||
this.$refs.calendar.reset();
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
await this.fetchAuthInfo();
|
||||
@@ -157,6 +176,7 @@ export default {
|
||||
@update:date="handleChangeDate"
|
||||
@update:mode="handleChangeMode"
|
||||
@update:range="updateRange"
|
||||
@delete-event="(event) => deleteEvent(event)"
|
||||
class="responsive-calendar"
|
||||
>
|
||||
<div
|
||||
|
||||
Reference in New Issue
Block a user