Skip to content

Commit

Permalink
Merge remote-tracking branch 'cindy/FLUID-4907' into FLUID-4907
Browse files Browse the repository at this point in the history
  • Loading branch information
jobara committed Jul 24, 2013
2 parents d2f847b + 8f61093 commit bc351f3
Show file tree
Hide file tree
Showing 17 changed files with 630 additions and 440 deletions.
163 changes: 82 additions & 81 deletions src/webapp/components/uiOptions/js/AuxBuilder.js
Expand Up @@ -51,99 +51,90 @@ var fluid_1_5 = fluid_1_5 || {};
return fluid.get(root, pathRef.substring(1));
};

fluid.uiOptions.expandSchemaComponents = function (auxSchema, type, index, commonOptions, schema) {
fluid.uiOptions.expandSchemaComponents = function (auxSchema, type, prefKey, componentConfig, index, commonOptions, primarySchema) {
var components = {};
var selectors = {};
var templates = {};
var rootModel = {};

var sharedModel = {};
type = type + "s";

fluid.each(auxSchema, function (config, prefName) {
var prefKey = config.type;
if (prefKey) {
sharedModel[prefKey] = prefName;
}
});
var componentName = componentConfig.type;
var memberName = componentName.replace(new RegExp("\\.", 'g'), "_");
var flattenedPrefKey = prefKey.replace(new RegExp("\\.", 'g'), "_");

fluid.each(auxSchema[type], function (componentConfig) {
var componentName = componentConfig.type;
var memberName = componentName.replace(new RegExp("\\.", 'g'), "_");

if (componentName) {
var instance = {
type: componentName
};
if (componentName) {
var instance = {
type: componentName
};

var container = componentConfig.container;
if (container) {
// instance.container = container;
fluid.set(selectors, memberName, container);
}
var container = componentConfig.container;
if (container) {
fluid.set(selectors, memberName, container);
}

var template = componentConfig.template;
if (template) {
templates[memberName] = template;
}
var template = componentConfig.template;
if (template) {
templates[memberName] = template;
}

var componentOptions = fluid.copy(componentConfig);
delete componentOptions.type;
delete componentOptions.container;
delete componentOptions.template;
var componentOptions = fluid.copy(componentConfig);
delete componentOptions.type;
delete componentOptions.container;
delete componentOptions.template;

if (fluid.keys(componentOptions).length > 0) {
instance.options = componentOptions;
}
if (fluid.keys(componentOptions).length > 0) {
instance.options = componentOptions;
}

var preferenceMap = fluid.defaults(componentName).preferenceMap;

fluid.each(preferenceMap, function (map, pref) {
fluid.each(map, function (PrimaryPath, internalPath) {
var prefSchema = schema[pref];
if (prefSchema) {
if (internalPath.slice(0, 6) === "model.") {
var internalModelName = internalPath.slice(6);
fluid.set(instance, "options.rules." + sharedModel[pref], internalModelName);
fluid.set(instance, "options.model." + internalModelName, prefSchema[PrimaryPath]);
fluid.set(rootModel, "members.rootModel." + sharedModel[pref], prefSchema[PrimaryPath]);
} else {
fluid.set(instance, "options." + internalPath, prefSchema[PrimaryPath]);
}
var preferenceMap = fluid.defaults(componentName).preferenceMap;

fluid.each(preferenceMap, function (map, pref) {
fluid.each(map, function (PrimaryPath, internalPath) {
var prefSchema = primarySchema[pref];
if (prefSchema) {
if (internalPath.slice(0, 6) === "model.") {
var internalModelName = internalPath.slice(6);
fluid.set(instance, "options.rules." + flattenedPrefKey, internalModelName);
fluid.set(instance, "options.model." + internalModelName, prefSchema[PrimaryPath]);
fluid.set(rootModel, "members.rootModel." + flattenedPrefKey, prefSchema[PrimaryPath]);
} else {
fluid.set(instance, "options." + internalPath, prefSchema[PrimaryPath]);
}
});
}
});
});

// Merge common options
if (commonOptions) {
fluid.each(commonOptions, function (value, key) {
value = fluid.stringTemplate(value, {
prefKey: memberName
});
fluid.set(instance, key, value);
// Merge common options
if (commonOptions) {
fluid.each(commonOptions, function (value, key) {
value = fluid.stringTemplate(value, {
prefKey: memberName
});
}

components[memberName] = instance;
fluid.set(instance, key, value);
});
}
});

components[memberName] = instance;
}

if (fluid.keys(components).length > 0) {
auxSchema[type] = {
components: components
};
var existingComponents = fluid.get(auxSchema, type + ".components");
fluid.set(auxSchema, type + ".components", $.extend(true, {}, existingComponents, components));

if (fluid.keys(selectors).length > 0) {
auxSchema[type] = $.extend(true, auxSchema[type], {
selectors: selectors
});
var existingSelectors = fluid.get(auxSchema, type + ".selectors");
fluid.set(auxSchema, type + ".selectors", $.extend(true, {}, existingSelectors, selectors));
}
}
if (fluid.keys(templates).length > 0) {
auxSchema.templateLoader = $.extend(true, auxSchema.templates || {}, {
templates: templates
});
var existingTemplates = fluid.get(auxSchema, "templateLoader.templates");
fluid.set(auxSchema, "templateLoader.templates", $.extend(true, {}, existingTemplates, templates));
}
if (fluid.keys(rootModel).length > 0) {
auxSchema.rootModel = $.extend(true, auxSchema.rootModel || {}, rootModel);
var existingModel = fluid.get(auxSchema, "rootModel");
fluid.set(auxSchema, "rootModel", $.extend(true, {}, existingModel, rootModel));
// auxSchema.rootModel = $.extend(true, auxSchema.rootModel || {}, rootModel);
}
return auxSchema;
};
Expand All @@ -153,6 +144,7 @@ var fluid_1_5 = fluid_1_5 || {};
if (value) {
delete auxSchema[type];
fluid.set(auxSchema, targetPath, value);
var a = 1;
}
};

Expand Down Expand Up @@ -187,17 +179,26 @@ var fluid_1_5 = fluid_1_5 || {};
var auxSchema = fluid.uiOptions.expandSchemaImpl(schemaToExpand);
auxSchema.namespace = auxSchema.namespace || defaultNamespace;

var type = "panels";
fluid.uiOptions.expandSchemaComponents(auxSchema, type, fluid.get(indexes, type), fluid.get(elementCommonOptions, type), primarySchema);

type = "enactors";
fluid.uiOptions.expandSchemaComponents(auxSchema, type, fluid.get(indexes, type), fluid.get(elementCommonOptions, type), primarySchema);
fluid.each(auxSchema, function (category, prefName) {
var type = "panel";
if (category[type]) {
fluid.uiOptions.expandSchemaComponents(auxSchema, type, category.type, category[type], fluid.get(indexes, type), fluid.get(elementCommonOptions, type), primarySchema);
}
type = "enactor";
if (category[type]) {
fluid.uiOptions.expandSchemaComponents(auxSchema, type, category.type, category[type], fluid.get(indexes, type), fluid.get(elementCommonOptions, type), primarySchema);
}

type = "messages";
fluid.uiOptions.expandSchemaDirectOption(auxSchema, type, "messages.members.messages");
type = "messages";
if (prefName === type) {
fluid.uiOptions.expandSchemaDirectOption(auxSchema, type, "messages.members.messages");
}

type = "templatePrefix";
fluid.uiOptions.expandSchemaDirectOption(auxSchema, type, "templatePrefix.prefix");
type = "templatePrefix";
if (prefName === type) {
fluid.uiOptions.expandSchemaDirectOption(auxSchema, type, "templatePrefix.templatePrefix");
}
});

// Add top common options
fluid.each(topCommonOptions, function (topOptions, type) {
Expand Down Expand Up @@ -238,19 +239,19 @@ var fluid_1_5 = fluid_1_5 || {};
}
},
elementCommonOptions: {
panels: {
panel: {
"createOnEvent": "onUIOptionsMarkupReady",
"container": "{uiOptions}.dom.%prefKey",
"options.gradeNames": "fluid.uiOptions.defaultPanel",
"options.resources.template": "{templateLoader}.resources.%prefKey"
},
enactors: {
enactor: {
"container": "{uiEnhancer}.container",
"options.sourceApplier": "{uiEnhancer}.applier"
}
},
indexes: {
panels: {
panel: {
expander: {
func: "fluid.indexDefaults",
args: ["panelsIndex", {
Expand All @@ -259,7 +260,7 @@ var fluid_1_5 = fluid_1_5 || {};
}]
}
},
enactors: {
enactor: {
expander: {
func: "fluid.indexDefaults",
args: ["enactorsIndex", {
Expand Down

0 comments on commit bc351f3

Please sign in to comment.