1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // 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': val = qs('input[name='+Id+']:checked'); val = val ? val.value : ""; break;
- case 'checkbox': val = qs('input[id='+Id+']:checked'); val = val ? val.value : ""; 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-edit-input')) {
- val = querySourceRaw(el.children[0].children[0].children[0].id);
- } else if (el.getAttribute('data-sortable-list')) {
- val = getSortableValues('#' + 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);
- }
|