MergeModels.js
Summary
No overview generated for 'MergeModels.js'
mapbuilder.loadScript(baseDir+"/tool/ToolBase.js");
function MergeModels(toolNode, model) {
ToolBase.apply(this, new Array(toolNode, model));
this.template = null;
this.init = function(objRef) {
objRef.model.mergeModels = new Array();
var models = toolNode.selectSingleNode('mb:merges');
if (models) {
var model = models.childNodes;
for (var i = 0; i < model.length; i++) {
if (model[i].firstChild) {
objRef.addModel(objRef, config.objects[model[i].firstChild.nodeValue]);
}
}
}
}
model.addListener('init', this.init, this);
this.getTemplate = function(objRef) {
objRef.template = objRef.model.doc ? objRef.model.doc.cloneNode(true) : null;
if (objRef.template) {
objRef.model.removeListener('loadModel', objRef.getTemplate, objRef);
objRef.buildModel(objRef);
}
}
model.addListener('loadModel', this.getTemplate, this);
this.addModel = function(objRef, model) {
objRef.model.mergeModels.push(model);
if (model.doc) {
objRef.mergeModel(objRef, model.doc);
}
model.addListener('refresh', objRef.buildModel, objRef);
}
this.mergeModel = function(objRef, modelToMerge) {
var docToMerge = modelToMerge.doc ? modelToMerge.doc.cloneNode(true) : null;
var nodes = docToMerge ? docToMerge.selectNodes('//*[@fid]') : null;
if (!nodes) return;
var node;
for (var i=0; i<nodes.length; i++) {
node = nodes[i];
if (node.nodeName) {
node.setAttribute('sourceModel', modelToMerge.id);
}
}
Sarissa.copyChildNodes(docToMerge.documentElement, objRef.model.doc.documentElement, true);
}
this.buildModel = function(objRef) {
if (!objRef.template) return;
objRef.model.callListeners('newModel');
objRef.model.doc = objRef.template.cloneNode(true);
for (var i in objRef.model.mergeModels) {
objRef.mergeModel(objRef, objRef.model.mergeModels[i]);
}
objRef.model.callListeners('loadModel');
}
}
Documentation generated by
JSDoc on Tue Aug 21 08:12:28 2007