@visactor/vtable 1.3.3 → 1.4.0

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 (115) hide show
  1. package/cjs/ListTable.js +25 -15
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/PivotChart.d.ts +1 -2
  4. package/cjs/PivotChart.js +0 -7
  5. package/cjs/PivotChart.js.map +1 -1
  6. package/cjs/PivotTable.d.ts +1 -1
  7. package/cjs/PivotTable.js +34 -14
  8. package/cjs/PivotTable.js.map +1 -1
  9. package/cjs/components/react/react-custom-layout.d.ts +21 -0
  10. package/cjs/components/react/react-custom-layout.js +48 -0
  11. package/cjs/components/react/react-custom-layout.js.map +1 -0
  12. package/cjs/core/BaseTable.d.ts +5 -0
  13. package/cjs/core/BaseTable.js +37 -23
  14. package/cjs/core/BaseTable.js.map +1 -1
  15. package/cjs/core/style.js +1 -1
  16. package/cjs/core/style.js.map +1 -1
  17. package/cjs/data/DataSource.d.ts +6 -1
  18. package/cjs/data/DataSource.js +12 -2
  19. package/cjs/data/DataSource.js.map +1 -1
  20. package/cjs/dataset/dataset.d.ts +15 -2
  21. package/cjs/dataset/dataset.js +187 -72
  22. package/cjs/dataset/dataset.js.map +1 -1
  23. package/cjs/dataset/statistics-helper.d.ts +43 -3
  24. package/cjs/dataset/statistics-helper.js +61 -26
  25. package/cjs/dataset/statistics-helper.js.map +1 -1
  26. package/cjs/event/listener/table-group.js +2 -2
  27. package/cjs/event/listener/table-group.js.map +1 -1
  28. package/cjs/index.d.ts +3 -1
  29. package/cjs/index.js +14 -5
  30. package/cjs/index.js.map +1 -1
  31. package/cjs/layout/pivot-header-layout.d.ts +1 -0
  32. package/cjs/layout/pivot-header-layout.js +7 -0
  33. package/cjs/layout/pivot-header-layout.js.map +1 -1
  34. package/cjs/scenegraph/component/custom.js +6 -4
  35. package/cjs/scenegraph/component/custom.js.map +1 -1
  36. package/cjs/scenegraph/group-creater/cell-helper.js +4 -0
  37. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  38. package/cjs/scenegraph/layout/compute-col-width.js +2 -2
  39. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  40. package/cjs/scenegraph/layout/compute-row-height.js +3 -3
  41. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  42. package/cjs/scenegraph/scenegraph.d.ts +2 -1
  43. package/cjs/scenegraph/scenegraph.js +12 -3
  44. package/cjs/scenegraph/scenegraph.js.map +1 -1
  45. package/cjs/ts-types/base-table.d.ts +8 -0
  46. package/cjs/ts-types/base-table.js.map +1 -1
  47. package/cjs/ts-types/customLayout.d.ts +1 -1
  48. package/cjs/ts-types/customLayout.js.map +1 -1
  49. package/cjs/ts-types/new-data-set.d.ts +9 -1
  50. package/cjs/ts-types/new-data-set.js +1 -1
  51. package/cjs/ts-types/new-data-set.js.map +1 -1
  52. package/cjs/ts-types/pivot-table/corner.d.ts +12 -0
  53. package/cjs/ts-types/pivot-table/corner.js.map +1 -1
  54. package/cjs/vrender.d.ts +4 -0
  55. package/cjs/vrender.js +39 -11
  56. package/cjs/vrender.js.map +1 -1
  57. package/dist/vtable.js +25311 -9542
  58. package/dist/vtable.min.js +2 -2
  59. package/es/ListTable.js +21 -11
  60. package/es/ListTable.js.map +1 -1
  61. package/es/PivotChart.d.ts +1 -2
  62. package/es/PivotChart.js +0 -7
  63. package/es/PivotChart.js.map +1 -1
  64. package/es/PivotTable.d.ts +1 -1
  65. package/es/PivotTable.js +34 -14
  66. package/es/PivotTable.js.map +1 -1
  67. package/es/components/react/react-custom-layout.d.ts +21 -0
  68. package/es/components/react/react-custom-layout.js +38 -0
  69. package/es/components/react/react-custom-layout.js.map +1 -0
  70. package/es/core/BaseTable.d.ts +5 -0
  71. package/es/core/BaseTable.js +40 -23
  72. package/es/core/BaseTable.js.map +1 -1
  73. package/es/core/style.js +1 -1
  74. package/es/core/style.js.map +1 -1
  75. package/es/data/DataSource.d.ts +6 -1
  76. package/es/data/DataSource.js +12 -2
  77. package/es/data/DataSource.js.map +1 -1
  78. package/es/dataset/dataset.d.ts +15 -2
  79. package/es/dataset/dataset.js +187 -73
  80. package/es/dataset/dataset.js.map +1 -1
  81. package/es/dataset/statistics-helper.d.ts +43 -3
  82. package/es/dataset/statistics-helper.js +55 -23
  83. package/es/dataset/statistics-helper.js.map +1 -1
  84. package/es/event/listener/table-group.js +2 -2
  85. package/es/event/listener/table-group.js.map +1 -1
  86. package/es/index.d.ts +3 -1
  87. package/es/index.js +5 -1
  88. package/es/index.js.map +1 -1
  89. package/es/layout/pivot-header-layout.d.ts +1 -0
  90. package/es/layout/pivot-header-layout.js +7 -0
  91. package/es/layout/pivot-header-layout.js.map +1 -1
  92. package/es/scenegraph/component/custom.js +7 -3
  93. package/es/scenegraph/component/custom.js.map +1 -1
  94. package/es/scenegraph/group-creater/cell-helper.js +4 -0
  95. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  96. package/es/scenegraph/layout/compute-col-width.js +3 -3
  97. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  98. package/es/scenegraph/layout/compute-row-height.js +4 -4
  99. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  100. package/es/scenegraph/scenegraph.d.ts +2 -1
  101. package/es/scenegraph/scenegraph.js +12 -3
  102. package/es/scenegraph/scenegraph.js.map +1 -1
  103. package/es/ts-types/base-table.d.ts +8 -0
  104. package/es/ts-types/base-table.js.map +1 -1
  105. package/es/ts-types/customLayout.d.ts +1 -1
  106. package/es/ts-types/customLayout.js.map +1 -1
  107. package/es/ts-types/new-data-set.d.ts +9 -1
  108. package/es/ts-types/new-data-set.js +1 -1
  109. package/es/ts-types/new-data-set.js.map +1 -1
  110. package/es/ts-types/pivot-table/corner.d.ts +12 -0
  111. package/es/ts-types/pivot-table/corner.js.map +1 -1
  112. package/es/vrender.d.ts +4 -0
  113. package/es/vrender.js +9 -3
  114. package/es/vrender.js.map +1 -1
  115. package/package.json +8 -8
@@ -15,10 +15,16 @@ export declare abstract class Aggregator implements IAggregator {
15
15
  isRecord?: boolean;
16
16
  records?: any[];
17
17
  type?: string;
18
+ key: string;
18
19
  field?: string | string[];
19
20
  formatFun?: any;
20
21
  _formatedValue?: any;
21
- constructor(dimension: string, formatFun?: any, isRecord?: boolean);
22
+ constructor(config: {
23
+ key: string;
24
+ dimension: string;
25
+ formatFun?: any;
26
+ isRecord?: boolean;
27
+ });
22
28
  abstract push(record: any): void;
23
29
  abstract value(): any;
24
30
  abstract recalculate(): any;
@@ -51,7 +57,35 @@ export declare class CustomAggregator extends Aggregator {
51
57
  aggregationFun?: Function;
52
58
  values: (string | number)[];
53
59
  fieldValue?: any;
54
- constructor(dimension: string, formatFun?: any, isRecord?: boolean, aggregationFun?: Function);
60
+ constructor(config: {
61
+ key: string;
62
+ dimension: string;
63
+ formatFun?: any;
64
+ isRecord?: boolean;
65
+ aggregationFun?: Function;
66
+ });
67
+ push(record: any): void;
68
+ value(): any;
69
+ reset(): void;
70
+ recalculate(): void;
71
+ }
72
+ export declare class RecalculateAggregator extends Aggregator {
73
+ type: string;
74
+ isRecord?: boolean;
75
+ field?: string;
76
+ calculateFun: Function;
77
+ fieldValue?: any;
78
+ dependAggregators: Aggregator[];
79
+ dependIndicatorKeys: string[];
80
+ constructor(config: {
81
+ key: string;
82
+ dimension: string;
83
+ formatFun: any;
84
+ isRecord: boolean;
85
+ calculateFun: Function;
86
+ dependAggregators: Aggregator[];
87
+ dependIndicatorKeys: string[];
88
+ });
55
89
  push(record: any): void;
56
90
  value(): any;
57
91
  reset(): void;
@@ -64,7 +98,13 @@ export declare class SumAggregator extends Aggregator {
64
98
  nagetiveSum: number;
65
99
  field?: string;
66
100
  needSplitPositiveAndNegativeForSum?: boolean;
67
- constructor(dimension: string, formatFun?: any, isRecord?: boolean, needSplitPositiveAndNegative?: boolean);
101
+ constructor(config: {
102
+ key: string;
103
+ dimension: string;
104
+ formatFun?: any;
105
+ isRecord?: boolean;
106
+ needSplitPositiveAndNegative?: boolean;
107
+ });
68
108
  push(record: any): void;
69
109
  value(): number;
70
110
  positiveValue(): number;
@@ -2,14 +2,15 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.sortBy = exports.naturalSort = exports.typeSort = exports.indicatorSort = exports.MinAggregator = exports.MaxAggregator = exports.AvgAggregator = exports.CountAggregator = exports.SumAggregator = exports.CustomAggregator = exports.NoneAggregator = exports.RecordAggregator = exports.Aggregator = void 0;
5
+ }), exports.sortBy = exports.naturalSort = exports.typeSort = exports.indicatorSort = exports.MinAggregator = exports.MaxAggregator = exports.AvgAggregator = exports.CountAggregator = exports.SumAggregator = exports.RecalculateAggregator = exports.CustomAggregator = exports.NoneAggregator = exports.RecordAggregator = exports.Aggregator = void 0;
6
6
 
7
7
  const ts_types_1 = require("../ts-types");
8
8
 
9
9
  class Aggregator {
10
- constructor(dimension, formatFun, isRecord) {
11
- this.className = "Aggregator", this.isRecord = !0, this.records = [], this.field = dimension,
12
- this.formatFun = formatFun, this.isRecord = null != isRecord ? isRecord : this.isRecord;
10
+ constructor(config) {
11
+ var _a;
12
+ this.className = "Aggregator", this.isRecord = !0, this.records = [], this.key = config.key,
13
+ this.field = config.dimension, this.formatFun = config.formatFun, this.isRecord = null !== (_a = config.isRecord) && void 0 !== _a ? _a : this.isRecord;
13
14
  }
14
15
  clearCacheValue() {
15
16
  this._formatedValue = void 0;
@@ -30,7 +31,7 @@ class RecordAggregator extends Aggregator {
30
31
  super(...arguments), this.type = ts_types_1.AggregationType.RECORD, this.isRecord = !0;
31
32
  }
32
33
  push(record) {
33
- this.isRecord && this.records && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record));
34
+ record && this.isRecord && this.records && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record));
34
35
  }
35
36
  value() {
36
37
  return this.records;
@@ -48,7 +49,7 @@ class NoneAggregator extends Aggregator {
48
49
  super(...arguments), this.type = ts_types_1.AggregationType.NONE, this.isRecord = !0;
49
50
  }
50
51
  push(record) {
51
- this.isRecord && (this.records = [ record ]), this.field && (this.fieldValue = record[this.field]);
52
+ record && (this.isRecord && (this.records = [ record ]), this.field && (this.fieldValue = record[this.field]));
52
53
  }
53
54
  value() {
54
55
  return this.fieldValue;
@@ -62,13 +63,13 @@ class NoneAggregator extends Aggregator {
62
63
  exports.NoneAggregator = NoneAggregator;
63
64
 
64
65
  class CustomAggregator extends Aggregator {
65
- constructor(dimension, formatFun, isRecord, aggregationFun) {
66
- super(dimension, formatFun, isRecord), this.type = ts_types_1.AggregationType.CUSTOM,
67
- this.isRecord = !0, this.values = [], this.aggregationFun = aggregationFun;
66
+ constructor(config) {
67
+ super(config), this.type = ts_types_1.AggregationType.CUSTOM, this.isRecord = !0,
68
+ this.values = [], this.aggregationFun = config.aggregationFun;
68
69
  }
69
70
  push(record) {
70
- this.isRecord && this.records && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record)),
71
- this.field && this.values.push(record[this.field]);
71
+ record && (this.isRecord && this.records && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record)),
72
+ this.field && this.values.push(record[this.field]));
72
73
  }
73
74
  value() {
74
75
  var _a;
@@ -83,14 +84,39 @@ class CustomAggregator extends Aggregator {
83
84
 
84
85
  exports.CustomAggregator = CustomAggregator;
85
86
 
87
+ class RecalculateAggregator extends Aggregator {
88
+ constructor(config) {
89
+ super(config), this.type = ts_types_1.AggregationType.RECALCULATE, this.isRecord = !0,
90
+ this.calculateFun = config.calculateFun, this.dependAggregators = config.dependAggregators,
91
+ this.dependIndicatorKeys = config.dependIndicatorKeys;
92
+ }
93
+ push(record) {
94
+ record && this.isRecord && this.records && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record));
95
+ }
96
+ value() {
97
+ var _a;
98
+ if (!this.fieldValue) {
99
+ const aggregatorValue = _getDependAggregatorValues(this.dependAggregators, this.dependIndicatorKeys);
100
+ this.fieldValue = null === (_a = this.calculateFun) || void 0 === _a ? void 0 : _a.call(this, aggregatorValue, this.records, this.field);
101
+ }
102
+ return this.fieldValue;
103
+ }
104
+ reset() {
105
+ this.records = [], this.fieldValue = void 0;
106
+ }
107
+ recalculate() {}
108
+ }
109
+
110
+ exports.RecalculateAggregator = RecalculateAggregator;
111
+
86
112
  class SumAggregator extends Aggregator {
87
- constructor(dimension, formatFun, isRecord, needSplitPositiveAndNegative) {
88
- super(dimension, formatFun, isRecord), this.type = ts_types_1.AggregationType.SUM,
89
- this.sum = 0, this.positiveSum = 0, this.nagetiveSum = 0, this.needSplitPositiveAndNegativeForSum = !1,
90
- this.needSplitPositiveAndNegativeForSum = null != needSplitPositiveAndNegative && needSplitPositiveAndNegative;
113
+ constructor(config) {
114
+ var _a;
115
+ super(config), this.type = ts_types_1.AggregationType.SUM, this.sum = 0, this.positiveSum = 0,
116
+ this.nagetiveSum = 0, this.needSplitPositiveAndNegativeForSum = !1, this.needSplitPositiveAndNegativeForSum = null !== (_a = config.needSplitPositiveAndNegative) && void 0 !== _a && _a;
91
117
  }
92
118
  push(record) {
93
- if (this.isRecord && this.records && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record)),
119
+ if (record) if (this.isRecord && this.records && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record)),
94
120
  "Aggregator" === record.className) {
95
121
  const value = record.value();
96
122
  this.sum += value, this.needSplitPositiveAndNegativeForSum && (value > 0 ? this.positiveSum += value : value < 0 && (this.nagetiveSum += value));
@@ -132,8 +158,8 @@ class CountAggregator extends Aggregator {
132
158
  super(...arguments), this.type = ts_types_1.AggregationType.COUNT, this.count = 0;
133
159
  }
134
160
  push(record) {
135
- this.isRecord && this.records && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record)),
136
- "Aggregator" === record.className ? this.count += record.value() : this.count++;
161
+ record && (this.isRecord && this.records && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record)),
162
+ "Aggregator" === record.className ? this.count += record.value() : this.count++);
137
163
  }
138
164
  value() {
139
165
  return this.count;
@@ -156,10 +182,10 @@ class AvgAggregator extends Aggregator {
156
182
  super(...arguments), this.type = ts_types_1.AggregationType.AVG, this.sum = 0, this.count = 0;
157
183
  }
158
184
  push(record) {
159
- this.isRecord && this.records && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record)),
185
+ record && (this.isRecord && this.records && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record)),
160
186
  "Aggregator" === record.className && record.type === ts_types_1.AggregationType.AVG ? (this.sum += record.sum,
161
187
  this.count += record.count) : this.field && !isNaN(parseFloat(record[this.field])) && (this.sum += parseFloat(record[this.field]),
162
- this.count++);
188
+ this.count++));
163
189
  }
164
190
  value() {
165
191
  return this.sum / this.count;
@@ -184,8 +210,8 @@ class MaxAggregator extends Aggregator {
184
210
  super(...arguments), this.type = ts_types_1.AggregationType.MAX, this.max = Number.MIN_SAFE_INTEGER;
185
211
  }
186
212
  push(record) {
187
- this.isRecord && this.records && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record)),
188
- "Aggregator" === record.className ? 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);
213
+ record && (this.isRecord && this.records && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record)),
214
+ "Aggregator" === record.className ? 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));
189
215
  }
190
216
  value() {
191
217
  return this.max;
@@ -208,8 +234,8 @@ class MinAggregator extends Aggregator {
208
234
  super(...arguments), this.type = ts_types_1.AggregationType.MIN, this.min = Number.MAX_SAFE_INTEGER;
209
235
  }
210
236
  push(record) {
211
- this.isRecord && this.records && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record)),
212
- "Aggregator" === record.className ? 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);
237
+ record && (this.isRecord && this.records && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record)),
238
+ "Aggregator" === record.className ? 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));
213
239
  }
214
240
  value() {
215
241
  return this.min;
@@ -263,6 +289,15 @@ function sortBy(order) {
263
289
  };
264
290
  }
265
291
 
292
+ function _getDependAggregatorValues(aggregators, dependIndicatorKeys) {
293
+ const dependAggregatorValues = {};
294
+ for (let m = 0; m < (null == dependIndicatorKeys ? void 0 : dependIndicatorKeys.length); m++) {
295
+ const aggrator = aggregators.find((aggrator => aggrator.key === dependIndicatorKeys[m]));
296
+ aggrator && (dependAggregatorValues[aggrator.key] = null == aggrator ? void 0 : aggrator.value());
297
+ }
298
+ return dependAggregatorValues;
299
+ }
300
+
301
+ //# sourceMappingURL=statistics-helper.js.map
266
302
  exports.MinAggregator = MinAggregator, exports.indicatorSort = indicatorSort, exports.typeSort = typeSort,
267
- exports.naturalSort = naturalSort, exports.sortBy = sortBy;
268
- //# sourceMappingURL=statistics-helper.js.map
303
+ exports.naturalSort = naturalSort, exports.sortBy = sortBy;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/dataset/statistics-helper.ts"],"names":[],"mappings":"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","file":"statistics-helper.js","sourcesContent":["import type { SortOrder } from '../ts-types';\nimport { AggregationType } from '../ts-types';\nimport type { BaseTableAPI } from '../ts-types/base-table';\n\nexport interface IAggregator {\n records?: any[];\n value: () => any;\n className: string;\n push: (record: any) => void;\n recalculate: () => any;\n formatValue?: (col?: number, row?: number, table?: BaseTableAPI) => any;\n formatFun?: () => any;\n clearCacheValue: () => any;\n reset: () => void;\n}\nexport abstract class Aggregator implements IAggregator {\n className = 'Aggregator';\n isRecord?: boolean = true; //是否需要维护records 将数据源都记录下来\n records?: any[] = [];\n type?: string;\n field?: string | string[];\n formatFun?: any;\n _formatedValue?: any;\n\n constructor(dimension: string, formatFun?: any, isRecord?: boolean) {\n this.field = dimension;\n this.formatFun = formatFun;\n this.isRecord = isRecord ?? this.isRecord;\n }\n abstract push(record: any): void;\n abstract value(): any;\n abstract recalculate(): any;\n clearCacheValue() {\n this._formatedValue = undefined;\n }\n formatValue(col?: number, row?: number, table?: BaseTableAPI) {\n if (!this._formatedValue) {\n if (this.formatFun) {\n this._formatedValue = this.formatFun(this.value(), col, row, table);\n } else {\n this._formatedValue = this.value();\n }\n }\n return this._formatedValue;\n }\n reset() {\n this.records = [];\n }\n}\nexport class RecordAggregator extends Aggregator {\n type: string = AggregationType.RECORD;\n isRecord?: boolean = true;\n push(record: any): void {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n }\n value() {\n return this.records;\n }\n reset() {\n this.records = [];\n }\n recalculate() {\n // do nothing\n }\n}\n\nexport class NoneAggregator extends Aggregator {\n type: string = AggregationType.NONE; //仅获取其中一条数据 不做聚合 其fieldValue可以是number或者string类型\n isRecord?: boolean = true;\n declare field?: string;\n fieldValue?: any;\n push(record: any): void {\n if (this.isRecord) {\n this.records = [record];\n }\n if (this.field) {\n this.fieldValue = record[this.field];\n }\n }\n value() {\n return this.fieldValue;\n }\n reset() {\n this.records = [];\n this.fieldValue = undefined;\n }\n recalculate() {\n // do nothing\n }\n}\nexport class CustomAggregator extends Aggregator {\n type: string = AggregationType.CUSTOM; //仅获取其中一条数据 不做聚合 其fieldValue可以是number或者string类型\n isRecord?: boolean = true;\n declare field?: string;\n aggregationFun?: Function;\n values: (string | number)[] = [];\n fieldValue?: any;\n constructor(dimension: string, formatFun?: any, isRecord?: boolean, aggregationFun?: Function) {\n super(dimension, formatFun, isRecord);\n this.aggregationFun = aggregationFun;\n }\n push(record: any): void {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (this.field) {\n this.values.push(record[this.field]);\n }\n }\n value() {\n if (!this.fieldValue) {\n this.fieldValue = this.aggregationFun?.(this.values, this.records, this.field);\n }\n return this.fieldValue;\n }\n reset() {\n this.records = [];\n this.fieldValue = undefined;\n }\n recalculate() {\n // do nothing\n }\n}\nexport class SumAggregator extends Aggregator {\n type: string = AggregationType.SUM;\n sum = 0;\n positiveSum = 0;\n nagetiveSum = 0;\n declare field?: string;\n needSplitPositiveAndNegativeForSum?: boolean = false;\n constructor(dimension: string, formatFun?: any, isRecord?: boolean, needSplitPositiveAndNegative?: boolean) {\n super(dimension, formatFun, isRecord);\n this.needSplitPositiveAndNegativeForSum = needSplitPositiveAndNegative ?? false;\n }\n push(record: any): void {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n const value = record.value();\n this.sum += value;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n const value = parseFloat(record[this.field]);\n this.sum += value;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n }\n }\n value() {\n return this.sum;\n }\n positiveValue() {\n return this.positiveSum;\n }\n negativeValue() {\n return this.nagetiveSum;\n }\n reset() {\n this.records = [];\n this.sum = 0;\n }\n recalculate() {\n this.sum = 0;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n const value = record.value();\n this.sum += value;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n const value = parseFloat(record[this.field]);\n this.sum += value;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n }\n }\n }\n }\n}\n\nexport class CountAggregator extends Aggregator {\n type: string = AggregationType.COUNT;\n count = 0;\n declare field?: string;\n push(record: any): void {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n this.count += record.value();\n } else {\n this.count++;\n }\n }\n value() {\n return this.count;\n }\n reset() {\n this.records = [];\n this.count = 0;\n }\n recalculate() {\n this.count = 0;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n this.count += record.value();\n } else {\n this.count++;\n }\n }\n }\n }\n}\nexport class AvgAggregator extends Aggregator {\n type: string = AggregationType.AVG;\n sum = 0;\n count = 0;\n declare field?: string;\n push(record: any): void {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator' && record.type === AggregationType.AVG) {\n this.sum += record.sum;\n this.count += record.count;\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n this.sum += parseFloat(record[this.field]);\n this.count++;\n }\n }\n value() {\n return this.sum / this.count;\n }\n reset() {\n this.records = [];\n this.sum = 0;\n this.count = 0;\n }\n recalculate() {\n this.sum = 0;\n this.count = 0;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator' && record.type === AggregationType.AVG) {\n this.sum += record.sum;\n this.count += record.count;\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n this.sum += parseFloat(record[this.field]);\n this.count++;\n }\n }\n }\n }\n}\nexport class MaxAggregator extends Aggregator {\n type: string = AggregationType.MAX;\n max: number = Number.MIN_SAFE_INTEGER;\n declare field?: string;\n push(record: any): void {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n this.max = record.max > this.max ? record.max : this.max;\n } else if (typeof record === 'number') {\n this.max = record > this.max ? record : this.max;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.max = record[this.field] > this.max ? record[this.field] : this.max;\n } else if (this.field && !isNaN(record[this.field])) {\n this.max = parseFloat(record[this.field]) > this.max ? parseFloat(record[this.field]) : this.max;\n }\n }\n value() {\n return this.max;\n }\n reset() {\n this.records = [];\n this.max = Number.MIN_SAFE_INTEGER;\n }\n recalculate() {\n this.max = Number.MIN_SAFE_INTEGER;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n this.max = record.max > this.max ? record.max : this.max;\n } else if (typeof record === 'number') {\n this.max = record > this.max ? record : this.max;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.max = record[this.field] > this.max ? record[this.field] : this.max;\n } else if (this.field && !isNaN(record[this.field])) {\n this.max = parseFloat(record[this.field]) > this.max ? parseFloat(record[this.field]) : this.max;\n }\n }\n }\n }\n}\nexport class MinAggregator extends Aggregator {\n type: string = AggregationType.MIN;\n min: number = Number.MAX_SAFE_INTEGER;\n declare field?: string;\n push(record: any): void {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n this.min = record.min < this.min ? record.min : this.min;\n } else if (typeof record === 'number') {\n this.min = record < this.min ? record : this.min;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.min = record[this.field] < this.min ? record[this.field] : this.min;\n }\n }\n value() {\n return this.min;\n }\n reset() {\n this.records = [];\n this.min = Number.MAX_SAFE_INTEGER;\n }\n recalculate() {\n this.min = Number.MAX_SAFE_INTEGER;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n this.min = record.min < this.min ? record.min : this.min;\n } else if (typeof record === 'number') {\n this.min = record < this.min ? record : this.min;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.min = record[this.field] < this.min ? record[this.field] : this.min;\n }\n }\n }\n }\n}\nexport function indicatorSort(a: any, b: any) {\n if (a && b) {\n // 数据健全兼容,用户数据不全时,能够展示.\n return a.toString().localeCompare(b.toString(), 'zh');\n }\n if (a) {\n return 1;\n }\n return -1;\n}\nexport function typeSort(a: any, b: any) {\n if (a && b) {\n // 数据健全兼容,用户数据不全时,能够展示.\n return a.toString().localeCompare(b.toString(), 'zh');\n }\n if (a) {\n return 1;\n }\n return -1;\n}\nexport function naturalSort(as: any, bs: any) {\n const rx = /(\\d+)|(\\D+)/g;\n const rd = /\\d/;\n const rz = /^0/;\n let a;\n let a1;\n let b;\n let b1;\n let nas = 0;\n let nbs = 0;\n if (bs !== null && as === null) {\n return -1;\n }\n if (as !== null && bs === null) {\n return 1;\n }\n if (typeof as === 'number' && isNaN(as)) {\n return -1;\n }\n if (typeof bs === 'number' && isNaN(bs)) {\n return 1;\n }\n nas = +as;\n nbs = +bs;\n if (nas < nbs) {\n return -1;\n }\n if (nas > nbs) {\n return 1;\n }\n if (typeof as === 'number' && typeof bs !== 'number') {\n return -1;\n }\n if (typeof bs === 'number' && typeof as !== 'number') {\n return 1;\n }\n if (typeof as === 'number' && typeof bs === 'number') {\n return 0;\n }\n if (isNaN(nbs) && !isNaN(nas)) {\n return -1;\n }\n if (isNaN(nas) && !isNaN(nbs)) {\n return 1;\n }\n a = String(as);\n b = String(bs);\n if (a === b) {\n return 0;\n }\n if (!(rd.test(a) && rd.test(b))) {\n return a > b ? 1 : -1;\n }\n a = a.match(rx);\n b = b.match(rx);\n while (a.length && b.length) {\n a1 = a.shift();\n b1 = b.shift();\n if (a1 !== b1) {\n if (rd.test(a1) && rd.test(b1)) {\n return <any>a1.replace(rz, '.0') - <any>b1.replace(rz, '.0');\n }\n return a1 > b1 ? 1 : -1;\n }\n }\n return a.length - b.length;\n}\nexport function sortBy(order: string[]) {\n let x;\n let i;\n const mapping = {};\n const lowercase_mapping = {};\n // for (i in order) {\n for (let i = 0; i < order.length; i++) {\n x = order[i];\n mapping[x] = i;\n if (typeof x === 'string') {\n lowercase_mapping[x.toLowerCase()] = i;\n }\n }\n return function (a: any, b: any) {\n if (mapping[a] !== null && mapping[a] !== undefined && mapping[b] !== null && mapping[b] !== undefined) {\n return mapping[a] - mapping[b];\n } else if (mapping[a] !== null && mapping[a] !== undefined) {\n return -1;\n } else if (mapping[b] !== null && mapping[b] !== undefined) {\n return 1;\n } else if (\n lowercase_mapping[a] !== null &&\n mapping[a] !== undefined &&\n lowercase_mapping[b] !== null &&\n mapping[b] !== undefined\n ) {\n return lowercase_mapping[a] - lowercase_mapping[b];\n } else if (\n lowercase_mapping[a] === null ||\n mapping[a] === undefined ||\n lowercase_mapping[b] === null ||\n mapping[b] === undefined\n ) {\n return 0;\n } else if (lowercase_mapping[a] !== null && mapping[a] !== undefined) {\n return -1;\n } else if (lowercase_mapping[b] !== null && mapping[b] !== undefined) {\n return 1;\n }\n return naturalSort(a, b);\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/dataset/statistics-helper.ts"],"names":[],"mappings":"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","file":"statistics-helper.js","sourcesContent":["import type { SortOrder } from '../ts-types';\nimport { AggregationType } from '../ts-types';\nimport type { BaseTableAPI } from '../ts-types/base-table';\n\nexport interface IAggregator {\n records?: any[];\n value: () => any;\n className: string;\n push: (record: any) => void;\n recalculate: () => any;\n formatValue?: (col?: number, row?: number, table?: BaseTableAPI) => any;\n formatFun?: () => any;\n clearCacheValue: () => any;\n reset: () => void;\n}\nexport abstract class Aggregator implements IAggregator {\n className = 'Aggregator';\n isRecord?: boolean = true; //是否需要维护records 将数据源都记录下来\n records?: any[] = [];\n type?: string;\n key: string;\n field?: string | string[];\n formatFun?: any;\n _formatedValue?: any;\n\n constructor(config: { key: string; dimension: string; formatFun?: any; isRecord?: boolean }) {\n this.key = config.key;\n this.field = config.dimension;\n this.formatFun = config.formatFun;\n this.isRecord = config.isRecord ?? this.isRecord;\n }\n abstract push(record: any): void;\n abstract value(): any;\n abstract recalculate(): any;\n clearCacheValue() {\n this._formatedValue = undefined;\n }\n formatValue(col?: number, row?: number, table?: BaseTableAPI) {\n if (!this._formatedValue) {\n if (this.formatFun) {\n this._formatedValue = this.formatFun(this.value(), col, row, table);\n } else {\n this._formatedValue = this.value();\n }\n }\n return this._formatedValue;\n }\n reset() {\n this.records = [];\n }\n}\nexport class RecordAggregator extends Aggregator {\n type: string = AggregationType.RECORD;\n isRecord?: boolean = true;\n push(record: any): void {\n if (record && this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n }\n value() {\n return this.records;\n }\n reset() {\n this.records = [];\n }\n recalculate() {\n // do nothing\n }\n}\n\nexport class NoneAggregator extends Aggregator {\n type: string = AggregationType.NONE; //仅获取其中一条数据 不做聚合 其fieldValue可以是number或者string类型\n isRecord?: boolean = true;\n declare field?: string;\n fieldValue?: any;\n push(record: any): void {\n if (record) {\n if (this.isRecord) {\n this.records = [record];\n }\n if (this.field) {\n this.fieldValue = record[this.field];\n }\n }\n }\n value() {\n return this.fieldValue;\n }\n reset() {\n this.records = [];\n this.fieldValue = undefined;\n }\n recalculate() {\n // do nothing\n }\n}\nexport class CustomAggregator extends Aggregator {\n type: string = AggregationType.CUSTOM; //仅获取其中一条数据 不做聚合 其fieldValue可以是number或者string类型\n isRecord?: boolean = true;\n declare field?: string;\n aggregationFun?: Function;\n values: (string | number)[] = [];\n fieldValue?: any;\n constructor(config: {\n key: string;\n dimension: string;\n formatFun?: any;\n isRecord?: boolean;\n aggregationFun?: Function;\n }) {\n super(config);\n this.aggregationFun = config.aggregationFun;\n }\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (this.field) {\n this.values.push(record[this.field]);\n }\n }\n }\n value() {\n if (!this.fieldValue) {\n this.fieldValue = this.aggregationFun?.(this.values, this.records, this.field);\n }\n return this.fieldValue;\n }\n reset() {\n this.records = [];\n this.fieldValue = undefined;\n }\n recalculate() {\n // do nothing\n }\n}\nexport class RecalculateAggregator extends Aggregator {\n type: string = AggregationType.RECALCULATE; //仅获取其中一条数据 不做聚合 其fieldValue可以是number或者string类型\n isRecord?: boolean = true;\n declare field?: string;\n calculateFun: Function;\n fieldValue?: any;\n dependAggregators: Aggregator[];\n dependIndicatorKeys: string[];\n constructor(config: {\n key: string;\n dimension: string;\n formatFun: any;\n isRecord: boolean;\n calculateFun: Function;\n dependAggregators: Aggregator[];\n dependIndicatorKeys: string[];\n }) {\n super(config);\n this.calculateFun = config.calculateFun;\n this.dependAggregators = config.dependAggregators;\n this.dependIndicatorKeys = config.dependIndicatorKeys;\n }\n push(record: any): void {\n if (record && this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n }\n value() {\n if (!this.fieldValue) {\n const aggregatorValue = _getDependAggregatorValues(this.dependAggregators, this.dependIndicatorKeys);\n this.fieldValue = this.calculateFun?.(aggregatorValue, this.records, this.field);\n }\n return this.fieldValue;\n }\n reset() {\n this.records = [];\n this.fieldValue = undefined;\n }\n recalculate() {\n // do nothing\n }\n}\nexport class SumAggregator extends Aggregator {\n type: string = AggregationType.SUM;\n sum = 0;\n positiveSum = 0;\n nagetiveSum = 0;\n declare field?: string;\n needSplitPositiveAndNegativeForSum?: boolean = false;\n constructor(config: {\n key: string;\n dimension: string;\n formatFun?: any;\n isRecord?: boolean;\n needSplitPositiveAndNegative?: boolean;\n }) {\n super(config);\n this.needSplitPositiveAndNegativeForSum = config.needSplitPositiveAndNegative ?? false;\n }\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n const value = record.value();\n this.sum += value;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n const value = parseFloat(record[this.field]);\n this.sum += value;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n }\n }\n }\n value() {\n return this.sum;\n }\n positiveValue() {\n return this.positiveSum;\n }\n negativeValue() {\n return this.nagetiveSum;\n }\n reset() {\n this.records = [];\n this.sum = 0;\n }\n recalculate() {\n this.sum = 0;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n const value = record.value();\n this.sum += value;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n const value = parseFloat(record[this.field]);\n this.sum += value;\n if (this.needSplitPositiveAndNegativeForSum) {\n if (value > 0) {\n this.positiveSum += value;\n } else if (value < 0) {\n this.nagetiveSum += value;\n }\n }\n }\n }\n }\n }\n}\n\nexport class CountAggregator extends Aggregator {\n type: string = AggregationType.COUNT;\n count = 0;\n declare field?: string;\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n this.count += record.value();\n } else {\n this.count++;\n }\n }\n }\n value() {\n return this.count;\n }\n reset() {\n this.records = [];\n this.count = 0;\n }\n recalculate() {\n this.count = 0;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n this.count += record.value();\n } else {\n this.count++;\n }\n }\n }\n }\n}\nexport class AvgAggregator extends Aggregator {\n type: string = AggregationType.AVG;\n sum = 0;\n count = 0;\n declare field?: string;\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator' && record.type === AggregationType.AVG) {\n this.sum += record.sum;\n this.count += record.count;\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n this.sum += parseFloat(record[this.field]);\n this.count++;\n }\n }\n }\n value() {\n return this.sum / this.count;\n }\n reset() {\n this.records = [];\n this.sum = 0;\n this.count = 0;\n }\n recalculate() {\n this.sum = 0;\n this.count = 0;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator' && record.type === AggregationType.AVG) {\n this.sum += record.sum;\n this.count += record.count;\n } else if (this.field && !isNaN(parseFloat(record[this.field]))) {\n this.sum += parseFloat(record[this.field]);\n this.count++;\n }\n }\n }\n }\n}\nexport class MaxAggregator extends Aggregator {\n type: string = AggregationType.MAX;\n max: number = Number.MIN_SAFE_INTEGER;\n declare field?: string;\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n this.max = record.max > this.max ? record.max : this.max;\n } else if (typeof record === 'number') {\n this.max = record > this.max ? record : this.max;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.max = record[this.field] > this.max ? record[this.field] : this.max;\n } else if (this.field && !isNaN(record[this.field])) {\n this.max = parseFloat(record[this.field]) > this.max ? parseFloat(record[this.field]) : this.max;\n }\n }\n }\n value() {\n return this.max;\n }\n reset() {\n this.records = [];\n this.max = Number.MIN_SAFE_INTEGER;\n }\n recalculate() {\n this.max = Number.MIN_SAFE_INTEGER;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n this.max = record.max > this.max ? record.max : this.max;\n } else if (typeof record === 'number') {\n this.max = record > this.max ? record : this.max;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.max = record[this.field] > this.max ? record[this.field] : this.max;\n } else if (this.field && !isNaN(record[this.field])) {\n this.max = parseFloat(record[this.field]) > this.max ? parseFloat(record[this.field]) : this.max;\n }\n }\n }\n }\n}\nexport class MinAggregator extends Aggregator {\n type: string = AggregationType.MIN;\n min: number = Number.MAX_SAFE_INTEGER;\n declare field?: string;\n push(record: any): void {\n if (record) {\n if (this.isRecord && this.records) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n if (record.className === 'Aggregator') {\n this.min = record.min < this.min ? record.min : this.min;\n } else if (typeof record === 'number') {\n this.min = record < this.min ? record : this.min;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.min = record[this.field] < this.min ? record[this.field] : this.min;\n }\n }\n }\n value() {\n return this.min;\n }\n reset() {\n this.records = [];\n this.min = Number.MAX_SAFE_INTEGER;\n }\n recalculate() {\n this.min = Number.MAX_SAFE_INTEGER;\n this._formatedValue = undefined;\n if (this.records) {\n for (let i = 0; i < this.records.length; i++) {\n const record = this.records[i];\n if (record.className === 'Aggregator') {\n this.min = record.min < this.min ? record.min : this.min;\n } else if (typeof record === 'number') {\n this.min = record < this.min ? record : this.min;\n } else if (this.field && typeof record[this.field] === 'number') {\n this.min = record[this.field] < this.min ? record[this.field] : this.min;\n }\n }\n }\n }\n}\nexport function indicatorSort(a: any, b: any) {\n if (a && b) {\n // 数据健全兼容,用户数据不全时,能够展示.\n return a.toString().localeCompare(b.toString(), 'zh');\n }\n if (a) {\n return 1;\n }\n return -1;\n}\nexport function typeSort(a: any, b: any) {\n if (a && b) {\n // 数据健全兼容,用户数据不全时,能够展示.\n return a.toString().localeCompare(b.toString(), 'zh');\n }\n if (a) {\n return 1;\n }\n return -1;\n}\nexport function naturalSort(as: any, bs: any) {\n const rx = /(\\d+)|(\\D+)/g;\n const rd = /\\d/;\n const rz = /^0/;\n let a;\n let a1;\n let b;\n let b1;\n let nas = 0;\n let nbs = 0;\n if (bs !== null && as === null) {\n return -1;\n }\n if (as !== null && bs === null) {\n return 1;\n }\n if (typeof as === 'number' && isNaN(as)) {\n return -1;\n }\n if (typeof bs === 'number' && isNaN(bs)) {\n return 1;\n }\n nas = +as;\n nbs = +bs;\n if (nas < nbs) {\n return -1;\n }\n if (nas > nbs) {\n return 1;\n }\n if (typeof as === 'number' && typeof bs !== 'number') {\n return -1;\n }\n if (typeof bs === 'number' && typeof as !== 'number') {\n return 1;\n }\n if (typeof as === 'number' && typeof bs === 'number') {\n return 0;\n }\n if (isNaN(nbs) && !isNaN(nas)) {\n return -1;\n }\n if (isNaN(nas) && !isNaN(nbs)) {\n return 1;\n }\n a = String(as);\n b = String(bs);\n if (a === b) {\n return 0;\n }\n if (!(rd.test(a) && rd.test(b))) {\n return a > b ? 1 : -1;\n }\n a = a.match(rx);\n b = b.match(rx);\n while (a.length && b.length) {\n a1 = a.shift();\n b1 = b.shift();\n if (a1 !== b1) {\n if (rd.test(a1) && rd.test(b1)) {\n return <any>a1.replace(rz, '.0') - <any>b1.replace(rz, '.0');\n }\n return a1 > b1 ? 1 : -1;\n }\n }\n return a.length - b.length;\n}\nexport function sortBy(order: string[]) {\n let x;\n let i;\n const mapping = {};\n const lowercase_mapping = {};\n // for (i in order) {\n for (let i = 0; i < order.length; i++) {\n x = order[i];\n mapping[x] = i;\n if (typeof x === 'string') {\n lowercase_mapping[x.toLowerCase()] = i;\n }\n }\n return function (a: any, b: any) {\n if (mapping[a] !== null && mapping[a] !== undefined && mapping[b] !== null && mapping[b] !== undefined) {\n return mapping[a] - mapping[b];\n } else if (mapping[a] !== null && mapping[a] !== undefined) {\n return -1;\n } else if (mapping[b] !== null && mapping[b] !== undefined) {\n return 1;\n } else if (\n lowercase_mapping[a] !== null &&\n mapping[a] !== undefined &&\n lowercase_mapping[b] !== null &&\n mapping[b] !== undefined\n ) {\n return lowercase_mapping[a] - lowercase_mapping[b];\n } else if (\n lowercase_mapping[a] === null ||\n mapping[a] === undefined ||\n lowercase_mapping[b] === null ||\n mapping[b] === undefined\n ) {\n return 0;\n } else if (lowercase_mapping[a] !== null && mapping[a] !== undefined) {\n return -1;\n } else if (lowercase_mapping[b] !== null && mapping[b] !== undefined) {\n return 1;\n }\n return naturalSort(a, b);\n };\n}\n\nfunction _getDependAggregatorValues(aggregators: Aggregator[], dependIndicatorKeys: string[]) {\n const dependAggregatorValues: any = {};\n for (let m = 0; m < dependIndicatorKeys?.length; m++) {\n const aggrator = aggregators.find(aggrator => aggrator.key === dependIndicatorKeys[m]);\n if (aggrator) {\n dependAggregatorValues[aggrator.key] = aggrator?.value();\n }\n }\n return dependAggregatorValues;\n}\n"]}
@@ -17,8 +17,8 @@ function bindTableGroupListener(eventManager) {
17
17
  }, eventManager.touchSetTimeout && (clearTimeout(eventManager.touchSetTimeout),
18
18
  eventManager.touchSetTimeout = void 0);
19
19
  const eventArgsSet = (0, util_1.getCellEventArgsSet)(e);
20
- if (stateManager.interactionState === ts_types_1.InteractionState.grabing) return void (Math.abs(lastX - e.x) + Math.abs(lastY - e.y) >= 1 && (stateManager.isResizeCol() || (stateManager.isMoveCol() ? eventManager.dealColumnMover(eventArgsSet) : stateManager.isFillHandle() ? eventManager.dealFillSelect(eventArgsSet, !0) : eventManager.dealTableSelect(eventArgsSet, !0))));
21
- table.eventManager.isDraging && stateManager.isSelecting() && eventManager.dealTableSelect(eventArgsSet, !0);
20
+ if (stateManager.interactionState === ts_types_1.InteractionState.grabing && !table.editorManager.editingEditor) return void (Math.abs(lastX - e.x) + Math.abs(lastY - e.y) >= 1 && (stateManager.isResizeCol() || (stateManager.isMoveCol() ? eventManager.dealColumnMover(eventArgsSet) : stateManager.isFillHandle() ? eventManager.dealFillSelect(eventArgsSet, !0) : eventManager.dealTableSelect(eventArgsSet, !0))));
21
+ table.eventManager.isDraging && stateManager.isSelecting() && !table.editorManager.editingEditor && eventManager.dealTableSelect(eventArgsSet, !0);
22
22
  const cellGoup = e.path.find((node => "cell" === node.role));
23
23
  if (table.hasListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.MOUSELEAVE_CELL) && (-1 === table.stateManager.hover.cellPos.col || -1 === table.stateManager.hover.cellPos.row || (null == cellGoup ? void 0 : cellGoup.col) === table.stateManager.hover.cellPos.col && (null == cellGoup ? void 0 : cellGoup.row) === table.stateManager.hover.cellPos.row || table.fireListeners(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.MOUSELEAVE_CELL, {
24
24
  col: table.stateManager.hover.cellPos.col,