%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : 49.231.201.246 / Your IP : 216.73.216.149 Web Server : Apache/2.4.18 (Ubuntu) System : Linux 246 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : root ( 0) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/11584/cwd/html/ppaobm/vendor/bower-asset/fullcalendar/src/daygrid/ |
Upload File : |
import { DateComponent, Seg, htmlEscape, createFormatter, Hit, addDays, DateMarker, removeElement, ComponentContext, EventInstanceHash, memoizeRendering, MemoizedRendering } from '@fullcalendar/core' import SimpleDayGridEventRenderer from './SimpleDayGridEventRenderer' export interface DayTileProps { date: DateMarker fgSegs: Seg[] eventSelection: string eventDragInstances: EventInstanceHash eventResizeInstances: EventInstanceHash } export default class DayTile extends DateComponent<DayTileProps> { segContainerEl: HTMLElement private renderFrame: MemoizedRendering<[DateMarker]> private renderFgEvents: MemoizedRendering<[Seg[]]> private renderEventSelection: MemoizedRendering<[string]> private renderEventDrag: MemoizedRendering<[EventInstanceHash]> private renderEventResize: MemoizedRendering<[EventInstanceHash]> constructor(context: ComponentContext, el: HTMLElement) { super(context, el) let eventRenderer = this.eventRenderer = new DayTileEventRenderer(this) let renderFrame = this.renderFrame = memoizeRendering( this._renderFrame ) this.renderFgEvents = memoizeRendering( eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [ renderFrame ] ) this.renderEventSelection = memoizeRendering( eventRenderer.selectByInstanceId.bind(eventRenderer), eventRenderer.unselectByInstanceId.bind(eventRenderer), [ this.renderFgEvents ] ) this.renderEventDrag = memoizeRendering( eventRenderer.hideByHash.bind(eventRenderer), eventRenderer.showByHash.bind(eventRenderer), [ renderFrame ] ) this.renderEventResize = memoizeRendering( eventRenderer.hideByHash.bind(eventRenderer), eventRenderer.showByHash.bind(eventRenderer), [ renderFrame ] ) context.calendar.registerInteractiveComponent(this, { el: this.el, useEventCenter: false }) } render(props: DayTileProps) { this.renderFrame(props.date) this.renderFgEvents(props.fgSegs) this.renderEventSelection(props.eventSelection) this.renderEventDrag(props.eventDragInstances) this.renderEventResize(props.eventResizeInstances) } destroy() { super.destroy() this.renderFrame.unrender() // should unrender everything else this.calendar.unregisterInteractiveComponent(this) } _renderFrame(date: DateMarker) { let { theme, dateEnv } = this let title = dateEnv.format( date, createFormatter(this.opt('dayPopoverFormat')) // TODO: cache ) this.el.innerHTML = '<div class="fc-header ' + theme.getClass('popoverHeader') + '">' + '<span class="fc-title">' + htmlEscape(title) + '</span>' + '<span class="fc-close ' + theme.getIconClass('close') + '"></span>' + '</div>' + '<div class="fc-body ' + theme.getClass('popoverContent') + '">' + '<div class="fc-event-container"></div>' + '</div>' this.segContainerEl = this.el.querySelector('.fc-event-container') } queryHit(positionLeft: number, positionTop: number, elWidth: number, elHeight: number): Hit | null { let date = (this.props as any).date // HACK if (positionLeft < elWidth && positionTop < elHeight) { return { component: this, dateSpan: { allDay: true, range: { start: date, end: addDays(date, 1) } }, dayEl: this.el, rect: { left: 0, top: 0, right: elWidth, bottom: elHeight }, layer: 1 } } } } export class DayTileEventRenderer extends SimpleDayGridEventRenderer { dayTile: DayTile constructor(dayTile) { super(dayTile.context) this.dayTile = dayTile } attachSegs(segs: Seg[]) { for (let seg of segs) { this.dayTile.segContainerEl.appendChild(seg.el) } } detachSegs(segs: Seg[]) { for (let seg of segs) { removeElement(seg.el) } } }