@visactor/vtable 1.19.1 → 1.19.2

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.
Files changed (77) hide show
  1. package/cjs/ListTable.js +1 -1
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/PivotTable.js +4 -0
  4. package/cjs/PivotTable.js.map +1 -1
  5. package/cjs/core/BaseTable.js +1 -1
  6. package/cjs/core/BaseTable.js.map +1 -1
  7. package/cjs/data/DataSource.js +14 -5
  8. package/cjs/data/DataSource.js.map +1 -1
  9. package/cjs/dataset/dataset.d.ts +1 -0
  10. package/cjs/dataset/dataset.js +66 -2
  11. package/cjs/dataset/dataset.js.map +1 -1
  12. package/cjs/edit/edit-manager.js +8 -5
  13. package/cjs/edit/edit-manager.js.map +1 -1
  14. package/cjs/index.d.ts +2 -1
  15. package/cjs/index.js +11 -2
  16. package/cjs/index.js.map +1 -1
  17. package/cjs/layout/pivot-header-layout.d.ts +1 -0
  18. package/cjs/layout/pivot-header-layout.js +18 -7
  19. package/cjs/layout/pivot-header-layout.js.map +1 -1
  20. package/cjs/layout/simple-header-layout.d.ts +2 -0
  21. package/cjs/layout/simple-header-layout.js +25 -9
  22. package/cjs/layout/simple-header-layout.js.map +1 -1
  23. package/cjs/scenegraph/graphic/icon.js.map +1 -1
  24. package/cjs/scenegraph/group-creater/cell-helper.js +3 -3
  25. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  26. package/cjs/scenegraph/group-creater/column-helper.js +1 -1
  27. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  28. package/cjs/scenegraph/layout/compute-col-width.js +11 -1
  29. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  30. package/cjs/ts-types/dataset/aggregation.d.ts +8 -6
  31. package/cjs/ts-types/dataset/aggregation.js +109 -54
  32. package/cjs/ts-types/dataset/aggregation.js.map +1 -1
  33. package/cjs/ts-types/list-table/define/basic-define.d.ts +1 -0
  34. package/cjs/ts-types/list-table/define/basic-define.js.map +1 -1
  35. package/cjs/ts-types/new-data-set.d.ts +1 -0
  36. package/cjs/ts-types/new-data-set.js.map +1 -1
  37. package/cjs/vrender.js.map +1 -1
  38. package/dist/vtable.js +500 -44
  39. package/dist/vtable.min.js +2 -2
  40. package/es/ListTable.js +1 -1
  41. package/es/ListTable.js.map +1 -1
  42. package/es/PivotTable.js +4 -0
  43. package/es/PivotTable.js.map +1 -1
  44. package/es/core/BaseTable.js +1 -1
  45. package/es/core/BaseTable.js.map +1 -1
  46. package/es/data/DataSource.js +14 -5
  47. package/es/data/DataSource.js.map +1 -1
  48. package/es/dataset/dataset.d.ts +1 -0
  49. package/es/dataset/dataset.js +66 -2
  50. package/es/dataset/dataset.js.map +1 -1
  51. package/es/edit/edit-manager.js +8 -5
  52. package/es/edit/edit-manager.js.map +1 -1
  53. package/es/index.d.ts +2 -1
  54. package/es/index.js +3 -1
  55. package/es/index.js.map +1 -1
  56. package/es/layout/pivot-header-layout.d.ts +1 -0
  57. package/es/layout/pivot-header-layout.js +18 -7
  58. package/es/layout/pivot-header-layout.js.map +1 -1
  59. package/es/layout/simple-header-layout.d.ts +2 -0
  60. package/es/layout/simple-header-layout.js +25 -9
  61. package/es/layout/simple-header-layout.js.map +1 -1
  62. package/es/scenegraph/graphic/icon.js.map +1 -1
  63. package/es/scenegraph/group-creater/cell-helper.js +3 -3
  64. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  65. package/es/scenegraph/group-creater/column-helper.js +1 -1
  66. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  67. package/es/scenegraph/layout/compute-col-width.js +11 -1
  68. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  69. package/es/ts-types/dataset/aggregation.d.ts +8 -6
  70. package/es/ts-types/dataset/aggregation.js +109 -54
  71. package/es/ts-types/dataset/aggregation.js.map +1 -1
  72. package/es/ts-types/list-table/define/basic-define.d.ts +1 -0
  73. package/es/ts-types/list-table/define/basic-define.js.map +1 -1
  74. package/es/ts-types/new-data-set.d.ts +1 -0
  75. package/es/ts-types/new-data-set.js.map +1 -1
  76. package/es/vrender.js.map +1 -1
  77. package/package.json +4 -4
@@ -11,8 +11,9 @@ exports.registeredAggregators = {};
11
11
  class Aggregator {
12
12
  constructor(config) {
13
13
  var _a;
14
- this.isAggregator = !0, this.isRecord = !0, this.records = [], this.key = config.key,
15
- this.field = config.field, this.formatFun = config.formatFun, this.isRecord = null !== (_a = config.isRecord) && void 0 !== _a ? _a : this.isRecord;
14
+ this.isAggregator = !0, this.isRecord = !0, this.records = [], this.children = [],
15
+ this.key = config.key, this.field = config.field, this.formatFun = config.formatFun,
16
+ this.isRecord = null !== (_a = config.isRecord) && void 0 !== _a ? _a : this.isRecord;
16
17
  }
17
18
  clearCacheValue() {
18
19
  this._formatedValue = void 0;
@@ -22,7 +23,7 @@ class Aggregator {
22
23
  this._formatedValue;
23
24
  }
24
25
  reset() {
25
- this.records = [], this.clearCacheValue();
26
+ this.records = [], this.changedValue = void 0, this.children = [], this.clearCacheValue();
26
27
  }
27
28
  }
28
29
 
@@ -34,21 +35,24 @@ class RecordAggregator extends Aggregator {
34
35
  }
35
36
  push(record) {
36
37
  record && this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
37
- this.clearCacheValue();
38
+ record.isAggregator && this.children && this.children.push(record), this.clearCacheValue();
38
39
  }
39
40
  deleteRecord(record) {
40
- record && this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
41
+ record && (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
42
+ record.isAggregator && this.children && (this.children = this.children.filter((item => item !== record)))),
41
43
  this.clearCacheValue();
42
44
  }
43
45
  updateRecord(oldRecord, newRecord) {
44
46
  oldRecord && newRecord && (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
47
+ oldRecord.isAggregator && newRecord.isAggregator && this.children && (this.children = this.children.map((item => item === oldRecord ? newRecord : item))),
45
48
  this.clearCacheValue());
46
49
  }
47
50
  value() {
48
- return this.records;
51
+ var _a;
52
+ return null !== (_a = this.changedValue) && void 0 !== _a ? _a : this.records;
49
53
  }
50
54
  reset() {
51
- this.records = [];
55
+ this.children = [], this.changedValue = void 0, this.records = [];
52
56
  }
53
57
  recalculate() {}
54
58
  }
@@ -60,24 +64,27 @@ class NoneAggregator extends Aggregator {
60
64
  super(...arguments), this.type = __1.AggregationType.NONE, this.isRecord = !0;
61
65
  }
62
66
  push(record) {
63
- record && (this.isRecord && (this.records = [ record ]), this.field && (this.fieldValue = record[this.field])),
64
- this.clearCacheValue();
67
+ record && (this.isRecord && (this.records = [ record ]), record.isAggregator && this.children && (this.children = [ record ]),
68
+ this.field && (this.fieldValue = record[this.field])), this.clearCacheValue();
65
69
  }
66
70
  deleteRecord(record) {
67
71
  record && (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
72
+ record.isAggregator && this.children && (this.children = this.children.filter((item => item !== record))),
68
73
  this.field && this.records.length && (this.fieldValue = this.records[this.records.length - 1][this.field])),
69
74
  this.clearCacheValue();
70
75
  }
71
76
  updateRecord(oldRecord, newRecord) {
72
77
  oldRecord && newRecord && (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
78
+ oldRecord.isAggregator && newRecord.isAggregator && this.children && (this.children = this.children.map((item => item === oldRecord ? newRecord : item))),
73
79
  this.field && this.records.length && (this.fieldValue = this.records[this.records.length - 1][this.field]),
74
80
  this.clearCacheValue());
75
81
  }
76
82
  value() {
77
- return this.fieldValue;
83
+ var _a;
84
+ return null !== (_a = this.changedValue) && void 0 !== _a ? _a : this.fieldValue;
78
85
  }
79
86
  reset() {
80
- this.records = [], this.fieldValue = void 0;
87
+ this.children = [], this.changedValue = void 0, this.records = [], this.fieldValue = void 0;
81
88
  }
82
89
  recalculate() {}
83
90
  }
@@ -91,25 +98,28 @@ class CustomAggregator extends Aggregator {
91
98
  }
92
99
  push(record) {
93
100
  record && (this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
94
- this.field && this.values.push(record[this.field])), this.clearCacheValue();
101
+ record.isAggregator && this.children && this.children.push(record), this.field && this.values.push(record[this.field])),
102
+ this.clearCacheValue();
95
103
  }
96
104
  updateRecord(oldRecord, newRecord) {
97
105
  oldRecord && newRecord && (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
106
+ oldRecord.isAggregator && newRecord.isAggregator && this.children && (this.children = this.children.map((item => item === oldRecord ? newRecord : item))),
98
107
  this.field && this.records.length && (this.values = this.records.map((item => item[this.field]))),
99
108
  this.clearCacheValue());
100
109
  }
101
110
  deleteRecord(record) {
102
111
  record && (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
112
+ record.isAggregator && this.children && (this.children = this.children.filter((item => item !== record))),
103
113
  this.field && this.records.length && (this.values = this.records.map((item => item[this.field])))),
104
114
  this.clearCacheValue();
105
115
  }
106
116
  value() {
107
- var _a;
117
+ var _a, _b;
108
118
  return this.fieldValue || (this.fieldValue = null === (_a = this.aggregationFun) || void 0 === _a ? void 0 : _a.call(this, this.values, this.records, this.field)),
109
- this.fieldValue;
119
+ null !== (_b = this.changedValue) && void 0 !== _b ? _b : this.fieldValue;
110
120
  }
111
121
  reset() {
112
- this.records = [], this.fieldValue = void 0;
122
+ this.records = [], this.children = [], this.changedValue = void 0, this.fieldValue = void 0;
113
123
  }
114
124
  recalculate() {
115
125
  this.fieldValue = void 0, this._formatedValue = void 0;
@@ -126,26 +136,28 @@ class RecalculateAggregator extends Aggregator {
126
136
  }
127
137
  push(record) {
128
138
  record && this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
129
- this.clearCacheValue();
139
+ this.children && record.isAggregator && this.children.push(record), this.clearCacheValue();
130
140
  }
131
141
  deleteRecord(record) {
132
- record && this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
142
+ record && (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
143
+ record.isAggregator && this.children && (this.children = this.children.filter((item => item !== record)))),
133
144
  this.clearCacheValue();
134
145
  }
135
146
  updateRecord(oldRecord, newRecord) {
136
147
  oldRecord && newRecord && (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
148
+ oldRecord.isAggregator && newRecord.isAggregator && this.children && (this.children = this.children.map((item => item === oldRecord ? newRecord : item))),
137
149
  this.clearCacheValue());
138
150
  }
139
151
  value() {
140
- var _a;
152
+ var _a, _b;
141
153
  if (!this.fieldValue) {
142
154
  const aggregatorValue = _getDependAggregatorValues(this.dependAggregators, this.dependIndicatorKeys);
143
155
  this.fieldValue = null === (_a = this.calculateFun) || void 0 === _a ? void 0 : _a.call(this, aggregatorValue, this.records, this.field);
144
156
  }
145
- return this.fieldValue;
157
+ return null !== (_b = this.changedValue) && void 0 !== _b ? _b : this.fieldValue;
146
158
  }
147
159
  reset() {
148
- this.records = [], this.fieldValue = void 0;
160
+ this.records = [], this.children = [], this.changedValue = void 0, this.fieldValue = void 0;
149
161
  }
150
162
  recalculate() {}
151
163
  }
@@ -160,7 +172,8 @@ class SumAggregator extends Aggregator {
160
172
  }
161
173
  push(record) {
162
174
  if (record) if (this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
163
- record.isAggregator) {
175
+ record.isAggregator && this.children) {
176
+ this.children.push(record);
164
177
  const value = record.value();
165
178
  this.sum += null != value ? value : 0, this.needSplitPositiveAndNegativeForSum && (value > 0 ? this.positiveSum += value : value < 0 && (this.nagetiveSum += value));
166
179
  } else if (this.field && !isNaN(parseFloat(record[this.field]))) {
@@ -171,7 +184,8 @@ class SumAggregator extends Aggregator {
171
184
  }
172
185
  deleteRecord(record) {
173
186
  if (record) if (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
174
- record.isAggregator) {
187
+ record.isAggregator && this.children) {
188
+ this.children = this.children.filter((item => item !== record));
175
189
  const value = record.value();
176
190
  this.sum -= null != value ? value : 0, this.needSplitPositiveAndNegativeForSum && (value > 0 ? this.positiveSum -= value : value < 0 && (this.nagetiveSum -= value));
177
191
  } else if (this.field && !isNaN(parseFloat(record[this.field]))) {
@@ -183,9 +197,11 @@ class SumAggregator extends Aggregator {
183
197
  updateRecord(oldRecord, newRecord) {
184
198
  if (oldRecord && newRecord) {
185
199
  if (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
186
- oldRecord.isAggregator) {
187
- const oldValue = oldRecord.value(), newValue = newRecord.value();
188
- this.sum += newValue - oldValue, this.needSplitPositiveAndNegativeForSum && (oldValue > 0 ? this.positiveSum -= oldValue : oldValue < 0 && (this.nagetiveSum -= oldValue),
200
+ oldRecord.isAggregator && this.children) {
201
+ const oldValue = oldRecord.value();
202
+ this.children = this.children.filter((item => item !== oldRecord));
203
+ const newValue = newRecord.value();
204
+ this.children.push(newRecord), this.sum += newValue - oldValue, this.needSplitPositiveAndNegativeForSum && (oldValue > 0 ? this.positiveSum -= oldValue : oldValue < 0 && (this.nagetiveSum -= oldValue),
189
205
  newValue > 0 ? this.positiveSum += newValue : newValue < 0 && (this.nagetiveSum += newValue));
190
206
  } else if (this.field && !isNaN(parseFloat(oldRecord[this.field]))) {
191
207
  const oldValue = parseFloat(oldRecord[this.field]), newValue = parseFloat(newRecord[this.field]);
@@ -196,8 +212,8 @@ class SumAggregator extends Aggregator {
196
212
  }
197
213
  }
198
214
  value() {
199
- var _a;
200
- return (null === (_a = this.records) || void 0 === _a ? void 0 : _a.length) >= 1 ? this.sum : void 0;
215
+ var _a, _b;
216
+ return null !== (_a = this.changedValue) && void 0 !== _a ? _a : (null === (_b = this.records) || void 0 === _b ? void 0 : _b.length) >= 1 ? this.sum : void 0;
201
217
  }
202
218
  positiveValue() {
203
219
  return this.positiveSum;
@@ -209,7 +225,13 @@ class SumAggregator extends Aggregator {
209
225
  super.reset(), this.records = [], this.sum = 0;
210
226
  }
211
227
  recalculate() {
212
- if (this.sum = 0, this._formatedValue = void 0, this.records) for (let i = 0; i < this.records.length; i++) {
228
+ if (this.sum = 0, this._formatedValue = void 0, this.children && this.children.length > 0) for (let i = 0; i < this.children.length; i++) {
229
+ const child = this.children[i];
230
+ if (child.isAggregator) {
231
+ const value = child.value();
232
+ this.sum += null != value ? value : 0, this.needSplitPositiveAndNegativeForSum && (value > 0 ? this.positiveSum += value : value < 0 && (this.nagetiveSum += value));
233
+ }
234
+ } else if (this.records) for (let i = 0; i < this.records.length; i++) {
213
235
  const record = this.records[i];
214
236
  if (record.isAggregator) {
215
237
  const value = record.value();
@@ -230,24 +252,34 @@ class CountAggregator extends Aggregator {
230
252
  }
231
253
  push(record) {
232
254
  record && (this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
233
- record.isAggregator ? this.count += record.value() : this.count++), this.clearCacheValue();
255
+ record.isAggregator ? (this.children && this.children.push(record), this.count += record.value()) : this.count++),
256
+ this.clearCacheValue();
234
257
  }
235
258
  deleteRecord(record) {
236
259
  record && (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
237
- record.isAggregator ? this.count -= record.value() : this.count--), this.clearCacheValue();
260
+ record.isAggregator ? (this.children && (this.children = this.children.filter((item => item !== record))),
261
+ this.count -= record.value()) : this.count--), this.clearCacheValue();
238
262
  }
239
263
  updateRecord(oldRecord, newRecord) {
240
264
  oldRecord && newRecord && (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
241
- oldRecord.isAggregator && (this.count += newRecord.value() - oldRecord.value()));
265
+ oldRecord.isAggregator && (this.count += newRecord.value() - oldRecord.value()),
266
+ oldRecord.isAggregator && newRecord.isAggregator && this.children && (this.children = this.children.map((item => item === oldRecord ? newRecord : item))));
242
267
  }
243
268
  value() {
244
- return this.count;
269
+ var _a;
270
+ return null !== (_a = this.changedValue) && void 0 !== _a ? _a : this.count;
245
271
  }
246
272
  reset() {
247
- this.records = [], this.count = 0;
273
+ this.changedValue = void 0, this.children = [], this.records = [], this.count = 0;
248
274
  }
249
275
  recalculate() {
250
- if (this.count = 0, this._formatedValue = void 0, this.records) for (let i = 0; i < this.records.length; i++) {
276
+ if (this.count = 0, this._formatedValue = void 0, this.children && this.children.length > 0) for (let i = 0; i < this.children.length; i++) {
277
+ const child = this.children[i];
278
+ if (child.isAggregator) {
279
+ const value = child.value();
280
+ this.count += null != value ? value : 0;
281
+ } else this.count++;
282
+ } else if (this.records) for (let i = 0; i < this.records.length; i++) {
251
283
  const record = this.records[i];
252
284
  record.isAggregator ? this.count += record.value() : this.count++;
253
285
  }
@@ -262,31 +294,38 @@ class AvgAggregator extends Aggregator {
262
294
  }
263
295
  push(record) {
264
296
  record && (this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
265
- record.isAggregator && record.type === __1.AggregationType.AVG ? (this.sum += record.sum,
266
- this.count += record.count) : this.field && !isNaN(parseFloat(record[this.field])) && (this.sum += parseFloat(record[this.field]),
297
+ record.isAggregator && record.type === __1.AggregationType.AVG ? (this.children && this.children.push(record),
298
+ this.sum += record.sum, this.count += record.count) : this.field && !isNaN(parseFloat(record[this.field])) && (this.sum += parseFloat(record[this.field]),
267
299
  this.count++)), this.clearCacheValue();
268
300
  }
269
301
  deleteRecord(record) {
270
302
  record && (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
271
- record.isAggregator && record.type === __1.AggregationType.AVG ? (this.sum -= record.sum,
272
- this.count -= record.count) : this.field && !isNaN(parseFloat(record[this.field])) && (this.sum -= parseFloat(record[this.field]),
303
+ record.isAggregator && record.type === __1.AggregationType.AVG ? (this.children && (this.children = this.children.filter((item => item !== record))),
304
+ this.sum -= record.sum, this.count -= record.count) : this.field && !isNaN(parseFloat(record[this.field])) && (this.sum -= parseFloat(record[this.field]),
273
305
  this.count--)), this.clearCacheValue();
274
306
  }
275
307
  updateRecord(oldRecord, newRecord) {
276
308
  oldRecord && newRecord && (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
277
- oldRecord.isAggregator && oldRecord.type === __1.AggregationType.AVG ? (this.sum += newRecord.sum - oldRecord.sum,
278
- this.count += newRecord.count - oldRecord.count) : this.field && !isNaN(parseFloat(oldRecord[this.field])) && (this.sum += parseFloat(newRecord[this.field]) - parseFloat(oldRecord[this.field])),
309
+ oldRecord.isAggregator && oldRecord.type === __1.AggregationType.AVG ? (this.children && newRecord.isAggregator && (this.children = this.children.map((item => item === oldRecord ? newRecord : item))),
310
+ this.sum += newRecord.sum - oldRecord.sum, this.count += newRecord.count - oldRecord.count) : this.field && !isNaN(parseFloat(oldRecord[this.field])) && (this.sum += parseFloat(newRecord[this.field]) - parseFloat(oldRecord[this.field])),
279
311
  this.clearCacheValue());
280
312
  }
281
313
  value() {
282
- var _a;
283
- return (null === (_a = this.records) || void 0 === _a ? void 0 : _a.length) >= 1 ? this.sum / this.count : void 0;
314
+ var _a, _b;
315
+ return null !== (_a = this.changedValue) && void 0 !== _a ? _a : (null === (_b = this.records) || void 0 === _b ? void 0 : _b.length) >= 1 ? this.sum / this.count : void 0;
284
316
  }
285
317
  reset() {
286
- this.records = [], this.sum = 0, this.count = 0;
318
+ this.changedValue = void 0, this.children = [], this.records = [], this.sum = 0,
319
+ this.count = 0;
287
320
  }
288
321
  recalculate() {
289
- if (this.sum = 0, this.count = 0, this._formatedValue = void 0, this.records) for (let i = 0; i < this.records.length; i++) {
322
+ if (this.sum = 0, this.count = 0, this._formatedValue = void 0, this.children && this.children.length > 0) for (let i = 0; i < this.children.length; i++) {
323
+ const child = this.children[i];
324
+ if (child.isAggregator && child.type === __1.AggregationType.AVG) {
325
+ const childValue = child.value();
326
+ this.sum += childValue * child.count, this.count += child.count;
327
+ }
328
+ } else if (this.records) for (let i = 0; i < this.records.length; i++) {
290
329
  const record = this.records[i];
291
330
  record.isAggregator && record.type === __1.AggregationType.AVG ? (this.sum += record.sum,
292
331
  this.count += record.count) : this.field && !isNaN(parseFloat(record[this.field])) && (this.sum += parseFloat(record[this.field]),
@@ -303,26 +342,34 @@ class MaxAggregator extends Aggregator {
303
342
  }
304
343
  push(record) {
305
344
  record && (this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
306
- record.isAggregator ? this.max = record.max > this.max ? record.max : this.max : "number" == typeof record ? this.max = record > this.max ? record : this.max : this.field && "number" == typeof record[this.field] ? this.max = record[this.field] > this.max ? record[this.field] : this.max : this.field && !isNaN(record[this.field]) && (this.max = parseFloat(record[this.field]) > this.max ? parseFloat(record[this.field]) : this.max)),
345
+ record.isAggregator ? (this.children && this.children.push(record), this.max = record.max > this.max ? record.max : this.max) : "number" == typeof record ? this.max = record > this.max ? record : this.max : this.field && "number" == typeof record[this.field] ? this.max = record[this.field] > this.max ? record[this.field] : this.max : this.field && !isNaN(record[this.field]) && (this.max = parseFloat(record[this.field]) > this.max ? parseFloat(record[this.field]) : this.max)),
307
346
  this.clearCacheValue();
308
347
  }
309
348
  deleteRecord(record) {
310
349
  record && (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
350
+ record.isAggregator && this.children && (this.children = this.children.filter((item => item !== record))),
311
351
  this.recalculate());
312
352
  }
313
353
  updateRecord(oldRecord, newRecord) {
314
354
  oldRecord && newRecord && (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
355
+ oldRecord.isAggregator && newRecord.isAggregator && this.children && (this.children = this.children.map((item => item === oldRecord ? newRecord : item))),
315
356
  this.recalculate());
316
357
  }
317
358
  value() {
318
- var _a;
319
- return (null === (_a = this.records) || void 0 === _a ? void 0 : _a.length) >= 1 ? this.max : void 0;
359
+ var _a, _b;
360
+ return null !== (_a = this.changedValue) && void 0 !== _a ? _a : (null === (_b = this.records) || void 0 === _b ? void 0 : _b.length) >= 1 ? this.max : void 0;
320
361
  }
321
362
  reset() {
322
- this.records = [], this.max = Number.MIN_SAFE_INTEGER;
363
+ this.records = [], this.changedValue = void 0, this.children = [], this.max = Number.MIN_SAFE_INTEGER;
323
364
  }
324
365
  recalculate() {
325
- if (this.max = Number.MIN_SAFE_INTEGER, this._formatedValue = void 0, this.records) for (let i = 0; i < this.records.length; i++) {
366
+ if (this.max = Number.MIN_SAFE_INTEGER, this._formatedValue = void 0, this.children && this.children.length > 0) for (let i = 0; i < this.children.length; i++) {
367
+ const child = this.children[i];
368
+ if (child.isAggregator) {
369
+ const childValue = child.value();
370
+ this.max = Math.max(this.max, childValue);
371
+ }
372
+ } else if (this.records) for (let i = 0; i < this.records.length; i++) {
326
373
  const record = this.records[i];
327
374
  record.isAggregator ? this.max = record.max > this.max ? record.max : this.max : "number" == typeof record ? this.max = record > this.max ? record : this.max : this.field && "number" == typeof record[this.field] ? this.max = record[this.field] > this.max ? record[this.field] : this.max : this.field && !isNaN(record[this.field]) && (this.max = parseFloat(record[this.field]) > this.max ? parseFloat(record[this.field]) : this.max);
328
375
  }
@@ -337,26 +384,34 @@ class MinAggregator extends Aggregator {
337
384
  }
338
385
  push(record) {
339
386
  record && (this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
340
- record.isAggregator ? this.min = record.min < this.min ? record.min : this.min : "number" == typeof record ? this.min = record < this.min ? record : this.min : this.field && "number" == typeof record[this.field] ? this.min = record[this.field] < this.min ? record[this.field] : this.min : this.field && !isNaN(record[this.field]) && (this.min = parseFloat(record[this.field]) < this.min ? parseFloat(record[this.field]) : this.min)),
387
+ record.isAggregator ? (this.children && this.children.push(record), this.min = record.min < this.min ? record.min : this.min) : "number" == typeof record ? this.min = record < this.min ? record : this.min : this.field && "number" == typeof record[this.field] ? this.min = record[this.field] < this.min ? record[this.field] : this.min : this.field && !isNaN(record[this.field]) && (this.min = parseFloat(record[this.field]) < this.min ? parseFloat(record[this.field]) : this.min)),
341
388
  this.clearCacheValue();
342
389
  }
343
390
  deleteRecord(record) {
344
391
  record && (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
392
+ record.isAggregator && this.children && (this.children = this.children.filter((item => item !== record))),
345
393
  this.recalculate());
346
394
  }
347
395
  updateRecord(oldRecord, newRecord) {
348
396
  oldRecord && newRecord && (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
397
+ oldRecord.isAggregator && newRecord.isAggregator && this.children && (this.children = this.children.map((item => item === oldRecord ? newRecord : item))),
349
398
  this.recalculate());
350
399
  }
351
400
  value() {
352
- var _a;
353
- return (null === (_a = this.records) || void 0 === _a ? void 0 : _a.length) >= 1 ? this.min : void 0;
401
+ var _a, _b;
402
+ return null !== (_a = this.changedValue) && void 0 !== _a ? _a : (null === (_b = this.records) || void 0 === _b ? void 0 : _b.length) >= 1 ? this.min : void 0;
354
403
  }
355
404
  reset() {
356
- this.records = [], this.min = Number.MAX_SAFE_INTEGER;
405
+ this.records = [], this.changedValue = void 0, this.children = [], this.min = Number.MAX_SAFE_INTEGER;
357
406
  }
358
407
  recalculate() {
359
- if (this.min = Number.MAX_SAFE_INTEGER, this._formatedValue = void 0, this.records) for (let i = 0; i < this.records.length; i++) {
408
+ if (this.min = Number.MAX_SAFE_INTEGER, this._formatedValue = void 0, this.children && this.children.length > 0) for (let i = 0; i < this.children.length; i++) {
409
+ const child = this.children[i];
410
+ if (child.isAggregator) {
411
+ const childValue = child.value();
412
+ this.min = Math.min(this.min, childValue);
413
+ }
414
+ } else if (this.records) for (let i = 0; i < this.records.length; i++) {
360
415
  const record = this.records[i];
361
416
  record.isAggregator ? this.min = record.min < this.min ? record.min : this.min : "number" == typeof record ? this.min = record < this.min ? record : this.min : this.field && "number" == typeof record[this.field] ? this.min = record[this.field] < this.min ? record[this.field] : this.min : this.field && !isNaN(record[this.field]) && (this.min = parseFloat(record[this.field]) < this.min ? parseFloat(record[this.field]) : this.min);
362
417
  }