[mod] simple theme: fix eslint errors, fix VIM keys

* VIM keys: fix the next page and previous pages (n, p keys)
* Map: Enable the wikipedia map (the layer was initialized but not included)
This commit is contained in:
Alexandre Flament 2021-08-24 11:31:29 +02:00
parent 183c856396
commit f77f797f8c
7 changed files with 56 additions and 50 deletions

View file

@ -15,6 +15,7 @@
* (C) 2019 by Alexandre Flament * (C) 2019 by Alexandre Flament
* *
*/ */
/* global DocumentTouch:readonly */
(function(w, d) { (function(w, d) {
'use strict'; 'use strict';

View file

@ -70,7 +70,7 @@ window.searx = (function(w, d) {
} }
}; };
searx.http = function(method, url, callback) { searx.http = function(method, url) {
var req = new XMLHttpRequest(), var req = new XMLHttpRequest(),
resolve = function() {}, resolve = function() {},
reject = function() {}, reject = function() {},
@ -148,15 +148,14 @@ window.searx = (function(w, d) {
}; };
searx.insertBefore = function (newNode, referenceNode) { searx.insertBefore = function (newNode, referenceNode) {
element.parentNode.insertBefore(newNode, referenceNode); referenceNode.parentNode.insertBefore(newNode, referenceNode);
}; };
searx.insertAfter = function(newNode, referenceNode) { searx.insertAfter = function(newNode, referenceNode) {
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); referenceNode.parentNode.insertAfter(newNode, referenceNode.nextSibling);
}; };
searx.on('.close', 'click', function(e) { searx.on('.close', 'click', function() {
var el = e.target || e.srcElement;
this.parentNode.classList.add('invisible'); this.parentNode.classList.add('invisible');
}); });

View file

@ -1,3 +1,5 @@
/*global searx*/
searx.ready(function() { searx.ready(function() {
searx.on('.result', 'click', function() { searx.on('.result', 'click', function() {
@ -80,13 +82,13 @@ searx.ready(function() {
}, },
80: { 80: {
key: 'p', key: 'p',
fun: pageButtonClick(0), fun: GoToPreviousPage(),
des: 'go to previous page', des: 'go to previous page',
cat: 'Results' cat: 'Results'
}, },
78: { 78: {
key: 'n', key: 'n',
fun: pageButtonClick(1), fun: GoToNextPage(),
des: 'go to next page', des: 'go to next page',
cat: 'Results' cat: 'Results'
}, },
@ -118,7 +120,7 @@ searx.ready(function() {
searx.on(document, "keydown", function(e) { searx.on(document, "keydown", function(e) {
// check for modifiers so we don't break browser's hotkeys // check for modifiers so we don't break browser's hotkeys
if (vimKeys.hasOwnProperty(e.keyCode) && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) { if (Object.prototype.hasOwnProperty.call(vimKeys, e.keyCode) && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {
var tagName = e.target.tagName.toLowerCase(); var tagName = e.target.tagName.toLowerCase();
if (e.keyCode === 27) { if (e.keyCode === 27) {
if (tagName === 'input' || tagName === 'select' || tagName === 'textarea') { if (tagName === 'input' || tagName === 'select' || tagName === 'textarea') {
@ -216,21 +218,23 @@ searx.ready(function() {
} }
} }
function pageButtonClick(num) { function pageButtonClick(css_selector) {
return function() { return function() {
var buttons = $('div#pagination button[type="submit"]'); var button = document.querySelector(css_selector);
if (buttons.length !== 2) { if (button) {
console.log('page navigation with this theme is not supported'); button.click();
return;
}
if (num >= 0 && num < buttons.length) {
buttons[num].click();
} else {
console.log('pageButtonClick(): invalid argument');
} }
}; };
} }
function GoToNextPage() {
return pageButtonClick('nav#pagination .next_page button[type="submit"]');
}
function GoToPreviousPage() {
return pageButtonClick('nav#pagination .previous_page button[type="submit"]');
}
function scrollPageToSelected() { function scrollPageToSelected() {
var sel = document.querySelector('.result[data-vim-selected]'); var sel = document.querySelector('.result[data-vim-selected]');
if (sel === null) { if (sel === null) {
@ -308,9 +312,9 @@ searx.ready(function() {
return; return;
} }
var html = '<a href="#" class="close" aria-label="close" title="close">×</a>'; var html = '<a href="#" class="close" aria-label="close" title="close">×</a>';
html += '<h3>How to navigate searx with Vim-like hotkeys</h3>'; html += '<h3>How to navigate searx with Vim-like hotkeys</h3>';
html += '<table>'; html += '<table>';
for (var i = 0; i < sorted.length; i++) { for (var i = 0; i < sorted.length; i++) {
var cat = categories[sorted[i]]; var cat = categories[sorted[i]];
@ -338,29 +342,29 @@ searx.ready(function() {
} }
} }
html += '</table>'; html += '</table>';
divElement.innerHTML = html;
}
function toggleHelp() {
var helpPanel = document.querySelector('#vim-hotkeys-help');
console.log(helpPanel);
if (helpPanel === undefined || helpPanel === null) {
// first call
helpPanel = document.createElement('div');
helpPanel.id = 'vim-hotkeys-help';
helpPanel.className='dialog-modal';
helpPanel.style='width: 40%';
initHelpContent(helpPanel);
var body = document.getElementsByTagName('body')[0];
body.appendChild(helpPanel);
} else {
// togggle hidden
helpPanel.classList.toggle('invisible');
return;
}
divElement.innerHTML = html;
} }
function toggleHelp() {
var helpPanel = document.querySelector('#vim-hotkeys-help');
console.log(helpPanel);
if (helpPanel === undefined || helpPanel === null) {
// first call
helpPanel = document.createElement('div');
helpPanel.id = 'vim-hotkeys-help';
helpPanel.className='dialog-modal';
helpPanel.style='width: 40%';
initHelpContent(helpPanel);
initHelpContent(helpPanel);
initHelpContent(helpPanel);
var body = document.getElementsByTagName('body')[0];
body.appendChild(helpPanel);
} else {
// togggle hidden
helpPanel.classList.toggle('invisible');
return;
}
}
}); });

View file

@ -15,6 +15,7 @@
* (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at> * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
* (C) 2017 by Alexandre Flament, <alex@al-f.net> * (C) 2017 by Alexandre Flament, <alex@al-f.net>
*/ */
/* global L */
(function (w, d, searx) { (function (w, d, searx) {
'use strict'; 'use strict';
@ -47,7 +48,7 @@
var osmMapnikAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors'; var osmMapnikAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib}); var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib});
var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png'; var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png';
var osmWikimediaAttrib = 'Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors'; var osmWikimediaAttrib = 'Wikimedia maps | Maps data © <a href="https://openstreetmap.org">OpenStreetMap contributors</a>';
var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib}); var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib});
// init map view // init map view
if(map_bounds) { if(map_bounds) {
@ -69,8 +70,8 @@
map.addLayer(osmMapnik); map.addLayer(osmMapnik);
var baseLayers = { var baseLayers = {
"OSM Mapnik": osmMapnik/*, "OSM Mapnik": osmMapnik,
"OSM Wikimedia": osmWikimedia*/ "OSM Wikimedia": osmWikimedia,
}; };
L.control.layers(baseLayers).addTo(map); L.control.layers(baseLayers).addTo(map);

View file

@ -21,7 +21,7 @@
searx.image_thumbnail_layout = new searx.ImageLayout('#urls', '#urls .result-images', 'img.image_thumbnail', 10, 200); searx.image_thumbnail_layout = new searx.ImageLayout('#urls', '#urls .result-images', 'img.image_thumbnail', 10, 200);
searx.image_thumbnail_layout.watch(); searx.image_thumbnail_layout.watch();
searx.on('.btn-collapse', 'click', function(event) { searx.on('.btn-collapse', 'click', function() {
var btnLabelCollapsed = this.getAttribute('data-btn-text-collapsed'); var btnLabelCollapsed = this.getAttribute('data-btn-text-collapsed');
var btnLabelNotCollapsed = this.getAttribute('data-btn-text-not-collapsed'); var btnLabelNotCollapsed = this.getAttribute('data-btn-text-not-collapsed');
var target = this.getAttribute('data-target'); var target = this.getAttribute('data-target');
@ -37,7 +37,7 @@
targetElement.classList.toggle('invisible'); targetElement.classList.toggle('invisible');
}); });
searx.on('.media-loader', 'click', function(event) { searx.on('.media-loader', 'click', function() {
var target = this.getAttribute('data-target'); var target = this.getAttribute('data-target');
var iframe_load = d.querySelector(target + ' > iframe'); var iframe_load = d.querySelector(target + ' > iframe');
var srctest = iframe_load.getAttribute('src'); var srctest = iframe_load.getAttribute('src');

View file

@ -14,6 +14,7 @@
* *
* (C) 2017 by Alexandre Flament, <alex@al-f.net> * (C) 2017 by Alexandre Flament, <alex@al-f.net>
*/ */
/* global AutoComplete */
(function(w, d, searx) { (function(w, d, searx) {
'use strict'; 'use strict';
@ -56,7 +57,7 @@
searx.ready(function() { searx.ready(function() {
qinput = d.getElementById(qinput_id); qinput = d.getElementById(qinput_id);
function placeCursorAtEndOnce(e) { function placeCursorAtEndOnce() {
if (firstFocus) { if (firstFocus) {
placeCursorAtEnd(qinput); placeCursorAtEnd(qinput);
firstFocus = false; firstFocus = false;
@ -98,7 +99,7 @@
if (qinput !== null && searx.search_on_category_select) { if (qinput !== null && searx.search_on_category_select) {
d.querySelector('.help').className='invisible'; d.querySelector('.help').className='invisible';
searx.on('#categories input', 'change', function(e) { searx.on('#categories input', 'change', function() {
var i, categories = d.querySelectorAll('#categories input[type="checkbox"]'); var i, categories = d.querySelectorAll('#categories input[type="checkbox"]');
for(i=0; i<categories.length; i++) { for(i=0; i<categories.length; i++) {
if (categories[i] !== this && categories[i].checked) { if (categories[i] !== this && categories[i].checked) {

View file

@ -146,7 +146,7 @@
{% if paging %} {% if paging %}
<nav id="pagination"> <nav id="pagination">
{% if pageno > 1 %} {% if pageno > 1 %}
<form method="{{ method or 'POST' }}" action="{{ url_for('search') }}"> <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" class="previous_page">
<div class="{% if rtl %}right{% else %}left{% endif %}"> <div class="{% if rtl %}right{% else %}left{% endif %}">
<input type="hidden" name="q" value="{{ q|e }}" > <input type="hidden" name="q" value="{{ q|e }}" >
{{- engine_data_form(engine_data) -}} {{- engine_data_form(engine_data) -}}
@ -163,7 +163,7 @@
</div> </div>
</form> </form>
{% endif %} {% endif %}
<form method="{{ method or 'POST' }}" action="{{ url_for('search') }}"> <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" class="next_page">
<div class="{% if rtl %}left{% else %}right{% endif %}"> <div class="{% if rtl %}left{% else %}right{% endif %}">
<input type="hidden" name="q" value="{{ q|e }}" > <input type="hidden" name="q" value="{{ q|e }}" >
{{- engine_data_form(engine_data) -}} {{- engine_data_form(engine_data) -}}