Packages
nitro
9.9.6
11.4.16
11.4.15
11.4.14
9.9.7
9.9.6
8.2.4
8.2.3
8.2.2
8.2.1
8.2.0
7.12.1
7.10.0
7.9.3
7.9.2
7.9.1
7.9.0
7.8.3
7.8.2
7.8.0
7.7.1
7.7.0
7.6.2
7.6.1
7.6.0
7.5.0
7.4.2
7.4.1
7.4.0
7.2.1
7.2.0
7.1.1
7.1.0
6.12.0
6.11.11
6.11.10
6.11.9
6.11.8
6.11.7
6.11.6
6.11.4
6.11.2
6.11.1
6.10.9
6.10.8
6.10.7
6.10.6
6.10.5
6.10.4
6.10.3
6.10.2
6.10.1
6.9.1
6.6.1
6.5.0
6.4.4
6.4.3
6.4.2
6.4.1
6.4.0
5.12.4
5.12.3
5.12.2
5.12.1
5.12.0
5.11.1
5.11.0
5.9.2
5.9.1
5.8.5
5.8.4
5.8.3
5.8.1
5.8.0
5.6.1
5.5.1
5.4.3
5.4.2
5.4.1
5.3.1
5.3.0
5.2.1
5.1.7
5.1.6
5.1.5
5.1.4
5.1.3
5.1.2
5.1.1
4.12.11
4.12.10
4.12.9
4.12.8
4.12.7
4.12.6
4.12.5
4.12.4
4.12.3
4.12.2
4.12.1
4.12.0
4.11.13
4.11.12
4.11.11
4.11.10
4.11.9
4.11.8
4.11.7
4.11.6
4.11.5
4.11.4
4.11.3
4.11.2
4.11.1
4.11.0
4.10.9
4.10.8
4.10.7
4.10.6
4.10.5
4.10.4
4.10.3
4.10.2
4.10.1
4.10.0
4.7.7
4.7.4
4.7.3
4.7.2
4.7.1
4.7.0
4.4.1
4.4.0
1.4.0
NITRO Nitrogen Web Framework
Current section
Files
Jump to
Current section
Files
priv/js/nitro.js
// Nitrogen Compatibility Layer
function unbase64(base64) {
var binary_string = window.atob(base64);
var len = binary_string.length;
var bytes = new Uint8Array(len);
for (var i = 0; i < len; i++) bytes[i] = binary_string.charCodeAt(i);
return bytes.buffer;
}
// Nitrogen Compatibility Layer
function direct(term) { ws.send(enc(tuple(atom('direct'),term))); }
function validateSources() { return true; }
function querySourceRaw(Id) {
var val, el = document.getElementById(Id);
if (!el) {
val = qs('input[name='+Id+']:checked'); val = val ? val.value : "";
} else switch (el.tagName) {
case 'FIELDSET':
val = qs('[id="'+Id+'"]:checked'); val = val ? val.value : ""; break;
case 'INPUT':
switch (el.getAttribute("type")) {
case 'radio': case 'checkbox': val = el ? el.checked : ""; break;
case 'date': val = Date.parse(el.value); val = val && new Date(val) || ""; break;
case 'calendar': val = pickers[el.id]._d || ""; break;
case 'comboLookup': case 'hidden':
if (el.hasAttribute('data-bind')) {
val = { 'text' : el.value, 'bind' : el.getAttribute('data-bind')};
} else {
val = el.value;
}
break;
default: var edit = el.contentEditable;
if (edit && edit === 'true') val = el.innerHTML;
else val = el.value;
}
break;
default:
if (el.getAttribute('data-text-input')) {
val = querySourceRaw(el.children[1].children[0].id);
} else if (el.getAttribute('data-vector-input')) {
val = querySourceRaw(el.children[1].id);
} else if (el.getAttribute('data-modify-input')) {
sourceRaw = el.children[1] ? el.children[1].id : el.children[0].id;
val = querySourceRaw(sourceRaw)
} else if (el.getAttribute('data-group-input')) {
val = Array.from(el.querySelectorAll('[data-group-list="saved"]')).map(function (list) {
return querySourceRaw(list.id);
})
} else if (el.getAttribute('data-group-list')) {
const items = el.querySelectorAll('[data-group-item]')
val = Array.from(items).map(function (item) {
let text = item.firstChild.innerHTML;
let bind = item.getAttribute('data-bind');
if (bind) return {'text': text, 'bind': bind};
return text;
});
val = val.length > 1 ? val : val[0];
} else if (el.getAttribute('data-edit-input')) {
let sortableList = el.children[1];
let sourceRaw = sortableList ? sortableList.id :
el.children[0].children[0].children[0].id;
val = querySourceRaw(sourceRaw);
} else if (el.getAttribute('data-sortable-list')) {
val = getSortableValues('#' + el.id);
} else if (el.getAttribute('data-modify-list')) {
val = comboLookupModifyValues(el.id);
} else if (el.contentEditable === 'true') {
val = el.innerHTML;
} else {
val = el.value;
switch (val) {
case "true": val = new Boolean(true); break;
case "false": val = new Boolean(false); break;
}
}
}
return val;
}
function querySourceConvert(qs) {
if (qs && qs.hasOwnProperty('text') && qs.hasOwnProperty('bind')) {
return dec(unbase64(qs.bind)); }
else if (qs instanceof Date) {
return tuple(number(qs.getFullYear()),
number(qs.getMonth() + 1),
number(qs.getDate())); }
else if (qs instanceof Boolean) {
return atom(qs.valueOf()); }
else if (qs instanceof Array) {
return list.apply(null, qs.map(querySourceConvert)); }
else { return bin(qs); }
}
function querySource(Id) {
var qs = querySourceRaw(Id);
return querySourceConvert(qs);
}