X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmkws-team.js;h=a1e942c2921cb16635e65644195ecec3e37ed24e;hb=0d3b289df04cf273feb973c72da3e750f6825675;hp=e1e985b367e93513785dbda7a5d72fcd63df4016;hpb=a81aa5acab1c9783ba1a6da77316bd39fa85d7cc;p=mkws-moved-to-github.git diff --git a/src/mkws-team.js b/src/mkws-team.js index e1e985b..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 = ''; @@ -27,7 +27,8 @@ function team($, teamName) { }; var m_paz; // will be initialised below var m_template = {}; - var m_config = Object.create(mkws.config); + var m_config = mkws.objectInheritingFrom(mkws.config); + var m_widgets = {}; // Maps widget-type to object that.toString = function() { return '[Team ' + teamName + ']'; }; @@ -39,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 @@ -48,12 +49,12 @@ function team($, teamName) { // The following PubSub code is modified from the jQuery manual: - // https://api.jquery.com/jQuery.Callbacks/ + // http://api.jquery.com/jQuery.Callbacks/ // // Use as: // team.queue("eventName").subscribe(function(param1, param2 ...) { ... }); // team.queue("eventName").publish(arg1, arg2, ...); - + // var queues = {}; function queue(id) { if (!queues[id]) { @@ -115,8 +116,9 @@ function team($, teamName) { } function onStat(data) { - log("stat"); queue("stat").publish(data); + if (parseInt(data.activeclients[0], 10) === 0) + queue("complete").publish(parseInt(data.hits[0], 10)); } function onTerm(data) { @@ -161,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; } } @@ -173,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; }; @@ -181,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 }); @@ -205,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 { @@ -214,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]); + } } @@ -239,6 +252,7 @@ function team($, teamName) { that.reShow = function() { + resetPage(); m_paz.show(0, m_perpage, m_sortOrder); }; @@ -258,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; @@ -284,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 += ","; @@ -298,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, '\\$&'); @@ -318,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" @@ -329,10 +347,10 @@ function team($, teamName) { // switching view between targets and records function switchView(view) { - var targets = findnode('.mkwsTargets'); - var results = findnode('.mkwsResults,.mkwsRecords'); - var blanket = findnode('.mkwsBlanket'); - var motd = findnode('.mkwsMOTD'); + var targets = widgetNode('Targets'); + var results = widgetNode('Results') || widgetNode('Records'); + var blanket = widgetNode('Blanket'); + var motd = widgetNode('MOTD'); switch(view) { case 'targets': @@ -427,6 +445,15 @@ function team($, teamName) { \ '); + var acc = []; + var facets = m_config.facets; + acc.push('