Add function widgetNode, a simpler and more efficient alternative to
authorMike Taylor <mike@indexdata.com>
Tue, 15 Apr 2014 17:00:44 +0000 (18:00 +0100)
committerMike Taylor <mike@indexdata.com>
Tue, 15 Apr 2014 17:00:44 +0000 (18:00 +0100)
findnode for most though not all purposes. widgetNode('Records') is
equivalent to findnode('.mkwsRecords') but works by reference to the
team's registered set of widgets.

This is presently used in just one place, as proof of concept. Many
more to follow, so that uses of findnode should become very rare.

src/mkws-team.js

index 0ddc962..126f534 100644 (file)
@@ -332,7 +332,7 @@ function team($, teamName) {
 
     // switching view between targets and records
     function switchView(view) {
-       var targets = findnode('.mkwsTargets');
+       var targets = widgetNode('Targets');
        var results = findnode('.mkwsResults,.mkwsRecords');
        var blanket = findnode('.mkwsBlanket');
        var motd    = findnode('.mkwsMOTD');
@@ -620,6 +620,13 @@ function team($, teamName) {
     that.findnode = findnode;
 
 
+    // This much simpler and more efficient function should be usable
+    // in place of most uses of findnode.
+    function widgetNode(type) {
+        var w = that.widget(type);
+        return w ? $(w.node) : undefined;
+    }
+
     function renderDetails(data, marker) {
        var template = loadTemplate("Record");
        var details = template(data);