Author: jmorliaguet
Date: Sat Feb 25 12:28:24 2006
New Revision: 2454

Modified:
   cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js
Log:

- we unsubscribe from events that are only used once (initialization, setup)

- the subscription list is cleaned up when there are no subscribers left.



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 Sat Feb 25 
12:28:24 2006
@@ -94,9 +94,11 @@
   unsubscribe: function(eventid, event) {
     var subscribers = CPSSkins._subscribers;
     subscribers[eventid] = subscribers[eventid].reject(function(e) {
+      if (typeof event == 'undefined') return true;
       return (event.subscriber == e.subscriber &&
               event.publisher == e.publisher)
       });
+    if (subscribers[eventid].length == 0) {delete subscribers[eventid]}
   },
 
   notify: function(eventid, event) {
@@ -145,7 +147,7 @@
   // first stage
   parse: function(node) {
     var elements = $A(node.getElementsByTagName("ins"));
-    var progress = new Object({'initialized': 0});
+    var progress = {'initialized': 0};
     var length = elements.length;
 
     CPSSkins.subscribe("initialized", {'subscriber': progress});
@@ -153,6 +155,7 @@
       progress.initialized += 1;
       if (progress.initialized >= length) {
         CPSSkins.load(node);
+        CPSSkins.unsubscribe("initialized");
       }
     });
 
@@ -249,6 +252,7 @@
               CPSSkins.registerEventHandler(evt_id, view, function(event) {
                 var model = event.publisher;
                 view.observe(model);
+                CPSSkins.unsubscribe(evt_id);
               });
               CPSSkins.subscribe(evt_id, {'subscriber': view});
             }
@@ -261,6 +265,7 @@
                 var controller = event.publisher;
                 controller.view = view;
                 controller.register(view);
+                CPSSkins.unsubscribe(evt_id);
               });
               CPSSkins.subscribe(evt_id, {'subscriber': view});
             });
@@ -1443,6 +1448,7 @@
 
       CPSSkins.registerEventHandler(evt_id, view, function(event) {
         view.getData();
+        CPSSkins.unsubscribe(evt_id);
       });
 
       CPSSkins.subscribe(evt_id, {'subscriber': view});
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to