summaryrefslogtreecommitdiff
path: root/searx/static/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'searx/static/plugins')
-rw-r--r--searx/static/plugins/css/infinite_scroll.css3
-rw-r--r--searx/static/plugins/js/infinite_scroll.js46
-rw-r--r--searx/static/plugins/js/search_on_category_select.js2
-rw-r--r--searx/static/plugins/js/vim_hotkeys.js15
4 files changed, 50 insertions, 16 deletions
diff --git a/searx/static/plugins/css/infinite_scroll.css b/searx/static/plugins/css/infinite_scroll.css
index 7e0ee20f5..07b9f6de9 100644
--- a/searx/static/plugins/css/infinite_scroll.css
+++ b/searx/static/plugins/css/infinite_scroll.css
@@ -14,3 +14,6 @@
border-radius: 50% !important;
margin: 0 auto;
}
+#pagination button {
+ visibility: hidden;
+}
diff --git a/searx/static/plugins/js/infinite_scroll.js b/searx/static/plugins/js/infinite_scroll.js
index 9cd582d7f..9930880e3 100644
--- a/searx/static/plugins/js/infinite_scroll.js
+++ b/searx/static/plugins/js/infinite_scroll.js
@@ -1,18 +1,40 @@
+function hasScrollbar() {
+ var root = document.compatMode=='BackCompat'? document.body : document.documentElement;
+ return root.scrollHeight>root.clientHeight;
+}
+
+function loadNextPage() {
+ var formData = $('#pagination form:last').serialize();
+ if (formData) {
+ $('#pagination').html('<div class="loading-spinner"></div>');
+ $.ajax({
+ type: "POST",
+ url: './',
+ data: formData,
+ dataType: 'html',
+ success: function(data) {
+ var body = $(data);
+ $('#pagination').remove();
+ $('#main_results').append('<hr/>');
+ $('#main_results').append(body.find('.result'));
+ $('#main_results').append(body.find('#pagination'));
+ if(!hasScrollbar()) {
+ loadNextPage();
+ }
+ }
+ });
+ }
+}
+
$(document).ready(function() {
var win = $(window);
+ if(!hasScrollbar()) {
+ loadNextPage();
+ }
win.scroll(function() {
- if ($(document).height() - win.height() == win.scrollTop()) {
- var formData = $('#pagination form:last').serialize();
- if (formData) {
- $('#pagination').html('<div class="loading-spinner"></div>');
- $.post('./', formData, function (data) {
- var body = $(data);
- $('#pagination').remove();
- $('#main_results').append('<hr/>');
- $('#main_results').append(body.find('.result'));
- $('#main_results').append(body.find('#pagination'));
- });
- }
+ $("#pagination button").css("visibility", "hidden");
+ if ($(document).height() - win.height() - win.scrollTop() < 150) {
+ loadNextPage();
}
});
});
diff --git a/searx/static/plugins/js/search_on_category_select.js b/searx/static/plugins/js/search_on_category_select.js
index a76fd1266..1c42d9e9e 100644
--- a/searx/static/plugins/js/search_on_category_select.js
+++ b/searx/static/plugins/js/search_on_category_select.js
@@ -10,7 +10,7 @@ $(document).ready(function() {
}
return false;
});
- $('#time-range > option').click(function(e) {
+ $('#time-range').change(function(e) {
if($('#q').val()) {
$('#search_form').submit();
}
diff --git a/searx/static/plugins/js/vim_hotkeys.js b/searx/static/plugins/js/vim_hotkeys.js
index 61500d8f5..b0f265cb5 100644
--- a/searx/static/plugins/js/vim_hotkeys.js
+++ b/searx/static/plugins/js/vim_hotkeys.js
@@ -104,7 +104,7 @@ $(document).ready(function() {
}
};
- $(document).keyup(function(e) {
+ $(document).keydown(function(e) {
// check for modifiers so we don't break browser's hotkeys
if (vimKeys.hasOwnProperty(e.keyCode)
&& !e.ctrlKey
@@ -118,12 +118,21 @@ $(document).ready(function() {
}
} else {
if (e.target === document.body) {
+ e.preventDefault();
vimKeys[e.keyCode].fun();
}
}
}
});
+ function nextResult(current, direction) {
+ var next = current[direction]();
+ while (!next.is('.result') && next.length !== 0) {
+ next = next[direction]();
+ }
+ return next
+ }
+
function highlightResult(which) {
return function() {
var current = $('.result[data-vim-selected]');
@@ -156,13 +165,13 @@ $(document).ready(function() {
}
break;
case 'down':
- next = current.next('.result');
+ next = nextResult(current, 'next');
if (next.length === 0) {
next = $('.result:first');
}
break;
case 'up':
- next = current.prev('.result');
+ next = nextResult(current, 'prev');
if (next.length === 0) {
next = $('.result:last');
}