changeset dadc99547af6 in sao:default
details: https://hg.tryton.org/sao?cmd=changeset;node=dadc99547af6
description:
        Remove id to on_change calls that are cached

        issue8234
        review275131002
diffstat:

 src/model.js |  41 +++++++++++++++++++++++++++++------------
 1 files changed, 29 insertions(+), 12 deletions(-)

diffs (71 lines):

diff -r 96b0dad112d2 -r dadc99547af6 src/model.js
--- a/src/model.js      Mon Apr 08 10:10:40 2019 +0200
+++ b/src/model.js      Mon Apr 08 10:14:39 2019 +0200
@@ -960,7 +960,6 @@
                 });
                 result[arg] = scope;
             });
-            result.id = this.id;
             return result;
         },
         on_change: function(fieldnames) {
@@ -974,12 +973,21 @@
                 }
             }.bind(this));
             if (!jQuery.isEmptyObject(values)) {
-                var prm = this.model.execute('on_change',
-                        [values, fieldnames], this.get_context());
-                return prm.then(function(changes) {
-                    return jQuery.when.apply(jQuery,
-                        changes.map(this.set_on_change.bind(this)));
-                }.bind(this));
+                var prm;
+                if (fieldnames.length == 1) {
+                    prm = this.model.execute(
+                        'on_change_' + fieldnames[0],
+                        [values], this.get_context())
+                        .then(this.set_on_change.bind(this));
+                } else {
+                    prm = this.model.execute('on_change',
+                        [values, fieldnames], this.get_context())
+                        .then(function(changes) {
+                            return jQuery.when.apply(jQuery,
+                                changes.map(this.set_on_change.bind(this)));
+                        }.bind(this));
+                }
+                return prm;
             } else {
                 return jQuery.when();
             }
@@ -1024,17 +1032,26 @@
             }
             var prms = [];
             var prm;
-            if (!jQuery.isEmptyObject(fieldnames)) {
-                prm = this.model.execute('on_change_with',
-                        [values, Object.keys(fieldnames)], this.get_context());
-                prms.push(prm.then(this.set_on_change.bind(this)));
-            }
             var set_on_change = function(fieldname) {
                 return function(result) {
                     return this.model.fields[fieldname].set_on_change(
                         this, result);
                 };
             };
+            fieldnames = Object.keys(fieldnames);
+            if (fieldnames) {
+                if (fieldnames.length == 1) {
+                    prm = this.model.execute(
+                        'on_change_with_' + fieldnames[0],
+                        [values], this.get_context());
+                    
prms.push(prm.then(set_on_change(fieldnames[0]).bind(this)));
+                } else {
+                    prm = this.model.execute(
+                        'on_change_with',
+                        [values, Object.keys(fieldnames)], this.get_context());
+                    prms.push(prm.then(this.set_on_change.bind(this)));
+                }
+            }
             for (fieldname in later) {
                 if (!later.hasOwnProperty(fieldname)) {
                     continue;

Reply via email to