123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- // 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;
- }
- 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);
- }
|