summaryrefslogtreecommitdiff
path: root/htroot/index.html
diff options
context:
space:
mode:
authorluccioman <luccioman@users.noreply.github.com>2018-05-22 07:55:09 +0200
committerluccioman <luccioman@users.noreply.github.com>2018-05-22 07:55:09 +0200
commit1dfd3e9dde75003fa62fd853b6a1ee96f2e669bc (patch)
tree0af00400da281ab149b68f12e7e7c50c7a3d6344 /htroot/index.html
parent84d82bfdd7aff2a086e6f1fcd7f75ebff43b4741 (diff)
Limit the rate of calls to the suggest API when typing in search field
Diffstat (limited to 'htroot/index.html')
-rw-r--r--htroot/index.html47
1 files changed, 27 insertions, 20 deletions
diff --git a/htroot/index.html b/htroot/index.html
index 59659a78e..fb4678334 100644
--- a/htroot/index.html
+++ b/htroot/index.html
@@ -6,32 +6,39 @@
#%env/templates/metas.template%#
<link rel="alternate" type="application/rss+xml" title="Search for #[former]#" href="yacysearch.rss?query=#[former]#" />
<link rel="search" type="application/opensearchdescription+xml" title="YaCy '#[clientname]#'" href="opensearchdescription.xml" />
- <script type="text/javascript" src="env/bootstrap/js/typeahead.jquery.min.js"></script>
+ <script type="text/javascript" src="env/bootstrap/js/typeahead.jquery.js"></script>
<script type="text/javascript" src="js/html.js"></script>
<script type="text/javascript">
- var suggestMatcher = function() {
- return function opensearch(q, cb) {
- $.getJSON("suggest.json?q=" + q, function(data) {
- var parsed = [];
- for (var i = 0; i < data[1].length; i++) {
- var row = data[1][i];
- if (row) {
- parsed[parsed.length] = {
- data: [row],
- value: row,
- result: row
- };
- };
- };
- cb(parsed);
- });
- };
- };
$(document).ready(function() {
+ var suggestTimeoutId = null;
+
+ /* Configure the search input field to get suggestions on key strokes */
$('#search').typeahead({hint:false,highlight:true,minLength:1}, {
name: 'states',
displayKey: 'value',
- source: suggestMatcher()
+ source: function(query, render) {
+ if(suggestTimeoutId != null) {
+ /* Remove delayed call not yet done */
+ clearTimeout(suggestTimeoutId);
+ }
+ /* Limit the rate of calls to the suggest API by adding a delay before effective call */
+ suggestTimeoutId = setTimeout(function() {
+ $.getJSON("suggest.json?q=" + query, function(data) {
+ var parsed = [];
+ for (var i = 0; i < data[1].length; i++) {
+ var row = data[1][i];
+ if (row) {
+ parsed[parsed.length] = {
+ data: [row],
+ value: row,
+ result: row
+ };
+ };
+ };
+ render(parsed);
+ });
+ }, 300);
+ }
});
});
</script>