changeset 3fee4276a702 in sao:6.0
details: https://hg.tryton.org/sao?cmd=changeset&node=3fee4276a702
description:
Do not stringify binary data
For the identify only the size matter to refresh the display.
And to detect change, we can compare the Uint8Array between them or
with the
size.
issue10994
review360581002
(grafted from 1d6b2b4544620646f5d8307d8acee5c762d6ab19)
diffstat:
src/model.js | 17 +++++++++++++----
1 files changed, 13 insertions(+), 4 deletions(-)
diffs (44 lines):
diff -r 33c09e6a4be5 -r 3fee4276a702 src/model.js
--- a/src/model.js Tue Dec 21 23:11:23 2021 +0100
+++ b/src/model.js Tue Dec 21 23:24:05 2021 +0100
@@ -1416,7 +1416,11 @@
Object.keys(this._values).reduce(function(values, name) {
var field = this.model.fields[name];
if (field) {
- values[name] = field.get(this);
+ if (field instanceof Sao.field.Binary) {
+ values[name] = field.get_size(this);
+ } else {
+ values[name] = field.get(this);
+ }
}
return values;
}.bind(this), {}));
@@ -1549,12 +1553,14 @@
}
return value;
},
+ _has_changed: function(previous, value) {
+ // Use stringify to compare object instance like Number for Decimal
+ return JSON.stringify(previous) != JSON.stringify(value);
+ },
set_client: function(record, value, force_change) {
var previous_value = this.get(record);
this.set(record, value);
- // Use stringify to compare object instance like Number for Decimal
- if (JSON.stringify(previous_value) !=
- JSON.stringify(this.get(record))) {
+ if (this._has_changed(previous_value, this.get(record))) {
record._changed[this.name] = true;
this.changed(record);
record.validate(null, true, false, true);
@@ -2692,6 +2698,9 @@
Sao.field.Binary = Sao.class_(Sao.field.Field, {
_default: null,
+ _has_changed: function(previous, value) {
+ return previous != value;
+ },
get_size: function(record) {
var data = record._values[this.name] || 0;
if (data instanceof Uint8Array) {