Tweak Navi widget for modified team.filters behaviour.
[mkws-moved-to-github.git] / src / mkws-filter.js
index 290b0d0..219ccd5 100644 (file)
@@ -1,8 +1,10 @@
 // Factory function for sets of filters.
-function filterSet() {
-    var that = {};
+function filterSet(team) {
+    var m_team = team;
     var m_list = [];
 
+    var that = {};
+
     that.list = function() {
        return m_list;
     };
@@ -16,9 +18,9 @@ function filterSet() {
        for (var i in m_list) {
            var filter = m_list[i];
            if (matchFn(filter)) {
-               log("removeMatching() removing filter " + $.toJSON(filter));
+               m_team.log("removeMatching() removing filter " + $.toJSON(filter));
            } else {
-               log("removeMatching() keeping filter " + $.toJSON(filter));
+               m_team.log("removeMatching() keeping filter " + $.toJSON(filter));
                newList.push(filter);
            }
        }
@@ -35,6 +37,40 @@ function filterSet() {
        return false;
     }
 
+    that.pp2filter = function() {
+       var res = "";
+
+       for (var i in m_list) {
+           var filter = m_list[i];
+           if (filter.id) {
+               if (res) res += ",";
+               if (filter.id.match(/^[a-z:]+[=~]/)) {
+                   m_team.log("filter '" + filter.id + "' already begins with SETTING OP");
+               } else {
+                   filter.id = 'pz:id=' + filter.id;
+               }
+               res += filter.id;
+           }
+       }
+
+       return res;
+    }
+
+    that.pp2limit = function(initial) {
+       var res = initial || "";
+
+       for (var i in m_list) {
+           var filter = m_list[i];
+           if (!filter.id) {
+               if (res) res += ",";
+               res += filter.field + "=" + filter.value.replace(/[\\|,]/g, '\\$&');
+           }
+       }
+
+       return res;
+    }
+
+
     return that;
 }