Browse Source

another fix

Adam Shaw 7 năm trước cách đây
mục cha
commit
d15a60a17f

+ 5 - 1
src/Calendar.ts

@@ -139,8 +139,9 @@ export default class Calendar {
       let newState = this.state
       this.isReducing = false
 
-      if (oldState.eventStore !== newState.eventStore) {
+      if (this.view) {
         this.view.set('eventStore', newState.eventStore)
+        // TODO: when to unset?
       }
 
       if (!oldState.loadingLevel && newState.loadingLevel) {
@@ -161,6 +162,9 @@ export default class Calendar {
     let rawSources = this.opt('eventSources') || []
     let singleRawSource = this.opt('events')
 
+    // TODO: prevent rerenders for each thing
+    // should pause rendering
+
     if (singleRawSource) {
       rawSources.unshift(singleRawSource)
     }

+ 0 - 3
src/OptionsManager.ts

@@ -46,9 +46,6 @@ export default class OptionsManager extends Model {
         return
       } else if (/^(event|select)(Overlap|Constraint|Allow)$/.test(optionName)) {
         return // doesn't affect rendering. only interactions.
-      } else if (optionName === 'timezone') {
-        this._calendar.view.flash('initialEvents')
-        return
       }
     }
 

+ 1 - 3
src/component/DateComponent.ts

@@ -324,8 +324,6 @@ export default abstract class DateComponent extends Component {
   triggerBeforeEventSegsDestroyed(segs) {
     if (this.hasPublicHandlers('eventDestroy')) {
       segs.forEach((seg) => {
-        let legacy
-
         if (seg.el) { // necessary?
           this.publiclyTrigger('eventDestroy', [
             {
@@ -701,7 +699,7 @@ export default abstract class DateComponent extends Component {
 
 
 export function fabricateEventRange(range: UnzonedRange, isAllDay: boolean): EventRenderRange {
-  let eventDef: EventDef = parseDef(null, {}, isAllDay, true)
+  let eventDef: EventDef = parseDef({}, null, isAllDay, true)
   let eventInstance: EventInstance = createInstance(eventDef.defId, range)
 
   return { eventDef, eventInstance, range }

+ 3 - 3
src/component/renderers/EventRenderer.ts

@@ -222,7 +222,7 @@ export default class EventRenderer {
 
     let custom = this.view.publiclyTrigger('eventRender', [
       {
-        event: legacy,
+        event: eventRange, // what to do here?
         el,
         view: this.view
       }
@@ -428,8 +428,8 @@ export default class EventRenderer {
   compareEventSegs(seg1: Seg, seg2: Seg) {
     let eventDef1 = seg1.eventRange.eventDef
     let eventDef2 = seg2.eventRange.eventDef
-    let r1 = seg1.range
-    let r2 = seg2.range
+    let r1 = seg1.eventRange.range
+    let r2 = seg2.eventRange.range
 
     return r1.start.valueOf() - r2.start.valueOf() || // earlier events go first
       (r2.end.valueOf() - r2.start.valueOf()) - (r1.end.valueOf() - r1.start.valueOf()) || // tie? longer events go first

+ 0 - 1
src/exports.ts

@@ -79,7 +79,6 @@ export { defineThemeSystem } from './theme/ThemeRegistry'
 export { default as Class } from './common/Class'
 export { default as Mixin } from './common/Mixin'
 export { default as CoordCache } from './common/CoordCache'
-export { default as DragListener } from './common/DragListener'
 export { default as TaskQueue } from './common/TaskQueue'
 export { default as RenderQueue } from './common/RenderQueue'
 export { default as Scroller } from './common/Scroller'

+ 0 - 2
src/list/ListView.ts

@@ -5,7 +5,6 @@ import UnzonedRange from '../models/UnzonedRange'
 import View from '../View'
 import Scroller from '../common/Scroller'
 import ListEventRenderer from './ListEventRenderer'
-import ListEventPointing from './ListEventPointing'
 import { DateMarker, addDays, startOfDay } from '../datelib/marker'
 import { createFormatter } from '../datelib/formatting'
 
@@ -235,7 +234,6 @@ export default class ListView extends View {
 }
 
 ListView.prototype.eventRendererClass = ListEventRenderer
-ListView.prototype.eventPointingClass = ListEventPointing
 
 /*
 export default class ListEventPointing extends EventPointing {

+ 9 - 3
src/reducers/business-hours.ts

@@ -6,7 +6,7 @@ import { assignTo } from '../util/object'
 import { expandRecurring } from './recurring-events'
 import { parseDef, createInstance } from './event-store'
 
-export type BusinessHourDef = true | EventInput | EventInput[] // TODO: rename to plural?
+export type BusinessHourDef = boolean | EventInput | EventInput[] // TODO: rename to plural?
 
 const BUSINESS_HOUR_EVENT_DEFAULTS = {
   startTime: '09:00',
@@ -40,10 +40,14 @@ export function buildBusinessHourEventRanges(
   let eventRanges: EventRenderRange[] = []
 
   for (let eventInput of eventInputs) {
-    let dateInfo = expandRecurring(eventInput, framingRange, calendar)
+    let ranges = expandRecurring(eventInput, framingRange, calendar).ranges
     let def = parseDef(eventInput, null, isAllDay, true)
 
-    for (let range of dateInfo.ranges) {
+    // if (!ranges.length) {
+    //   ranges.push(new UnzonedRange(framingRange.end, framingRange.end))
+    // }
+
+    for (let range of ranges) {
       let instance = createInstance(def.defId, range)
 
       eventRanges.push({
@@ -70,6 +74,8 @@ function refineEventInputs(input: BusinessHourDef, isAllDay: boolean): EventInpu
     })
   } else if (typeof input === 'object' && input) { // non-null object
     rawDefs = [ input ]
+  } else {
+    rawDefs = []
   }
 
   rawDefs = rawDefs.map(function(rawDef) {

+ 8 - 8
src/reducers/event-mutation.ts

@@ -28,8 +28,8 @@ export function createMutation(
 ): EventMutation {
   let startDelta: Duration = null
   let endDelta: Duration = null
-  let hasEnd: boolean = null // TODO: use this!!!
-  let isAllDay: boolean = null // TODO: use this!!!
+  // let hasEnd: boolean = null // TODO: use this!!!
+  // let isAllDay: boolean = null // TODO: use this!!!
 
   // subtracts the dates in the appropriate way, returning a duration
   function diffDates(date0, date1) {
@@ -45,13 +45,13 @@ export function createMutation(
   startDelta = diffDates(range0.start, range1.start)
   endDelta = diffDates(range0.end, range1.end)
 
-  if (isAllDay0 !== isAllDay1) {
-    isAllDay = isAllDay1
-  }
+  // if (isAllDay0 !== isAllDay1) {
+  //   isAllDay = isAllDay1
+  // }
 
-  if (hasEnd0 !== hasEnd1) {
-    hasEnd = hasEnd1
-  }
+  // if (hasEnd0 !== hasEnd1) {
+  //   hasEnd = hasEnd1
+  // }
 
   return {
     startDelta,

+ 9 - 5
src/reducers/event-rendering.ts

@@ -34,11 +34,15 @@ export function sliceEventRanges(origRanges: EventRenderRange[], windowRange: Un
         }
       }
     } else {
-      renderRanges.push({
-        eventDef,
-        eventInstance,
-        range: eventInstance.range.intersect(windowRange)
-      })
+      let range = eventInstance.range.intersect(windowRange)
+
+      if (range) {
+        renderRanges.push({
+          eventDef,
+          eventInstance,
+          range
+        })
+      }
     }
   }
 

+ 2 - 3
src/reducers/event-sources.ts

@@ -221,12 +221,11 @@ export function registerSourceType(type: string, settings: EventSourceTypeSettin
 
 function parseSource(raw: EventSourceInput): EventSource {
   for (let sourceTypeName in sourceTypes) {
-    let leftovers = {}
-    let source: EventSource = refineProps(raw, SIMPLE_SOURCE_PROPS, leftovers)
     let sourceTypeSettings = sourceTypes[sourceTypeName]
-    let sourceTypeMeta = sourceTypeSettings.parseMeta(leftovers)
+    let sourceTypeMeta = sourceTypeSettings.parseMeta(raw)
 
     if (sourceTypeMeta) {
+      let source: EventSource = refineProps(raw, SIMPLE_SOURCE_PROPS)
       source.sourceId = String(guid++)
       source.sourceType = sourceTypeName
       source.sourceTypeMeta = sourceTypeMeta

+ 1 - 1
src/reducers/event-store.ts

@@ -7,7 +7,7 @@ import { applyMutation } from './event-mutation'
 
 // types
 
-type RenderingChoices = '' | 'background' | 'inverse-background' | 'none'
+export type RenderingChoices = '' | 'background' | 'inverse-background' | 'none'
 
 export interface EventInput {
   id?: string | number