Move termlist hiding to CSS MKWS-258
[mkws-moved-to-github.git] / src / mkws-widget-termlists.js
index cb07b28..43737c1 100644 (file)
@@ -1,22 +1,16 @@
 mkws.registerWidgetType('Termlists', function() {
-  var that = this;
-
   // Initially hide the termlists; display when we get results
-  mkws.$(document).ready(function() {
-    that.node.hide();
-  });
-  this.team.queue("termlists").subscribe(function(data) {
-    that.node.show();
+  var that = this;
+  var team = this.team;
+  team.queue("termlists").subscribe(function(data) {
+    that.node.addClass("active");
   });
 
-  var acc = [];
-  var facets = this.config.facets;
-  acc.push('<div class="mkwsTermlistsTitle">' + mkws.M('Termlists') + '</div>');
-  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(''));
-
+  var template = team.loadTemplate(this.config.template || "Termlists");
+  this.node.html(template({
+    team: team.name(),
+    facets: this.config.facets
+  }));
   this.autosearch();
 });
 
@@ -27,8 +21,8 @@ mkws.registerWidgetType('Facet', function() {
     subject:  [ "Subjects", 10, true ],
     author:   [ "Authors",  10, true ]
   }
-
   var that = this;
+  var team = this.team;
   var name = that.config.facet;
   var ref = facetConfig[name] || [ "Unknown", 10, true ];
   var caption = this.config['facet_caption_' + name] || ref[0];
@@ -36,39 +30,50 @@ mkws.registerWidgetType('Facet', function() {
   var pzIndex = ref[2] ? name : null;
 
   that.toString = function() {
-    return '[Widget ' + that.team.name() + ':' + that.type + '(' + name + ')]';
+    return '[Widget ' + team.name() + ':' + that.type + '(' + name + ')]';
   };
 
-  that.team.queue("termlists").subscribe(function(data) {
+  team.queue("termlists").subscribe(function(data) {
     data = data[name];
-    var template = that.team.loadTemplate('facetTitle-' + caption, mkws.M(caption))
-    var title = template({ query: that.config.query });
-    var acc = [];
-    acc.push('<div class="mkwsFacetTitle">', title, '</div>');
-
-    var teamName = that.team.name();
+    var terms = [];
+    var teamName = team.name();
     for (var i = 0; i < data.length && i < max; i++) {
-      var fn, datum;
-      // General case modifies the query; special case selects a target
-      if (pzIndex) {
-        fn = 'limitQuery'; datum = pzIndex;
-      } else if (!that.team.targetFiltered(data[i].id)) {
-        fn = 'limitTarget'; datum = data[i].id;
+      var linkdata = "";
+      var action = "";
+      if (!pzIndex) {
+        // Special case: target selection
+        linkdata += ('target_id='+data[i].id+' ');
+        if (!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 action = '';
-      if (fn) {
-        action = 'mkws.' + fn + '(\'' + teamName + '\', \'' + datum + '\', \'' + data[i].name + '\')';
+      linkdata += 'onclick="' + action + ';return false;"';
+      terms.push({
+        term: data[i].name,
+        count: data[i].freq,
+        linkdata: linkdata
+      }); 
+    }
+    // configured template > facet specific template > default facet template
+    var template;
+    if (that.config.template) {
+      template = team.loadTemplate(that.config.template);
+    } else {
+      template = team.loadTemplate("Facet-" + caption);
+      if (template) {
+        that.log("Using Facet-" + caption + " template.")
+      } else {
+        that.log("No " + caption + " specific template, using default.")
+        template = team.loadTemplate("Facet");
       }
-
-      acc.push('<div class="mkwsTerm">',
-               '<a href="#" ', 'onclick="', action, ';return false;">', data[i].name, '</a>',
-               '<span>', data[i].freq, '</span>',
-               '</div>');
     }
-
-    that.node.html(acc.join(''));
+    that.node.html(template({
+      name: name,
+      caption: caption,
+      terms: terms
+    }));
   });
-
   this.autosearch();
 });