@nokecy/qc-ui 1.0.71 → 1.0.72
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 +23 -8
- package/dist/cjs/ag-grid-plus/index.d.ts +2 -0
- package/dist/cjs/ag-grid-plus/index.js +79 -0
- package/dist/cjs/ag-grid-plus/interface.d.ts +10 -0
- package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.d.ts +10 -0
- package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.js +26 -4
- package/dist/cjs/ag-grid-plus/storage/globalSyncManager.d.ts +26 -0
- package/dist/cjs/ag-grid-plus/storage/globalSyncManager.js +48 -0
- package/dist/cjs/ag-grid-plus/storage/types.d.ts +31 -0
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +23 -8
- package/dist/esm/ag-grid-plus/index.d.ts +2 -0
- package/dist/esm/ag-grid-plus/index.js +3 -1
- package/dist/esm/ag-grid-plus/interface.d.ts +10 -0
- package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.d.ts +10 -0
- package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.js +26 -4
- package/dist/esm/ag-grid-plus/storage/globalSyncManager.d.ts +26 -0
- package/dist/esm/ag-grid-plus/storage/globalSyncManager.js +46 -0
- package/dist/esm/ag-grid-plus/storage/types.d.ts +31 -0
- package/dist/esm/standardFormDialog/useStandardFormSchema.d.ts +1 -1
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +1 -1
|
@@ -27,10 +27,11 @@ var _locale = require("./locale");
|
|
|
27
27
|
var _gridContext = require("./context/gridContext");
|
|
28
28
|
var _querySchemes = require("./querySchemes");
|
|
29
29
|
var _schemes = require("./schemes");
|
|
30
|
+
var _globalSyncManager = require("./storage/globalSyncManager");
|
|
30
31
|
var _sanitize = require("./utils/sanitize");
|
|
31
32
|
var _errors = require("./errors");
|
|
32
33
|
var _logger = require("./utils/logger");
|
|
33
|
-
var _excluded = ["style", "loading", "params", "request", "dataSource", "treeKeyName", "treeParentName", "rowData", "gridRef", "headerTitle", "toolBarRender", "search", "hideTool", "onGridReady", "gridKey", "children", "defaultSearchExpand", "overlayNoRowsTemplateText", "queryDefaultRows", "onSelectedRowsChange", "enableQuerySchemes", "querySchemeStorageAdapter", "enableColumnSchemes", "columnSchemeStorageAdapter"];
|
|
34
|
+
var _excluded = ["style", "loading", "params", "request", "dataSource", "treeKeyName", "treeParentName", "rowData", "gridRef", "headerTitle", "toolBarRender", "search", "hideTool", "onGridReady", "gridKey", "children", "defaultSearchExpand", "overlayNoRowsTemplateText", "queryDefaultRows", "onSelectedRowsChange", "enableQuerySchemes", "querySchemeStorageAdapter", "querySchemeManager", "enableColumnSchemes", "columnSchemeStorageAdapter", "columnSchemeManager"];
|
|
34
35
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
35
36
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
36
37
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -76,11 +77,13 @@ function AgGridPlus(props) {
|
|
|
76
77
|
queryDefaultRows = props.queryDefaultRows,
|
|
77
78
|
onSelectedRowsChange = props.onSelectedRowsChange,
|
|
78
79
|
_props$enableQuerySch = props.enableQuerySchemes,
|
|
79
|
-
enableQuerySchemes = _props$enableQuerySch === void 0 ?
|
|
80
|
+
enableQuerySchemes = _props$enableQuerySch === void 0 ? true : _props$enableQuerySch,
|
|
80
81
|
querySchemeStorageAdapter = props.querySchemeStorageAdapter,
|
|
82
|
+
propsQuerySchemeManager = props.querySchemeManager,
|
|
81
83
|
_props$enableColumnSc = props.enableColumnSchemes,
|
|
82
84
|
enableColumnSchemes = _props$enableColumnSc === void 0 ? true : _props$enableColumnSc,
|
|
83
85
|
columnSchemeStorageAdapter = props.columnSchemeStorageAdapter,
|
|
86
|
+
propsColumnSchemeManager = props.columnSchemeManager,
|
|
84
87
|
rest = _objectWithoutProperties(props, _excluded);
|
|
85
88
|
var _useGridPlusColumnSta = (0, _.useGridPlusColumnState)(),
|
|
86
89
|
onSaveColumnState = _useGridPlusColumnSta.onSaveColumnState,
|
|
@@ -139,10 +142,15 @@ function AgGridPlus(props) {
|
|
|
139
142
|
queryItemsOrder = _useState20[0],
|
|
140
143
|
setQueryItemsOrder = _useState20[1];
|
|
141
144
|
|
|
142
|
-
//
|
|
143
|
-
var
|
|
145
|
+
// 尝试获取全局适配器(如果已初始化)
|
|
146
|
+
var globalQueryAdapter = (0, _globalSyncManager.isGlobalSyncInitialized)() ? (0, _globalSyncManager.useGlobalQueryAdapter)() : undefined;
|
|
147
|
+
var globalColumnAdapter = (0, _globalSyncManager.isGlobalSyncInitialized)() ? (0, _globalSyncManager.useGlobalColumnAdapter)() : undefined;
|
|
148
|
+
|
|
149
|
+
// 自动创建查询方案管理器(如果未通过 props 提供)
|
|
150
|
+
var autoQuerySchemeManager = enableQuerySchemes && gridKey && !propsQuerySchemeManager ? (0, _querySchemes.useQuerySchemes)({
|
|
144
151
|
gridId: gridKey,
|
|
145
|
-
|
|
152
|
+
// 优先使用全局适配器,否则使用 props 传入的适配器
|
|
153
|
+
storageAdapter: globalQueryAdapter || querySchemeStorageAdapter,
|
|
146
154
|
onSchemeChange: function onSchemeChange(scheme) {
|
|
147
155
|
if (scheme) {
|
|
148
156
|
setQueryItemsOrder(scheme.itemsOrder);
|
|
@@ -150,11 +158,15 @@ function AgGridPlus(props) {
|
|
|
150
158
|
}
|
|
151
159
|
}) : undefined;
|
|
152
160
|
|
|
161
|
+
// 优先使用 props 提供的管理器,否则使用自动创建的
|
|
162
|
+
var querySchemeManager = propsQuerySchemeManager || autoQuerySchemeManager;
|
|
163
|
+
|
|
153
164
|
// ============ 列配置方案管理 ============
|
|
154
|
-
//
|
|
155
|
-
var
|
|
165
|
+
// 自动创建列配置方案管理器(如果未通过 props 提供)
|
|
166
|
+
var autoColumnSchemeManager = enableColumnSchemes && gridKey && !propsColumnSchemeManager ? (0, _schemes.useColumnSchemes)({
|
|
156
167
|
gridId: gridKey,
|
|
157
|
-
|
|
168
|
+
// 优先使用全局适配器,否则使用 props 传入的适配器
|
|
169
|
+
storageAdapter: globalColumnAdapter || columnSchemeStorageAdapter,
|
|
158
170
|
enableAutoSave: true,
|
|
159
171
|
onSchemeChange: function onSchemeChange(scheme) {
|
|
160
172
|
if (scheme && apiRef.current) {
|
|
@@ -165,6 +177,9 @@ function AgGridPlus(props) {
|
|
|
165
177
|
}
|
|
166
178
|
}
|
|
167
179
|
}) : undefined;
|
|
180
|
+
|
|
181
|
+
// 优先使用 props 提供的管理器,否则使用自动创建的
|
|
182
|
+
var columnSchemeManager = propsColumnSchemeManager || autoColumnSchemeManager;
|
|
168
183
|
(0, _react.useImperativeHandle)(propsGridRef, function () {
|
|
169
184
|
return gridRef.current;
|
|
170
185
|
});
|
|
@@ -8,3 +8,5 @@ export { dateValueFormatter, dateTimeValueFormatter, convertFilterModel, convert
|
|
|
8
8
|
export { useColumnSchemes, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, SchemeSelector, SchemeManager } from "./schemes";
|
|
9
9
|
export type { ColumnScheme, SchemeManagerConfig, StorageAdapter, SchemeValidationResult, UseColumnSchemesReturn, SchemeSelectorProps, SchemeManagerProps } from "./schemes";
|
|
10
10
|
export type { GridPlusContextValue } from "./context/gridContext";
|
|
11
|
+
export { initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./storage";
|
|
12
|
+
export type { SyncConfig, SyncManagerEvents, SyncStatus, SchemeConflict } from "./storage";
|
|
@@ -99,6 +99,12 @@ Object.defineProperty(exports, "defaultStorageAdapter", {
|
|
|
99
99
|
return _schemes.defaultStorageAdapter;
|
|
100
100
|
}
|
|
101
101
|
});
|
|
102
|
+
Object.defineProperty(exports, "destroyGlobalSchemeSync", {
|
|
103
|
+
enumerable: true,
|
|
104
|
+
get: function get() {
|
|
105
|
+
return _storage.destroyGlobalSchemeSync;
|
|
106
|
+
}
|
|
107
|
+
});
|
|
102
108
|
Object.defineProperty(exports, "flatten", {
|
|
103
109
|
enumerable: true,
|
|
104
110
|
get: function get() {
|
|
@@ -117,6 +123,54 @@ Object.defineProperty(exports, "generateUniqueName", {
|
|
|
117
123
|
return _schemes.generateUniqueName;
|
|
118
124
|
}
|
|
119
125
|
});
|
|
126
|
+
Object.defineProperty(exports, "getGlobalAdapterFactory", {
|
|
127
|
+
enumerable: true,
|
|
128
|
+
get: function get() {
|
|
129
|
+
return _storage.getGlobalAdapterFactory;
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
Object.defineProperty(exports, "getGlobalSyncManager", {
|
|
133
|
+
enumerable: true,
|
|
134
|
+
get: function get() {
|
|
135
|
+
return _storage.getGlobalSyncManager;
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
Object.defineProperty(exports, "getGlobalSyncStatus", {
|
|
139
|
+
enumerable: true,
|
|
140
|
+
get: function get() {
|
|
141
|
+
return _storage.getGlobalSyncStatus;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
Object.defineProperty(exports, "getUnsyncedGrids", {
|
|
145
|
+
enumerable: true,
|
|
146
|
+
get: function get() {
|
|
147
|
+
return _storage.getUnsyncedGrids;
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
Object.defineProperty(exports, "hasUnsyncedData", {
|
|
151
|
+
enumerable: true,
|
|
152
|
+
get: function get() {
|
|
153
|
+
return _storage.hasUnsyncedData;
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
Object.defineProperty(exports, "initializeGlobalSchemeSync", {
|
|
157
|
+
enumerable: true,
|
|
158
|
+
get: function get() {
|
|
159
|
+
return _storage.initializeGlobalSchemeSync;
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
Object.defineProperty(exports, "isGlobalSyncInitialized", {
|
|
163
|
+
enumerable: true,
|
|
164
|
+
get: function get() {
|
|
165
|
+
return _storage.isGlobalSyncInitialized;
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
Object.defineProperty(exports, "syncAllSchemes", {
|
|
169
|
+
enumerable: true,
|
|
170
|
+
get: function get() {
|
|
171
|
+
return _storage.syncAllSchemes;
|
|
172
|
+
}
|
|
173
|
+
});
|
|
120
174
|
Object.defineProperty(exports, "toTree", {
|
|
121
175
|
enumerable: true,
|
|
122
176
|
get: function get() {
|
|
@@ -129,6 +183,30 @@ Object.defineProperty(exports, "useColumnSchemes", {
|
|
|
129
183
|
return _schemes.useColumnSchemes;
|
|
130
184
|
}
|
|
131
185
|
});
|
|
186
|
+
Object.defineProperty(exports, "useGlobalColumnAdapter", {
|
|
187
|
+
enumerable: true,
|
|
188
|
+
get: function get() {
|
|
189
|
+
return _storage.useGlobalColumnAdapter;
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
Object.defineProperty(exports, "useGlobalColumnSchemeManager", {
|
|
193
|
+
enumerable: true,
|
|
194
|
+
get: function get() {
|
|
195
|
+
return _storage.useGlobalColumnSchemeManager;
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
Object.defineProperty(exports, "useGlobalQueryAdapter", {
|
|
199
|
+
enumerable: true,
|
|
200
|
+
get: function get() {
|
|
201
|
+
return _storage.useGlobalQueryAdapter;
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
Object.defineProperty(exports, "useGlobalQuerySchemeManager", {
|
|
205
|
+
enumerable: true,
|
|
206
|
+
get: function get() {
|
|
207
|
+
return _storage.useGlobalQuerySchemeManager;
|
|
208
|
+
}
|
|
209
|
+
});
|
|
132
210
|
Object.defineProperty(exports, "useGridPlusColumnState", {
|
|
133
211
|
enumerable: true,
|
|
134
212
|
get: function get() {
|
|
@@ -160,4 +238,5 @@ var _useGridPlusColumnState = require("./hooks/useGridPlusColumnState");
|
|
|
160
238
|
require("./ag-grid-theme-builder.css");
|
|
161
239
|
var _utils = require("./utils");
|
|
162
240
|
var _schemes = require("./schemes");
|
|
241
|
+
var _storage = require("./storage");
|
|
163
242
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -65,6 +65,11 @@ interface GridProps extends AgGridReactProps {
|
|
|
65
65
|
* 默认使用 LocalStorage,可传入自定义适配器实现服务端存储
|
|
66
66
|
*/
|
|
67
67
|
querySchemeStorageAdapter?: QueryStorageAdapter;
|
|
68
|
+
/**
|
|
69
|
+
* 查询方案管理器(可选)
|
|
70
|
+
* 如果不提供,组件会根据 gridKey 自动从全局方案管理器创建
|
|
71
|
+
*/
|
|
72
|
+
querySchemeManager?: any;
|
|
68
73
|
/**
|
|
69
74
|
* 是否启用列配置方案功能
|
|
70
75
|
* 默认值: true (自动启用)
|
|
@@ -75,6 +80,11 @@ interface GridProps extends AgGridReactProps {
|
|
|
75
80
|
* 默认使用 LocalStorage,可传入自定义适配器实现服务端存储
|
|
76
81
|
*/
|
|
77
82
|
columnSchemeStorageAdapter?: ColumnStorageAdapter;
|
|
83
|
+
/**
|
|
84
|
+
* 列配置方案管理器(可选)
|
|
85
|
+
* 如果不提供,组件会根据 gridKey 自动从全局方案管理器创建
|
|
86
|
+
*/
|
|
87
|
+
columnSchemeManager?: any;
|
|
78
88
|
/**
|
|
79
89
|
* 错误处理回调函数
|
|
80
90
|
* 当组件发生错误时调用,可用于自定义错误处理逻辑
|
|
@@ -19,6 +19,16 @@ export declare class SchemeSyncManager {
|
|
|
19
19
|
private autoSaveTimer?;
|
|
20
20
|
private backgroundSyncTimer?;
|
|
21
21
|
constructor(config: SyncConfig, events?: SyncManagerEvents);
|
|
22
|
+
/**
|
|
23
|
+
* 获取方案的完整 API URL (GET请求)
|
|
24
|
+
* @private
|
|
25
|
+
*/
|
|
26
|
+
private getGetApiUrl;
|
|
27
|
+
/**
|
|
28
|
+
* 同步方案的完整 API URL (PUT请求)
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
31
|
+
private getSyncApiUrl;
|
|
22
32
|
/**
|
|
23
33
|
* 初始化:从服务器加载所有数据
|
|
24
34
|
*/
|
|
@@ -25,6 +25,8 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
25
25
|
* 默认配置
|
|
26
26
|
*/
|
|
27
27
|
var DEFAULT_CONFIG = {
|
|
28
|
+
getApiPath: '/api/v1/ag-grid-plus/schemes',
|
|
29
|
+
syncApiPath: '/api/v1/ag-grid-plus/schemes',
|
|
28
30
|
autoSaveDelay: 3000,
|
|
29
31
|
backgroundSyncInterval: 300000,
|
|
30
32
|
// 5分钟
|
|
@@ -72,7 +74,7 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
72
74
|
type: 'application/json'
|
|
73
75
|
});
|
|
74
76
|
if (navigator.sendBeacon) {
|
|
75
|
-
navigator.sendBeacon(
|
|
77
|
+
navigator.sendBeacon(_this.getSyncApiUrl(), blob);
|
|
76
78
|
}
|
|
77
79
|
}
|
|
78
80
|
});
|
|
@@ -95,9 +97,29 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
95
97
|
}
|
|
96
98
|
|
|
97
99
|
/**
|
|
98
|
-
*
|
|
100
|
+
* 获取方案的完整 API URL (GET请求)
|
|
101
|
+
* @private
|
|
99
102
|
*/
|
|
100
103
|
_createClass(SchemeSyncManager, [{
|
|
104
|
+
key: "getGetApiUrl",
|
|
105
|
+
value: function getGetApiUrl() {
|
|
106
|
+
return "".concat(this.config.apiBaseUrl).concat(this.config.getApiPath);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* 同步方案的完整 API URL (PUT请求)
|
|
111
|
+
* @private
|
|
112
|
+
*/
|
|
113
|
+
}, {
|
|
114
|
+
key: "getSyncApiUrl",
|
|
115
|
+
value: function getSyncApiUrl() {
|
|
116
|
+
return "".concat(this.config.apiBaseUrl).concat(this.config.syncApiPath);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* 初始化:从服务器加载所有数据
|
|
121
|
+
*/
|
|
122
|
+
}, {
|
|
101
123
|
key: "initialize",
|
|
102
124
|
value: (function () {
|
|
103
125
|
var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
@@ -114,7 +136,7 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
114
136
|
case 3:
|
|
115
137
|
_context.prev = 3;
|
|
116
138
|
_context.next = 6;
|
|
117
|
-
return this.fetchWithRetry(
|
|
139
|
+
return this.fetchWithRetry(this.getGetApiUrl(), {
|
|
118
140
|
method: 'GET',
|
|
119
141
|
headers: {
|
|
120
142
|
'Content-Type': 'application/json'
|
|
@@ -394,7 +416,7 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
394
416
|
|
|
395
417
|
// 发送同步请求
|
|
396
418
|
_context2.next = 19;
|
|
397
|
-
return this.fetchWithRetry(
|
|
419
|
+
return this.fetchWithRetry(this.getSyncApiUrl(), {
|
|
398
420
|
method: 'PUT',
|
|
399
421
|
headers: {
|
|
400
422
|
'Content-Type': 'application/json'
|
|
@@ -72,3 +72,29 @@ export declare function useGlobalColumnAdapter(): import("./MemoryStorageAdapter
|
|
|
72
72
|
* 简化组件中的使用
|
|
73
73
|
*/
|
|
74
74
|
export declare function useGlobalQueryAdapter(): import("./MemoryStorageAdapter").QueryMemoryStorageAdapter;
|
|
75
|
+
/**
|
|
76
|
+
* React Hook: 使用全局列方案管理器
|
|
77
|
+
* 自动创建并管理指定 gridId 的列方案管理器
|
|
78
|
+
*
|
|
79
|
+
* @param gridId 表格唯一标识
|
|
80
|
+
* @param options 可选配置
|
|
81
|
+
* @returns 列方案管理器实例
|
|
82
|
+
*/
|
|
83
|
+
export declare function useGlobalColumnSchemeManager(gridId: string, options?: {
|
|
84
|
+
enableAutoSave?: boolean;
|
|
85
|
+
onSchemeChange?: (scheme: any) => void;
|
|
86
|
+
onSchemeSave?: (scheme: any) => void;
|
|
87
|
+
}): any;
|
|
88
|
+
/**
|
|
89
|
+
* React Hook: 使用全局查询方案管理器
|
|
90
|
+
* 自动创建并管理指定 gridId 的查询方案管理器
|
|
91
|
+
*
|
|
92
|
+
* @param gridId 表格唯一标识
|
|
93
|
+
* @param options 可选配置
|
|
94
|
+
* @returns 查询方案管理器实例
|
|
95
|
+
*/
|
|
96
|
+
export declare function useGlobalQuerySchemeManager(gridId: string, options?: {
|
|
97
|
+
enableAutoSave?: boolean;
|
|
98
|
+
onSchemeChange?: (scheme: any) => void;
|
|
99
|
+
onSchemeSave?: (scheme: any) => void;
|
|
100
|
+
}): any;
|
|
@@ -13,7 +13,9 @@ exports.initializeGlobalSchemeSync = initializeGlobalSchemeSync;
|
|
|
13
13
|
exports.isGlobalSyncInitialized = isGlobalSyncInitialized;
|
|
14
14
|
exports.syncAllSchemes = syncAllSchemes;
|
|
15
15
|
exports.useGlobalColumnAdapter = useGlobalColumnAdapter;
|
|
16
|
+
exports.useGlobalColumnSchemeManager = useGlobalColumnSchemeManager;
|
|
16
17
|
exports.useGlobalQueryAdapter = useGlobalQueryAdapter;
|
|
18
|
+
exports.useGlobalQuerySchemeManager = useGlobalQuerySchemeManager;
|
|
17
19
|
var _SchemeSyncManager = require("./SchemeSyncManager");
|
|
18
20
|
var _MemoryStorageAdapter = require("./MemoryStorageAdapter");
|
|
19
21
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
@@ -284,4 +286,50 @@ function useGlobalColumnAdapter() {
|
|
|
284
286
|
function useGlobalQueryAdapter() {
|
|
285
287
|
var factory = getGlobalAdapterFactory();
|
|
286
288
|
return factory.getQueryAdapter();
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* React Hook: 使用全局列方案管理器
|
|
293
|
+
* 自动创建并管理指定 gridId 的列方案管理器
|
|
294
|
+
*
|
|
295
|
+
* @param gridId 表格唯一标识
|
|
296
|
+
* @param options 可选配置
|
|
297
|
+
* @returns 列方案管理器实例
|
|
298
|
+
*/
|
|
299
|
+
function useGlobalColumnSchemeManager(gridId, options) {
|
|
300
|
+
var _options$enableAutoSa;
|
|
301
|
+
// 动态导入 useSchemeManager Hook
|
|
302
|
+
var _require = require("../shared/hooks/useSchemeManager"),
|
|
303
|
+
useSchemeManager = _require.useSchemeManager;
|
|
304
|
+
var columnAdapter = useGlobalColumnAdapter();
|
|
305
|
+
return useSchemeManager({
|
|
306
|
+
gridId: gridId,
|
|
307
|
+
storageAdapter: columnAdapter,
|
|
308
|
+
enableAutoSave: (_options$enableAutoSa = options === null || options === void 0 ? void 0 : options.enableAutoSave) !== null && _options$enableAutoSa !== void 0 ? _options$enableAutoSa : true,
|
|
309
|
+
onSchemeChange: options === null || options === void 0 ? void 0 : options.onSchemeChange,
|
|
310
|
+
onSchemeSave: options === null || options === void 0 ? void 0 : options.onSchemeSave
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* React Hook: 使用全局查询方案管理器
|
|
316
|
+
* 自动创建并管理指定 gridId 的查询方案管理器
|
|
317
|
+
*
|
|
318
|
+
* @param gridId 表格唯一标识
|
|
319
|
+
* @param options 可选配置
|
|
320
|
+
* @returns 查询方案管理器实例
|
|
321
|
+
*/
|
|
322
|
+
function useGlobalQuerySchemeManager(gridId, options) {
|
|
323
|
+
var _options$enableAutoSa2;
|
|
324
|
+
// 动态导入 useSchemeManager Hook
|
|
325
|
+
var _require2 = require("../shared/hooks/useSchemeManager"),
|
|
326
|
+
useSchemeManager = _require2.useSchemeManager;
|
|
327
|
+
var queryAdapter = useGlobalQueryAdapter();
|
|
328
|
+
return useSchemeManager({
|
|
329
|
+
gridId: gridId,
|
|
330
|
+
storageAdapter: queryAdapter,
|
|
331
|
+
enableAutoSave: (_options$enableAutoSa2 = options === null || options === void 0 ? void 0 : options.enableAutoSave) !== null && _options$enableAutoSa2 !== void 0 ? _options$enableAutoSa2 : true,
|
|
332
|
+
onSchemeChange: options === null || options === void 0 ? void 0 : options.onSchemeChange,
|
|
333
|
+
onSchemeSave: options === null || options === void 0 ? void 0 : options.onSchemeSave
|
|
334
|
+
});
|
|
287
335
|
}
|
|
@@ -71,6 +71,25 @@ export interface ConflictData {
|
|
|
71
71
|
/** 冲突原因 */
|
|
72
72
|
reason: string;
|
|
73
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* 方案冲突(别名)
|
|
76
|
+
*/
|
|
77
|
+
export type SchemeConflict = ConflictData;
|
|
78
|
+
/**
|
|
79
|
+
* 同步状态信息
|
|
80
|
+
*/
|
|
81
|
+
export interface SyncStatus {
|
|
82
|
+
/** 是否已初始化 */
|
|
83
|
+
initialized: boolean;
|
|
84
|
+
/** 是否正在同步 */
|
|
85
|
+
syncing: boolean;
|
|
86
|
+
/** 最后同步时间 */
|
|
87
|
+
lastSyncTime: number;
|
|
88
|
+
/** 是否有未同步数据 */
|
|
89
|
+
hasDirtyData: boolean;
|
|
90
|
+
/** 有未同步数据的表格ID列表 */
|
|
91
|
+
dirtyGrids: string[];
|
|
92
|
+
}
|
|
74
93
|
/**
|
|
75
94
|
* 脏数据标记类型
|
|
76
95
|
*/
|
|
@@ -81,6 +100,18 @@ export type DirtyType = 'column' | 'query' | 'current';
|
|
|
81
100
|
export interface SyncConfig {
|
|
82
101
|
/** API 基础路径 */
|
|
83
102
|
apiBaseUrl: string;
|
|
103
|
+
/**
|
|
104
|
+
* 获取方案API路径(可选)
|
|
105
|
+
* 默认值: '/api/v1/ag-grid-plus/schemes'
|
|
106
|
+
* 用于GET请求,获取所有方案数据
|
|
107
|
+
*/
|
|
108
|
+
getApiPath?: string;
|
|
109
|
+
/**
|
|
110
|
+
* 同步方案API路径(可选)
|
|
111
|
+
* 默认值: '/api/v1/ag-grid-plus/schemes'
|
|
112
|
+
* 用于PUT请求,同步保存方案数据
|
|
113
|
+
*/
|
|
114
|
+
syncApiPath?: string;
|
|
84
115
|
/** 自动保存延迟(毫秒),默认 3000 */
|
|
85
116
|
autoSaveDelay?: number;
|
|
86
117
|
/** 后台同步间隔(毫秒),默认 300000 (5分钟) */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sumBy from "lodash/sumBy";
|
|
2
2
|
import _uniqueId from "lodash/uniqueId";
|
|
3
3
|
import _isArray from "lodash/isArray";
|
|
4
|
-
var _excluded = ["style", "loading", "params", "request", "dataSource", "treeKeyName", "treeParentName", "rowData", "gridRef", "headerTitle", "toolBarRender", "search", "hideTool", "onGridReady", "gridKey", "children", "defaultSearchExpand", "overlayNoRowsTemplateText", "queryDefaultRows", "onSelectedRowsChange", "enableQuerySchemes", "querySchemeStorageAdapter", "enableColumnSchemes", "columnSchemeStorageAdapter"];
|
|
4
|
+
var _excluded = ["style", "loading", "params", "request", "dataSource", "treeKeyName", "treeParentName", "rowData", "gridRef", "headerTitle", "toolBarRender", "search", "hideTool", "onGridReady", "gridKey", "children", "defaultSearchExpand", "overlayNoRowsTemplateText", "queryDefaultRows", "onSelectedRowsChange", "enableQuerySchemes", "querySchemeStorageAdapter", "querySchemeManager", "enableColumnSchemes", "columnSchemeStorageAdapter", "columnSchemeManager"];
|
|
5
5
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
6
6
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
7
7
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -37,6 +37,7 @@ import { localeText } from "./locale";
|
|
|
37
37
|
import { GridPlusContext } from "./context/gridContext";
|
|
38
38
|
import { useQuerySchemes, useQueryOrderManager } from "./querySchemes";
|
|
39
39
|
import { useColumnSchemes } from "./schemes";
|
|
40
|
+
import { useGlobalColumnAdapter, useGlobalQueryAdapter, isGlobalSyncInitialized } from "./storage/globalSyncManager";
|
|
40
41
|
import { createSafeHtmlTemplate } from "./utils/sanitize";
|
|
41
42
|
import { GridPlusError, ErrorType, ErrorSeverity } from "./errors";
|
|
42
43
|
import { logger } from "./utils/logger";
|
|
@@ -68,11 +69,13 @@ function AgGridPlus(props) {
|
|
|
68
69
|
queryDefaultRows = props.queryDefaultRows,
|
|
69
70
|
onSelectedRowsChange = props.onSelectedRowsChange,
|
|
70
71
|
_props$enableQuerySch = props.enableQuerySchemes,
|
|
71
|
-
enableQuerySchemes = _props$enableQuerySch === void 0 ?
|
|
72
|
+
enableQuerySchemes = _props$enableQuerySch === void 0 ? true : _props$enableQuerySch,
|
|
72
73
|
querySchemeStorageAdapter = props.querySchemeStorageAdapter,
|
|
74
|
+
propsQuerySchemeManager = props.querySchemeManager,
|
|
73
75
|
_props$enableColumnSc = props.enableColumnSchemes,
|
|
74
76
|
enableColumnSchemes = _props$enableColumnSc === void 0 ? true : _props$enableColumnSc,
|
|
75
77
|
columnSchemeStorageAdapter = props.columnSchemeStorageAdapter,
|
|
78
|
+
propsColumnSchemeManager = props.columnSchemeManager,
|
|
76
79
|
rest = _objectWithoutProperties(props, _excluded);
|
|
77
80
|
var _useGridPlusColumnSta = useGridPlusColumnState(),
|
|
78
81
|
onSaveColumnState = _useGridPlusColumnSta.onSaveColumnState,
|
|
@@ -131,10 +134,15 @@ function AgGridPlus(props) {
|
|
|
131
134
|
queryItemsOrder = _useState20[0],
|
|
132
135
|
setQueryItemsOrder = _useState20[1];
|
|
133
136
|
|
|
134
|
-
//
|
|
135
|
-
var
|
|
137
|
+
// 尝试获取全局适配器(如果已初始化)
|
|
138
|
+
var globalQueryAdapter = isGlobalSyncInitialized() ? useGlobalQueryAdapter() : undefined;
|
|
139
|
+
var globalColumnAdapter = isGlobalSyncInitialized() ? useGlobalColumnAdapter() : undefined;
|
|
140
|
+
|
|
141
|
+
// 自动创建查询方案管理器(如果未通过 props 提供)
|
|
142
|
+
var autoQuerySchemeManager = enableQuerySchemes && gridKey && !propsQuerySchemeManager ? useQuerySchemes({
|
|
136
143
|
gridId: gridKey,
|
|
137
|
-
|
|
144
|
+
// 优先使用全局适配器,否则使用 props 传入的适配器
|
|
145
|
+
storageAdapter: globalQueryAdapter || querySchemeStorageAdapter,
|
|
138
146
|
onSchemeChange: function onSchemeChange(scheme) {
|
|
139
147
|
if (scheme) {
|
|
140
148
|
setQueryItemsOrder(scheme.itemsOrder);
|
|
@@ -142,11 +150,15 @@ function AgGridPlus(props) {
|
|
|
142
150
|
}
|
|
143
151
|
}) : undefined;
|
|
144
152
|
|
|
153
|
+
// 优先使用 props 提供的管理器,否则使用自动创建的
|
|
154
|
+
var querySchemeManager = propsQuerySchemeManager || autoQuerySchemeManager;
|
|
155
|
+
|
|
145
156
|
// ============ 列配置方案管理 ============
|
|
146
|
-
//
|
|
147
|
-
var
|
|
157
|
+
// 自动创建列配置方案管理器(如果未通过 props 提供)
|
|
158
|
+
var autoColumnSchemeManager = enableColumnSchemes && gridKey && !propsColumnSchemeManager ? useColumnSchemes({
|
|
148
159
|
gridId: gridKey,
|
|
149
|
-
|
|
160
|
+
// 优先使用全局适配器,否则使用 props 传入的适配器
|
|
161
|
+
storageAdapter: globalColumnAdapter || columnSchemeStorageAdapter,
|
|
150
162
|
enableAutoSave: true,
|
|
151
163
|
onSchemeChange: function onSchemeChange(scheme) {
|
|
152
164
|
if (scheme && apiRef.current) {
|
|
@@ -157,6 +169,9 @@ function AgGridPlus(props) {
|
|
|
157
169
|
}
|
|
158
170
|
}
|
|
159
171
|
}) : undefined;
|
|
172
|
+
|
|
173
|
+
// 优先使用 props 提供的管理器,否则使用自动创建的
|
|
174
|
+
var columnSchemeManager = propsColumnSchemeManager || autoColumnSchemeManager;
|
|
160
175
|
useImperativeHandle(propsGridRef, function () {
|
|
161
176
|
return gridRef.current;
|
|
162
177
|
});
|
|
@@ -8,3 +8,5 @@ export { dateValueFormatter, dateTimeValueFormatter, convertFilterModel, convert
|
|
|
8
8
|
export { useColumnSchemes, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, SchemeSelector, SchemeManager } from "./schemes";
|
|
9
9
|
export type { ColumnScheme, SchemeManagerConfig, StorageAdapter, SchemeValidationResult, UseColumnSchemesReturn, SchemeSelectorProps, SchemeManagerProps } from "./schemes";
|
|
10
10
|
export type { GridPlusContextValue } from "./context/gridContext";
|
|
11
|
+
export { initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./storage";
|
|
12
|
+
export type { SyncConfig, SyncManagerEvents, SyncStatus, SchemeConflict } from "./storage";
|
|
@@ -7,4 +7,6 @@ export { AgGridPlus, AgGridColumn, GridPlusContext, useGridPlusColumnState };
|
|
|
7
7
|
export { dateValueFormatter, dateTimeValueFormatter, convertFilterModel, convertSortModel, flattenTreeDeep, toTree, flatten } from "./utils";
|
|
8
8
|
|
|
9
9
|
// 导出列配置方案管理功能
|
|
10
|
-
export { useColumnSchemes, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, SchemeSelector, SchemeManager } from "./schemes";
|
|
10
|
+
export { useColumnSchemes, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, SchemeSelector, SchemeManager } from "./schemes";
|
|
11
|
+
// 导出全局方案同步管理功能
|
|
12
|
+
export { initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./storage";
|
|
@@ -65,6 +65,11 @@ interface GridProps extends AgGridReactProps {
|
|
|
65
65
|
* 默认使用 LocalStorage,可传入自定义适配器实现服务端存储
|
|
66
66
|
*/
|
|
67
67
|
querySchemeStorageAdapter?: QueryStorageAdapter;
|
|
68
|
+
/**
|
|
69
|
+
* 查询方案管理器(可选)
|
|
70
|
+
* 如果不提供,组件会根据 gridKey 自动从全局方案管理器创建
|
|
71
|
+
*/
|
|
72
|
+
querySchemeManager?: any;
|
|
68
73
|
/**
|
|
69
74
|
* 是否启用列配置方案功能
|
|
70
75
|
* 默认值: true (自动启用)
|
|
@@ -75,6 +80,11 @@ interface GridProps extends AgGridReactProps {
|
|
|
75
80
|
* 默认使用 LocalStorage,可传入自定义适配器实现服务端存储
|
|
76
81
|
*/
|
|
77
82
|
columnSchemeStorageAdapter?: ColumnStorageAdapter;
|
|
83
|
+
/**
|
|
84
|
+
* 列配置方案管理器(可选)
|
|
85
|
+
* 如果不提供,组件会根据 gridKey 自动从全局方案管理器创建
|
|
86
|
+
*/
|
|
87
|
+
columnSchemeManager?: any;
|
|
78
88
|
/**
|
|
79
89
|
* 错误处理回调函数
|
|
80
90
|
* 当组件发生错误时调用,可用于自定义错误处理逻辑
|
|
@@ -19,6 +19,16 @@ export declare class SchemeSyncManager {
|
|
|
19
19
|
private autoSaveTimer?;
|
|
20
20
|
private backgroundSyncTimer?;
|
|
21
21
|
constructor(config: SyncConfig, events?: SyncManagerEvents);
|
|
22
|
+
/**
|
|
23
|
+
* 获取方案的完整 API URL (GET请求)
|
|
24
|
+
* @private
|
|
25
|
+
*/
|
|
26
|
+
private getGetApiUrl;
|
|
27
|
+
/**
|
|
28
|
+
* 同步方案的完整 API URL (PUT请求)
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
31
|
+
private getSyncApiUrl;
|
|
22
32
|
/**
|
|
23
33
|
* 初始化:从服务器加载所有数据
|
|
24
34
|
*/
|
|
@@ -19,6 +19,8 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
19
19
|
* 默认配置
|
|
20
20
|
*/
|
|
21
21
|
var DEFAULT_CONFIG = {
|
|
22
|
+
getApiPath: '/api/v1/ag-grid-plus/schemes',
|
|
23
|
+
syncApiPath: '/api/v1/ag-grid-plus/schemes',
|
|
22
24
|
autoSaveDelay: 3000,
|
|
23
25
|
backgroundSyncInterval: 300000,
|
|
24
26
|
// 5分钟
|
|
@@ -66,7 +68,7 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
66
68
|
type: 'application/json'
|
|
67
69
|
});
|
|
68
70
|
if (navigator.sendBeacon) {
|
|
69
|
-
navigator.sendBeacon(
|
|
71
|
+
navigator.sendBeacon(_this.getSyncApiUrl(), blob);
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
74
|
});
|
|
@@ -89,9 +91,29 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
89
91
|
}
|
|
90
92
|
|
|
91
93
|
/**
|
|
92
|
-
*
|
|
94
|
+
* 获取方案的完整 API URL (GET请求)
|
|
95
|
+
* @private
|
|
93
96
|
*/
|
|
94
97
|
_createClass(SchemeSyncManager, [{
|
|
98
|
+
key: "getGetApiUrl",
|
|
99
|
+
value: function getGetApiUrl() {
|
|
100
|
+
return "".concat(this.config.apiBaseUrl).concat(this.config.getApiPath);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* 同步方案的完整 API URL (PUT请求)
|
|
105
|
+
* @private
|
|
106
|
+
*/
|
|
107
|
+
}, {
|
|
108
|
+
key: "getSyncApiUrl",
|
|
109
|
+
value: function getSyncApiUrl() {
|
|
110
|
+
return "".concat(this.config.apiBaseUrl).concat(this.config.syncApiPath);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* 初始化:从服务器加载所有数据
|
|
115
|
+
*/
|
|
116
|
+
}, {
|
|
95
117
|
key: "initialize",
|
|
96
118
|
value: (function () {
|
|
97
119
|
var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
@@ -108,7 +130,7 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
108
130
|
case 3:
|
|
109
131
|
_context.prev = 3;
|
|
110
132
|
_context.next = 6;
|
|
111
|
-
return this.fetchWithRetry(
|
|
133
|
+
return this.fetchWithRetry(this.getGetApiUrl(), {
|
|
112
134
|
method: 'GET',
|
|
113
135
|
headers: {
|
|
114
136
|
'Content-Type': 'application/json'
|
|
@@ -388,7 +410,7 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
388
410
|
|
|
389
411
|
// 发送同步请求
|
|
390
412
|
_context2.next = 19;
|
|
391
|
-
return this.fetchWithRetry(
|
|
413
|
+
return this.fetchWithRetry(this.getSyncApiUrl(), {
|
|
392
414
|
method: 'PUT',
|
|
393
415
|
headers: {
|
|
394
416
|
'Content-Type': 'application/json'
|