@visactor/vtable 0.19.2-alpha.3 → 0.20.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 (203) hide show
  1. package/cjs/ListTable.d.ts +12 -2
  2. package/cjs/ListTable.js +80 -23
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/PivotChart.d.ts +2 -1
  5. package/cjs/PivotChart.js +5 -1
  6. package/cjs/PivotChart.js.map +1 -1
  7. package/cjs/PivotTable.d.ts +5 -2
  8. package/cjs/PivotTable.js +13 -5
  9. package/cjs/PivotTable.js.map +1 -1
  10. package/cjs/core/BaseTable.d.ts +2 -2
  11. package/cjs/core/BaseTable.js +7 -8
  12. package/cjs/core/BaseTable.js.map +1 -1
  13. package/cjs/core/tableHelper.d.ts +2 -2
  14. package/cjs/core/tableHelper.js +4 -6
  15. package/cjs/core/tableHelper.js.map +1 -1
  16. package/cjs/data/CachedDataSource.d.ts +4 -3
  17. package/cjs/data/CachedDataSource.js +5 -4
  18. package/cjs/data/CachedDataSource.js.map +1 -1
  19. package/cjs/data/DataSource.d.ts +22 -3
  20. package/cjs/data/DataSource.js +93 -7
  21. package/cjs/data/DataSource.js.map +1 -1
  22. package/cjs/dataset/dataset-pivot-table.d.ts +3 -3
  23. package/cjs/dataset/dataset-pivot-table.js +1 -0
  24. package/cjs/dataset/dataset-pivot-table.js.map +1 -1
  25. package/cjs/dataset/dataset.d.ts +3 -3
  26. package/cjs/dataset/dataset.js +3 -0
  27. package/cjs/dataset/dataset.js.map +1 -1
  28. package/cjs/dataset/statistics-helper.d.ts +24 -3
  29. package/cjs/dataset/statistics-helper.js +75 -9
  30. package/cjs/dataset/statistics-helper.js.map +1 -1
  31. package/cjs/edit/edit-manager.js +5 -4
  32. package/cjs/edit/edit-manager.js.map +1 -1
  33. package/cjs/event/media-click.js +2 -1
  34. package/cjs/event/scroll.js +0 -1
  35. package/cjs/index.d.ts +1 -1
  36. package/cjs/index.js +1 -1
  37. package/cjs/index.js.map +1 -1
  38. package/cjs/layout/chart-helper/get-chart-spec.d.ts +1 -0
  39. package/cjs/layout/chart-helper/get-chart-spec.js +34 -9
  40. package/cjs/layout/chart-helper/get-chart-spec.js.map +1 -1
  41. package/cjs/layout/layout-helper.d.ts +4 -63
  42. package/cjs/layout/layout-helper.js +25 -247
  43. package/cjs/layout/layout-helper.js.map +1 -1
  44. package/cjs/layout/pivot-header-layout.d.ts +6 -3
  45. package/cjs/layout/pivot-header-layout.js +26 -15
  46. package/cjs/layout/pivot-header-layout.js.map +1 -1
  47. package/cjs/layout/row-height-map.js +2 -1
  48. package/cjs/layout/row-height-map.js.map +1 -1
  49. package/cjs/layout/simple-header-layout.d.ts +25 -2
  50. package/cjs/layout/simple-header-layout.js +130 -18
  51. package/cjs/layout/simple-header-layout.js.map +1 -1
  52. package/cjs/layout/tree-helper.d.ts +63 -0
  53. package/cjs/layout/tree-helper.js +259 -0
  54. package/cjs/layout/tree-helper.js.map +1 -0
  55. package/cjs/scenegraph/graphic/chart.d.ts +2 -1
  56. package/cjs/scenegraph/graphic/chart.js +21 -18
  57. package/cjs/scenegraph/graphic/chart.js.map +1 -1
  58. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js +4 -1
  59. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  60. package/cjs/scenegraph/graphic/contributions/chart-render.js +2 -2
  61. package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  62. package/cjs/scenegraph/group-creater/cell-helper.js +19 -8
  63. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  64. package/cjs/scenegraph/group-creater/cell-type/chart-cell.d.ts +1 -1
  65. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +2 -2
  66. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  67. package/cjs/scenegraph/group-creater/cell-type/image-cell.d.ts +1 -1
  68. package/cjs/scenegraph/group-creater/cell-type/image-cell.js +9 -5
  69. package/cjs/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  70. package/cjs/scenegraph/group-creater/cell-type/video-cell.js +1 -1
  71. package/cjs/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  72. package/cjs/scenegraph/group-creater/column-helper.js +5 -5
  73. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  74. package/cjs/scenegraph/group-creater/progress/update-position/sort-vertical.js +5 -2
  75. package/cjs/scenegraph/group-creater/progress/update-position/sort-vertical.js.map +1 -1
  76. package/cjs/scenegraph/scenegraph.js +4 -6
  77. package/cjs/scenegraph/scenegraph.js.map +1 -1
  78. package/cjs/state/sort/index.js +2 -5
  79. package/cjs/state/sort/index.js.map +1 -1
  80. package/cjs/state/state.d.ts +0 -1
  81. package/cjs/state/state.js +1 -2
  82. package/cjs/state/state.js.map +1 -1
  83. package/cjs/tools/get-data-path/create-dataset.js.map +1 -1
  84. package/cjs/tools/isx.d.ts +1 -1
  85. package/cjs/tools/util.d.ts +1 -1
  86. package/cjs/ts-types/base-table.d.ts +6 -5
  87. package/cjs/ts-types/base-table.js.map +1 -1
  88. package/cjs/ts-types/list-table/define/basic-define.d.ts +2 -0
  89. package/cjs/ts-types/list-table/define/basic-define.js.map +1 -1
  90. package/cjs/ts-types/list-table/layout-map/api.d.ts +4 -3
  91. package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
  92. package/cjs/ts-types/new-data-set.d.ts +27 -6
  93. package/cjs/ts-types/new-data-set.js +1 -1
  94. package/cjs/ts-types/new-data-set.js.map +1 -1
  95. package/cjs/ts-types/table-engine.d.ts +17 -5
  96. package/cjs/ts-types/table-engine.js.map +1 -1
  97. package/cjs/vrender.js.map +1 -1
  98. package/dist/vtable.js +1175 -498
  99. package/dist/vtable.min.js +2 -2
  100. package/es/ListTable.d.ts +12 -2
  101. package/es/ListTable.js +80 -23
  102. package/es/ListTable.js.map +1 -1
  103. package/es/PivotChart.d.ts +2 -1
  104. package/es/PivotChart.js +5 -1
  105. package/es/PivotChart.js.map +1 -1
  106. package/es/PivotTable.d.ts +5 -2
  107. package/es/PivotTable.js +13 -5
  108. package/es/PivotTable.js.map +1 -1
  109. package/es/core/BaseTable.d.ts +2 -2
  110. package/es/core/BaseTable.js +7 -8
  111. package/es/core/BaseTable.js.map +1 -1
  112. package/es/core/tableHelper.d.ts +2 -2
  113. package/es/core/tableHelper.js +4 -6
  114. package/es/core/tableHelper.js.map +1 -1
  115. package/es/data/CachedDataSource.d.ts +4 -3
  116. package/es/data/CachedDataSource.js +5 -4
  117. package/es/data/CachedDataSource.js.map +1 -1
  118. package/es/data/DataSource.d.ts +22 -3
  119. package/es/data/DataSource.js +91 -7
  120. package/es/data/DataSource.js.map +1 -1
  121. package/es/dataset/dataset-pivot-table.d.ts +3 -3
  122. package/es/dataset/dataset-pivot-table.js +1 -0
  123. package/es/dataset/dataset-pivot-table.js.map +1 -1
  124. package/es/dataset/dataset.d.ts +3 -3
  125. package/es/dataset/dataset.js +3 -0
  126. package/es/dataset/dataset.js.map +1 -1
  127. package/es/dataset/statistics-helper.d.ts +24 -3
  128. package/es/dataset/statistics-helper.js +72 -8
  129. package/es/dataset/statistics-helper.js.map +1 -1
  130. package/es/edit/edit-manager.js +5 -4
  131. package/es/edit/edit-manager.js.map +1 -1
  132. package/es/event/media-click.js +2 -1
  133. package/es/event/scroll.js +1 -2
  134. package/es/index.d.ts +1 -1
  135. package/es/index.js +1 -1
  136. package/es/index.js.map +1 -1
  137. package/es/layout/chart-helper/get-chart-spec.d.ts +1 -0
  138. package/es/layout/chart-helper/get-chart-spec.js +29 -4
  139. package/es/layout/chart-helper/get-chart-spec.js.map +1 -1
  140. package/es/layout/layout-helper.d.ts +4 -63
  141. package/es/layout/layout-helper.js +19 -246
  142. package/es/layout/layout-helper.js.map +1 -1
  143. package/es/layout/pivot-header-layout.d.ts +6 -3
  144. package/es/layout/pivot-header-layout.js +17 -6
  145. package/es/layout/pivot-header-layout.js.map +1 -1
  146. package/es/layout/row-height-map.js +2 -1
  147. package/es/layout/row-height-map.js.map +1 -1
  148. package/es/layout/simple-header-layout.d.ts +25 -2
  149. package/es/layout/simple-header-layout.js +130 -17
  150. package/es/layout/simple-header-layout.js.map +1 -1
  151. package/es/layout/tree-helper.d.ts +63 -0
  152. package/es/layout/tree-helper.js +256 -0
  153. package/es/layout/tree-helper.js.map +1 -0
  154. package/es/scenegraph/graphic/chart.d.ts +2 -1
  155. package/es/scenegraph/graphic/chart.js +21 -17
  156. package/es/scenegraph/graphic/chart.js.map +1 -1
  157. package/es/scenegraph/graphic/contributions/chart-render-helper.js +4 -1
  158. package/es/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  159. package/es/scenegraph/graphic/contributions/chart-render.js +2 -2
  160. package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
  161. package/es/scenegraph/group-creater/cell-helper.js +20 -7
  162. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  163. package/es/scenegraph/group-creater/cell-type/chart-cell.d.ts +1 -1
  164. package/es/scenegraph/group-creater/cell-type/chart-cell.js +2 -2
  165. package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  166. package/es/scenegraph/group-creater/cell-type/image-cell.d.ts +1 -1
  167. package/es/scenegraph/group-creater/cell-type/image-cell.js +9 -5
  168. package/es/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  169. package/es/scenegraph/group-creater/cell-type/video-cell.js +1 -1
  170. package/es/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  171. package/es/scenegraph/group-creater/column-helper.js +5 -5
  172. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  173. package/es/scenegraph/group-creater/progress/update-position/sort-vertical.js +6 -3
  174. package/es/scenegraph/group-creater/progress/update-position/sort-vertical.js.map +1 -1
  175. package/es/scenegraph/scenegraph.js +4 -6
  176. package/es/scenegraph/scenegraph.js.map +1 -1
  177. package/es/state/sort/index.js +2 -5
  178. package/es/state/sort/index.js.map +1 -1
  179. package/es/state/state.d.ts +0 -1
  180. package/es/state/state.js +1 -2
  181. package/es/state/state.js.map +1 -1
  182. package/es/tools/get-data-path/create-dataset.js.map +1 -1
  183. package/es/tools/isx.d.ts +1 -1
  184. package/es/tools/util.d.ts +1 -1
  185. package/es/ts-types/base-table.d.ts +6 -5
  186. package/es/ts-types/base-table.js.map +1 -1
  187. package/es/ts-types/list-table/define/basic-define.d.ts +2 -0
  188. package/es/ts-types/list-table/define/basic-define.js.map +1 -1
  189. package/es/ts-types/list-table/layout-map/api.d.ts +4 -3
  190. package/es/ts-types/list-table/layout-map/api.js.map +1 -1
  191. package/es/ts-types/new-data-set.d.ts +27 -6
  192. package/es/ts-types/new-data-set.js +1 -1
  193. package/es/ts-types/new-data-set.js.map +1 -1
  194. package/es/ts-types/table-engine.d.ts +17 -5
  195. package/es/ts-types/table-engine.js.map +1 -1
  196. package/es/vrender.js.map +1 -1
  197. package/package.json +3 -3
  198. package/cjs/data/FilterDataSource.d.ts +0 -1
  199. package/cjs/data/FilterDataSource.js +0 -1
  200. package/cjs/data/FilterDataSource.js.map +0 -1
  201. package/es/data/FilterDataSource.d.ts +0 -1
  202. package/es/data/FilterDataSource.js +0 -1
  203. package/es/data/FilterDataSource.js.map +0 -1
@@ -7,10 +7,10 @@ export declare abstract class Aggregator {
7
7
  field?: string | string[];
8
8
  formatFun?: any;
9
9
  _formatedValue?: any;
10
- needSplitPositiveAndNegativeForSum?: boolean;
11
- constructor(dimension: string | string[], formatFun?: any, isRecord?: boolean, needSplitPositiveAndNegative?: boolean);
10
+ constructor(dimension: string, formatFun?: any, isRecord?: boolean);
12
11
  abstract push(record: any): void;
13
12
  abstract value(): any;
13
+ abstract recalculate(): any;
14
14
  clearCacheValue(): void;
15
15
  formatValue(col?: number, row?: number, table?: BaseTableAPI): any;
16
16
  reset(): void;
@@ -21,6 +21,7 @@ export declare class RecordAggregator extends Aggregator {
21
21
  push(record: any): void;
22
22
  value(): any[];
23
23
  reset(): void;
24
+ recalculate(): void;
24
25
  }
25
26
  export declare class NoneAggregator extends Aggregator {
26
27
  type: string;
@@ -30,6 +31,20 @@ export declare class NoneAggregator extends Aggregator {
30
31
  push(record: any): void;
31
32
  value(): any;
32
33
  reset(): void;
34
+ recalculate(): void;
35
+ }
36
+ export declare class CustomAggregator extends Aggregator {
37
+ type: string;
38
+ isRecord?: boolean;
39
+ field?: string;
40
+ aggregationFun: Function;
41
+ values: (string | number)[];
42
+ fieldValue?: any;
43
+ constructor(dimension: string, formatFun?: any, isRecord?: boolean, aggregationFun?: Function);
44
+ push(record: any): void;
45
+ value(): any;
46
+ reset(): void;
47
+ recalculate(): void;
33
48
  }
34
49
  export declare class SumAggregator extends Aggregator {
35
50
  type: string;
@@ -37,11 +52,14 @@ export declare class SumAggregator extends Aggregator {
37
52
  positiveSum: number;
38
53
  nagetiveSum: number;
39
54
  field?: string;
55
+ needSplitPositiveAndNegativeForSum?: boolean;
56
+ constructor(dimension: string, formatFun?: any, isRecord?: boolean, needSplitPositiveAndNegative?: boolean);
40
57
  push(record: any): void;
41
58
  value(): number;
42
59
  positiveValue(): number;
43
60
  negativeValue(): number;
44
61
  reset(): void;
62
+ recalculate(): void;
45
63
  }
46
64
  export declare class CountAggregator extends Aggregator {
47
65
  type: string;
@@ -50,6 +68,7 @@ export declare class CountAggregator extends Aggregator {
50
68
  push(record: any): void;
51
69
  value(): number;
52
70
  reset(): void;
71
+ recalculate(): void;
53
72
  }
54
73
  export declare class AvgAggregator extends Aggregator {
55
74
  type: string;
@@ -59,6 +78,7 @@ export declare class AvgAggregator extends Aggregator {
59
78
  push(record: any): void;
60
79
  value(): number;
61
80
  reset(): void;
81
+ recalculate(): void;
62
82
  }
63
83
  export declare class MaxAggregator extends Aggregator {
64
84
  type: string;
@@ -67,15 +87,16 @@ export declare class MaxAggregator extends Aggregator {
67
87
  push(record: any): void;
68
88
  value(): number;
69
89
  reset(): void;
90
+ recalculate(): void;
70
91
  }
71
92
  export declare class MinAggregator extends Aggregator {
72
93
  type: string;
73
94
  min: number;
74
- isRecord?: boolean;
75
95
  field?: string;
76
96
  push(record: any): void;
77
97
  value(): number;
78
98
  reset(): void;
99
+ recalculate(): void;
79
100
  }
80
101
  export declare function indicatorSort(a: any, b: any): any;
81
102
  export declare function typeSort(a: any, b: any): any;
@@ -2,14 +2,13 @@
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.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.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, needSplitPositiveAndNegative) {
11
- this.className = "Aggregator", this.isRecord = !0, this.records = [], this.needSplitPositiveAndNegativeForSum = !1,
12
- this.field = dimension, this.needSplitPositiveAndNegativeForSum = null != needSplitPositiveAndNegative && needSplitPositiveAndNegative,
10
+ constructor(dimension, formatFun, isRecord) {
11
+ this.className = "Aggregator", this.isRecord = !0, this.records = [], this.field = dimension,
13
12
  this.formatFun = formatFun, this.isRecord = null != isRecord ? isRecord : this.isRecord;
14
13
  }
15
14
  clearCacheValue() {
@@ -39,6 +38,7 @@ class RecordAggregator extends Aggregator {
39
38
  reset() {
40
39
  this.records = [];
41
40
  }
41
+ recalculate() {}
42
42
  }
43
43
 
44
44
  exports.RecordAggregator = RecordAggregator;
@@ -56,14 +56,38 @@ class NoneAggregator extends Aggregator {
56
56
  reset() {
57
57
  this.records = [], this.fieldValue = void 0;
58
58
  }
59
+ recalculate() {}
59
60
  }
60
61
 
61
62
  exports.NoneAggregator = NoneAggregator;
62
63
 
64
+ 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;
68
+ }
69
+ push(record) {
70
+ this.isRecord && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record)),
71
+ this.values.push(record[this.field]);
72
+ }
73
+ value() {
74
+ var _a;
75
+ return this.fieldValue || (this.fieldValue = null === (_a = this.aggregationFun) || void 0 === _a ? void 0 : _a.call(this, this.values, this.records, this.field)),
76
+ this.fieldValue;
77
+ }
78
+ reset() {
79
+ this.records = [], this.fieldValue = void 0;
80
+ }
81
+ recalculate() {}
82
+ }
83
+
84
+ exports.CustomAggregator = CustomAggregator;
85
+
63
86
  class SumAggregator extends Aggregator {
64
- constructor() {
65
- super(...arguments), this.type = ts_types_1.AggregationType.SUM, this.sum = 0, this.positiveSum = 0,
66
- this.nagetiveSum = 0;
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;
67
91
  }
68
92
  push(record) {
69
93
  if (this.isRecord && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record)),
@@ -87,6 +111,19 @@ class SumAggregator extends Aggregator {
87
111
  reset() {
88
112
  this.records = [], this.sum = 0;
89
113
  }
114
+ recalculate() {
115
+ this.sum = 0, this._formatedValue = void 0;
116
+ for (let i = 0; i < this.records.length; i++) {
117
+ const record = this.records[i];
118
+ if ("Aggregator" === record.className) {
119
+ const value = record.value();
120
+ this.sum += value, this.needSplitPositiveAndNegativeForSum && (value > 0 ? this.positiveSum += value : value < 0 && (this.nagetiveSum += value));
121
+ } else if (!isNaN(parseFloat(record[this.field]))) {
122
+ const value = parseFloat(record[this.field]);
123
+ this.sum += value, this.needSplitPositiveAndNegativeForSum && (value > 0 ? this.positiveSum += value : value < 0 && (this.nagetiveSum += value));
124
+ }
125
+ }
126
+ }
90
127
  }
91
128
 
92
129
  exports.SumAggregator = SumAggregator;
@@ -105,6 +142,13 @@ class CountAggregator extends Aggregator {
105
142
  reset() {
106
143
  this.records = [], this.count = 0;
107
144
  }
145
+ recalculate() {
146
+ this.count = 0, this._formatedValue = void 0;
147
+ for (let i = 0; i < this.records.length; i++) {
148
+ const record = this.records[i];
149
+ "Aggregator" === record.className ? this.count += record.value() : this.count++;
150
+ }
151
+ }
108
152
  }
109
153
 
110
154
  exports.CountAggregator = CountAggregator;
@@ -125,6 +169,15 @@ class AvgAggregator extends Aggregator {
125
169
  reset() {
126
170
  this.records = [], this.sum = 0, this.count = 0;
127
171
  }
172
+ recalculate() {
173
+ this.sum = 0, this.count = 0, this._formatedValue = void 0;
174
+ for (let i = 0; i < this.records.length; i++) {
175
+ const record = this.records[i];
176
+ "Aggregator" === record.className && record.type === ts_types_1.AggregationType.AVG ? (this.sum += record.sum,
177
+ this.count += record.count) : isNaN(parseFloat(record[this.field])) || (this.sum += parseFloat(record[this.field]),
178
+ this.count++);
179
+ }
180
+ }
128
181
  }
129
182
 
130
183
  exports.AvgAggregator = AvgAggregator;
@@ -143,14 +196,20 @@ class MaxAggregator extends Aggregator {
143
196
  reset() {
144
197
  this.records = [], this.max = Number.MIN_SAFE_INTEGER;
145
198
  }
199
+ recalculate() {
200
+ this.max = Number.MIN_SAFE_INTEGER, this._formatedValue = void 0;
201
+ for (let i = 0; i < this.records.length; i++) {
202
+ const record = this.records[i];
203
+ "Aggregator" === record.className ? this.max = record.max > this.max ? record.max : this.max : "number" == typeof record ? this.max = record > this.max ? record : this.max : "number" == typeof record[this.field] ? this.max = record[this.field] > this.max ? record[this.field] : this.max : isNaN(record[this.field]) || (this.max = parseFloat(record[this.field]) > this.max ? parseFloat(record[this.field]) : this.max);
204
+ }
205
+ }
146
206
  }
147
207
 
148
208
  exports.MaxAggregator = MaxAggregator;
149
209
 
150
210
  class MinAggregator extends Aggregator {
151
211
  constructor() {
152
- super(...arguments), this.type = ts_types_1.AggregationType.MIN, this.min = Number.MAX_SAFE_INTEGER,
153
- this.isRecord = !1;
212
+ super(...arguments), this.type = ts_types_1.AggregationType.MIN, this.min = Number.MAX_SAFE_INTEGER;
154
213
  }
155
214
  push(record) {
156
215
  this.isRecord && ("Aggregator" === record.className ? this.records.push(...record.records) : this.records.push(record)),
@@ -162,6 +221,13 @@ class MinAggregator extends Aggregator {
162
221
  reset() {
163
222
  this.records = [], this.min = Number.MAX_SAFE_INTEGER;
164
223
  }
224
+ recalculate() {
225
+ this.min = Number.MAX_SAFE_INTEGER, this._formatedValue = void 0;
226
+ for (let i = 0; i < this.records.length; i++) {
227
+ const record = this.records[i];
228
+ "Aggregator" === record.className ? this.min = record.min < this.min ? record.min : this.min : "number" == typeof record ? this.min = record < this.min ? record : this.min : "number" == typeof record[this.field] && (this.min = record[this.field] < this.min ? record[this.field] : this.min);
229
+ }
230
+ }
165
231
  }
166
232
 
167
233
  function indicatorSort(a, b) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/dataset/statistics-helper.ts"],"names":[],"mappings":";;;AACA,0CAA8C;AAG9C,MAAsB,UAAU;IAS9B,YACE,SAA4B,EAC5B,SAAe,EACf,QAAkB,EAClB,4BAAsC;QAZxC,cAAS,GAAG,YAAY,CAAC;QACzB,aAAQ,GAAa,IAAI,CAAC;QAC1B,YAAO,GAAW,EAAE,CAAC;QAKrB,uCAAkC,GAAa,KAAK,CAAC;QAOnD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,kCAAkC,GAAG,4BAA4B,aAA5B,4BAA4B,cAA5B,4BAA4B,GAAI,KAAK,CAAC;QAChF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,IAAI,CAAC,QAAQ,CAAC;IAC5C,CAAC;IASD,eAAe;QACb,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;IAClC,CAAC;IACD,WAAW,CAAC,GAAY,EAAE,GAAY,EAAE,KAAoB;QAC1D,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;aACrE;iBAAM;gBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;aACpC;SACF;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;CACF;AA5CD,gCA4CC;AACD,MAAa,gBAAiB,SAAQ,UAAU;IAAhD;;QACE,SAAI,GAAW,0BAAe,CAAC,MAAM,CAAC;QACtC,aAAQ,GAAa,IAAI,CAAC;IAgB5B,CAAC;IAfC,IAAI,CAAC,MAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;IACH,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;CACF;AAlBD,4CAkBC;AAED,MAAa,cAAe,SAAQ,UAAU;IAA9C;;QACE,SAAI,GAAW,0BAAe,CAAC,IAAI,CAAC;QACpC,aAAQ,GAAa,IAAI,CAAC;IAgB5B,CAAC;IAbC,IAAI,CAAC,MAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;CACF;AAlBD,wCAkBC;AACD,MAAa,aAAc,SAAQ,UAAU;IAA7C;;QACE,SAAI,GAAW,0BAAe,CAAC,GAAG,CAAC;QACnC,QAAG,GAAG,CAAC,CAAC;QACR,gBAAW,GAAG,CAAC,CAAC;QAChB,gBAAW,GAAG,CAAC,CAAC;IA6ClB,CAAC;IA3CC,IAAI,CAAC,MAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;YACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;YAClB,IAAI,IAAI,CAAC,kCAAkC,EAAE;gBAC3C,IAAI,KAAK,GAAG,CAAC,EAAE;oBACb,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;iBAC3B;qBAAM,IAAI,KAAK,GAAG,CAAC,EAAE;oBACpB,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;iBAC3B;aACF;SACF;aAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACjD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;YAClB,IAAI,IAAI,CAAC,kCAAkC,EAAE;gBAC3C,IAAI,KAAK,GAAG,CAAC,EAAE;oBACb,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;iBAC3B;qBAAM,IAAI,KAAK,GAAG,CAAC,EAAE;oBACpB,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;iBAC3B;aACF;SACF;IACH,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACf,CAAC;CACF;AAjDD,sCAiDC;AAED,MAAa,eAAgB,SAAQ,UAAU;IAA/C;;QACE,SAAI,GAAW,0BAAe,CAAC,KAAK,CAAC;QACrC,UAAK,GAAG,CAAC,CAAC;IAuBZ,CAAC;IArBC,IAAI,CAAC,MAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;YACrC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;IACH,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;CACF;AAzBD,0CAyBC;AACD,MAAa,aAAc,SAAQ,UAAU;IAA7C;;QACE,SAAI,GAAW,0BAAe,CAAC,GAAG,CAAC;QACnC,QAAG,GAAG,CAAC,CAAC;QACR,UAAK,GAAG,CAAC,CAAC;IA0BZ,CAAC;IAxBC,IAAI,CAAC,MAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,0BAAe,CAAC,GAAG,EAAE;YAC5E,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC;YACvB,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;SAC5B;aAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACjD,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;IACH,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;IAC/B,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;CACF;AA7BD,sCA6BC;AACD,MAAa,aAAc,SAAQ,UAAU;IAA7C;;QACE,SAAI,GAAW,0BAAe,CAAC,GAAG,CAAC;QACnC,QAAG,GAAW,MAAM,CAAC,gBAAgB,CAAC;IA2BxC,CAAC;IAzBC,IAAI,CAAC,MAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;YACrC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAC1D;aAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YACrC,IAAI,CAAC,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAClD;aAAM,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;YACjD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAC1E;aAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YACrC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAClG;IACH,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACrC,CAAC;CACF;AA7BD,sCA6BC;AACD,MAAa,aAAc,SAAQ,UAAU;IAA7C;;QACE,SAAI,GAAW,0BAAe,CAAC,GAAG,CAAC;QACnC,QAAG,GAAW,MAAM,CAAC,gBAAgB,CAAC;QACtC,aAAQ,GAAa,KAAK,CAAC;IAyB7B,CAAC;IAvBC,IAAI,CAAC,MAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;YACrC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAC1D;aAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YACrC,IAAI,CAAC,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAClD;aAAM,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;YACjD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAC1E;IACH,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACrC,CAAC;CACF;AA5BD,sCA4BC;AACD,SAAgB,aAAa,CAAC,CAAM,EAAE,CAAM;IAC1C,IAAI,CAAC,IAAI,CAAC,EAAE;QAEV,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;KACvD;IACD,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,CAAC;KACV;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AATD,sCASC;AACD,SAAgB,QAAQ,CAAC,CAAM,EAAE,CAAM;IACrC,IAAI,CAAC,IAAI,CAAC,EAAE;QAEV,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;KACvD;IACD,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,CAAC;KACV;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AATD,4BASC;AACD,SAAgB,WAAW,CAAC,EAAO,EAAE,EAAO;IAC1C,MAAM,EAAE,GAAG,cAAc,CAAC;IAC1B,MAAM,EAAE,GAAG,IAAI,CAAC;IAChB,MAAM,EAAE,GAAG,IAAI,CAAC;IAChB,IAAI,CAAC,CAAC;IACN,IAAI,EAAE,CAAC;IACP,IAAI,CAAC,CAAC;IACN,IAAI,EAAE,CAAC;IACP,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE;QAC9B,OAAO,CAAC,CAAC,CAAC;KACX;IACD,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE;QAC9B,OAAO,CAAC,CAAC;KACV;IACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;QACvC,OAAO,CAAC,CAAC,CAAC;KACX;IACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;QACvC,OAAO,CAAC,CAAC;KACV;IACD,GAAG,GAAG,CAAC,EAAE,CAAC;IACV,GAAG,GAAG,CAAC,EAAE,CAAC;IACV,IAAI,GAAG,GAAG,GAAG,EAAE;QACb,OAAO,CAAC,CAAC,CAAC;KACX;IACD,IAAI,GAAG,GAAG,GAAG,EAAE;QACb,OAAO,CAAC,CAAC;KACV;IACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;QACpD,OAAO,CAAC,CAAC,CAAC;KACX;IACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;QACpD,OAAO,CAAC,CAAC;KACV;IACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;QACpD,OAAO,CAAC,CAAC;KACV;IACD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC7B,OAAO,CAAC,CAAC,CAAC;KACX;IACD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC7B,OAAO,CAAC,CAAC;KACV;IACD,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACf,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACf,IAAI,CAAC,KAAK,CAAC,EAAE;QACX,OAAO,CAAC,CAAC;KACV;IACD,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACvB;IACD,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE;QAC3B,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACf,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,EAAE,KAAK,EAAE,EAAE;YACb,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAC9B,OAAY,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,GAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;aAC9D;YACD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACzB;KACF;IACD,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC7B,CAAC;AAlED,kCAkEC;AACD,SAAgB,MAAM,CAAC,KAAe;IACpC,IAAI,CAAC,CAAC;IACN,IAAI,CAAC,CAAC;IACN,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,iBAAiB,GAAG,EAAE,CAAC;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;YACzB,iBAAiB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;SACxC;KACF;IACD,OAAO,UAAU,CAAM,EAAE,CAAM;QAC7B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YACtG,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;SAChC;aAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YAC1D,OAAO,CAAC,CAAC,CAAC;SACX;aAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YAC1D,OAAO,CAAC,CAAC;SACV;aAAM,IACL,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI;YAC7B,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS;YACxB,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI;YAC7B,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EACxB;YACA,OAAO,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;SACpD;aAAM,IACL,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI;YAC7B,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS;YACxB,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI;YAC7B,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EACxB;YACA,OAAO,CAAC,CAAC;SACV;aAAM,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YACpE,OAAO,CAAC,CAAC,CAAC;SACX;aAAM,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YACpE,OAAO,CAAC,CAAC;SACV;QACD,OAAO,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC;AACJ,CAAC;AAzCD,wBAyCC","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 abstract class Aggregator {\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 needSplitPositiveAndNegativeForSum?: boolean = false;\n constructor(\n dimension: string | string[],\n formatFun?: any,\n isRecord?: boolean,\n needSplitPositiveAndNegative?: boolean\n ) {\n this.field = dimension;\n this.needSplitPositiveAndNegativeForSum = needSplitPositiveAndNegative ?? false;\n this.formatFun = formatFun;\n this.isRecord = isRecord ?? this.isRecord;\n }\n // push(record: any) {\n // if (this.isRecord) {\n // if (record.className === 'Aggregator') this.records.push(...record.records);\n // else this.records.push(record);\n // }\n // }\n abstract push(record: any): void;\n abstract value(): 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) {\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}\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 this.fieldValue = record[this.field];\n }\n value() {\n return this.fieldValue;\n }\n reset() {\n this.records = [];\n this.fieldValue = undefined;\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 push(record: any): void {\n if (this.isRecord) {\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 (!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}\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) {\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}\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) {\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 (!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}\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) {\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 (typeof record[this.field] === 'number') {\n this.max = record[this.field] > this.max ? record[this.field] : this.max;\n } else if (!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}\nexport class MinAggregator extends Aggregator {\n type: string = AggregationType.MIN;\n min: number = Number.MAX_SAFE_INTEGER;\n isRecord?: boolean = false;\n declare field?: string;\n push(record: any): void {\n if (this.isRecord) {\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 (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}\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":";;;AACA,0CAA8C;AAG9C,MAAsB,UAAU;IAS9B,YAAY,SAAiB,EAAE,SAAe,EAAE,QAAkB;QARlE,cAAS,GAAG,YAAY,CAAC;QACzB,aAAQ,GAAa,IAAI,CAAC;QAC1B,YAAO,GAAW,EAAE,CAAC;QAOnB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,IAAI,CAAC,QAAQ,CAAC;IAC5C,CAAC;IAID,eAAe;QACb,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;IAClC,CAAC;IACD,WAAW,CAAC,GAAY,EAAE,GAAY,EAAE,KAAoB;QAC1D,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;aACrE;iBAAM;gBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;aACpC;SACF;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;CACF;AAjCD,gCAiCC;AACD,MAAa,gBAAiB,SAAQ,UAAU;IAAhD;;QACE,SAAI,GAAW,0BAAe,CAAC,MAAM,CAAC;QACtC,aAAQ,GAAa,IAAI,CAAC;IAmB5B,CAAC;IAlBC,IAAI,CAAC,MAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;IACH,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IACD,WAAW;IAEX,CAAC;CACF;AArBD,4CAqBC;AAED,MAAa,cAAe,SAAQ,UAAU;IAA9C;;QACE,SAAI,GAAW,0BAAe,CAAC,IAAI,CAAC;QACpC,aAAQ,GAAa,IAAI,CAAC;IAmB5B,CAAC;IAhBC,IAAI,CAAC,MAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IACD,WAAW;IAEX,CAAC;CACF;AArBD,wCAqBC;AACD,MAAa,gBAAiB,SAAQ,UAAU;IAO9C,YAAY,SAAiB,EAAE,SAAe,EAAE,QAAkB,EAAE,cAAyB;QAC3F,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAPxC,SAAI,GAAW,0BAAe,CAAC,MAAM,CAAC;QACtC,aAAQ,GAAa,IAAI,CAAC;QAG1B,WAAM,GAAwB,EAAE,CAAC;QAI/B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,MAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,KAAK;;QACH,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,cAAc,qDAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAChF;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IACD,WAAW;IAEX,CAAC;CACF;AAlCD,4CAkCC;AACD,MAAa,aAAc,SAAQ,UAAU;IAO3C,YAAY,SAAiB,EAAE,SAAe,EAAE,QAAkB,EAAE,4BAAsC;QACxG,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAPxC,SAAI,GAAW,0BAAe,CAAC,GAAG,CAAC;QACnC,QAAG,GAAG,CAAC,CAAC;QACR,gBAAW,GAAG,CAAC,CAAC;QAChB,gBAAW,GAAG,CAAC,CAAC;QAEhB,uCAAkC,GAAa,KAAK,CAAC;QAGnD,IAAI,CAAC,kCAAkC,GAAG,4BAA4B,aAA5B,4BAA4B,cAA5B,4BAA4B,GAAI,KAAK,CAAC;IAClF,CAAC;IACD,IAAI,CAAC,MAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;YACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;YAClB,IAAI,IAAI,CAAC,kCAAkC,EAAE;gBAC3C,IAAI,KAAK,GAAG,CAAC,EAAE;oBACb,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;iBAC3B;qBAAM,IAAI,KAAK,GAAG,CAAC,EAAE;oBACpB,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;iBAC3B;aACF;SACF;aAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACjD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;YAClB,IAAI,IAAI,CAAC,kCAAkC,EAAE;gBAC3C,IAAI,KAAK,GAAG,CAAC,EAAE;oBACb,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;iBAC3B;qBAAM,IAAI,KAAK,GAAG,CAAC,EAAE;oBACpB,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;iBAC3B;aACF;SACF;IACH,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACf,CAAC;IACD,WAAW;QACT,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;gBAClB,IAAI,IAAI,CAAC,kCAAkC,EAAE;oBAC3C,IAAI,KAAK,GAAG,CAAC,EAAE;wBACb,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;qBAC3B;yBAAM,IAAI,KAAK,GAAG,CAAC,EAAE;wBACpB,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;qBAC3B;iBACF;aACF;iBAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACjD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC7C,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;gBAClB,IAAI,IAAI,CAAC,kCAAkC,EAAE;oBAC3C,IAAI,KAAK,GAAG,CAAC,EAAE;wBACb,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;qBAC3B;yBAAM,IAAI,KAAK,GAAG,CAAC,EAAE;wBACpB,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;qBAC3B;iBACF;aACF;SACF;IACH,CAAC;CACF;AAlFD,sCAkFC;AAED,MAAa,eAAgB,SAAQ,UAAU;IAA/C;;QACE,SAAI,GAAW,0BAAe,CAAC,KAAK,CAAC;QACrC,UAAK,GAAG,CAAC,CAAC;IAmCZ,CAAC;IAjCC,IAAI,CAAC,MAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;YACrC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;IACH,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;IACD,WAAW;QACT,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;aAC9B;iBAAM;gBACL,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;SACF;IACH,CAAC;CACF;AArCD,0CAqCC;AACD,MAAa,aAAc,SAAQ,UAAU;IAA7C;;QACE,SAAI,GAAW,0BAAe,CAAC,GAAG,CAAC;QACnC,QAAG,GAAG,CAAC,CAAC;QACR,UAAK,GAAG,CAAC,CAAC;IAyCZ,CAAC;IAvCC,IAAI,CAAC,MAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,0BAAe,CAAC,GAAG,EAAE;YAC5E,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC;YACvB,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;SAC5B;aAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACjD,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;IACH,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;IAC/B,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;IACD,WAAW;QACT,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,0BAAe,CAAC,GAAG,EAAE;gBAC5E,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC;gBACvB,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;aAC5B;iBAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACjD,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;SACF;IACH,CAAC;CACF;AA5CD,sCA4CC;AACD,MAAa,aAAc,SAAQ,UAAU;IAA7C;;QACE,SAAI,GAAW,0BAAe,CAAC,GAAG,CAAC;QACnC,QAAG,GAAW,MAAM,CAAC,gBAAgB,CAAC;IA2CxC,CAAC;IAzCC,IAAI,CAAC,MAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;YACrC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAC1D;aAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YACrC,IAAI,CAAC,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAClD;aAAM,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;YACjD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAC1E;aAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YACrC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAClG;IACH,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACrC,CAAC;IACD,WAAW;QACT,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aAC1D;iBAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBACrC,IAAI,CAAC,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aAClD;iBAAM,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;gBACjD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aAC1E;iBAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;gBACrC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aAClG;SACF;IACH,CAAC;CACF;AA7CD,sCA6CC;AACD,MAAa,aAAc,SAAQ,UAAU;IAA7C;;QACE,SAAI,GAAW,0BAAe,CAAC,GAAG,CAAC;QACnC,QAAG,GAAW,MAAM,CAAC,gBAAgB,CAAC;IAuCxC,CAAC;IArCC,IAAI,CAAC,MAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;YACrC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAC1D;aAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YACrC,IAAI,CAAC,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAClD;aAAM,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;YACjD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAC1E;IACH,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACrC,CAAC;IACD,WAAW;QACT,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;gBACrC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aAC1D;iBAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBACrC,IAAI,CAAC,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aAClD;iBAAM,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;gBACjD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aAC1E;SACF;IACH,CAAC;CACF;AAzCD,sCAyCC;AACD,SAAgB,aAAa,CAAC,CAAM,EAAE,CAAM;IAC1C,IAAI,CAAC,IAAI,CAAC,EAAE;QAEV,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;KACvD;IACD,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,CAAC;KACV;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AATD,sCASC;AACD,SAAgB,QAAQ,CAAC,CAAM,EAAE,CAAM;IACrC,IAAI,CAAC,IAAI,CAAC,EAAE;QAEV,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;KACvD;IACD,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,CAAC;KACV;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AATD,4BASC;AACD,SAAgB,WAAW,CAAC,EAAO,EAAE,EAAO;IAC1C,MAAM,EAAE,GAAG,cAAc,CAAC;IAC1B,MAAM,EAAE,GAAG,IAAI,CAAC;IAChB,MAAM,EAAE,GAAG,IAAI,CAAC;IAChB,IAAI,CAAC,CAAC;IACN,IAAI,EAAE,CAAC;IACP,IAAI,CAAC,CAAC;IACN,IAAI,EAAE,CAAC;IACP,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE;QAC9B,OAAO,CAAC,CAAC,CAAC;KACX;IACD,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE;QAC9B,OAAO,CAAC,CAAC;KACV;IACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;QACvC,OAAO,CAAC,CAAC,CAAC;KACX;IACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;QACvC,OAAO,CAAC,CAAC;KACV;IACD,GAAG,GAAG,CAAC,EAAE,CAAC;IACV,GAAG,GAAG,CAAC,EAAE,CAAC;IACV,IAAI,GAAG,GAAG,GAAG,EAAE;QACb,OAAO,CAAC,CAAC,CAAC;KACX;IACD,IAAI,GAAG,GAAG,GAAG,EAAE;QACb,OAAO,CAAC,CAAC;KACV;IACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;QACpD,OAAO,CAAC,CAAC,CAAC;KACX;IACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;QACpD,OAAO,CAAC,CAAC;KACV;IACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;QACpD,OAAO,CAAC,CAAC;KACV;IACD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC7B,OAAO,CAAC,CAAC,CAAC;KACX;IACD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC7B,OAAO,CAAC,CAAC;KACV;IACD,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACf,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACf,IAAI,CAAC,KAAK,CAAC,EAAE;QACX,OAAO,CAAC,CAAC;KACV;IACD,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACvB;IACD,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE;QAC3B,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACf,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,EAAE,KAAK,EAAE,EAAE;YACb,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAC9B,OAAY,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,GAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;aAC9D;YACD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACzB;KACF;IACD,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC7B,CAAC;AAlED,kCAkEC;AACD,SAAgB,MAAM,CAAC,KAAe;IACpC,IAAI,CAAC,CAAC;IACN,IAAI,CAAC,CAAC;IACN,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,iBAAiB,GAAG,EAAE,CAAC;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;YACzB,iBAAiB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;SACxC;KACF;IACD,OAAO,UAAU,CAAM,EAAE,CAAM;QAC7B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YACtG,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;SAChC;aAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YAC1D,OAAO,CAAC,CAAC,CAAC;SACX;aAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YAC1D,OAAO,CAAC,CAAC;SACV;aAAM,IACL,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI;YAC7B,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS;YACxB,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI;YAC7B,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EACxB;YACA,OAAO,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;SACpD;aAAM,IACL,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI;YAC7B,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS;YACxB,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI;YAC7B,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EACxB;YACA,OAAO,CAAC,CAAC;SACV;aAAM,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YACpE,OAAO,CAAC,CAAC,CAAC;SACX;aAAM,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YACpE,OAAO,CAAC,CAAC;SACV;QACD,OAAO,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC;AACJ,CAAC;AAzCD,wBAyCC","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 abstract class Aggregator {\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) {\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 this.fieldValue = record[this.field];\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) {\n if (record.className === 'Aggregator') {\n this.records.push(...record.records);\n } else {\n this.records.push(record);\n }\n }\n this.values.push(record[this.field]);\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) {\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 (!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 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 (!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\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) {\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 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}\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) {\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 (!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 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 (!isNaN(parseFloat(record[this.field]))) {\n this.sum += parseFloat(record[this.field]);\n this.count++;\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) {\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 (typeof record[this.field] === 'number') {\n this.max = record[this.field] > this.max ? record[this.field] : this.max;\n } else if (!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 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 (typeof record[this.field] === 'number') {\n this.max = record[this.field] > this.max ? record[this.field] : this.max;\n } else if (!isNaN(record[this.field])) {\n this.max = parseFloat(record[this.field]) > this.max ? parseFloat(record[this.field]) : this.max;\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) {\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 (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 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 (typeof record[this.field] === 'number') {\n this.min = record[this.field] < this.min ? record[this.field] : this.min;\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"]}
@@ -29,7 +29,7 @@ class EditManeger {
29
29
  }));
30
30
  }
31
31
  startEditCell(col, row) {
32
- var _a, _b, _c;
32
+ var _a, _b, _c, _d, _e;
33
33
  if (this.table.isPivotTable() && this.table.isHeader(col, row)) return;
34
34
  const editor = this.table.getEditor(col, row);
35
35
  if (editor) {
@@ -38,6 +38,7 @@ class EditManeger {
38
38
  const range = this.table.getCellRange(col, row);
39
39
  if (range.start.col !== range.end.col || range.start.row !== range.end.row) return;
40
40
  }
41
+ if (null === (_b = null === (_a = this.table.internalProps.layoutMap) || void 0 === _a ? void 0 : _a.isAggregation) || void 0 === _b ? void 0 : _b.call(_a, col, row)) return;
41
42
  this.editingEditor = editor, this.editCell = {
42
43
  col: col,
43
44
  row: row
@@ -50,10 +51,10 @@ class EditManeger {
50
51
  height: rect.height
51
52
  }
52
53
  };
53
- editor.beginEditing, null === (_a = editor.beginEditing) || void 0 === _a || _a.call(editor, this.table.getElement(), referencePosition, dataValue),
54
- editor.bindSuccessCallback, null === (_b = editor.bindSuccessCallback) || void 0 === _b || _b.call(editor, (() => {
54
+ editor.beginEditing, null === (_c = editor.beginEditing) || void 0 === _c || _c.call(editor, this.table.getElement(), referencePosition, dataValue),
55
+ editor.bindSuccessCallback, null === (_d = editor.bindSuccessCallback) || void 0 === _d || _d.call(editor, (() => {
55
56
  this.completeEdit();
56
- })), null === (_c = editor.onStart) || void 0 === _c || _c.call(editor, {
57
+ })), null === (_e = editor.onStart) || void 0 === _e || _e.call(editor, {
57
58
  value: dataValue,
58
59
  endEdit: () => {
59
60
  this.completeEdit();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/edit/edit-manager.ts"],"names":[],"mappings":"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","file":"edit-manager.js","sourcesContent":["import type { IEditor } from '@visactor/vtable-editors';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport type { ListTableAPI, ListTableConstructorOptions } from '../ts-types';\nimport { getCellEventArgsSet } from '../event/util';\n\nexport class EditManeger {\n table: BaseTableAPI;\n editingEditor: IEditor;\n editCell: { col: number; row: number };\n\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.bindEvent();\n }\n\n bindEvent() {\n const handler = this.table.internalProps.handler;\n this.table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, e => {\n if (\n !(this.table.options as ListTableConstructorOptions).editCellTrigger || //默认为双击\n (this.table.options as ListTableConstructorOptions).editCellTrigger === 'doubleclick'\n ) {\n const { col, row } = e;\n\n //取双击自动列宽逻辑\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent);\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n // 判断同双击自动列宽的时间监听的DBLCLICK_CELL\n // 如果是双击自动列宽 则编辑不开启\n return;\n }\n this.startEditCell(col, row);\n }\n });\n\n this.table.on(TABLE_EVENT_TYPE.CLICK_CELL, e => {\n if ((this.table.options as ListTableConstructorOptions).editCellTrigger === 'click') {\n const { col, row } = e;\n this.startEditCell(col, row);\n }\n });\n\n handler.on(this.table.getElement(), 'wheel', (e: WheelEvent) => {\n this.completeEdit();\n });\n }\n\n startEditCell(col: number, row: number) {\n //透视表的表头不允许编辑\n if (this.table.isPivotTable() && this.table.isHeader(col, row)) {\n return;\n }\n const editor = (this.table as ListTableAPI).getEditor(col, row);\n if (editor) {\n //自定义内容单元格不允许编辑\n if (this.table.getCustomRender(col, row) || this.table.getCustomLayout(col, row)) {\n console.warn(\"VTable Warn: cell has config custom render or layout, can't be edited\");\n return;\n }\n if (!this.table.isHeader(col, row)) {\n const range = this.table.getCellRange(col, row);\n const isMerge = range.start.col !== range.end.col || range.start.row !== range.end.row;\n if (isMerge) {\n console.warn(\"VTable Warn: this is merge cell, can't be edited\");\n return;\n }\n }\n this.editingEditor = editor;\n this.editCell = { col, row };\n const dataValue = this.table.getCellOriginValue(col, row);\n const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n\n editor.beginEditing && console.warn('VTable Warn: `beginEditing` is deprecated, please use `onStart` instead.');\n editor.beginEditing?.(this.table.getElement(), referencePosition, dataValue);\n\n if (editor.bindSuccessCallback) {\n console.warn('VTable Warn: `bindSuccessCallback` is deprecated, please use `onStart` instead.');\n }\n editor.bindSuccessCallback?.(() => {\n this.completeEdit();\n });\n editor.onStart?.({\n value: dataValue,\n endEdit: () => {\n this.completeEdit();\n },\n referencePosition,\n container: this.table.getElement()\n });\n }\n }\n\n /** 如果是事件触发调用该接口 请传入原始事件对象 将判断事件对象是否在编辑器本身上面 来处理是否结束编辑 */\n completeEdit(e?: Event) {\n if (!this.editingEditor) {\n return;\n }\n\n const target = e?.target as HTMLElement | undefined;\n const { editingEditor: editor } = this;\n\n if (target) {\n if (editor.targetIsOnEditor) {\n console.warn('VTable Warn: `targetIsOnEditor` is deprecated, please use `isEditorElement` instead.');\n\n if (editor.targetIsOnEditor(target)) {\n return;\n }\n } else if (!editor.isEditorElement || editor.isEditorElement(target)) {\n return;\n }\n }\n\n if (!this.editingEditor.getValue) {\n console.warn('VTable Warn: `getValue` is not provided, did you forget to implement it?');\n }\n const changedValue = this.editingEditor.getValue?.();\n (this.table as ListTableAPI).changeCellValue(this.editCell.col, this.editCell.row, changedValue);\n\n this.editingEditor.exit && console.warn('VTable Warn: `exit` is deprecated, please use `onEnd` instead.');\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n }\n\n cancelEdit() {\n if (this.editingEditor) {\n // TODO: 添加开发时弃用警告\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/edit/edit-manager.ts"],"names":[],"mappings":"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","file":"edit-manager.js","sourcesContent":["import type { IEditor } from '@visactor/vtable-editors';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport type { ListTableAPI, ListTableConstructorOptions } from '../ts-types';\nimport { getCellEventArgsSet } from '../event/util';\nimport type { SimpleHeaderLayoutMap } from '../layout';\n\nexport class EditManeger {\n table: BaseTableAPI;\n editingEditor: IEditor;\n editCell: { col: number; row: number };\n\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.bindEvent();\n }\n\n bindEvent() {\n const handler = this.table.internalProps.handler;\n this.table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, e => {\n if (\n !(this.table.options as ListTableConstructorOptions).editCellTrigger || //默认为双击\n (this.table.options as ListTableConstructorOptions).editCellTrigger === 'doubleclick'\n ) {\n const { col, row } = e;\n\n //取双击自动列宽逻辑\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent);\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n // 判断同双击自动列宽的时间监听的DBLCLICK_CELL\n // 如果是双击自动列宽 则编辑不开启\n return;\n }\n this.startEditCell(col, row);\n }\n });\n\n this.table.on(TABLE_EVENT_TYPE.CLICK_CELL, e => {\n if ((this.table.options as ListTableConstructorOptions).editCellTrigger === 'click') {\n const { col, row } = e;\n this.startEditCell(col, row);\n }\n });\n\n handler.on(this.table.getElement(), 'wheel', (e: WheelEvent) => {\n this.completeEdit();\n });\n }\n\n startEditCell(col: number, row: number) {\n //透视表的表头不允许编辑\n if (this.table.isPivotTable() && this.table.isHeader(col, row)) {\n return;\n }\n const editor = (this.table as ListTableAPI).getEditor(col, row);\n if (editor) {\n //自定义内容单元格不允许编辑\n if (this.table.getCustomRender(col, row) || this.table.getCustomLayout(col, row)) {\n console.warn(\"VTable Warn: cell has config custom render or layout, can't be edited\");\n return;\n }\n if (!this.table.isHeader(col, row)) {\n const range = this.table.getCellRange(col, row);\n const isMerge = range.start.col !== range.end.col || range.start.row !== range.end.row;\n if (isMerge) {\n console.warn(\"VTable Warn: this is merge cell, can't be edited\");\n return;\n }\n }\n if ((this.table.internalProps.layoutMap as SimpleHeaderLayoutMap)?.isAggregation?.(col, row)) {\n console.warn(\"VTable Warn: this is aggregation value, can't be edited\");\n return;\n }\n this.editingEditor = editor;\n this.editCell = { col, row };\n const dataValue = this.table.getCellOriginValue(col, row);\n const rect = this.table.getCellRangeRelativeRect(this.table.getCellRange(col, row));\n const referencePosition = { rect: { left: rect.left, top: rect.top, width: rect.width, height: rect.height } };\n\n editor.beginEditing && console.warn('VTable Warn: `beginEditing` is deprecated, please use `onStart` instead.');\n editor.beginEditing?.(this.table.getElement(), referencePosition, dataValue);\n\n if (editor.bindSuccessCallback) {\n console.warn('VTable Warn: `bindSuccessCallback` is deprecated, please use `onStart` instead.');\n }\n editor.bindSuccessCallback?.(() => {\n this.completeEdit();\n });\n editor.onStart?.({\n value: dataValue,\n endEdit: () => {\n this.completeEdit();\n },\n referencePosition,\n container: this.table.getElement()\n });\n }\n }\n\n /** 如果是事件触发调用该接口 请传入原始事件对象 将判断事件对象是否在编辑器本身上面 来处理是否结束编辑 */\n completeEdit(e?: Event) {\n if (!this.editingEditor) {\n return;\n }\n\n const target = e?.target as HTMLElement | undefined;\n const { editingEditor: editor } = this;\n\n if (target) {\n if (editor.targetIsOnEditor) {\n console.warn('VTable Warn: `targetIsOnEditor` is deprecated, please use `isEditorElement` instead.');\n\n if (editor.targetIsOnEditor(target)) {\n return;\n }\n } else if (!editor.isEditorElement || editor.isEditorElement(target)) {\n return;\n }\n }\n\n if (!this.editingEditor.getValue) {\n console.warn('VTable Warn: `getValue` is not provided, did you forget to implement it?');\n }\n const changedValue = this.editingEditor.getValue?.();\n (this.table as ListTableAPI).changeCellValue(this.editCell.col, this.editCell.row, changedValue);\n\n this.editingEditor.exit && console.warn('VTable Warn: `exit` is deprecated, please use `onEnd` instead.');\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n }\n\n cancelEdit() {\n if (this.editingEditor) {\n // TODO: 添加开发时弃用警告\n this.editingEditor.exit?.();\n this.editingEditor.onEnd?.();\n this.editingEditor = null;\n }\n }\n}\n"]}
@@ -58,4 +58,5 @@ function bindMediaClick(table) {
58
58
  }));
59
59
  }
60
60
 
61
- exports.bindMediaClick = bindMediaClick;
61
+ exports.bindMediaClick = bindMediaClick;
62
+ //# sourceMappingURL=media-click.js.map
@@ -51,6 +51,5 @@ function isScrollToRight(deltaX, state) {
51
51
  return 0 !== totalWidth && deltaX >= 0 && Math.abs(state.scroll.horizontalBarPos - totalWidth) < 1;
52
52
  }
53
53
 
54
- //# sourceMappingURL=scroll.js.map
55
54
  exports.handleWhell = handleWhell, exports.isVerticalScrollable = isVerticalScrollable,
56
55
  exports.isHorizontalScrollable = isHorizontalScrollable;
package/cjs/index.d.ts CHANGED
@@ -15,7 +15,7 @@ import { updateCell } from './scenegraph/group-creater/cell-helper';
15
15
  import { renderChart } from './scenegraph/graphic/contributions/chart-render-helper';
16
16
  export { getDataCellPath } from './tools/get-data-path';
17
17
  export * from './render/jsx';
18
- export declare const version = "0.19.2-alpha.3";
18
+ export declare const version = "0.20.0";
19
19
  export { TYPES, core, ListTable, ListTableConstructorOptions, PivotTable, PivotTableConstructorOptions, PivotChartConstructorOptions, PivotChart, IHeaderTreeDefine, IDimension, IIndicator, ITitleDefine, ICornerDefine, ColumnsDefine, ColumnDefine, LinkColumnDefine, ChartColumnDefine, ImageColumnDefine, SparklineColumnDefine, ProgressbarColumnDefine, TextColumnDefine, GroupColumnDefine, TextAlignType, TextBaselineType, themes, data, MousePointerCellEvent, getIcons, clearGlobal, register, DataStatistics, CustomLayout, updateCell, renderChart, graphicUtil };
20
20
  declare function getIcons(): {
21
21
  [key: string]: TYPES.ColumnIconOption;
package/cjs/index.js CHANGED
@@ -128,6 +128,6 @@ Object.defineProperty(exports, "getDataCellPath", {
128
128
  get: function() {
129
129
  return get_data_path_1.getDataCellPath;
130
130
  }
131
- }), __exportStar(require("./render/jsx"), exports), exports.version = "0.19.2-alpha.3",
131
+ }), __exportStar(require("./render/jsx"), exports), exports.version = "0.20.0",
132
132
  exports.getIcons = getIcons, exports.clearGlobal = clearGlobal, TYPES.AggregationType;
133
133
  //# sourceMappingURL=index.js.map
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAA4D;AA6F1D,4FA7FO,qBAAW,OA6FP;AA5Fb,IAAA,4BAAkB,GAAE,CAAC;AAErB,kDAAoC;AAoDlC,sBAAK;AAnDP,6CAA+B;AAoD7B,oBAAI;AAnDN,6CAA+B;AA2E7B,oBAAI;AA1EN,+CAAiC;AACjC,qDAAuC;AA8ErC,4BAAQ;AA7EV,iDAAmC;AAuEjC,wBAAM;AAtER,yEAA2D;AAgFzD,wCAAc;AA1DhB,2CAAwC;AA0BtC,0FA1BO,qBAAS,OA0BP;AAzBX,6CAA0C;AA2BxC,2FA3BO,uBAAU,OA2BP;AA1BZ,6CAA0C;AA6BxC,2FA7BO,uBAAU,OA6BP;AA3BZ,8DAAgD;AAuD9C,oCAAY;AArDd,wEAAoE;AAsDlE,2FAtDO,wBAAU,OAsDP;AArDZ,gGAAqF;AAsDnF,4FAtDO,iCAAW,OAsDP;AAjDb,uDAAwD;AAA/C,gHAAA,eAAe,OAAA;AACxB,+CAA6B;AAEhB,QAAA,OAAO,GAAG,gBAAgB,CAAC;AAmDxC,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAnBC,4BAAQ;AAqBV,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AAxBC,kCAAW;AAyBb,KAAK,CAAC,eAAe,CAAC","file":"index.js","sourcesContent":["/* eslint-disable sort-imports */\nimport { graphicUtil, registerForVrender } from './vrender';\nregisterForVrender();\n\nimport * as TYPES from './ts-types';\nimport * as core from './core';\nimport * as data from './data';\nimport * as icons from './icons';\nimport * as register from './register';\nimport * as themes from './themes';\nimport * as DataStatistics from './dataset/DataStatistics';\nimport type {\n ColumnDefine,\n ColumnsDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n ListTableConstructorOptions,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n TextAlignType,\n TextBaselineType\n} from './ts-types';\nimport { ListTable } from './ListTable';\nimport { PivotTable } from './PivotTable';\nimport { PivotChart } from './PivotChart';\nimport type { MousePointerCellEvent } from './ts-types/events';\nimport * as CustomLayout from './render/layout';\n\nimport { updateCell } from './scenegraph/group-creater/cell-helper';\nimport { renderChart } from './scenegraph/graphic/contributions/chart-render-helper';\n\n// import { container, loadCanvasPicker } from '@src/vrender';\n// loadCanvasPicker(container);\n\nexport { getDataCellPath } from './tools/get-data-path';\nexport * from './render/jsx';\n\nexport const version = \"0.19.2-alpha.3\";\n/**\n * @namespace VTable\n */\nexport {\n /**\n * Types\n * @namespace VTable.TYPES\n */\n TYPES,\n core,\n ListTable,\n ListTableConstructorOptions,\n PivotTable,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n PivotChart,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n ColumnsDefine,\n ColumnDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n TextAlignType,\n TextBaselineType,\n themes,\n data,\n MousePointerCellEvent,\n getIcons,\n clearGlobal,\n //plugin registers\n register,\n /**\n * 暂不推荐使用\n */\n DataStatistics,\n CustomLayout,\n updateCell,\n renderChart,\n graphicUtil\n};\n\n/** @private */\nfunction getIcons(): {\n [key: string]: TYPES.ColumnIconOption;\n} {\n return icons.get();\n}\n/** 清理内部的全局变量 如注册的icon theme等 以及共享的header column类实例 */\nfunction clearGlobal() {\n register.clearAll();\n // headers.type.clearGlobal();\n // columns.type.clearGlobal();\n}\nTYPES.AggregationType;\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAA4D;AA6F1D,4FA7FO,qBAAW,OA6FP;AA5Fb,IAAA,4BAAkB,GAAE,CAAC;AAErB,kDAAoC;AAoDlC,sBAAK;AAnDP,6CAA+B;AAoD7B,oBAAI;AAnDN,6CAA+B;AA2E7B,oBAAI;AA1EN,+CAAiC;AACjC,qDAAuC;AA8ErC,4BAAQ;AA7EV,iDAAmC;AAuEjC,wBAAM;AAtER,yEAA2D;AAgFzD,wCAAc;AA1DhB,2CAAwC;AA0BtC,0FA1BO,qBAAS,OA0BP;AAzBX,6CAA0C;AA2BxC,2FA3BO,uBAAU,OA2BP;AA1BZ,6CAA0C;AA6BxC,2FA7BO,uBAAU,OA6BP;AA3BZ,8DAAgD;AAuD9C,oCAAY;AArDd,wEAAoE;AAsDlE,2FAtDO,wBAAU,OAsDP;AArDZ,gGAAqF;AAsDnF,4FAtDO,iCAAW,OAsDP;AAjDb,uDAAwD;AAA/C,gHAAA,eAAe,OAAA;AACxB,+CAA6B;AAEhB,QAAA,OAAO,GAAG,QAAQ,CAAC;AAmDhC,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAnBC,4BAAQ;AAqBV,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AAxBC,kCAAW;AAyBb,KAAK,CAAC,eAAe,CAAC","file":"index.js","sourcesContent":["/* eslint-disable sort-imports */\nimport { graphicUtil, registerForVrender } from './vrender';\nregisterForVrender();\n\nimport * as TYPES from './ts-types';\nimport * as core from './core';\nimport * as data from './data';\nimport * as icons from './icons';\nimport * as register from './register';\nimport * as themes from './themes';\nimport * as DataStatistics from './dataset/DataStatistics';\nimport type {\n ColumnDefine,\n ColumnsDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n ListTableConstructorOptions,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n TextAlignType,\n TextBaselineType\n} from './ts-types';\nimport { ListTable } from './ListTable';\nimport { PivotTable } from './PivotTable';\nimport { PivotChart } from './PivotChart';\nimport type { MousePointerCellEvent } from './ts-types/events';\nimport * as CustomLayout from './render/layout';\n\nimport { updateCell } from './scenegraph/group-creater/cell-helper';\nimport { renderChart } from './scenegraph/graphic/contributions/chart-render-helper';\n\n// import { container, loadCanvasPicker } from '@src/vrender';\n// loadCanvasPicker(container);\n\nexport { getDataCellPath } from './tools/get-data-path';\nexport * from './render/jsx';\n\nexport const version = \"0.20.0\";\n/**\n * @namespace VTable\n */\nexport {\n /**\n * Types\n * @namespace VTable.TYPES\n */\n TYPES,\n core,\n ListTable,\n ListTableConstructorOptions,\n PivotTable,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n PivotChart,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n ColumnsDefine,\n ColumnDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n TextAlignType,\n TextBaselineType,\n themes,\n data,\n MousePointerCellEvent,\n getIcons,\n clearGlobal,\n //plugin registers\n register,\n /**\n * 暂不推荐使用\n */\n DataStatistics,\n CustomLayout,\n updateCell,\n renderChart,\n graphicUtil\n};\n\n/** @private */\nfunction getIcons(): {\n [key: string]: TYPES.ColumnIconOption;\n} {\n return icons.get();\n}\n/** 清理内部的全局变量 如注册的icon theme等 以及共享的header column类实例 */\nfunction clearGlobal() {\n register.clearAll();\n // headers.type.clearGlobal();\n // columns.type.clearGlobal();\n}\nTYPES.AggregationType;\n"]}
@@ -1,6 +1,7 @@
1
1
  import type { PivotHeaderLayoutMap } from '../pivot-header-layout';
2
2
  import type { SimpleHeaderLayoutMap } from '../simple-header-layout';
3
3
  export declare function getRawChartSpec(col: number, row: number, layout: PivotHeaderLayoutMap): any;
4
+ export declare function isShareChartSpec(col: number, row: number, layout: PivotHeaderLayoutMap): any;
4
5
  export declare function checkHasCartesianChart(layout: PivotHeaderLayoutMap): boolean;
5
6
  export declare function isCartesianChart(col: number, row: number, layout: PivotHeaderLayoutMap): boolean;
6
7
  export declare function isHasCartesianChartInline(col: number, row: number, checkDirection: 'col' | 'row', layout: PivotHeaderLayoutMap): boolean;
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.checkHasChart = exports.getChartDataId = exports.getChartAxes = exports.getChartSpec = exports.isHasCartesianChartInline = exports.isCartesianChart = exports.checkHasCartesianChart = exports.getRawChartSpec = void 0;
5
+ }), exports.checkHasChart = exports.getChartDataId = exports.getChartAxes = exports.getChartSpec = exports.isHasCartesianChartInline = exports.isCartesianChart = exports.checkHasCartesianChart = exports.isShareChartSpec = exports.getRawChartSpec = void 0;
6
6
 
7
7
  const vutils_1 = require("@visactor/vutils"), get_axis_config_1 = require("./get-axis-config"), get_axis_domain_1 = require("./get-axis-domain"), zero_align_1 = require("./zero-align"), NO_AXISID_FRO_VTABLE = "NO_AXISID_FRO_VTABLE";
8
8
 
@@ -17,7 +17,32 @@ function getRawChartSpec(col, row, layout) {
17
17
  const indicatorKey = null === (_b = paths.rowHeaderPaths.find((rowPath => rowPath.indicatorKey))) || void 0 === _b ? void 0 : _b.indicatorKey;
18
18
  indicatorObj = layout.columnObjects.find((indicator => indicator.indicatorKey === indicatorKey));
19
19
  }
20
- return null == indicatorObj ? void 0 : indicatorObj.chartSpec;
20
+ const chartSpec = null == indicatorObj ? void 0 : indicatorObj.chartSpec;
21
+ if ("function" == typeof chartSpec) {
22
+ return chartSpec({
23
+ col: col,
24
+ row: row,
25
+ dataValue: layout._table.getCellOriginValue(col, row) || "",
26
+ value: layout._table.getCellValue(col, row) || "",
27
+ rect: layout._table.getCellRangeRelativeRect(layout._table.getCellRange(col, row)),
28
+ table: layout._table
29
+ });
30
+ }
31
+ return chartSpec;
32
+ }
33
+
34
+ function isShareChartSpec(col, row, layout) {
35
+ var _a, _b;
36
+ const paths = layout.getCellHeaderPaths(col, row);
37
+ let indicatorObj;
38
+ if (layout.indicatorsAsCol) {
39
+ const indicatorKey = null === (_a = paths.colHeaderPaths.find((colPath => colPath.indicatorKey))) || void 0 === _a ? void 0 : _a.indicatorKey;
40
+ indicatorObj = layout.columnObjects.find((indicator => indicator.indicatorKey === indicatorKey));
41
+ } else {
42
+ const indicatorKey = null === (_b = paths.rowHeaderPaths.find((rowPath => rowPath.indicatorKey))) || void 0 === _b ? void 0 : _b.indicatorKey;
43
+ indicatorObj = layout.columnObjects.find((indicator => indicator.indicatorKey === indicatorKey));
44
+ }
45
+ return "function" != typeof (null == indicatorObj ? void 0 : indicatorObj.chartSpec);
21
46
  }
22
47
 
23
48
  function checkHasCartesianChart(layout) {
@@ -56,11 +81,11 @@ function isHasCartesianChartInline(col, row, checkDirection, layout) {
56
81
 
57
82
  function getChartSpec(col, row, layout) {
58
83
  let chartSpec = layout.getRawChartSpec(col, row);
59
- return chartSpec ? (chartSpec = (0, vutils_1.cloneDeep)(chartSpec), chartSpec.sortDataByAxis = !0,
60
- (0, vutils_1.isArray)(chartSpec.series) && chartSpec.series.forEach((serie => {
84
+ return chartSpec ? layout._table.isPivotChart() ? (chartSpec = (0, vutils_1.cloneDeep)(chartSpec),
85
+ chartSpec.sortDataByAxis = !0, (0, vutils_1.isArray)(chartSpec.series) && chartSpec.series.forEach((serie => {
61
86
  serie.sortDataByAxis = !0;
62
87
  })), chartSpec.axes = layout.getChartAxes(col, row), chartSpec.padding = 0, chartSpec.dataZoom = [],
63
- chartSpec) : null;
88
+ chartSpec) : chartSpec : null;
64
89
  }
65
90
 
66
91
  function getChartAxes(col, row, layout) {
@@ -233,8 +258,8 @@ function checkHasChart(layout) {
233
258
  return isHasChart;
234
259
  }
235
260
 
236
- exports.getRawChartSpec = getRawChartSpec, exports.checkHasCartesianChart = checkHasCartesianChart,
237
- exports.isCartesianChart = isCartesianChart, exports.isHasCartesianChartInline = isHasCartesianChartInline,
238
- exports.getChartSpec = getChartSpec, exports.getChartAxes = getChartAxes, exports.getChartDataId = getChartDataId,
239
- exports.checkHasChart = checkHasChart;
261
+ exports.getRawChartSpec = getRawChartSpec, exports.isShareChartSpec = isShareChartSpec,
262
+ exports.checkHasCartesianChart = checkHasCartesianChart, exports.isCartesianChart = isCartesianChart,
263
+ exports.isHasCartesianChartInline = isHasCartesianChartInline, exports.getChartSpec = getChartSpec,
264
+ exports.getChartAxes = getChartAxes, exports.getChartDataId = getChartDataId, exports.checkHasChart = checkHasChart;
240
265
  //# sourceMappingURL=get-chart-spec.js.map