feat: more search changes

v1.18.x
Barış Soner Uşaklı 5 years ago
parent 4b38533b15
commit 6349fa03e1

@ -478,22 +478,43 @@ app.cacheBuster = null;
} }
app.enableTopicSearch = function (options) { app.enableTopicSearch = function (options) {
/* eslint-disable-next-line */
var searchOptions = Object.assign({ in: 'titles' }, options.searchOptions);
var quickSearchResults = options.searchElements.resultEl; var quickSearchResults = options.searchElements.resultEl;
var inputEl = options.searchElements.inputEl; var inputEl = options.searchElements.inputEl;
var searchTimeoutId = 0; var searchTimeoutId = 0;
var oldValue = inputEl.val(); var oldValue = inputEl.val();
inputEl.on('blur', function () {
setTimeout(function () { function doSearch() {
if (!inputEl.is(':focus')) { require(['search'], function (search) {
quickSearchResults.addClass('hidden'); /* eslint-disable-next-line */
} options.searchOptions = Object.assign({}, searchOptions);
}, 200); options.searchOptions.term = inputEl.val();
}); $(window).trigger('action:search.quick.start', options);
inputEl.on('focus', function () { options.searchOptions.searchOnly = 1;
if (inputEl.val() && quickSearchResults.find('#quick-search-results').children().length) { search.api(options.searchOptions, function (data) {
quickSearchResults.removeClass('hidden'); var resultEl = options.searchElements.resultEl;
} if (options.hideOnNoMatches && !data.posts.length) {
}); return resultEl.addClass('hidden').find('.quick-search-results-container').html('');
}
data.posts.forEach(function (p) {
p.snippet = utils.escapeHTML($('<div>' + p.content + '</div>').text().slice(0, 80) + '...');
});
app.parseAndTranslate('partials/quick-search-results', data, function (html) {
if (html.length) {
html.find('.timeago').timeago();
}
resultEl.toggleClass('hidden', !html.length)
.find('.quick-search-results-container')
.html(html.length ? html : '');
$(window).trigger('action:search.quick.complete', {
data: data,
options: options,
});
});
});
});
}
inputEl.off('keyup').on('keyup', function () { inputEl.off('keyup').on('keyup', function () {
if (searchTimeoutId) { if (searchTimeoutId) {
@ -513,13 +534,27 @@ app.cacheBuster = null;
if (!inputEl.is(':focus')) { if (!inputEl.is(':focus')) {
return quickSearchResults.addClass('hidden'); return quickSearchResults.addClass('hidden');
} }
require(['search'], function (search) { doSearch();
options.searchOptions = options.searchOptions || { in: 'titles' };
options.searchOptions.term = inputEl.val();
search.quick(options);
});
}, 250); }, 250);
}); });
inputEl.on('blur', function () {
setTimeout(function () {
if (!inputEl.is(':focus')) {
quickSearchResults.addClass('hidden');
}
}, 200);
});
inputEl.on('focus', function () {
if (inputEl.val() && quickSearchResults.find('#quick-search-results').children().length) {
quickSearchResults.removeClass('hidden');
}
});
inputEl.off('refresh').on('refresh', function () {
doSearch();
});
}; };
app.handleSearch = function (searchOptions) { app.handleSearch = function (searchOptions) {
@ -575,7 +610,7 @@ app.cacheBuster = null;
var data = search.getSearchPreferences(); var data = search.getSearchPreferences();
data.term = input.val(); data.term = input.val();
$(window).trigger('action:search.submit', { $(window).trigger('action:search.submit', {
data: data, searchOptions: data,
searchElements: searchElements, searchElements: searchElements,
}); });
search.query(data, function () { search.query(data, function () {

@ -33,34 +33,6 @@ define('search', ['navigator', 'translator', 'storage'], function (nav, translat
}); });
}; };
Search.quick = function (options, callback) {
callback = callback || function () {};
$(window).trigger('action:search.quick.start', options);
options.searchOptions.searchOnly = 1;
Search.api(options.searchOptions, function (data) {
var resultEl = options.searchElements.resultEl;
if (options.hideOnNoMatches && !data.posts.length) {
return resultEl.addClass('hidden').find('.quick-search-results-container').html('');
}
data.posts.forEach(function (p) {
p.snippet = utils.escapeHTML($('<div>' + p.content + '</div>').text().slice(0, 80) + '...');
});
app.parseAndTranslate('partials/quick-search-results', data, function (html) {
if (html.length) {
html.find('.timeago').timeago();
resultEl.removeClass('hidden').find('.quick-search-results-container').html(html);
} else {
resultEl.addClass('hidden').find('.quick-search-results-container').html('');
}
$(window).trigger('action:search.quick.complete', {
data: data,
options: options,
});
callback();
});
});
};
function createQueryString(data) { function createQueryString(data) {
var searchIn = data.in || 'titlesposts'; var searchIn = data.in || 'titlesposts';
var postedBy = data.by || ''; var postedBy = data.by || '';

Loading…
Cancel
Save