11import Route from '@ember/routing/route' ;
2+ import $ from 'jquery' ;
3+
4+ // TODO(Areeb): Remove once upgraded
5+ // Workaround for https://github.com/fossasia/open-event-frontend/issues/4729
6+ function patchFullCalendar ( ) {
7+ if ( ! window ?. FullCalendar ) { return }
8+ window . FullCalendar . EventRenderer . prototype . renderFgSegEls = function ( segs , disableResizing ) {
9+ let _this = this ;
10+ if ( disableResizing === void 0 ) { disableResizing = false }
11+ let hasEventRenderHandlers = this . view . hasPublicHandlers ( 'eventRender' ) ;
12+ let html = '' ;
13+ let renderedSegs = [ ] ;
14+ let i ;
15+ if ( segs . length ) {
16+ // build a large concatenation of event segment HTML
17+ for ( i = 0 ; i < segs . length ; i ++ ) {
18+ this . beforeFgSegHtml ( segs [ i ] ) ;
19+ html += this . fgSegHtml ( segs [ i ] , disableResizing ) ;
20+ }
21+ // Grab individual elements from the combined HTML string. Use each as the default rendering.
22+ // Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false.
23+ $ ( html ) . each ( function ( i , node ) {
24+ let seg = segs [ i ] ;
25+ let el = $ ( node ) ;
26+ // Areeb: seg is undefined for single day events as i > seg.length due to some logical error
27+ if ( seg && hasEventRenderHandlers ) { // Areeb: Added `seg && `
28+ el = _this . filterEventRenderEl ( seg . footprint , el ) ;
29+ }
30+ if ( seg && el ) { // Areeb: Added `seg && `
31+ el . data ( 'fc-seg' , seg ) ; // used by handlers
32+ seg . el = el ;
33+ renderedSegs . push ( seg ) ;
34+ }
35+ } ) ;
36+ }
37+ return renderedSegs ;
38+ } ;
39+ }
40+
241export default Route . extend ( {
342 titleToken ( ) {
443 return this . l10n . t ( 'Scheduler' ) ;
@@ -9,6 +48,7 @@ export default Route.extend({
948 }
1049 } ,
1150 async model ( ) {
51+ patchFullCalendar ( ) ;
1252 let unscheduledFilterOptions = [
1353 {
1454 and : [
0 commit comments