Namdak Tonpa 5 years ago
parent
commit
d4a7800679
3 changed files with 23 additions and 13 deletions
  1. 1 1
      priv/js/comboLookup.js
  2. 21 11
      priv/js/nitro.js
  3. 1 1
      priv/js/validation.js

+ 1 - 1
priv/js/comboLookup.js

@@ -6,7 +6,7 @@ function comboClear(dom) {
 
 
 function comboSelect(dom, row, feed, mod, id) {
 function comboSelect(dom, row, feed, mod, id) {
   let elem = qi(dom); comboClear(dom);
   let elem = qi(dom); comboClear(dom);
-  elem.setAttribute("data-bind", qi(id).getAttribute('data-bind'));
+  if (qi(id)) elem.setAttribute("data-bind", qi(id).getAttribute('data-bind'));
   elem.value = row;
   elem.value = row;
   elem.style.backgroundColor = 'white';
   elem.style.backgroundColor = 'white';
   direct(tuple(atom('comboSelect'), string(dom), string(row), string(feed), atom(mod)));
   direct(tuple(atom('comboSelect'), string(dom), string(row), string(feed), atom(mod)));

+ 21 - 11
priv/js/nitro.js

@@ -8,25 +8,26 @@ function unbase64(base64) {
     return bytes.buffer;
     return bytes.buffer;
 }
 }
 
 
+// Nitrogen Compatibility Layer
+
 function direct(term) { ws.send(enc(tuple(atom('direct'),term))); }
 function direct(term) { ws.send(enc(tuple(atom('direct'),term))); }
 function validateSources() { return true; }
 function validateSources() { return true; }
 function querySourceRaw(Id) {
 function querySourceRaw(Id) {
     var val, el = document.getElementById(Id);
     var val, el = document.getElementById(Id);
     if (!el) {
     if (!el) {
-       val = qs('input[name='+Id+']:checked'); val = val ? bin(val.value) : bin("");
+       val = qs('input[name='+Id+']:checked'); val = val ? val.value : "";
     } else switch (el.tagName) {
     } else switch (el.tagName) {
         case 'FIELDSET':
         case 'FIELDSET':
-            val = qs('[id="'+Id+'"]:checked'); val = val ? bin(val.value) : bin(""); break;
+            val = qs('[id="'+Id+'"]:checked'); val = val ? val.value : ""; break;
         case 'INPUT':
         case 'INPUT':
             switch (el.getAttribute("type")) {
             switch (el.getAttribute("type")) {
                 case 'radio': case 'checkbox': val = qs('input[name='+Id+']:checked'); val = val ? val.value : ""; break;
                 case 'radio': case 'checkbox': val = qs('input[name='+Id+']:checked'); val = val ? val.value : ""; break;
-                case 'date': val = Date.parse(el.value); val = val && new Date(val) || ""; break;
+                case 'date': val = Date.parse(el.value);  val = val && new Date(val) || ""; break;
+                case 'calendar': val = pickers[el.id]._d || ""; break;
                 case 'text': var x = el.getAttribute('data-bind'); if (x) val=dec(unbase64(x)); break;
                 case 'text': var x = el.getAttribute('data-bind'); if (x) val=dec(unbase64(x)); break;
-                case 'calendar': var x = pickers[el.id]._d; val = tuple(number(x.getFullYear()),number(x.getMonth()+1),number(x.getDate())); break;
-                default:
-                    var edit = el.contentEditable;
-                    if (edit && edit === 'true') val = bin(el.innerHTML);
-                    else val = bin(el.value);
+                default: var edit = el.contentEditable;
+                    if (edit && edit === 'true') val = el.innerHTML;
+                    else val = el.value;
             }
             }
             break;
             break;
         default:
         default:
@@ -39,18 +40,27 @@ function querySourceRaw(Id) {
             } else {
             } else {
                 val = el.value;
                 val = el.value;
                 switch (val) {
                 switch (val) {
-                    case "true": val = atom('true'); break;
-                    case "false": val = atom('false'); break;
+                    case "true": val = new Boolean(true); break;
+                    case "false": val = new Boolean(false); break;
                 }
                 }
             }
             }
     }
     }
+    console.log("querySourceRaw:val:", val)
     return val;
     return val;
 }
 }
 
 
 function querySource(Id) {
 function querySource(Id) {
     var qs = querySourceRaw(Id);
     var qs = querySourceRaw(Id);
     if (qs && qs.t && qs.v) return qs;
     if (qs && qs.t && qs.v) return qs;
-    else if (qs instanceof Array) { return list.apply(null, qs.map(bin)); }
+    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(bin)); }
     else { return bin(qs); }
     else { return bin(qs); }
 }
 }
 
 
+

+ 1 - 1
priv/js/validation.js

@@ -8,7 +8,7 @@ function validateSources(list) {
         var el = qi(x),
         var el = qi(x),
             listener = el && el.validation,
             listener = el && el.validation,
             res = !listener || listener && el.dispatchEvent(event);
             res = !listener || listener && el.dispatchEvent(event);
-        console.log(res);
+        if (!res) { console.log("Validation failed:" + x); }
         if (el) el.style.background = res ? '' : 'pink';
         if (el) el.style.background = res ? '' : 'pink';
         return res && acc; },true); }
         return res && acc; },true); }