changeset 89b3eed38e6b in sao:default
details: https://hg.tryton.org/sao?cmd=changeset&node=89b3eed38e6b
description:
Do not trigger on change when setting change values
Also unify the keyword argument to trigger modified record.
issue11325
review356361002
diffstat:
src/model.js | 37 +++++++++++++++++++------------------
src/screen.js | 2 +-
src/view/tree.js | 2 +-
3 files changed, 21 insertions(+), 20 deletions(-)
diffs (154 lines):
diff -r 33bfd6702029 -r 89b3eed38e6b src/model.js
--- a/src/model.js Mon Apr 25 18:08:58 2022 +0200
+++ b/src/model.js Mon Apr 25 23:19:07 2022 +0200
@@ -129,7 +129,7 @@
}
return record;
};
- array.add = function(record, position=-1, changed=true) {
+ array.add = function(record, position=-1, modified=true) {
if (position == -1) {
position = this.length;
}
@@ -152,8 +152,8 @@
this.record_deleted.indexOf(record_del), 1);
}
}
- record.set_modified('id');
- if (changed) {
+ record.modified_fields.id = true;
+ if (modified) {
// Set parent field to trigger on_change
if (this.parent && this.model.fields[this.parent_name]) {
var field = this.model.fields[this.parent_name];
@@ -170,7 +170,7 @@
return record;
};
array.remove = function(
- record, remove, modified=true, force_remove=false, signal=true) {
+ record, remove, force_remove=false, modified=true) {
var idx = this.indexOf(record);
if (record.id >= 0) {
if (remove) {
@@ -191,16 +191,11 @@
}
}
}
- if (record.group.parent) {
- record.group.parent.set_modified('id');
- }
- if (modified) {
- record.set_modified('id');
- }
+ record.modified_fields.id = true;
if ((record.id < 0) || force_remove) {
this._remove(record);
}
- if (signal) {
+ if (modified) {
this.record_modified();
}
};
@@ -805,7 +800,7 @@
}
}
},
- set: function(values, validate=true) {
+ set: function(values, modified=true, validate=true) {
var name, value;
var rec_named_fields = ['many2one', 'one2one', 'reference'];
var later = {};
@@ -852,6 +847,9 @@
if (validate) {
this.validate(fieldnames, true, false, false);
}
+ if (modified) {
+ this.set_modified();
+ }
},
get: function() {
var value = {};
@@ -935,7 +933,7 @@
}
return jQuery.when();
},
- set_default: function(values, validate=true, display=true) {
+ set_default: function(values, validate=true, modified=true) {
var promises = [];
var fieldnames = [];
for (var fname in values) {
@@ -968,7 +966,8 @@
this.on_change(fieldnames);
this.on_change_with(fieldnames);
const callback = () => {
- if (display) {
+ if (modified) {
+ this.set_modified();
return jQuery.when.apply(
jQuery, this.group.root_group.screens
.map(screen => screen.display()));
@@ -2139,7 +2138,7 @@
}
}
for (const record_to_remove of records_to_remove) {
- group.remove(record_to_remove, true, true, false, false);
+ group.remove(record_to_remove, true, false, false);
}
group.load(value, modified || default_);
} else {
@@ -2150,10 +2149,12 @@
new_record.set_default(vals, false, false);
group.add(new_record, -1, false);
} else {
- new_record.set(vals);
+ new_record.set(vals, false);
group.push(new_record);
}
}
+ // Trigger modified only once
+ group.record_modified();
}
},
set: function(record, value, _default=false) {
@@ -2309,7 +2310,7 @@
for (const record_id of value.delete) {
const record2 = group.get(record_id);
if (record2) {
- group.remove(record2, false, true, false, false);
+ group.remove(record2, false, false, false);
}
}
}
@@ -2317,7 +2318,7 @@
for (const record_id of value.remove) {
const record2 = group.get(record_id);
if (record2) {
- group.remove(record2, true, true, false, false);
+ group.remove(record2, true, false, false);
}
}
}
diff -r 33bfd6702029 -r 89b3eed38e6b src/screen.js
--- a/src/screen.js Mon Apr 25 18:08:58 2022 +0200
+++ b/src/screen.js Mon Apr 25 23:19:07 2022 +0200
@@ -1642,7 +1642,7 @@
var path = top_record.get_path(this.group);
return prm.then(() => {
for (const record of records) {
- record.group.remove(record, remove, true, force_remove,
false);
+ record.group.remove(record, remove, force_remove, false);
}
// trigger changed only once
records[0].group.record_modified();
diff -r 33bfd6702029 -r 89b3eed38e6b src/view/tree.js
--- a/src/view/tree.js Mon Apr 25 18:08:58 2022 +0200
+++ b/src/view/tree.js Mon Apr 25 23:19:07 2022 +0200
@@ -651,7 +651,7 @@
origin_group.splice(dest_position, 0, record);
origin_group.record_modified();
} else {
- origin_group.remove(record, true, true, true);
+ origin_group.remove(record, true, true);
// Don't remove record from previous group
// as the new parent will change the parent
// This prevents concurrency conflict