@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
|
@@ -8,5 +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";
|
|
11
|
+
export { initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, setToken, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./storage";
|
|
12
12
|
export type { SyncConfig, SyncManagerEvents, SyncStatus, SchemeConflict } from "./storage";
|
|
@@ -165,6 +165,12 @@ Object.defineProperty(exports, "isGlobalSyncInitialized", {
|
|
|
165
165
|
return _storage.isGlobalSyncInitialized;
|
|
166
166
|
}
|
|
167
167
|
});
|
|
168
|
+
Object.defineProperty(exports, "setToken", {
|
|
169
|
+
enumerable: true,
|
|
170
|
+
get: function get() {
|
|
171
|
+
return _storage.setToken;
|
|
172
|
+
}
|
|
173
|
+
});
|
|
168
174
|
Object.defineProperty(exports, "syncAllSchemes", {
|
|
169
175
|
enumerable: true,
|
|
170
176
|
get: function get() {
|
|
@@ -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
|
*/
|
|
@@ -64,6 +64,8 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
64
64
|
// 定时器
|
|
65
65
|
_defineProperty(this, "autoSaveTimer", void 0);
|
|
66
66
|
_defineProperty(this, "backgroundSyncTimer", void 0);
|
|
67
|
+
// 认证 Token
|
|
68
|
+
_defineProperty(this, "authToken", null);
|
|
67
69
|
/**
|
|
68
70
|
* 页面卸载前同步
|
|
69
71
|
*/
|
|
@@ -111,6 +113,12 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
111
113
|
this.config = _objectSpread(_objectSpread({}, DEFAULT_CONFIG), config);
|
|
112
114
|
this.events = events;
|
|
113
115
|
|
|
116
|
+
// 如果配置中提供了 token,立即设置
|
|
117
|
+
if (config.token) {
|
|
118
|
+
this.authToken = config.token;
|
|
119
|
+
console.log('[SchemeSyncManager] 从配置中设置了初始 Token');
|
|
120
|
+
}
|
|
121
|
+
|
|
114
122
|
// 初始化空数据
|
|
115
123
|
this.allData = {
|
|
116
124
|
columnSchemes: {},
|
|
@@ -147,58 +155,209 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
147
155
|
}
|
|
148
156
|
|
|
149
157
|
/**
|
|
150
|
-
*
|
|
158
|
+
* 检查是否有有效的用户数据
|
|
159
|
+
* @private
|
|
151
160
|
*/
|
|
152
161
|
}, {
|
|
153
|
-
key: "
|
|
162
|
+
key: "hasValidData",
|
|
163
|
+
value: function hasValidData() {
|
|
164
|
+
var hasColumnSchemes = Object.keys(this.allData.columnSchemes).length > 0;
|
|
165
|
+
var hasQuerySchemes = Object.keys(this.allData.querySchemes).length > 0;
|
|
166
|
+
var hasCurrentSchemes = Object.keys(this.allData.currentSchemes).length > 0;
|
|
167
|
+
return hasColumnSchemes || hasQuerySchemes || hasCurrentSchemes;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* 重新加载数据(从服务器获取最新方案数据)
|
|
172
|
+
*/
|
|
173
|
+
}, {
|
|
174
|
+
key: "reloadData",
|
|
154
175
|
value: (function () {
|
|
155
|
-
var
|
|
176
|
+
var _reloadData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
156
177
|
var response, responseData, allSchemesData;
|
|
157
178
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
158
179
|
while (1) switch (_context.prev = _context.next) {
|
|
180
|
+
case 0:
|
|
181
|
+
console.log('[SchemeSyncManager] 重新加载数据...');
|
|
182
|
+
_context.prev = 1;
|
|
183
|
+
_context.next = 4;
|
|
184
|
+
return this.fetchWithRetry(this.getGetApiUrl(), {
|
|
185
|
+
method: 'GET',
|
|
186
|
+
headers: this.getHeaders()
|
|
187
|
+
});
|
|
188
|
+
case 4:
|
|
189
|
+
response = _context.sent;
|
|
190
|
+
_context.next = 7;
|
|
191
|
+
return response.json();
|
|
192
|
+
case 7:
|
|
193
|
+
responseData = _context.sent;
|
|
194
|
+
if (!(responseData.success !== undefined)) {
|
|
195
|
+
_context.next = 14;
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
if (responseData.success) {
|
|
199
|
+
_context.next = 11;
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
throw new Error('重新加载失败:服务器返回错误');
|
|
203
|
+
case 11:
|
|
204
|
+
allSchemesData = responseData.data;
|
|
205
|
+
_context.next = 19;
|
|
206
|
+
break;
|
|
207
|
+
case 14:
|
|
208
|
+
if (!(responseData.columnSchemes !== undefined)) {
|
|
209
|
+
_context.next = 18;
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
allSchemesData = responseData;
|
|
213
|
+
_context.next = 19;
|
|
214
|
+
break;
|
|
215
|
+
case 18:
|
|
216
|
+
throw new Error('重新加载失败:服务器返回的数据格式不正确');
|
|
217
|
+
case 19:
|
|
218
|
+
// 反序列化并更新数据
|
|
219
|
+
this.allData = this.deserializeSchemesData(allSchemesData);
|
|
220
|
+
this.lastSyncTime = allSchemesData.syncTime || Date.now();
|
|
221
|
+
console.log('[SchemeSyncManager] 数据重新加载成功:', {
|
|
222
|
+
columnSchemes: Object.keys(this.allData.columnSchemes).length,
|
|
223
|
+
querySchemes: Object.keys(this.allData.querySchemes).length,
|
|
224
|
+
syncTime: new Date(this.lastSyncTime).toISOString()
|
|
225
|
+
});
|
|
226
|
+
_context.next = 28;
|
|
227
|
+
break;
|
|
228
|
+
case 24:
|
|
229
|
+
_context.prev = 24;
|
|
230
|
+
_context.t0 = _context["catch"](1);
|
|
231
|
+
console.error('[SchemeSyncManager] 重新加载数据失败:', _context.t0);
|
|
232
|
+
throw _context.t0;
|
|
233
|
+
case 28:
|
|
234
|
+
case "end":
|
|
235
|
+
return _context.stop();
|
|
236
|
+
}
|
|
237
|
+
}, _callee, this, [[1, 24]]);
|
|
238
|
+
}));
|
|
239
|
+
function reloadData() {
|
|
240
|
+
return _reloadData.apply(this, arguments);
|
|
241
|
+
}
|
|
242
|
+
return reloadData;
|
|
243
|
+
}()
|
|
244
|
+
/**
|
|
245
|
+
* 设置认证 Token
|
|
246
|
+
* @param token 认证令牌 (通常是 Bearer Token)
|
|
247
|
+
* @param autoReload 是否在设置 token 后自动重新加载数据(默认 true)
|
|
248
|
+
*/
|
|
249
|
+
)
|
|
250
|
+
}, {
|
|
251
|
+
key: "setToken",
|
|
252
|
+
value: (function () {
|
|
253
|
+
var _setToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(token) {
|
|
254
|
+
var autoReload,
|
|
255
|
+
previousToken,
|
|
256
|
+
_args2 = arguments;
|
|
257
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
258
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
259
|
+
case 0:
|
|
260
|
+
autoReload = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : true;
|
|
261
|
+
previousToken = this.authToken;
|
|
262
|
+
this.authToken = token;
|
|
263
|
+
console.log('[SchemeSyncManager] Token 已更新');
|
|
264
|
+
|
|
265
|
+
// 如果已经初始化,且之前没有 token,现在有了 token,且数据为空,自动重新加载
|
|
266
|
+
if (!(autoReload && this.initialized && !previousToken && token && !this.hasValidData())) {
|
|
267
|
+
_context2.next = 14;
|
|
268
|
+
break;
|
|
269
|
+
}
|
|
270
|
+
console.log('[SchemeSyncManager] 检测到首次设置 Token 且无数据,自动重新加载...');
|
|
271
|
+
_context2.prev = 6;
|
|
272
|
+
_context2.next = 9;
|
|
273
|
+
return this.reloadData();
|
|
274
|
+
case 9:
|
|
275
|
+
_context2.next = 14;
|
|
276
|
+
break;
|
|
277
|
+
case 11:
|
|
278
|
+
_context2.prev = 11;
|
|
279
|
+
_context2.t0 = _context2["catch"](6);
|
|
280
|
+
console.error('[SchemeSyncManager] Token 设置后自动重新加载失败:', _context2.t0);
|
|
281
|
+
// 不抛出错误,允许继续使用
|
|
282
|
+
case 14:
|
|
283
|
+
case "end":
|
|
284
|
+
return _context2.stop();
|
|
285
|
+
}
|
|
286
|
+
}, _callee2, this, [[6, 11]]);
|
|
287
|
+
}));
|
|
288
|
+
function setToken(_x) {
|
|
289
|
+
return _setToken.apply(this, arguments);
|
|
290
|
+
}
|
|
291
|
+
return setToken;
|
|
292
|
+
}()
|
|
293
|
+
/**
|
|
294
|
+
* 获取请求头(包含认证信息)
|
|
295
|
+
* @private
|
|
296
|
+
*/
|
|
297
|
+
)
|
|
298
|
+
}, {
|
|
299
|
+
key: "getHeaders",
|
|
300
|
+
value: function getHeaders() {
|
|
301
|
+
var headers = {
|
|
302
|
+
'Content-Type': 'application/json'
|
|
303
|
+
};
|
|
304
|
+
if (this.authToken) {
|
|
305
|
+
headers['Authorization'] = "Bearer ".concat(this.authToken);
|
|
306
|
+
}
|
|
307
|
+
return headers;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* 初始化:从服务器加载所有数据
|
|
312
|
+
*/
|
|
313
|
+
}, {
|
|
314
|
+
key: "initialize",
|
|
315
|
+
value: (function () {
|
|
316
|
+
var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
317
|
+
var response, responseData, allSchemesData;
|
|
318
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
319
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
159
320
|
case 0:
|
|
160
321
|
if (!this.initialized) {
|
|
161
|
-
|
|
322
|
+
_context3.next = 3;
|
|
162
323
|
break;
|
|
163
324
|
}
|
|
164
325
|
console.warn('[SchemeSyncManager] 已经初始化,跳过重复初始化');
|
|
165
|
-
return
|
|
326
|
+
return _context3.abrupt("return");
|
|
166
327
|
case 3:
|
|
167
|
-
|
|
168
|
-
|
|
328
|
+
_context3.prev = 3;
|
|
329
|
+
_context3.next = 6;
|
|
169
330
|
return this.fetchWithRetry(this.getGetApiUrl(), {
|
|
170
331
|
method: 'GET',
|
|
171
|
-
headers:
|
|
172
|
-
'Content-Type': 'application/json'
|
|
173
|
-
}
|
|
332
|
+
headers: this.getHeaders()
|
|
174
333
|
});
|
|
175
334
|
case 6:
|
|
176
|
-
response =
|
|
177
|
-
|
|
335
|
+
response = _context3.sent;
|
|
336
|
+
_context3.next = 9;
|
|
178
337
|
return response.json();
|
|
179
338
|
case 9:
|
|
180
|
-
responseData =
|
|
339
|
+
responseData = _context3.sent;
|
|
181
340
|
if (!(responseData.success !== undefined)) {
|
|
182
|
-
|
|
341
|
+
_context3.next = 16;
|
|
183
342
|
break;
|
|
184
343
|
}
|
|
185
344
|
if (responseData.success) {
|
|
186
|
-
|
|
345
|
+
_context3.next = 13;
|
|
187
346
|
break;
|
|
188
347
|
}
|
|
189
348
|
throw new Error('初始化失败:服务器返回错误');
|
|
190
349
|
case 13:
|
|
191
350
|
allSchemesData = responseData.data;
|
|
192
|
-
|
|
351
|
+
_context3.next = 21;
|
|
193
352
|
break;
|
|
194
353
|
case 16:
|
|
195
354
|
if (!(responseData.columnSchemes !== undefined)) {
|
|
196
|
-
|
|
355
|
+
_context3.next = 20;
|
|
197
356
|
break;
|
|
198
357
|
}
|
|
199
358
|
// 格式2: 直接返回 AllSchemesData
|
|
200
359
|
allSchemesData = responseData;
|
|
201
|
-
|
|
360
|
+
_context3.next = 21;
|
|
202
361
|
break;
|
|
203
362
|
case 20:
|
|
204
363
|
throw new Error('初始化失败:服务器返回的数据格式不正确');
|
|
@@ -217,18 +376,18 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
217
376
|
querySchemes: Object.keys(this.allData.querySchemes).length,
|
|
218
377
|
syncTime: new Date(this.lastSyncTime).toISOString()
|
|
219
378
|
});
|
|
220
|
-
|
|
379
|
+
_context3.next = 32;
|
|
221
380
|
break;
|
|
222
381
|
case 28:
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
console.error('[SchemeSyncManager] 初始化失败:',
|
|
226
|
-
throw
|
|
382
|
+
_context3.prev = 28;
|
|
383
|
+
_context3.t0 = _context3["catch"](3);
|
|
384
|
+
console.error('[SchemeSyncManager] 初始化失败:', _context3.t0);
|
|
385
|
+
throw _context3.t0;
|
|
227
386
|
case 32:
|
|
228
387
|
case "end":
|
|
229
|
-
return
|
|
388
|
+
return _context3.stop();
|
|
230
389
|
}
|
|
231
|
-
},
|
|
390
|
+
}, _callee3, this, [[3, 28]]);
|
|
232
391
|
}));
|
|
233
392
|
function initialize() {
|
|
234
393
|
return _initialize.apply(this, arguments);
|
|
@@ -402,31 +561,31 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
402
561
|
}, {
|
|
403
562
|
key: "syncNow",
|
|
404
563
|
value: (function () {
|
|
405
|
-
var _syncNow = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
564
|
+
var _syncNow = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
406
565
|
var _this$events$onSyncSt,
|
|
407
566
|
_this$events,
|
|
408
567
|
_this4 = this;
|
|
409
568
|
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;
|
|
410
|
-
return _regeneratorRuntime().wrap(function
|
|
411
|
-
while (1) switch (
|
|
569
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
570
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
412
571
|
case 0:
|
|
413
572
|
if (!this.syncing) {
|
|
414
|
-
|
|
573
|
+
_context4.next = 3;
|
|
415
574
|
break;
|
|
416
575
|
}
|
|
417
576
|
console.log('[SchemeSyncManager] 正在同步中,跳过重复请求');
|
|
418
|
-
return
|
|
577
|
+
return _context4.abrupt("return");
|
|
419
578
|
case 3:
|
|
420
579
|
if (this.hasDirtyData()) {
|
|
421
|
-
|
|
580
|
+
_context4.next = 6;
|
|
422
581
|
break;
|
|
423
582
|
}
|
|
424
583
|
console.log('[SchemeSyncManager] 没有需要同步的数据');
|
|
425
|
-
return
|
|
584
|
+
return _context4.abrupt("return");
|
|
426
585
|
case 6:
|
|
427
586
|
this.syncing = true;
|
|
428
587
|
(_this$events$onSyncSt = (_this$events = this.events).onSyncStart) === null || _this$events$onSyncSt === void 0 || _this$events$onSyncSt.call(_this$events);
|
|
429
|
-
|
|
588
|
+
_context4.prev = 8;
|
|
430
589
|
// 构建同步请求数据
|
|
431
590
|
requestData = {
|
|
432
591
|
clientSyncTime: this.lastSyncTime
|
|
@@ -477,36 +636,34 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
477
636
|
}
|
|
478
637
|
|
|
479
638
|
// 发送同步请求
|
|
480
|
-
|
|
639
|
+
_context4.next = 19;
|
|
481
640
|
return this.fetchWithRetry(this.getSyncApiUrl(), {
|
|
482
641
|
method: 'POST',
|
|
483
|
-
headers:
|
|
484
|
-
'Content-Type': 'application/json'
|
|
485
|
-
},
|
|
642
|
+
headers: this.getHeaders(),
|
|
486
643
|
body: JSON.stringify(requestData)
|
|
487
644
|
});
|
|
488
645
|
case 19:
|
|
489
|
-
response =
|
|
490
|
-
|
|
646
|
+
response = _context4.sent;
|
|
647
|
+
_context4.next = 22;
|
|
491
648
|
return response.json();
|
|
492
649
|
case 22:
|
|
493
|
-
responseData =
|
|
650
|
+
responseData = _context4.sent;
|
|
494
651
|
if (!(responseData.success !== undefined)) {
|
|
495
|
-
|
|
652
|
+
_context4.next = 29;
|
|
496
653
|
break;
|
|
497
654
|
}
|
|
498
655
|
if (responseData.success) {
|
|
499
|
-
|
|
656
|
+
_context4.next = 26;
|
|
500
657
|
break;
|
|
501
658
|
}
|
|
502
659
|
throw new Error(responseData.error || '同步失败');
|
|
503
660
|
case 26:
|
|
504
661
|
syncResult = responseData;
|
|
505
|
-
|
|
662
|
+
_context4.next = 34;
|
|
506
663
|
break;
|
|
507
664
|
case 29:
|
|
508
665
|
if (!(responseData.syncTime !== undefined)) {
|
|
509
|
-
|
|
666
|
+
_context4.next = 33;
|
|
510
667
|
break;
|
|
511
668
|
}
|
|
512
669
|
// 格式2: 直接返回数据格式,构造一个兼容的结果对象
|
|
@@ -515,7 +672,7 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
515
672
|
syncTime: responseData.syncTime,
|
|
516
673
|
conflicts: responseData.conflicts
|
|
517
674
|
};
|
|
518
|
-
|
|
675
|
+
_context4.next = 34;
|
|
519
676
|
break;
|
|
520
677
|
case 33:
|
|
521
678
|
throw new Error('同步失败:服务器返回的数据格式不正确');
|
|
@@ -539,23 +696,23 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
539
696
|
syncTime: new Date(this.lastSyncTime).toISOString(),
|
|
540
697
|
conflicts: ((_syncResult$conflicts = syncResult.conflicts) === null || _syncResult$conflicts === void 0 ? void 0 : _syncResult$conflicts.length) || 0
|
|
541
698
|
});
|
|
542
|
-
|
|
699
|
+
_context4.next = 46;
|
|
543
700
|
break;
|
|
544
701
|
case 41:
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
console.error('[SchemeSyncManager] 同步失败:',
|
|
548
|
-
(_this$events$onSyncEr = (_this$events4 = this.events).onSyncError) === null || _this$events$onSyncEr === void 0 || _this$events$onSyncEr.call(_this$events4,
|
|
549
|
-
throw
|
|
702
|
+
_context4.prev = 41;
|
|
703
|
+
_context4.t0 = _context4["catch"](8);
|
|
704
|
+
console.error('[SchemeSyncManager] 同步失败:', _context4.t0);
|
|
705
|
+
(_this$events$onSyncEr = (_this$events4 = this.events).onSyncError) === null || _this$events$onSyncEr === void 0 || _this$events$onSyncEr.call(_this$events4, _context4.t0);
|
|
706
|
+
throw _context4.t0;
|
|
550
707
|
case 46:
|
|
551
|
-
|
|
708
|
+
_context4.prev = 46;
|
|
552
709
|
this.syncing = false;
|
|
553
|
-
return
|
|
710
|
+
return _context4.finish(46);
|
|
554
711
|
case 49:
|
|
555
712
|
case "end":
|
|
556
|
-
return
|
|
713
|
+
return _context4.stop();
|
|
557
714
|
}
|
|
558
|
-
},
|
|
715
|
+
}, _callee4, this, [[8, 41, 46, 49]]);
|
|
559
716
|
}));
|
|
560
717
|
function syncNow() {
|
|
561
718
|
return _syncNow.apply(this, arguments);
|
|
@@ -666,58 +823,58 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
666
823
|
* 带重试的 fetch 请求
|
|
667
824
|
*/
|
|
668
825
|
function () {
|
|
669
|
-
var _fetchWithRetry = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
826
|
+
var _fetchWithRetry = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(url, options) {
|
|
670
827
|
var retries,
|
|
671
828
|
controller,
|
|
672
829
|
timeoutId,
|
|
673
830
|
response,
|
|
674
|
-
|
|
675
|
-
return _regeneratorRuntime().wrap(function
|
|
676
|
-
while (1) switch (
|
|
831
|
+
_args5 = arguments;
|
|
832
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
833
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
677
834
|
case 0:
|
|
678
|
-
retries =
|
|
679
|
-
|
|
835
|
+
retries = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : this.config.maxRetries;
|
|
836
|
+
_context5.prev = 1;
|
|
680
837
|
controller = new AbortController();
|
|
681
838
|
timeoutId = setTimeout(function () {
|
|
682
839
|
return controller.abort();
|
|
683
840
|
}, this.config.requestTimeout);
|
|
684
|
-
|
|
841
|
+
_context5.next = 6;
|
|
685
842
|
return fetch(url, _objectSpread(_objectSpread({}, options), {}, {
|
|
686
843
|
signal: controller.signal
|
|
687
844
|
}));
|
|
688
845
|
case 6:
|
|
689
|
-
response =
|
|
846
|
+
response = _context5.sent;
|
|
690
847
|
clearTimeout(timeoutId);
|
|
691
848
|
if (response.ok) {
|
|
692
|
-
|
|
849
|
+
_context5.next = 10;
|
|
693
850
|
break;
|
|
694
851
|
}
|
|
695
852
|
throw new Error("HTTP ".concat(response.status, ": ").concat(response.statusText));
|
|
696
853
|
case 10:
|
|
697
|
-
return
|
|
854
|
+
return _context5.abrupt("return", response);
|
|
698
855
|
case 13:
|
|
699
|
-
|
|
700
|
-
|
|
856
|
+
_context5.prev = 13;
|
|
857
|
+
_context5.t0 = _context5["catch"](1);
|
|
701
858
|
if (!(retries > 0)) {
|
|
702
|
-
|
|
859
|
+
_context5.next = 20;
|
|
703
860
|
break;
|
|
704
861
|
}
|
|
705
|
-
console.warn("[SchemeSyncManager] \u8BF7\u6C42\u5931\u8D25\uFF0C\u91CD\u8BD5\u4E2D... (\u5269\u4F59 ".concat(retries, " \u6B21)"),
|
|
706
|
-
|
|
862
|
+
console.warn("[SchemeSyncManager] \u8BF7\u6C42\u5931\u8D25\uFF0C\u91CD\u8BD5\u4E2D... (\u5269\u4F59 ".concat(retries, " \u6B21)"), _context5.t0);
|
|
863
|
+
_context5.next = 19;
|
|
707
864
|
return new Promise(function (resolve) {
|
|
708
865
|
return setTimeout(resolve, 1000);
|
|
709
866
|
});
|
|
710
867
|
case 19:
|
|
711
|
-
return
|
|
868
|
+
return _context5.abrupt("return", this.fetchWithRetry(url, options, retries - 1));
|
|
712
869
|
case 20:
|
|
713
|
-
throw
|
|
870
|
+
throw _context5.t0;
|
|
714
871
|
case 21:
|
|
715
872
|
case "end":
|
|
716
|
-
return
|
|
873
|
+
return _context5.stop();
|
|
717
874
|
}
|
|
718
|
-
},
|
|
875
|
+
}, _callee5, this, [[1, 13]]);
|
|
719
876
|
}));
|
|
720
|
-
function fetchWithRetry(
|
|
877
|
+
function fetchWithRetry(_x2, _x3) {
|
|
721
878
|
return _fetchWithRetry.apply(this, arguments);
|
|
722
879
|
}
|
|
723
880
|
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
|
*/
|
|
@@ -11,6 +11,7 @@ exports.getUnsyncedGrids = getUnsyncedGrids;
|
|
|
11
11
|
exports.hasUnsyncedData = hasUnsyncedData;
|
|
12
12
|
exports.initializeGlobalSchemeSync = initializeGlobalSchemeSync;
|
|
13
13
|
exports.isGlobalSyncInitialized = isGlobalSyncInitialized;
|
|
14
|
+
exports.setToken = setToken;
|
|
14
15
|
exports.syncAllSchemes = syncAllSchemes;
|
|
15
16
|
exports.useGlobalColumnAdapter = useGlobalColumnAdapter;
|
|
16
17
|
exports.useGlobalColumnSchemeManager = useGlobalColumnSchemeManager;
|
|
@@ -262,9 +263,37 @@ function hasUnsyncedData() {
|
|
|
262
263
|
return manager.hasDirtyData();
|
|
263
264
|
}
|
|
264
265
|
|
|
266
|
+
/**
|
|
267
|
+
* 设置认证 Token
|
|
268
|
+
* @param token 认证令牌 (通常是 Bearer Token)
|
|
269
|
+
* @param autoReload 是否在设置 token 后自动重新加载数据(默认 true)
|
|
270
|
+
*/
|
|
271
|
+
function setToken(_x3) {
|
|
272
|
+
return _setToken.apply(this, arguments);
|
|
273
|
+
}
|
|
265
274
|
/**
|
|
266
275
|
* 获取有未同步数据的表格列表
|
|
267
276
|
*/
|
|
277
|
+
function _setToken() {
|
|
278
|
+
_setToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(token) {
|
|
279
|
+
var autoReload,
|
|
280
|
+
manager,
|
|
281
|
+
_args4 = arguments;
|
|
282
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
283
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
284
|
+
case 0:
|
|
285
|
+
autoReload = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : true;
|
|
286
|
+
manager = getGlobalSyncManager();
|
|
287
|
+
_context4.next = 4;
|
|
288
|
+
return manager.setToken(token, autoReload);
|
|
289
|
+
case 4:
|
|
290
|
+
case "end":
|
|
291
|
+
return _context4.stop();
|
|
292
|
+
}
|
|
293
|
+
}, _callee4);
|
|
294
|
+
}));
|
|
295
|
+
return _setToken.apply(this, arguments);
|
|
296
|
+
}
|
|
268
297
|
function getUnsyncedGrids() {
|
|
269
298
|
var manager = getGlobalSyncManager();
|
|
270
299
|
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/cjs/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/cjs/index.js
CHANGED
|
@@ -321,6 +321,12 @@ Object.defineProperty(exports, "isGlobalSyncInitialized", {
|
|
|
321
321
|
return _agGridPlus.isGlobalSyncInitialized;
|
|
322
322
|
}
|
|
323
323
|
});
|
|
324
|
+
Object.defineProperty(exports, "setToken", {
|
|
325
|
+
enumerable: true,
|
|
326
|
+
get: function get() {
|
|
327
|
+
return _agGridPlus.setToken;
|
|
328
|
+
}
|
|
329
|
+
});
|
|
324
330
|
Object.defineProperty(exports, "syncAllSchemes", {
|
|
325
331
|
enumerable: true,
|
|
326
332
|
get: function get() {
|
|
@@ -8,5 +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";
|
|
11
|
+
export { initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, setToken, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./storage";
|
|
12
12
|
export type { SyncConfig, SyncManagerEvents, SyncStatus, SchemeConflict } from "./storage";
|