From 75a01802f73e791b082229f065eeb3df6a48a962 Mon Sep 17 00:00:00 2001 From: António Afonso Date: Wed, 30 May 2012 10:17:49 -0700 Subject: Avoid duplicate labels in template creator This is the fix for Motorola-Mobility/montage#649--- node_modules/tools/template/template-creator.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'node_modules') diff --git a/node_modules/tools/template/template-creator.js b/node_modules/tools/template/template-creator.js index 374353f0..dc6b1190 100755 --- a/node_modules/tools/template/template-creator.js +++ b/node_modules/tools/template/template-creator.js @@ -51,8 +51,8 @@ var TemplateCreator = exports.TemplateCreator = Montage.create(Template, /** @le component = isRootNode ? null : sourceNode.controller; if (component) { - label = self._generateLabelForComponent(component); targetNode.setAttribute("id", label); + label = self._generateLabelForComponent(component, Object.keys(components)); component._element = targetNode; components[label] = component; } else { @@ -94,8 +94,8 @@ var TemplateCreator = exports.TemplateCreator = Montage.create(Template, /** @le _componentNamesIndex: { value: null }, - - _generateLabelForComponent: {value: function(component) { + + _generateLabelForComponent: {value: function(component, labels) { var componentInfo = Montage.getInfoForObject(component), componentLabel = componentInfo.label, componentName, @@ -105,8 +105,11 @@ var TemplateCreator = exports.TemplateCreator = Montage.create(Template, /** @le return componentLabel; } else { componentName = componentInfo.objectName.toLowerCase(); - index = this._componentNamesIndex[componentName] || 1; - this._componentNamesIndex[componentName] = index + 1; + do { + index = this._componentNamesIndex[componentName] || 1; + this._componentNamesIndex[componentName] = index + 1; + } while (labels.indexOf(componentName+index) >= 0); + return componentName + index; } }}, -- cgit v1.2.3 From e6dbd73e80ac47ae9bfdfdb5bef3263b24a36603 Mon Sep 17 00:00:00 2001 From: António Afonso Date: Wed, 30 May 2012 10:34:45 -0700 Subject: Stop adding ids to elements in template creator This is the fix for Motorola-Mobility/montage#648 --- node_modules/tools/template/template-creator.js | 1 - 1 file changed, 1 deletion(-) (limited to 'node_modules') diff --git a/node_modules/tools/template/template-creator.js b/node_modules/tools/template/template-creator.js index dc6b1190..4ba1b443 100755 --- a/node_modules/tools/template/template-creator.js +++ b/node_modules/tools/template/template-creator.js @@ -51,7 +51,6 @@ var TemplateCreator = exports.TemplateCreator = Montage.create(Template, /** @le component = isRootNode ? null : sourceNode.controller; if (component) { - targetNode.setAttribute("id", label); label = self._generateLabelForComponent(component, Object.keys(components)); component._element = targetNode; components[label] = component; -- cgit v1.2.3 From 87a5999ecd9e7d84d21fd8c712944cd9408c3aa0 Mon Sep 17 00:00:00 2001 From: António Afonso Date: Wed, 30 May 2012 10:36:59 -0700 Subject: Stop serializing the child components of the top components are not serialized We just removed them before serializing and add them again afterwards.--- node_modules/tools/template/template-creator.js | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'node_modules') diff --git a/node_modules/tools/template/template-creator.js b/node_modules/tools/template/template-creator.js index 4ba1b443..01a2518b 100755 --- a/node_modules/tools/template/template-creator.js +++ b/node_modules/tools/template/template-creator.js @@ -35,6 +35,7 @@ var TemplateCreator = exports.TemplateCreator = Montage.create(Template, /** @le var serializer = this.serializer, objects = {}, components = {}, + componentsChildComponents = {}, doc, script, self = this; @@ -54,6 +55,8 @@ var TemplateCreator = exports.TemplateCreator = Montage.create(Template, /** @le label = self._generateLabelForComponent(component, Object.keys(components)); component._element = targetNode; components[label] = component; + componentsChildComponents[label] = component.childComponents; + delete component.childComponents; } else { for (var i = 0; (childNode = childNodes[i]); i++) { targetChildNode = targetNode.appendChild(childNode.cloneNode(false)); @@ -84,6 +87,10 @@ var TemplateCreator = exports.TemplateCreator = Montage.create(Template, /** @le copyNode(body, this._document.body, true); this._ownerSerialization = serializer.serialize(components); + for (var label in components) { + components[label].childComponents = componentsChildComponents[label]; + } + components = componentsChildComponents = null; this._externalObjects = serializer.getExternalObjects(); return this; -- cgit v1.2.3 From 78c80a68083ed8ad573898de215fb723b0546d32 Mon Sep 17 00:00:00 2001 From: António Afonso Date: Wed, 30 May 2012 10:37:38 -0700 Subject: Initialize an internal Template variable in TemplateCreator --- node_modules/tools/template/template-creator.js | 1 + 1 file changed, 1 insertion(+) (limited to 'node_modules') diff --git a/node_modules/tools/template/template-creator.js b/node_modules/tools/template/template-creator.js index 01a2518b..c5d3cffd 100755 --- a/node_modules/tools/template/template-creator.js +++ b/node_modules/tools/template/template-creator.js @@ -41,6 +41,7 @@ var TemplateCreator = exports.TemplateCreator = Montage.create(Template, /** @le self = this; this._componentNamesIndex = {}; + this._objectNamesIndex = {}; doc = this._document = document.implementation.createHTMLDocument(""); function copyNode(sourceNode, targetNode, isRootNode) { -- cgit v1.2.3