changeset e20c9e4289c1 in sao:default details: https://hg.tryton.org/sao?cmd=changeset;node=e20c9e4289c1 description: Skip destroyed records when fetching data from the server
issue9669 review294631002 diffstat: src/model.js | 18 ++++++++++++++++-- 1 files changed, 16 insertions(+), 2 deletions(-) diffs (56 lines): diff -r 121dff050d3f -r e20c9e4289c1 src/model.js --- a/src/model.js Thu Oct 29 00:04:07 2020 +0100 +++ b/src/model.js Fri Oct 30 19:01:11 2020 +0100 @@ -269,6 +269,7 @@ context._timestamp = {}; records.forEach(function(record) { jQuery.extend(context._timestamp, record.get_timestamp()); + record.destroy(); }); var record_ids = records.map(function(record) { return record.id; @@ -560,6 +561,7 @@ this.state_attrs = {}; this.autocompletion = {}; this.exception = false; + this.destroyed = false; }, has_changed: function() { return !jQuery.isEmptyObject(this._changed); @@ -629,7 +631,7 @@ if (async === undefined) { async = true; } - if (this.is_loaded(name)) { + if (this.destroyed || this.is_loaded(name)) { return async? jQuery.when() : this.model.fields[name]; } if (this.group.prm.state() == 'pending') { @@ -700,7 +702,9 @@ 10); var filter_group = function(record) { - return !(name in record._loaded) && (record.id >= 0); + return (!record.destroyed && + (record.id >= 0) && + !(name in record._loaded)); }; var filter_parent_group = function(record) { return (filter_group(record) && @@ -1431,6 +1435,16 @@ this.button_clicks[name] = clicks; return clicks; }.bind(this)); + }, + destroy: function() { + var vals = Object.values(this._values); + for (var i=0; i < vals.length; i++) { + var val = vals[i]; + if (val.hasOwnProperty('destroy')) { + val.destroy(); + } + } + this.destroyed = true; } });