@nokecy/qc-ui 1.0.77 → 1.0.80
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/index.d.ts +1 -1
- package/dist/cjs/ag-grid-plus/index.js +6 -0
- package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.d.ts +21 -0
- package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.js +232 -75
- package/dist/cjs/ag-grid-plus/storage/globalSyncManager.d.ts +6 -0
- package/dist/cjs/ag-grid-plus/storage/globalSyncManager.js +29 -0
- package/dist/cjs/ag-grid-plus/storage/types.d.ts +6 -0
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +6 -0
- package/dist/esm/ag-grid-plus/index.d.ts +1 -1
- package/dist/esm/ag-grid-plus/index.js +1 -1
- package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.d.ts +21 -0
- package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.js +232 -75
- package/dist/esm/ag-grid-plus/storage/globalSyncManager.d.ts +6 -0
- package/dist/esm/ag-grid-plus/storage/globalSyncManager.js +29 -0
- package/dist/esm/ag-grid-plus/storage/types.d.ts +6 -0
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +1 -1
|
@@ -9,4 +9,4 @@ export { dateValueFormatter, dateTimeValueFormatter, convertFilterModel, convert
|
|
|
9
9
|
// 导出列配置方案管理功能
|
|
10
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
11
|
// 导出全局方案同步管理功能
|
|
12
|
-
export { initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./storage";
|
|
12
|
+
export { initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, setToken, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./storage";
|
|
@@ -18,6 +18,7 @@ export declare class SchemeSyncManager {
|
|
|
18
18
|
private dirtyGrids;
|
|
19
19
|
private autoSaveTimer?;
|
|
20
20
|
private backgroundSyncTimer?;
|
|
21
|
+
private authToken;
|
|
21
22
|
constructor(config: SyncConfig, events?: SyncManagerEvents);
|
|
22
23
|
/**
|
|
23
24
|
* 获取方案的完整 API URL (GET请求)
|
|
@@ -29,6 +30,26 @@ export declare class SchemeSyncManager {
|
|
|
29
30
|
* @private
|
|
30
31
|
*/
|
|
31
32
|
private getSyncApiUrl;
|
|
33
|
+
/**
|
|
34
|
+
* 检查是否有有效的用户数据
|
|
35
|
+
* @private
|
|
36
|
+
*/
|
|
37
|
+
private hasValidData;
|
|
38
|
+
/**
|
|
39
|
+
* 重新加载数据(从服务器获取最新方案数据)
|
|
40
|
+
*/
|
|
41
|
+
reloadData(): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* 设置认证 Token
|
|
44
|
+
* @param token 认证令牌 (通常是 Bearer Token)
|
|
45
|
+
* @param autoReload 是否在设置 token 后自动重新加载数据(默认 true)
|
|
46
|
+
*/
|
|
47
|
+
setToken(token: string | null, autoReload?: boolean): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* 获取请求头(包含认证信息)
|
|
50
|
+
* @private
|
|
51
|
+
*/
|
|
52
|
+
private getHeaders;
|
|
32
53
|
/**
|
|
33
54
|
* 初始化:从服务器加载所有数据
|
|
34
55
|
*/
|
|
@@ -58,6 +58,8 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
58
58
|
// 定时器
|
|
59
59
|
_defineProperty(this, "autoSaveTimer", void 0);
|
|
60
60
|
_defineProperty(this, "backgroundSyncTimer", void 0);
|
|
61
|
+
// 认证 Token
|
|
62
|
+
_defineProperty(this, "authToken", null);
|
|
61
63
|
/**
|
|
62
64
|
* 页面卸载前同步
|
|
63
65
|
*/
|
|
@@ -105,6 +107,12 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
105
107
|
this.config = _objectSpread(_objectSpread({}, DEFAULT_CONFIG), config);
|
|
106
108
|
this.events = events;
|
|
107
109
|
|
|
110
|
+
// 如果配置中提供了 token,立即设置
|
|
111
|
+
if (config.token) {
|
|
112
|
+
this.authToken = config.token;
|
|
113
|
+
console.log('[SchemeSyncManager] 从配置中设置了初始 Token');
|
|
114
|
+
}
|
|
115
|
+
|
|
108
116
|
// 初始化空数据
|
|
109
117
|
this.allData = {
|
|
110
118
|
columnSchemes: {},
|
|
@@ -141,58 +149,209 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
141
149
|
}
|
|
142
150
|
|
|
143
151
|
/**
|
|
144
|
-
*
|
|
152
|
+
* 检查是否有有效的用户数据
|
|
153
|
+
* @private
|
|
145
154
|
*/
|
|
146
155
|
}, {
|
|
147
|
-
key: "
|
|
156
|
+
key: "hasValidData",
|
|
157
|
+
value: function hasValidData() {
|
|
158
|
+
var hasColumnSchemes = Object.keys(this.allData.columnSchemes).length > 0;
|
|
159
|
+
var hasQuerySchemes = Object.keys(this.allData.querySchemes).length > 0;
|
|
160
|
+
var hasCurrentSchemes = Object.keys(this.allData.currentSchemes).length > 0;
|
|
161
|
+
return hasColumnSchemes || hasQuerySchemes || hasCurrentSchemes;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* 重新加载数据(从服务器获取最新方案数据)
|
|
166
|
+
*/
|
|
167
|
+
}, {
|
|
168
|
+
key: "reloadData",
|
|
148
169
|
value: (function () {
|
|
149
|
-
var
|
|
170
|
+
var _reloadData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
150
171
|
var response, responseData, allSchemesData;
|
|
151
172
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
152
173
|
while (1) switch (_context.prev = _context.next) {
|
|
174
|
+
case 0:
|
|
175
|
+
console.log('[SchemeSyncManager] 重新加载数据...');
|
|
176
|
+
_context.prev = 1;
|
|
177
|
+
_context.next = 4;
|
|
178
|
+
return this.fetchWithRetry(this.getGetApiUrl(), {
|
|
179
|
+
method: 'GET',
|
|
180
|
+
headers: this.getHeaders()
|
|
181
|
+
});
|
|
182
|
+
case 4:
|
|
183
|
+
response = _context.sent;
|
|
184
|
+
_context.next = 7;
|
|
185
|
+
return response.json();
|
|
186
|
+
case 7:
|
|
187
|
+
responseData = _context.sent;
|
|
188
|
+
if (!(responseData.success !== undefined)) {
|
|
189
|
+
_context.next = 14;
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
if (responseData.success) {
|
|
193
|
+
_context.next = 11;
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
throw new Error('重新加载失败:服务器返回错误');
|
|
197
|
+
case 11:
|
|
198
|
+
allSchemesData = responseData.data;
|
|
199
|
+
_context.next = 19;
|
|
200
|
+
break;
|
|
201
|
+
case 14:
|
|
202
|
+
if (!(responseData.columnSchemes !== undefined)) {
|
|
203
|
+
_context.next = 18;
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
allSchemesData = responseData;
|
|
207
|
+
_context.next = 19;
|
|
208
|
+
break;
|
|
209
|
+
case 18:
|
|
210
|
+
throw new Error('重新加载失败:服务器返回的数据格式不正确');
|
|
211
|
+
case 19:
|
|
212
|
+
// 反序列化并更新数据
|
|
213
|
+
this.allData = this.deserializeSchemesData(allSchemesData);
|
|
214
|
+
this.lastSyncTime = allSchemesData.syncTime || Date.now();
|
|
215
|
+
console.log('[SchemeSyncManager] 数据重新加载成功:', {
|
|
216
|
+
columnSchemes: Object.keys(this.allData.columnSchemes).length,
|
|
217
|
+
querySchemes: Object.keys(this.allData.querySchemes).length,
|
|
218
|
+
syncTime: new Date(this.lastSyncTime).toISOString()
|
|
219
|
+
});
|
|
220
|
+
_context.next = 28;
|
|
221
|
+
break;
|
|
222
|
+
case 24:
|
|
223
|
+
_context.prev = 24;
|
|
224
|
+
_context.t0 = _context["catch"](1);
|
|
225
|
+
console.error('[SchemeSyncManager] 重新加载数据失败:', _context.t0);
|
|
226
|
+
throw _context.t0;
|
|
227
|
+
case 28:
|
|
228
|
+
case "end":
|
|
229
|
+
return _context.stop();
|
|
230
|
+
}
|
|
231
|
+
}, _callee, this, [[1, 24]]);
|
|
232
|
+
}));
|
|
233
|
+
function reloadData() {
|
|
234
|
+
return _reloadData.apply(this, arguments);
|
|
235
|
+
}
|
|
236
|
+
return reloadData;
|
|
237
|
+
}()
|
|
238
|
+
/**
|
|
239
|
+
* 设置认证 Token
|
|
240
|
+
* @param token 认证令牌 (通常是 Bearer Token)
|
|
241
|
+
* @param autoReload 是否在设置 token 后自动重新加载数据(默认 true)
|
|
242
|
+
*/
|
|
243
|
+
)
|
|
244
|
+
}, {
|
|
245
|
+
key: "setToken",
|
|
246
|
+
value: (function () {
|
|
247
|
+
var _setToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(token) {
|
|
248
|
+
var autoReload,
|
|
249
|
+
previousToken,
|
|
250
|
+
_args2 = arguments;
|
|
251
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
252
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
253
|
+
case 0:
|
|
254
|
+
autoReload = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : true;
|
|
255
|
+
previousToken = this.authToken;
|
|
256
|
+
this.authToken = token;
|
|
257
|
+
console.log('[SchemeSyncManager] Token 已更新');
|
|
258
|
+
|
|
259
|
+
// 如果已经初始化,且之前没有 token,现在有了 token,且数据为空,自动重新加载
|
|
260
|
+
if (!(autoReload && this.initialized && !previousToken && token && !this.hasValidData())) {
|
|
261
|
+
_context2.next = 14;
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
264
|
+
console.log('[SchemeSyncManager] 检测到首次设置 Token 且无数据,自动重新加载...');
|
|
265
|
+
_context2.prev = 6;
|
|
266
|
+
_context2.next = 9;
|
|
267
|
+
return this.reloadData();
|
|
268
|
+
case 9:
|
|
269
|
+
_context2.next = 14;
|
|
270
|
+
break;
|
|
271
|
+
case 11:
|
|
272
|
+
_context2.prev = 11;
|
|
273
|
+
_context2.t0 = _context2["catch"](6);
|
|
274
|
+
console.error('[SchemeSyncManager] Token 设置后自动重新加载失败:', _context2.t0);
|
|
275
|
+
// 不抛出错误,允许继续使用
|
|
276
|
+
case 14:
|
|
277
|
+
case "end":
|
|
278
|
+
return _context2.stop();
|
|
279
|
+
}
|
|
280
|
+
}, _callee2, this, [[6, 11]]);
|
|
281
|
+
}));
|
|
282
|
+
function setToken(_x) {
|
|
283
|
+
return _setToken.apply(this, arguments);
|
|
284
|
+
}
|
|
285
|
+
return setToken;
|
|
286
|
+
}()
|
|
287
|
+
/**
|
|
288
|
+
* 获取请求头(包含认证信息)
|
|
289
|
+
* @private
|
|
290
|
+
*/
|
|
291
|
+
)
|
|
292
|
+
}, {
|
|
293
|
+
key: "getHeaders",
|
|
294
|
+
value: function getHeaders() {
|
|
295
|
+
var headers = {
|
|
296
|
+
'Content-Type': 'application/json'
|
|
297
|
+
};
|
|
298
|
+
if (this.authToken) {
|
|
299
|
+
headers['Authorization'] = "Bearer ".concat(this.authToken);
|
|
300
|
+
}
|
|
301
|
+
return headers;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* 初始化:从服务器加载所有数据
|
|
306
|
+
*/
|
|
307
|
+
}, {
|
|
308
|
+
key: "initialize",
|
|
309
|
+
value: (function () {
|
|
310
|
+
var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
311
|
+
var response, responseData, allSchemesData;
|
|
312
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
313
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
153
314
|
case 0:
|
|
154
315
|
if (!this.initialized) {
|
|
155
|
-
|
|
316
|
+
_context3.next = 3;
|
|
156
317
|
break;
|
|
157
318
|
}
|
|
158
319
|
console.warn('[SchemeSyncManager] 已经初始化,跳过重复初始化');
|
|
159
|
-
return
|
|
320
|
+
return _context3.abrupt("return");
|
|
160
321
|
case 3:
|
|
161
|
-
|
|
162
|
-
|
|
322
|
+
_context3.prev = 3;
|
|
323
|
+
_context3.next = 6;
|
|
163
324
|
return this.fetchWithRetry(this.getGetApiUrl(), {
|
|
164
325
|
method: 'GET',
|
|
165
|
-
headers:
|
|
166
|
-
'Content-Type': 'application/json'
|
|
167
|
-
}
|
|
326
|
+
headers: this.getHeaders()
|
|
168
327
|
});
|
|
169
328
|
case 6:
|
|
170
|
-
response =
|
|
171
|
-
|
|
329
|
+
response = _context3.sent;
|
|
330
|
+
_context3.next = 9;
|
|
172
331
|
return response.json();
|
|
173
332
|
case 9:
|
|
174
|
-
responseData =
|
|
333
|
+
responseData = _context3.sent;
|
|
175
334
|
if (!(responseData.success !== undefined)) {
|
|
176
|
-
|
|
335
|
+
_context3.next = 16;
|
|
177
336
|
break;
|
|
178
337
|
}
|
|
179
338
|
if (responseData.success) {
|
|
180
|
-
|
|
339
|
+
_context3.next = 13;
|
|
181
340
|
break;
|
|
182
341
|
}
|
|
183
342
|
throw new Error('初始化失败:服务器返回错误');
|
|
184
343
|
case 13:
|
|
185
344
|
allSchemesData = responseData.data;
|
|
186
|
-
|
|
345
|
+
_context3.next = 21;
|
|
187
346
|
break;
|
|
188
347
|
case 16:
|
|
189
348
|
if (!(responseData.columnSchemes !== undefined)) {
|
|
190
|
-
|
|
349
|
+
_context3.next = 20;
|
|
191
350
|
break;
|
|
192
351
|
}
|
|
193
352
|
// 格式2: 直接返回 AllSchemesData
|
|
194
353
|
allSchemesData = responseData;
|
|
195
|
-
|
|
354
|
+
_context3.next = 21;
|
|
196
355
|
break;
|
|
197
356
|
case 20:
|
|
198
357
|
throw new Error('初始化失败:服务器返回的数据格式不正确');
|
|
@@ -211,18 +370,18 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
211
370
|
querySchemes: Object.keys(this.allData.querySchemes).length,
|
|
212
371
|
syncTime: new Date(this.lastSyncTime).toISOString()
|
|
213
372
|
});
|
|
214
|
-
|
|
373
|
+
_context3.next = 32;
|
|
215
374
|
break;
|
|
216
375
|
case 28:
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
console.error('[SchemeSyncManager] 初始化失败:',
|
|
220
|
-
throw
|
|
376
|
+
_context3.prev = 28;
|
|
377
|
+
_context3.t0 = _context3["catch"](3);
|
|
378
|
+
console.error('[SchemeSyncManager] 初始化失败:', _context3.t0);
|
|
379
|
+
throw _context3.t0;
|
|
221
380
|
case 32:
|
|
222
381
|
case "end":
|
|
223
|
-
return
|
|
382
|
+
return _context3.stop();
|
|
224
383
|
}
|
|
225
|
-
},
|
|
384
|
+
}, _callee3, this, [[3, 28]]);
|
|
226
385
|
}));
|
|
227
386
|
function initialize() {
|
|
228
387
|
return _initialize.apply(this, arguments);
|
|
@@ -396,31 +555,31 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
396
555
|
}, {
|
|
397
556
|
key: "syncNow",
|
|
398
557
|
value: (function () {
|
|
399
|
-
var _syncNow = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
558
|
+
var _syncNow = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
400
559
|
var _this$events$onSyncSt,
|
|
401
560
|
_this$events,
|
|
402
561
|
_this4 = this;
|
|
403
562
|
var _this$events$onSyncSu, _this$events3, _syncResult$conflicts, requestData, dirtyColumnGrids, dirtyQueryGrids, dirtyCurrentGrids, response, responseData, syncResult, _this$events$onConfli, _this$events2, _this$events$onSyncEr, _this$events4;
|
|
404
|
-
return _regeneratorRuntime().wrap(function
|
|
405
|
-
while (1) switch (
|
|
563
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
564
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
406
565
|
case 0:
|
|
407
566
|
if (!this.syncing) {
|
|
408
|
-
|
|
567
|
+
_context4.next = 3;
|
|
409
568
|
break;
|
|
410
569
|
}
|
|
411
570
|
console.log('[SchemeSyncManager] 正在同步中,跳过重复请求');
|
|
412
|
-
return
|
|
571
|
+
return _context4.abrupt("return");
|
|
413
572
|
case 3:
|
|
414
573
|
if (this.hasDirtyData()) {
|
|
415
|
-
|
|
574
|
+
_context4.next = 6;
|
|
416
575
|
break;
|
|
417
576
|
}
|
|
418
577
|
console.log('[SchemeSyncManager] 没有需要同步的数据');
|
|
419
|
-
return
|
|
578
|
+
return _context4.abrupt("return");
|
|
420
579
|
case 6:
|
|
421
580
|
this.syncing = true;
|
|
422
581
|
(_this$events$onSyncSt = (_this$events = this.events).onSyncStart) === null || _this$events$onSyncSt === void 0 || _this$events$onSyncSt.call(_this$events);
|
|
423
|
-
|
|
582
|
+
_context4.prev = 8;
|
|
424
583
|
// 构建同步请求数据
|
|
425
584
|
requestData = {
|
|
426
585
|
clientSyncTime: this.lastSyncTime
|
|
@@ -471,36 +630,34 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
471
630
|
}
|
|
472
631
|
|
|
473
632
|
// 发送同步请求
|
|
474
|
-
|
|
633
|
+
_context4.next = 19;
|
|
475
634
|
return this.fetchWithRetry(this.getSyncApiUrl(), {
|
|
476
635
|
method: 'POST',
|
|
477
|
-
headers:
|
|
478
|
-
'Content-Type': 'application/json'
|
|
479
|
-
},
|
|
636
|
+
headers: this.getHeaders(),
|
|
480
637
|
body: JSON.stringify(requestData)
|
|
481
638
|
});
|
|
482
639
|
case 19:
|
|
483
|
-
response =
|
|
484
|
-
|
|
640
|
+
response = _context4.sent;
|
|
641
|
+
_context4.next = 22;
|
|
485
642
|
return response.json();
|
|
486
643
|
case 22:
|
|
487
|
-
responseData =
|
|
644
|
+
responseData = _context4.sent;
|
|
488
645
|
if (!(responseData.success !== undefined)) {
|
|
489
|
-
|
|
646
|
+
_context4.next = 29;
|
|
490
647
|
break;
|
|
491
648
|
}
|
|
492
649
|
if (responseData.success) {
|
|
493
|
-
|
|
650
|
+
_context4.next = 26;
|
|
494
651
|
break;
|
|
495
652
|
}
|
|
496
653
|
throw new Error(responseData.error || '同步失败');
|
|
497
654
|
case 26:
|
|
498
655
|
syncResult = responseData;
|
|
499
|
-
|
|
656
|
+
_context4.next = 34;
|
|
500
657
|
break;
|
|
501
658
|
case 29:
|
|
502
659
|
if (!(responseData.syncTime !== undefined)) {
|
|
503
|
-
|
|
660
|
+
_context4.next = 33;
|
|
504
661
|
break;
|
|
505
662
|
}
|
|
506
663
|
// 格式2: 直接返回数据格式,构造一个兼容的结果对象
|
|
@@ -509,7 +666,7 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
509
666
|
syncTime: responseData.syncTime,
|
|
510
667
|
conflicts: responseData.conflicts
|
|
511
668
|
};
|
|
512
|
-
|
|
669
|
+
_context4.next = 34;
|
|
513
670
|
break;
|
|
514
671
|
case 33:
|
|
515
672
|
throw new Error('同步失败:服务器返回的数据格式不正确');
|
|
@@ -533,23 +690,23 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
533
690
|
syncTime: new Date(this.lastSyncTime).toISOString(),
|
|
534
691
|
conflicts: ((_syncResult$conflicts = syncResult.conflicts) === null || _syncResult$conflicts === void 0 ? void 0 : _syncResult$conflicts.length) || 0
|
|
535
692
|
});
|
|
536
|
-
|
|
693
|
+
_context4.next = 46;
|
|
537
694
|
break;
|
|
538
695
|
case 41:
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
console.error('[SchemeSyncManager] 同步失败:',
|
|
542
|
-
(_this$events$onSyncEr = (_this$events4 = this.events).onSyncError) === null || _this$events$onSyncEr === void 0 || _this$events$onSyncEr.call(_this$events4,
|
|
543
|
-
throw
|
|
696
|
+
_context4.prev = 41;
|
|
697
|
+
_context4.t0 = _context4["catch"](8);
|
|
698
|
+
console.error('[SchemeSyncManager] 同步失败:', _context4.t0);
|
|
699
|
+
(_this$events$onSyncEr = (_this$events4 = this.events).onSyncError) === null || _this$events$onSyncEr === void 0 || _this$events$onSyncEr.call(_this$events4, _context4.t0);
|
|
700
|
+
throw _context4.t0;
|
|
544
701
|
case 46:
|
|
545
|
-
|
|
702
|
+
_context4.prev = 46;
|
|
546
703
|
this.syncing = false;
|
|
547
|
-
return
|
|
704
|
+
return _context4.finish(46);
|
|
548
705
|
case 49:
|
|
549
706
|
case "end":
|
|
550
|
-
return
|
|
707
|
+
return _context4.stop();
|
|
551
708
|
}
|
|
552
|
-
},
|
|
709
|
+
}, _callee4, this, [[8, 41, 46, 49]]);
|
|
553
710
|
}));
|
|
554
711
|
function syncNow() {
|
|
555
712
|
return _syncNow.apply(this, arguments);
|
|
@@ -660,58 +817,58 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
660
817
|
* 带重试的 fetch 请求
|
|
661
818
|
*/
|
|
662
819
|
function () {
|
|
663
|
-
var _fetchWithRetry = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
820
|
+
var _fetchWithRetry = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(url, options) {
|
|
664
821
|
var retries,
|
|
665
822
|
controller,
|
|
666
823
|
timeoutId,
|
|
667
824
|
response,
|
|
668
|
-
|
|
669
|
-
return _regeneratorRuntime().wrap(function
|
|
670
|
-
while (1) switch (
|
|
825
|
+
_args5 = arguments;
|
|
826
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
827
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
671
828
|
case 0:
|
|
672
|
-
retries =
|
|
673
|
-
|
|
829
|
+
retries = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : this.config.maxRetries;
|
|
830
|
+
_context5.prev = 1;
|
|
674
831
|
controller = new AbortController();
|
|
675
832
|
timeoutId = setTimeout(function () {
|
|
676
833
|
return controller.abort();
|
|
677
834
|
}, this.config.requestTimeout);
|
|
678
|
-
|
|
835
|
+
_context5.next = 6;
|
|
679
836
|
return fetch(url, _objectSpread(_objectSpread({}, options), {}, {
|
|
680
837
|
signal: controller.signal
|
|
681
838
|
}));
|
|
682
839
|
case 6:
|
|
683
|
-
response =
|
|
840
|
+
response = _context5.sent;
|
|
684
841
|
clearTimeout(timeoutId);
|
|
685
842
|
if (response.ok) {
|
|
686
|
-
|
|
843
|
+
_context5.next = 10;
|
|
687
844
|
break;
|
|
688
845
|
}
|
|
689
846
|
throw new Error("HTTP ".concat(response.status, ": ").concat(response.statusText));
|
|
690
847
|
case 10:
|
|
691
|
-
return
|
|
848
|
+
return _context5.abrupt("return", response);
|
|
692
849
|
case 13:
|
|
693
|
-
|
|
694
|
-
|
|
850
|
+
_context5.prev = 13;
|
|
851
|
+
_context5.t0 = _context5["catch"](1);
|
|
695
852
|
if (!(retries > 0)) {
|
|
696
|
-
|
|
853
|
+
_context5.next = 20;
|
|
697
854
|
break;
|
|
698
855
|
}
|
|
699
|
-
console.warn("[SchemeSyncManager] \u8BF7\u6C42\u5931\u8D25\uFF0C\u91CD\u8BD5\u4E2D... (\u5269\u4F59 ".concat(retries, " \u6B21)"),
|
|
700
|
-
|
|
856
|
+
console.warn("[SchemeSyncManager] \u8BF7\u6C42\u5931\u8D25\uFF0C\u91CD\u8BD5\u4E2D... (\u5269\u4F59 ".concat(retries, " \u6B21)"), _context5.t0);
|
|
857
|
+
_context5.next = 19;
|
|
701
858
|
return new Promise(function (resolve) {
|
|
702
859
|
return setTimeout(resolve, 1000);
|
|
703
860
|
});
|
|
704
861
|
case 19:
|
|
705
|
-
return
|
|
862
|
+
return _context5.abrupt("return", this.fetchWithRetry(url, options, retries - 1));
|
|
706
863
|
case 20:
|
|
707
|
-
throw
|
|
864
|
+
throw _context5.t0;
|
|
708
865
|
case 21:
|
|
709
866
|
case "end":
|
|
710
|
-
return
|
|
867
|
+
return _context5.stop();
|
|
711
868
|
}
|
|
712
|
-
},
|
|
869
|
+
}, _callee5, this, [[1, 13]]);
|
|
713
870
|
}));
|
|
714
|
-
function fetchWithRetry(
|
|
871
|
+
function fetchWithRetry(_x2, _x3) {
|
|
715
872
|
return _fetchWithRetry.apply(this, arguments);
|
|
716
873
|
}
|
|
717
874
|
return fetchWithRetry;
|
|
@@ -58,6 +58,12 @@ export declare function getGlobalSyncStatus(): {
|
|
|
58
58
|
* 检查是否有未同步的数据
|
|
59
59
|
*/
|
|
60
60
|
export declare function hasUnsyncedData(): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* 设置认证 Token
|
|
63
|
+
* @param token 认证令牌 (通常是 Bearer Token)
|
|
64
|
+
* @param autoReload 是否在设置 token 后自动重新加载数据(默认 true)
|
|
65
|
+
*/
|
|
66
|
+
export declare function setToken(token: string | null, autoReload?: boolean): Promise<void>;
|
|
61
67
|
/**
|
|
62
68
|
* 获取有未同步数据的表格列表
|
|
63
69
|
*/
|
|
@@ -248,9 +248,38 @@ export function hasUnsyncedData() {
|
|
|
248
248
|
return manager.hasDirtyData();
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
+
/**
|
|
252
|
+
* 设置认证 Token
|
|
253
|
+
* @param token 认证令牌 (通常是 Bearer Token)
|
|
254
|
+
* @param autoReload 是否在设置 token 后自动重新加载数据(默认 true)
|
|
255
|
+
*/
|
|
256
|
+
export function setToken(_x3) {
|
|
257
|
+
return _setToken.apply(this, arguments);
|
|
258
|
+
}
|
|
259
|
+
|
|
251
260
|
/**
|
|
252
261
|
* 获取有未同步数据的表格列表
|
|
253
262
|
*/
|
|
263
|
+
function _setToken() {
|
|
264
|
+
_setToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(token) {
|
|
265
|
+
var autoReload,
|
|
266
|
+
manager,
|
|
267
|
+
_args4 = arguments;
|
|
268
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
269
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
270
|
+
case 0:
|
|
271
|
+
autoReload = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : true;
|
|
272
|
+
manager = getGlobalSyncManager();
|
|
273
|
+
_context4.next = 4;
|
|
274
|
+
return manager.setToken(token, autoReload);
|
|
275
|
+
case 4:
|
|
276
|
+
case "end":
|
|
277
|
+
return _context4.stop();
|
|
278
|
+
}
|
|
279
|
+
}, _callee4);
|
|
280
|
+
}));
|
|
281
|
+
return _setToken.apply(this, arguments);
|
|
282
|
+
}
|
|
254
283
|
export function getUnsyncedGrids() {
|
|
255
284
|
var manager = getGlobalSyncManager();
|
|
256
285
|
return manager.getDirtyGridIds();
|
|
@@ -100,6 +100,12 @@ export type DirtyType = 'column' | 'query' | 'current';
|
|
|
100
100
|
export interface SyncConfig {
|
|
101
101
|
/** API 基础路径 */
|
|
102
102
|
apiBaseUrl: string;
|
|
103
|
+
/**
|
|
104
|
+
* 认证令牌(可选)
|
|
105
|
+
* 如果在初始化时提供,将在所有请求中自动添加 Authorization header
|
|
106
|
+
* 也可以稍后通过 setToken() 方法设置
|
|
107
|
+
*/
|
|
108
|
+
token?: string;
|
|
103
109
|
/**
|
|
104
110
|
* 获取方案API路径(可选)
|
|
105
111
|
* 默认值: '/api/v1/ag-grid-plus/schemes'
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AgGridColumn, AgGridPlus, flattenTreeDeep, GridPlusContext, useGridPlusColumnState, useColumnSchemes, SchemeSelector, SchemeManager, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./ag-grid-plus";
|
|
1
|
+
import { AgGridColumn, AgGridPlus, flattenTreeDeep, GridPlusContext, useGridPlusColumnState, useColumnSchemes, SchemeSelector, SchemeManager, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, setToken, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } 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, useColumnSchemes, SchemeSelector, SchemeManager, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager, };
|
|
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, useColumnSchemes, SchemeSelector, SchemeManager, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, setToken, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager, };
|
|
25
25
|
export type * from "./generatedListPage";
|
|
26
26
|
export type * from "./standardFormDialog";
|
|
27
27
|
export type * from "./deleteConfirm";
|
package/dist/esm/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { AgGridColumn, AgGridPlus, flattenTreeDeep, GridPlusContext, useGridPlus
|
|
|
2
2
|
// 列配置方案管理
|
|
3
3
|
useColumnSchemes, SchemeSelector, SchemeManager, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH,
|
|
4
4
|
// 全局方案同步管理
|
|
5
|
-
initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./ag-grid-plus";
|
|
5
|
+
initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, setToken, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./ag-grid-plus";
|
|
6
6
|
import ArrayTable from "./array-table";
|
|
7
7
|
import ArrayTableIndex from "./array-table-index";
|
|
8
8
|
import { ColumnPresets } from "./array-table/columnHelper";
|
|
@@ -29,7 +29,7 @@ export { AgGridColumn, AgGridPlus, ArrayTable, ArrayTableIndex, ColumnPresets, C
|
|
|
29
29
|
// 列配置方案管理
|
|
30
30
|
useColumnSchemes, SchemeSelector, SchemeManager, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH,
|
|
31
31
|
// 全局方案同步管理
|
|
32
|
-
initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager };
|
|
32
|
+
initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, setToken, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager };
|
|
33
33
|
|
|
34
34
|
// 导出类型定义
|
|
35
35
|
|