Part of MKWS-64.
[mkws-moved-to-github.git] / src / mkws-filter.js
index 22aeb20..63d80bd 100644 (file)
@@ -45,15 +45,16 @@ function filterSet(team) {
     for (var i in m_list) {
       var filter = m_list[i];
       if (matchFn(filter)) {
-        m_team.log("removeMatching: removing filter " + mkws.$.toJSON(filter));
+        m_team.info("removeMatching: removing filter " + mkws.$.toJSON(filter));
       } else {
-        m_team.log("removeMatching: keeping filter " + mkws.$.toJSON(filter));
+        m_team.info("removeMatching: keeping filter " + mkws.$.toJSON(filter));
         newList.push(filter);
       }
     }
     m_list = newList;
   };
 
+  // ### Surely the || in this function should be &&
   that.targetFiltered = function(id) {
     for (var i = 0; i < m_list.length; i++) {
       if (m_list[i].type === 'target' ||
@@ -70,7 +71,7 @@ function filterSet(team) {
     that.visitTargets(function(id, name) {
       if (res) res += ",";
       if (id.match(/^[a-z:]+[=~]/)) {
-        m_team.log("filter '" + id + "' already begins with SETTING OP");
+        m_team.info("filter '" + id + "' already begins with SETTING OP");
       } else {
         id = 'pz:id=' + id;
       }
@@ -95,11 +96,34 @@ function filterSet(team) {
 
     that.visitCategories(function(id) {
       if (res) res += ",";
-      res += "category~" + id.replace(/[\\|,]/g, '\\$&');
+      res += "category~" + id.replace(/[\\,]/g, '\\$&');
     });
     return res;
   }
 
+  // Returns a hash of key=value pairs representing the filter-set
+  // These will become part of the URL-fragment representing the state
+  that.fragmentItems = function() {
+    var hash = {};
+
+    for (var i in m_list) {
+      var filter = m_list[i];
+      var type = filter.type;
+      if (type === 'target') {
+        hash['xt-' + filter.id] = filter.name;
+      } else if (type === 'field') {
+        // Ugly names, but we need to include the value because fields can be repeated
+        hash['xf-' + filter.field + '-' + filter.value] = 1;
+      } else if (type === 'category') {
+        hash['xc-' + filter.id] = 1;
+      } else {
+        alert("unsupported filter-type '" + type + "'");
+      }
+    }
+    
+    return hash;
+  }
+
   return that;
 }