2009-05-29 16:51:21 +00:00
|
|
|
document.body.className = 'js';
|
|
|
|
|
2009-05-29 16:14:54 +00:00
|
|
|
function toggle(id) {
|
|
|
|
var el = document.getElementById(id);
|
|
|
|
el.className = (el.className == 'hidden' ? '' : 'hidden');
|
|
|
|
return true;
|
2009-06-03 18:32:23 +00:00
|
|
|
}
|
|
|
|
|
2009-06-01 13:06:11 +00:00
|
|
|
function verify_version(version) {
|
2009-06-08 19:02:30 +00:00
|
|
|
document.cookie = 'adminer_version=0';
|
2009-05-29 16:14:54 +00:00
|
|
|
var script = document.createElement('script');
|
2009-06-08 19:02:30 +00:00
|
|
|
script.src = 'http://www.adminer.org/version.php?version=' + version;
|
2009-05-29 16:14:54 +00:00
|
|
|
document.body.appendChild(script);
|
|
|
|
}
|
|
|
|
|
2009-05-31 14:18:17 +00:00
|
|
|
function load_jush() {
|
|
|
|
var script = document.createElement('script');
|
2009-06-13 20:55:19 +00:00
|
|
|
script.src = '../externals/jush/jush.js';
|
2009-05-31 14:18:17 +00:00
|
|
|
script.onload = function () {
|
2009-06-13 20:55:19 +00:00
|
|
|
jush.style('../externals/jush/jush.css');
|
2009-05-31 14:18:17 +00:00
|
|
|
jush.highlight_tag('pre');
|
|
|
|
jush.highlight_tag('code');
|
|
|
|
}
|
|
|
|
script.onreadystatechange = function () {
|
|
|
|
if (script.readyState == 'loaded' || script.readyState == 'complete') {
|
|
|
|
script.onload();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
document.body.appendChild(script);
|
|
|
|
}
|
|
|
|
|
2009-06-01 13:06:11 +00:00
|
|
|
function form_check(el, name) {
|
2009-05-29 16:14:54 +00:00
|
|
|
var elems = el.form.elements;
|
|
|
|
for (var i=0; i < elems.length; i++) {
|
2009-06-01 13:06:11 +00:00
|
|
|
if (name.test(elems[i].name)) {
|
2009-05-29 16:14:54 +00:00
|
|
|
elems[i].checked = el.checked;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2009-06-01 13:06:11 +00:00
|
|
|
function form_uncheck(id) {
|
|
|
|
document.getElementById(id).checked = false;
|
|
|
|
}
|
|
|
|
|
2009-05-29 16:51:21 +00:00
|
|
|
|
|
|
|
|
2009-05-29 16:14:54 +00:00
|
|
|
function where_change(op) {
|
|
|
|
for (var i=0; i < op.form.elements.length; i++) {
|
|
|
|
var el = op.form.elements[i];
|
|
|
|
if (el.name == op.name.substr(0, op.name.length - 4) + '[val]') {
|
|
|
|
el.className = (/NULL$/.test(op.options[op.selectedIndex].text) ? 'hidden' : '');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function select_add_row(field) {
|
|
|
|
var row = field.parentNode.cloneNode(true);
|
|
|
|
var selects = row.getElementsByTagName('select');
|
|
|
|
for (var i=0; i < selects.length; i++) {
|
|
|
|
selects[i].name = selects[i].name.replace(/[a-z]\[[0-9]+/, '$&1');
|
|
|
|
selects[i].selectedIndex = 0;
|
|
|
|
}
|
|
|
|
var inputs = row.getElementsByTagName('input');
|
|
|
|
if (inputs.length) {
|
|
|
|
inputs[0].name = inputs[0].name.replace(/[a-z]\[[0-9]+/, '$&1');
|
|
|
|
inputs[0].value = '';
|
|
|
|
inputs[0].className = '';
|
|
|
|
}
|
|
|
|
field.parentNode.parentNode.appendChild(row);
|
|
|
|
field.onchange = function () { };
|
|
|
|
}
|
|
|
|
|
2009-05-29 16:51:21 +00:00
|
|
|
|
|
|
|
|
|
|
|
var added = '.', row_count;
|
|
|
|
|
2009-05-29 16:14:54 +00:00
|
|
|
function editing_add_row(button, allowed) {
|
|
|
|
if (allowed && row_count >= allowed) {
|
|
|
|
return false;
|
|
|
|
}
|
2009-05-29 16:51:21 +00:00
|
|
|
var match = /([0-9]+)(\.[0-9]+)?/.exec(button.name);
|
2009-05-29 16:14:54 +00:00
|
|
|
var x = match[0] + (match[2] ? added.substr(match[2].length) : added) + '1';
|
|
|
|
var row = button.parentNode.parentNode;
|
|
|
|
var row2 = row.cloneNode(true);
|
|
|
|
var tags = row.getElementsByTagName('select');
|
|
|
|
var tags2 = row2.getElementsByTagName('select');
|
|
|
|
for (var i=0; i < tags.length; i++) {
|
2009-06-15 11:53:16 +00:00
|
|
|
tags2[i].name = tags[i].name.replace(/([0-9.]+)/, x);
|
2009-05-29 16:14:54 +00:00
|
|
|
tags2[i].selectedIndex = tags[i].selectedIndex;
|
|
|
|
}
|
|
|
|
tags = row.getElementsByTagName('input');
|
2009-06-15 11:53:16 +00:00
|
|
|
tags2 = row2.getElementsByTagName('input');
|
2009-05-29 16:14:54 +00:00
|
|
|
for (var i=0; i < tags.length; i++) {
|
|
|
|
if (tags[i].name == 'auto_increment_col') {
|
2009-06-15 11:53:16 +00:00
|
|
|
tags2[i].value = x;
|
|
|
|
tags2[i].checked = false;
|
2009-05-29 16:14:54 +00:00
|
|
|
}
|
2009-06-15 11:53:16 +00:00
|
|
|
tags2[i].name = tags[i].name.replace(/([0-9.]+)/, x);
|
2009-05-29 16:14:54 +00:00
|
|
|
if (/\[(orig|field|comment)/.test(tags[i].name)) {
|
2009-06-15 11:53:16 +00:00
|
|
|
tags2[i].value = '';
|
2009-05-29 16:14:54 +00:00
|
|
|
}
|
|
|
|
}
|
2009-06-15 11:53:16 +00:00
|
|
|
tags[0].onchange = function () { };
|
|
|
|
row.parentNode.insertBefore(row2, row.nextSibling);
|
2009-05-29 16:14:54 +00:00
|
|
|
added += '0';
|
|
|
|
row_count++;
|
2009-06-15 11:53:16 +00:00
|
|
|
return tags2[0];
|
2009-05-29 16:14:54 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function editing_remove_row(button) {
|
|
|
|
var field = button.form[button.name.replace(/drop_col(.+)/, 'fields$1[field]')];
|
|
|
|
field.parentNode.removeChild(field);
|
|
|
|
button.parentNode.parentNode.style.display = 'none';
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
function editing_type_change(type) {
|
|
|
|
var name = type.name.substr(0, type.name.length - 6);
|
|
|
|
for (var i=0; i < type.form.elements.length; i++) {
|
|
|
|
var el = type.form.elements[i];
|
|
|
|
if (el.name == name + '[collation]') {
|
|
|
|
el.className = (/char|text|enum|set/.test(type.options[type.selectedIndex].text) ? '' : 'hidden');
|
|
|
|
}
|
|
|
|
if (el.name == name + '[unsigned]') {
|
|
|
|
el.className = (/int|float|double|decimal/.test(type.options[type.selectedIndex].text) ? '' : 'hidden');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function column_comments_click(checked) {
|
|
|
|
var trs = document.getElementById('edit-fields').getElementsByTagName('tr');
|
|
|
|
for (var i=0; i < trs.length; i++) {
|
|
|
|
trs[i].getElementsByTagName('td')[5].className = (checked ? '' : 'hidden');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function partition_by_change(el) {
|
|
|
|
var partition_table = /RANGE|LIST/.test(el.options[el.selectedIndex].text);
|
|
|
|
el.form['partitions'].className = (partition_table || !el.selectedIndex ? 'hidden' : '');
|
|
|
|
document.getElementById('partition-table').className = (partition_table ? '' : 'hidden');
|
|
|
|
}
|
|
|
|
|
|
|
|
function partition_name_change(el) {
|
|
|
|
var row = el.parentNode.parentNode.cloneNode(true);
|
|
|
|
row.firstChild.firstChild.value = '';
|
|
|
|
el.parentNode.parentNode.parentNode.appendChild(row);
|
|
|
|
el.onchange = function () {};
|
|
|
|
}
|
|
|
|
|
2009-05-29 16:51:21 +00:00
|
|
|
|
|
|
|
|
2009-05-29 16:14:54 +00:00
|
|
|
function foreign_add_row(field) {
|
|
|
|
var row = field.parentNode.parentNode.cloneNode(true);
|
|
|
|
var selects = row.getElementsByTagName('select');
|
|
|
|
for (var i=0; i < selects.length; i++) {
|
|
|
|
selects[i].name = selects[i].name.replace(/\]/, '1$&');
|
|
|
|
selects[i].selectedIndex = 0;
|
|
|
|
}
|
|
|
|
field.parentNode.parentNode.parentNode.appendChild(row);
|
|
|
|
field.onchange = function () { };
|
|
|
|
}
|
|
|
|
|
2009-05-29 16:51:21 +00:00
|
|
|
|
|
|
|
|
2009-05-29 16:14:54 +00:00
|
|
|
function indexes_add_row(field) {
|
|
|
|
var row = field.parentNode.parentNode.cloneNode(true);
|
|
|
|
var spans = row.getElementsByTagName('span');
|
|
|
|
row.getElementsByTagName('td')[1].innerHTML = '<span>' + spans[spans.length - 1].innerHTML + '</span>';
|
|
|
|
var selects = row.getElementsByTagName('select');
|
|
|
|
for (var i=0; i < selects.length; i++) {
|
|
|
|
selects[i].name = selects[i].name.replace(/indexes\[[0-9]+/, '$&1');
|
|
|
|
selects[i].selectedIndex = 0;
|
|
|
|
}
|
|
|
|
var input = row.getElementsByTagName('input')[0];
|
|
|
|
input.name = input.name.replace(/indexes\[[0-9]+/, '$&1');
|
|
|
|
input.value = '';
|
|
|
|
field.parentNode.parentNode.parentNode.appendChild(row);
|
|
|
|
field.onchange = function () { };
|
|
|
|
}
|
|
|
|
|
|
|
|
function indexes_add_column(field) {
|
|
|
|
var column = field.parentNode.cloneNode(true);
|
|
|
|
var select = column.getElementsByTagName('select')[0];
|
|
|
|
select.name = select.name.replace(/\]\[[0-9]+/, '$&1');
|
|
|
|
select.selectedIndex = 0;
|
|
|
|
var input = column.getElementsByTagName('input')[0];
|
|
|
|
input.name = input.name.replace(/\]\[[0-9]+/, '$&1');
|
|
|
|
input.value = '';
|
|
|
|
field.parentNode.parentNode.appendChild(column);
|
|
|
|
field.onchange = function () { };
|
|
|
|
}
|
|
|
|
|
2009-05-29 16:51:21 +00:00
|
|
|
|
|
|
|
|
|
|
|
var that, x, y, em, table_pos;
|
|
|
|
|
|
|
|
function schema_mousedown(el, event) {
|
2009-05-29 16:14:54 +00:00
|
|
|
that = el;
|
|
|
|
x = event.clientX - el.offsetLeft;
|
|
|
|
y = event.clientY - el.offsetTop;
|
|
|
|
}
|
|
|
|
|
|
|
|
function schema_mousemove(ev) {
|
|
|
|
if (that !== undefined) {
|
|
|
|
ev = ev || event;
|
|
|
|
var left = (ev.clientX - x) / em;
|
|
|
|
var top = (ev.clientY - y) / em;
|
|
|
|
var divs = that.getElementsByTagName('div');
|
|
|
|
var line_set = { };
|
|
|
|
for (var i=0; i < divs.length; i++) {
|
|
|
|
if (divs[i].className == 'references') {
|
|
|
|
var div2 = document.getElementById((divs[i].id.substr(0, 4) == 'refs' ? 'refd' : 'refs') + divs[i].id.substr(4));
|
|
|
|
var ref = (table_pos[divs[i].title] ? table_pos[divs[i].title] : [ div2.parentNode.offsetTop / em, 0 ]);
|
|
|
|
var left1 = -1;
|
|
|
|
var is_top = true;
|
|
|
|
var id = divs[i].id.replace(/^ref.(.+)-.+/, '$1');
|
|
|
|
if (divs[i].parentNode != div2.parentNode) {
|
|
|
|
left1 = Math.min(0, ref[1] - left) - 1;
|
|
|
|
divs[i].style.left = left1 + 'em';
|
|
|
|
divs[i].getElementsByTagName('div')[0].style.width = -left1 + 'em';
|
|
|
|
var left2 = Math.min(0, left - ref[1]) - 1;
|
|
|
|
div2.style.left = left2 + 'em';
|
|
|
|
div2.getElementsByTagName('div')[0].style.width = -left2 + 'em';
|
|
|
|
is_top = (div2.offsetTop + ref[0] * em > divs[i].offsetTop + top * em);
|
|
|
|
}
|
|
|
|
if (!line_set[id]) {
|
|
|
|
var line = document.getElementById(divs[i].id.replace(/^....(.+)-[0-9]+$/, 'refl$1'));
|
|
|
|
var shift = ev.clientY - y - that.offsetTop;
|
|
|
|
line.style.left = (left + left1) + 'em';
|
|
|
|
if (is_top) {
|
|
|
|
line.style.top = (line.offsetTop + shift) / em + 'em';
|
|
|
|
}
|
|
|
|
if (divs[i].parentNode != div2.parentNode) {
|
|
|
|
line = line.getElementsByTagName('div')[0];
|
|
|
|
line.style.height = (line.offsetHeight + (is_top ? -1 : 1) * shift) / em + 'em';
|
|
|
|
}
|
|
|
|
line_set[id] = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
that.style.left = left + 'em';
|
|
|
|
that.style.top = top + 'em';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function schema_mouseup(ev) {
|
|
|
|
if (that !== undefined) {
|
|
|
|
ev = ev || event;
|
|
|
|
table_pos[that.firstChild.firstChild.firstChild.data] = [ (ev.clientY - y) / em, (ev.clientX - x) / em ];
|
|
|
|
that = undefined;
|
|
|
|
var date = new Date();
|
|
|
|
date.setMonth(date.getMonth() + 1);
|
|
|
|
var s = '';
|
|
|
|
for (var key in table_pos) {
|
|
|
|
s += '_' + key + ':' + Math.round(table_pos[key][0] * 10000) / 10000 + 'x' + Math.round(table_pos[key][1] * 10000) / 10000;
|
|
|
|
}
|
2009-06-21 23:31:12 +00:00
|
|
|
document.cookie = 'adminer_schema=' + encodeURIComponent(s.substr(1)) + '; expires=' + date + '; path=' + location.pathname + location.search;
|
2009-05-29 16:14:54 +00:00
|
|
|
}
|
|
|
|
}
|