JavaScript comments

git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1275 7c3ca157-0c34-0410-bff1-cbf682f78f5c
This commit is contained in:
jakubvrana 2009-12-17 14:53:26 +00:00
parent d0d1cc2b13
commit 04770321d8
3 changed files with 102 additions and 1 deletions

View file

@ -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;

View file

@ -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;

View file

@ -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');