diff --git a/application/controllers/api/frontend/v1/Stundenplan.php b/application/controllers/api/frontend/v1/Stundenplan.php index c53af8e3c..84c7933ad 100644 --- a/application/controllers/api/frontend/v1/Stundenplan.php +++ b/application/controllers/api/frontend/v1/Stundenplan.php @@ -95,7 +95,6 @@ class Stundenplan extends FHCAPI_Controller }, ['timestart'=>$moodle_start_date,'timeend'=>$moodle_end_date, 'username'=>getAuthUID()] ); - $moodle_events = array_map(function($event){ $moodle_event_timestart = new DateTime($event->timestart); $moodle_event_timeend = new DateTime($event->timeend); @@ -112,7 +111,7 @@ class Stundenplan extends FHCAPI_Controller $convertedEvent->gruppe = []; $convertedEvent->ort_kurzbz = $event->location; $convertedEvent->lehreinheit_id = $event->lehreinheitsNummber ?? null; - $convertedEvent->titel = $event->course->fullname; + $convertedEvent->titel = isset($event->course->fullname)? $event->course->fullname:null; $convertedEvent->lehrfach = ''; $convertedEvent->lehrform = ''; $convertedEvent->lehrfach_bez = ''; @@ -121,6 +120,9 @@ class Stundenplan extends FHCAPI_Controller $convertedEvent->lehrveranstaltung_id = 0; $convertedEvent->ort_content_id = 0; $convertedEvent->url = $event->url; + $convertedEvent->activityIcon = isset($event->icon->iconurl)? $event->icon->iconurl:null; + $convertedEvent->actionname = isset($event->action->name)?$event->action->name:null; + $convertedEvent->overdue = !empty($event->overdue); return $convertedEvent; },$moodle_events); diff --git a/public/js/components/Calendar/Calendar.js b/public/js/components/Calendar/Calendar.js index cdceb38db..da67af6df 100644 --- a/public/js/components/Calendar/Calendar.js +++ b/public/js/components/Calendar/Calendar.js @@ -72,13 +72,16 @@ export default { immediate: true, }, // scroll to the first event if the html element was found - scrollTime({focusDate,scrollTime}){ + scrollTime(newValue,oldValue){ // return early if the scrollTime is not set - if(!scrollTime) return; + if(!newValue.scrollTime || !newValue?.doScroll) return; + if(newValue?.scrollTime == oldValue?.scrollTime && newValue?.focusDate.compare(oldValue?.focusDate)){ + return; + } // scroll the Stundenplan to the closest event Vue.nextTick(()=>{ - let previousScrollAnchor = document.getElementById('scroll' + (scrollTime - 1) + this.focusDate.d + this.focusDate.w) - let scrollAnchor = document.getElementById('scroll' + scrollTime + this.focusDate.d + this.focusDate.w); + let previousScrollAnchor = document.getElementById('scroll' + (newValue.scrollTime - 1) + this.focusDate.d + this.focusDate.w) + let scrollAnchor = document.getElementById('scroll' + newValue.scrollTime + this.focusDate.d + this.focusDate.w); if (previousScrollAnchor) { previousScrollAnchor.scrollIntoView({ behavior: 'smooth', block: 'start' }); } @@ -147,9 +150,17 @@ export default { // return the first beginning time of the filtered events if(this.filteredEvents && Array.isArray(this.filteredEvents) && this.filteredEvents.length > 0) { - let scrollTime = parseInt(this.filteredEvents.sort((a, b) => parseInt(a.beginn) - parseInt(b.beginn))[0].beginn); + let doScroll = true; + let scrollTimeEvents = this.filteredEvents.filter(event=>{ + return event.type !== 'moodle'; + }); + // do not compute a new scroll time if there are no other events than moodle events + if(!(scrollTimeEvents.length >0)){ + doScroll = false; + } + let scrollTime = parseInt(scrollTimeEvents.sort((a, b) => parseInt(a.beginn) - parseInt(b.beginn))[0]?.beginn); // to ensure that the scrollTime watcher triggers even if the scrollTime doesn't change, it returns both the scrollTime and the focusDate - return { focusDate: this.focusDate, scrollTime }; + return { focusDate: this.focusDate, doScroll, scrollTime }; } // there is no event that matches the current view mode constraints else @@ -181,7 +192,7 @@ export default { return true; } }) - + return filteredEvents; } else diff --git a/public/js/components/Cis/Mylv/LvInfo.js b/public/js/components/Cis/Mylv/LvInfo.js index e2a00b5c9..b2fc7fe3d 100644 --- a/public/js/components/Cis/Mylv/LvInfo.js +++ b/public/js/components/Cis/Mylv/LvInfo.js @@ -72,12 +72,24 @@ export default { {{$p.t('global','typ')}}: - {{event?.purpose}} + {{event?.purpose}} {{$p.t('fristenmanagement','frist')}}: {{start_time}} + + Action required: + + {{event?.actionname}} + + + + Overdue: + + This event is overdue + + Link: