Add to mkws.filters array as facets are selected.
[mkws-moved-to-github.git] / tools / htdocs / mkws.js
index ee13dba..98b9ff8 100644 (file)
@@ -4,7 +4,10 @@
 "use strict"; // HTML5: disable for debug_level >= 2
 
 // Set up namespace and some state.
-var mkws = {};
+var mkws = {
+    filters: [],
+    pp2filter: null,
+};
 
 /*
  * global config object: mkws_config
@@ -176,7 +179,6 @@ var totalRec = 0;
 var curDetRecId = '';
 var curDetRecData = null;
 var curSort = 'relevance';
-var curFilter = null;
 var submitted = false;
 var SourceMax = 16;
 var SubjectMax = 10;
@@ -373,7 +375,8 @@ function resetPage()
 
 function triggerSearch ()
 {
-    my_paz.search(document.mkwsSearchForm.mkwsQuery.value, recPerPage, curSort, curFilter);
+    debug("triggerSearch: filters = " + JSON.stringify(mkws.filters));
+    my_paz.search(document.mkwsSearchForm.mkwsQuery.value, recPerPage, curSort, mkws.pp2filter);
 }
 
 function loadSelect ()
@@ -389,6 +392,8 @@ function loadSelect ()
 // limit the query after clicking the facet
 mkws.limitQuery = function (field, value)
 {
+    debug("limitQuery(field=" + field + ", value=" + value + ")");
+    mkws.filters.push({ field: field, value: value });
     document.mkwsSearchForm.mkwsQuery.value += ' and ' + field + '="' + value + '"';
     onFormSubmitEventHandler();
 }
@@ -396,22 +401,37 @@ mkws.limitQuery = function (field, value)
 // limit by target functions
 mkws.limitTarget  = function (id, name)
 {
+    debug("limitTarget(id=" + id + ", name=" + name + ")");
+    mkws.filters.push({ id: id, name: name });
     var navi = document.getElementById('mkwsNavi');
     navi.innerHTML =
-        'Source: <a class="crossout" href="#" onclick="mkws.delimitTarget();return false;">'
+        'Source: <a class="crossout" href="#" onclick="mkws.delimitTarget(' + "'" + id + "'" + ');return false;">'
         + name + '</a>';
-    curFilter = 'pz:id=' + id;
+    mkws.pp2filter = 'pz:id=' + id;
     resetPage();
     loadSelect();
     triggerSearch();
     return false;
 }
 
-mkws.delimitTarget = function ()
+mkws.delimitTarget = function (id)
 {
+    debug("delimitTarget(id=" + id + ")");    
+    var newFilters = [];
+    for (var i in mkws.filters) {
+       var filter = mkws.filters[i];
+       if (filter.id) {
+           debug("delimitTarget() removing filter " + JSON.stringify(filter));
+       } else {
+           debug("delimitTarget() keeping filter " + JSON.stringify(filter));
+           newFilters.push(filter);
+       }
+    }
+    mkws.filters = newFilters;
+
     var navi = document.getElementById('mkwsNavi');
     navi.innerHTML = '';
-    curFilter = null;
+    mkws.pp2filter = null;
     resetPage();
     loadSelect();
     triggerSearch();