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