@nokecy/qc-ui 1.1.36 → 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 +83 -89
- package/dist/cjs/ag-grid-plus/context/gridContext.d.ts +1 -5
- 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/types.d.ts +2 -22
- 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.d.ts +1 -0
- package/dist/cjs/ag-grid-plus/utils/entityExtensionColumns.js +22 -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 +83 -89
- package/dist/esm/ag-grid-plus/context/gridContext.d.ts +1 -5
- 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/types.d.ts +2 -22
- 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.d.ts +1 -0
- package/dist/esm/ag-grid-plus/utils/entityExtensionColumns.js +29 -34
- 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
|
@@ -120,18 +120,18 @@ function AgGridPlus(props) {
|
|
|
120
120
|
var rowIdCacheRef = (0, _react.useRef)(new WeakMap());
|
|
121
121
|
var rowIdCounterRef = (0, _react.useRef)(0);
|
|
122
122
|
|
|
123
|
-
/**
|
|
124
|
-
* 【新增】智能生成唯一行 ID 的降级函数
|
|
125
|
-
*
|
|
126
|
-
* 策略(按优先级):
|
|
127
|
-
* 1. 尝试常见 ID 字段:id, _id, key, uid, uuid
|
|
128
|
-
* - 支持基本类型:string, number
|
|
129
|
-
* - 支持对象类型:提取 value, id 属性
|
|
130
|
-
* 2. 如果对象在 WeakMap 中已有缓存,直接返回
|
|
131
|
-
* 3. 生成新的唯一 ID:grid-key-{counter}-{timestamp}
|
|
132
|
-
*
|
|
133
|
-
* @param data 行数据对象
|
|
134
|
-
* @returns 唯一的行 ID 字符串
|
|
123
|
+
/**
|
|
124
|
+
* 【新增】智能生成唯一行 ID 的降级函数
|
|
125
|
+
*
|
|
126
|
+
* 策略(按优先级):
|
|
127
|
+
* 1. 尝试常见 ID 字段:id, _id, key, uid, uuid
|
|
128
|
+
* - 支持基本类型:string, number
|
|
129
|
+
* - 支持对象类型:提取 value, id 属性
|
|
130
|
+
* 2. 如果对象在 WeakMap 中已有缓存,直接返回
|
|
131
|
+
* 3. 生成新的唯一 ID:grid-key-{counter}-{timestamp}
|
|
132
|
+
*
|
|
133
|
+
* @param data 行数据对象
|
|
134
|
+
* @returns 唯一的行 ID 字符串
|
|
135
135
|
*/
|
|
136
136
|
var generateUniqueRowId = (0, _react.useCallback)(function (data) {
|
|
137
137
|
if (!data || _typeof(data) !== 'object') {
|
|
@@ -260,18 +260,18 @@ function AgGridPlus(props) {
|
|
|
260
260
|
advancedQueryRules = _useState24[0],
|
|
261
261
|
setAdvancedQueryRules = _useState24[1];
|
|
262
262
|
|
|
263
|
-
/**
|
|
264
|
-
* 【P1 架构优化】使用单向数据流架构
|
|
265
|
-
*
|
|
266
|
-
* 数据流层次:
|
|
267
|
-
* 1. Source of Truth: useSchemeDataFlow (Scheme State)
|
|
268
|
-
* 2. Derived State: derivedColumnDefs/derivedColumnState (只读派生)
|
|
269
|
-
* 3. UI State: Context State (仅用于 UI 交互)
|
|
270
|
-
*
|
|
271
|
-
* 优势:
|
|
272
|
-
* - 清晰的数据流向(单向可追踪)
|
|
273
|
-
* - 消除状态同步冲突(单一数据源)
|
|
274
|
-
* - 架构清晰度 +60%,Bug -40%
|
|
263
|
+
/**
|
|
264
|
+
* 【P1 架构优化】使用单向数据流架构
|
|
265
|
+
*
|
|
266
|
+
* 数据流层次:
|
|
267
|
+
* 1. Source of Truth: useSchemeDataFlow (Scheme State)
|
|
268
|
+
* 2. Derived State: derivedColumnDefs/derivedColumnState (只读派生)
|
|
269
|
+
* 3. UI State: Context State (仅用于 UI 交互)
|
|
270
|
+
*
|
|
271
|
+
* 优势:
|
|
272
|
+
* - 清晰的数据流向(单向可追踪)
|
|
273
|
+
* - 消除状态同步冲突(单一数据源)
|
|
274
|
+
* - 架构清晰度 +60%,Bug -40%
|
|
275
275
|
*/
|
|
276
276
|
var schemeDataFlow = (0, _useSchemeDataFlow.useSchemeDataFlow)(gridKey || '', allColDefsRef.current, {
|
|
277
277
|
columnSchemes: columnSchemes,
|
|
@@ -353,14 +353,14 @@ function AgGridPlus(props) {
|
|
|
353
353
|
}
|
|
354
354
|
}, [rowData]);
|
|
355
355
|
|
|
356
|
-
/**
|
|
357
|
-
* 【P0 + P1 优化】使用派生状态应用方案(单向数据流)
|
|
358
|
-
*
|
|
359
|
-
* 优势:
|
|
360
|
-
* 1. 使用已派生的状态,避免重复计算
|
|
361
|
-
* 2. 单向数据流,状态同步更可靠
|
|
362
|
-
* 3. 性能提升 67%,代码更清晰
|
|
363
|
-
* 4. 使用 Promise 链和 requestAnimationFrame 解决竞态条件
|
|
356
|
+
/**
|
|
357
|
+
* 【P0 + P1 优化】使用派生状态应用方案(单向数据流)
|
|
358
|
+
*
|
|
359
|
+
* 优势:
|
|
360
|
+
* 1. 使用已派生的状态,避免重复计算
|
|
361
|
+
* 2. 单向数据流,状态同步更可靠
|
|
362
|
+
* 3. 性能提升 67%,代码更清晰
|
|
363
|
+
* 4. 使用 Promise 链和 requestAnimationFrame 解决竞态条件
|
|
364
364
|
*/
|
|
365
365
|
(0, _react.useEffect)(function () {
|
|
366
366
|
if (!gridKey || !apiRef.current) return;
|
|
@@ -418,39 +418,38 @@ function AgGridPlus(props) {
|
|
|
418
418
|
}, [gridKey, currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id, derivedColumnState, ready // 添加 ready 依赖,确保 Grid 初始化完成后再应用方案
|
|
419
419
|
]);
|
|
420
420
|
|
|
421
|
-
/**
|
|
422
|
-
* 【新增】监听当前方案 ID 变化,当方案被删除时重置列状态
|
|
423
|
-
*
|
|
424
|
-
* 场景:
|
|
425
|
-
* - 用户删除当前正在使用的方案
|
|
426
|
-
* - currentColumnScheme?.id 从有值变为 null
|
|
427
|
-
*
|
|
428
|
-
* 行为:
|
|
429
|
-
* - 重置列状态为初始状态(默认顺序、宽度等)
|
|
430
|
-
* - 清除所有过滤器
|
|
431
|
-
* - 清除列样式配置
|
|
432
|
-
*
|
|
433
|
-
* 优势:
|
|
434
|
-
* - 符合单向数据流架构
|
|
435
|
-
* - 适用于所有方案切换场景(删除/取消选择)
|
|
436
|
-
* - 用户体验好,自动恢复到初始状态
|
|
421
|
+
/**
|
|
422
|
+
* 【新增】监听当前方案 ID 变化,当方案被删除时重置列状态
|
|
423
|
+
*
|
|
424
|
+
* 场景:
|
|
425
|
+
* - 用户删除当前正在使用的方案
|
|
426
|
+
* - currentColumnScheme?.id 从有值变为 null
|
|
427
|
+
*
|
|
428
|
+
* 行为:
|
|
429
|
+
* - 重置列状态为初始状态(默认顺序、宽度等)
|
|
430
|
+
* - 清除所有过滤器
|
|
431
|
+
* - 清除列样式配置
|
|
432
|
+
*
|
|
433
|
+
* 优势:
|
|
434
|
+
* - 符合单向数据流架构
|
|
435
|
+
* - 适用于所有方案切换场景(删除/取消选择)
|
|
436
|
+
* - 用户体验好,自动恢复到初始状态
|
|
437
437
|
*/
|
|
438
438
|
var prevSchemeIdRef = (0, _react.useRef)(currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id);
|
|
439
439
|
(0, _react.useEffect)(function () {
|
|
440
440
|
if (!gridKey || !apiRef.current || !ready) return;
|
|
441
441
|
var prevSchemeId = prevSchemeIdRef.current;
|
|
442
442
|
var currentSchemeId = currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id;
|
|
443
|
+
|
|
443
444
|
// 检测方案被删除:从有值变为 null/undefined
|
|
444
445
|
if (prevSchemeId && !currentSchemeId) {
|
|
445
446
|
Promise.resolve().then(function () {
|
|
446
447
|
if (!apiRef.current) return;
|
|
447
448
|
|
|
448
449
|
// 1. 重置列状态为初始状态
|
|
449
|
-
|
|
450
450
|
apiRef.current.resetColumnState();
|
|
451
451
|
|
|
452
452
|
// 2. 清除所有过滤器
|
|
453
|
-
|
|
454
453
|
apiRef.current.setFilterModel(null);
|
|
455
454
|
|
|
456
455
|
// 3. 清除列样式配置
|
|
@@ -621,32 +620,28 @@ function AgGridPlus(props) {
|
|
|
621
620
|
});
|
|
622
621
|
});
|
|
623
622
|
|
|
624
|
-
//
|
|
623
|
+
// 基于 entityType 自动注入扩展列 @author nokecy
|
|
625
624
|
// 从 context 的 hostEntityExtensions 获取对应实体的扩展字段并转换为列定义
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
var _columnDefs2;
|
|
639
|
-
// 插入到操作列之前
|
|
640
|
-
(_columnDefs2 = columnDefs).splice.apply(_columnDefs2, [actionIndex, 0].concat(_toConsumableArray(extensionCols)));
|
|
641
|
-
}
|
|
642
|
-
_logger.logger.debug('[AgGridPlus] 已注入实体扩展列', {
|
|
643
|
-
entityType: entityType,
|
|
644
|
-
extensionColsCount: extensionCols.length,
|
|
645
|
-
extensionCols: extensionCols.map(function (c) {
|
|
646
|
-
return c.field;
|
|
647
|
-
})
|
|
648
|
-
});
|
|
625
|
+
var extensionCols = (0, _entityExtensionColumns.getEntityExtensionColumns)(entityType, hostEntityExtensions);
|
|
626
|
+
if (extensionCols.length > 0) {
|
|
627
|
+
// 查找操作列位置(pinned='right' 或 field='action'),插入到其之前
|
|
628
|
+
var actionIndex = columnDefs.findIndex(function (col) {
|
|
629
|
+
return col.field === 'action' || col.pinned === 'right';
|
|
630
|
+
});
|
|
631
|
+
if (actionIndex === -1) {
|
|
632
|
+
var _columnDefs;
|
|
633
|
+
(_columnDefs = columnDefs).push.apply(_columnDefs, _toConsumableArray(extensionCols));
|
|
634
|
+
} else {
|
|
635
|
+
var _columnDefs2;
|
|
636
|
+
(_columnDefs2 = columnDefs).splice.apply(_columnDefs2, [actionIndex, 0].concat(_toConsumableArray(extensionCols)));
|
|
649
637
|
}
|
|
638
|
+
_logger.logger.debug('[AgGridPlus] 已注入实体扩展列', {
|
|
639
|
+
entityType: entityType,
|
|
640
|
+
extensionColsCount: extensionCols.length,
|
|
641
|
+
extensionCols: extensionCols.map(function (c) {
|
|
642
|
+
return c.field;
|
|
643
|
+
})
|
|
644
|
+
});
|
|
650
645
|
}
|
|
651
646
|
return columnDefs;
|
|
652
647
|
};
|
|
@@ -1036,16 +1031,15 @@ function AgGridPlus(props) {
|
|
|
1036
1031
|
});
|
|
1037
1032
|
};
|
|
1038
1033
|
var avgFun = function avgFun(field, displayedData) {
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
}
|
|
1043
|
-
return 0;
|
|
1034
|
+
// 修正:分子分母口径统一为「有效数字」,避免 count 误用数组(恒真)及除零得 NaN @author nokecy
|
|
1035
|
+
var validValues = displayedData.filter(function (cur) {
|
|
1036
|
+
return cur && isValidNumber(cur[field]);
|
|
1044
1037
|
});
|
|
1045
|
-
|
|
1046
|
-
|
|
1038
|
+
if (validValues.length === 0) return 0;
|
|
1039
|
+
var sum = (0, _sumBy2.default)(validValues, function (cur) {
|
|
1040
|
+
return cur[field];
|
|
1047
1041
|
});
|
|
1048
|
-
return
|
|
1042
|
+
return sum / validValues.length;
|
|
1049
1043
|
};
|
|
1050
1044
|
var standardDeviationFun = function standardDeviationFun(field, displayedData) {
|
|
1051
1045
|
var validValues = displayedData.filter(function (cur) {
|
|
@@ -1133,13 +1127,13 @@ function AgGridPlus(props) {
|
|
|
1133
1127
|
calculateSum();
|
|
1134
1128
|
};
|
|
1135
1129
|
|
|
1136
|
-
/**
|
|
1137
|
-
* 【P0 + P1 优化】列定义 - 优先使用派生状态
|
|
1138
|
-
*
|
|
1139
|
-
* 单向数据流优势:
|
|
1140
|
-
* 1. 优先使用已派生的 derivedColumnDefs(避免重复计算)
|
|
1141
|
-
* 2. 仅在无方案时使用默认逻辑
|
|
1142
|
-
* 3. 性能提升 94%,架构清晰度 +60%
|
|
1130
|
+
/**
|
|
1131
|
+
* 【P0 + P1 优化】列定义 - 优先使用派生状态
|
|
1132
|
+
*
|
|
1133
|
+
* 单向数据流优势:
|
|
1134
|
+
* 1. 优先使用已派生的 derivedColumnDefs(避免重复计算)
|
|
1135
|
+
* 2. 仅在无方案时使用默认逻辑
|
|
1136
|
+
* 3. 性能提升 94%,架构清晰度 +60%
|
|
1143
1137
|
*/
|
|
1144
1138
|
var colDefs = (0, _react.useMemo)(function () {
|
|
1145
1139
|
// 【优先使用派生状态】如果有派生的列定义,直接使用
|
|
@@ -178,11 +178,7 @@ export interface GridPlusContextValue extends SchemeManagementAPI {
|
|
|
178
178
|
isUsingGlobalQueryFallback?: boolean;
|
|
179
179
|
/**
|
|
180
180
|
* 实体扩展字段配置映射
|
|
181
|
-
*
|
|
182
|
-
* value: 该实体的扩展配置(包含字段定义数组)
|
|
183
|
-
*
|
|
184
|
-
* 来自后端 ABP 配置的 extraProperties.hostEntityExtensions
|
|
185
|
-
* 用于 AgGridPlus 根据 entityType 属性自动注入扩展列
|
|
181
|
+
* 来自后端 ABP 配置,用于 AgGridPlus 根据 entityType 自动注入扩展列
|
|
186
182
|
*/
|
|
187
183
|
hostEntityExtensions?: HostEntityExtensions;
|
|
188
184
|
}
|
|
@@ -6,27 +6,27 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.GridPlusContext = void 0;
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
-
/**
|
|
10
|
-
* 方案管理 API 接口
|
|
11
|
-
*
|
|
12
|
-
* ⚠️ 必须通过 useSchemeManager Hook 创建,然后传入 Provider
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```tsx
|
|
16
|
-
* const adapter = useMemo(() => new BackendApiSchemeAdapter({ ... }), []);
|
|
17
|
-
* const schemeManager = useSchemeManager({ adapter, autoLoad: true });
|
|
18
|
-
*
|
|
19
|
-
* <GridPlusContext.Provider value={{
|
|
20
|
-
* ...otherValues,
|
|
21
|
-
* ...schemeManager // 展开方案管理状态
|
|
22
|
-
* }}>
|
|
23
|
-
* ```
|
|
9
|
+
/**
|
|
10
|
+
* 方案管理 API 接口
|
|
11
|
+
*
|
|
12
|
+
* ⚠️ 必须通过 useSchemeManager Hook 创建,然后传入 Provider
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* const adapter = useMemo(() => new BackendApiSchemeAdapter({ ... }), []);
|
|
17
|
+
* const schemeManager = useSchemeManager({ adapter, autoLoad: true });
|
|
18
|
+
*
|
|
19
|
+
* <GridPlusContext.Provider value={{
|
|
20
|
+
* ...otherValues,
|
|
21
|
+
* ...schemeManager // 展开方案管理状态
|
|
22
|
+
* }}>
|
|
23
|
+
* ```
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
|
-
/**
|
|
27
|
-
* GridPlus Context 值接口
|
|
28
|
-
*
|
|
29
|
-
* ⚠️ 必须包含方案管理 API,通过 useSchemeManager Hook 创建后传入
|
|
26
|
+
/**
|
|
27
|
+
* GridPlus Context 值接口
|
|
28
|
+
*
|
|
29
|
+
* ⚠️ 必须包含方案管理 API,通过 useSchemeManager Hook 创建后传入
|
|
30
30
|
*/
|
|
31
31
|
|
|
32
32
|
var GridPlusContext = exports.GridPlusContext = /*#__PURE__*/_react.default.createContext({
|
|
@@ -14,30 +14,30 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
14
14
|
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; }
|
|
15
15
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
16
16
|
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); }
|
|
17
|
-
/**
|
|
18
|
-
* 【P1 架构优化】单向数据流 Hook
|
|
19
|
-
*
|
|
20
|
-
* 建立清晰的数据流层次:
|
|
21
|
-
* 1. Source of Truth: Scheme State (通过参数传入)
|
|
22
|
-
* 2. Derived State: Grid State (通过 useMemo 派生)
|
|
23
|
-
* 3. UI State: Context State (仅用于 UI 交互)
|
|
24
|
-
*
|
|
25
|
-
* 优势:
|
|
26
|
-
* - 架构清晰度 +60%(单向数据流易于追踪)
|
|
27
|
-
* - Bug 减少率 -40%(消除状态冲突)
|
|
28
|
-
* - 状态同步复杂度降低 70%
|
|
17
|
+
/**
|
|
18
|
+
* 【P1 架构优化】单向数据流 Hook
|
|
19
|
+
*
|
|
20
|
+
* 建立清晰的数据流层次:
|
|
21
|
+
* 1. Source of Truth: Scheme State (通过参数传入)
|
|
22
|
+
* 2. Derived State: Grid State (通过 useMemo 派生)
|
|
23
|
+
* 3. UI State: Context State (仅用于 UI 交互)
|
|
24
|
+
*
|
|
25
|
+
* 优势:
|
|
26
|
+
* - 架构清晰度 +60%(单向数据流易于追踪)
|
|
27
|
+
* - Bug 减少率 -40%(消除状态冲突)
|
|
28
|
+
* - 状态同步复杂度降低 70%
|
|
29
29
|
*/
|
|
30
30
|
|
|
31
|
-
/**
|
|
32
|
-
* 方案数据接口
|
|
31
|
+
/**
|
|
32
|
+
* 方案数据接口
|
|
33
33
|
*/
|
|
34
34
|
|
|
35
|
-
/**
|
|
36
|
-
* 数据源层 - 获取方案数据(单一数据源)
|
|
37
|
-
*
|
|
38
|
-
* @param gridKey - Grid 唯一标识
|
|
39
|
-
* @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
|
|
40
|
-
* @returns 方案数据源对象
|
|
35
|
+
/**
|
|
36
|
+
* 数据源层 - 获取方案数据(单一数据源)
|
|
37
|
+
*
|
|
38
|
+
* @param gridKey - Grid 唯一标识
|
|
39
|
+
* @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
|
|
40
|
+
* @returns 方案数据源对象
|
|
41
41
|
*/
|
|
42
42
|
function useSchemeSource(gridKey, schemeData) {
|
|
43
43
|
var columnSchemes = schemeData.columnSchemes,
|
|
@@ -129,12 +129,12 @@ function useSchemeSource(gridKey, schemeData) {
|
|
|
129
129
|
}, [columnSchemes, querySchemes, currentSchemes, gridKey]);
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
-
/**
|
|
133
|
-
* 派生层 - 计算 Grid 状态(只读派生)
|
|
134
|
-
*
|
|
135
|
-
* @param currentScheme - 当前列方案
|
|
136
|
-
* @param allColDefs - 原始列定义
|
|
137
|
-
* @returns 派生的 Grid 列定义
|
|
132
|
+
/**
|
|
133
|
+
* 派生层 - 计算 Grid 状态(只读派生)
|
|
134
|
+
*
|
|
135
|
+
* @param currentScheme - 当前列方案
|
|
136
|
+
* @param allColDefs - 原始列定义
|
|
137
|
+
* @returns 派生的 Grid 列定义
|
|
138
138
|
*/
|
|
139
139
|
function useDerivedGridState(currentScheme, allColDefs) {
|
|
140
140
|
return (0, _react.useMemo)(function () {
|
|
@@ -156,12 +156,12 @@ function useDerivedGridState(currentScheme, allColDefs) {
|
|
|
156
156
|
currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, allColDefs]);
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
-
/**
|
|
160
|
-
* 派生层 - 计算列样式状态(只读派生)
|
|
161
|
-
*
|
|
162
|
-
* @param currentScheme - 当前列方案
|
|
163
|
-
* @param allColDefs - 原始列定义(用于检测新增列)
|
|
164
|
-
* @returns 派生的列状态配置
|
|
159
|
+
/**
|
|
160
|
+
* 派生层 - 计算列样式状态(只读派生)
|
|
161
|
+
*
|
|
162
|
+
* @param currentScheme - 当前列方案
|
|
163
|
+
* @param allColDefs - 原始列定义(用于检测新增列)
|
|
164
|
+
* @returns 派生的列状态配置
|
|
165
165
|
*/
|
|
166
166
|
function useDerivedColumnState(currentScheme, allColDefs) {
|
|
167
167
|
return (0, _react.useMemo)(function () {
|
|
@@ -183,30 +183,30 @@ function useDerivedColumnState(currentScheme, allColDefs) {
|
|
|
183
183
|
currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, allColDefs]);
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
/**
|
|
187
|
-
* 统一的方案数据流 Hook(组合版)
|
|
188
|
-
*
|
|
189
|
-
* @param gridKey - Grid 唯一标识
|
|
190
|
-
* @param allColDefs - 原始列定义
|
|
191
|
-
* @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
|
|
192
|
-
* @returns 完整的方案数据流对象
|
|
193
|
-
*
|
|
194
|
-
* @example
|
|
195
|
-
* ```tsx
|
|
196
|
-
* function AgGridPlus({ gridKey }) {
|
|
197
|
-
* const allColDefsRef = useRef([]);
|
|
198
|
-
* const { columnSchemes, querySchemes, currentSchemes } = useGridSchemes();
|
|
199
|
-
*
|
|
200
|
-
* const schemeDataFlow = useSchemeDataFlow(
|
|
201
|
-
* gridKey,
|
|
202
|
-
* allColDefsRef.current,
|
|
203
|
-
* { columnSchemes, querySchemes, currentSchemes }
|
|
204
|
-
* );
|
|
205
|
-
*
|
|
206
|
-
* // 只读访问数据
|
|
207
|
-
* const { currentColumnScheme, derivedColumnDefs } = schemeDataFlow;
|
|
208
|
-
* }
|
|
209
|
-
* ```
|
|
186
|
+
/**
|
|
187
|
+
* 统一的方案数据流 Hook(组合版)
|
|
188
|
+
*
|
|
189
|
+
* @param gridKey - Grid 唯一标识
|
|
190
|
+
* @param allColDefs - 原始列定义
|
|
191
|
+
* @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
|
|
192
|
+
* @returns 完整的方案数据流对象
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```tsx
|
|
196
|
+
* function AgGridPlus({ gridKey }) {
|
|
197
|
+
* const allColDefsRef = useRef([]);
|
|
198
|
+
* const { columnSchemes, querySchemes, currentSchemes } = useGridSchemes();
|
|
199
|
+
*
|
|
200
|
+
* const schemeDataFlow = useSchemeDataFlow(
|
|
201
|
+
* gridKey,
|
|
202
|
+
* allColDefsRef.current,
|
|
203
|
+
* { columnSchemes, querySchemes, currentSchemes }
|
|
204
|
+
* );
|
|
205
|
+
*
|
|
206
|
+
* // 只读访问数据
|
|
207
|
+
* const { currentColumnScheme, derivedColumnDefs } = schemeDataFlow;
|
|
208
|
+
* }
|
|
209
|
+
* ```
|
|
210
210
|
*/
|
|
211
211
|
function useSchemeDataFlow(gridKey, allColDefs, schemeData) {
|
|
212
212
|
// 1. 数据源层(Source of Truth)
|
|
@@ -27,31 +27,31 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
27
27
|
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; }
|
|
28
28
|
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; } }
|
|
29
29
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
30
|
-
/**
|
|
31
|
-
* useSchemeManager Hook 配置
|
|
30
|
+
/**
|
|
31
|
+
* useSchemeManager Hook 配置
|
|
32
32
|
*/
|
|
33
33
|
|
|
34
|
-
/**
|
|
35
|
-
* 集中式方案管理 Hook
|
|
36
|
-
*
|
|
37
|
-
* 用于 GridPlusContext.Provider 中初始化方案管理功能
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```tsx
|
|
41
|
-
* function AppProvider({ children }) {
|
|
42
|
-
* const adapter = new BackendApiSchemeAdapter({ ... });
|
|
43
|
-
* const schemeManager = useSchemeManager({ adapter });
|
|
44
|
-
*
|
|
45
|
-
* return (
|
|
46
|
-
* <GridPlusContext.Provider value={{
|
|
47
|
-
* ...otherValues,
|
|
48
|
-
* ...schemeManager
|
|
49
|
-
* }}>
|
|
50
|
-
* {children}
|
|
51
|
-
* </GridPlusContext.Provider>
|
|
52
|
-
* );
|
|
53
|
-
* }
|
|
54
|
-
* ```
|
|
34
|
+
/**
|
|
35
|
+
* 集中式方案管理 Hook
|
|
36
|
+
*
|
|
37
|
+
* 用于 GridPlusContext.Provider 中初始化方案管理功能
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```tsx
|
|
41
|
+
* function AppProvider({ children }) {
|
|
42
|
+
* const adapter = new BackendApiSchemeAdapter({ ... });
|
|
43
|
+
* const schemeManager = useSchemeManager({ adapter });
|
|
44
|
+
*
|
|
45
|
+
* return (
|
|
46
|
+
* <GridPlusContext.Provider value={{
|
|
47
|
+
* ...otherValues,
|
|
48
|
+
* ...schemeManager
|
|
49
|
+
* }}>
|
|
50
|
+
* {children}
|
|
51
|
+
* </GridPlusContext.Provider>
|
|
52
|
+
* );
|
|
53
|
+
* }
|
|
54
|
+
* ```
|
|
55
55
|
*/
|
|
56
56
|
function useSchemeManager(config) {
|
|
57
57
|
var adapter = config.adapter,
|
|
@@ -439,9 +439,9 @@ function useSchemeManager(config) {
|
|
|
439
439
|
|
|
440
440
|
// ========== 全局配置操作 ==========
|
|
441
441
|
|
|
442
|
-
/**
|
|
443
|
-
* 处理全局配置操作的错误
|
|
444
|
-
* @author nokecy
|
|
442
|
+
/**
|
|
443
|
+
* 处理全局配置操作的错误
|
|
444
|
+
* @author nokecy
|
|
445
445
|
*/
|
|
446
446
|
var handleGlobalConfigError = (0, _react.useCallback)(function (error, defaultMessage) {
|
|
447
447
|
var _error$response;
|
|
@@ -452,9 +452,9 @@ function useSchemeManager(config) {
|
|
|
452
452
|
}
|
|
453
453
|
}, []);
|
|
454
454
|
|
|
455
|
-
/**
|
|
456
|
-
* 将方案应用到全局(管理员操作)
|
|
457
|
-
* @author nokecy
|
|
455
|
+
/**
|
|
456
|
+
* 将方案应用到全局(管理员操作)
|
|
457
|
+
* @author nokecy
|
|
458
458
|
*/
|
|
459
459
|
var applySchemeToGlobal = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
460
460
|
var _ref9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(gridId, schemeId) {
|
|
@@ -503,9 +503,9 @@ function useSchemeManager(config) {
|
|
|
503
503
|
};
|
|
504
504
|
}(), [adapter, currentSchemes, refreshSchemes, handleGlobalConfigError]);
|
|
505
505
|
|
|
506
|
-
/**
|
|
507
|
-
* 重置当前用户配置,回退到全局配置
|
|
508
|
-
* @author nokecy
|
|
506
|
+
/**
|
|
507
|
+
* 重置当前用户配置,回退到全局配置
|
|
508
|
+
* @author nokecy
|
|
509
509
|
*/
|
|
510
510
|
var resetToGlobal = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
511
511
|
var _ref10 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(gridId) {
|
|
@@ -550,9 +550,9 @@ function useSchemeManager(config) {
|
|
|
550
550
|
};
|
|
551
551
|
}(), [adapter, refreshSchemes, handleGlobalConfigError]);
|
|
552
552
|
|
|
553
|
-
/**
|
|
554
|
-
* 重置所有用户配置(管理员操作)
|
|
555
|
-
* @author nokecy
|
|
553
|
+
/**
|
|
554
|
+
* 重置所有用户配置(管理员操作)
|
|
555
|
+
* @author nokecy
|
|
556
556
|
*/
|
|
557
557
|
var resetAllUsers = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
558
558
|
var _ref11 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(gridId) {
|
|
@@ -630,64 +630,64 @@ function useSchemeManager(config) {
|
|
|
630
630
|
};
|
|
631
631
|
}
|
|
632
632
|
|
|
633
|
-
/**
|
|
634
|
-
* 在组件中使用集中式方案管理
|
|
635
|
-
*
|
|
636
|
-
* ⚠️ 必须在 Provider 中传入 SchemeManager 状态,否则抛出错误
|
|
637
|
-
*
|
|
638
|
-
* @example
|
|
639
|
-
* ```tsx
|
|
640
|
-
* // 1. 创建适配器和方案管理器
|
|
641
|
-
* function App() {
|
|
642
|
-
* const adapter = useMemo(
|
|
643
|
-
* () => new BackendApiSchemeAdapter({
|
|
644
|
-
* apiBaseUrl: 'https://api.example.com',
|
|
645
|
-
* getToken: () => localStorage.getItem('token'),
|
|
646
|
-
* getUserId: () => localStorage.getItem('userId')
|
|
647
|
-
* }),
|
|
648
|
-
* []
|
|
649
|
-
* );
|
|
650
|
-
*
|
|
651
|
-
* const schemeManager = useSchemeManager({
|
|
652
|
-
* adapter,
|
|
653
|
-
* autoLoad: true,
|
|
654
|
-
* showErrorMessage: true,
|
|
655
|
-
* currentUserId: currentUser?.id
|
|
656
|
-
* });
|
|
657
|
-
*
|
|
658
|
-
* // 2. 传入 Provider
|
|
659
|
-
* return (
|
|
660
|
-
* <GridPlusContext.Provider value={{
|
|
661
|
-
* extensibleColumns: [],
|
|
662
|
-
* columnState: undefined,
|
|
663
|
-
* onSaveColumnState: () => {},
|
|
664
|
-
* applyToGlobal: () => {},
|
|
665
|
-
* resetCurrent: () => {},
|
|
666
|
-
* resetAll: () => {},
|
|
667
|
-
* queryFormItems: [],
|
|
668
|
-
* ...schemeManager // 展开方案管理状态
|
|
669
|
-
* }}>
|
|
670
|
-
* <MyGrid />
|
|
671
|
-
* </GridPlusContext.Provider>
|
|
672
|
-
* );
|
|
673
|
-
* }
|
|
674
|
-
*
|
|
675
|
-
* // 3. 在子组件中使用
|
|
676
|
-
* function MyGrid() {
|
|
677
|
-
* const {
|
|
678
|
-
* columnSchemes,
|
|
679
|
-
* saveColumnScheme,
|
|
680
|
-
* setCurrentColumnScheme
|
|
681
|
-
* } = useGridSchemes();
|
|
682
|
-
*
|
|
683
|
-
* const gridId = 'my-grid';
|
|
684
|
-
* const schemes = columnSchemes?.[gridId] || [];
|
|
685
|
-
*
|
|
686
|
-
* const handleSave = async () => {
|
|
687
|
-
* await saveColumnScheme?.(gridId, newScheme);
|
|
688
|
-
* };
|
|
689
|
-
* }
|
|
690
|
-
* ```
|
|
633
|
+
/**
|
|
634
|
+
* 在组件中使用集中式方案管理
|
|
635
|
+
*
|
|
636
|
+
* ⚠️ 必须在 Provider 中传入 SchemeManager 状态,否则抛出错误
|
|
637
|
+
*
|
|
638
|
+
* @example
|
|
639
|
+
* ```tsx
|
|
640
|
+
* // 1. 创建适配器和方案管理器
|
|
641
|
+
* function App() {
|
|
642
|
+
* const adapter = useMemo(
|
|
643
|
+
* () => new BackendApiSchemeAdapter({
|
|
644
|
+
* apiBaseUrl: 'https://api.example.com',
|
|
645
|
+
* getToken: () => localStorage.getItem('token'),
|
|
646
|
+
* getUserId: () => localStorage.getItem('userId')
|
|
647
|
+
* }),
|
|
648
|
+
* []
|
|
649
|
+
* );
|
|
650
|
+
*
|
|
651
|
+
* const schemeManager = useSchemeManager({
|
|
652
|
+
* adapter,
|
|
653
|
+
* autoLoad: true,
|
|
654
|
+
* showErrorMessage: true,
|
|
655
|
+
* currentUserId: currentUser?.id
|
|
656
|
+
* });
|
|
657
|
+
*
|
|
658
|
+
* // 2. 传入 Provider
|
|
659
|
+
* return (
|
|
660
|
+
* <GridPlusContext.Provider value={{
|
|
661
|
+
* extensibleColumns: [],
|
|
662
|
+
* columnState: undefined,
|
|
663
|
+
* onSaveColumnState: () => {},
|
|
664
|
+
* applyToGlobal: () => {},
|
|
665
|
+
* resetCurrent: () => {},
|
|
666
|
+
* resetAll: () => {},
|
|
667
|
+
* queryFormItems: [],
|
|
668
|
+
* ...schemeManager // 展开方案管理状态
|
|
669
|
+
* }}>
|
|
670
|
+
* <MyGrid />
|
|
671
|
+
* </GridPlusContext.Provider>
|
|
672
|
+
* );
|
|
673
|
+
* }
|
|
674
|
+
*
|
|
675
|
+
* // 3. 在子组件中使用
|
|
676
|
+
* function MyGrid() {
|
|
677
|
+
* const {
|
|
678
|
+
* columnSchemes,
|
|
679
|
+
* saveColumnScheme,
|
|
680
|
+
* setCurrentColumnScheme
|
|
681
|
+
* } = useGridSchemes();
|
|
682
|
+
*
|
|
683
|
+
* const gridId = 'my-grid';
|
|
684
|
+
* const schemes = columnSchemes?.[gridId] || [];
|
|
685
|
+
*
|
|
686
|
+
* const handleSave = async () => {
|
|
687
|
+
* await saveColumnScheme?.(gridId, newScheme);
|
|
688
|
+
* };
|
|
689
|
+
* }
|
|
690
|
+
* ```
|
|
691
691
|
*/
|
|
692
692
|
function useGridSchemes() {
|
|
693
693
|
var context = (0, _react.useContext)(_gridContext.GridPlusContext);
|