Merge branch 'master' of ssh://git.indexdata.com/home/git/private/mkws
authorMike Taylor <mike@indexdata.com>
Tue, 15 Apr 2014 15:56:54 +0000 (16:56 +0100)
committerMike Taylor <mike@indexdata.com>
Tue, 15 Apr 2014 15:56:54 +0000 (16:56 +0100)
src/mkws-core.js
src/mkws-team.js

index fd0c0de..07a4b2d 100644 (file)
@@ -390,11 +390,22 @@ mkws.pagerNext = function(tname) {
            handleNodeWithTeam(this, function(tname, type) {
                var myTeam = mkws.teams[tname];
                var myWidget = widget(j, myTeam, type, this);
+                myTeam.addWidget(myWidget);
            });
        });
        var now = $.now();
        log("Walking MKWS nodes took " + (now-then) + " ms");
 
+//        for (var tName in mkws.teams) {
+//            var myTeam = mkws.teams[tName]
+//            var types = myTeam.widgetTypes();
+//            log("TEAM '" + tName + "' = " + myTeam + " has widget types " + types);
+//            for (var i = 0; i < types.length; i++) {
+//                var type = types[i];
+//                log("  has widget of type '" + type + "': " + myTeam.widget(type));
+//            }
+//        }
+
        if (mkws.config.use_service_proxy) {
            authenticateSession(mkws.config.service_proxy_auth,
                                mkws.config.service_proxy_auth_domain,
index d6fc49f..0ddc962 100644 (file)
@@ -28,6 +28,7 @@ function team($, teamName) {
     var m_paz; // will be initialised below
     var m_template = {};
     var m_config = mkws.objectInheritingFrom(mkws.config);
+    var m_widgets = {}; // Maps widget-type to object
 
     that.toString = function() { return '[Team ' + teamName + ']'; };
 
@@ -741,6 +742,28 @@ function team($, teamName) {
        return s;
     }
 
+    that.addWidget = function(w) {
+        if (!m_widgets[w.type]) {
+            m_widgets[w.type] = w;
+            log("Registered '" + w.type + "' widget in team '" + m_teamName + "'");
+        } else if (typeof(m_widgets[w.type]) !== 'number') {
+            m_widgets[w.type] = 2;
+            log("Registered duplicate '" + w.type + "' widget in team '" + m_teamName + "'");
+        } else {
+            m_widgets[w.type] += 1;
+            log("Registered '" + w.type + "' widget #" + m_widgets[w.type] + "' in team '" + m_teamName + "'");
+        }
+    }
+
+    that.widgetTypes = function() {
+        var keys = [];
+        for (var k in m_widgets) keys.push(k);
+        return keys.sort();
+    }
+
+    that.widget = function(type) {
+        return m_widgets[type];
+    }
 
     mkwsHtmlAll()