Files
pillar/src/scripts/tutti/4_search.js

137 lines
3.8 KiB
JavaScript
Raw Normal View History

/*
* == Search ==
* index and algolia settings are defined in layout.pug
*/
$(document).ready(function() {
if (typeof algoliaIndex === 'undefined') return;
2017-11-10 19:09:14 +01:00
var elasticSearch = function() {
console.log('yay');
return function findMatches(q, cb, async){
let newhits = [];
// do a query
console.log(q);
$.getJSON("/api/newsearch?q=" + q, function( data ) {
console.log(data.hits.hits);
let hits = data.hits.hits;
newhits = hits.map(function(hit){
console.log(hit._source);
return hit._source;
});
console.log(newhits);
cb(newhits);
console.log(cb);
async();
});
//api/newsearch?q=test%20dji
// return the matches..
//cb(matches);
};
};
var searchInput = $('#cloud-search');
var tu = searchInput.typeahead({hint: true}, {
2017-11-10 19:09:14 +01:00
//source: algoliaIndex.ttAdapter(),
source: elasticSearch(),
displayKey: 'name',
limit: 10,
minLength: 0,
templates: {
suggestion: function(hit) {
2017-11-10 19:09:14 +01:00
console.log('hit2');
console.log(hit);
var hitMedia = (hit.media ? ' · <span class="media">'+hit.media+'</span>' : '');
var hitFree = (hit.is_free ? '<div class="search-hit-ribbon"><span>free</span></div>' : '');
var hitPicture;
if (hit.picture){
hitPicture = '<img src="' + hit.picture + '"/>';
} else {
hitPicture = '<div class="search-hit-thumbnail-icon">';
hitPicture += (hit.media ? '<i class="pi-' + hit.media + '"></i>' : '<i class="dark pi-'+ hit.node_type + '"></i>');
hitPicture += '</div>';
};
var $span = $('<span>').addClass('project').text(hit.project.name);
var $searchHitName = $('<div>').addClass('search-hit-name')
.attr('title', hit.name)
.text(hit.name);
return '' +
'<a href="/nodes/'+ hit.objectID + '/redir" class="search-site-result" id="'+ hit.objectID + '">' +
'<div class="search-hit">' +
'<div class="search-hit-thumbnail">' +
hitPicture +
hitFree +
'</div>' +
$searchHitName.html() +
'<div class="search-hit-meta">' +
$span.html() + ' · ' +
'<span class="node_type">' + hit.node_type + '</span>' +
hitMedia +
'</div>' +
'</div>'+
'</a>';
}
}
});
$('.search-site-result.advanced, .search-icon').on('click', function(e){
e.stopPropagation();
e.preventDefault();
window.location.href = '/search#q='+ $("#cloud-search").val() + '&page=1';
});
searchInput.bind('typeahead:select', function(ev, hit) {
$('.search-icon').removeClass('pi-search').addClass('pi-spin spin');
window.location.href = '/nodes/'+ hit.objectID + '/redir';
});
searchInput.bind('typeahead:active', function() {
$('#search-overlay').addClass('active');
$('.page-body').addClass('blur');
});
searchInput.bind('typeahead:close', function() {
$('#search-overlay').removeClass('active');
$('.page-body').removeClass('blur');
});
searchInput.keyup(function(e) {
2017-11-10 19:09:14 +01:00
console.log('upupup');
if ( $('.tt-dataset').is(':empty') ){
if(e.keyCode == 13){
window.location.href = '/search#q='+ $("#cloud-search").val() + '&page=1';
};
};
});
searchInput.bind('typeahead:render', function(event, suggestions, async, dataset) {
2017-11-10 19:09:14 +01:00
console.log('woot');
console.log(suggestions);
console.log(dataset);
if( suggestions != undefined && $('.tt-all-results').length <= 0){
$('.tt-dataset').append(
'<a id="search-advanced" href="/search#q='+ $("#cloud-search").val() + '&page=1" class="search-site-result advanced tt-suggestion">' +
'<div class="search-hit">' +
'<div class="search-hit-thumbnail">' +
'<div class="search-hit-thumbnail-icon">' +
'<i class="pi-search"></i>' +
'</div>' +
'</div>' +
'<div class="search-hit-name">' +
'Use Advanced Search' +
'</div>' +
'</div>'+
'</a>');
};
});
});