Add categoryFilter factory.
[mkws-moved-to-github.git] / src / mkws-filter.js
index 4d600cc..7d9fac0 100644 (file)
@@ -16,7 +16,7 @@ function filterSet(team) {
     that.visitTargets = function(callback) {
        for (var i in m_list) {
            var filter = m_list[i];
-           if (filter.id) {
+           if (filter.type === 'target') {
                callback(filter.id, filter.name);
            }
        }
@@ -25,7 +25,7 @@ function filterSet(team) {
     that.visitFields = function(callback) {
        for (var i in m_list) {
            var filter = m_list[i];
-           if (!filter.id) {
+           if (filter.type === 'field') {
                callback(filter.field, filter.value);
            }
        }
@@ -47,7 +47,7 @@ function filterSet(team) {
 
     that.targetFiltered = function(id) {
        for (var i = 0; i < m_list.length; i++) {
-           if (m_list[i].id === id ||
+           if (m_list[i].type === 'target' ||
                m_list[i].id === 'pz:id=' + id) {
                return true;
            }
@@ -72,45 +72,39 @@ function filterSet(team) {
     };
 
     that.pp2limit = function(initial) {
-       var OLD = that.OLD_pp2limit(initial);
-       var NEW = that.NEW_pp2limit(initial);
-       if (OLD !== NEW) {
-           alert("pp2limit(): OLD[" + OLD + "] !== NEW[" + NEW + "]");
-       }
-       return OLD;
-    };
-
-    that.OLD_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, '\\$&');
-           }
-       }
-
+       that.visitFields(function(field, value) {
+           if (res) res += ",";
+           res += field + "=" + value.replace(/[\\|,]/g, '\\$&');
+       });
        return res;
-    };
-
-    that.NEW_pp2limit = function(initial) {
-       return that.OLD_pp2limit(initial);
     }
 
     return that;
 }
 
 
-// Factory function for filters. These can be of several types.
-function filter(id, name, field, value) {
-    var res;
+// Factory functions for filters. These can be of several types.
+function targetFilter(id, name) {
+    return {
+        type: 'target',
+        id: id,
+        name: name
+    };
+}
 
-    if (id) {
-       res = { id: id, name: name };
-    } else {
-       res = { field: field, value: value };
-    }
+function fieldFilter(field, value) {
+    return {
+        type: 'field',
+        field: field,
+        value: value
+    };
+}
 
-    return res;
+function categoryFilter(id) {
+    return {
+        type: 'category',
+        id: id,
+    };
 }