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