Merge pull request #14825 from williamdes/issue-14478-export-stream
[phpmyadmin.git] / js / shortcuts_handler.js
blob4fc3c59a7b439307b619069644dcba41727f1516
1 /* vim: set expandtab sw=4 ts=4 sts=4: */
2 /**
3  * @fileoverview    Handle shortcuts in various pages
4  * @name            Shortcuts handler
5  *
6  * @requires    jQuery
7  * @requires    jQueryUI
8  */
10 /**
11  * Register key events on load
12  */
13 $(document).ready(function () {
14     var databaseOp = false;
15     var tableOp = false;
16     var keyD = 68;
17     var keyT = 84;
18     var keyK = 75;
19     var keyS = 83;
20     var keyF = 70;
21     var keyE = 69;
22     var keyH = 72;
23     var keyC = 67;
24     var keyBackSpace = 8;
25     $(document).on('keyup', function (e) {
26         if (e.target.nodeName === 'INPUT' || e.target.nodeName === 'TEXTAREA' || e.target.nodeName === 'SELECT') {
27             return;
28         }
30         if (e.keyCode === keyD) {
31             setTimeout(function () {
32                 databaseOp = false;
33             }, 2000);
34         } else if (e.keyCode === keyT) {
35             setTimeout(function () {
36                 tableOp = false;
37             }, 2000);
38         }
39     });
40     $(document).on('keydown', function (e) {
41         if (e.ctrlKey && e.altKey && e.keyCode === keyC) {
42             PMA_console.toggle();
43         }
45         if (e.ctrlKey && e.keyCode === keyK) {
46             e.preventDefault();
47             PMA_console.toggle();
48         }
50         if (e.target.nodeName === 'INPUT' || e.target.nodeName === 'TEXTAREA' || e.target.nodeName === 'SELECT') {
51             return;
52         }
54         var isTable;
55         var isDb;
56         if (e.keyCode === keyD) {
57             databaseOp = true;
58         } else if (e.keyCode === keyK) {
59             e.preventDefault();
60             PMA_console.toggle();
61         } else if (e.keyCode === keyS) {
62             if (databaseOp === true) {
63                 isTable = PMA_commonParams.get('table');
64                 isDb = PMA_commonParams.get('db');
65                 if (isDb && ! isTable) {
66                     $('.tab .ic_b_props').first().trigger('click');
67                 }
68             } else if (tableOp === true) {
69                 isTable = PMA_commonParams.get('table');
70                 isDb = PMA_commonParams.get('db');
71                 if (isDb && isTable) {
72                     $('.tab .ic_b_props').first().trigger('click');
73                 }
74             } else {
75                 $('#pma_navigation_settings_icon').trigger('click');
76             }
77         } else if (e.keyCode === keyF) {
78             if (databaseOp === true) {
79                 isTable = PMA_commonParams.get('table');
80                 isDb = PMA_commonParams.get('db');
81                 if (isDb && ! isTable) {
82                     $('.tab .ic_b_search').first().trigger('click');
83                 }
84             } else if (tableOp === true) {
85                 isTable = PMA_commonParams.get('table');
86                 isDb = PMA_commonParams.get('db');
87                 if (isDb && isTable) {
88                     $('.tab .ic_b_search').first().trigger('click');
89                 }
90             }
91         } else if (e.keyCode === keyT) {
92             tableOp = true;
93         } else if (e.keyCode === keyE) {
94             $('.ic_b_export').first().trigger('click');
95         } else if (e.keyCode === keyBackSpace) {
96             window.history.back();
97         } else if (e.keyCode === keyH) {
98             $('.ic_b_home').first().trigger('click');
99         }
100     });