Add config() accessor function. Used only by widget factory.
[mkws-moved-to-github.git] / src / mkws-widgets.js
index b286705..2366614 100644 (file)
@@ -13,14 +13,14 @@ function widget($, team, type, node) {
 
     that.toString = function() {
        return '[Widget ' + team.name() + ':' + type + ']';
-    }
+    };
 
     var fn = mkws.promotionFunction(type);
     if (fn) {
        fn.call(that);
        log("made " + type + " widget(node=" + node + ")");
     } else {
-       log("made UNENCAPSULATED widget(type=" + type + ", node=" + node + ")");
+       log("made UNPROMOTED widget(type=" + type + ", node=" + node + ")");
     }
 
     return that;
@@ -32,7 +32,7 @@ function widget($, team, type, node) {
 // source files.
 
 
-function promoteToTargets() {
+mkws.registerWidgetType('Targets', function() {
     var that = this;
     var M = mkws.M;
 
@@ -57,11 +57,10 @@ function promoteToTargets() {
        var subnode = $(that.node).children('.mkwsBytarget');
        subnode.html(table);
     });
-}
-mkws.registerWidgetType('Targets', promoteToTargets);
+});
 
 
-function promoteToStat() {
+mkws.registerWidgetType('Stat', function() {
     var that = this;
     var M = mkws.M;
 
@@ -74,11 +73,10 @@ function promoteToStat() {
            ' -- ' +
            '<span class="records">' + M('Retrieved records') + ': ' + data.records + '/' + data.hits + '</span>');
     });
-}
-mkws.registerWidgetType('Stat', promoteToStat);
+});
 
 
-function promoteToTermlists() {
+mkws.registerWidgetType('Termlists', function() {
     var that = this;
     var M = mkws.M;
 
@@ -89,7 +87,8 @@ function promoteToTermlists() {
        }
 
        // no facets: this should never happen
-       if (!mkws_config.facets || mkws_config.facets.length == 0) {
+       var facets = mkws.config.facets;
+       if (!facets || facets.length == 0) {
            alert("onTerm called even though we have no facets: " + $.toJSON(data));
            $(that.node).hide();
            return;
@@ -100,7 +99,6 @@ function promoteToTermlists() {
 
        var acc = [];
        acc.push('<div class="title">' + M('Termlists') + '</div>');
-       var facets = mkws_config.facets;
 
        for (var i = 0; i < facets.length; i++) {
            if (facets[i] == "xtargets") {
@@ -140,11 +138,10 @@ function promoteToTermlists() {
            acc.push('</div>');
        }
     });
-}
-mkws.registerWidgetType('Termlists', promoteToTermlists);
+});
 
 
-function promoteToPager() {
+mkws.registerWidgetType('Pager', function() {
     var that = this;
     var M = mkws.M;
 
@@ -205,11 +202,10 @@ function promoteToPager() {
            return s;
        }
     });
-}                           
-mkws.registerWidgetType('Pager', promoteToPager);
+});
 
 
-function promoteToRecords() {
+mkws.registerWidgetType('Records', function() {
     var that = this;
     var team = this.team;
 
@@ -237,11 +233,10 @@ function promoteToRecords() {
            return template(hit);
        }
     });
-}
-mkws.registerWidgetType('Records', promoteToRecords);
+});
 
 
-function promoteToNavi() {
+mkws.registerWidgetType('Navi', function() {
     var that = this;
     var teamName = this.team.name();
     var M = mkws.M;
@@ -267,17 +262,16 @@ function promoteToNavi() {
 
        $(that.node).html(text);
     });
-}
-mkws.registerWidgetType('Navi', promoteToNavi);
+});
 
 
 // It seems this and the Perpage widget doen't need to subscribe to
 // anything, since they produce events rather than consuming them.
 //
-function promoteToSort() {
+mkws.registerWidgetType('Sort', function() {
     var that = this;
 
-    $(this.node).change(function () {
+    $(this.node).change(function() {
        that.team.set_sortOrder($(that.node).val());
        if (that.team.submitted()) {
            that.team.resetPage();
@@ -285,8 +279,7 @@ function promoteToSort() {
        }
        return false;
     });
-}
-mkws.registerWidgetType('Sort', promoteToSort);
+});
 
 
 mkws.registerWidgetType('Perpage', function() {