X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Fmkws-filter.js;h=219ccd5ccabded37f367d47a3b9a297cc3dccb6c;hb=5b59e936923885cb375cb7d540f5b8ad754d848d;hp=c62235eebd8497a043ab3f3fc303f8542b1007cf;hpb=d17b8d85a517f52832afbcce1a52b83ba7152498;p=mkws-moved-to-github.git diff --git a/src/mkws-filter.js b/src/mkws-filter.js index c62235e..219ccd5 100644 --- a/src/mkws-filter.js +++ b/src/mkws-filter.js @@ -1,5 +1,82 @@ +// Factory function for sets of filters. +function filterSet(team) { + var m_team = team; + var m_list = []; + + var that = {}; + + that.list = function() { + return m_list; + }; + + that.add = function(filter) { + m_list.push(filter); + }; + + that.removeMatching = function(matchFn) { + var newList = []; + for (var i in m_list) { + var filter = m_list[i]; + if (matchFn(filter)) { + m_team.log("removeMatching() removing filter " + $.toJSON(filter)); + } else { + m_team.log("removeMatching() keeping filter " + $.toJSON(filter)); + newList.push(filter); + } + } + m_list = newList; + }; + + that.targetFiltered = function(id) { + for (var i = 0; i < m_list.length; i++) { + if (m_list[i].id === id || + m_list[i].id === 'pz:id=' + id) { + return true; + } + } + 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; +} + + // Factory function for filters. These can be of several types. -function filter(id, field, value) { +function filter(id, name, field, value) { var res; if (id) {