Rename the two "template" variables to t1 and t2.
[mkws-moved-to-github.git] / src / mkws-widget-termlists.js
index 59827b0..fef616f 100644 (file)
@@ -2,11 +2,11 @@ mkws.registerWidgetType('Termlists', function() {
   var that = this;
 
   // Initially hide the termlists; display when we get results
-  $(document).ready(function() {
-    $(that.node).hide();
+  mkws.$(document).ready(function() {
+    that.node.hide();
   });
   this.team.queue("termlists").subscribe(function(data) {
-    $(that.node).show();
+    that.node.show();
   });
 
   var acc = [];
@@ -15,9 +15,9 @@ mkws.registerWidgetType('Termlists', function() {
   for (var i = 0; i < facets.length; i++) {
     acc.push('<div class="mkwsFacet mkwsTeam_', this.team.name(), '" data-mkws-facet="', facets[i], '">', '</div>');
   }
-  $(this.node).html(acc.join(''));
+  this.node.html(acc.join(''));
 
-  widget.autosearch(this);
+  this.autosearch();
 });
 
 
@@ -30,39 +30,53 @@ mkws.registerWidgetType('Facet', function() {
 
   var that = this;
   var name = that.config.facet;
-  var ref = facetConfig[name] || alert("no facet definition for '" + name + "'");
-  var caption = ref[0];
-  var max = ref[1];
+  var ref = facetConfig[name] || [ "Unknown", 10, true ];
+  var caption = this.config['facet_caption_' + name] || ref[0];
+  var max     = parseInt(this.config['facet_max_' + name] || ref[1]);
   var pzIndex = ref[2] ? name : null;
 
   that.toString = function() {
     return '[Widget ' + that.team.name() + ':' + that.type + '(' + name + ')]';
   };
 
+  var t2 = that.team.loadTemplate('Facet-' + caption);
+  that.log("template for Facet-" + caption + " is " + !!t2);
+  if (!t2) {
+    that.log("no " + caption + "-specific template, falling back");
+    t2 = that.team.loadTemplate('Facet');
+  }
+  that.log("template for Facet is " + !!t2);
+
   that.team.queue("termlists").subscribe(function(data) {
     data = data[name];
+    var t1 = that.team.loadTemplate('facetTitle-' + caption, mkws.M(caption))
+    var title = t1({ query: that.config.query });
+    var acc = [];
+    acc.push('<div class="mkwsFacetTitle">', title, '</div>');
 
     var teamName = that.team.name();
-    var acc = [];
-    acc.push('<div class="mkwsFacetTitle">' + mkws.M(caption) + '</div>');
     for (var i = 0; i < data.length && i < max; i++) {
-      acc.push('<div class="term">');
-      acc.push('<a href="#" ');
-      var action = '';
-      if (!pzIndex) {
-        // Special case: target selection
-        acc.push('target_id='+data[i].id+' ');
-        if (!that.team.targetFiltered(data[i].id)) {
-          action = 'mkws.limitTarget(\'' + teamName + '\', this.getAttribute(\'target_id\'),this.firstChild.nodeValue)';
-        }
-      } else {
-        action = 'mkws.limitQuery(\'' + teamName + '\', \'' + pzIndex + '\', this.firstChild.nodeValue)';
+      var fn, field;
+      // General case modifies the query; special case selects a target
+      if (pzIndex) {
+        fn = 'limitQuery'; field = pzIndex;
+      } else if (!that.team.targetFiltered(data[i].id)) {
+        fn = 'limitTarget'; field = data[i].id;
       }
-      acc.push('onclick="' + action + ';return false;">' + data[i].name + '</a>'
-               + ' <span>' + data[i].freq + '</span>');
-      acc.push('</div>');
+
+      var s = t2({ 
+        team: teamName,
+        fn: fn,
+        field: field,
+        term: data[i].name,
+        count: data[i].freq,
+        query: that.config.query
+      });
+      acc.push('<div class="mkwsTerm">', s, '</div>');
     }
 
-    $(that.node).html(acc.join(''));
+    that.node.html(acc.join(''));
   });
+
+  this.autosearch();
 });