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

Reply via email to