111 lines
3.2 KiB
JavaScript
111 lines
3.2 KiB
JavaScript
|
/**
|
||
|
* @fileoverview Handle shortcuts in various pages
|
||
|
* @name Shortcuts handler
|
||
|
*
|
||
|
* @requires jQuery
|
||
|
* @requires jQueryUI
|
||
|
*/
|
||
|
|
||
|
/* global Console */ // js/console.js
|
||
|
|
||
|
/**
|
||
|
* Register key events on load
|
||
|
*/
|
||
|
$(function () {
|
||
|
var databaseOp = false;
|
||
|
var tableOp = false;
|
||
|
var keyD = 68;
|
||
|
var keyT = 84;
|
||
|
var keyK = 75;
|
||
|
var keyS = 83;
|
||
|
var keyF = 70;
|
||
|
var keyE = 69;
|
||
|
var keyH = 72;
|
||
|
var keyC = 67;
|
||
|
var keyBackSpace = 8;
|
||
|
$(document).on('keyup', function (e) {
|
||
|
// is a string but is also a boolean according to https://api.jquery.com/prop/
|
||
|
if ($(e.target).prop('contenteditable') === 'true' || $(e.target).prop('contenteditable') === true) {
|
||
|
return;
|
||
|
}
|
||
|
if (e.target.nodeName === 'INPUT' || e.target.nodeName === 'TEXTAREA' || e.target.nodeName === 'SELECT') {
|
||
|
return;
|
||
|
}
|
||
|
if (e.keyCode === keyD) {
|
||
|
setTimeout(function () {
|
||
|
databaseOp = false;
|
||
|
}, 2000);
|
||
|
} else if (e.keyCode === keyT) {
|
||
|
setTimeout(function () {
|
||
|
tableOp = false;
|
||
|
}, 2000);
|
||
|
}
|
||
|
});
|
||
|
$(document).on('keydown', function (e) {
|
||
|
// is a string but is also a boolean according to https://api.jquery.com/prop/
|
||
|
if ($(e.target).prop('contenteditable') === 'true' || $(e.target).prop('contenteditable') === true) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// disable the shortcuts when session has timed out.
|
||
|
if ($('#modalOverlay').length > 0) {
|
||
|
return;
|
||
|
}
|
||
|
if (e.ctrlKey && e.altKey && e.keyCode === keyC) {
|
||
|
Console.toggle();
|
||
|
}
|
||
|
if (e.ctrlKey && e.keyCode === keyK) {
|
||
|
e.preventDefault();
|
||
|
Console.toggle();
|
||
|
}
|
||
|
if (e.target.nodeName === 'INPUT' || e.target.nodeName === 'TEXTAREA' || e.target.nodeName === 'SELECT') {
|
||
|
return;
|
||
|
}
|
||
|
var isTable;
|
||
|
var isDb;
|
||
|
if (e.keyCode === keyD) {
|
||
|
databaseOp = true;
|
||
|
} else if (e.keyCode === keyK) {
|
||
|
e.preventDefault();
|
||
|
Console.toggle();
|
||
|
} else if (e.keyCode === keyS) {
|
||
|
if (databaseOp === true) {
|
||
|
isTable = CommonParams.get('table');
|
||
|
isDb = CommonParams.get('db');
|
||
|
if (isDb && !isTable) {
|
||
|
$('.nav-link .ic_b_props').first().trigger('click');
|
||
|
}
|
||
|
} else if (tableOp === true) {
|
||
|
isTable = CommonParams.get('table');
|
||
|
isDb = CommonParams.get('db');
|
||
|
if (isDb && isTable) {
|
||
|
$('.nav-link .ic_b_props').first().trigger('click');
|
||
|
}
|
||
|
} else {
|
||
|
$('#pma_navigation_settings_icon').trigger('click');
|
||
|
}
|
||
|
} else if (e.keyCode === keyF) {
|
||
|
if (databaseOp === true) {
|
||
|
isTable = CommonParams.get('table');
|
||
|
isDb = CommonParams.get('db');
|
||
|
if (isDb && !isTable) {
|
||
|
$('.nav-link .ic_b_search').first().trigger('click');
|
||
|
}
|
||
|
} else if (tableOp === true) {
|
||
|
isTable = CommonParams.get('table');
|
||
|
isDb = CommonParams.get('db');
|
||
|
if (isDb && isTable) {
|
||
|
$('.nav-link .ic_b_search').first().trigger('click');
|
||
|
}
|
||
|
}
|
||
|
} else if (e.keyCode === keyT) {
|
||
|
tableOp = true;
|
||
|
} else if (e.keyCode === keyE) {
|
||
|
$('.ic_b_export').first().trigger('click');
|
||
|
} else if (e.keyCode === keyBackSpace) {
|
||
|
window.history.back();
|
||
|
} else if (e.keyCode === keyH) {
|
||
|
$('.ic_b_home').first().trigger('click');
|
||
|
}
|
||
|
});
|
||
|
});
|