Procházet zdrojové kódy

ability to split constraints

Adam Shaw před 7 roky
rodič
revize
9c9e4d649b
1 změnil soubory, kde provedl 22 přidání a 19 odebrání
  1. 22 19
      src/component/event-splitting.ts

+ 22 - 19
src/component/event-splitting.ts

@@ -26,7 +26,7 @@ export default abstract class Splitter<PropsType extends SplittableProps = Split
   private splitIndividualUi = memoize(this._splitIndividualUi)
   private splitEventDrag = memoize(this._splitInteraction)
   private splitEventResize = memoize(this._splitInteraction)
-  private eventUiBuilders: { [key: string]: typeof buildEventUiForKey } = {}
+  private eventUiBuilders = {} // TODO: typescript protection
 
   abstract getKeyInfo(props: PropsType): { [key: string]: { ui?: EventUi, businessHours?: EventStore } }
   abstract getKeysForDateSpan(dateSpan: DateSpan): string[]
@@ -48,13 +48,13 @@ export default abstract class Splitter<PropsType extends SplittableProps = Split
     for (let key in keyInfos) {
       let keyInfo = keyInfos[key]
       let eventStore = eventStores[key] || EMPTY_EVENT_STORE
-      let buildEventUi = this.eventUiBuilders[key] = oldEventUiBuilders[key] || memoize(buildEventUiForKey)
+      let buildEventUi = this.eventUiBuilders[key] = oldEventUiBuilders[key] || memoize(this._buildEventUiForKey)
 
       splitProps[key] = {
         businessHours: keyInfo.businessHours || props.businessHours,
         dateSelection: dateSelections[key] || null,
         eventStore,
-        eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]),
+        eventUiBases: buildEventUi.call(this, props.eventUiBases[''], keyInfo.ui, individualUi[key]),
         eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '',
         eventDrag: eventDrags[key] || null,
         eventResize: eventResizes[key] || null
@@ -165,29 +165,32 @@ export default abstract class Splitter<PropsType extends SplittableProps = Split
     return splitStates
   }
 
-}
-
-// TODO: move all above methods to be normal functions?
+  private _buildEventUiForKey(allUi: EventUi | null, eventUiForKey: EventUi | null, individualUi: EventUiHash | null, key: string) {
+    let baseParts = []
 
+    if (allUi) {
+      baseParts.push(allUi)
+    }
 
-function buildEventUiForKey(allUi?: EventUi, eventUiForKey?: EventUi, individualUi?: EventUiHash) {
-  let baseParts = []
+    if (eventUiForKey) {
+      baseParts.push(eventUiForKey)
+    }
 
-  if (allUi) {
-    baseParts.push(allUi)
-  }
+    let stuff = {
+      '': combineEventUis(baseParts)
+    }
 
-  if (eventUiForKey) {
-    baseParts.push(eventUiForKey)
-  }
+    if (individualUi) {
+      for (let defId in individualUi) {
+        stuff[defId] = this.filterEventUi(individualUi[defId], key)
+      }
+    }
 
-  let stuff = {
-    '': combineEventUis(baseParts)
+    return stuff
   }
 
-  if (individualUi) {
-    Object.assign(stuff, individualUi)
+  private filterEventUi(ui: EventUi, key: string): EventUi {
+    return ui
   }
 
-  return stuff
 }