var click = (!window.getSelection || getSelection().isCollapsed);
var el = event.target || event.srcElement;
while (!/^tr$/i.test(el.tagName)) {
- if (/^table$/i.test(el.tagName)) {
- return;
- }
- if (/^(a|input|textarea)$/i.test(el.tagName)) {
+ if (/^(table|a|input|textarea)$/i.test(el.tagName)) {
+ if (el.type != 'checkbox') {
+ return;
+ }
+ checkboxClick(event, el);
click = false;
}
el = el.parentNode;
trCheck(el);
}
+var lastChecked;
+
+/** Shift-click on checkbox for multiple selection.
+ * @param MouseEvent
+ * @param HTMLInputElement
+ */
+function checkboxClick(event, el) {
+ if (!el.name) {
+ return;
+ }
+ if (event.shiftKey && (!lastChecked || lastChecked.name == el.name)) {
+ var checked = (lastChecked ? lastChecked.checked : true);
+ var inputs = el.parentNode.parentNode.parentNode.getElementsByTagName('input');
+ var checking = !lastChecked;
+ for (var i=0; i < inputs.length; i++) {
+ var input = inputs[i];
+ if (input.name === el.name) {
+ if (checking) {
+ input.checked = checked;
+ trCheck(input);
+ }
+ if (input === el || input === lastChecked) {
+ if (checking) {
+ break;
+ }
+ checking = true;
+ }
+ }
+ }
+ }
+ lastChecked = el;
+}
+
/** Set HTML code of an element
* @param string
* @param string undefined to set parentNode to
Adminer 3.4.0-dev:
-Print current time next to executed SQL queries
Highlight code in SQL command by CodeMirror
Link to descending order
+Shift+click on checkbox to select consecutive rows
+Print current time next to executed SQL queries
Warn about selecting data without index
Allow specifying database in login form
Link to original table in EXPLAIN of SELECT * FROM table t