X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmkws-filter.js;h=22669939aab1c0dfe929f75b3fe8ce36fe8794ac;hb=b75f69516de319ca5c283a70238a482e86303138;hp=02ce4223f71ad244099ef94cc138bc2a3bb6e8b9;hpb=242978c76db07a1f1f72a6f02c7b0e03bc6eb365;p=mkws-moved-to-github.git diff --git a/src/mkws-filter.js b/src/mkws-filter.js index 02ce422..2266993 100644 --- a/src/mkws-filter.js +++ b/src/mkws-filter.js @@ -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,12 +25,21 @@ 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); } } }; + that.visitCategories = function(callback) { + for (var i in m_list) { + var filter = m_list[i]; + if (filter.type === 'category') { + callback(filter.id); + } + } + }; + that.removeMatching = function(matchFn) { var newList = []; for (var i in m_list) { @@ -47,7 +56,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; } @@ -56,34 +65,6 @@ function filterSet(team) { }; that.pp2filter = function() { - var OLD = that.OLD_pp2filter(); - var NEW = that.NEW_pp2filter(); - if (OLD !== NEW) { - alert("pp2filter(): OLD[" + OLD + "] !== NEW[" + NEW + "]"); - } - return OLD; - }; - - that.OLD_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.NEW_pp2filter = function() { var res = ""; that.visitTargets(function(id, name) { @@ -102,31 +83,47 @@ function filterSet(team) { 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, '\\$&'); - } - } - + that.visitFields(function(field, value) { + if (res) res += ","; + res += field + "=" + value.replace(/[\\|,]/g, '\\$&'); + }); return res; - }; + } + + that.pp2catLimit = function() { + var res = ""; + that.visitCategories(function(id) { + if (res) res += ","; + res += "category~" + id.replace(/[\\|,]/g, '\\$&'); + }); + return res; + } 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, + }; }