Преглед изворни кода

do viewSpecTransformers instead

Adam Shaw пре 7 година
родитељ
комит
6c6ac0b0be
4 измењених фајлова са 29 додато и 35 уклоњено
  1. 1 1
      src/Calendar.ts
  2. 1 1
      src/exports.ts
  3. 6 6
      src/plugin-system.ts
  4. 21 27
      src/structs/view-spec.ts

+ 1 - 1
src/Calendar.ts

@@ -554,7 +554,7 @@ export default class Calendar {
     this.viewSpecs = buildViewSpecs(
       pluginHooks.viewConfigs,
       this.optionsManager,
-      pluginHooks.viewDefTransformers
+      pluginHooks.viewSpecTransformers
     )
 
     // ineffecient to do every time?

+ 1 - 1
src/exports.ts

@@ -105,7 +105,7 @@ export { default as BasicView, buildDayTable as buildBasicDayTable } from './bas
 export { default as ListView } from './list/ListView'
 export { default as DateProfileGenerator, DateProfile } from './DateProfileGenerator'
 export { ViewDef } from './structs/view-def'
-export { ViewSpec, ViewDefTransformer } from './structs/view-spec'
+export { ViewSpec, ViewSpecTransformer } from './structs/view-spec'
 export { DateSpan } from './structs/date-span'
 
 export { DateMarker, addDays, startOfDay, addMs, diffWholeWeeks, diffWholeDays, diffDayAndTime, isValidDate } from './datelib/marker'

+ 6 - 6
src/plugin-system.ts

@@ -6,7 +6,7 @@ import { dateClickApiTransformer, dateSelectionApiTransformer } from './Calendar
 import { dateSelectionTransformer } from './interactions/DateSelecting'
 import { ViewConfigInputHash } from './structs/view-config'
 import { assignTo } from './util/object'
-import { ViewDefTransformer } from './structs/view-spec'
+import { ViewSpecTransformer } from './structs/view-spec'
 
 // TODO: easier way to add new hooks? need to update a million things
 
@@ -20,7 +20,7 @@ export interface PluginDefInput {
   dateClickApiTransformers?: dateClickApiTransformer[]
   dateSelectionApiTransformers?: dateSelectionApiTransformer[]
   viewConfigs?: ViewConfigInputHash
-  viewDefTransformers?: ViewDefTransformer[]
+  viewSpecTransformers?: ViewSpecTransformer[]
 }
 
 export interface PluginHooks {
@@ -32,7 +32,7 @@ export interface PluginHooks {
   dateClickApiTransformers: dateClickApiTransformer[]
   dateSelectionApiTransformers: dateSelectionApiTransformer[]
   viewConfigs: ViewConfigInputHash // TODO: parse before gets to this step?
-  viewDefTransformers: ViewDefTransformer[]
+  viewSpecTransformers: ViewSpecTransformer[]
 }
 
 export interface PluginDef extends PluginHooks {
@@ -54,7 +54,7 @@ export function createPlugin(input: PluginDefInput): PluginDef {
     dateClickApiTransformers: input.dateClickApiTransformers || [],
     dateSelectionApiTransformers: input.dateSelectionApiTransformers || [],
     viewConfigs: input.viewConfigs || {},
-    viewDefTransformers: input.viewDefTransformers || []
+    viewSpecTransformers: input.viewSpecTransformers || []
   }
 }
 
@@ -73,7 +73,7 @@ export class PluginSystem {
       dateClickApiTransformers: [],
       dateSelectionApiTransformers: [],
       viewConfigs: {},
-      viewDefTransformers: []
+      viewSpecTransformers: []
     }
     this.addedHash = {}
   }
@@ -102,6 +102,6 @@ function combineHooks(hooks0: PluginHooks, hooks1: PluginHooks): PluginHooks {
     dateClickApiTransformers: hooks0.dateClickApiTransformers.concat(hooks1.dateClickApiTransformers),
     dateSelectionApiTransformers: hooks0.dateSelectionApiTransformers.concat(hooks1.dateSelectionApiTransformers),
     viewConfigs: assignTo({}, hooks0.viewConfigs, hooks1.viewConfigs),
-    viewDefTransformers: hooks0.viewDefTransformers.concat(hooks1.viewDefTransformers)
+    viewSpecTransformers: hooks0.viewSpecTransformers.concat(hooks1.viewSpecTransformers)
   }
 }

+ 21 - 27
src/structs/view-spec.ts

@@ -26,19 +26,25 @@ export interface ViewSpec {
 
 export type ViewSpecHash = { [viewType: string]: ViewSpec }
 
-export type ViewDefTransformer = (viewDef: ViewDef, overrides) => ViewDef
+export type ViewSpecTransformer = (viewSpec: ViewSpec) => ViewSpec
 
-export function buildViewSpecs(defaultInputs: ViewConfigInputHash, optionsManager: OptionsManager, defTransformers: ViewDefTransformer[]): ViewSpecHash {
+export function buildViewSpecs(defaultInputs: ViewConfigInputHash, optionsManager: OptionsManager, transformers: ViewSpecTransformer[]): ViewSpecHash {
   let defaultConfigs = parseViewConfigs(defaultInputs)
   let overrideConfigs = parseViewConfigs(optionsManager.overrides.views)
   let viewDefs = compileViewDefs(defaultConfigs, overrideConfigs)
 
   return mapHash(viewDefs, function(viewDef) {
-    return buildViewSpec(viewDef, overrideConfigs, optionsManager, defTransformers)
+    let viewSpec = buildViewSpec(viewDef, overrideConfigs, optionsManager)
+
+    for (let transformer of transformers) {
+      viewSpec = transformer(viewSpec)
+    }
+
+    return viewSpec
   })
 }
 
-function buildViewSpec(viewDef: ViewDef, overrideConfigs: ViewConfigHash, optionsManager: OptionsManager, defTransformers: ViewDefTransformer[]): ViewSpec {
+function buildViewSpec(viewDef: ViewDef, overrideConfigs: ViewConfigHash, optionsManager: OptionsManager): ViewSpec {
   let durationInput =
     viewDef.overrides.duration ||
     viewDef.defaults.duration ||
@@ -85,28 +91,6 @@ function buildViewSpec(viewDef: ViewDef, overrideConfigs: ViewConfigHash, option
     }
   }
 
-  let overrides = assignTo(
-    {},
-    optionsManager.overrides,
-    singleUnitOverrides,
-    viewDef.overrides,
-    optionsManager.dynamicOverrides
-  )
-
-  // we do this really late because we want to pass in the overrides
-  // NOTE: can't change 'type' because already grabbed buttonTextMap/buttonTextKey
-  for (let defTransformer of defTransformers) {
-    viewDef = defTransformer(viewDef, overrides)
-  }
-
-  let defaults = assignTo(
-    {},
-    globalDefaults,
-    viewDef.defaults,
-    optionsManager.dirDefaults,
-    optionsManager.localeDefaults,
-  )
-
   return {
     type: viewDef.type,
     class: viewDef.class,
@@ -114,7 +98,17 @@ function buildViewSpec(viewDef: ViewDef, overrideConfigs: ViewConfigHash, option
     durationUnit,
     singleUnit,
 
-    options: assignTo(defaults, overrides), // can be destructive to defaults
+    options: assignTo(
+      {},
+      globalDefaults,
+      viewDef.defaults,
+      optionsManager.dirDefaults,
+      optionsManager.localeDefaults,
+      optionsManager.overrides,
+      singleUnitOverrides,
+      viewDef.overrides,
+      optionsManager.dynamicOverrides
+    ),
 
     buttonTextOverride:
       queryButtonText(optionsManager.dynamicOverrides) ||