X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Fmkws-filter.js;h=e37a0bd319bb0e53ff2ca23ca101da63fc11b653;hb=b77d3c71a27d3ef8323789281ea88efdebc158b5;hp=290b0d0bb3ff2d15e338e27c490ff110a1751e6a;hpb=3cf50cf24f6b79f785724008a4e24b6ae3b49cdd;p=mkws-moved-to-github.git diff --git a/src/mkws-filter.js b/src/mkws-filter.js index 290b0d0..e37a0bd 100644 --- a/src/mkws-filter.js +++ b/src/mkws-filter.js @@ -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; }; @@ -11,14 +13,32 @@ function filterSet() { m_list.push(filter); }; + that.visitTargets = function(callback) { + for (var i in m_list) { + var filter = m_list[i]; + if (filter.id) { + callback(filter.id, filter.name); + } + } + }; + + that.visitFields = function(callback) { + for (var i in m_list) { + var filter = m_list[i]; + if (!filter.id) { + callback(filter.field, filter.value); + } + } + }; + that.removeMatching = function(matchFn) { var newList = []; 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 +55,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; }