1import SingleEventDef from '../../models/event/SingleEventDef' 2import EventFootprint from '../../models/event/EventFootprint' 3import EventSource from '../../models/event-source/EventSource' 4 5 6export default class HelperRenderer { 7 8 view: any 9 component: any 10 eventRenderer: any 11 helperEls: any 12 13 14 constructor(component, eventRenderer) { 15 this.view = component._getView() 16 this.component = component 17 this.eventRenderer = eventRenderer 18 } 19 20 21 renderComponentFootprint(componentFootprint) { 22 this.renderEventFootprints([ 23 this.fabricateEventFootprint(componentFootprint) 24 ]) 25 } 26 27 28 renderEventDraggingFootprints(eventFootprints, sourceSeg, isTouch) { 29 this.renderEventFootprints( 30 eventFootprints, 31 sourceSeg, 32 'fc-dragging', 33 isTouch ? null : this.view.opt('dragOpacity') 34 ) 35 } 36 37 38 renderEventResizingFootprints(eventFootprints, sourceSeg, isTouch) { 39 this.renderEventFootprints( 40 eventFootprints, 41 sourceSeg, 42 'fc-resizing' 43 ) 44 } 45 46 47 renderEventFootprints(eventFootprints, sourceSeg?, extraClassNames?, opacity?) { 48 let segs = this.component.eventFootprintsToSegs(eventFootprints) 49 let classNames = 'fc-helper ' + (extraClassNames || '') 50 let i 51 52 // assigns each seg's el and returns a subset of segs that were rendered 53 segs = this.eventRenderer.renderFgSegEls(segs) 54 55 for (i = 0; i < segs.length; i++) { 56 segs[i].el.addClass(classNames) 57 } 58 59 if (opacity != null) { 60 for (i = 0; i < segs.length; i++) { 61 segs[i].el.css('opacity', opacity) 62 } 63 } 64 65 this.helperEls = this.renderSegs(segs, sourceSeg) 66 } 67 68 69 /* 70 Must return all mock event elements 71 */ 72 renderSegs(segs, sourceSeg?) { 73 // Subclasses must implement 74 } 75 76 77 unrender() { 78 if (this.helperEls) { 79 this.helperEls.remove() 80 this.helperEls = null 81 } 82 } 83 84 85 fabricateEventFootprint(componentFootprint) { 86 let calendar = this.view.calendar 87 let eventDateProfile = calendar.footprintToDateProfile(componentFootprint) 88 let dummyEvent = new SingleEventDef(new EventSource(calendar)) 89 let dummyInstance 90 91 dummyEvent.dateProfile = eventDateProfile 92 dummyInstance = dummyEvent.buildInstance() 93 94 return new EventFootprint(componentFootprint, dummyEvent, dummyInstance) 95 } 96 97} 98