diff --git a/.eslintrc b/.eslintrc index 9faa37508e5..de99afaf3ef 100644 --- a/.eslintrc +++ b/.eslintrc @@ -9,6 +9,9 @@ env: jquery: true node: true +parseOptions: + sourceType: module + # http://eslint.org/docs/rules/ rules: # Possible Errors diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index d7f2a1253c3..d4062681568 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -15,6 +15,7 @@ // //= require jquery //= require jquery_ujs +//= require debounce/index.js //= require bootstrap/dist/js/bootstrap.min.js //= require bootstrap-3-typeahead/bootstrap3-typeahead.min.js //= require bootstrap-datepicker/dist/js/bootstrap-datepicker.js diff --git a/app/assets/javascripts/atwho_autocomplete.js b/app/assets/javascripts/atwho_autocomplete.js index 65684e1ea52..4ffe8dc8c12 100644 --- a/app/assets/javascripts/atwho_autocomplete.js +++ b/app/assets/javascripts/atwho_autocomplete.js @@ -5,13 +5,13 @@ at: "@", delay: 400, callbacks: { - remoteFilter: function(query, callback) { + remoteFilter: debounce(function(query, callback) { $.getJSON("/api/srch/profiles?query=" + query + "&sort_by=recent&field=username", {}, function(data) { if (data.hasOwnProperty('items') && data.items.length > 0) { callback(data.items.map(function(i) { return i.doc_title })); } }); - } + }, 200) }, limit: 20 }, @@ -19,13 +19,13 @@ at: "#", delay: 400, callbacks: { - remoteFilter: function(query, callback) { + remoteFilter: debounce(function(query, callback) { if (query != ''){ $.post('/tag/suggested/' + query, {}, function(response) { callback(response.map(function(tagnames){ return tagnames })); }); } - } + }, 200) }, limit: 20 }, diff --git a/app/assets/javascripts/restful_typeahead.js b/app/assets/javascripts/restful_typeahead.js index b4e7a0a33e2..fe168b40b99 100644 --- a/app/assets/javascripts/restful_typeahead.js +++ b/app/assets/javascripts/restful_typeahead.js @@ -10,16 +10,15 @@ $(function() { var typeahead = $(el).typeahead({ items: 10, minLength: 3, - delay: 350, showCategoryHeader: true, autoSelect: false, - source: function (query, process) { + source: debounce(function (query, process) { var encoded_query = encodeURIComponent(query); var qryType = $(el).attr('qryType'); return $.getJSON('/api/srch/' + qryType + '?query=' + encoded_query, function (data) { return process(data.items); },'json'); - }, + }, 350), highlighter: function (text, item) { return item.doc_title; }, diff --git a/app/views/editor/rich.html.erb b/app/views/editor/rich.html.erb index de091cda7c6..84addd27061 100644 --- a/app/views/editor/rich.html.erb +++ b/app/views/editor/rich.html.erb @@ -328,7 +328,7 @@ titleModule: { suggestRelated: true, - fetchRelated: function(show) { + fetchRelated: debounce(function(show) { $.getJSON("/api/srch/notes?query=" + editor.titleModule.value(), function(response) { /* API provides: {"items":[{ @@ -353,7 +353,7 @@ show(formatted); } }); - } + }, 350) }, tagsModule: { diff --git a/package.json b/package.json index 1ad5e281516..7a89a840f24 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "bootstrap-tokenfield": "^0.12.0", "chart.js": "^2.7.0", "cytoscape": "^3.5.0", + "debounce": "^1.2.0", "file-saver": "^2.0.0", "font-awesome": "^4.5.0", "i18n-js": "^3.2.1", diff --git a/yarn.lock b/yarn.lock index f37e91ce346..f9cf705fd41 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1014,6 +1014,11 @@ dateformat@1.0.2-1.2.3: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.2-1.2.3.tgz#b0220c02de98617433b72851cf47de3df2cdbee9" integrity sha1-sCIMAt6YYXQztyhRz0fePfLNvuk= +debounce@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" + integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== + debug@0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39"