Browse Source

update js

dxt 2 years ago
parent
commit
2721640654
3 changed files with 24 additions and 20 deletions
  1. 1 1
      priv/js/calendar.js
  2. 19 6
      priv/js/nitro.js
  3. 4 13
      priv/js/validation.js

+ 1 - 1
priv/js/calendar.js

@@ -849,7 +849,7 @@ function parseDate(value) {
 
             if (this._o.field) {
                 this._o.field.value = this.toString();
-                fireEvent(this._o.field, 'change', { firedBy: this });
+//                fireEvent(this._o.field, 'change', { firedBy: this }); // infinity loop leak
             }
             if (!preventOnSelect && typeof this._o.onSelect === 'function') {
                 this._o.onSelect.call(this, this.getDate());

+ 19 - 6
priv/js/nitro.js

@@ -10,7 +10,7 @@ function unbase64(base64) {
 
 // Nitrogen Compatibility Layer
 
-function direct(term) { ws.send(enc(tuple(atom('direct'),term))); }
+function direct(term) { active ? ws.send(enc(tuple(atom('direct'),term))) : null; }
 function validateSources() { return true; }
 function querySourceRaw(Id) {
     var val, el = document.getElementById(Id);
@@ -21,7 +21,7 @@ function querySourceRaw(Id) {
             val = qs('[id="'+Id+'"]:checked'); val = val ? val.value : ""; break;
         case 'INPUT':
             switch (el.getAttribute("type")) {
-                case 'radio': case 'checkbox': val = qs('input[name='+Id+']:checked'); val = val ? val.value : ""; break;
+                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':
@@ -37,13 +37,26 @@ function querySourceRaw(Id) {
             }
             break;
         default:
-            if(el.getAttribute('data-text-input')) {
+            if (el.getAttribute('data-text-input')) {
               val = querySourceRaw(el.children[1].children[0].id);
-            }
-            else if (el.getAttribute('data-vector-input')) {
+            } else if (el.getAttribute('data-vector-input')) {
                 val = querySourceRaw(el.children[1].id);
             } else if (el.getAttribute('data-modify-input')) {
-                val = querySourceRaw(el.children[1].id);
+                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 :

+ 4 - 13
priv/js/validation.js

@@ -1,27 +1,18 @@
 function validateSources(list) {
     return list.reduce(function(acc,x) {
-        var event = new CustomEvent('validation');
-            event.initCustomEvent('validation',true,true,querySourceRaw(x));
+        var event = new CustomEvent('validation',{
+            bubbles: true,
+            cancelable: true,
+            detail: querySourceRaw(x) });
         var el = qi(x),
             listener = el && el.validation,
             res = !listener || listener && el.dispatchEvent(event);
-        console.log(el && el.parentNode.lastChild);
         if (!res) {
           console.log("Validation failed:" + x);
           scrollToValidationInputs();
         }
-        //if (el) el.style.background = res ? '' : 'pink';
         return res && acc; },true); }
 
-(function () {
-   function CustomEvent ( event, params ) {
-       params = params || { bubbles: false, cancelable: false, detail: undefined };
-       var evt = document.createEvent( 'CustomEvent' );
-       evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
-       return evt;  };
-  CustomEvent.prototype = window.Event.prototype;
-  window.CustomEvent = CustomEvent; })();
-
 function scrollToValidationInputs() {
   const inputFields = document.querySelectorAll('.column')