JavaScript comments
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1275 7c3ca157-0c34-0410-bff1-cbf682f78f5c
This commit is contained in:
parent
d0d1cc2b13
commit
04770321d8
|
@ -52,7 +52,7 @@ foreach (table_status() as $row) {
|
||||||
?>
|
?>
|
||||||
<div id="schema" style="height: <?php echo $top; ?>em;">
|
<div id="schema" style="height: <?php echo $top; ?>em;">
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
table_pos = {<?php echo implode(",", $table_pos_js) . "\n"; ?>};
|
tablePos = {<?php echo implode(",", $table_pos_js) . "\n"; ?>};
|
||||||
em = document.getElementById('schema').offsetHeight / <?php echo $top; ?>;
|
em = document.getElementById('schema').offsetHeight / <?php echo $top; ?>;
|
||||||
document.onmousemove = schemaMousemove;
|
document.onmousemove = schemaMousemove;
|
||||||
document.onmouseup = schemaMouseup;
|
document.onmouseup = schemaMouseup;
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
// Adminer specific functions
|
// Adminer specific functions
|
||||||
|
|
||||||
|
/** Load syntax highlighting
|
||||||
|
* @param string first three characters of MySQL version
|
||||||
|
*/
|
||||||
function bodyLoad(version) {
|
function bodyLoad(version) {
|
||||||
var jushRoot = '../externals/jush/';
|
var jushRoot = '../externals/jush/';
|
||||||
var script = document.createElement('script');
|
var script = document.createElement('script');
|
||||||
|
@ -24,10 +27,19 @@ function bodyLoad(version) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** Get value of select
|
||||||
|
* @param HTMLSelectElement
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
function selectValue(select) {
|
function selectValue(select) {
|
||||||
return select.value || select.options[select.selectedIndex].text;
|
return select.value || select.options[select.selectedIndex].text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Get value of dynamically created form field
|
||||||
|
* @param HTMLFormElement
|
||||||
|
* @param string
|
||||||
|
* @return HTMLElement
|
||||||
|
*/
|
||||||
function formField(form, name) {
|
function formField(form, name) {
|
||||||
for (var i=0; i < form.length; i++) {
|
for (var i=0; i < form.length; i++) {
|
||||||
if (form[i].name == name) {
|
if (form[i].name == name) {
|
||||||
|
@ -36,6 +48,10 @@ function formField(form, name) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Try to change input type to password or to text
|
||||||
|
* @param HTMLInputElement
|
||||||
|
* @param boolean
|
||||||
|
*/
|
||||||
function typePassword(el, disable) {
|
function typePassword(el, disable) {
|
||||||
try {
|
try {
|
||||||
el.type = (disable ? 'text' : 'password');
|
el.type = (disable ? 'text' : 'password');
|
||||||
|
@ -47,14 +63,25 @@ function typePassword(el, disable) {
|
||||||
|
|
||||||
var added = '.', rowCount;
|
var added = '.', rowCount;
|
||||||
|
|
||||||
|
/** Escape string to use in regular expression
|
||||||
|
* @param string
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
function reEscape(s) {
|
function reEscape(s) {
|
||||||
return s.replace(/[\[\]\\^$*+?.(){|}]/, '\\$&');
|
return s.replace(/[\[\]\\^$*+?.(){|}]/, '\\$&');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Escape string to use as identifier
|
||||||
|
* @param string
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
function idfEscape(s) {
|
function idfEscape(s) {
|
||||||
return '`' + s.replace(/`/, '``') + '`';
|
return '`' + s.replace(/`/, '``') + '`';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Detect foreign key
|
||||||
|
* @param HTMLInputElement
|
||||||
|
*/
|
||||||
function editingNameChange(field) {
|
function editingNameChange(field) {
|
||||||
var name = field.name.substr(0, field.name.length - 7);
|
var name = field.name.substr(0, field.name.length - 7);
|
||||||
var type = formField(field.form, name + '[type]');
|
var type = formField(field.form, name + '[type]');
|
||||||
|
@ -94,6 +121,12 @@ function editingNameChange(field) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Add table row for next field
|
||||||
|
* @param HTMLInputElement
|
||||||
|
* @param boolean
|
||||||
|
* @param boolean
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
function editingAddRow(button, allowed, focus) {
|
function editingAddRow(button, allowed, focus) {
|
||||||
if (allowed && rowCount >= allowed) {
|
if (allowed && rowCount >= allowed) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -139,6 +172,10 @@ function editingAddRow(button, allowed, focus) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Remove table row for field
|
||||||
|
* @param HTMLInputElement
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
function editingRemoveRow(button) {
|
function editingRemoveRow(button) {
|
||||||
var field = formField(button.form, button.name.replace(/drop_col(.+)/, 'fields$1[field]'));
|
var field = formField(button.form, button.name.replace(/drop_col(.+)/, 'fields$1[field]'));
|
||||||
field.parentNode.removeChild(field);
|
field.parentNode.removeChild(field);
|
||||||
|
@ -147,6 +184,10 @@ function editingRemoveRow(button) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var lastType = '';
|
var lastType = '';
|
||||||
|
|
||||||
|
/** Clear length and hide collation or unsigned
|
||||||
|
* @param HTMLSelectElement
|
||||||
|
*/
|
||||||
function editingTypeChange(type) {
|
function editingTypeChange(type) {
|
||||||
var name = type.name.substr(0, type.name.length - 6);
|
var name = type.name.substr(0, type.name.length - 6);
|
||||||
var text = selectValue(type);
|
var text = selectValue(type);
|
||||||
|
@ -167,6 +208,9 @@ function editingTypeChange(type) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Edit enum or set
|
||||||
|
* @param HTMLInputElement
|
||||||
|
*/
|
||||||
function editingLengthFocus(field) {
|
function editingLengthFocus(field) {
|
||||||
var td = field.parentNode;
|
var td = field.parentNode;
|
||||||
if (/(enum|set)$/.test(selectValue(td.previousSibling.firstChild))) {
|
if (/(enum|set)$/.test(selectValue(td.previousSibling.firstChild))) {
|
||||||
|
@ -180,6 +224,9 @@ function editingLengthFocus(field) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Finish editing of enum or set
|
||||||
|
* @param HTMLTextAreaElement
|
||||||
|
*/
|
||||||
function editingLengthBlur(edit) {
|
function editingLengthBlur(edit) {
|
||||||
var field = edit.parentNode.firstChild;
|
var field = edit.parentNode.firstChild;
|
||||||
var val = edit.value;
|
var val = edit.value;
|
||||||
|
@ -188,6 +235,10 @@ function editingLengthBlur(edit) {
|
||||||
edit.style.display = 'none';
|
edit.style.display = 'none';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Show or hide selected table column
|
||||||
|
* @param boolean
|
||||||
|
* @param number
|
||||||
|
*/
|
||||||
function columnShow(checked, column) {
|
function columnShow(checked, column) {
|
||||||
var trs = document.getElementById('edit-fields').getElementsByTagName('tr');
|
var trs = document.getElementById('edit-fields').getElementsByTagName('tr');
|
||||||
for (var i=0; i < trs.length; i++) {
|
for (var i=0; i < trs.length; i++) {
|
||||||
|
@ -195,12 +246,18 @@ function columnShow(checked, column) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Display partition options
|
||||||
|
* @param HTMLSelectElement
|
||||||
|
*/
|
||||||
function partitionByChange(el) {
|
function partitionByChange(el) {
|
||||||
var partitionTable = /RANGE|LIST/.test(selectValue(el));
|
var partitionTable = /RANGE|LIST/.test(selectValue(el));
|
||||||
el.form['partitions'].className = (partitionTable || !el.selectedIndex ? 'hidden' : '');
|
el.form['partitions'].className = (partitionTable || !el.selectedIndex ? 'hidden' : '');
|
||||||
document.getElementById('partition-table').className = (partitionTable ? '' : 'hidden');
|
document.getElementById('partition-table').className = (partitionTable ? '' : 'hidden');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Add next partition row
|
||||||
|
* @param HTMLInputElement
|
||||||
|
*/
|
||||||
function partitionNameChange(el) {
|
function partitionNameChange(el) {
|
||||||
var row = el.parentNode.parentNode.cloneNode(true);
|
var row = el.parentNode.parentNode.cloneNode(true);
|
||||||
row.firstChild.firstChild.value = '';
|
row.firstChild.firstChild.value = '';
|
||||||
|
@ -210,6 +267,9 @@ function partitionNameChange(el) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** Add row for foreign key
|
||||||
|
* @param HTMLSelectElement
|
||||||
|
*/
|
||||||
function foreignAddRow(field) {
|
function foreignAddRow(field) {
|
||||||
var row = field.parentNode.parentNode.cloneNode(true);
|
var row = field.parentNode.parentNode.cloneNode(true);
|
||||||
var selects = row.getElementsByTagName('select');
|
var selects = row.getElementsByTagName('select');
|
||||||
|
@ -223,6 +283,9 @@ function foreignAddRow(field) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** Add row for indexes
|
||||||
|
* @param HTMLSelectElement
|
||||||
|
*/
|
||||||
function indexesAddRow(field) {
|
function indexesAddRow(field) {
|
||||||
var row = field.parentNode.parentNode.cloneNode(true);
|
var row = field.parentNode.parentNode.cloneNode(true);
|
||||||
var spans = row.getElementsByTagName('span');
|
var spans = row.getElementsByTagName('span');
|
||||||
|
@ -241,6 +304,9 @@ function indexesAddRow(field) {
|
||||||
field.onchange = function () { };
|
field.onchange = function () { };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Add column for index
|
||||||
|
* @param HTMLSelectElement
|
||||||
|
*/
|
||||||
function indexesAddColumn(field) {
|
function indexesAddColumn(field) {
|
||||||
var column = field.parentNode.cloneNode(true);
|
var column = field.parentNode.cloneNode(true);
|
||||||
var select = column.getElementsByTagName('select')[0];
|
var select = column.getElementsByTagName('select')[0];
|
||||||
|
@ -257,12 +323,19 @@ function indexesAddColumn(field) {
|
||||||
|
|
||||||
var that, x, y, em, tablePos;
|
var that, x, y, em, tablePos;
|
||||||
|
|
||||||
|
/** Get mouse position
|
||||||
|
* @param HTMLElement
|
||||||
|
* @param MouseEvent
|
||||||
|
*/
|
||||||
function schemaMousedown(el, event) {
|
function schemaMousedown(el, event) {
|
||||||
that = el;
|
that = el;
|
||||||
x = event.clientX - el.offsetLeft;
|
x = event.clientX - el.offsetLeft;
|
||||||
y = event.clientY - el.offsetTop;
|
y = event.clientY - el.offsetTop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Move object
|
||||||
|
* @param MouseEvent
|
||||||
|
*/
|
||||||
function schemaMousemove(ev) {
|
function schemaMousemove(ev) {
|
||||||
if (that !== undefined) {
|
if (that !== undefined) {
|
||||||
ev = ev || event;
|
ev = ev || event;
|
||||||
|
@ -306,6 +379,9 @@ function schemaMousemove(ev) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Finish move
|
||||||
|
* @param MouseEvent
|
||||||
|
*/
|
||||||
function schemaMouseup(ev) {
|
function schemaMouseup(ev) {
|
||||||
if (that !== undefined) {
|
if (that !== undefined) {
|
||||||
ev = ev || event;
|
ev = ev || event;
|
||||||
|
|
|
@ -1,11 +1,18 @@
|
||||||
|
// to hide elements displayed by JavaScript
|
||||||
document.body.className = 'js';
|
document.body.className = 'js';
|
||||||
|
|
||||||
|
/** Toggle visibility
|
||||||
|
* @param string
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
function toggle(id) {
|
function toggle(id) {
|
||||||
var el = document.getElementById(id);
|
var el = document.getElementById(id);
|
||||||
el.className = (el.className == 'hidden' ? '' : 'hidden');
|
el.className = (el.className == 'hidden' ? '' : 'hidden');
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Verify current Adminer version
|
||||||
|
*/
|
||||||
function verifyVersion() {
|
function verifyVersion() {
|
||||||
document.cookie = 'adminer_version=0';
|
document.cookie = 'adminer_version=0';
|
||||||
var script = document.createElement('script');
|
var script = document.createElement('script');
|
||||||
|
@ -13,6 +20,10 @@ function verifyVersion() {
|
||||||
document.body.appendChild(script);
|
document.body.appendChild(script);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Check all elements matching given name
|
||||||
|
* @param HTMLInputElement
|
||||||
|
* @param RegExp
|
||||||
|
*/
|
||||||
function formCheck(el, name) {
|
function formCheck(el, name) {
|
||||||
var elems = el.form.elements;
|
var elems = el.form.elements;
|
||||||
for (var i=0; i < elems.length; i++) {
|
for (var i=0; i < elems.length; i++) {
|
||||||
|
@ -22,10 +33,18 @@ function formCheck(el, name) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Uncheck single element
|
||||||
|
* @param string
|
||||||
|
*/
|
||||||
function formUncheck(id) {
|
function formUncheck(id) {
|
||||||
document.getElementById(id).checked = false;
|
document.getElementById(id).checked = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Get number of checked elements matching given name
|
||||||
|
* @param HTMLInputElement
|
||||||
|
* @param RegExp
|
||||||
|
* @return number
|
||||||
|
*/
|
||||||
function formChecked(el, name) {
|
function formChecked(el, name) {
|
||||||
var checked = 0;
|
var checked = 0;
|
||||||
var elems = el.form.elements;
|
var elems = el.form.elements;
|
||||||
|
@ -37,6 +56,9 @@ function formChecked(el, name) {
|
||||||
return checked;
|
return checked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Select clicked row
|
||||||
|
* @param MouseEvent
|
||||||
|
*/
|
||||||
function tableClick(event) {
|
function tableClick(event) {
|
||||||
var el = event.target || event.srcElement;
|
var el = event.target || event.srcElement;
|
||||||
while (!/^tr$/i.test(el.tagName)) {
|
while (!/^tr$/i.test(el.tagName)) {
|
||||||
|
@ -52,6 +74,9 @@ function tableClick(event) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** Add row in select fieldset
|
||||||
|
* @param HTMLSelectElement
|
||||||
|
*/
|
||||||
function selectAddRow(field) {
|
function selectAddRow(field) {
|
||||||
var row = field.parentNode.cloneNode(true);
|
var row = field.parentNode.cloneNode(true);
|
||||||
var selects = row.getElementsByTagName('select');
|
var selects = row.getElementsByTagName('select');
|
||||||
|
|
Loading…
Reference in a new issue