update(Moodle Events):adds additional fields for Moodle Events and disables the automatic scrolling for moodleEvents

This commit is contained in:
SimonGschnell
2025-03-03 11:07:35 +01:00
parent bc7dba1c14
commit b8c45cf244
3 changed files with 35 additions and 10 deletions
@@ -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);
+18 -7
View File
@@ -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
+13 -1
View File
@@ -72,12 +72,24 @@ export default {
</tr>
<tr>
<th>{{$p.t('global','typ')}}:</th>
<td>{{event?.purpose}}</td>
<td><img v-if="event?.activityIcon" class="me-1" :src="event?.activityIcon" />{{event?.purpose}}</td>
</tr>
<tr>
<th>{{$p.t('fristenmanagement','frist')}}:</th>
<td>{{start_time}}</td>
</tr>
<tr v-if="event?.actionname">
<th>Action required:</th>
<td>
{{event?.actionname}}
</td>
</tr>
<tr v-if="event?.overdue">
<th>Overdue:</th>
<td>
This event is overdue
</td>
</tr>
<tr >
<th>Link:</th>
<td>