|
|
@@ -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) ||
|