tryton-sao 7.2.19 → 7.2.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG +5 -0
- package/dist/tryton-sao.js +61 -23
- package/package.json +1 -1
- package/src/common.js +36 -10
- package/src/model.js +11 -3
- package/src/sao.js +1 -1
- package/src/screen.js +9 -6
- package/src/window.js +4 -3
package/CHANGELOG
CHANGED
package/dist/tryton-sao.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
/* eslint-disable no-redeclare */
|
|
5
5
|
var Sao = {
|
|
6
|
-
__version__: '7.2.
|
|
6
|
+
__version__: '7.2.20',
|
|
7
7
|
};
|
|
8
8
|
/* eslint-enable no-redeclare */
|
|
9
9
|
|
|
@@ -5304,6 +5304,15 @@ var Sao = {
|
|
|
5304
5304
|
if (!context) {
|
|
5305
5305
|
context = {};
|
|
5306
5306
|
}
|
|
5307
|
+
function atof(string) {
|
|
5308
|
+
if (!string) {
|
|
5309
|
+
throw("empty string");
|
|
5310
|
+
}
|
|
5311
|
+
let { format } = new Intl.NumberFormat(
|
|
5312
|
+
Sao.i18n.BC47(Sao.i18n.getlang()));
|
|
5313
|
+
let [, decimalSign] = /^0(.)1$/.exec(format(0.1));
|
|
5314
|
+
return Number(string.replace(decimalSign, '.'));
|
|
5315
|
+
}
|
|
5307
5316
|
var convert_selection = function() {
|
|
5308
5317
|
if (typeof value == 'string') {
|
|
5309
5318
|
for (var i = 0; i < field.selection.length; i++) {
|
|
@@ -5335,8 +5344,12 @@ var Sao = {
|
|
|
5335
5344
|
},
|
|
5336
5345
|
'float': function() {
|
|
5337
5346
|
var factor = Number(field.factor || 1);
|
|
5338
|
-
|
|
5339
|
-
|
|
5347
|
+
try {
|
|
5348
|
+
var result = atof(value);
|
|
5349
|
+
} catch (e) {
|
|
5350
|
+
return null;
|
|
5351
|
+
}
|
|
5352
|
+
if (isNaN(result)) {
|
|
5340
5353
|
return null;
|
|
5341
5354
|
} else {
|
|
5342
5355
|
return result / factor;
|
|
@@ -5344,18 +5357,25 @@ var Sao = {
|
|
|
5344
5357
|
},
|
|
5345
5358
|
'integer': function() {
|
|
5346
5359
|
var factor = Number(field.factor || 1, 10);
|
|
5347
|
-
|
|
5360
|
+
try {
|
|
5361
|
+
var result = atof(value);
|
|
5362
|
+
} catch (e) {
|
|
5363
|
+
return null;
|
|
5364
|
+
}
|
|
5348
5365
|
if (isNaN(result)) {
|
|
5349
5366
|
return null;
|
|
5350
5367
|
} else {
|
|
5351
|
-
return result / factor;
|
|
5368
|
+
return parseInt(result / factor, 10);
|
|
5352
5369
|
}
|
|
5353
5370
|
},
|
|
5354
5371
|
'numeric': function() {
|
|
5355
5372
|
var factor = Number(field.factor || 1);
|
|
5356
|
-
|
|
5357
|
-
|
|
5358
|
-
|
|
5373
|
+
try {
|
|
5374
|
+
var result = atof(value);
|
|
5375
|
+
} catch (e) {
|
|
5376
|
+
return null;
|
|
5377
|
+
}
|
|
5378
|
+
if (isNaN(result)) {
|
|
5359
5379
|
return null;
|
|
5360
5380
|
} else {
|
|
5361
5381
|
return new Sao.Decimal(result / factor);
|
|
@@ -5410,8 +5430,7 @@ var Sao = {
|
|
|
5410
5430
|
return '';
|
|
5411
5431
|
}
|
|
5412
5432
|
var digit = 0;
|
|
5413
|
-
var
|
|
5414
|
-
var string = String(value * factor);
|
|
5433
|
+
var string = String(value);
|
|
5415
5434
|
if (string.contains('e')) {
|
|
5416
5435
|
var exp = string.split('e')[1];
|
|
5417
5436
|
string = string.split('e')[0];
|
|
@@ -5420,7 +5439,14 @@ var Sao = {
|
|
|
5420
5439
|
if (string.contains('.')) {
|
|
5421
5440
|
digit += string.replace(/0+$/, '').split('.')[1].length;
|
|
5422
5441
|
}
|
|
5423
|
-
|
|
5442
|
+
var factor = Number(field.factor || 1);
|
|
5443
|
+
digit -= Math.round(Math.log10(factor));
|
|
5444
|
+
return (value * factor).toLocaleString(
|
|
5445
|
+
Sao.i18n.BC47(Sao.i18n.getlang()), {
|
|
5446
|
+
useGrouping: true,
|
|
5447
|
+
minimumFractionDigits: digit,
|
|
5448
|
+
maximumFractionDigits: digit,
|
|
5449
|
+
});
|
|
5424
5450
|
};
|
|
5425
5451
|
var format_selection = function() {
|
|
5426
5452
|
if (field.selection instanceof Array) {
|
|
@@ -10176,6 +10202,7 @@ var Sao = {
|
|
|
10176
10202
|
}
|
|
10177
10203
|
|
|
10178
10204
|
if (value && (value.add || value.update)) {
|
|
10205
|
+
let vals_to_set = {};
|
|
10179
10206
|
// First set already added fields to prevent triggering a
|
|
10180
10207
|
// second on_change call
|
|
10181
10208
|
if (value.update) {
|
|
@@ -10185,9 +10212,9 @@ var Sao = {
|
|
|
10185
10212
|
}
|
|
10186
10213
|
const record2 = group.get(vals.id);
|
|
10187
10214
|
if (record2) {
|
|
10188
|
-
var vals_to_set = {};
|
|
10189
10215
|
for (var key in vals) {
|
|
10190
|
-
if (!(
|
|
10216
|
+
if (!Object.prototype.hasOwnProperty.call(
|
|
10217
|
+
new_field_names, key)) {
|
|
10191
10218
|
vals_to_set[key] = vals[key];
|
|
10192
10219
|
}
|
|
10193
10220
|
}
|
|
@@ -10221,7 +10248,14 @@ var Sao = {
|
|
|
10221
10248
|
}
|
|
10222
10249
|
const record2 = group.get(vals.id);
|
|
10223
10250
|
if (record2) {
|
|
10224
|
-
|
|
10251
|
+
let to_update = Object.fromEntries(
|
|
10252
|
+
Object.entries(vals).filter(
|
|
10253
|
+
([k, v]) => {
|
|
10254
|
+
!Object.prototype.hasOwnProperty.call(
|
|
10255
|
+
vals_to_set, k)
|
|
10256
|
+
}
|
|
10257
|
+
));
|
|
10258
|
+
record2.set_on_change(to_update);
|
|
10225
10259
|
}
|
|
10226
10260
|
}
|
|
10227
10261
|
}
|
|
@@ -13007,7 +13041,7 @@ var Sao = {
|
|
|
13007
13041
|
Sao.ScreenContainer.BetweenDates._super.init.call(this, id);
|
|
13008
13042
|
this.from.change(this._from_changed.bind(this));
|
|
13009
13043
|
},
|
|
13010
|
-
_get_value: function(entry
|
|
13044
|
+
_get_value: function(entry) {
|
|
13011
13045
|
return entry.find('input[type=text]').val();
|
|
13012
13046
|
},
|
|
13013
13047
|
_set_value: function(entry, value) {
|
|
@@ -13120,11 +13154,17 @@ var Sao = {
|
|
|
13120
13154
|
'class': 'form-control input-sm',
|
|
13121
13155
|
'type': 'number',
|
|
13122
13156
|
'step': 'any',
|
|
13157
|
+
'lang': Sao.i18n.getlang(),
|
|
13123
13158
|
}).appendTo(el);
|
|
13124
13159
|
return entry;
|
|
13125
13160
|
},
|
|
13126
|
-
_get_value: function(entry
|
|
13127
|
-
|
|
13161
|
+
_get_value: function(entry) {
|
|
13162
|
+
let value = entry.val();
|
|
13163
|
+
if (value) {
|
|
13164
|
+
value = Number(value).toLocaleString(
|
|
13165
|
+
Sao.i18n.BC47(Sao.i18n.getlang()))
|
|
13166
|
+
}
|
|
13167
|
+
return value;
|
|
13128
13168
|
},
|
|
13129
13169
|
_set_value: function(entry, value) {
|
|
13130
13170
|
return entry.val(value);
|
|
@@ -13678,9 +13718,6 @@ var Sao = {
|
|
|
13678
13718
|
return this.__current_record;
|
|
13679
13719
|
},
|
|
13680
13720
|
set current_record(record) {
|
|
13681
|
-
if ((this.__current_record === record) && record) {
|
|
13682
|
-
return;
|
|
13683
|
-
}
|
|
13684
13721
|
this.__current_record = record;
|
|
13685
13722
|
var pos = null;
|
|
13686
13723
|
var record_id = null;
|
|
@@ -25083,9 +25120,10 @@ function eval_pyson(value){
|
|
|
25083
25120
|
});
|
|
25084
25121
|
},
|
|
25085
25122
|
clear: function() {
|
|
25086
|
-
|
|
25087
|
-
|
|
25088
|
-
|
|
25123
|
+
let kinds = new Set();
|
|
25124
|
+
this.el.children().each(
|
|
25125
|
+
(i, el) => kinds.add(jQuery(el).data('kind')));
|
|
25126
|
+
kinds.forEach(kind => {
|
|
25089
25127
|
this.refresh(kind);
|
|
25090
25128
|
});
|
|
25091
25129
|
this.__messages.clear();
|
package/package.json
CHANGED
package/src/common.js
CHANGED
|
@@ -2008,6 +2008,15 @@
|
|
|
2008
2008
|
if (!context) {
|
|
2009
2009
|
context = {};
|
|
2010
2010
|
}
|
|
2011
|
+
function atof(string) {
|
|
2012
|
+
if (!string) {
|
|
2013
|
+
throw("empty string");
|
|
2014
|
+
}
|
|
2015
|
+
let { format } = new Intl.NumberFormat(
|
|
2016
|
+
Sao.i18n.BC47(Sao.i18n.getlang()));
|
|
2017
|
+
let [, decimalSign] = /^0(.)1$/.exec(format(0.1));
|
|
2018
|
+
return Number(string.replace(decimalSign, '.'));
|
|
2019
|
+
}
|
|
2011
2020
|
var convert_selection = function() {
|
|
2012
2021
|
if (typeof value == 'string') {
|
|
2013
2022
|
for (var i = 0; i < field.selection.length; i++) {
|
|
@@ -2039,8 +2048,12 @@
|
|
|
2039
2048
|
},
|
|
2040
2049
|
'float': function() {
|
|
2041
2050
|
var factor = Number(field.factor || 1);
|
|
2042
|
-
|
|
2043
|
-
|
|
2051
|
+
try {
|
|
2052
|
+
var result = atof(value);
|
|
2053
|
+
} catch (e) {
|
|
2054
|
+
return null;
|
|
2055
|
+
}
|
|
2056
|
+
if (isNaN(result)) {
|
|
2044
2057
|
return null;
|
|
2045
2058
|
} else {
|
|
2046
2059
|
return result / factor;
|
|
@@ -2048,18 +2061,25 @@
|
|
|
2048
2061
|
},
|
|
2049
2062
|
'integer': function() {
|
|
2050
2063
|
var factor = Number(field.factor || 1, 10);
|
|
2051
|
-
|
|
2064
|
+
try {
|
|
2065
|
+
var result = atof(value);
|
|
2066
|
+
} catch (e) {
|
|
2067
|
+
return null;
|
|
2068
|
+
}
|
|
2052
2069
|
if (isNaN(result)) {
|
|
2053
2070
|
return null;
|
|
2054
2071
|
} else {
|
|
2055
|
-
return result / factor;
|
|
2072
|
+
return parseInt(result / factor, 10);
|
|
2056
2073
|
}
|
|
2057
2074
|
},
|
|
2058
2075
|
'numeric': function() {
|
|
2059
2076
|
var factor = Number(field.factor || 1);
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2077
|
+
try {
|
|
2078
|
+
var result = atof(value);
|
|
2079
|
+
} catch (e) {
|
|
2080
|
+
return null;
|
|
2081
|
+
}
|
|
2082
|
+
if (isNaN(result)) {
|
|
2063
2083
|
return null;
|
|
2064
2084
|
} else {
|
|
2065
2085
|
return new Sao.Decimal(result / factor);
|
|
@@ -2114,8 +2134,7 @@
|
|
|
2114
2134
|
return '';
|
|
2115
2135
|
}
|
|
2116
2136
|
var digit = 0;
|
|
2117
|
-
var
|
|
2118
|
-
var string = String(value * factor);
|
|
2137
|
+
var string = String(value);
|
|
2119
2138
|
if (string.contains('e')) {
|
|
2120
2139
|
var exp = string.split('e')[1];
|
|
2121
2140
|
string = string.split('e')[0];
|
|
@@ -2124,7 +2143,14 @@
|
|
|
2124
2143
|
if (string.contains('.')) {
|
|
2125
2144
|
digit += string.replace(/0+$/, '').split('.')[1].length;
|
|
2126
2145
|
}
|
|
2127
|
-
|
|
2146
|
+
var factor = Number(field.factor || 1);
|
|
2147
|
+
digit -= Math.round(Math.log10(factor));
|
|
2148
|
+
return (value * factor).toLocaleString(
|
|
2149
|
+
Sao.i18n.BC47(Sao.i18n.getlang()), {
|
|
2150
|
+
useGrouping: true,
|
|
2151
|
+
minimumFractionDigits: digit,
|
|
2152
|
+
maximumFractionDigits: digit,
|
|
2153
|
+
});
|
|
2128
2154
|
};
|
|
2129
2155
|
var format_selection = function() {
|
|
2130
2156
|
if (field.selection instanceof Array) {
|
package/src/model.js
CHANGED
|
@@ -2521,6 +2521,7 @@
|
|
|
2521
2521
|
}
|
|
2522
2522
|
|
|
2523
2523
|
if (value && (value.add || value.update)) {
|
|
2524
|
+
let vals_to_set = {};
|
|
2524
2525
|
// First set already added fields to prevent triggering a
|
|
2525
2526
|
// second on_change call
|
|
2526
2527
|
if (value.update) {
|
|
@@ -2530,9 +2531,9 @@
|
|
|
2530
2531
|
}
|
|
2531
2532
|
const record2 = group.get(vals.id);
|
|
2532
2533
|
if (record2) {
|
|
2533
|
-
var vals_to_set = {};
|
|
2534
2534
|
for (var key in vals) {
|
|
2535
|
-
if (!(
|
|
2535
|
+
if (!Object.prototype.hasOwnProperty.call(
|
|
2536
|
+
new_field_names, key)) {
|
|
2536
2537
|
vals_to_set[key] = vals[key];
|
|
2537
2538
|
}
|
|
2538
2539
|
}
|
|
@@ -2566,7 +2567,14 @@
|
|
|
2566
2567
|
}
|
|
2567
2568
|
const record2 = group.get(vals.id);
|
|
2568
2569
|
if (record2) {
|
|
2569
|
-
|
|
2570
|
+
let to_update = Object.fromEntries(
|
|
2571
|
+
Object.entries(vals).filter(
|
|
2572
|
+
([k, v]) => {
|
|
2573
|
+
!Object.prototype.hasOwnProperty.call(
|
|
2574
|
+
vals_to_set, k)
|
|
2575
|
+
}
|
|
2576
|
+
));
|
|
2577
|
+
record2.set_on_change(to_update);
|
|
2570
2578
|
}
|
|
2571
2579
|
}
|
|
2572
2580
|
}
|
package/src/sao.js
CHANGED
package/src/screen.js
CHANGED
|
@@ -625,7 +625,7 @@
|
|
|
625
625
|
Sao.ScreenContainer.BetweenDates._super.init.call(this, id);
|
|
626
626
|
this.from.change(this._from_changed.bind(this));
|
|
627
627
|
},
|
|
628
|
-
_get_value: function(entry
|
|
628
|
+
_get_value: function(entry) {
|
|
629
629
|
return entry.find('input[type=text]').val();
|
|
630
630
|
},
|
|
631
631
|
_set_value: function(entry, value) {
|
|
@@ -738,11 +738,17 @@
|
|
|
738
738
|
'class': 'form-control input-sm',
|
|
739
739
|
'type': 'number',
|
|
740
740
|
'step': 'any',
|
|
741
|
+
'lang': Sao.i18n.getlang(),
|
|
741
742
|
}).appendTo(el);
|
|
742
743
|
return entry;
|
|
743
744
|
},
|
|
744
|
-
_get_value: function(entry
|
|
745
|
-
|
|
745
|
+
_get_value: function(entry) {
|
|
746
|
+
let value = entry.val();
|
|
747
|
+
if (value) {
|
|
748
|
+
value = Number(value).toLocaleString(
|
|
749
|
+
Sao.i18n.BC47(Sao.i18n.getlang()))
|
|
750
|
+
}
|
|
751
|
+
return value;
|
|
746
752
|
},
|
|
747
753
|
_set_value: function(entry, value) {
|
|
748
754
|
return entry.val(value);
|
|
@@ -1296,9 +1302,6 @@
|
|
|
1296
1302
|
return this.__current_record;
|
|
1297
1303
|
},
|
|
1298
1304
|
set current_record(record) {
|
|
1299
|
-
if ((this.__current_record === record) && record) {
|
|
1300
|
-
return;
|
|
1301
|
-
}
|
|
1302
1305
|
this.__current_record = record;
|
|
1303
1306
|
var pos = null;
|
|
1304
1307
|
var record_id = null;
|
package/src/window.js
CHANGED
|
@@ -101,9 +101,10 @@
|
|
|
101
101
|
});
|
|
102
102
|
},
|
|
103
103
|
clear: function() {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
104
|
+
let kinds = new Set();
|
|
105
|
+
this.el.children().each(
|
|
106
|
+
(i, el) => kinds.add(jQuery(el).data('kind')));
|
|
107
|
+
kinds.forEach(kind => {
|
|
107
108
|
this.refresh(kind);
|
|
108
109
|
});
|
|
109
110
|
this.__messages.clear();
|