@nokecy/qc-ui 1.1.39 → 1.1.41

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 (121) hide show
  1. package/dist/cjs/adapters/abpPagedApiAdapter.d.ts +8 -0
  2. package/dist/cjs/adapters/abpPagedApiAdapter.js +35 -0
  3. package/dist/cjs/adapters/index.d.ts +6 -0
  4. package/dist/cjs/adapters/index.js +12 -0
  5. package/dist/cjs/adapters/pagedApiAdapter.d.ts +25 -0
  6. package/dist/cjs/adapters/pagedApiAdapter.js +5 -0
  7. package/dist/cjs/ag-grid-plus/ag-gridPlus.js +51 -205
  8. package/dist/cjs/ag-grid-plus/context/gridContext.d.ts +3 -0
  9. package/dist/cjs/ag-grid-plus/context/queryFormContext.d.ts +20 -0
  10. package/dist/cjs/ag-grid-plus/context/queryFormContext.js +25 -0
  11. package/dist/cjs/ag-grid-plus/errors/ErrorBoundary.d.ts +1 -1
  12. package/dist/cjs/ag-grid-plus/hooks/index.d.ts +1 -3
  13. package/dist/cjs/ag-grid-plus/hooks/index.js +7 -39
  14. package/dist/cjs/ag-grid-plus/hooks/useRowId.d.ts +13 -0
  15. package/dist/cjs/ag-grid-plus/hooks/useRowId.js +57 -0
  16. package/dist/cjs/ag-grid-plus/interface.d.ts +9 -0
  17. package/dist/cjs/ag-grid-plus/setting/QuerySchemeManager.js +6 -6
  18. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +2 -3
  19. package/dist/cjs/ag-grid-plus/types.d.ts +9 -0
  20. package/dist/cjs/ag-grid-plus/utils/aggregation.d.ts +17 -0
  21. package/dist/cjs/ag-grid-plus/utils/aggregation.js +101 -0
  22. package/dist/cjs/ag-grid-plus/utils/columnProcessors.js +2 -2
  23. package/dist/cjs/ag-grid-plus/utils/entityExtensionColumns.d.ts +12 -3
  24. package/dist/cjs/ag-grid-plus/utils/entityExtensionColumns.js +20 -5
  25. package/dist/cjs/ag-grid-plus/utils/queryFormDerivation.d.ts +19 -0
  26. package/dist/cjs/ag-grid-plus/utils/queryFormDerivation.js +49 -0
  27. package/dist/cjs/ag-grid-plus/utils/requestParams.d.ts +15 -0
  28. package/dist/cjs/ag-grid-plus/utils/requestParams.js +31 -0
  29. package/dist/cjs/ag-grid-plus/utils/rowSelection.d.ts +9 -0
  30. package/dist/cjs/ag-grid-plus/utils/rowSelection.js +24 -0
  31. package/dist/cjs/ag-grid-plus/utils.js +2 -2
  32. package/dist/cjs/array-table/arrayBase.js +2 -0
  33. package/dist/cjs/array-table/utils.d.ts +15 -1
  34. package/dist/cjs/array-table/utils.js +48 -20
  35. package/dist/cjs/components/RegexEditor/hooks/useRegexValidation.js +2 -3
  36. package/dist/cjs/components/RegexEditor/hooks/useTemplateManager.js +1 -0
  37. package/dist/cjs/components/RegexEditor/validation/types.d.ts +1 -3
  38. package/dist/cjs/components/RegexEditor/visualizer/astToRailroad.d.ts +0 -2
  39. package/dist/cjs/dashboard/dashboard/index.js +8 -11
  40. package/dist/cjs/dashboard/dashboard/utils.js +3 -6
  41. package/dist/cjs/dashboard/widget/index.js +3 -3
  42. package/dist/cjs/dashboard/widget/selector/index.js +5 -7
  43. package/dist/cjs/dashboard/widget/utils.js +3 -4
  44. package/dist/cjs/dialogSelect/index.d.ts +3 -0
  45. package/dist/cjs/dialogSelect/index.js +16 -13
  46. package/dist/cjs/generatedListPage/GeneratedListPage.js +20 -19
  47. package/dist/cjs/generatedListPage/_utils/toAbpPagedRequest.d.ts +15 -0
  48. package/dist/cjs/generatedListPage/_utils/toAbpPagedRequest.js +26 -0
  49. package/dist/cjs/generatedListPage/types.d.ts +3 -0
  50. package/dist/cjs/index.d.ts +1 -0
  51. package/dist/cjs/index.js +57 -0
  52. package/dist/cjs/standardFormDialog/types.d.ts +7 -0
  53. package/dist/cjs/standardFormDialog/useStandardFormSchema.d.ts +1 -1
  54. package/dist/cjs/standardFormDialog/withStandardForm.js +5 -4
  55. package/dist/esm/adapters/abpPagedApiAdapter.d.ts +8 -0
  56. package/dist/esm/adapters/abpPagedApiAdapter.js +29 -0
  57. package/dist/esm/adapters/index.d.ts +6 -0
  58. package/dist/esm/adapters/index.js +6 -0
  59. package/dist/esm/adapters/pagedApiAdapter.d.ts +25 -0
  60. package/dist/esm/adapters/pagedApiAdapter.js +1 -0
  61. package/dist/esm/ag-grid-plus/ag-gridPlus.js +49 -203
  62. package/dist/esm/ag-grid-plus/context/gridContext.d.ts +3 -0
  63. package/dist/esm/ag-grid-plus/context/queryFormContext.d.ts +20 -0
  64. package/dist/esm/ag-grid-plus/context/queryFormContext.js +19 -0
  65. package/dist/esm/ag-grid-plus/hooks/index.d.ts +1 -3
  66. package/dist/esm/ag-grid-plus/hooks/index.js +2 -6
  67. package/dist/esm/ag-grid-plus/hooks/useRowId.d.ts +13 -0
  68. package/dist/esm/ag-grid-plus/hooks/useRowId.js +52 -0
  69. package/dist/esm/ag-grid-plus/interface.d.ts +9 -0
  70. package/dist/esm/ag-grid-plus/setting/QuerySchemeManager.js +6 -6
  71. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +7 -6
  72. package/dist/esm/ag-grid-plus/types.d.ts +9 -0
  73. package/dist/esm/ag-grid-plus/utils/aggregation.d.ts +17 -0
  74. package/dist/esm/ag-grid-plus/utils/aggregation.js +93 -0
  75. package/dist/esm/ag-grid-plus/utils/columnProcessors.js +2 -2
  76. package/dist/esm/ag-grid-plus/utils/entityExtensionColumns.d.ts +12 -3
  77. package/dist/esm/ag-grid-plus/utils/entityExtensionColumns.js +20 -5
  78. package/dist/esm/ag-grid-plus/utils/queryFormDerivation.d.ts +19 -0
  79. package/dist/esm/ag-grid-plus/utils/queryFormDerivation.js +42 -0
  80. package/dist/esm/ag-grid-plus/utils/requestParams.d.ts +15 -0
  81. package/dist/esm/ag-grid-plus/utils/requestParams.js +24 -0
  82. package/dist/esm/ag-grid-plus/utils/rowSelection.d.ts +9 -0
  83. package/dist/esm/ag-grid-plus/utils/rowSelection.js +18 -0
  84. package/dist/esm/ag-grid-plus/utils.js +2 -2
  85. package/dist/esm/array-table/arrayBase.js +2 -0
  86. package/dist/esm/array-table/utils.d.ts +15 -1
  87. package/dist/esm/array-table/utils.js +48 -20
  88. package/dist/esm/components/RegexEditor/hooks/useRegexValidation.js +2 -2
  89. package/dist/esm/components/RegexEditor/hooks/useTemplateManager.js +1 -0
  90. package/dist/esm/components/RegexEditor/validation/types.d.ts +0 -1
  91. package/dist/esm/components/RegexEditor/visualizer/astToRailroad.d.ts +0 -1
  92. package/dist/esm/dashboard/dashboard/index.js +8 -11
  93. package/dist/esm/dashboard/dashboard/utils.js +3 -2
  94. package/dist/esm/dashboard/widget/index.js +3 -3
  95. package/dist/esm/dashboard/widget/selector/index.js +5 -7
  96. package/dist/esm/dashboard/widget/utils.js +3 -3
  97. package/dist/esm/dialogSelect/index.d.ts +3 -0
  98. package/dist/esm/dialogSelect/index.js +16 -13
  99. package/dist/esm/generatedListPage/GeneratedListPage.js +20 -19
  100. package/dist/esm/generatedListPage/_utils/toAbpPagedRequest.d.ts +15 -0
  101. package/dist/esm/generatedListPage/_utils/toAbpPagedRequest.js +20 -0
  102. package/dist/esm/generatedListPage/types.d.ts +3 -0
  103. package/dist/esm/index.d.ts +1 -0
  104. package/dist/esm/index.js +3 -0
  105. package/dist/esm/standardFormDialog/types.d.ts +7 -0
  106. package/dist/esm/standardFormDialog/withStandardForm.js +5 -4
  107. package/dist/umd/qc-ui.min.css +1 -1
  108. package/dist/umd/qc-ui.min.js +1 -1
  109. package/package.json +52 -13
  110. package/dist/cjs/ag-grid-plus/hooks/useAgGridCalculation.d.ts +0 -88
  111. package/dist/cjs/ag-grid-plus/hooks/useAgGridCalculation.js +0 -224
  112. package/dist/cjs/ag-grid-plus/hooks/useAgGridData.d.ts +0 -91
  113. package/dist/cjs/ag-grid-plus/hooks/useAgGridData.js +0 -230
  114. package/dist/cjs/ag-grid-plus/hooks/useGridState.d.ts +0 -153
  115. package/dist/cjs/ag-grid-plus/hooks/useGridState.js +0 -258
  116. package/dist/esm/ag-grid-plus/hooks/useAgGridCalculation.d.ts +0 -88
  117. package/dist/esm/ag-grid-plus/hooks/useAgGridCalculation.js +0 -217
  118. package/dist/esm/ag-grid-plus/hooks/useAgGridData.d.ts +0 -91
  119. package/dist/esm/ag-grid-plus/hooks/useAgGridData.js +0 -225
  120. package/dist/esm/ag-grid-plus/hooks/useGridState.d.ts +0 -153
  121. package/dist/esm/ag-grid-plus/hooks/useGridState.js +0 -258
package/package.json CHANGED
@@ -1,11 +1,25 @@
1
1
  {
2
2
  "name": "@nokecy/qc-ui",
3
- "version": "1.1.39",
3
+ "version": "1.1.41",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",
7
+ "main": "dist/cjs/index.js",
7
8
  "module": "dist/esm/index.js",
8
9
  "types": "dist/esm/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/esm/index.d.ts",
13
+ "import": "./dist/esm/index.js",
14
+ "require": "./dist/cjs/index.js"
15
+ },
16
+ "./dist/*": "./dist/*",
17
+ "./package.json": "./package.json"
18
+ },
19
+ "sideEffects": [
20
+ "**/*.less",
21
+ "**/*.css"
22
+ ],
9
23
  "files": [
10
24
  "dist",
11
25
  "compiled"
@@ -17,15 +31,18 @@
17
31
  "dev": "father dev",
18
32
  "prepare": "dumi setup",
19
33
  "release": "release-it",
20
- "start": "dumi dev"
34
+ "start": "dumi dev",
35
+ "test": "vitest",
36
+ "test:run": "vitest run",
37
+ "typecheck": "tsc --noEmit",
38
+ "lint": "eslint src",
39
+ "lint:fix": "eslint src --fix"
21
40
  },
22
41
  "dependencies": {
23
- "@ant-design/icons": "5.3.7",
24
42
  "@ant-design/pro-card": "^2.8.3",
25
43
  "@codemirror/lang-javascript": "^6.2.4",
26
44
  "@codemirror/state": "^6.5.2",
27
45
  "@codemirror/view": "^6.38.6",
28
- "@formily/antd-v5": "1.2.2",
29
46
  "@nokecy/designable-core": "^2.0.0-beta.6",
30
47
  "@nokecy/designable-formily-antd": "^2.0.0-beta.6",
31
48
  "@nokecy/designable-formily-setters": "^2.0.0-beta.6",
@@ -34,20 +51,13 @@
34
51
  "@react-querybuilder/antd": "6.5.1",
35
52
  "@react-querybuilder/dnd": "^6.5.1",
36
53
  "@uiw/react-codemirror": "^4.25.2",
37
- "ag-grid-community": "33.3.2",
38
- "ag-grid-enterprise": "33.3.2",
39
- "ag-grid-react": "33.3.2",
40
54
  "ahooks": "3.7.2",
41
- "antd": "5.19.0",
42
55
  "classnames": "2.3.2",
43
56
  "gridify-client": "^2.1.0",
44
- "lodash": "4.17.21",
45
57
  "lodash-es": "^4.17.21",
46
58
  "railroad-diagrams": "^1.0.0",
47
- "react": "18.2.0",
48
59
  "react-dnd": "16.0.1",
49
60
  "react-dnd-html5-backend": "16.0.1",
50
- "react-dom": "18.2.0",
51
61
  "react-draggable": "4.4.6",
52
62
  "react-grid-layout": "1.3.4",
53
63
  "react-keyevent": "1.1.0",
@@ -55,25 +65,54 @@
55
65
  "regexp-tree": "^0.1.27",
56
66
  "uuid": "^13.0.0"
57
67
  },
68
+ "peerDependencies": {
69
+ "@ant-design/icons": ">=5.0.0",
70
+ "@formily/antd-v5": ">=1.0.0",
71
+ "@formily/core": "^2.0.0",
72
+ "@formily/json-schema": "^2.0.0",
73
+ "@formily/react": "^2.0.0",
74
+ "@formily/shared": "^2.0.0",
75
+ "ag-grid-community": "^33.0.0",
76
+ "ag-grid-enterprise": "^33.0.0",
77
+ "ag-grid-react": "^33.0.0",
78
+ "antd": ">=5.0.0",
79
+ "react": ">=18.0.0",
80
+ "react-dom": ">=18.0.0"
81
+ },
58
82
  "devDependencies": {
83
+ "@ant-design/icons": "5.3.7",
84
+ "@formily/antd-v5": "1.2.2",
85
+ "@formily/core": "2.3.1",
86
+ "@formily/json-schema": "2.3.1",
87
+ "@formily/react": "2.3.1",
88
+ "@formily/shared": "2.3.1",
59
89
  "@testing-library/dom": "^10.4.1",
60
90
  "@testing-library/jest-dom": "^6.9.1",
61
91
  "@testing-library/react": "^16.3.0",
62
92
  "@testing-library/user-event": "^14.6.1",
63
- "@types/lodash": "4.14.162",
64
93
  "@types/lodash-es": "^4.17.12",
65
94
  "@types/react": "18.3.3",
66
95
  "@umijs/plugin-sass": "1.1.1",
67
96
  "@vitejs/plugin-react": "^4.3.4",
68
97
  "@vitest/ui": "^4.0.3",
98
+ "ag-grid-community": "33.3.2",
99
+ "ag-grid-enterprise": "33.3.2",
100
+ "ag-grid-react": "33.3.2",
101
+ "antd": "5.19.0",
69
102
  "babel-plugin-import": "1.13.5",
70
- "babel-plugin-lodash": "3.3.4",
71
103
  "babel-plugin-transform-remove-console": "^6.9.4",
72
104
  "dumi": "2.4.7",
105
+ "eslint": "^9.39.4",
106
+ "eslint-plugin-react": "^7.37.5",
107
+ "eslint-plugin-react-hooks": "^7.1.1",
73
108
  "father": "4.4.6",
109
+ "globals": "^17.6.0",
74
110
  "jsdom": "^27.0.1",
75
111
  "patch-package": "^8.0.1",
112
+ "react": "18.2.0",
113
+ "react-dom": "18.2.0",
76
114
  "release-it": "17.6.0",
115
+ "typescript-eslint": "^8.61.0",
77
116
  "vitest": "^4.0.3"
78
117
  },
79
118
  "publishConfig": {
@@ -1,88 +0,0 @@
1
- import { GridApi } from 'ag-grid-community';
2
- /**
3
- * 计算类型
4
- */
5
- export type CalculationType = 'sum' | 'avg' | 'standardDeviation' | false;
6
- /**
7
- * 计算列配置
8
- */
9
- export interface CalculationColumn {
10
- field: string;
11
- calculateType: CalculationType;
12
- /** 小数位数,默认 2 */
13
- transactionAmount?: number;
14
- /** 是否使用千分位格式化 */
15
- formatWithCommas?: boolean;
16
- /** 自定义渲染器(如果存在则跳过计算) */
17
- cellRenderer?: any;
18
- }
19
- /**
20
- * Hook 配置接口
21
- */
22
- export interface UseAgGridCalculationConfig {
23
- /** Grid API 引用 */
24
- gridApi?: GridApi;
25
- /** 所有列定义 */
26
- allColDefs?: import('../types').ExtendedColDef[];
27
- /** 行数据 */
28
- rowData: any[];
29
- }
30
- /**
31
- * Hook 返回值接口
32
- */
33
- export interface UseAgGridCalculationReturn {
34
- /** 计算并更新底部固定行 */
35
- calculateSum: () => void;
36
- /** 处理筛选变化 */
37
- onFilterChanged: () => void;
38
- }
39
- /**
40
- * 验证数值有效性
41
- */
42
- declare function isValidNumber(value: any): boolean;
43
- /**
44
- * 格式化数字(添加千分位)
45
- */
46
- declare function formatNumber(value: number, decimalPlaces?: number): string;
47
- /**
48
- * 求和函数
49
- */
50
- declare function sumFn(field: string, displayedData: any[]): number;
51
- /**
52
- * 平均值函数
53
- */
54
- declare function avgFn(field: string, displayedData: any[]): number;
55
- /**
56
- * 标准差函数
57
- */
58
- declare function standardDeviationFn(field: string, displayedData: any[]): number;
59
- /**
60
- * AG-Grid 计算列管理 Hook
61
- *
62
- * @description
63
- * 处理 AG-Grid 底部固定行的聚合计算(求和、平均值、标准差)
64
- *
65
- * @example
66
- * ```tsx
67
- * const { calculateSum, onFilterChanged } = useAgGridCalculation({
68
- * gridApi,
69
- * allColDefs,
70
- * rowData
71
- * });
72
- *
73
- * // 在筛选变化时调用
74
- * <AgGridReact onFilterChanged={onFilterChanged} />
75
- * ```
76
- */
77
- export declare function useAgGridCalculation(config: UseAgGridCalculationConfig): UseAgGridCalculationReturn;
78
- /**
79
- * 导出工具函数供外部使用
80
- */
81
- export declare const calculationUtils: {
82
- isValidNumber: typeof isValidNumber;
83
- formatNumber: typeof formatNumber;
84
- sumFn: typeof sumFn;
85
- avgFn: typeof avgFn;
86
- standardDeviationFn: typeof standardDeviationFn;
87
- };
88
- export {};
@@ -1,224 +0,0 @@
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
- };
@@ -1,91 +0,0 @@
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: import('../types').ExtendedColDef[]) => any;
47
- /** 所有列定义 */
48
- allColDefs?: import('../types').ExtendedColDef[];
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;