summaryrefslogtreecommitdiff
path: root/searx/static/themes/oscar/src
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2022-01-23 11:37:57 +0100
committerAlexandre Flament <alex@al-f.net>2022-02-20 22:58:51 +0100
commit56e34947a6368e6154064c52fa23d21ecda7ab4c (patch)
treebad1463a0c3056896cfacb205039586b85a2c04d /searx/static/themes/oscar/src
parent36aee70c247fe347c69abb17ec3bdc31781204c6 (diff)
[mod] infinite_scroll as preference
* oscar theme: code from searx/plugins/infinite_scroll.py * simple theme: new implementation Co-authored-by: Markus Heiser <markus.heiser@darmarIT.de>
Diffstat (limited to 'searx/static/themes/oscar/src')
-rw-r--r--searx/static/themes/oscar/src/js/01_init.js1
-rw-r--r--searx/static/themes/oscar/src/js/infinite_scroll.js50
-rw-r--r--searx/static/themes/oscar/src/less/infinite_scroll.less21
-rw-r--r--searx/static/themes/oscar/src/less/logicodev-dark/oscar.less1
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/oscar.less1
-rw-r--r--searx/static/themes/oscar/src/less/pointhi/oscar.less1
6 files changed, 75 insertions, 0 deletions
diff --git a/searx/static/themes/oscar/src/js/01_init.js b/searx/static/themes/oscar/src/js/01_init.js
index 8853d9909..f72b0078b 100644
--- a/searx/static/themes/oscar/src/js/01_init.js
+++ b/searx/static/themes/oscar/src/js/01_init.js
@@ -19,6 +19,7 @@ window.searxng = (function(d) {
return {
autocompleter: script.getAttribute('data-autocompleter') === 'true',
+ infinite_scroll: script.getAttribute('data-infinite-scroll') === 'true',
method: script.getAttribute('data-method'),
translations: JSON.parse(script.getAttribute('data-translations'))
};
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();
+ }
+ });
+ }
+
+});
diff --git a/searx/static/themes/oscar/src/less/infinite_scroll.less b/searx/static/themes/oscar/src/less/infinite_scroll.less
new file mode 100644
index 000000000..f66373651
--- /dev/null
+++ b/searx/static/themes/oscar/src/less/infinite_scroll.less
@@ -0,0 +1,21 @@
+@keyframes rotate-forever {
+ 0% { transform: rotate(0deg) }
+ 100% { transform: rotate(360deg) }
+}
+
+.loading-spinner {
+ animation-duration: 0.75s;
+ animation-iteration-count: infinite;
+ animation-name: rotate-forever;
+ animation-timing-function: linear;
+ height: 30px;
+ width: 30px;
+ border: 8px solid #666;
+ border-right-color: transparent;
+ border-radius: 50% !important;
+ margin: 0 auto;
+}
+
+html.infinite_scroll #pagination button {
+ visibility: hidden;
+}
diff --git a/searx/static/themes/oscar/src/less/logicodev-dark/oscar.less b/searx/static/themes/oscar/src/less/logicodev-dark/oscar.less
index 14f23111f..71821a259 100644
--- a/searx/static/themes/oscar/src/less/logicodev-dark/oscar.less
+++ b/searx/static/themes/oscar/src/less/logicodev-dark/oscar.less
@@ -4,6 +4,7 @@
@import "../../../../__common__/less/result_templates.less";
@import "../../less/result_templates.less";
@import "../../less/preferences.less";
+@import "../infinite_scroll.less";
@import "../../generated/pygments-logicodev.less";
@stacked-bar-chart: rgb(213, 216, 215, 1);
diff --git a/searx/static/themes/oscar/src/less/logicodev/oscar.less b/searx/static/themes/oscar/src/less/logicodev/oscar.less
index 187368f71..61e03745b 100644
--- a/searx/static/themes/oscar/src/less/logicodev/oscar.less
+++ b/searx/static/themes/oscar/src/less/logicodev/oscar.less
@@ -4,6 +4,7 @@
@import "../../../../__common__/less/result_templates.less";
@import "../../less/result_templates.less";
@import "../../less/preferences.less";
+@import "../infinite_scroll.less";
@import "../../generated/pygments-logicodev.less";
@import "navbar.less";
diff --git a/searx/static/themes/oscar/src/less/pointhi/oscar.less b/searx/static/themes/oscar/src/less/pointhi/oscar.less
index e9851458d..d54fa28d9 100644
--- a/searx/static/themes/oscar/src/less/pointhi/oscar.less
+++ b/searx/static/themes/oscar/src/less/pointhi/oscar.less
@@ -4,6 +4,7 @@
@import "../../../../__common__/less/result_templates.less";
@import "../../less/result_templates.less";
@import "../../less/preferences.less";
+@import "../infinite_scroll.less";
@import "../../generated/pygments-pointhi.less";
@import "footer.less";