Skip to content

Commit

Permalink
fixes, remove DateComponent methods
Browse files Browse the repository at this point in the history
  • Loading branch information
arshaw committed Nov 24, 2018
1 parent 6c01fa8 commit a9447e5
Show file tree
Hide file tree
Showing 7 changed files with 391 additions and 288 deletions.
148 changes: 99 additions & 49 deletions src/View.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,13 @@ export default abstract class View extends DateComponent<ViewProps> {
nowIndicatorTimeoutID: any // for refresh timing of now indicator
nowIndicatorIntervalID: any // "

private _renderDates = memoizeRendering(this.__renderDates, this.__unrenderDates)
private _renderBusinessHours = memoizeRendering(this.renderBusinessHours, this.unrenderBusinessHours, [ this._renderDates ])
private _renderDateSelectionState = memoizeRendering(this.renderDateSelectionState, this.unrenderDateSelection, [ this._renderDates ])
private _renderEvents = memoizeRendering(this.__renderEvents, this.unrenderEvents, [ this._renderDates ])
private _renderEventSelection = memoizeRendering(this.renderEventSelection, this.unrenderEventSelection, [ this._renderEvents ])
private _renderEventDragState = memoizeRendering(this.renderEventDragState, this.unrenderEventDragState, [ this._renderDates ])
private _renderEventResizeState = memoizeRendering(this.renderEventResizeState, this.unrenderEventResizeState, [ this._renderDates ])
private renderDatesMem = memoizeRendering(this.renderDatesWrap, this.unrenderDatesWrap)
private renderBusinessHoursMem = memoizeRendering(this.renderBusinessHours, this.unrenderBusinessHours, [ this.renderDatesMem ])
private renderDateSelectionMem = memoizeRendering(this.renderDateSelectionWrap, this.unrenderDateSelectionWrap, [ this.renderDatesMem ])
private renderEventsMem = memoizeRendering(this.renderEventsWrap, this.unrenderEvents, [ this.renderDatesMem ])
private renderEventSelectionMem = memoizeRendering(this.renderEventSelectionWrap, this.unrenderEventSelectionWrap, [ this.renderEventsMem ])
private renderEventDragMem = memoizeRendering(this.renderEventDragWrap, this.unrenderEventDragWrap, [ this.renderDatesMem ])
private renderEventResizeMem = memoizeRendering(this.renderEventResizeWrap, this.unrenderEventResizeWrap, [ this.renderDatesMem ])


constructor(context: ComponentContext, viewSpec: ViewSpec, dateProfileGenerator: DateProfileGenerator, parentEl: HTMLElement) {
Expand Down Expand Up @@ -121,31 +121,20 @@ export default abstract class View extends DateComponent<ViewProps> {


render(props: ViewProps) {
this._renderDates(props.dateProfile)
this._renderBusinessHours(props.businessHours)
this._renderDateSelectionState(props.dateSelection)
this._renderEvents(props.eventStore, props.eventUis)
this._renderEventSelection(props.eventSelection)
this._renderEventDragState(props.eventDrag)
this._renderEventResizeState(props.eventResize)
this.renderDatesMem(props.dateProfile)
this.renderBusinessHoursMem(props.businessHours)
this.renderDateSelectionMem(props.dateSelection)
this.renderEventsMem(props.eventStore, props.eventUis)
this.renderEventSelectionMem(props.eventSelection)
this.renderEventDragMem(props.eventDrag)
this.renderEventResizeMem(props.eventResize)
}


destroy() {
super.destroy()

this._renderDates.unrender() // should unrender everything else
}


// util for subclasses
sliceEvents(eventStore: EventStore, eventUis: EventUiHash, allDay: boolean): EventRenderRange[] {
return sliceEventStore(
eventStore,
eventUis,
this.props.dateProfile.activeRange,
allDay ? this.nextDayThreshold : null
)
this.renderDatesMem.unrender() // should unrender everything else
}


Expand All @@ -154,7 +143,6 @@ export default abstract class View extends DateComponent<ViewProps> {


updateSize(viewHeight: number, isAuto: boolean, isResize: boolean) {
let { fillRenderer, eventRenderer, mirrorRenderer } = this

if (isResize || this.isDateSizeDirty || this.isEventSizeDirty) {
// sort of the catch-all sizing
Expand All @@ -164,14 +152,6 @@ export default abstract class View extends DateComponent<ViewProps> {

this.isDateSizeDirty = false
this.isEventSizeDirty = false

fillRenderer && fillRenderer.computeSizes(isResize)
eventRenderer && eventRenderer.computeSizes(isResize)
mirrorRenderer && mirrorRenderer.computeSizes(isResize)

fillRenderer && fillRenderer.assignSizes(isResize)
eventRenderer && eventRenderer.assignSizes(isResize)
mirrorRenderer && mirrorRenderer.assignSizes(isResize)
}


Expand All @@ -182,15 +162,14 @@ export default abstract class View extends DateComponent<ViewProps> {
// Date Rendering
// -----------------------------------------------------------------------------------------------------------------


__renderDates(dateProfile: DateProfile) {
renderDatesWrap(dateProfile: DateProfile) {
this.renderDates(dateProfile)
this.addScroll({ isDateInit: true })
this.startNowIndicator() // shouldn't render yet because updateSize will be called soon
this.isDateSizeDirty = true
}

__unrenderDates() {
unrenderDatesWrap() {
this.stopNowIndicator()
this.unrenderDates()
}
Expand All @@ -199,39 +178,110 @@ export default abstract class View extends DateComponent<ViewProps> {
unrenderDates() {}


// Business Hours
// -----------------------------------------------------------------------------------------------------------------

renderBusinessHours(businessHours: EventStore) {}
unrenderBusinessHours() {}


// Date Selection
// -----------------------------------------------------------------------------------------------------------------

renderDateSelectionWrap(selection: DateSpan) {
if (selection) {
this.renderDateSelection(selection)
}
}

unrenderDateSelectionWrap(selection: DateSpan) {
if (selection) {
this.unrenderDateSelection(selection)
}
}

renderDateSelection(selection: DateSpan) {}
unrenderDateSelection(selection: DateSpan) {}


// Event Rendering
// -----------------------------------------------------------------------------------------------------------------

__renderEvents(eventStore: EventStore, eventUis: EventUiHash) {
renderEventsWrap(eventStore: EventStore, eventUis: EventUiHash) {
this.isEventSizeDirty = true
this.renderEvents(eventStore, eventUis)
}

renderEvents(eventStore: EventStore, eventUis: EventUiHash) {}
unrenderEvents() {}

// util for subclasses
sliceEvents(eventStore: EventStore, eventUis: EventUiHash, allDay: boolean): EventRenderRange[] {
return sliceEventStore(
eventStore,
eventUis,
this.props.dateProfile.activeRange,
allDay ? this.nextDayThreshold : null
)
}


// Other Rendering (uses eventRenderer and fillRenderer)
// Event Selection
// -----------------------------------------------------------------------------------------------------------------

renderEventSelectionWrap(instanceId: string) {
if (instanceId) {
this.renderEventSelection(instanceId)
}
}

unrenderEventSelectionWrap(instanceId: string) {
if (instanceId) {
this.unrenderEventSelection(instanceId)
}
}

renderBusinessHours(businessHours: EventStore) {}
renderEventSelection(instanceId: string) {}
unrenderEventSelection(instanceId: string) {}

renderEventDragState(state: EventInteractionUiState) {}
unrenderEventDragState() {}

renderEventResizeState(state: EventInteractionUiState) {}
unrenderEventResizeState() {}
// Event Drag
// -----------------------------------------------------------------------------------------------------------------

renderDateSelectionState(selection: DateSpan) {
if (selection) {
this.renderDateSelection(selection)
renderEventDragWrap(state: EventInteractionUiState) {
if (state) {
this.renderEventDrag(state)
}
}

renderDateSelection(selection: DateSpan) {
unrenderEventDragWrap(state: EventInteractionUiState) {
if (state) {
this.unrenderEventDrag(state)
}
}

renderEventDrag(state: EventInteractionUiState) {}
unrenderEventDrag(state: EventInteractionUiState) {}


// Event Resize
// -----------------------------------------------------------------------------------------------------------------

renderEventResizeWrap(state: EventInteractionUiState) {
if (state) {
this.renderEventResize(state)
}
}

unrenderEventResizeWrap(state: EventInteractionUiState) {
if (state) {
this.unrenderEventResize(state)
}
}

renderEventResize(state: EventInteractionUiState) {}
unrenderEventResize(state: EventInteractionUiState) {}


/* Now Indicator
------------------------------------------------------------------------------------------------------------------*/
Expand Down

0 comments on commit a9447e5

Please sign in to comment.