summaryrefslogtreecommitdiff
path: root/searx/static/themes/oscar/src/js/infinite_scroll.js
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2022-02-21 12:49:04 +0100
committerGitHub <noreply@github.com>2022-02-21 12:49:04 +0100
commit8230603f4834003c79938b472d1f6328b1af2ae8 (patch)
tree39ec6d65a8e04ba56fb1ba6f91cd8df068a85129 /searx/static/themes/oscar/src/js/infinite_scroll.js
parent6c38bb599447db8cbe3436e4c3596ca0f4574080 (diff)
parent1832ec742a378f0fd2162e3c07b7c279544c86f8 (diff)
Merge pull request #916 from dalf/pref_infinite_scroll2
Convert the infinite_scroll plugin as a preference (second version)
Diffstat (limited to 'searx/static/themes/oscar/src/js/infinite_scroll.js')
-rw-r--r--searx/static/themes/oscar/src/js/infinite_scroll.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/searx/static/themes/oscar/src/js/infinite_scroll.js b/searx/static/themes/oscar/src/js/infinite_scroll.js
new file mode 100644
index 000000000..6dbff5fef
--- /dev/null
+++ b/searx/static/themes/oscar/src/js/infinite_scroll.js
@@ -0,0 +1,50 @@
+/**
+ * @license
+ * (C) Copyright Contributors to the SearXNG project.
+ * (C) Copyright Contributors to the searx project (2014 - 2021).
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+$(document).ready(function() {
+ 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: $('#search_form').prop('action'),
+ 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();
+ }
+ }
+ });
+ }
+ }
+
+ if (searxng.infinite_scroll) {
+ var win = $(window);
+ $("html").addClass('infinite_scroll');
+ if(!hasScrollbar()) {
+ loadNextPage();
+ }
+ win.on('scroll', function() {
+ if ($(document).height() - win.height() - win.scrollTop() < 150) {
+ loadNextPage();
+ }
+ });
+ }
+
+});