Author: jmorliaguet Date: Mon Feb 13 15:03:53 2006 New Revision: 2375 Modified: cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js Log:
- optimization: widgets were rendered several times. - TODO: storage adapters could compare new data with the old data before firing a 'stored' / 'modified' event. Modified: cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js ============================================================================== --- cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js (original) +++ cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js Mon Feb 13 15:03:53 2006 @@ -208,6 +208,7 @@ var name = classid + index; el.setAttribute("name", name); var def = CPSSkins.jsonParse(el); + def.name = name; switch(classid) { @@ -225,7 +226,6 @@ case "model": { var model = new CPSSkins.Model(el, def); - model.id = index; CPSSkins.Models[name] = model; CPSSkins.notify("registered model " + def.id, {"target": model}); break; @@ -253,7 +253,6 @@ /* create the view */ if (view) { - view.id = index; /* register the observed model */ var model_id = def.model; @@ -795,8 +794,6 @@ CPSSkins.subscribe('modified', {'subscriber': view, 'target': model}); // create a back-reference view.model = model; - // initialize the view - view.update(); }, removeObserver: function(view) { @@ -1104,8 +1101,8 @@ }, update: function() { - var data = this.getData(); - if (data != null) this.render(data); + // getData() causes the view to get rendered. + this.getData(); }, show: function() { @@ -1220,7 +1217,7 @@ var view = this; if (url) { - var evt_id = "loaded widget template"; + var evt_id = "loaded template " + this.def.name; var options = { onComplete: function(req) { view.source = req.responseText; @@ -1247,7 +1244,11 @@ var node = document.createElement("div"); node.innerHTML = this.source; ctal.process_ctal(node, data); - this.widget.innerHTML = node.innerHTML; + var old_html = this.widget.innerHTML; + var new_html = node.innerHTML; + if (new_html != old_html) { + this.widget.innerHTML = node.innerHTML; + } } } -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins