search is completely working in frontend now
This commit is contained in:
@@ -8,7 +8,9 @@ $(document).ready(function() {
|
||||
var $hits = $('#hits');
|
||||
var $stats = $('#stats');
|
||||
var $facets = $('#facets');
|
||||
//var facets = [];
|
||||
var $pagination = $('#pagination');
|
||||
var what = '';
|
||||
|
||||
// Templates binding
|
||||
var hitTemplate = Hogan.compile($('#hit-template').text());
|
||||
@@ -19,6 +21,7 @@ $(document).ready(function() {
|
||||
|
||||
// something elasticy!
|
||||
var search = elasticSearcher;
|
||||
|
||||
// facets: $.map(FACET_CONFIG, function(facet) {
|
||||
// return !facet.disjunctive ? facet.name : null;
|
||||
// }),
|
||||
@@ -137,17 +140,23 @@ $(document).ready(function() {
|
||||
// If no results
|
||||
if (content.hits.length === 0) {
|
||||
$facets.empty();
|
||||
facets =[];
|
||||
return;
|
||||
}
|
||||
|
||||
var storeValue = function (values, label){
|
||||
|
||||
|
||||
return function(item){
|
||||
|
||||
let refined = search.isRefined(label, item.key);
|
||||
|
||||
values.push({
|
||||
facet: label,
|
||||
label: item.key,
|
||||
value: item.key,
|
||||
count: item.doc_count,
|
||||
refined: refined,
|
||||
});
|
||||
};
|
||||
};
|
||||
@@ -164,6 +173,8 @@ $(document).ready(function() {
|
||||
|
||||
if (buckets.length === 0) { continue; }
|
||||
|
||||
|
||||
|
||||
buckets.forEach(storeValue(values, label));
|
||||
|
||||
facets.push({
|
||||
@@ -252,7 +263,7 @@ $(document).ready(function() {
|
||||
});
|
||||
|
||||
$(document).on('click', '.toggleRefine', function() {
|
||||
search.addTerm($(this).data('facet'), $(this).data('value'));
|
||||
search.toggleTerm($(this).data('facet'), $(this).data('value'));
|
||||
search.execute();
|
||||
return false;
|
||||
});
|
||||
@@ -277,6 +288,7 @@ $(document).ready(function() {
|
||||
$('#facets').on("mouseenter mouseleave", ".button-checkbox", function(e) {
|
||||
$(this).parent().find('.facet_link').toggleClass("hover");
|
||||
});
|
||||
|
||||
$('#facets').on("mouseenter mouseleave", ".facet_link", function(e) {
|
||||
$(this).parent().find('.button-checkbox button.btn').toggleClass("hover");
|
||||
});
|
||||
@@ -330,7 +342,7 @@ $(document).ready(function() {
|
||||
}
|
||||
var query = decodeURIComponent(sURLVariables[0].split('=')[1]);
|
||||
$inputField.val(query);
|
||||
search.setQuery(query);
|
||||
search.setQuery(query, what);
|
||||
|
||||
for (var i = 2; i < sURLVariables.length; i++) {
|
||||
var sParameterName = sURLVariables[i].split('=');
|
||||
@@ -362,4 +374,8 @@ $(document).ready(function() {
|
||||
location.replace(urlParams);
|
||||
}
|
||||
|
||||
// do empty search to fill aggregations
|
||||
search.setQuery('', what);
|
||||
search.execute();
|
||||
|
||||
});
|
||||
|
@@ -14,7 +14,7 @@ var elasticSearcher = (function() {
|
||||
page: 0,
|
||||
|
||||
setQuery: (function(q, _url){
|
||||
console.log('setQuery!: ' + q);
|
||||
console.log('setQuery!: ' + q + 'what :'+ _url);
|
||||
deze.query=q;
|
||||
if (_url !== undefined) {
|
||||
deze.url=_url;
|
||||
@@ -45,8 +45,19 @@ var elasticSearcher = (function() {
|
||||
return deze.newhits.aggregations;
|
||||
}),
|
||||
|
||||
addTerm: (function(term, value){
|
||||
deze.terms[term] = value;
|
||||
toggleTerm: (function(term, value){
|
||||
if (deze.terms[term] !== undefined) {
|
||||
delete deze.terms[term];
|
||||
} else {
|
||||
deze.terms[term] = value;
|
||||
}
|
||||
}),
|
||||
|
||||
isRefined: (function(term, value){
|
||||
if (deze.terms[term] === value) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}),
|
||||
|
||||
//get response from elastic and rebuild json
|
||||
@@ -89,7 +100,8 @@ var elasticSearcher = (function() {
|
||||
setCurrentPage: deze.setCurrentPage,
|
||||
query: deze.query,
|
||||
page: deze.page,
|
||||
addTerm: deze.addTerm,
|
||||
toggleTerm: deze.toggleTerm,
|
||||
isRefined: deze.isRefined,
|
||||
};
|
||||
|
||||
})();
|
||||
|
@@ -6,8 +6,8 @@
|
||||
this.autocomplete({hint: false}, [
|
||||
{
|
||||
source: elasticSearch($, '/user'),
|
||||
displayKey: 'full_name',
|
||||
async: true,
|
||||
displayKey: 'full_name',
|
||||
async: true,
|
||||
minLength: 1,
|
||||
limit: 10,
|
||||
templates: {
|
||||
|
@@ -22,6 +22,7 @@ style.
|
||||
type="text",
|
||||
name="q",
|
||||
id="q",
|
||||
what="/user",
|
||||
autocomplete="off",
|
||||
spellcheck="false",
|
||||
autocorrect="false",
|
||||
@@ -92,14 +93,6 @@ script(type="text/template", id="stats-template")
|
||||
| {% endblock %}
|
||||
|
||||
| {% block footer_scripts %}
|
||||
script().
|
||||
var APPLICATION_ID = '{{config.ALGOLIA_USER}}';
|
||||
var SEARCH_ONLY_API_KEY = '{{config.ALGOLIA_PUBLIC_KEY}}';
|
||||
var INDEX_NAME = '{{config.ALGOLIA_INDEX_USERS}}';
|
||||
var sortByCountDesc = null;
|
||||
var FACET_CONFIG = [
|
||||
{ name: 'roles', title: 'Roles', disjunctive: false, sortFunction: sortByCountDesc },
|
||||
];
|
||||
|
||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/algoliasearch-3.19.0.min.js')}}")
|
||||
script(src="{{ url_for('static_pillar', filename='assets/js/vendor/algoliasearch.helper.min.js') }}")
|
||||
|
Reference in New Issue
Block a user