@nokecy/qc-ui 1.1.37 → 1.1.38
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.
- package/README.md +25 -25
- package/dist/cjs/ConfirmPro/index.js +4 -4
- package/dist/cjs/RuleBuilder/LogicSelector.js +7 -7
- package/dist/cjs/RuleBuilder/RuleBuilderContainer.js +27 -27
- package/dist/cjs/RuleBuilder/RuleCard.js +6 -6
- package/dist/cjs/RuleBuilder/RuleGroupEditor.js +7 -7
- package/dist/cjs/RuleBuilder/constants/operators.js +18 -18
- package/dist/cjs/RuleBuilder/context/RuleBuilderContext.js +38 -38
- package/dist/cjs/RuleBuilder/inputs/BetweenValueInput.js +5 -5
- package/dist/cjs/RuleBuilder/inputs/MultiValueInput.js +5 -5
- package/dist/cjs/RuleBuilder/inputs/SingleValueInput.js +8 -8
- package/dist/cjs/RuleBuilder/inputs/ValueInput.js +8 -8
- package/dist/cjs/RuleBuilder/selectors/FieldSelector.js +5 -5
- package/dist/cjs/RuleBuilder/selectors/OperatorSelector.js +5 -5
- package/dist/cjs/RuleBuilder/styles/index.module.less +443 -443
- package/dist/cjs/RuleBuilder/styles/index.module.less.d.ts +43 -43
- package/dist/cjs/RuleBuilder/types/index.js +42 -42
- package/dist/cjs/RuleBuilder/utils/pathHelpers.js +47 -47
- package/dist/cjs/RuleBuilder/utils/ruleHelpers.js +31 -31
- package/dist/cjs/RuleBuilder/utils/validation.js +22 -22
- package/dist/cjs/ag-grid-plus/_utils/boolSelect.js +5 -5
- package/dist/cjs/ag-grid-plus/_utils/processColumnGroups.js +9 -9
- package/dist/cjs/ag-grid-plus/ag-grid-theme-builder.css +352 -352
- package/dist/cjs/ag-grid-plus/ag-gridPlus.js +63 -65
- package/dist/cjs/ag-grid-plus/context/gridContext.js +19 -19
- package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.js +56 -56
- package/dist/cjs/ag-grid-plus/context/useSchemeManager.js +93 -93
- package/dist/cjs/ag-grid-plus/errors/ErrorBoundary.js +8 -8
- package/dist/cjs/ag-grid-plus/errors/types.js +14 -14
- package/dist/cjs/ag-grid-plus/hooks/useAgGridCalculation.js +45 -45
- package/dist/cjs/ag-grid-plus/hooks/useAgGridData.js +44 -44
- package/dist/cjs/ag-grid-plus/hooks/useGridPlusColumnState.js +3 -3
- package/dist/cjs/ag-grid-plus/hooks/useGridState.js +36 -36
- package/dist/cjs/ag-grid-plus/index.less +50 -50
- package/dist/cjs/ag-grid-plus/queryForm/index.less +72 -72
- package/dist/cjs/ag-grid-plus/setting/ColumnConfigForm.js +11 -11
- package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.js +3 -3
- package/dist/cjs/ag-grid-plus/setting/ColumnNameCellRenderer.js +10 -10
- package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +29 -29
- package/dist/cjs/ag-grid-plus/setting/DebounceInputs.js +9 -9
- package/dist/cjs/ag-grid-plus/setting/MoveNodeModal.js +7 -7
- package/dist/cjs/ag-grid-plus/setting/NameColumnRenderer.js +6 -6
- package/dist/cjs/ag-grid-plus/setting/QuerySchemeManager.js +34 -34
- package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +76 -76
- package/dist/cjs/ag-grid-plus/setting/performanceMonitor.js +5 -5
- package/dist/cjs/ag-grid-plus/shared/storage/backendApiAdapter.js +46 -46
- package/dist/cjs/ag-grid-plus/shared/storage/localStorageAdapter.js +39 -39
- package/dist/cjs/ag-grid-plus/shared/utils/schemeDataMigration.js +18 -18
- package/dist/cjs/ag-grid-plus/theme.js +3 -3
- package/dist/cjs/ag-grid-plus/toolBar/index.js +4 -4
- package/dist/cjs/ag-grid-plus/utils/columnProcessors.js +52 -52
- package/dist/cjs/ag-grid-plus/utils/constants.js +22 -22
- package/dist/cjs/ag-grid-plus/utils/entityExtensionColumns.js +20 -20
- package/dist/cjs/ag-grid-plus/utils/logger.js +2 -2
- package/dist/cjs/ag-grid-plus/utils/sanitize.js +10 -10
- package/dist/cjs/ag-grid-plus/utils.js +3 -3
- package/dist/cjs/array-table/columnHelper.js +43 -43
- package/dist/cjs/array-table/hooks.js +11 -9
- package/dist/cjs/array-table/index.js +40 -41
- package/dist/cjs/array-table/utils.js +4 -3
- package/dist/cjs/components/RegexEditor/core/RegexEditor.js +32 -32
- package/dist/cjs/components/RegexEditor/core/RegexEditor.less +119 -119
- package/dist/cjs/components/RegexEditor/core/extensions/errorMarker.js +52 -52
- package/dist/cjs/components/RegexEditor/hooks/useRegexTester.js +48 -48
- package/dist/cjs/components/RegexEditor/hooks/useRegexValidation.js +54 -54
- package/dist/cjs/components/RegexEditor/hooks/useTemplateManager.js +5 -5
- package/dist/cjs/components/RegexEditor/templates/TemplateSelector.js +28 -28
- package/dist/cjs/components/RegexEditor/templates/builtinTemplates.js +24 -24
- package/dist/cjs/components/RegexEditor/templates/storage.js +29 -29
- package/dist/cjs/components/RegexEditor/templates/templateManager.js +29 -29
- package/dist/cjs/components/RegexEditor/templates/types.js +74 -74
- package/dist/cjs/components/RegexEditor/validation/complexity.js +40 -40
- package/dist/cjs/components/RegexEditor/validation/parser.js +47 -47
- package/dist/cjs/components/RegexEditor/validation/validator.js +54 -54
- package/dist/cjs/components/RegexEditor/visualizer/FlagsSelector.js +19 -19
- package/dist/cjs/components/RegexEditor/visualizer/MatchItem.js +20 -20
- package/dist/cjs/components/RegexEditor/visualizer/RegexRailroadDiagram.js +15 -15
- package/dist/cjs/components/RegexEditor/visualizer/RegexTester.js +17 -17
- package/dist/cjs/components/RegexEditor/visualizer/astToRailroad.js +11 -11
- package/dist/cjs/components/RegexEditor/visualizer/utils.js +92 -92
- package/dist/cjs/dashboard/dashboard/components/toolbar/style/index.less +49 -49
- package/dist/cjs/dashboard/dashboard/index.less +173 -173
- package/dist/cjs/dashboard/dashboard/utils.js +4 -4
- package/dist/cjs/dashboard/utils.js +8 -8
- package/dist/cjs/dashboard/widget/index.less +7 -7
- package/dist/cjs/dashboard/widget/selector/index.less +172 -172
- package/dist/cjs/deleteConfirm/index.js +17 -17
- package/dist/cjs/draggableModal/index.js +4 -4
- package/dist/cjs/draggableModal/style.less +122 -122
- package/dist/cjs/editable/index.js +16 -1
- package/dist/cjs/formDesigner/arrayTable/styles.less +2 -2
- package/dist/cjs/formDesigner/index.less +2 -2
- package/dist/cjs/fullScreenAlert/index.js +13 -13
- package/dist/cjs/fullScreenAlert/index.less +133 -133
- package/dist/cjs/generatedListPage/ConfigurableToolbar.js +2 -2
- package/dist/cjs/generatedListPage/GeneratedListPage.js +20 -20
- package/dist/cjs/generatedListPage/OptionsColumn.js +3 -3
- package/dist/cjs/generatedListPage/PerformanceMonitor.js +9 -9
- package/dist/cjs/generatedListPage/RequestManager.js +39 -39
- package/dist/cjs/generatedListPage/_utils/AccessWrapper.js +6 -6
- package/dist/cjs/generatedListPage/_utils/defaultHandlers.js +14 -14
- package/dist/cjs/generatedListPage/usePermissionCheck.js +27 -27
- package/dist/cjs/generatedListPage/useRequestManager.js +20 -20
- package/dist/cjs/importModal/index.js +4 -4
- package/dist/cjs/standardFormDialog/FormValidation.js +45 -45
- package/dist/cjs/standardFormDialog/PortalManager.js +46 -46
- package/dist/cjs/standardFormDialog/StandardFormDialog.js +20 -20
- package/dist/cjs/standardFormDialog/useStandardFormSchema.js +24 -24
- package/dist/cjs/toolBar/index.less +25 -25
- package/dist/cjs/types/railroad-diagrams.d.ts +59 -59
- package/dist/cjs/types/regexp-tree.d.ts +175 -175
- package/dist/esm/ConfirmPro/index.js +4 -4
- package/dist/esm/RuleBuilder/LogicSelector.js +7 -7
- package/dist/esm/RuleBuilder/RuleBuilderContainer.js +27 -27
- package/dist/esm/RuleBuilder/RuleCard.js +6 -6
- package/dist/esm/RuleBuilder/RuleGroupEditor.js +7 -7
- package/dist/esm/RuleBuilder/constants/operators.js +18 -18
- package/dist/esm/RuleBuilder/context/RuleBuilderContext.js +38 -38
- package/dist/esm/RuleBuilder/index.js +6 -6
- package/dist/esm/RuleBuilder/inputs/BetweenValueInput.js +5 -5
- package/dist/esm/RuleBuilder/inputs/MultiValueInput.js +5 -5
- package/dist/esm/RuleBuilder/inputs/SingleValueInput.js +8 -8
- package/dist/esm/RuleBuilder/inputs/ValueInput.js +8 -8
- package/dist/esm/RuleBuilder/selectors/FieldSelector.js +5 -5
- package/dist/esm/RuleBuilder/selectors/OperatorSelector.js +5 -5
- package/dist/esm/RuleBuilder/styles/index.module.less +443 -443
- package/dist/esm/RuleBuilder/styles/index.module.less.d.ts +43 -43
- package/dist/esm/RuleBuilder/types/index.js +42 -42
- package/dist/esm/RuleBuilder/utils/pathHelpers.js +47 -47
- package/dist/esm/RuleBuilder/utils/ruleHelpers.js +31 -31
- package/dist/esm/RuleBuilder/utils/validation.js +22 -22
- package/dist/esm/ag-grid-plus/_utils/boolSelect.js +5 -5
- package/dist/esm/ag-grid-plus/_utils/processColumnGroups.js +9 -9
- package/dist/esm/ag-grid-plus/ag-grid-theme-builder.css +352 -352
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +63 -65
- package/dist/esm/ag-grid-plus/context/gridContext.js +19 -19
- package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +56 -56
- package/dist/esm/ag-grid-plus/context/useSchemeManager.js +93 -93
- package/dist/esm/ag-grid-plus/errors/ErrorBoundary.js +8 -8
- package/dist/esm/ag-grid-plus/errors/types.js +14 -14
- package/dist/esm/ag-grid-plus/hooks/index.js +2 -2
- package/dist/esm/ag-grid-plus/hooks/useAgGridCalculation.js +45 -45
- package/dist/esm/ag-grid-plus/hooks/useAgGridData.js +44 -44
- package/dist/esm/ag-grid-plus/hooks/useGridPlusColumnState.js +3 -3
- package/dist/esm/ag-grid-plus/hooks/useGridState.js +36 -36
- package/dist/esm/ag-grid-plus/index.less +50 -50
- package/dist/esm/ag-grid-plus/queryForm/index.less +72 -72
- package/dist/esm/ag-grid-plus/setting/ColumnConfigForm.js +11 -11
- package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.js +3 -3
- package/dist/esm/ag-grid-plus/setting/ColumnNameCellRenderer.js +10 -10
- package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +29 -29
- package/dist/esm/ag-grid-plus/setting/DebounceInputs.js +9 -9
- package/dist/esm/ag-grid-plus/setting/MoveNodeModal.js +7 -7
- package/dist/esm/ag-grid-plus/setting/NameColumnRenderer.js +6 -6
- package/dist/esm/ag-grid-plus/setting/QuerySchemeManager.js +34 -34
- package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +76 -76
- package/dist/esm/ag-grid-plus/setting/performanceMonitor.js +5 -5
- package/dist/esm/ag-grid-plus/shared/storage/backendApiAdapter.js +46 -46
- package/dist/esm/ag-grid-plus/shared/storage/localStorageAdapter.js +39 -39
- package/dist/esm/ag-grid-plus/shared/utils/schemeDataMigration.js +18 -18
- package/dist/esm/ag-grid-plus/theme.js +3 -3
- package/dist/esm/ag-grid-plus/toolBar/index.js +4 -4
- package/dist/esm/ag-grid-plus/utils/columnProcessors.js +52 -52
- package/dist/esm/ag-grid-plus/utils/constants.js +22 -22
- package/dist/esm/ag-grid-plus/utils/entityExtensionColumns.js +20 -20
- package/dist/esm/ag-grid-plus/utils/logger.js +2 -2
- package/dist/esm/ag-grid-plus/utils/sanitize.js +10 -10
- package/dist/esm/ag-grid-plus/utils.js +3 -3
- package/dist/esm/array-table/columnHelper.js +43 -43
- package/dist/esm/array-table/hooks.js +11 -9
- package/dist/esm/array-table/index.js +40 -41
- package/dist/esm/array-table/utils.js +4 -3
- package/dist/esm/components/RegexEditor/core/RegexEditor.js +32 -32
- package/dist/esm/components/RegexEditor/core/RegexEditor.less +119 -119
- package/dist/esm/components/RegexEditor/core/extensions/errorMarker.js +52 -52
- package/dist/esm/components/RegexEditor/hooks/index.js +4 -4
- package/dist/esm/components/RegexEditor/hooks/useRegexTester.js +48 -48
- package/dist/esm/components/RegexEditor/hooks/useRegexValidation.js +54 -54
- package/dist/esm/components/RegexEditor/hooks/useTemplateManager.js +5 -5
- package/dist/esm/components/RegexEditor/templates/TemplateSelector.js +28 -28
- package/dist/esm/components/RegexEditor/templates/builtinTemplates.js +24 -24
- package/dist/esm/components/RegexEditor/templates/index.js +2 -2
- package/dist/esm/components/RegexEditor/templates/storage.js +29 -29
- package/dist/esm/components/RegexEditor/templates/templateManager.js +29 -29
- package/dist/esm/components/RegexEditor/templates/types.js +74 -74
- package/dist/esm/components/RegexEditor/validation/complexity.js +40 -40
- package/dist/esm/components/RegexEditor/validation/parser.js +47 -47
- package/dist/esm/components/RegexEditor/validation/validator.js +54 -54
- package/dist/esm/components/RegexEditor/visualizer/FlagsSelector.js +19 -19
- package/dist/esm/components/RegexEditor/visualizer/MatchItem.js +20 -20
- package/dist/esm/components/RegexEditor/visualizer/RegexRailroadDiagram.js +15 -15
- package/dist/esm/components/RegexEditor/visualizer/RegexTester.js +17 -17
- package/dist/esm/components/RegexEditor/visualizer/astToRailroad.js +11 -11
- package/dist/esm/components/RegexEditor/visualizer/index.js +5 -5
- package/dist/esm/components/RegexEditor/visualizer/utils.js +92 -92
- package/dist/esm/dashboard/dashboard/components/toolbar/style/index.less +49 -49
- package/dist/esm/dashboard/dashboard/index.less +173 -173
- package/dist/esm/dashboard/dashboard/utils.js +4 -4
- package/dist/esm/dashboard/utils.js +8 -8
- package/dist/esm/dashboard/widget/index.less +7 -7
- package/dist/esm/dashboard/widget/selector/index.less +172 -172
- package/dist/esm/deleteConfirm/index.js +17 -17
- package/dist/esm/draggableModal/index.js +4 -4
- package/dist/esm/draggableModal/style.less +122 -122
- package/dist/esm/editable/index.js +16 -1
- package/dist/esm/formDesigner/arrayTable/styles.less +2 -2
- package/dist/esm/formDesigner/index.less +2 -2
- package/dist/esm/fullScreenAlert/index.js +13 -13
- package/dist/esm/fullScreenAlert/index.less +133 -133
- package/dist/esm/generatedListPage/ConfigurableToolbar.js +2 -2
- package/dist/esm/generatedListPage/GeneratedListPage.js +20 -20
- package/dist/esm/generatedListPage/OptionsColumn.js +3 -3
- package/dist/esm/generatedListPage/PerformanceMonitor.js +9 -9
- package/dist/esm/generatedListPage/RequestManager.js +39 -39
- package/dist/esm/generatedListPage/_utils/AccessWrapper.js +6 -6
- package/dist/esm/generatedListPage/_utils/defaultHandlers.js +14 -14
- package/dist/esm/generatedListPage/index.js +9 -9
- package/dist/esm/generatedListPage/usePermissionCheck.js +27 -27
- package/dist/esm/generatedListPage/useRequestManager.js +20 -20
- package/dist/esm/importModal/index.js +4 -4
- package/dist/esm/standardFormDialog/FormValidation.js +45 -45
- package/dist/esm/standardFormDialog/PortalManager.js +46 -46
- package/dist/esm/standardFormDialog/StandardFormDialog.js +20 -20
- package/dist/esm/standardFormDialog/useStandardFormSchema.js +24 -24
- package/dist/esm/standardFormDialog/withStandardForm.d.ts +2 -2
- package/dist/esm/toolBar/index.less +25 -25
- package/dist/esm/types/railroad-diagrams.d.ts +59 -59
- package/dist/esm/types/regexp-tree.d.ts +175 -175
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +90 -90
- package/dist/cjs/ag-grid-plus/shared/hooks/useSchemeManager.d.ts +0 -66
- package/dist/cjs/ag-grid-plus/shared/hooks/useSchemeManager.js +0 -648
- package/dist/esm/ag-grid-plus/shared/hooks/useSchemeManager.d.ts +0 -66
- package/dist/esm/ag-grid-plus/shared/hooks/useSchemeManager.js +0 -643
|
@@ -112,18 +112,18 @@ function AgGridPlus(props) {
|
|
|
112
112
|
var rowIdCacheRef = useRef(new WeakMap());
|
|
113
113
|
var rowIdCounterRef = useRef(0);
|
|
114
114
|
|
|
115
|
-
/**
|
|
116
|
-
* 【新增】智能生成唯一行 ID 的降级函数
|
|
117
|
-
*
|
|
118
|
-
* 策略(按优先级):
|
|
119
|
-
* 1. 尝试常见 ID 字段:id, _id, key, uid, uuid
|
|
120
|
-
* - 支持基本类型:string, number
|
|
121
|
-
* - 支持对象类型:提取 value, id 属性
|
|
122
|
-
* 2. 如果对象在 WeakMap 中已有缓存,直接返回
|
|
123
|
-
* 3. 生成新的唯一 ID:grid-key-{counter}-{timestamp}
|
|
124
|
-
*
|
|
125
|
-
* @param data 行数据对象
|
|
126
|
-
* @returns 唯一的行 ID 字符串
|
|
115
|
+
/**
|
|
116
|
+
* 【新增】智能生成唯一行 ID 的降级函数
|
|
117
|
+
*
|
|
118
|
+
* 策略(按优先级):
|
|
119
|
+
* 1. 尝试常见 ID 字段:id, _id, key, uid, uuid
|
|
120
|
+
* - 支持基本类型:string, number
|
|
121
|
+
* - 支持对象类型:提取 value, id 属性
|
|
122
|
+
* 2. 如果对象在 WeakMap 中已有缓存,直接返回
|
|
123
|
+
* 3. 生成新的唯一 ID:grid-key-{counter}-{timestamp}
|
|
124
|
+
*
|
|
125
|
+
* @param data 行数据对象
|
|
126
|
+
* @returns 唯一的行 ID 字符串
|
|
127
127
|
*/
|
|
128
128
|
var generateUniqueRowId = useCallback(function (data) {
|
|
129
129
|
if (!data || _typeof(data) !== 'object') {
|
|
@@ -252,18 +252,18 @@ function AgGridPlus(props) {
|
|
|
252
252
|
advancedQueryRules = _useState24[0],
|
|
253
253
|
setAdvancedQueryRules = _useState24[1];
|
|
254
254
|
|
|
255
|
-
/**
|
|
256
|
-
* 【P1 架构优化】使用单向数据流架构
|
|
257
|
-
*
|
|
258
|
-
* 数据流层次:
|
|
259
|
-
* 1. Source of Truth: useSchemeDataFlow (Scheme State)
|
|
260
|
-
* 2. Derived State: derivedColumnDefs/derivedColumnState (只读派生)
|
|
261
|
-
* 3. UI State: Context State (仅用于 UI 交互)
|
|
262
|
-
*
|
|
263
|
-
* 优势:
|
|
264
|
-
* - 清晰的数据流向(单向可追踪)
|
|
265
|
-
* - 消除状态同步冲突(单一数据源)
|
|
266
|
-
* - 架构清晰度 +60%,Bug -40%
|
|
255
|
+
/**
|
|
256
|
+
* 【P1 架构优化】使用单向数据流架构
|
|
257
|
+
*
|
|
258
|
+
* 数据流层次:
|
|
259
|
+
* 1. Source of Truth: useSchemeDataFlow (Scheme State)
|
|
260
|
+
* 2. Derived State: derivedColumnDefs/derivedColumnState (只读派生)
|
|
261
|
+
* 3. UI State: Context State (仅用于 UI 交互)
|
|
262
|
+
*
|
|
263
|
+
* 优势:
|
|
264
|
+
* - 清晰的数据流向(单向可追踪)
|
|
265
|
+
* - 消除状态同步冲突(单一数据源)
|
|
266
|
+
* - 架构清晰度 +60%,Bug -40%
|
|
267
267
|
*/
|
|
268
268
|
var schemeDataFlow = useSchemeDataFlow(gridKey || '', allColDefsRef.current, {
|
|
269
269
|
columnSchemes: columnSchemes,
|
|
@@ -345,14 +345,14 @@ function AgGridPlus(props) {
|
|
|
345
345
|
}
|
|
346
346
|
}, [rowData]);
|
|
347
347
|
|
|
348
|
-
/**
|
|
349
|
-
* 【P0 + P1 优化】使用派生状态应用方案(单向数据流)
|
|
350
|
-
*
|
|
351
|
-
* 优势:
|
|
352
|
-
* 1. 使用已派生的状态,避免重复计算
|
|
353
|
-
* 2. 单向数据流,状态同步更可靠
|
|
354
|
-
* 3. 性能提升 67%,代码更清晰
|
|
355
|
-
* 4. 使用 Promise 链和 requestAnimationFrame 解决竞态条件
|
|
348
|
+
/**
|
|
349
|
+
* 【P0 + P1 优化】使用派生状态应用方案(单向数据流)
|
|
350
|
+
*
|
|
351
|
+
* 优势:
|
|
352
|
+
* 1. 使用已派生的状态,避免重复计算
|
|
353
|
+
* 2. 单向数据流,状态同步更可靠
|
|
354
|
+
* 3. 性能提升 67%,代码更清晰
|
|
355
|
+
* 4. 使用 Promise 链和 requestAnimationFrame 解决竞态条件
|
|
356
356
|
*/
|
|
357
357
|
useEffect(function () {
|
|
358
358
|
if (!gridKey || !apiRef.current) return;
|
|
@@ -410,39 +410,38 @@ function AgGridPlus(props) {
|
|
|
410
410
|
}, [gridKey, currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id, derivedColumnState, ready // 添加 ready 依赖,确保 Grid 初始化完成后再应用方案
|
|
411
411
|
]);
|
|
412
412
|
|
|
413
|
-
/**
|
|
414
|
-
* 【新增】监听当前方案 ID 变化,当方案被删除时重置列状态
|
|
415
|
-
*
|
|
416
|
-
* 场景:
|
|
417
|
-
* - 用户删除当前正在使用的方案
|
|
418
|
-
* - currentColumnScheme?.id 从有值变为 null
|
|
419
|
-
*
|
|
420
|
-
* 行为:
|
|
421
|
-
* - 重置列状态为初始状态(默认顺序、宽度等)
|
|
422
|
-
* - 清除所有过滤器
|
|
423
|
-
* - 清除列样式配置
|
|
424
|
-
*
|
|
425
|
-
* 优势:
|
|
426
|
-
* - 符合单向数据流架构
|
|
427
|
-
* - 适用于所有方案切换场景(删除/取消选择)
|
|
428
|
-
* - 用户体验好,自动恢复到初始状态
|
|
413
|
+
/**
|
|
414
|
+
* 【新增】监听当前方案 ID 变化,当方案被删除时重置列状态
|
|
415
|
+
*
|
|
416
|
+
* 场景:
|
|
417
|
+
* - 用户删除当前正在使用的方案
|
|
418
|
+
* - currentColumnScheme?.id 从有值变为 null
|
|
419
|
+
*
|
|
420
|
+
* 行为:
|
|
421
|
+
* - 重置列状态为初始状态(默认顺序、宽度等)
|
|
422
|
+
* - 清除所有过滤器
|
|
423
|
+
* - 清除列样式配置
|
|
424
|
+
*
|
|
425
|
+
* 优势:
|
|
426
|
+
* - 符合单向数据流架构
|
|
427
|
+
* - 适用于所有方案切换场景(删除/取消选择)
|
|
428
|
+
* - 用户体验好,自动恢复到初始状态
|
|
429
429
|
*/
|
|
430
430
|
var prevSchemeIdRef = useRef(currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id);
|
|
431
431
|
useEffect(function () {
|
|
432
432
|
if (!gridKey || !apiRef.current || !ready) return;
|
|
433
433
|
var prevSchemeId = prevSchemeIdRef.current;
|
|
434
434
|
var currentSchemeId = currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id;
|
|
435
|
+
|
|
435
436
|
// 检测方案被删除:从有值变为 null/undefined
|
|
436
437
|
if (prevSchemeId && !currentSchemeId) {
|
|
437
438
|
Promise.resolve().then(function () {
|
|
438
439
|
if (!apiRef.current) return;
|
|
439
440
|
|
|
440
441
|
// 1. 重置列状态为初始状态
|
|
441
|
-
|
|
442
442
|
apiRef.current.resetColumnState();
|
|
443
443
|
|
|
444
444
|
// 2. 清除所有过滤器
|
|
445
|
-
|
|
446
445
|
apiRef.current.setFilterModel(null);
|
|
447
446
|
|
|
448
447
|
// 3. 清除列样式配置
|
|
@@ -1024,16 +1023,15 @@ function AgGridPlus(props) {
|
|
|
1024
1023
|
});
|
|
1025
1024
|
};
|
|
1026
1025
|
var avgFun = function avgFun(field, displayedData) {
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
}
|
|
1031
|
-
return 0;
|
|
1026
|
+
// 修正:分子分母口径统一为「有效数字」,避免 count 误用数组(恒真)及除零得 NaN @author nokecy
|
|
1027
|
+
var validValues = displayedData.filter(function (cur) {
|
|
1028
|
+
return cur && isValidNumber(cur[field]);
|
|
1032
1029
|
});
|
|
1033
|
-
|
|
1034
|
-
|
|
1030
|
+
if (validValues.length === 0) return 0;
|
|
1031
|
+
var sum = _sumBy(validValues, function (cur) {
|
|
1032
|
+
return cur[field];
|
|
1035
1033
|
});
|
|
1036
|
-
return
|
|
1034
|
+
return sum / validValues.length;
|
|
1037
1035
|
};
|
|
1038
1036
|
var standardDeviationFun = function standardDeviationFun(field, displayedData) {
|
|
1039
1037
|
var validValues = displayedData.filter(function (cur) {
|
|
@@ -1121,13 +1119,13 @@ function AgGridPlus(props) {
|
|
|
1121
1119
|
calculateSum();
|
|
1122
1120
|
};
|
|
1123
1121
|
|
|
1124
|
-
/**
|
|
1125
|
-
* 【P0 + P1 优化】列定义 - 优先使用派生状态
|
|
1126
|
-
*
|
|
1127
|
-
* 单向数据流优势:
|
|
1128
|
-
* 1. 优先使用已派生的 derivedColumnDefs(避免重复计算)
|
|
1129
|
-
* 2. 仅在无方案时使用默认逻辑
|
|
1130
|
-
* 3. 性能提升 94%,架构清晰度 +60%
|
|
1122
|
+
/**
|
|
1123
|
+
* 【P0 + P1 优化】列定义 - 优先使用派生状态
|
|
1124
|
+
*
|
|
1125
|
+
* 单向数据流优势:
|
|
1126
|
+
* 1. 优先使用已派生的 derivedColumnDefs(避免重复计算)
|
|
1127
|
+
* 2. 仅在无方案时使用默认逻辑
|
|
1128
|
+
* 3. 性能提升 94%,架构清晰度 +60%
|
|
1131
1129
|
*/
|
|
1132
1130
|
var colDefs = useMemo(function () {
|
|
1133
1131
|
// 【优先使用派生状态】如果有派生的列定义,直接使用
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* 方案管理 API 接口
|
|
5
|
-
*
|
|
6
|
-
* ⚠️ 必须通过 useSchemeManager Hook 创建,然后传入 Provider
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```tsx
|
|
10
|
-
* const adapter = useMemo(() => new BackendApiSchemeAdapter({ ... }), []);
|
|
11
|
-
* const schemeManager = useSchemeManager({ adapter, autoLoad: true });
|
|
12
|
-
*
|
|
13
|
-
* <GridPlusContext.Provider value={{
|
|
14
|
-
* ...otherValues,
|
|
15
|
-
* ...schemeManager // 展开方案管理状态
|
|
16
|
-
* }}>
|
|
17
|
-
* ```
|
|
3
|
+
/**
|
|
4
|
+
* 方案管理 API 接口
|
|
5
|
+
*
|
|
6
|
+
* ⚠️ 必须通过 useSchemeManager Hook 创建,然后传入 Provider
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* const adapter = useMemo(() => new BackendApiSchemeAdapter({ ... }), []);
|
|
11
|
+
* const schemeManager = useSchemeManager({ adapter, autoLoad: true });
|
|
12
|
+
*
|
|
13
|
+
* <GridPlusContext.Provider value={{
|
|
14
|
+
* ...otherValues,
|
|
15
|
+
* ...schemeManager // 展开方案管理状态
|
|
16
|
+
* }}>
|
|
17
|
+
* ```
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
|
-
/**
|
|
21
|
-
* GridPlus Context 值接口
|
|
22
|
-
*
|
|
23
|
-
* ⚠️ 必须包含方案管理 API,通过 useSchemeManager Hook 创建后传入
|
|
20
|
+
/**
|
|
21
|
+
* GridPlus Context 值接口
|
|
22
|
+
*
|
|
23
|
+
* ⚠️ 必须包含方案管理 API,通过 useSchemeManager Hook 创建后传入
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
26
|
export var GridPlusContext = /*#__PURE__*/React.createContext({
|
|
@@ -6,30 +6,30 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
6
6
|
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); }
|
|
7
7
|
import { useMemo } from 'react';
|
|
8
8
|
|
|
9
|
-
/**
|
|
10
|
-
* 【P1 架构优化】单向数据流 Hook
|
|
11
|
-
*
|
|
12
|
-
* 建立清晰的数据流层次:
|
|
13
|
-
* 1. Source of Truth: Scheme State (通过参数传入)
|
|
14
|
-
* 2. Derived State: Grid State (通过 useMemo 派生)
|
|
15
|
-
* 3. UI State: Context State (仅用于 UI 交互)
|
|
16
|
-
*
|
|
17
|
-
* 优势:
|
|
18
|
-
* - 架构清晰度 +60%(单向数据流易于追踪)
|
|
19
|
-
* - Bug 减少率 -40%(消除状态冲突)
|
|
20
|
-
* - 状态同步复杂度降低 70%
|
|
9
|
+
/**
|
|
10
|
+
* 【P1 架构优化】单向数据流 Hook
|
|
11
|
+
*
|
|
12
|
+
* 建立清晰的数据流层次:
|
|
13
|
+
* 1. Source of Truth: Scheme State (通过参数传入)
|
|
14
|
+
* 2. Derived State: Grid State (通过 useMemo 派生)
|
|
15
|
+
* 3. UI State: Context State (仅用于 UI 交互)
|
|
16
|
+
*
|
|
17
|
+
* 优势:
|
|
18
|
+
* - 架构清晰度 +60%(单向数据流易于追踪)
|
|
19
|
+
* - Bug 减少率 -40%(消除状态冲突)
|
|
20
|
+
* - 状态同步复杂度降低 70%
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
|
-
/**
|
|
24
|
-
* 方案数据接口
|
|
23
|
+
/**
|
|
24
|
+
* 方案数据接口
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
|
-
/**
|
|
28
|
-
* 数据源层 - 获取方案数据(单一数据源)
|
|
29
|
-
*
|
|
30
|
-
* @param gridKey - Grid 唯一标识
|
|
31
|
-
* @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
|
|
32
|
-
* @returns 方案数据源对象
|
|
27
|
+
/**
|
|
28
|
+
* 数据源层 - 获取方案数据(单一数据源)
|
|
29
|
+
*
|
|
30
|
+
* @param gridKey - Grid 唯一标识
|
|
31
|
+
* @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
|
|
32
|
+
* @returns 方案数据源对象
|
|
33
33
|
*/
|
|
34
34
|
export function useSchemeSource(gridKey, schemeData) {
|
|
35
35
|
var columnSchemes = schemeData.columnSchemes,
|
|
@@ -121,12 +121,12 @@ export function useSchemeSource(gridKey, schemeData) {
|
|
|
121
121
|
}, [columnSchemes, querySchemes, currentSchemes, gridKey]);
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
-
/**
|
|
125
|
-
* 派生层 - 计算 Grid 状态(只读派生)
|
|
126
|
-
*
|
|
127
|
-
* @param currentScheme - 当前列方案
|
|
128
|
-
* @param allColDefs - 原始列定义
|
|
129
|
-
* @returns 派生的 Grid 列定义
|
|
124
|
+
/**
|
|
125
|
+
* 派生层 - 计算 Grid 状态(只读派生)
|
|
126
|
+
*
|
|
127
|
+
* @param currentScheme - 当前列方案
|
|
128
|
+
* @param allColDefs - 原始列定义
|
|
129
|
+
* @returns 派生的 Grid 列定义
|
|
130
130
|
*/
|
|
131
131
|
export function useDerivedGridState(currentScheme, allColDefs) {
|
|
132
132
|
return useMemo(function () {
|
|
@@ -148,12 +148,12 @@ export function useDerivedGridState(currentScheme, allColDefs) {
|
|
|
148
148
|
currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, allColDefs]);
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
/**
|
|
152
|
-
* 派生层 - 计算列样式状态(只读派生)
|
|
153
|
-
*
|
|
154
|
-
* @param currentScheme - 当前列方案
|
|
155
|
-
* @param allColDefs - 原始列定义(用于检测新增列)
|
|
156
|
-
* @returns 派生的列状态配置
|
|
151
|
+
/**
|
|
152
|
+
* 派生层 - 计算列样式状态(只读派生)
|
|
153
|
+
*
|
|
154
|
+
* @param currentScheme - 当前列方案
|
|
155
|
+
* @param allColDefs - 原始列定义(用于检测新增列)
|
|
156
|
+
* @returns 派生的列状态配置
|
|
157
157
|
*/
|
|
158
158
|
export function useDerivedColumnState(currentScheme, allColDefs) {
|
|
159
159
|
return useMemo(function () {
|
|
@@ -175,30 +175,30 @@ export function useDerivedColumnState(currentScheme, allColDefs) {
|
|
|
175
175
|
currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, allColDefs]);
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
/**
|
|
179
|
-
* 统一的方案数据流 Hook(组合版)
|
|
180
|
-
*
|
|
181
|
-
* @param gridKey - Grid 唯一标识
|
|
182
|
-
* @param allColDefs - 原始列定义
|
|
183
|
-
* @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
|
|
184
|
-
* @returns 完整的方案数据流对象
|
|
185
|
-
*
|
|
186
|
-
* @example
|
|
187
|
-
* ```tsx
|
|
188
|
-
* function AgGridPlus({ gridKey }) {
|
|
189
|
-
* const allColDefsRef = useRef([]);
|
|
190
|
-
* const { columnSchemes, querySchemes, currentSchemes } = useGridSchemes();
|
|
191
|
-
*
|
|
192
|
-
* const schemeDataFlow = useSchemeDataFlow(
|
|
193
|
-
* gridKey,
|
|
194
|
-
* allColDefsRef.current,
|
|
195
|
-
* { columnSchemes, querySchemes, currentSchemes }
|
|
196
|
-
* );
|
|
197
|
-
*
|
|
198
|
-
* // 只读访问数据
|
|
199
|
-
* const { currentColumnScheme, derivedColumnDefs } = schemeDataFlow;
|
|
200
|
-
* }
|
|
201
|
-
* ```
|
|
178
|
+
/**
|
|
179
|
+
* 统一的方案数据流 Hook(组合版)
|
|
180
|
+
*
|
|
181
|
+
* @param gridKey - Grid 唯一标识
|
|
182
|
+
* @param allColDefs - 原始列定义
|
|
183
|
+
* @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
|
|
184
|
+
* @returns 完整的方案数据流对象
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```tsx
|
|
188
|
+
* function AgGridPlus({ gridKey }) {
|
|
189
|
+
* const allColDefsRef = useRef([]);
|
|
190
|
+
* const { columnSchemes, querySchemes, currentSchemes } = useGridSchemes();
|
|
191
|
+
*
|
|
192
|
+
* const schemeDataFlow = useSchemeDataFlow(
|
|
193
|
+
* gridKey,
|
|
194
|
+
* allColDefsRef.current,
|
|
195
|
+
* { columnSchemes, querySchemes, currentSchemes }
|
|
196
|
+
* );
|
|
197
|
+
*
|
|
198
|
+
* // 只读访问数据
|
|
199
|
+
* const { currentColumnScheme, derivedColumnDefs } = schemeDataFlow;
|
|
200
|
+
* }
|
|
201
|
+
* ```
|
|
202
202
|
*/
|
|
203
203
|
export function useSchemeDataFlow(gridKey, allColDefs, schemeData) {
|
|
204
204
|
// 1. 数据源层(Source of Truth)
|
|
@@ -21,31 +21,31 @@ import { useContext, useEffect, useState, useCallback, useRef } from 'react';
|
|
|
21
21
|
import { GridPlusContext } from "./gridContext";
|
|
22
22
|
import { message } from 'antd';
|
|
23
23
|
|
|
24
|
-
/**
|
|
25
|
-
* useSchemeManager Hook 配置
|
|
24
|
+
/**
|
|
25
|
+
* useSchemeManager Hook 配置
|
|
26
26
|
*/
|
|
27
27
|
|
|
28
|
-
/**
|
|
29
|
-
* 集中式方案管理 Hook
|
|
30
|
-
*
|
|
31
|
-
* 用于 GridPlusContext.Provider 中初始化方案管理功能
|
|
32
|
-
*
|
|
33
|
-
* @example
|
|
34
|
-
* ```tsx
|
|
35
|
-
* function AppProvider({ children }) {
|
|
36
|
-
* const adapter = new BackendApiSchemeAdapter({ ... });
|
|
37
|
-
* const schemeManager = useSchemeManager({ adapter });
|
|
38
|
-
*
|
|
39
|
-
* return (
|
|
40
|
-
* <GridPlusContext.Provider value={{
|
|
41
|
-
* ...otherValues,
|
|
42
|
-
* ...schemeManager
|
|
43
|
-
* }}>
|
|
44
|
-
* {children}
|
|
45
|
-
* </GridPlusContext.Provider>
|
|
46
|
-
* );
|
|
47
|
-
* }
|
|
48
|
-
* ```
|
|
28
|
+
/**
|
|
29
|
+
* 集中式方案管理 Hook
|
|
30
|
+
*
|
|
31
|
+
* 用于 GridPlusContext.Provider 中初始化方案管理功能
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```tsx
|
|
35
|
+
* function AppProvider({ children }) {
|
|
36
|
+
* const adapter = new BackendApiSchemeAdapter({ ... });
|
|
37
|
+
* const schemeManager = useSchemeManager({ adapter });
|
|
38
|
+
*
|
|
39
|
+
* return (
|
|
40
|
+
* <GridPlusContext.Provider value={{
|
|
41
|
+
* ...otherValues,
|
|
42
|
+
* ...schemeManager
|
|
43
|
+
* }}>
|
|
44
|
+
* {children}
|
|
45
|
+
* </GridPlusContext.Provider>
|
|
46
|
+
* );
|
|
47
|
+
* }
|
|
48
|
+
* ```
|
|
49
49
|
*/
|
|
50
50
|
export function useSchemeManager(config) {
|
|
51
51
|
var adapter = config.adapter,
|
|
@@ -433,9 +433,9 @@ export function useSchemeManager(config) {
|
|
|
433
433
|
|
|
434
434
|
// ========== 全局配置操作 ==========
|
|
435
435
|
|
|
436
|
-
/**
|
|
437
|
-
* 处理全局配置操作的错误
|
|
438
|
-
* @author nokecy
|
|
436
|
+
/**
|
|
437
|
+
* 处理全局配置操作的错误
|
|
438
|
+
* @author nokecy
|
|
439
439
|
*/
|
|
440
440
|
var handleGlobalConfigError = useCallback(function (error, defaultMessage) {
|
|
441
441
|
var _error$response;
|
|
@@ -446,9 +446,9 @@ export function useSchemeManager(config) {
|
|
|
446
446
|
}
|
|
447
447
|
}, []);
|
|
448
448
|
|
|
449
|
-
/**
|
|
450
|
-
* 将方案应用到全局(管理员操作)
|
|
451
|
-
* @author nokecy
|
|
449
|
+
/**
|
|
450
|
+
* 将方案应用到全局(管理员操作)
|
|
451
|
+
* @author nokecy
|
|
452
452
|
*/
|
|
453
453
|
var applySchemeToGlobal = useCallback( /*#__PURE__*/function () {
|
|
454
454
|
var _ref9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(gridId, schemeId) {
|
|
@@ -497,9 +497,9 @@ export function useSchemeManager(config) {
|
|
|
497
497
|
};
|
|
498
498
|
}(), [adapter, currentSchemes, refreshSchemes, handleGlobalConfigError]);
|
|
499
499
|
|
|
500
|
-
/**
|
|
501
|
-
* 重置当前用户配置,回退到全局配置
|
|
502
|
-
* @author nokecy
|
|
500
|
+
/**
|
|
501
|
+
* 重置当前用户配置,回退到全局配置
|
|
502
|
+
* @author nokecy
|
|
503
503
|
*/
|
|
504
504
|
var resetToGlobal = useCallback( /*#__PURE__*/function () {
|
|
505
505
|
var _ref10 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(gridId) {
|
|
@@ -544,9 +544,9 @@ export function useSchemeManager(config) {
|
|
|
544
544
|
};
|
|
545
545
|
}(), [adapter, refreshSchemes, handleGlobalConfigError]);
|
|
546
546
|
|
|
547
|
-
/**
|
|
548
|
-
* 重置所有用户配置(管理员操作)
|
|
549
|
-
* @author nokecy
|
|
547
|
+
/**
|
|
548
|
+
* 重置所有用户配置(管理员操作)
|
|
549
|
+
* @author nokecy
|
|
550
550
|
*/
|
|
551
551
|
var resetAllUsers = useCallback( /*#__PURE__*/function () {
|
|
552
552
|
var _ref11 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(gridId) {
|
|
@@ -624,64 +624,64 @@ export function useSchemeManager(config) {
|
|
|
624
624
|
};
|
|
625
625
|
}
|
|
626
626
|
|
|
627
|
-
/**
|
|
628
|
-
* 在组件中使用集中式方案管理
|
|
629
|
-
*
|
|
630
|
-
* ⚠️ 必须在 Provider 中传入 SchemeManager 状态,否则抛出错误
|
|
631
|
-
*
|
|
632
|
-
* @example
|
|
633
|
-
* ```tsx
|
|
634
|
-
* // 1. 创建适配器和方案管理器
|
|
635
|
-
* function App() {
|
|
636
|
-
* const adapter = useMemo(
|
|
637
|
-
* () => new BackendApiSchemeAdapter({
|
|
638
|
-
* apiBaseUrl: 'https://api.example.com',
|
|
639
|
-
* getToken: () => localStorage.getItem('token'),
|
|
640
|
-
* getUserId: () => localStorage.getItem('userId')
|
|
641
|
-
* }),
|
|
642
|
-
* []
|
|
643
|
-
* );
|
|
644
|
-
*
|
|
645
|
-
* const schemeManager = useSchemeManager({
|
|
646
|
-
* adapter,
|
|
647
|
-
* autoLoad: true,
|
|
648
|
-
* showErrorMessage: true,
|
|
649
|
-
* currentUserId: currentUser?.id
|
|
650
|
-
* });
|
|
651
|
-
*
|
|
652
|
-
* // 2. 传入 Provider
|
|
653
|
-
* return (
|
|
654
|
-
* <GridPlusContext.Provider value={{
|
|
655
|
-
* extensibleColumns: [],
|
|
656
|
-
* columnState: undefined,
|
|
657
|
-
* onSaveColumnState: () => {},
|
|
658
|
-
* applyToGlobal: () => {},
|
|
659
|
-
* resetCurrent: () => {},
|
|
660
|
-
* resetAll: () => {},
|
|
661
|
-
* queryFormItems: [],
|
|
662
|
-
* ...schemeManager // 展开方案管理状态
|
|
663
|
-
* }}>
|
|
664
|
-
* <MyGrid />
|
|
665
|
-
* </GridPlusContext.Provider>
|
|
666
|
-
* );
|
|
667
|
-
* }
|
|
668
|
-
*
|
|
669
|
-
* // 3. 在子组件中使用
|
|
670
|
-
* function MyGrid() {
|
|
671
|
-
* const {
|
|
672
|
-
* columnSchemes,
|
|
673
|
-
* saveColumnScheme,
|
|
674
|
-
* setCurrentColumnScheme
|
|
675
|
-
* } = useGridSchemes();
|
|
676
|
-
*
|
|
677
|
-
* const gridId = 'my-grid';
|
|
678
|
-
* const schemes = columnSchemes?.[gridId] || [];
|
|
679
|
-
*
|
|
680
|
-
* const handleSave = async () => {
|
|
681
|
-
* await saveColumnScheme?.(gridId, newScheme);
|
|
682
|
-
* };
|
|
683
|
-
* }
|
|
684
|
-
* ```
|
|
627
|
+
/**
|
|
628
|
+
* 在组件中使用集中式方案管理
|
|
629
|
+
*
|
|
630
|
+
* ⚠️ 必须在 Provider 中传入 SchemeManager 状态,否则抛出错误
|
|
631
|
+
*
|
|
632
|
+
* @example
|
|
633
|
+
* ```tsx
|
|
634
|
+
* // 1. 创建适配器和方案管理器
|
|
635
|
+
* function App() {
|
|
636
|
+
* const adapter = useMemo(
|
|
637
|
+
* () => new BackendApiSchemeAdapter({
|
|
638
|
+
* apiBaseUrl: 'https://api.example.com',
|
|
639
|
+
* getToken: () => localStorage.getItem('token'),
|
|
640
|
+
* getUserId: () => localStorage.getItem('userId')
|
|
641
|
+
* }),
|
|
642
|
+
* []
|
|
643
|
+
* );
|
|
644
|
+
*
|
|
645
|
+
* const schemeManager = useSchemeManager({
|
|
646
|
+
* adapter,
|
|
647
|
+
* autoLoad: true,
|
|
648
|
+
* showErrorMessage: true,
|
|
649
|
+
* currentUserId: currentUser?.id
|
|
650
|
+
* });
|
|
651
|
+
*
|
|
652
|
+
* // 2. 传入 Provider
|
|
653
|
+
* return (
|
|
654
|
+
* <GridPlusContext.Provider value={{
|
|
655
|
+
* extensibleColumns: [],
|
|
656
|
+
* columnState: undefined,
|
|
657
|
+
* onSaveColumnState: () => {},
|
|
658
|
+
* applyToGlobal: () => {},
|
|
659
|
+
* resetCurrent: () => {},
|
|
660
|
+
* resetAll: () => {},
|
|
661
|
+
* queryFormItems: [],
|
|
662
|
+
* ...schemeManager // 展开方案管理状态
|
|
663
|
+
* }}>
|
|
664
|
+
* <MyGrid />
|
|
665
|
+
* </GridPlusContext.Provider>
|
|
666
|
+
* );
|
|
667
|
+
* }
|
|
668
|
+
*
|
|
669
|
+
* // 3. 在子组件中使用
|
|
670
|
+
* function MyGrid() {
|
|
671
|
+
* const {
|
|
672
|
+
* columnSchemes,
|
|
673
|
+
* saveColumnScheme,
|
|
674
|
+
* setCurrentColumnScheme
|
|
675
|
+
* } = useGridSchemes();
|
|
676
|
+
*
|
|
677
|
+
* const gridId = 'my-grid';
|
|
678
|
+
* const schemes = columnSchemes?.[gridId] || [];
|
|
679
|
+
*
|
|
680
|
+
* const handleSave = async () => {
|
|
681
|
+
* await saveColumnScheme?.(gridId, newScheme);
|
|
682
|
+
* };
|
|
683
|
+
* }
|
|
684
|
+
* ```
|
|
685
685
|
*/
|
|
686
686
|
export function useGridSchemes() {
|
|
687
687
|
var context = useContext(GridPlusContext);
|
|
@@ -12,18 +12,18 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
|
|
|
12
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
13
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
14
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
|
-
/**
|
|
16
|
-
* AG-Grid Plus 错误边界组件
|
|
17
|
-
* 用于捕获 React 渲染错误并提供友好的错误提示
|
|
15
|
+
/**
|
|
16
|
+
* AG-Grid Plus 错误边界组件
|
|
17
|
+
* 用于捕获 React 渲染错误并提供友好的错误提示
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
import React, { Component } from 'react';
|
|
21
21
|
import { Result, Button } from 'antd';
|
|
22
22
|
import { GridPlusError, ErrorType, ErrorSeverity } from "./types";
|
|
23
23
|
import { logger } from "../utils/logger";
|
|
24
|
-
/**
|
|
25
|
-
* Grid Plus 错误边界组件
|
|
26
|
-
* 捕获子组件树中的 JavaScript 错误,记录错误并展示降级 UI
|
|
24
|
+
/**
|
|
25
|
+
* Grid Plus 错误边界组件
|
|
26
|
+
* 捕获子组件树中的 JavaScript 错误,记录错误并展示降级 UI
|
|
27
27
|
*/
|
|
28
28
|
export var ErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
29
29
|
_inherits(ErrorBoundary, _Component);
|
|
@@ -32,8 +32,8 @@ export var ErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
|
32
32
|
var _this;
|
|
33
33
|
_classCallCheck(this, ErrorBoundary);
|
|
34
34
|
_this = _super.call(this, props);
|
|
35
|
-
/**
|
|
36
|
-
* 重置错误状态,重新渲染组件
|
|
35
|
+
/**
|
|
36
|
+
* 重置错误状态,重新渲染组件
|
|
37
37
|
*/
|
|
38
38
|
_defineProperty(_assertThisInitialized(_this), "handleRetry", function () {
|
|
39
39
|
_this.setState({
|