@nokecy/qc-ui 1.0.69 → 1.0.71

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 (191) hide show
  1. package/dist/cjs/ag-grid-plus/ag-gridPlus.js +394 -206
  2. package/dist/cjs/ag-grid-plus/context/gridContext.d.ts +30 -5
  3. package/dist/cjs/ag-grid-plus/context/gridContext.js +6 -1
  4. package/dist/cjs/ag-grid-plus/errors/ErrorBoundary.d.ts +36 -0
  5. package/dist/cjs/ag-grid-plus/errors/ErrorBoundary.js +143 -0
  6. package/dist/cjs/ag-grid-plus/errors/index.d.ts +3 -0
  7. package/dist/cjs/ag-grid-plus/errors/index.js +31 -0
  8. package/dist/cjs/ag-grid-plus/errors/types.d.ts +71 -0
  9. package/dist/cjs/ag-grid-plus/errors/types.js +137 -0
  10. package/dist/cjs/ag-grid-plus/hooks/index.d.ts +7 -0
  11. package/dist/cjs/ag-grid-plus/hooks/index.js +51 -0
  12. package/dist/cjs/ag-grid-plus/hooks/useAgGridCalculation.d.ts +88 -0
  13. package/dist/cjs/ag-grid-plus/hooks/useAgGridCalculation.js +224 -0
  14. package/dist/cjs/ag-grid-plus/hooks/useAgGridData.d.ts +91 -0
  15. package/dist/cjs/ag-grid-plus/hooks/useAgGridData.js +230 -0
  16. package/dist/cjs/ag-grid-plus/hooks/useGridPlusColumnState.d.ts +1 -8
  17. package/dist/cjs/ag-grid-plus/hooks/useGridState.d.ts +153 -0
  18. package/dist/cjs/ag-grid-plus/hooks/useGridState.js +258 -0
  19. package/dist/cjs/ag-grid-plus/index.d.ts +3 -0
  20. package/dist/cjs/ag-grid-plus/index.js +85 -0
  21. package/dist/cjs/ag-grid-plus/interface.d.ts +27 -0
  22. package/dist/cjs/ag-grid-plus/queryForm/index.js +18 -7
  23. package/dist/cjs/ag-grid-plus/queryForm/index.less +24 -0
  24. package/dist/cjs/ag-grid-plus/querySchemes/components/QuerySchemesManager.d.ts +21 -0
  25. package/dist/cjs/ag-grid-plus/querySchemes/components/QuerySchemesManager.js +580 -0
  26. package/dist/cjs/ag-grid-plus/querySchemes/components/QuerySchemesManager.less +86 -0
  27. package/dist/cjs/ag-grid-plus/querySchemes/components/index.d.ts +5 -0
  28. package/dist/cjs/ag-grid-plus/querySchemes/components/index.js +12 -0
  29. package/dist/cjs/ag-grid-plus/querySchemes/constants.d.ts +17 -0
  30. package/dist/cjs/ag-grid-plus/querySchemes/constants.js +30 -0
  31. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQueryOrderManager.d.ts +10 -0
  32. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQueryOrderManager.js +65 -0
  33. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.d.ts +6 -0
  34. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.js +542 -0
  35. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.d.ts +7 -0
  36. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.js +32 -0
  37. package/dist/cjs/ag-grid-plus/querySchemes/index.d.ts +11 -0
  38. package/dist/cjs/ag-grid-plus/querySchemes/index.js +113 -0
  39. package/dist/cjs/ag-grid-plus/querySchemes/storage/localStorageAdapter.d.ts +44 -0
  40. package/dist/cjs/ag-grid-plus/querySchemes/storage/localStorageAdapter.js +261 -0
  41. package/dist/cjs/ag-grid-plus/querySchemes/types.d.ts +143 -0
  42. package/dist/cjs/ag-grid-plus/querySchemes/types.js +5 -0
  43. package/dist/cjs/ag-grid-plus/querySchemes/utils/validator.d.ts +36 -0
  44. package/dist/cjs/ag-grid-plus/querySchemes/utils/validator.js +155 -0
  45. package/dist/cjs/ag-grid-plus/schemes/components/SchemeManager.d.ts +16 -0
  46. package/dist/cjs/ag-grid-plus/schemes/components/SchemeManager.js +342 -0
  47. package/dist/cjs/ag-grid-plus/schemes/components/SchemeManager.less +35 -0
  48. package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.d.ts +20 -0
  49. package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.js +289 -0
  50. package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.less +39 -0
  51. package/dist/cjs/ag-grid-plus/schemes/components/index.d.ts +4 -0
  52. package/dist/cjs/ag-grid-plus/schemes/components/index.js +19 -0
  53. package/dist/cjs/ag-grid-plus/schemes/constants.d.ts +23 -0
  54. package/dist/cjs/ag-grid-plus/schemes/constants.js +39 -0
  55. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.d.ts +6 -0
  56. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.js +542 -0
  57. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.d.ts +7 -0
  58. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.js +32 -0
  59. package/dist/cjs/ag-grid-plus/schemes/index.d.ts +16 -0
  60. package/dist/cjs/ag-grid-plus/schemes/index.js +124 -0
  61. package/dist/cjs/ag-grid-plus/schemes/storage/localStorageAdapter.d.ts +64 -0
  62. package/dist/cjs/ag-grid-plus/schemes/storage/localStorageAdapter.js +368 -0
  63. package/dist/cjs/ag-grid-plus/schemes/types.d.ts +126 -0
  64. package/dist/cjs/ag-grid-plus/schemes/types.js +5 -0
  65. package/dist/cjs/ag-grid-plus/schemes/utils/validator.d.ts +27 -0
  66. package/dist/cjs/ag-grid-plus/schemes/utils/validator.js +113 -0
  67. package/dist/cjs/ag-grid-plus/setting/ColumnSetting.d.ts +17 -0
  68. package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +955 -0
  69. package/dist/cjs/ag-grid-plus/setting/index.d.ts +1 -1
  70. package/dist/cjs/ag-grid-plus/setting/index.js +74 -111
  71. package/dist/cjs/ag-grid-plus/shared/hooks/useSchemeManager.d.ts +66 -0
  72. package/dist/cjs/ag-grid-plus/shared/hooks/useSchemeManager.js +648 -0
  73. package/dist/cjs/ag-grid-plus/storage/MemoryStorageAdapter.d.ts +76 -0
  74. package/dist/cjs/ag-grid-plus/storage/MemoryStorageAdapter.js +276 -0
  75. package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.d.ts +104 -0
  76. package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.js +593 -0
  77. package/dist/cjs/ag-grid-plus/storage/globalSyncManager.d.ts +74 -0
  78. package/dist/cjs/ag-grid-plus/storage/globalSyncManager.js +287 -0
  79. package/dist/cjs/ag-grid-plus/storage/index.d.ts +8 -0
  80. package/dist/cjs/ag-grid-plus/storage/index.js +49 -0
  81. package/dist/cjs/ag-grid-plus/storage/types.d.ts +113 -0
  82. package/dist/cjs/ag-grid-plus/storage/types.js +5 -0
  83. package/dist/cjs/ag-grid-plus/types.d.ts +310 -0
  84. package/dist/cjs/ag-grid-plus/types.js +5 -0
  85. package/dist/cjs/ag-grid-plus/utils/columnProcessors.d.ts +95 -0
  86. package/dist/cjs/ag-grid-plus/utils/columnProcessors.js +265 -0
  87. package/dist/cjs/ag-grid-plus/utils/constants.d.ts +41 -0
  88. package/dist/cjs/ag-grid-plus/utils/constants.js +56 -0
  89. package/dist/cjs/ag-grid-plus/utils/logger.d.ts +34 -0
  90. package/dist/cjs/ag-grid-plus/utils/logger.js +119 -0
  91. package/dist/cjs/ag-grid-plus/utils/sanitize.d.ts +15 -0
  92. package/dist/cjs/ag-grid-plus/utils/sanitize.js +39 -0
  93. package/dist/cjs/index.d.ts +3 -2
  94. package/dist/cjs/index.js +84 -0
  95. package/dist/esm/ag-grid-plus/ag-gridPlus.js +395 -206
  96. package/dist/esm/ag-grid-plus/context/gridContext.d.ts +30 -5
  97. package/dist/esm/ag-grid-plus/context/gridContext.js +6 -1
  98. package/dist/esm/ag-grid-plus/errors/ErrorBoundary.d.ts +36 -0
  99. package/dist/esm/ag-grid-plus/errors/ErrorBoundary.js +137 -0
  100. package/dist/esm/ag-grid-plus/errors/index.d.ts +3 -0
  101. package/dist/esm/ag-grid-plus/errors/index.js +2 -0
  102. package/dist/esm/ag-grid-plus/errors/types.d.ts +71 -0
  103. package/dist/esm/ag-grid-plus/errors/types.js +135 -0
  104. package/dist/esm/ag-grid-plus/hooks/index.d.ts +7 -0
  105. package/dist/esm/ag-grid-plus/hooks/index.js +10 -0
  106. package/dist/esm/ag-grid-plus/hooks/useAgGridCalculation.d.ts +88 -0
  107. package/dist/esm/ag-grid-plus/hooks/useAgGridCalculation.js +217 -0
  108. package/dist/esm/ag-grid-plus/hooks/useAgGridData.d.ts +91 -0
  109. package/dist/esm/ag-grid-plus/hooks/useAgGridData.js +225 -0
  110. package/dist/esm/ag-grid-plus/hooks/useGridPlusColumnState.d.ts +1 -8
  111. package/dist/esm/ag-grid-plus/hooks/useGridState.d.ts +153 -0
  112. package/dist/esm/ag-grid-plus/hooks/useGridState.js +258 -0
  113. package/dist/esm/ag-grid-plus/index.d.ts +3 -0
  114. package/dist/esm/ag-grid-plus/index.js +4 -1
  115. package/dist/esm/ag-grid-plus/interface.d.ts +27 -0
  116. package/dist/esm/ag-grid-plus/queryForm/index.less +7 -2
  117. package/dist/esm/ag-grid-plus/querySchemes/components/QuerySchemesManager.d.ts +21 -0
  118. package/dist/esm/ag-grid-plus/querySchemes/components/QuerySchemesManager.js +572 -0
  119. package/dist/esm/ag-grid-plus/querySchemes/components/QuerySchemesManager.less +86 -0
  120. package/dist/esm/ag-grid-plus/querySchemes/components/index.d.ts +5 -0
  121. package/dist/esm/ag-grid-plus/querySchemes/components/index.js +5 -0
  122. package/dist/esm/ag-grid-plus/querySchemes/constants.d.ts +17 -0
  123. package/dist/esm/ag-grid-plus/querySchemes/constants.js +24 -0
  124. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQueryOrderManager.d.ts +10 -0
  125. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQueryOrderManager.js +60 -0
  126. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.d.ts +6 -0
  127. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.js +537 -0
  128. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.d.ts +7 -0
  129. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.js +27 -0
  130. package/dist/esm/ag-grid-plus/querySchemes/index.d.ts +11 -0
  131. package/dist/esm/ag-grid-plus/querySchemes/index.js +20 -0
  132. package/dist/esm/ag-grid-plus/querySchemes/storage/localStorageAdapter.d.ts +44 -0
  133. package/dist/esm/ag-grid-plus/querySchemes/storage/localStorageAdapter.js +256 -0
  134. package/dist/esm/ag-grid-plus/querySchemes/types.d.ts +143 -0
  135. package/dist/esm/ag-grid-plus/querySchemes/types.js +1 -0
  136. package/dist/esm/ag-grid-plus/querySchemes/utils/validator.d.ts +36 -0
  137. package/dist/esm/ag-grid-plus/querySchemes/utils/validator.js +144 -0
  138. package/dist/esm/ag-grid-plus/schemes/components/SchemeManager.d.ts +16 -0
  139. package/dist/esm/ag-grid-plus/schemes/components/SchemeManager.js +334 -0
  140. package/dist/esm/ag-grid-plus/schemes/components/SchemeManager.less +35 -0
  141. package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.d.ts +20 -0
  142. package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.js +281 -0
  143. package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.less +39 -0
  144. package/dist/esm/ag-grid-plus/schemes/components/index.d.ts +4 -0
  145. package/dist/esm/ag-grid-plus/schemes/components/index.js +2 -0
  146. package/dist/esm/ag-grid-plus/schemes/constants.d.ts +23 -0
  147. package/dist/esm/ag-grid-plus/schemes/constants.js +33 -0
  148. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.d.ts +6 -0
  149. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.js +537 -0
  150. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.d.ts +7 -0
  151. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.js +27 -0
  152. package/dist/esm/ag-grid-plus/schemes/index.d.ts +16 -0
  153. package/dist/esm/ag-grid-plus/schemes/index.js +25 -0
  154. package/dist/esm/ag-grid-plus/schemes/storage/localStorageAdapter.d.ts +64 -0
  155. package/dist/esm/ag-grid-plus/schemes/storage/localStorageAdapter.js +363 -0
  156. package/dist/esm/ag-grid-plus/schemes/types.d.ts +126 -0
  157. package/dist/esm/ag-grid-plus/schemes/types.js +1 -0
  158. package/dist/esm/ag-grid-plus/schemes/utils/validator.d.ts +27 -0
  159. package/dist/esm/ag-grid-plus/schemes/utils/validator.js +104 -0
  160. package/dist/esm/ag-grid-plus/setting/ColumnSetting.d.ts +17 -0
  161. package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +946 -0
  162. package/dist/esm/ag-grid-plus/setting/index.d.ts +1 -1
  163. package/dist/esm/ag-grid-plus/setting/index.js +69 -107
  164. package/dist/esm/ag-grid-plus/shared/hooks/useSchemeManager.d.ts +66 -0
  165. package/dist/esm/ag-grid-plus/shared/hooks/useSchemeManager.js +643 -0
  166. package/dist/esm/ag-grid-plus/storage/MemoryStorageAdapter.d.ts +76 -0
  167. package/dist/esm/ag-grid-plus/storage/MemoryStorageAdapter.js +273 -0
  168. package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.d.ts +104 -0
  169. package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.js +587 -0
  170. package/dist/esm/ag-grid-plus/storage/globalSyncManager.d.ts +74 -0
  171. package/dist/esm/ag-grid-plus/storage/globalSyncManager.js +275 -0
  172. package/dist/esm/ag-grid-plus/storage/index.d.ts +8 -0
  173. package/dist/esm/ag-grid-plus/storage/index.js +9 -0
  174. package/dist/esm/ag-grid-plus/storage/types.d.ts +113 -0
  175. package/dist/esm/ag-grid-plus/storage/types.js +1 -0
  176. package/dist/esm/ag-grid-plus/types.d.ts +310 -0
  177. package/dist/esm/ag-grid-plus/types.js +1 -0
  178. package/dist/esm/ag-grid-plus/utils/columnProcessors.d.ts +95 -0
  179. package/dist/esm/ag-grid-plus/utils/columnProcessors.js +251 -0
  180. package/dist/esm/ag-grid-plus/utils/constants.d.ts +41 -0
  181. package/dist/esm/ag-grid-plus/utils/constants.js +50 -0
  182. package/dist/esm/ag-grid-plus/utils/logger.d.ts +34 -0
  183. package/dist/esm/ag-grid-plus/utils/logger.js +114 -0
  184. package/dist/esm/ag-grid-plus/utils/sanitize.d.ts +15 -0
  185. package/dist/esm/ag-grid-plus/utils/sanitize.js +32 -0
  186. package/dist/esm/index.d.ts +3 -2
  187. package/dist/esm/index.js +8 -2
  188. package/dist/esm/standardFormDialog/withStandardForm.d.ts +2 -2
  189. package/dist/umd/qc-ui.min.css +1 -1
  190. package/dist/umd/qc-ui.min.js +1 -1
  191. package/package.json +3 -2
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.calculationUtils = void 0;
7
+ exports.useAgGridCalculation = useAgGridCalculation;
8
+ var _uniqueId2 = _interopRequireDefault(require("lodash/uniqueId"));
9
+ var _sumBy2 = _interopRequireDefault(require("lodash/sumBy"));
10
+ var _react = require("react");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ /**
13
+ * 计算类型
14
+ */
15
+
16
+ /**
17
+ * 计算列配置
18
+ */
19
+
20
+ /**
21
+ * Hook 配置接口
22
+ */
23
+
24
+ /**
25
+ * Hook 返回值接口
26
+ */
27
+
28
+ /**
29
+ * 验证数值有效性
30
+ */
31
+ function isValidNumber(value) {
32
+ return typeof value === 'number' && !isNaN(value);
33
+ }
34
+
35
+ /**
36
+ * 格式化数字(添加千分位)
37
+ */
38
+ function formatNumber(value) {
39
+ var decimalPlaces = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
40
+ return value.toLocaleString(undefined, {
41
+ minimumFractionDigits: decimalPlaces,
42
+ maximumFractionDigits: decimalPlaces
43
+ });
44
+ }
45
+
46
+ /**
47
+ * 求和函数
48
+ */
49
+ function sumFn(field, displayedData) {
50
+ return (0, _sumBy2.default)(displayedData, function (cur) {
51
+ if (cur && isValidNumber(cur[field])) {
52
+ return cur[field];
53
+ }
54
+ return 0;
55
+ });
56
+ }
57
+
58
+ /**
59
+ * 平均值函数
60
+ */
61
+ function avgFn(field, displayedData) {
62
+ var validItems = displayedData.filter(function (cur) {
63
+ return cur && cur[field] !== undefined && cur[field] !== null;
64
+ });
65
+ if (validItems.length === 0) return 0;
66
+ var sum = sumFn(field, displayedData);
67
+ return sum / validItems.length;
68
+ }
69
+
70
+ /**
71
+ * 标准差函数
72
+ */
73
+ function standardDeviationFn(field, displayedData) {
74
+ var validValues = displayedData.filter(function (cur) {
75
+ return isValidNumber(cur[field]);
76
+ });
77
+ var count = validValues.length;
78
+ if (count === 0) return 0;
79
+ var mean = sumFn(field, displayedData) / count;
80
+ var variance = (0, _sumBy2.default)(displayedData, function (cur) {
81
+ if (cur && cur[field] !== undefined && cur[field] !== null) {
82
+ var diff = cur[field] - mean;
83
+ return diff * diff;
84
+ }
85
+ return 0;
86
+ }) / count;
87
+ return Math.sqrt(variance);
88
+ }
89
+
90
+ /**
91
+ * 执行计算
92
+ */
93
+ function calculate(column, displayedData) {
94
+ var field = column.field,
95
+ calculateType = column.calculateType,
96
+ _column$transactionAm = column.transactionAmount,
97
+ transactionAmount = _column$transactionAm === void 0 ? 2 : _column$transactionAm,
98
+ formatWithCommas = column.formatWithCommas;
99
+ var result;
100
+ switch (calculateType) {
101
+ case 'sum':
102
+ result = sumFn(field, displayedData);
103
+ break;
104
+ case 'avg':
105
+ result = avgFn(field, displayedData);
106
+ break;
107
+ case 'standardDeviation':
108
+ result = standardDeviationFn(field, displayedData);
109
+ break;
110
+ default:
111
+ return 0;
112
+ }
113
+
114
+ // 格式化结果
115
+ var fixedResult = Number(result.toFixed(transactionAmount));
116
+ return formatWithCommas ? formatNumber(fixedResult, transactionAmount) : fixedResult;
117
+ }
118
+
119
+ /**
120
+ * AG-Grid 计算列管理 Hook
121
+ *
122
+ * @description
123
+ * 处理 AG-Grid 底部固定行的聚合计算(求和、平均值、标准差)
124
+ *
125
+ * @example
126
+ * ```tsx
127
+ * const { calculateSum, onFilterChanged } = useAgGridCalculation({
128
+ * gridApi,
129
+ * allColDefs,
130
+ * rowData
131
+ * });
132
+ *
133
+ * // 在筛选变化时调用
134
+ * <AgGridReact onFilterChanged={onFilterChanged} />
135
+ * ```
136
+ */
137
+ function useAgGridCalculation(config) {
138
+ var gridApi = config.gridApi,
139
+ allColDefs = config.allColDefs,
140
+ rowData = config.rowData;
141
+
142
+ /**
143
+ * 计算并更新底部固定行
144
+ */
145
+ var calculateSum = (0, _react.useCallback)(function () {
146
+ if (!gridApi || !allColDefs) {
147
+ gridApi === null || gridApi === void 0 || gridApi.setGridOption('pinnedBottomRowData', undefined);
148
+ return;
149
+ }
150
+
151
+ // 获取筛选后的数据
152
+ var displayedData = [];
153
+ gridApi.forEachNodeAfterFilter(function (node) {
154
+ displayedData.push(node.data);
155
+ });
156
+ if (displayedData.length === 0) {
157
+ gridApi.setGridOption('pinnedBottomRowData', undefined);
158
+ return;
159
+ }
160
+
161
+ // 提取需要计算的列
162
+ var calcColumns = allColDefs.filter(function (col) {
163
+ return col.calculateType && col.calculateType !== false;
164
+ }).map(function (col) {
165
+ return {
166
+ field: col.field,
167
+ calculateType: col.calculateType,
168
+ transactionAmount: col.transactionAmount || 2,
169
+ formatWithCommas: col.formatWithCommas,
170
+ cellRenderer: col.cellRenderer
171
+ };
172
+ });
173
+ if (calcColumns.length === 0) {
174
+ gridApi.setGridOption('pinnedBottomRowData', undefined);
175
+ return;
176
+ }
177
+
178
+ // 执行计算
179
+ var calculatedData = {
180
+ id: (0, _uniqueId2.default)('calc_')
181
+ };
182
+ calcColumns.forEach(function (column) {
183
+ // 如果有自定义渲染器,跳过计算
184
+ if (!column.cellRenderer) {
185
+ calculatedData[column.field] = calculate(column, displayedData);
186
+ }
187
+ });
188
+
189
+ // 更新底部固定行
190
+ if (Object.keys(calculatedData).length > 1) {
191
+ // 除了 id 之外还有其他字段
192
+ gridApi.setGridOption('pinnedBottomRowData', [calculatedData]);
193
+ }
194
+ }, [gridApi, allColDefs]);
195
+
196
+ /**
197
+ * 处理筛选变化
198
+ */
199
+ var onFilterChanged = (0, _react.useCallback)(function () {
200
+ calculateSum();
201
+ }, [calculateSum]);
202
+
203
+ /**
204
+ * 监听列定义和行数据变化,自动计算
205
+ */
206
+ (0, _react.useEffect)(function () {
207
+ calculateSum();
208
+ }, [allColDefs, rowData, calculateSum]);
209
+ return {
210
+ calculateSum: calculateSum,
211
+ onFilterChanged: onFilterChanged
212
+ };
213
+ }
214
+
215
+ /**
216
+ * 导出工具函数供外部使用
217
+ */
218
+ var calculationUtils = exports.calculationUtils = {
219
+ isValidNumber: isValidNumber,
220
+ formatNumber: formatNumber,
221
+ sumFn: sumFn,
222
+ avgFn: avgFn,
223
+ standardDeviationFn: standardDeviationFn
224
+ };
@@ -0,0 +1,91 @@
1
+ /// <reference types="react" />
2
+ import { GridApi, ColumnState } from 'ag-grid-community';
3
+ /**
4
+ * 分页状态接口
5
+ */
6
+ export interface PaginationState {
7
+ pageSize: number;
8
+ current: number;
9
+ total: number;
10
+ }
11
+ /**
12
+ * 请求参数接口
13
+ */
14
+ export interface RequestParams {
15
+ filter: any;
16
+ current: number;
17
+ skipCount: number;
18
+ maxResultCount: number;
19
+ sorter: string;
20
+ [key: string]: any;
21
+ }
22
+ /**
23
+ * 请求响应接口
24
+ */
25
+ export interface RequestResponse {
26
+ data: any[];
27
+ total: number;
28
+ }
29
+ /**
30
+ * Hook 配置接口
31
+ */
32
+ export interface UseAgGridDataConfig {
33
+ /** 请求函数 */
34
+ request?: (params: RequestParams, sort: any, filter: any) => Promise<RequestResponse>;
35
+ /** 静态数据源 */
36
+ dataSource?: any[];
37
+ /** 初始分页大小 */
38
+ pageSize?: number;
39
+ /** 是否隐藏分页 */
40
+ hidePagination?: boolean;
41
+ /** 外部 loading 状态 */
42
+ loading?: boolean;
43
+ /** 额外的请求参数 */
44
+ gridParams?: any;
45
+ /** 列过滤模型转换函数 */
46
+ convertFilterModel?: (queryFilter: any, colDefs: any[]) => any;
47
+ /** 所有列定义 */
48
+ allColDefs?: any[];
49
+ }
50
+ /**
51
+ * Hook 返回值接口
52
+ */
53
+ export interface UseAgGridDataReturn {
54
+ rowData: any[];
55
+ loading: boolean;
56
+ pagination: PaginationState;
57
+ queryFilter: any;
58
+ sortColumn?: ColumnState;
59
+ ready: boolean;
60
+ setRowData: React.Dispatch<React.SetStateAction<any[]>>;
61
+ setLoading: React.Dispatch<React.SetStateAction<boolean>>;
62
+ setPagination: React.Dispatch<React.SetStateAction<PaginationState>>;
63
+ setQueryFilter: React.Dispatch<React.SetStateAction<any>>;
64
+ setSortColumn: React.Dispatch<React.SetStateAction<ColumnState | undefined>>;
65
+ setReady: React.Dispatch<React.SetStateAction<boolean>>;
66
+ onRequest: (filter: any) => void;
67
+ onRefresh: () => void;
68
+ handleSortChanged: (columnApi: GridApi) => void;
69
+ }
70
+ /**
71
+ * AG-Grid 数据获取和分页管理 Hook
72
+ *
73
+ * @description
74
+ * 处理 AG-Grid 的数据请求、分页、排序、筛选等逻辑
75
+ *
76
+ * @example
77
+ * ```tsx
78
+ * const {
79
+ * rowData,
80
+ * loading,
81
+ * pagination,
82
+ * onRequest,
83
+ * onRefresh
84
+ * } = useAgGridData({
85
+ * request: fetchData,
86
+ * pageSize: 50,
87
+ * gridParams: { status: 'active' }
88
+ * });
89
+ * ```
90
+ */
91
+ export declare function useAgGridData(config: UseAgGridDataConfig): UseAgGridDataReturn;
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useAgGridData = useAgGridData;
8
+ var _react = require("react");
9
+ var _antd = require("antd");
10
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
14
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
15
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
16
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
17
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
18
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
19
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
20
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
21
+ /**
22
+ * 分页状态接口
23
+ */
24
+
25
+ /**
26
+ * 请求参数接口
27
+ */
28
+
29
+ /**
30
+ * 请求响应接口
31
+ */
32
+
33
+ /**
34
+ * Hook 配置接口
35
+ */
36
+
37
+ /**
38
+ * Hook 返回值接口
39
+ */
40
+
41
+ /**
42
+ * 获取排序字符串
43
+ */
44
+ function getSort(columnState) {
45
+ return columnState ? "".concat(columnState.colId, " ").concat(columnState.sort) : '';
46
+ }
47
+
48
+ /**
49
+ * AG-Grid 数据获取和分页管理 Hook
50
+ *
51
+ * @description
52
+ * 处理 AG-Grid 的数据请求、分页、排序、筛选等逻辑
53
+ *
54
+ * @example
55
+ * ```tsx
56
+ * const {
57
+ * rowData,
58
+ * loading,
59
+ * pagination,
60
+ * onRequest,
61
+ * onRefresh
62
+ * } = useAgGridData({
63
+ * request: fetchData,
64
+ * pageSize: 50,
65
+ * gridParams: { status: 'active' }
66
+ * });
67
+ * ```
68
+ */
69
+ function useAgGridData(config) {
70
+ var request = config.request,
71
+ dataSource = config.dataSource,
72
+ initialPageSize = config.pageSize,
73
+ hidePagination = config.hidePagination,
74
+ loadingProps = config.loading,
75
+ gridParams = config.gridParams,
76
+ convertFilterModel = config.convertFilterModel,
77
+ allColDefs = config.allColDefs;
78
+
79
+ // 状态管理
80
+ var _useState = (0, _react.useState)(false),
81
+ _useState2 = _slicedToArray(_useState, 2),
82
+ ready = _useState2[0],
83
+ setReady = _useState2[1];
84
+ var _useState3 = (0, _react.useState)(loadingProps !== null && loadingProps !== void 0 ? loadingProps : false),
85
+ _useState4 = _slicedToArray(_useState3, 2),
86
+ loading = _useState4[0],
87
+ setLoading = _useState4[1];
88
+ var _useState5 = (0, _react.useState)([]),
89
+ _useState6 = _slicedToArray(_useState5, 2),
90
+ rowData = _useState6[0],
91
+ setRowData = _useState6[1];
92
+ var _useState7 = (0, _react.useState)({}),
93
+ _useState8 = _slicedToArray(_useState7, 2),
94
+ queryFilter = _useState8[0],
95
+ setQueryFilter = _useState8[1];
96
+ var _useState9 = (0, _react.useState)(),
97
+ _useState10 = _slicedToArray(_useState9, 2),
98
+ sortColumn = _useState10[0],
99
+ setSortColumn = _useState10[1];
100
+
101
+ // 初始化分页参数
102
+ var _useState11 = (0, _react.useState)({
103
+ pageSize: initialPageSize !== null && initialPageSize !== void 0 ? initialPageSize : hidePagination ? 10000 : 200,
104
+ current: 1,
105
+ total: dataSource ? dataSource.length : 0
106
+ }),
107
+ _useState12 = _slicedToArray(_useState11, 2),
108
+ pagination = _useState12[0],
109
+ setPagination = _useState12[1];
110
+
111
+ // 用于防止不必要的请求
112
+ var requestInProgressRef = (0, _react.useRef)(false);
113
+
114
+ /**
115
+ * 发起数据请求
116
+ */
117
+ var onRequest = (0, _react.useCallback)(function (filter) {
118
+ if (!request || requestInProgressRef.current) return;
119
+ requestInProgressRef.current = true;
120
+ setLoading(true);
121
+
122
+ // 转换筛选模型
123
+ var convertedFilter = convertFilterModel && allColDefs ? convertFilterModel(filter, allColDefs) : filter;
124
+ var params = _objectSpread(_objectSpread({
125
+ filter: convertedFilter
126
+ }, gridParams), {}, {
127
+ current: pagination.current,
128
+ skipCount: pagination.current === 1 ? 0 : (pagination.current - 1) * pagination.pageSize,
129
+ maxResultCount: pagination.pageSize,
130
+ sorter: getSort(sortColumn)
131
+ });
132
+ request(params, undefined, filter).then(function (response) {
133
+ var newRowData = response.data;
134
+ var rowCount = response.total;
135
+ setRowData(newRowData);
136
+ setPagination(function (prev) {
137
+ return _objectSpread(_objectSpread({}, prev), {}, {
138
+ total: rowCount
139
+ });
140
+ });
141
+ }).catch(function (error) {
142
+ console.error('[useAgGridData] 请求失败:', error);
143
+ _antd.message.error((error === null || error === void 0 ? void 0 : error.message) || '数据加载失败,请重试');
144
+ }).finally(function () {
145
+ setLoading(false);
146
+ requestInProgressRef.current = false;
147
+ });
148
+ }, [request, gridParams, pagination.current, pagination.pageSize, sortColumn, convertFilterModel, allColDefs]);
149
+
150
+ /**
151
+ * 刷新数据
152
+ */
153
+ var onRefresh = (0, _react.useCallback)(function () {
154
+ if (request) {
155
+ onRequest(queryFilter);
156
+ }
157
+ }, [request, queryFilter, onRequest]);
158
+
159
+ /**
160
+ * 处理排序变化
161
+ */
162
+ var handleSortChanged = (0, _react.useCallback)(function (columnApi) {
163
+ var sortedColumn = columnApi.getColumnState().find(function (col) {
164
+ return Boolean(col.sort);
165
+ });
166
+ setSortColumn(sortedColumn);
167
+ }, []);
168
+
169
+ /**
170
+ * 监听外部 loading 状态变化
171
+ */
172
+ (0, _react.useEffect)(function () {
173
+ if (loadingProps !== undefined) {
174
+ setLoading(loadingProps);
175
+ }
176
+ }, [loadingProps]);
177
+
178
+ /**
179
+ * 监听静态数据源变化
180
+ */
181
+ (0, _react.useEffect)(function () {
182
+ if (dataSource) {
183
+ setRowData(dataSource);
184
+ setPagination(function (prev) {
185
+ return _objectSpread(_objectSpread({}, prev), {}, {
186
+ total: dataSource.length
187
+ });
188
+ });
189
+ }
190
+ }, [dataSource]);
191
+
192
+ /**
193
+ * 自动请求数据(当相关参数变化时)
194
+ */
195
+ (0, _react.useEffect)(function () {
196
+ if (ready && request) {
197
+ onRequest(queryFilter);
198
+ }
199
+ }, [ready, pagination.pageSize, pagination.current]);
200
+
201
+ // 监听 gridParams 和 sortColumn 变化(使用 JSON 序列化进行比较)
202
+ var gridParamsRef = (0, _react.useRef)(gridParams);
203
+ var sortColumnRef = (0, _react.useRef)(sortColumn);
204
+ (0, _react.useEffect)(function () {
205
+ var gridParamsChanged = JSON.stringify(gridParams) !== JSON.stringify(gridParamsRef.current);
206
+ var sortColumnChanged = JSON.stringify(sortColumn) !== JSON.stringify(sortColumnRef.current);
207
+ if (ready && request && (gridParamsChanged || sortColumnChanged)) {
208
+ gridParamsRef.current = gridParams;
209
+ sortColumnRef.current = sortColumn;
210
+ onRequest(queryFilter);
211
+ }
212
+ }, [gridParams, sortColumn, ready, request, queryFilter, onRequest]);
213
+ return {
214
+ rowData: rowData,
215
+ loading: loading,
216
+ pagination: pagination,
217
+ queryFilter: queryFilter,
218
+ sortColumn: sortColumn,
219
+ ready: ready,
220
+ setRowData: setRowData,
221
+ setLoading: setLoading,
222
+ setPagination: setPagination,
223
+ setQueryFilter: setQueryFilter,
224
+ setSortColumn: setSortColumn,
225
+ setReady: setReady,
226
+ onRequest: onRequest,
227
+ onRefresh: onRefresh,
228
+ handleSortChanged: handleSortChanged
229
+ };
230
+ }
@@ -2,11 +2,4 @@
2
2
  * 使用 GridPlusContext 的 Hook
3
3
  * 用于访问列状态管理相关的方法和数据
4
4
  */
5
- export declare const useGridPlusColumnState: () => {
6
- extensibleColumns: any;
7
- columnState: any;
8
- onSaveColumnState: (gridKey: string, columnState: any[]) => void;
9
- applyToGlobal: (gridKey: string) => void;
10
- resetCurrent: (gridKey: string) => void;
11
- resetAll: (gridKey: string) => void;
12
- };
5
+ export declare const useGridPlusColumnState: () => import("../context/gridContext").GridPlusContextValue;