@nokecy/qc-ui 1.0.94 → 1.0.96
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/dist/cjs/ag-grid-plus/ag-gridPlus.js +252 -173
- package/dist/cjs/ag-grid-plus/context/gridContext.d.ts +108 -20
- package/dist/cjs/ag-grid-plus/context/gridContext.js +12 -4
- package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.d.ts +88 -0
- package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.js +173 -0
- package/dist/cjs/ag-grid-plus/context/useSchemeManager.d.ts +111 -0
- package/dist/cjs/ag-grid-plus/context/useSchemeManager.js +596 -0
- package/dist/cjs/ag-grid-plus/hooks/useAgGridCalculation.d.ts +1 -1
- package/dist/cjs/ag-grid-plus/hooks/useAgGridData.d.ts +2 -2
- package/dist/cjs/ag-grid-plus/index.d.ts +7 -2
- package/dist/cjs/ag-grid-plus/index.js +11 -93
- package/dist/cjs/ag-grid-plus/interface.d.ts +0 -31
- package/dist/cjs/ag-grid-plus/interface.js +3 -0
- package/dist/cjs/ag-grid-plus/setting/ColumnSetting.d.ts +0 -3
- package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +279 -145
- package/dist/cjs/ag-grid-plus/setting/QuerySchemeManager.d.ts +11 -0
- package/dist/cjs/ag-grid-plus/{querySchemes/components/QuerySchemesManager.js → setting/QuerySchemeManager.js} +193 -108
- package/dist/cjs/ag-grid-plus/setting/index.d.ts +2 -2
- package/dist/cjs/ag-grid-plus/setting/index.js +33 -48
- package/dist/cjs/ag-grid-plus/shared/storage/backendApiAdapter.d.ts +58 -0
- package/dist/cjs/ag-grid-plus/shared/storage/backendApiAdapter.js +446 -0
- package/dist/cjs/ag-grid-plus/shared/storage/localStorageAdapter.d.ts +57 -0
- package/dist/cjs/ag-grid-plus/{schemes → shared}/storage/localStorageAdapter.js +253 -271
- package/dist/cjs/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +132 -0
- package/dist/cjs/array-table/index.js +167 -45
- package/dist/cjs/index.d.ts +3 -3
- package/dist/cjs/index.js +14 -86
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +252 -173
- package/dist/esm/ag-grid-plus/context/gridContext.d.ts +108 -20
- package/dist/esm/ag-grid-plus/context/gridContext.js +13 -4
- package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.d.ts +88 -0
- package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +165 -0
- package/dist/esm/ag-grid-plus/context/useSchemeManager.d.ts +111 -0
- package/dist/esm/ag-grid-plus/context/useSchemeManager.js +590 -0
- package/dist/esm/ag-grid-plus/hooks/useAgGridCalculation.d.ts +1 -1
- package/dist/esm/ag-grid-plus/hooks/useAgGridData.d.ts +2 -2
- package/dist/esm/ag-grid-plus/index.d.ts +7 -2
- package/dist/esm/ag-grid-plus/index.js +9 -5
- package/dist/esm/ag-grid-plus/interface.d.ts +0 -31
- package/dist/esm/ag-grid-plus/interface.js +2 -0
- package/dist/esm/ag-grid-plus/setting/ColumnSetting.d.ts +0 -3
- package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +281 -147
- package/dist/esm/ag-grid-plus/setting/QuerySchemeManager.d.ts +11 -0
- package/dist/esm/ag-grid-plus/{querySchemes/components/QuerySchemesManager.js → setting/QuerySchemeManager.js} +192 -107
- package/dist/esm/ag-grid-plus/setting/index.d.ts +2 -2
- package/dist/esm/ag-grid-plus/setting/index.js +33 -48
- package/dist/esm/ag-grid-plus/shared/storage/backendApiAdapter.d.ts +58 -0
- package/dist/esm/ag-grid-plus/shared/storage/backendApiAdapter.js +444 -0
- package/dist/esm/ag-grid-plus/shared/storage/localStorageAdapter.d.ts +57 -0
- package/dist/esm/ag-grid-plus/{schemes → shared}/storage/localStorageAdapter.js +252 -271
- package/dist/esm/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +132 -0
- package/dist/esm/array-table/index.js +168 -46
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/index.js +11 -11
- package/dist/esm/standardFormDialog/useStandardFormSchema.d.ts +1 -1
- package/dist/umd/qc-ui.min.css +1 -1
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/ag-grid-plus/querySchemes/components/QuerySchemesManager.d.ts +0 -21
- package/dist/cjs/ag-grid-plus/querySchemes/components/QuerySchemesManager.less +0 -86
- package/dist/cjs/ag-grid-plus/querySchemes/components/index.d.ts +0 -5
- package/dist/cjs/ag-grid-plus/querySchemes/components/index.js +0 -12
- package/dist/cjs/ag-grid-plus/querySchemes/constants.d.ts +0 -17
- package/dist/cjs/ag-grid-plus/querySchemes/constants.js +0 -30
- package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQueryOrderManager.d.ts +0 -10
- package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQueryOrderManager.js +0 -65
- package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.d.ts +0 -6
- package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.js +0 -564
- package/dist/cjs/ag-grid-plus/querySchemes/index.d.ts +0 -11
- package/dist/cjs/ag-grid-plus/querySchemes/index.js +0 -113
- package/dist/cjs/ag-grid-plus/querySchemes/storage/localStorageAdapter.d.ts +0 -44
- package/dist/cjs/ag-grid-plus/querySchemes/storage/localStorageAdapter.js +0 -261
- package/dist/cjs/ag-grid-plus/querySchemes/types.d.ts +0 -145
- package/dist/cjs/ag-grid-plus/querySchemes/utils/validator.d.ts +0 -36
- package/dist/cjs/ag-grid-plus/querySchemes/utils/validator.js +0 -155
- package/dist/cjs/ag-grid-plus/schemes/components/SchemeManager.d.ts +0 -16
- package/dist/cjs/ag-grid-plus/schemes/components/SchemeManager.js +0 -342
- package/dist/cjs/ag-grid-plus/schemes/components/SchemeManager.less +0 -35
- package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.d.ts +0 -20
- package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.js +0 -289
- package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.less +0 -39
- package/dist/cjs/ag-grid-plus/schemes/components/index.d.ts +0 -4
- package/dist/cjs/ag-grid-plus/schemes/components/index.js +0 -19
- package/dist/cjs/ag-grid-plus/schemes/constants.d.ts +0 -23
- package/dist/cjs/ag-grid-plus/schemes/constants.js +0 -39
- package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.d.ts +0 -6
- package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.js +0 -617
- package/dist/cjs/ag-grid-plus/schemes/index.d.ts +0 -23
- package/dist/cjs/ag-grid-plus/schemes/index.js +0 -164
- package/dist/cjs/ag-grid-plus/schemes/storage/configMerger.d.ts +0 -10
- package/dist/cjs/ag-grid-plus/schemes/storage/configMerger.js +0 -34
- package/dist/cjs/ag-grid-plus/schemes/storage/localStorageAdapter.d.ts +0 -79
- package/dist/cjs/ag-grid-plus/schemes/storage/priorityStorageAdapter.d.ts +0 -122
- package/dist/cjs/ag-grid-plus/schemes/storage/priorityStorageAdapter.js +0 -476
- package/dist/cjs/ag-grid-plus/schemes/storage/remoteStorageAdapter.d.ts +0 -139
- package/dist/cjs/ag-grid-plus/schemes/storage/remoteStorageAdapter.js +0 -746
- package/dist/cjs/ag-grid-plus/schemes/storage/useRemoteStorage.d.ts +0 -29
- package/dist/cjs/ag-grid-plus/schemes/storage/useRemoteStorage.js +0 -45
- package/dist/cjs/ag-grid-plus/schemes/types.d.ts +0 -131
- package/dist/cjs/ag-grid-plus/schemes/types.js +0 -5
- package/dist/cjs/ag-grid-plus/schemes/utils/validator.d.ts +0 -27
- package/dist/cjs/ag-grid-plus/schemes/utils/validator.js +0 -109
- package/dist/cjs/ag-grid-plus/storage/index.d.ts +0 -13
- package/dist/cjs/ag-grid-plus/storage/index.js +0 -5
- package/dist/esm/ag-grid-plus/querySchemes/components/QuerySchemesManager.d.ts +0 -21
- package/dist/esm/ag-grid-plus/querySchemes/components/QuerySchemesManager.less +0 -86
- package/dist/esm/ag-grid-plus/querySchemes/components/index.d.ts +0 -5
- package/dist/esm/ag-grid-plus/querySchemes/components/index.js +0 -5
- package/dist/esm/ag-grid-plus/querySchemes/constants.d.ts +0 -17
- package/dist/esm/ag-grid-plus/querySchemes/constants.js +0 -24
- package/dist/esm/ag-grid-plus/querySchemes/hooks/useQueryOrderManager.d.ts +0 -10
- package/dist/esm/ag-grid-plus/querySchemes/hooks/useQueryOrderManager.js +0 -60
- package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.d.ts +0 -6
- package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.js +0 -559
- package/dist/esm/ag-grid-plus/querySchemes/index.d.ts +0 -11
- package/dist/esm/ag-grid-plus/querySchemes/index.js +0 -20
- package/dist/esm/ag-grid-plus/querySchemes/storage/localStorageAdapter.d.ts +0 -44
- package/dist/esm/ag-grid-plus/querySchemes/storage/localStorageAdapter.js +0 -256
- package/dist/esm/ag-grid-plus/querySchemes/types.d.ts +0 -145
- package/dist/esm/ag-grid-plus/querySchemes/utils/validator.d.ts +0 -36
- package/dist/esm/ag-grid-plus/querySchemes/utils/validator.js +0 -144
- package/dist/esm/ag-grid-plus/schemes/components/SchemeManager.d.ts +0 -16
- package/dist/esm/ag-grid-plus/schemes/components/SchemeManager.js +0 -334
- package/dist/esm/ag-grid-plus/schemes/components/SchemeManager.less +0 -35
- package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.d.ts +0 -20
- package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.js +0 -281
- package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.less +0 -39
- package/dist/esm/ag-grid-plus/schemes/components/index.d.ts +0 -4
- package/dist/esm/ag-grid-plus/schemes/components/index.js +0 -2
- package/dist/esm/ag-grid-plus/schemes/constants.d.ts +0 -23
- package/dist/esm/ag-grid-plus/schemes/constants.js +0 -33
- package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.d.ts +0 -6
- package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.js +0 -612
- package/dist/esm/ag-grid-plus/schemes/index.d.ts +0 -23
- package/dist/esm/ag-grid-plus/schemes/index.js +0 -30
- package/dist/esm/ag-grid-plus/schemes/storage/configMerger.d.ts +0 -10
- package/dist/esm/ag-grid-plus/schemes/storage/configMerger.js +0 -28
- package/dist/esm/ag-grid-plus/schemes/storage/localStorageAdapter.d.ts +0 -79
- package/dist/esm/ag-grid-plus/schemes/storage/priorityStorageAdapter.d.ts +0 -122
- package/dist/esm/ag-grid-plus/schemes/storage/priorityStorageAdapter.js +0 -471
- package/dist/esm/ag-grid-plus/schemes/storage/remoteStorageAdapter.d.ts +0 -139
- package/dist/esm/ag-grid-plus/schemes/storage/remoteStorageAdapter.js +0 -746
- package/dist/esm/ag-grid-plus/schemes/storage/useRemoteStorage.d.ts +0 -29
- package/dist/esm/ag-grid-plus/schemes/storage/useRemoteStorage.js +0 -40
- package/dist/esm/ag-grid-plus/schemes/types.d.ts +0 -131
- package/dist/esm/ag-grid-plus/schemes/types.js +0 -1
- package/dist/esm/ag-grid-plus/schemes/utils/validator.d.ts +0 -27
- package/dist/esm/ag-grid-plus/schemes/utils/validator.js +0 -100
- package/dist/esm/ag-grid-plus/storage/index.d.ts +0 -13
- package/dist/esm/ag-grid-plus/storage/index.js +0 -17
- /package/dist/cjs/ag-grid-plus/{querySchemes/types.js → shared/storage/schemeStorageAdapter.js} +0 -0
- /package/dist/esm/ag-grid-plus/{querySchemes/types.js → shared/storage/schemeStorageAdapter.js} +0 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import type { FlatColumnItem } from '../../setting/columnGroupTypes';
|
|
2
|
+
/**
|
|
3
|
+
* 查询方案
|
|
4
|
+
*/
|
|
5
|
+
export interface QueryScheme {
|
|
6
|
+
/** 方案唯一标识 */
|
|
7
|
+
id: string;
|
|
8
|
+
/** 方案名称 */
|
|
9
|
+
name: string;
|
|
10
|
+
/** 方案描述 */
|
|
11
|
+
description?: string;
|
|
12
|
+
/** 查询表单字段排序 */
|
|
13
|
+
itemsOrder?: string[];
|
|
14
|
+
/** 隐藏的字段列表 */
|
|
15
|
+
hiddenFields?: string[];
|
|
16
|
+
/** 查询表单值 */
|
|
17
|
+
formValues?: Record<string, any>;
|
|
18
|
+
/** 是否为默认方案 */
|
|
19
|
+
isDefault: boolean;
|
|
20
|
+
/** 是否为系统方案(不可删除) */
|
|
21
|
+
isSystem: boolean;
|
|
22
|
+
/** 创建时间戳 */
|
|
23
|
+
createdAt: number;
|
|
24
|
+
/** 最后更新时间戳 */
|
|
25
|
+
updatedAt: number;
|
|
26
|
+
/** 创建用户ID(可选) */
|
|
27
|
+
createdBy?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 列方案(集中式 API 使用)
|
|
31
|
+
* 使用扩展的列配置格式,包含分组层级结构
|
|
32
|
+
*/
|
|
33
|
+
export interface ColumnScheme {
|
|
34
|
+
/** 方案唯一标识 */
|
|
35
|
+
id: string;
|
|
36
|
+
/** 方案名称 */
|
|
37
|
+
name: string;
|
|
38
|
+
/** 方案描述 */
|
|
39
|
+
description?: string;
|
|
40
|
+
/** 完整的列配置数据(包含分组层级结构) */
|
|
41
|
+
columnConfig: FlatColumnItem[];
|
|
42
|
+
/** AG-Grid 过滤器模型数据(可选) */
|
|
43
|
+
filterModel?: any;
|
|
44
|
+
/** 是否为默认方案 */
|
|
45
|
+
isDefault: boolean;
|
|
46
|
+
/** 是否为系统方案(不可删除) */
|
|
47
|
+
isSystem: boolean;
|
|
48
|
+
/** 创建时间戳 */
|
|
49
|
+
createdAt: number;
|
|
50
|
+
/** 最后更新时间戳 */
|
|
51
|
+
updatedAt: number;
|
|
52
|
+
/** 创建用户ID(可选) */
|
|
53
|
+
createdBy?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 方案同步数据结构
|
|
57
|
+
*/
|
|
58
|
+
export interface SchemeSyncDataDto {
|
|
59
|
+
/** 列方案,按 GridId 分组 */
|
|
60
|
+
columnSchemes: Record<string, ColumnScheme[]>;
|
|
61
|
+
/** 查询方案,按 GridId 分组 */
|
|
62
|
+
querySchemes: Record<string, QueryScheme[]>;
|
|
63
|
+
/** 当前激活方案,Key 为 GridId */
|
|
64
|
+
currentSchemes: Record<string, CurrentSchemeDto>;
|
|
65
|
+
/** 服务器当前时间戳(毫秒) */
|
|
66
|
+
syncTime: number;
|
|
67
|
+
/** 数据版本号 */
|
|
68
|
+
version: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 当前方案 DTO
|
|
72
|
+
*/
|
|
73
|
+
export interface CurrentSchemeDto {
|
|
74
|
+
/** 列方案ID */
|
|
75
|
+
columnSchemeId?: string | null;
|
|
76
|
+
/** 查询方案ID */
|
|
77
|
+
querySchemeId?: string | null;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 方案存储适配器接口
|
|
81
|
+
*
|
|
82
|
+
* 支持两种实现:
|
|
83
|
+
* - LocalStorageAdapter: 本地存储
|
|
84
|
+
* - BackendApiAdapter: 远程 API
|
|
85
|
+
*/
|
|
86
|
+
export interface SchemeStorageAdapter {
|
|
87
|
+
/**
|
|
88
|
+
* 获取用户所有方案数据 (初始化时调用一次)
|
|
89
|
+
* @returns 所有表格的方案数据
|
|
90
|
+
*/
|
|
91
|
+
loadAllSchemes(): Promise<SchemeSyncDataDto>;
|
|
92
|
+
/**
|
|
93
|
+
* 保存/更新列方案
|
|
94
|
+
* @param gridId 表格ID
|
|
95
|
+
* @param scheme 方案对象 (id 存在表示更新,不存在表示新增)
|
|
96
|
+
* @returns 保存后的方案对象
|
|
97
|
+
*/
|
|
98
|
+
saveColumnScheme(gridId: string, scheme: ColumnScheme): Promise<ColumnScheme>;
|
|
99
|
+
/**
|
|
100
|
+
* 删除列方案
|
|
101
|
+
* @param gridId 表格ID
|
|
102
|
+
* @param schemeId 方案ID
|
|
103
|
+
*/
|
|
104
|
+
deleteColumnScheme(gridId: string, schemeId: string): Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* 保存/更新查询方案
|
|
107
|
+
* @param gridId 表格ID
|
|
108
|
+
* @param scheme 方案对象
|
|
109
|
+
* @returns 保存后的方案对象
|
|
110
|
+
*/
|
|
111
|
+
saveQueryScheme(gridId: string, scheme: QueryScheme): Promise<QueryScheme>;
|
|
112
|
+
/**
|
|
113
|
+
* 删除查询方案
|
|
114
|
+
* @param gridId 表格ID
|
|
115
|
+
* @param schemeId 方案ID
|
|
116
|
+
*/
|
|
117
|
+
deleteQueryScheme(gridId: string, schemeId: string): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* 设置当前方案
|
|
120
|
+
* @param gridId 表格ID
|
|
121
|
+
* @param columnSchemeId 列方案ID (null 表示清除)
|
|
122
|
+
* @param querySchemeId 查询方案ID (null 表示清除)
|
|
123
|
+
*/
|
|
124
|
+
setCurrentScheme(gridId: string, columnSchemeId: string | null, querySchemeId: string | null): Promise<void>;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 适配器配置基类
|
|
128
|
+
*/
|
|
129
|
+
export interface SchemeStorageConfig {
|
|
130
|
+
/** 是否启用调试日志 */
|
|
131
|
+
enableDebugLog?: boolean;
|
|
132
|
+
}
|
|
@@ -11,7 +11,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
11
11
|
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; }
|
|
12
12
|
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; } }
|
|
13
13
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
14
|
-
import React, { Fragment, useEffect, useRef, useState } from "react";
|
|
14
|
+
import React, { Fragment, useEffect, useRef, useState, useMemo, useContext } from "react";
|
|
15
15
|
import { AgGridReact } from "ag-grid-react";
|
|
16
16
|
import { useField, observer, RecursionField } from "@formily/react";
|
|
17
17
|
import { useFieldSchema } from "@formily/react";
|
|
@@ -24,14 +24,16 @@ import ArrayAddBtn from "./arrayAddBtn";
|
|
|
24
24
|
import PreviewArrayTable from "./preview";
|
|
25
25
|
import { Space } from "antd";
|
|
26
26
|
import Setting from "../ag-grid-plus/setting";
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
27
|
+
import { GridPlusContext } from "../ag-grid-plus/context/gridContext";
|
|
28
|
+
import { useSchemeManager } from "../ag-grid-plus/context/useSchemeManager";
|
|
29
|
+
import { LocalStorageSchemeAdapter } from "../ag-grid-plus/shared/storage/localStorageAdapter";
|
|
30
|
+
import { flatConfigToColumnState, flatConfigToGridState } from "../ag-grid-plus/setting/columnGroupUtils";
|
|
29
31
|
|
|
30
32
|
// 导入 AG-Grid v33 主题
|
|
31
33
|
import { agGridTheme } from "../ag-grid-plus/theme";
|
|
32
34
|
|
|
33
35
|
//@ts-ignore
|
|
34
|
-
var
|
|
36
|
+
var ArrayTableInner = observer(function (props) {
|
|
35
37
|
var height = props.height;
|
|
36
38
|
var _useState = useState(false),
|
|
37
39
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -57,18 +59,6 @@ var ArrayTable = observer(function (props) {
|
|
|
57
59
|
onMoveUp = props.onMoveUp;
|
|
58
60
|
var addition = useAddition();
|
|
59
61
|
|
|
60
|
-
// 尝试从 Context 获取列状态管理(如果被 Provider 包裹)
|
|
61
|
-
var contextColumnState = useGridPlusColumnState();
|
|
62
|
-
|
|
63
|
-
// ArrayTable 内部集成列方案管理(统一使用 AgGridPlus 的方案系统)
|
|
64
|
-
var internalSchemeManager = useColumnSchemes({
|
|
65
|
-
gridId: props.gridKey || 'array-table-default',
|
|
66
|
-
enableAutoSave: false // 手动控制保存时机
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
// 使用 Context 的 schemeManager 或内部的 schemeManager
|
|
70
|
-
var schemeManager = (contextColumnState === null || contextColumnState === void 0 ? void 0 : contextColumnState.schemeManager) || internalSchemeManager;
|
|
71
|
-
|
|
72
62
|
// 使用自定义 hooks
|
|
73
63
|
var _useCellFocus = useCellFocus(),
|
|
74
64
|
focusInputInCell = _useCellFocus.focusInputInCell;
|
|
@@ -77,46 +67,138 @@ var ArrayTable = observer(function (props) {
|
|
|
77
67
|
var _useRowDrag = useRowDrag(field),
|
|
78
68
|
handleRowDragMove = _useRowDrag.handleRowDragMove;
|
|
79
69
|
|
|
80
|
-
//
|
|
70
|
+
// 从 Context 获取方案管理相关的状态和方法
|
|
71
|
+
var _useContext = useContext(GridPlusContext),
|
|
72
|
+
currentSchemes = _useContext.currentSchemes,
|
|
73
|
+
columnSchemes = _useContext.columnSchemes;
|
|
74
|
+
|
|
75
|
+
// 获取当前表格的激活方案
|
|
76
|
+
var currentScheme = useMemo(function () {
|
|
77
|
+
var _currentSchemes$props;
|
|
78
|
+
if (!props.gridKey || !currentSchemes || !columnSchemes) return null;
|
|
79
|
+
var currentSchemeId = (_currentSchemes$props = currentSchemes[props.gridKey]) === null || _currentSchemes$props === void 0 ? void 0 : _currentSchemes$props.columnSchemeId;
|
|
80
|
+
if (!currentSchemeId) return null;
|
|
81
|
+
var schemes = columnSchemes[props.gridKey] || [];
|
|
82
|
+
return schemes.find(function (s) {
|
|
83
|
+
return s.id === currentSchemeId;
|
|
84
|
+
});
|
|
85
|
+
}, [props.gridKey, currentSchemes, columnSchemes]);
|
|
86
|
+
|
|
87
|
+
// 使用 ref 记录上次应用的方案 ID 和配置哈希,避免重复应用
|
|
88
|
+
var lastAppliedRef = useRef({
|
|
89
|
+
schemeId: null,
|
|
90
|
+
configHash: null
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* 【关键修复】在页面刷新或切换方案时自动恢复列方案
|
|
95
|
+
*
|
|
96
|
+
* 监听 currentScheme 和 gridApiState 的变化,当方案和 Grid API 都准备好时,
|
|
97
|
+
* 自动应用方案中保存的列状态(列顺序、宽度、隐藏等)
|
|
98
|
+
*
|
|
99
|
+
* 关键优化:使用 ref 记录上次应用的配置哈希,避免保存配置后重复应用旧数据
|
|
100
|
+
*/
|
|
81
101
|
useEffect(function () {
|
|
82
|
-
|
|
102
|
+
var _currentScheme$column;
|
|
103
|
+
// 检查必要条件
|
|
104
|
+
if (!props.gridKey || !gridApiState || !currentScheme) return;
|
|
105
|
+
if (!currentScheme.columnConfig || currentScheme.columnConfig.length === 0) return;
|
|
106
|
+
|
|
107
|
+
// 计算当前配置的简单哈希(用于检测配置是否真正变化)
|
|
108
|
+
var configHash = JSON.stringify({
|
|
109
|
+
id: currentScheme.id,
|
|
110
|
+
columnCount: currentScheme.columnConfig.length,
|
|
111
|
+
firstCol: (_currentScheme$column = currentScheme.columnConfig[0]) === null || _currentScheme$column === void 0 ? void 0 : _currentScheme$column.field,
|
|
112
|
+
updatedAt: currentScheme.updatedAt
|
|
113
|
+
});
|
|
114
|
+
console.log('[ArrayTable] 方案恢复检查:', {
|
|
115
|
+
schemeId: currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id,
|
|
116
|
+
schemeName: currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.name,
|
|
117
|
+
configHash: configHash,
|
|
118
|
+
lastHash: lastAppliedRef.current.configHash,
|
|
119
|
+
shouldApply: configHash !== lastAppliedRef.current.configHash
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
// 【关键】检查配置是否真正变化,避免重复应用
|
|
123
|
+
if (configHash === lastAppliedRef.current.configHash) {
|
|
124
|
+
console.log('[ArrayTable] 配置未变化,跳过应用');
|
|
83
125
|
return;
|
|
84
126
|
}
|
|
85
127
|
|
|
86
|
-
//
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
//
|
|
91
|
-
var columnState = currentScheme.columnConfig
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
hide: item.hide,
|
|
98
|
-
pinned: item.pinned === 'notPinned' ? null : item.pinned,
|
|
99
|
-
flex: item.flex
|
|
100
|
-
};
|
|
128
|
+
// 【提取函数】应用列状态和过滤器
|
|
129
|
+
var applyColumnStateAndFilter = function applyColumnStateAndFilter() {
|
|
130
|
+
if (!currentScheme || !gridApiState) return;
|
|
131
|
+
|
|
132
|
+
// 将扁平化的列配置转换为 AG-Grid 列状态
|
|
133
|
+
var columnState = flatConfigToColumnState(currentScheme.columnConfig);
|
|
134
|
+
|
|
135
|
+
// 应用列状态(包括列顺序、宽度、隐藏等)
|
|
136
|
+
gridApiState.applyColumnState({
|
|
137
|
+
state: columnState,
|
|
138
|
+
applyOrder: true // 强制应用列顺序
|
|
101
139
|
});
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
140
|
+
console.log('[ArrayTable] 方案已成功应用');
|
|
141
|
+
|
|
142
|
+
// 如果方案中包含过滤器配置,也一并应用
|
|
143
|
+
if (currentScheme.filterModel) {
|
|
144
|
+
gridApiState.setFilterModel(currentScheme.filterModel);
|
|
145
|
+
console.log('[ArrayTable] 过滤器已应用');
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// 记录本次应用的配置哈希
|
|
149
|
+
lastAppliedRef.current = {
|
|
150
|
+
schemeId: currentScheme.id,
|
|
151
|
+
configHash: configHash
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
// 使用 requestAnimationFrame 延迟应用
|
|
156
|
+
var rafId = requestAnimationFrame(function () {
|
|
157
|
+
try {
|
|
158
|
+
console.log('[ArrayTable] 正在应用方案:', currentScheme.name);
|
|
159
|
+
|
|
160
|
+
// 【关键检测】检查是否包含分组配置
|
|
161
|
+
var hasGroups = currentScheme.columnConfig.some(function (item) {
|
|
162
|
+
return item.type === 'group';
|
|
106
163
|
});
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
164
|
+
console.log('[ArrayTable] 是否包含分组:', hasGroups);
|
|
165
|
+
|
|
166
|
+
// 【条件更新】只有在包含分组时才更新 columnDefs
|
|
167
|
+
// 原因:array-table 的列是动态生成的,无分组时不应该覆盖动态列定义
|
|
168
|
+
if (hasGroups) {
|
|
169
|
+
var gridColumnDefs = flatConfigToGridState(currentScheme.columnConfig);
|
|
170
|
+
console.log('[ArrayTable] 检测到分组,更新 columnDefs');
|
|
171
|
+
gridApiState.setGridOption('columnDefs', gridColumnDefs);
|
|
172
|
+
|
|
173
|
+
// 等待 columnDefs 更新完成后再应用列状态
|
|
174
|
+
setTimeout(function () {
|
|
175
|
+
try {
|
|
176
|
+
applyColumnStateAndFilter();
|
|
177
|
+
} catch (error) {
|
|
178
|
+
console.error('[ArrayTable] 应用列状态失败:', error);
|
|
179
|
+
}
|
|
180
|
+
}, 100);
|
|
181
|
+
} else {
|
|
182
|
+
// 无分组时,直接应用列状态即可
|
|
183
|
+
console.log('[ArrayTable] 无分组,仅应用列状态');
|
|
184
|
+
applyColumnStateAndFilter();
|
|
185
|
+
}
|
|
186
|
+
} catch (error) {
|
|
187
|
+
console.error('[ArrayTable] 应用方案失败:', error);
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
// 清理函数:取消待执行的 RAF
|
|
192
|
+
return function () {
|
|
193
|
+
cancelAnimationFrame(rafId);
|
|
194
|
+
};
|
|
195
|
+
}, [props.gridKey, gridApiState, currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.updatedAt]);
|
|
110
196
|
|
|
111
197
|
//@ts-ignore
|
|
112
198
|
if (columns.length > 0) {
|
|
113
199
|
//@ts-ignore
|
|
114
200
|
columns[0].rowDrag = props.onRowDrag ? true : false;
|
|
115
201
|
}
|
|
116
|
-
|
|
117
|
-
// 不再需要 onColumnStateChanged 回调
|
|
118
|
-
// 保存逻辑统一由 ColumnSetting 通过 schemeManager 处理
|
|
119
|
-
|
|
120
202
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
121
203
|
ref: ref,
|
|
122
204
|
style: {
|
|
@@ -163,8 +245,8 @@ var ArrayTable = observer(function (props) {
|
|
|
163
245
|
gridKey: props.gridKey,
|
|
164
246
|
gridApi: apiRef.current,
|
|
165
247
|
gridApiState: gridApiState,
|
|
166
|
-
|
|
167
|
-
|
|
248
|
+
allColDefs: columns,
|
|
249
|
+
showQueryScheme: false
|
|
168
250
|
})), /*#__PURE__*/React.createElement("div", {
|
|
169
251
|
style: {
|
|
170
252
|
flex: 1,
|
|
@@ -257,6 +339,46 @@ var ArrayTable = observer(function (props) {
|
|
|
257
339
|
});
|
|
258
340
|
}))));
|
|
259
341
|
});
|
|
342
|
+
ArrayTableInner.displayName = "ArrayTableInner";
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* ArrayTable 组件 - 带 GridPlusContext Provider 包装
|
|
346
|
+
*
|
|
347
|
+
* 提供完整的列方案管理功能支持
|
|
348
|
+
*/
|
|
349
|
+
//@ts-ignore
|
|
350
|
+
var ArrayTable = observer(function (props) {
|
|
351
|
+
// 创建 LocalStorage 适配器实例 (使用 useMemo 避免重复创建)
|
|
352
|
+
var adapter = useMemo(function () {
|
|
353
|
+
return new LocalStorageSchemeAdapter({
|
|
354
|
+
storageKey: "array-table-schemes-".concat(props.gridKey || 'default'),
|
|
355
|
+
enableDebugLog: false
|
|
356
|
+
});
|
|
357
|
+
}, [props.gridKey]);
|
|
358
|
+
|
|
359
|
+
// 初始化方案管理器
|
|
360
|
+
var schemeManager = useSchemeManager({
|
|
361
|
+
adapter: adapter,
|
|
362
|
+
autoLoad: true,
|
|
363
|
+
showErrorMessage: true
|
|
364
|
+
});
|
|
365
|
+
|
|
366
|
+
// 构建 Context Value
|
|
367
|
+
var contextValue = useMemo(function () {
|
|
368
|
+
return _objectSpread({
|
|
369
|
+
extensibleColumns: [],
|
|
370
|
+
columnState: undefined,
|
|
371
|
+
onSaveColumnState: function onSaveColumnState() {},
|
|
372
|
+
applyToGlobal: function applyToGlobal() {},
|
|
373
|
+
resetCurrent: function resetCurrent() {},
|
|
374
|
+
resetAll: function resetAll() {},
|
|
375
|
+
queryFormItems: []
|
|
376
|
+
}, schemeManager);
|
|
377
|
+
}, [schemeManager]);
|
|
378
|
+
return /*#__PURE__*/React.createElement(GridPlusContext.Provider, {
|
|
379
|
+
value: contextValue
|
|
380
|
+
}, /*#__PURE__*/React.createElement(ArrayTableInner, props));
|
|
381
|
+
});
|
|
260
382
|
ArrayTable.displayName = "ArrayTable";
|
|
261
383
|
ArrayTable.Column = function () {
|
|
262
384
|
return /*#__PURE__*/React.createElement(Fragment, null);
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AgGridColumn, AgGridPlus, flattenTreeDeep, GridPlusContext, useGridPlusColumnState,
|
|
1
|
+
import { AgGridColumn, AgGridPlus, flattenTreeDeep, GridPlusContext, useGridPlusColumnState, useSchemeManager, useGridSchemes, LocalStorageSchemeAdapter, BackendApiSchemeAdapter } from "./ag-grid-plus";
|
|
2
2
|
import ArrayTable from "./array-table";
|
|
3
3
|
import ArrayTableIndex from "./array-table-index";
|
|
4
4
|
import { ColumnPresets } from "./array-table/columnHelper";
|
|
@@ -21,7 +21,7 @@ import { StandardFormDialog, withStandardForm, FieldCreators, createSelectField,
|
|
|
21
21
|
import DeleteConfirm from "./deleteConfirm";
|
|
22
22
|
import { RuleBuilder } from "./RuleBuilder";
|
|
23
23
|
import { RegexEditor, useRegexValidation, useTemplateManager, TemplateSelector, TemplateCategory, RegexTester, FlagsSelector, MatchItem, RegexRailroadDiagram } from "./components/RegexEditor";
|
|
24
|
-
export { AgGridColumn, AgGridPlus, ArrayTable, ArrayTableIndex, ColumnPresets, Card, Dashboard, DialogSelect, DraggableModal, Editable, ExtensibleGrid, flattenTreeDeep, FormDesigner, FormProContext, FormProLayout, GridPlusContext, useGridPlusColumnState, ImportModal, QueryBuilder, ToolBar, FullScreenAlert, ConfirmPro, GeneratedListPage, StandardFormDialog, withStandardForm, FieldCreators, createSelectField, createCascaderField, DeleteConfirm, RuleBuilder, RegexEditor, useRegexValidation, useTemplateManager, TemplateSelector, TemplateCategory, RegexTester, FlagsSelector, MatchItem, RegexRailroadDiagram,
|
|
24
|
+
export { AgGridColumn, AgGridPlus, ArrayTable, ArrayTableIndex, ColumnPresets, Card, Dashboard, DialogSelect, DraggableModal, Editable, ExtensibleGrid, flattenTreeDeep, FormDesigner, FormProContext, FormProLayout, GridPlusContext, useGridPlusColumnState, ImportModal, QueryBuilder, ToolBar, FullScreenAlert, ConfirmPro, GeneratedListPage, StandardFormDialog, withStandardForm, FieldCreators, createSelectField, createCascaderField, DeleteConfirm, RuleBuilder, RegexEditor, useRegexValidation, useTemplateManager, TemplateSelector, TemplateCategory, RegexTester, FlagsSelector, MatchItem, RegexRailroadDiagram, useSchemeManager, useGridSchemes, LocalStorageSchemeAdapter, BackendApiSchemeAdapter, };
|
|
25
25
|
export type * from "./generatedListPage";
|
|
26
26
|
export type * from "./standardFormDialog";
|
|
27
27
|
export type * from "./deleteConfirm";
|
|
@@ -29,5 +29,5 @@ export type * from "./importModal";
|
|
|
29
29
|
export type * from "./fullScreenAlert";
|
|
30
30
|
export type * from "./RuleBuilder";
|
|
31
31
|
export type { ColumnConfig } from "./array-table/columnHelper";
|
|
32
|
-
export type {
|
|
32
|
+
export type { CentralizedColumnScheme, QueryScheme, SchemeStorageAdapter, SchemeSyncDataDto, CurrentSchemeDto, SchemeStorageConfig, LocalStorageAdapterConfig, BackendApiAdapterConfig, UseSchemeManagerConfig, GridPlusContextValue, } from "./ag-grid-plus";
|
|
33
33
|
export type { ParseResult as RegexParseResult, ValidationResult as RegexValidationResult, RegexError, ComplexityMetrics, ASTNode, AstRegExp, RegexTemplate, TestResult as RegexTestResult, CodeMirrorWrapperProps, RegexEditorProps, RegexFlags, MatchResult, RegexTesterProps, FlagsSelectorProps, MatchItemProps, RegexRailroadDiagramProps, } from "./components/RegexEditor";
|
package/dist/esm/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { AgGridColumn, AgGridPlus, flattenTreeDeep, GridPlusContext, useGridPlusColumnState,
|
|
2
|
-
//
|
|
3
|
-
|
|
4
|
-
// 注意:
|
|
5
|
-
// 请使用
|
|
2
|
+
// 集中式方案管理
|
|
3
|
+
useSchemeManager, useGridSchemes, LocalStorageSchemeAdapter, BackendApiSchemeAdapter
|
|
4
|
+
// 注意: 旧的方案管理API已废弃
|
|
5
|
+
// 请使用 useSchemeManager/useGridSchemes 替代
|
|
6
6
|
} from "./ag-grid-plus";
|
|
7
7
|
import ArrayTable from "./array-table";
|
|
8
8
|
import ArrayTableIndex from "./array-table-index";
|
|
@@ -27,17 +27,17 @@ import DeleteConfirm from "./deleteConfirm";
|
|
|
27
27
|
import { RuleBuilder } from "./RuleBuilder";
|
|
28
28
|
import { RegexEditor, useRegexValidation, useTemplateManager, TemplateSelector, TemplateCategory, RegexTester, FlagsSelector, MatchItem, RegexRailroadDiagram } from "./components/RegexEditor";
|
|
29
29
|
export { AgGridColumn, AgGridPlus, ArrayTable, ArrayTableIndex, ColumnPresets, Card, Dashboard, DialogSelect, DraggableModal, Editable, ExtensibleGrid, flattenTreeDeep, FormDesigner, FormProContext, FormProLayout, GridPlusContext, useGridPlusColumnState, ImportModal, QueryBuilder, ToolBar, FullScreenAlert, ConfirmPro, GeneratedListPage, StandardFormDialog, withStandardForm, FieldCreators, createSelectField, createCascaderField, DeleteConfirm, RuleBuilder, RegexEditor, useRegexValidation, useTemplateManager, TemplateSelector, TemplateCategory, RegexTester, FlagsSelector, MatchItem, RegexRailroadDiagram,
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
// 注意:
|
|
33
|
-
// 请使用
|
|
30
|
+
// 集中式方案管理
|
|
31
|
+
useSchemeManager, useGridSchemes, LocalStorageSchemeAdapter, BackendApiSchemeAdapter
|
|
32
|
+
// 注意: 旧的方案管理API已废弃
|
|
33
|
+
// 请使用 useSchemeManager/useGridSchemes 替代
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
// 导出类型定义
|
|
37
37
|
|
|
38
|
-
//
|
|
38
|
+
// 集中式方案管理类型
|
|
39
39
|
|
|
40
|
-
// 注意:
|
|
41
|
-
//
|
|
40
|
+
// 注意: 旧的方案管理类型已废弃
|
|
41
|
+
// 请使用集中式方案管理类型
|
|
42
42
|
|
|
43
43
|
// RegexEditor 类型定义 - 使用命名导出避免冲突
|
|
@@ -32,7 +32,7 @@ export declare const createSelectField: (title: string, options: Array<{
|
|
|
32
32
|
required?: boolean | undefined;
|
|
33
33
|
placeholder?: string | undefined;
|
|
34
34
|
gridSpan?: number | undefined;
|
|
35
|
-
mode?: "
|
|
35
|
+
mode?: "multiple" | "tags" | undefined;
|
|
36
36
|
} | undefined) => any;
|
|
37
37
|
/**
|
|
38
38
|
* 快速创建常用字段的工具函数集合
|