T53161 javascript search stuff almost complete.

This commit is contained in:
2017-11-24 17:47:38 +01:00
parent 1bda98228c
commit 9cd3d97c75
7 changed files with 245 additions and 155 deletions

View File

@@ -3,15 +3,108 @@
* index and algolia settings are defined in layout.pug
*/
var elasticSearcher = (function() {
var deze = {
query:"",
url:"",
newhits: [],
terms: {},
page: 0,
setQuery: (function(q, _url){
console.log('setQuery!: ' + q);
deze.query=q;
if (_url !== undefined) {
deze.url=_url;
}
}),
setCurrentPage: (function(page){
if(page === undefined){
return;
}
deze.page = page;
}),
//result callback
results: (function(content){}),
//error callback
error: (function(message){
console.log(message);
}),
on: (function(type, callback){
deze[type] = callback;
}),
//parse the agg stuff
aggs: (function(data){
return deze.newhits.aggregations;
}),
addTerm: (function(term, value){
deze.terms[term] = value;
}),
//get response from elastic and rebuild json
//so we can be a drop in of angolia
execute: (function(){
params = {
q: deze.query,
page: deze.page,
};
//add term filters
Object.assign(params, deze.terms);
var pstr = jQuery.param( params );
var jqxhr = $.getJSON("/api/newsearch" + deze.url + "?"+ pstr, function( data ) {
let hits = data.hits.hits;
var newhits = hits.map(function(hit){
return hit._source;
});
deze.newhits = newhits.slice(0);
//cb(newhits.slice(0));
deze.results({
'count': data.hits.total,
'hits': newhits.slice(0),
'took': data.took,
'page': deze.page,
'aggs': data.aggregations,
});
});
})
};
return {
execute: deze.execute,
on: deze.on,
setQuery: deze.setQuery,
setCurrentPage: deze.setCurrentPage,
query: deze.query,
page: deze.page,
addTerm: deze.addTerm,
};
})();
var elasticSearch = (function($, url) {
console.log(url);
return function findMatches(q, cb, async){
if (!cb) { return; }
$.fn.getSearch(q, cb, async, url);
};
return function findMatches(q, cb, async){
if (!cb) { return; }
$.fn.getSearch(q, cb, async, url);
};
});
(function( $ ){
$.fn.getSearch = function(q, cb, async, url){
@@ -20,7 +113,9 @@ var elasticSearch = (function($, url) {
if(url === undefined){
url = '';
}
console.log('searching! '+ url + q);
console.log('searching! '+ url + q);
$.getJSON("/api/newsearch" + url + "?q=" + q, function( data ) {
let hits = data.hits.hits;
newhits = hits.map(function(hit){