changeset 9f7cab2d5c3a in sao:default
details: https://hg.tryton.org/sao?cmd=changeset;node=9f7cab2d5c3a
description:
        Ensure dependencies of fields are also loaded on Form display

        issue9630
        review298641002
diffstat:

 src/view/form.js |  22 ++++++++++++++++++----
 1 files changed, 18 insertions(+), 4 deletions(-)

diffs (42 lines):

diff -r 8b4f7a8fced0 -r 9f7cab2d5c3a src/view/form.js
--- a/src/view/form.js  Thu Mar 11 19:14:07 2021 +0100
+++ b/src/view/form.js  Thu Mar 11 23:34:44 2021 +0100
@@ -261,20 +261,34 @@
         display: function() {
             var record = this.record;
             var field;
+            var depends;
             var name;
             var promesses = [];
             if (record) {
                 // Force to set fields in record
                 // Get first the lazy one from the view to reduce number of 
requests
-                var fields = [];
+                var field_names = new Set();
                 for (name in this.widgets) {
-                    field = record.model.fields[name];
+                    depends = (
+                        record.model.fields[name].description.depends || []);
+                    field_names.add(name);
+                    for (var i = 0; i < depends.length; i++) {
+                        var depend = depends[i];
+                        if (!depend.startsWith('_parent') &&
+                            depend in record.model.fields) {
+                            field_names.add(depend);
+                        }
+                    }
+                }
+                var fields = [];
+                field_names.forEach(function(fname) {
+                    field = record.model.fields[fname];
                     fields.push([
-                        name,
+                        fname,
                         field.description.loading || 'eager' == 'eager',
                         field.views.size,
                     ]);
-                }
+                });
                 fields.sort(function(a, b) {
                     if (!a[1] && b[1]) {
                         return -1;

Reply via email to