X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmkws-team.js;h=a1e942c2921cb16635e65644195ecec3e37ed24e;hb=0d3b289df04cf273feb973c72da3e750f6825675;hp=1983508042902c5d0b107314f1b9057ebb874192;hpb=ab416df0cb585cd841de53e886b02178bff2d864;p=mkws-moved-to-github.git diff --git a/src/mkws-team.js b/src/mkws-team.js index 1983508..a1e942c 100644 --- a/src/mkws-team.js +++ b/src/mkws-team.js @@ -5,8 +5,8 @@ // Some functions are visible as member-functions to be called from // outside code -- specifically, from generated HTML. These functions // are that.switchView(), showDetails(), limitTarget(), limitQuery(), -// delimitTarget(), delimitQuery(), showPage(), pagerPrev(), -// pagerNext(). +// limitCategory(), delimitTarget(), delimitQuery(), showPage(), +// pagerPrev(), pagerNext(). // function team($, teamName) { var that = {}; @@ -15,7 +15,7 @@ function team($, teamName) { var m_query; // initially undefined var m_sortOrder; // will be set below var m_perpage; // will be set below - var m_filters = []; + var m_filterSet = filterSet(); var m_totalRecordCount = 0; var m_currentPage = 1; var m_currentRecordId = ''; @@ -40,7 +40,7 @@ function team($, teamName) { that.currentPage = function() { return m_currentPage; }; that.currentRecordId = function() { return m_currentRecordId; }; that.currentRecordData = function() { return m_currentRecordData; }; - that.filters = function() { return m_filters; }; + that.filters = function() { return m_filterSet.list(); }; that.config = function() { return m_config; }; // Accessor methods for individual widgets: writers @@ -163,9 +163,9 @@ function team($, teamName) { that.targetFiltered = function(id) { - for (var i = 0; i < m_filters.length; i++) { - if (m_filters[i].id === id || - m_filters[i].id === 'pz:id=' + id) { + for (var i = 0; i < m_filterSet.list().length; i++) { + if (m_filterSet.list()[i].id === id || + m_filterSet.list()[i].id === 'pz:id=' + id) { return true; } } @@ -175,7 +175,7 @@ function team($, teamName) { that.limitTarget = function(id, name) { log("limitTarget(id=" + id + ", name=" + name + ")"); - m_filters.push({ id: id, name: name }); + m_filterSet.add(filter(id, name)); triggerSearch(); return false; }; @@ -183,12 +183,20 @@ function team($, teamName) { that.limitQuery = function(field, value) { log("limitQuery(field=" + field + ", value=" + value + ")"); - m_filters.push({ field: field, value: value }); + m_filterSet.add(filter(null, null, field, value)); triggerSearch(); return false; }; + that.limitCategory = function(id) { + log("limitCategory(id=" + id + ")"); + // ### Add a filter + // ### triggerSearch() if there's a query + return false; + }; + + that.delimitTarget = function(id) { log("delimitTarget(id=" + id + ")"); removeMatchingFilters(function(f) { return f.id }); @@ -207,8 +215,8 @@ function team($, teamName) { function removeMatchingFilters(matchFn) { var newFilters = []; - for (var i in m_filters) { - var filter = m_filters[i]; + for (var i in m_filterSet.list()) { + var filter = m_filterSet.list()[i]; if (matchFn(filter)) { log("removeMatchingFilters() removing filter " + $.toJSON(filter)); } else { @@ -216,7 +224,10 @@ function team($, teamName) { newFilters.push(filter); } } - m_filters = newFilters; + m_filterSet = filterSet(); + for (var i = 0; i < newFilters.length; i++) { + m_filterSet.add(newFilters[i]); + } } @@ -261,7 +272,7 @@ function team($, teamName) { return; } - m_filters = [] + m_filterSet = filterSet(); triggerSearch(query, sortOrder, maxrecs, perpage, limit, targets, torusquery); switchView('records'); // In case it's configured to start off as hidden m_submitted = true; @@ -287,11 +298,11 @@ function team($, teamName) { m_perpage = perpage; } if (targets) { - m_filters.push({ id: targets, name: targets }); + m_filterSet.add(filter(id, id)); } - for (var i in m_filters) { - var filter = m_filters[i]; + for (var i in m_filterSet.list()) { + var filter = m_filterSet.list()[i]; if (filter.id) { if (pp2filter) pp2filter += ","; @@ -301,7 +312,11 @@ function team($, teamName) { filter.id = 'pz:id=' + filter.id; } pp2filter += filter.id; - } else { + } + } + for (var i in m_filterSet.list()) { + var filter = m_filterSet.list()[i]; + if (!filter.id) { if (pp2limit) pp2limit += ","; pp2limit += filter.field + "=" + filter.value.replace(/[\\|,]/g, '\\$&'); @@ -321,7 +336,7 @@ function team($, teamName) { params.torusquery = torusquery; } - log("triggerSearch(" + m_query + "): filters = " + $.toJSON(m_filters) + ", " + + log("triggerSearch(" + m_query + "): filters = " + $.toJSON(m_filterSet.list()) + ", " + "pp2filter = " + pp2filter + ", params = " + $.toJSON(params)); // We can use: params.torusquery = "udb=NAME" @@ -598,20 +613,15 @@ function team($, teamName) { // Finds the node of the specified class within the current team - // Multiple OR-clauses separated by commas are handled - // More complex cases may not work - // function findnode(selector, teamName) { teamName = teamName || m_teamName; - selector = $.map(selector.split(','), function(s, i) { - if (teamName === 'AUTO') { - return (s + '.mkwsTeam_' + teamName + ',' + - s + ':not([class^="mkwsTeam"],[class*=" mkwsTeam"])'); - } else { - return s + '.mkwsTeam_' + teamName; - } - }).join(','); + if (teamName === 'AUTO') { + selector = (selector + '.mkwsTeam_' + teamName + ',' + + selector + ':not([class^="mkwsTeam"],[class*=" mkwsTeam"])'); + } else { + selector = selector + '.mkwsTeam_' + teamName; + } var node = $(selector); //log('findnode(' + selector + ') found ' + node.length + ' nodes');