jush.custom_links = jushLinks;
}
jush.highlight_tag('code', 0);
- var tags = qsa('textarea');
- for (var i = 0; i < tags.length; i++) {
- if (/(^|\s)jush-/.test(tags[i].className)) {
- var pre = jush.textarea(tags[i]);
+ for (const tag of qsa('textarea')) {
+ if (/(^|\s)jush-/.test(tag.className)) {
+ var pre = jush.textarea(tag);
if (pre) {
setupSubmitHighlightInput(pre);
}
/** Install toggle handler
* @param [HTMLElement]
*/
-function messagesPrint(el) {
- var els = qsa('.toggle', el);
- for (var i = 0; i < els.length; i++) {
- els[i].onclick = partial(toggle, els[i].getAttribute('href').substr(1));
+function messagesPrint(parent) {
+ for (const el of qsa('.toggle', parent)) {
+ el.onclick = partial(toggle, el.getAttribute('href').substr(1));
}
}
function selectFieldChange() {
var form = this.form;
var ok = (function () {
- var inputs = qsa('input', form);
- for (var i=0; i < inputs.length; i++) {
- if (inputs[i].value && /^fulltext/.test(inputs[i].name)) {
+ for (const input of qsa('input', form)) {
+ if (input.value && /^fulltext/.test(input.name)) {
return true;
}
}
var ok = form.limit.value;
- var selects = qsa('select', form);
var group = false;
var columns = {};
- for (var i=0; i < selects.length; i++) {
- var select = selects[i];
+ for (const select of qsa('select', form)) {
var col = selectValue(select);
var match = /^(where.+)col]/.exec(select.name);
if (match) {
/** Set up event handlers for edit_fields().
*/
function editFields() {
- var els = qsa('[name$="[field]"]');
- for (var i = 0; i < els.length; i++) {
- els[i].oninput = function () {
+ for (const el of qsa('[name$="[field]"]')) {
+ el.oninput = function () {
editingNameChange.call(this);
if (!this.defaultValue) {
editingAddRow.call(this);
}
}
}
- els = qsa('[name$="[length]"]');
- for (var i = 0; i < els.length; i++) {
- mixin(els[i], {onfocus: editingLengthFocus, oninput: editingLengthChange});
+ for (const el of qsa('[name$="[length]"]')) {
+ mixin(el, {onfocus: editingLengthFocus, oninput: editingLengthChange});
}
- els = qsa('[name$="[type]"]');
- for (var i = 0; i < els.length; i++) {
- mixin(els[i], {
+ for (const el of qsa('[name$="[type]"]')) {
+ mixin(el, {
onfocus: function () {
lastType = selectValue(this);
},
}
break;
}
- var table = match[1];
+ var base = match[1];
var column = match[2];
- var tables = [ table, table.replace(/s$/, ''), table.replace(/es$/, '') ];
- for (var j=0; j < tables.length; j++) {
- table = tables[j];
+ for (const table of [ base, base.replace(/s$/, ''), base.replace(/es$/, '') ]) {
if (val == column || val == table || delimiterEqual(val, table, column) || delimiterEqual(val, column, table)) {
if (candidate) {
return;
var type = this;
var name = type.name.substr(0, type.name.length - 6);
var text = selectValue(type);
- for (var i=0; i < type.form.elements.length; i++) {
- var el = type.form.elements[i];
+ for (const el of type.form.elements.length) {
if (el.name == name + '[length]') {
if (!(
(/(char|binary)$/.test(lastType) && /(char|binary)$/.test(text))
* @param number
*/
function columnShow(checked, column) {
- var trs = qsa('tr', qs('#edit-fields'));
- for (var i=0; i < trs.length; i++) {
- alterClass(qsa('td', trs[i])[column], 'hidden', !checked);
+ for (const tr of qsa('tr', qs('#edit-fields'))) {
+ alterClass(qsa('td', tr)[column], 'hidden', !checked);
}
}
* @param boolean
*/
function indexOptionsShow(checked) {
- var options = qsa('.idxopts');
- for (var i=0; i < options.length; i++) {
- alterClass(options[i], 'hidden', !checked);
+ for (const option of qsa('.idxopts')) {
+ alterClass(option, 'hidden', !checked);
}
}
function foreignAddRow() {
var row = cloneNode(parentTag(this, 'tr'));
this.onchange = function () { };
- var selects = qsa('select', row);
- for (var i=0; i < selects.length; i++) {
- selects[i].name = selects[i].name.replace(/\d+]/, '1$&');
- selects[i].selectedIndex = 0;
+ for (const select of qsa('select', row)) {
+ select.name = select.name.replace(/\d+]/, '1$&');
+ select.selectedIndex = 0;
}
parentTag(this, 'table').appendChild(row);
}
function indexesAddRow() {
var row = cloneNode(parentTag(this, 'tr'));
this.onchange = function () { };
- var selects = qsa('select', row);
- for (var i=0; i < selects.length; i++) {
- selects[i].name = selects[i].name.replace(/indexes\[\d+/, '$&1');
- selects[i].selectedIndex = 0;
+ for (const select of qsa('select', row)) {
+ select.name = select.name.replace(/indexes\[\d+/, '$&1');
+ select.selectedIndex = 0;
}
- var inputs = qsa('input', row);
- for (var i=0; i < inputs.length; i++) {
- inputs[i].name = inputs[i].name.replace(/indexes\[\d+/, '$&1');
- inputs[i].value = '';
+ for (const input of qsa('input', row)) {
+ input.name = input.name.replace(/indexes\[\d+/, '$&1');
+ input.value = '';
}
parentTag(this, 'table').appendChild(row);
}
function indexesChangeColumn(prefix) {
var names = [];
for (var tag in { 'select': 1, 'input': 1 }) {
- var columns = qsa(tag, parentTag(this, 'td'));
- for (var i=0; i < columns.length; i++) {
- if (/\[columns]/.test(columns[i].name)) {
- var value = selectValue(columns[i]);
+ for (const column of qsa(tag, parentTag(this, 'td'))) {
+ if (/\[columns]/.test(column.name)) {
+ var value = selectValue(column);
if (value) {
names.push(value);
}
select.onchange();
}
var column = cloneNode(field.parentNode);
- var selects = qsa('select', column);
- for (var i = 0; i < selects.length; i++) {
- select = selects[i];
+ for (const select of qsa('select', column)) {
select.name = select.name.replace(/]\[\d+/, '$&1');
select.selectedIndex = 0;
}
field.onchange = partial(indexesChangeColumn, prefix);
- var inputs = qsa('input', column);
- for (var i = 0; i < inputs.length; i++) {
- var input = inputs[i];
+ for (const input of qsa('input', column)) {
input.name = input.name.replace(/]\[\d+/, '$&1');
if (input.type != 'checkbox') {
input.value = '';
if (that !== undefined) {
var left = (event.clientX - x) / em;
var top = (event.clientY - y) / em;
- var divs = qsa('div', that);
var lineSet = { };
- for (var i=0; i < divs.length; i++) {
- if (divs[i].className == 'references') {
- var div2 = qs('[id="' + (/^refs/.test(divs[i].id) ? 'refd' : 'refs') + divs[i].id.substr(4) + '"]');
- var ref = (tablePos[divs[i].title] || [ div2.parentNode.offsetTop / em, 0 ]);
+ for (const div of qsa('div', that)) {
+ if (div.className == 'references') {
+ var div2 = qs('[id="' + (/^refs/.test(div.id) ? 'refd' : 'refs') + div.id.substr(4) + '"]');
+ var ref = (tablePos[div.title] || [ div2.parentNode.offsetTop / em, 0 ]);
var left1 = -1;
- var id = divs[i].id.replace(/^ref.(.+)-.+/, '$1');
- if (divs[i].parentNode != div2.parentNode) {
+ var id = div.id.replace(/^ref.(.+)-.+/, '$1');
+ if (div.parentNode != div2.parentNode) {
left1 = Math.min(0, ref[1] - left) - 1;
- divs[i].style.left = left1 + 'em';
- divs[i].querySelector('div').style.width = -left1 + 'em';
+ div.style.left = left1 + 'em';
+ div.querySelector('div').style.width = -left1 + 'em';
var left2 = Math.min(0, left - ref[1]) - 1;
div2.style.left = left2 + 'em';
div2.querySelector('div').style.width = -left2 + 'em';
}
if (!lineSet[id]) {
- var line = qs('[id="' + divs[i].id.replace(/^....(.+)-.+$/, 'refl$1') + '"]');
- var top1 = top + divs[i].offsetTop / em;
+ var line = qs('[id="' + div.id.replace(/^....(.+)-.+$/, 'refl$1') + '"]');
+ var top1 = top + div.offsetTop / em;
var top2 = top + div2.offsetTop / em;
- if (divs[i].parentNode != div2.parentNode) {
+ if (div.parentNode != div2.parentNode) {
top2 += ref[0] - top;
line.querySelector('div').style.height = Math.abs(top1 - top2) + 'em';
}
setHtml(id, (count === '' ? '' : '(' + (count + '').replace(/\B(?=(\d{3})+$)/g, thousandsSeparator) + ')'));
var el = qs('#' + id);
if (el) {
- var inputs = qsa('input', el.parentNode.parentNode);
- for (var i = 0; i < inputs.length; i++) {
- var input = inputs[i];
+ for (const input of qsa('input', el.parentNode.parentNode)) {
if (input.type == 'submit') {
input.disabled = (count == '0');
}
* @this HTMLInputElement
*/
function formCheck(name) {
- var elems = this.form.elements;
- for (var i=0; i < elems.length; i++) {
- if (name.test(elems[i].name)) {
- elems[i].checked = this.checked;
- trCheck(elems[i]);
+ for (const elem of this.form.elements) {
+ if (name.test(elem.name)) {
+ elem.checked = this.checked;
+ trCheck(elem);
}
}
}
/** Check all rows in <table class="checkable">
*/
function tableCheck() {
- var inputs = qsa('table.checkable td:first-child input');
- for (var i=0; i < inputs.length; i++) {
- trCheck(inputs[i]);
+ for (const input of qsa('table.checkable td:first-child input')) {
+ trCheck(input);
}
}
* @param RegExp
* @return number
*/
-function formChecked(el, name) {
+function formChecked(input, name) {
var checked = 0;
- var elems = el.form.elements;
- for (var i=0; i < elems.length; i++) {
- if (name.test(elems[i].name) && elems[i].checked) {
+ for (const el of input.form.elements) {
+ if (name.test(el.name) && el.checked) {
checked++;
}
}
}
if (event.shiftKey && (!lastChecked || lastChecked.name == this.name)) {
var checked = (lastChecked ? lastChecked.checked : true);
- var inputs = qsa('input', parentTag(this, 'table'));
var checking = !lastChecked;
- for (var i=0; i < inputs.length; i++) {
- var input = inputs[i];
+ for (const input of qsa('input', parentTag(this, 'table'))) {
if (input.name === this.name) {
if (checking) {
input.checked = checked;
var row = cloneNode(field.parentNode);
field.onchange = selectFieldChange;
field.onchange();
- var selects = qsa('select', row);
- for (var i=0; i < selects.length; i++) {
- selects[i].name = selects[i].name.replace(/[a-z]\[\d+/, '$&1');
- selects[i].selectedIndex = 0;
- }
- var inputs = qsa('input', row);
- for (var i=0; i < inputs.length; i++) {
- inputs[i].name = inputs[i].name.replace(/[a-z]\[\d+/, '$&1');
- inputs[i].className = '';
- if (inputs[i].type == 'checkbox') {
- inputs[i].checked = false;
+ for (const select of qsa('select', row)) {
+ select.name = select.name.replace(/[a-z]\[\d+/, '$&1');
+ select.selectedIndex = 0;
+ }
+ for (const input of qsa('input', row)) {
+ input.name = input.name.replace(/[a-z]\[\d+/, '$&1');
+ input.className = '';
+ if (input.type == 'checkbox') {
+ input.checked = false;
} else {
- inputs[i].value = '';
+ input.value = '';
}
}
field.parentNode.parentNode.appendChild(row);
* @this HTMLElement
*/
function columnMouse(className) {
- var spans = qsa('span', this);
- for (var i=0; i < spans.length; i++) {
- if (/column/.test(spans[i].className)) {
- spans[i].className = 'column' + (className || '');
+ for (const span of qsa('span', this)) {
+ if (/column/.test(span.className)) {
+ span.className = 'column' + (className || '');
}
}
}
*/
function fieldChange() {
var row = cloneNode(parentTag(this, 'tr'));
- var inputs = qsa('input', row);
- for (var i = 0; i < inputs.length; i++) {
- inputs[i].value = '';
+ for (const input of qsa('input', row)) {
+ input.value = '';
}
// keep value in <select> (function)
parentTag(this, 'table').appendChild(row);
*/
function ajaxForm(form, message, button) {
var data = [];
- var els = form.elements;
- for (var i = 0; i < els.length; i++) {
- var el = els[i];
+ for (const el of form.elements) {
if (el.name && !el.disabled) {
if (/^file$/i.test(el.type) && el.value) {
return false;
*/
function setupSubmitHighlight(parent) {
for (var key in { input: 1, select: 1, textarea: 1 }) {
- var inputs = qsa(key, parent);
- for (var i = 0; i < inputs.length; i++) {
- setupSubmitHighlightInput(inputs[i])
+ for (const input of qsa(key, parent)) {
+ setupSubmitHighlightInput(input);
}
}
}
if (!el.form) {
return null;
}
- var inputs = qsa('input', el.form);
- for (var i = 0; i < inputs.length; i++) {
- var input = inputs[i];
+ for (const input of qsa('input', el.form)) {
if (input.type == 'submit' && !input.style.zIndex) {
return input;
}