Search JS: more stupid and thus more reliable repeat query filtering

This commit is contained in:
2018-01-05 17:02:42 +01:00
parent 33c051bf28
commit 67851752fa

View File

@@ -12,7 +12,7 @@ var elasticSearcher = (function() {
newhits: [], newhits: [],
terms: {}, terms: {},
page: 0, page: 0,
last_params: null, // to prevent re-querying for the same thing. last_query: null, // to prevent re-querying for the same thing.
setQuery: (function(q, _url){ setQuery: (function(q, _url){
deze.query=q; deze.query=q;
@@ -67,16 +67,11 @@ var elasticSearcher = (function() {
q: deze.query, q: deze.query,
page: deze.page, page: deze.page,
}; };
if (deze.last_params != null && deze.last_params.q == params.q && deze.last_params.page == params.page) {
// We're requesting exactly the same thing as before, don't bother.
return;
}
//add term filters //add term filters
Object.assign(params, deze.terms); Object.assign(params, deze.terms);
var pstr = jQuery.param( params ); var pstr = jQuery.param( params );
if (pstr === deze.last_query) return;
$.getJSON("/api/newsearch" + deze.url + "?"+ pstr) $.getJSON("/api/newsearch" + deze.url + "?"+ pstr)
.done(function (data) { .done(function (data) {
@@ -87,7 +82,7 @@ var elasticSearcher = (function() {
deze.newhits = newhits.slice(0); deze.newhits = newhits.slice(0);
//cb(newhits.slice(0)); //cb(newhits.slice(0));
deze.last_params = params; deze.last_query = pstr;
deze.results({ deze.results({
'count': data.hits.total, 'count': data.hits.total,
'hits': newhits.slice(0), 'hits': newhits.slice(0),
@@ -98,7 +93,7 @@ var elasticSearcher = (function() {
}) })
.fail(function(err) { .fail(function(err) {
toastr.error(xhrErrorResponseMessage(err), 'Unable to perform search:'); toastr.error(xhrErrorResponseMessage(err), 'Unable to perform search:');
deze.last_params = null; deze.last_query = null;
}) })
; ;