mirror of
https://github.com/searxng/searxng
synced 2024-01-01 19:24:07 +01:00
[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>
This commit is contained in:
parent
36aee70c24
commit
56e34947a6
23 changed files with 314 additions and 121 deletions
|
|
@ -78,7 +78,7 @@ module.exports = function(grunt) {
|
|||
}
|
||||
},
|
||||
jshint: {
|
||||
files: ['gruntfile.js', 'src/js/*.js', '../__common__/js/image_layout.js'],
|
||||
files: ['gruntfile.js', 'src/js/*.js'], // files in __common__ are linted by es lint in simple theme
|
||||
options: {
|
||||
reporterOutput: "",
|
||||
esversion: 6,
|
||||
|
|
|
|||
|
|
@ -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'))
|
||||
};
|
||||
|
|
|
|||
50
searx/static/themes/oscar/src/js/infinite_scroll.js
Normal file
50
searx/static/themes/oscar/src/js/infinite_scroll.js
Normal file
|
|
@ -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();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
21
searx/static/themes/oscar/src/less/infinite_scroll.less
Normal file
21
searx/static/themes/oscar/src/less/infinite_scroll.less
Normal file
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue