X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmkws-filter.js;h=23cb54b671cff3cac5f8dd3109ed425d2167a282;hb=0fac5e7e2cb7209262b8f312bb2046dad2304036;hp=22aeb2046b9eccbe9c0136bdc05d07a69f347895;hpb=3de5533466e4168c5450c9ca3edc8eb3a53f2a56;p=mkws-moved-to-github.git diff --git a/src/mkws-filter.js b/src/mkws-filter.js index 22aeb20..23cb54b 100644 --- a/src/mkws-filter.js +++ b/src/mkws-filter.js @@ -45,15 +45,16 @@ function filterSet(team) { for (var i in m_list) { var filter = m_list[i]; if (matchFn(filter)) { - m_team.log("removeMatching: removing filter " + mkws.$.toJSON(filter)); + m_team.info("removeMatching: removing filter " + mkws.$.toJSON(filter)); } else { - m_team.log("removeMatching: keeping filter " + mkws.$.toJSON(filter)); + m_team.info("removeMatching: keeping filter " + mkws.$.toJSON(filter)); newList.push(filter); } } m_list = newList; }; + // ### Surely the || in this function should be && that.targetFiltered = function(id) { for (var i = 0; i < m_list.length; i++) { if (m_list[i].type === 'target' || @@ -70,7 +71,7 @@ function filterSet(team) { that.visitTargets(function(id, name) { if (res) res += ","; if (id.match(/^[a-z:]+[=~]/)) { - m_team.log("filter '" + id + "' already begins with SETTING OP"); + m_team.info("filter '" + id + "' already begins with SETTING OP"); } else { id = 'pz:id=' + id; } @@ -88,17 +89,51 @@ function filterSet(team) { res += field + "=" + value.replace(/[\\|,]/g, '\\$&'); }); return res; - } + }; that.pp2catLimit = function() { var res = ""; that.visitCategories(function(id) { if (res) res += ","; - res += "category~" + id.replace(/[\\|,]/g, '\\$&'); + res += "category~" + id.replace(/[\\,]/g, '\\$&'); }); return res; - } + }; + + // Returns a hash of key=value pairs representing the filter-set + // These will become part of the URL-fragment representing the state + that.fragmentItems = function() { + var hash = {}; + + for (var i in m_list) { + var filter = m_list[i]; + var type = filter.type; + if (type === 'target') { + hash['xt-' + filter.id] = filter.name; + } else if (type === 'field') { + // Ugly names, but we need to include the value because fields can be repeated + hash['xf-' + filter.field + '-' + filter.value] = 1; + } else if (type === 'category') { + hash['xc-' + filter.id] = 1; + } else { + alert("unsupported filter-type '" + type + "'"); + } + } + + return hash; + }; + + that.deepCopy = function() { + var fs = filterSet(m_team); + fs._setList($.extend([], m_list)); + return fs; + }; + + // Used only by clone() + that._setList = function(list) { + m_list = list; + }; return that; }