@gingkoo/pandora-metabase 1.0.92 → 1.0.94
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/lib/cjs/components/dialog/formula/index.js +34 -30
- package/lib/cjs/components/dialog/formula/utils.d.ts +2 -0
- package/lib/cjs/components/dialog/formula/utils.js +12 -3
- package/lib/cjs/components/dialog/formula-list/index.js +45 -32
- package/lib/cjs/components/dialog/formula-list/utils.d.ts +1 -1
- package/lib/cjs/components/dialog/formula-list/utils.js +2 -2
- package/lib/cjs/components/modules/components/item-name.d.ts +1 -0
- package/lib/cjs/components/modules/components/item-name.js +3 -2
- package/lib/cjs/hooks/use-state.js +105 -77
- package/lib/cjs/index.d.ts +0 -6
- package/lib/cjs/index.js +8 -5
- package/lib/cjs/types.d.ts +1 -0
- package/lib/cjs/utils.d.ts +8 -0
- package/lib/cjs/utils.js +101 -10
- package/lib/es/components/dialog/formula/index.js +35 -31
- package/lib/es/components/dialog/formula/utils.d.ts +2 -0
- package/lib/es/components/dialog/formula/utils.js +11 -2
- package/lib/es/components/dialog/formula-list/index.js +47 -34
- package/lib/es/components/dialog/formula-list/utils.d.ts +1 -1
- package/lib/es/components/dialog/formula-list/utils.js +2 -2
- package/lib/es/components/modules/components/item-name.d.ts +1 -0
- package/lib/es/components/modules/components/item-name.js +3 -2
- package/lib/es/hooks/use-state.js +105 -77
- package/lib/es/index.d.ts +0 -6
- package/lib/es/index.js +8 -5
- package/lib/es/types.d.ts +1 -0
- package/lib/es/utils.d.ts +8 -0
- package/lib/es/utils.js +99 -10
- package/package.json +1 -1
|
@@ -185,10 +185,14 @@ var useStore = function useStore() {
|
|
|
185
185
|
_useState66 = _slicedToArray(_useState65, 2),
|
|
186
186
|
isMetabaseCopy = _useState66[0],
|
|
187
187
|
setIsMetabaseCopy = _useState66[1]; // 是否开启勾选组复制
|
|
188
|
-
var _useState67 = useState(
|
|
188
|
+
var _useState67 = useState([]),
|
|
189
189
|
_useState68 = _slicedToArray(_useState67, 2),
|
|
190
|
-
|
|
191
|
-
|
|
190
|
+
existsError = _useState68[0],
|
|
191
|
+
setExistsError = _useState68[1]; // exists 的错误字段
|
|
192
|
+
var _useState69 = useState(storage._metabaseCopyModule || []),
|
|
193
|
+
_useState70 = _slicedToArray(_useState69, 2),
|
|
194
|
+
metabaseCopyModule = _useState70[0],
|
|
195
|
+
setMetabaseCopyModule = _useState70[1]; // 复制的内容
|
|
192
196
|
var setFormulaTemplates = function setFormulaTemplates(data) {
|
|
193
197
|
var newData = data === null || data === void 0 ? void 0 : data.map(function (v) {
|
|
194
198
|
var children = v.children.map(function (vv) {
|
|
@@ -214,40 +218,62 @@ var useStore = function useStore() {
|
|
|
214
218
|
var fetchColumnsFn = useRef();
|
|
215
219
|
var fetchChangeFn = useRef();
|
|
216
220
|
var fetchDiffFn = useRef();
|
|
221
|
+
var fetchExistsError = useRef();
|
|
217
222
|
var setFetchChangeFn = function setFetchChangeFn(fn) {
|
|
218
223
|
fetchChangeFn.current = fn;
|
|
219
224
|
};
|
|
220
225
|
var setFetchDiffFn = function setFetchDiffFn(fn) {
|
|
221
226
|
fetchDiffFn.current = fn;
|
|
222
227
|
};
|
|
228
|
+
var setExistsErrorFn = /*#__PURE__*/function () {
|
|
229
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(fn) {
|
|
230
|
+
var data;
|
|
231
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
232
|
+
while (1) switch (_context.prev = _context.next) {
|
|
233
|
+
case 0:
|
|
234
|
+
_context.next = 1;
|
|
235
|
+
return fn();
|
|
236
|
+
case 1:
|
|
237
|
+
data = _context.sent;
|
|
238
|
+
setExistsError(data || []);
|
|
239
|
+
case 2:
|
|
240
|
+
case "end":
|
|
241
|
+
return _context.stop();
|
|
242
|
+
}
|
|
243
|
+
}, _callee);
|
|
244
|
+
}));
|
|
245
|
+
return function setExistsErrorFn(_x) {
|
|
246
|
+
return _ref.apply(this, arguments);
|
|
247
|
+
};
|
|
248
|
+
}();
|
|
223
249
|
// 获取所有数据表
|
|
224
250
|
var getModuleDiffCode = /*#__PURE__*/function () {
|
|
225
|
-
var
|
|
251
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
226
252
|
var oldCode,
|
|
227
253
|
newCode,
|
|
228
254
|
data,
|
|
229
|
-
|
|
230
|
-
return _regeneratorRuntime.wrap(function (
|
|
231
|
-
while (1) switch (
|
|
255
|
+
_args2 = arguments;
|
|
256
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
257
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
232
258
|
case 0:
|
|
233
|
-
oldCode =
|
|
234
|
-
newCode =
|
|
235
|
-
|
|
259
|
+
oldCode = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : [];
|
|
260
|
+
newCode = _args2.length > 1 ? _args2[1] : undefined;
|
|
261
|
+
_context2.next = 1;
|
|
236
262
|
return fetchDiffFn.current({
|
|
237
263
|
oldCode: oldCode,
|
|
238
264
|
newCode: newCode
|
|
239
265
|
});
|
|
240
266
|
case 1:
|
|
241
|
-
data =
|
|
242
|
-
return
|
|
267
|
+
data = _context2.sent;
|
|
268
|
+
return _context2.abrupt("return", data);
|
|
243
269
|
case 2:
|
|
244
270
|
case "end":
|
|
245
|
-
return
|
|
271
|
+
return _context2.stop();
|
|
246
272
|
}
|
|
247
|
-
},
|
|
273
|
+
}, _callee2);
|
|
248
274
|
}));
|
|
249
275
|
return function getModuleDiffCode() {
|
|
250
|
-
return
|
|
276
|
+
return _ref2.apply(this, arguments);
|
|
251
277
|
};
|
|
252
278
|
}();
|
|
253
279
|
var setFetchColumnsFn = function setFetchColumnsFn(fn) {
|
|
@@ -288,46 +314,46 @@ var useStore = function useStore() {
|
|
|
288
314
|
}, [sourceList, isExit, tableFlat]);
|
|
289
315
|
// 获取所有数据表
|
|
290
316
|
var getSourceTable = /*#__PURE__*/function () {
|
|
291
|
-
var
|
|
317
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(source) {
|
|
292
318
|
var results;
|
|
293
|
-
return _regeneratorRuntime.wrap(function (
|
|
294
|
-
while (1) switch (
|
|
319
|
+
return _regeneratorRuntime.wrap(function (_context4) {
|
|
320
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
295
321
|
case 0:
|
|
296
|
-
|
|
322
|
+
_context4.next = 1;
|
|
297
323
|
return Promise.all(source.map(/*#__PURE__*/function () {
|
|
298
|
-
var
|
|
324
|
+
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(v) {
|
|
299
325
|
var tables;
|
|
300
|
-
return _regeneratorRuntime.wrap(function (
|
|
301
|
-
while (1) switch (
|
|
326
|
+
return _regeneratorRuntime.wrap(function (_context3) {
|
|
327
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
302
328
|
case 0:
|
|
303
|
-
|
|
329
|
+
_context3.next = 1;
|
|
304
330
|
return fetchDataset(v.datasourceId);
|
|
305
331
|
case 1:
|
|
306
|
-
tables =
|
|
307
|
-
return
|
|
332
|
+
tables = _context3.sent;
|
|
333
|
+
return _context3.abrupt("return", _objectSpread(_objectSpread({}, v), {}, {
|
|
308
334
|
children: tables
|
|
309
335
|
}));
|
|
310
336
|
case 2:
|
|
311
337
|
case "end":
|
|
312
|
-
return
|
|
338
|
+
return _context3.stop();
|
|
313
339
|
}
|
|
314
|
-
},
|
|
340
|
+
}, _callee3);
|
|
315
341
|
}));
|
|
316
|
-
return function (
|
|
317
|
-
return
|
|
342
|
+
return function (_x3) {
|
|
343
|
+
return _ref4.apply(this, arguments);
|
|
318
344
|
};
|
|
319
345
|
}()));
|
|
320
346
|
case 1:
|
|
321
|
-
results =
|
|
347
|
+
results = _context4.sent;
|
|
322
348
|
setSourceTable(results || []);
|
|
323
349
|
case 2:
|
|
324
350
|
case "end":
|
|
325
|
-
return
|
|
351
|
+
return _context4.stop();
|
|
326
352
|
}
|
|
327
|
-
},
|
|
353
|
+
}, _callee4);
|
|
328
354
|
}));
|
|
329
|
-
return function getSourceTable(
|
|
330
|
-
return
|
|
355
|
+
return function getSourceTable(_x2) {
|
|
356
|
+
return _ref3.apply(this, arguments);
|
|
331
357
|
};
|
|
332
358
|
}();
|
|
333
359
|
// const showMainColumn = useMemo(() => {
|
|
@@ -346,41 +372,41 @@ var useStore = function useStore() {
|
|
|
346
372
|
return !!~toolbar.indexOf(name);
|
|
347
373
|
};
|
|
348
374
|
var fetchDataset = /*#__PURE__*/function () {
|
|
349
|
-
var
|
|
375
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(datasourceId) {
|
|
350
376
|
var tables, _tables;
|
|
351
|
-
return _regeneratorRuntime.wrap(function (
|
|
352
|
-
while (1) switch (
|
|
377
|
+
return _regeneratorRuntime.wrap(function (_context5) {
|
|
378
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
353
379
|
case 0:
|
|
354
380
|
tables = getDataset(datasourceId);
|
|
355
381
|
if (!tables.length) {
|
|
356
|
-
|
|
382
|
+
_context5.next = 1;
|
|
357
383
|
break;
|
|
358
384
|
}
|
|
359
|
-
return
|
|
385
|
+
return _context5.abrupt("return", tables);
|
|
360
386
|
case 1:
|
|
361
|
-
|
|
387
|
+
_context5.next = 2;
|
|
362
388
|
return fetchDatasetFn.current(datasourceId, {
|
|
363
389
|
isExit: isExit
|
|
364
390
|
});
|
|
365
391
|
case 2:
|
|
366
|
-
_tables =
|
|
392
|
+
_tables = _context5.sent;
|
|
367
393
|
setDataset(datasourceId, _tables);
|
|
368
|
-
return
|
|
394
|
+
return _context5.abrupt("return", _tables);
|
|
369
395
|
case 3:
|
|
370
396
|
case "end":
|
|
371
|
-
return
|
|
397
|
+
return _context5.stop();
|
|
372
398
|
}
|
|
373
|
-
},
|
|
399
|
+
}, _callee5);
|
|
374
400
|
}));
|
|
375
|
-
return function fetchDataset(
|
|
376
|
-
return
|
|
401
|
+
return function fetchDataset(_x4) {
|
|
402
|
+
return _ref5.apply(this, arguments);
|
|
377
403
|
};
|
|
378
404
|
}();
|
|
379
405
|
// 根据数据源id查询集合列表
|
|
380
406
|
// fetchDataset():
|
|
381
407
|
// 查询表字段
|
|
382
408
|
var fetchColumns = /*#__PURE__*/function () {
|
|
383
|
-
var
|
|
409
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6(table, datasourceId) {
|
|
384
410
|
var _columns2;
|
|
385
411
|
var oldColumns,
|
|
386
412
|
callback,
|
|
@@ -398,15 +424,15 @@ var useStore = function useStore() {
|
|
|
398
424
|
tableName,
|
|
399
425
|
columns,
|
|
400
426
|
_columns,
|
|
401
|
-
|
|
402
|
-
return _regeneratorRuntime.wrap(function (
|
|
403
|
-
while (1) switch (
|
|
427
|
+
_args6 = arguments;
|
|
428
|
+
return _regeneratorRuntime.wrap(function (_context6) {
|
|
429
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
404
430
|
case 0:
|
|
405
|
-
oldColumns =
|
|
406
|
-
callback =
|
|
407
|
-
isSelect =
|
|
408
|
-
_isSubquery =
|
|
409
|
-
_isExit =
|
|
431
|
+
oldColumns = _args6.length > 2 && _args6[2] !== undefined ? _args6[2] : [];
|
|
432
|
+
callback = _args6.length > 3 ? _args6[3] : undefined;
|
|
433
|
+
isSelect = _args6.length > 4 && _args6[4] !== undefined ? _args6[4] : isSelectFields;
|
|
434
|
+
_isSubquery = _args6.length > 5 && _args6[5] !== undefined ? _args6[5] : isSubquery;
|
|
435
|
+
_isExit = _args6.length > 6 && _args6[6] !== undefined ? _args6[6] : isExit;
|
|
410
436
|
// 获取之前选中的数据
|
|
411
437
|
oldObj = {};
|
|
412
438
|
selectId = oldColumns.filter(function (v) {
|
|
@@ -425,15 +451,15 @@ var useStore = function useStore() {
|
|
|
425
451
|
tableName = table.name;
|
|
426
452
|
columns = getColumns(tableName);
|
|
427
453
|
if (columns.length) {
|
|
428
|
-
|
|
454
|
+
_context6.next = 2;
|
|
429
455
|
break;
|
|
430
456
|
}
|
|
431
|
-
|
|
457
|
+
_context6.next = 1;
|
|
432
458
|
return fetchColumnsFn.current(extra, datasourceId, {
|
|
433
459
|
isExit: _isExit
|
|
434
460
|
});
|
|
435
461
|
case 1:
|
|
436
|
-
columns =
|
|
462
|
+
columns = _context6.sent;
|
|
437
463
|
setColumns(tableName, columns);
|
|
438
464
|
case 2:
|
|
439
465
|
_columns = (_columns2 = columns) === null || _columns2 === void 0 ? void 0 : _columns2.map(function (v) {
|
|
@@ -448,26 +474,26 @@ var useStore = function useStore() {
|
|
|
448
474
|
typeof callback === 'function' && callback(_columns);
|
|
449
475
|
case 3:
|
|
450
476
|
case "end":
|
|
451
|
-
return
|
|
477
|
+
return _context6.stop();
|
|
452
478
|
}
|
|
453
|
-
},
|
|
479
|
+
}, _callee6);
|
|
454
480
|
}));
|
|
455
|
-
return function fetchColumns(
|
|
456
|
-
return
|
|
481
|
+
return function fetchColumns(_x5, _x6) {
|
|
482
|
+
return _ref6.apply(this, arguments);
|
|
457
483
|
};
|
|
458
484
|
}();
|
|
459
485
|
var setMeta = /*#__PURE__*/function () {
|
|
460
|
-
var
|
|
486
|
+
var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee7(curData, groupInd) {
|
|
461
487
|
var changeObj,
|
|
462
488
|
_metaList,
|
|
463
489
|
newMeta,
|
|
464
490
|
isChange,
|
|
465
|
-
|
|
466
|
-
return _regeneratorRuntime.wrap(function (
|
|
467
|
-
while (1) switch (
|
|
491
|
+
_args7 = arguments;
|
|
492
|
+
return _regeneratorRuntime.wrap(function (_context7) {
|
|
493
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
468
494
|
case 0:
|
|
469
|
-
changeObj =
|
|
470
|
-
_metaList =
|
|
495
|
+
changeObj = _args7.length > 2 && _args7[2] !== undefined ? _args7[2] : {};
|
|
496
|
+
_metaList = _args7.length > 3 && _args7[3] !== undefined ? _args7[3] : metaList;
|
|
471
497
|
newMeta = cloneDeep(_metaList);
|
|
472
498
|
if (newMeta[groupInd]) {
|
|
473
499
|
newMeta[groupInd].list = curData;
|
|
@@ -475,29 +501,29 @@ var useStore = function useStore() {
|
|
|
475
501
|
}
|
|
476
502
|
// 过滤掉初始化
|
|
477
503
|
if (!(changeObj === 'init')) {
|
|
478
|
-
|
|
504
|
+
_context7.next = 1;
|
|
479
505
|
break;
|
|
480
506
|
}
|
|
481
|
-
return
|
|
507
|
+
return _context7.abrupt("return");
|
|
482
508
|
case 1:
|
|
483
|
-
|
|
509
|
+
_context7.next = 2;
|
|
484
510
|
return fetchChangeFn.current(splitByUnion(_metaList), changeObj, {
|
|
485
511
|
isExit: isExit
|
|
486
512
|
});
|
|
487
513
|
case 2:
|
|
488
|
-
isChange =
|
|
514
|
+
isChange = _context7.sent;
|
|
489
515
|
// 是否还原
|
|
490
516
|
if (isChange === false) {
|
|
491
517
|
_setMeta(_metaList);
|
|
492
518
|
}
|
|
493
519
|
case 3:
|
|
494
520
|
case "end":
|
|
495
|
-
return
|
|
521
|
+
return _context7.stop();
|
|
496
522
|
}
|
|
497
|
-
},
|
|
523
|
+
}, _callee7);
|
|
498
524
|
}));
|
|
499
|
-
return function setMeta(
|
|
500
|
-
return
|
|
525
|
+
return function setMeta(_x7, _x8) {
|
|
526
|
+
return _ref7.apply(this, arguments);
|
|
501
527
|
};
|
|
502
528
|
}();
|
|
503
529
|
// 回显
|
|
@@ -872,7 +898,9 @@ var useStore = function useStore() {
|
|
|
872
898
|
isMetabaseCopy: isMetabaseCopy,
|
|
873
899
|
setIsMetabaseCopy: setIsMetabaseCopy,
|
|
874
900
|
operatorList: operatorList,
|
|
875
|
-
setOperatorList: setOperatorList
|
|
901
|
+
setOperatorList: setOperatorList,
|
|
902
|
+
setExistsErrorFn: setExistsErrorFn,
|
|
903
|
+
existsError: existsError
|
|
876
904
|
};
|
|
877
905
|
};
|
|
878
906
|
export default useStore;
|
package/lib/es/index.d.ts
CHANGED
|
@@ -3,12 +3,6 @@ import './locale/en';
|
|
|
3
3
|
import './locale/zh';
|
|
4
4
|
import type { MetabaseProps, SqlVisionBuilderRef, DatasourceType } from './types';
|
|
5
5
|
import type { MetaListType, ToolbarType } from './store/types';
|
|
6
|
-
/**
|
|
7
|
-
* 规则
|
|
8
|
-
* 1、主表一换 下面全部删除
|
|
9
|
-
* 2、关联如果动了表或者删除了 下面的关联都删除
|
|
10
|
-
* 3、关联如果动了表或者删除了 下面对应排序用到的对应的字段也删除 todo. 未完成 因为有可能关联里面选一样的表 还不知道怎么搞
|
|
11
|
-
*/
|
|
12
6
|
declare const SqlVisionBuilder: React.ForwardRefExoticComponent<MetabaseProps & React.RefAttributes<SqlVisionBuilderRef>>;
|
|
13
7
|
export default SqlVisionBuilder;
|
|
14
8
|
export { MetabaseProps, DatasourceType, MetaListType, ToolbarType, SqlVisionBuilderRef };
|
package/lib/es/index.js
CHANGED
|
@@ -17,6 +17,7 @@ import cloneDeep from 'lodash/cloneDeep';
|
|
|
17
17
|
* 2、关联如果动了表或者删除了 下面的关联都删除
|
|
18
18
|
* 3、关联如果动了表或者删除了 下面对应排序用到的对应的字段也删除 todo. 未完成 因为有可能关联里面选一样的表 还不知道怎么搞
|
|
19
19
|
*/
|
|
20
|
+
var EMPTY_ARRAY = [];
|
|
20
21
|
var SqlVisionBuilder = React.forwardRef(function (props, ref) {
|
|
21
22
|
var _props$loading = props.loading,
|
|
22
23
|
loading = _props$loading === void 0 ? false : _props$loading,
|
|
@@ -26,6 +27,7 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
|
|
|
26
27
|
getColumns = props.getColumns,
|
|
27
28
|
onChange = props.onChange,
|
|
28
29
|
getModuleDiffCode = props.getModuleDiffCode,
|
|
30
|
+
getExistsError = props.getExistsError,
|
|
29
31
|
_props$tableNameTpl = props.tableNameTpl,
|
|
30
32
|
tableNameTpl = _props$tableNameTpl === void 0 ? '${name}' : _props$tableNameTpl,
|
|
31
33
|
_props$fieldNameTpl = props.fieldNameTpl,
|
|
@@ -33,11 +35,11 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
|
|
|
33
35
|
_props$toolbar = props.toolbar,
|
|
34
36
|
toolbar = _props$toolbar === void 0 ? ['filter', 'summarize', 'joinData', 'customColumn', 'sort', 'rowLimit'] : _props$toolbar,
|
|
35
37
|
_props$value = props.value,
|
|
36
|
-
value = _props$value === void 0 ?
|
|
38
|
+
value = _props$value === void 0 ? EMPTY_ARRAY : _props$value,
|
|
37
39
|
_props$sourceList = props.sourceList,
|
|
38
|
-
sourceList = _props$sourceList === void 0 ?
|
|
40
|
+
sourceList = _props$sourceList === void 0 ? EMPTY_ARRAY : _props$sourceList,
|
|
39
41
|
_props$exitSourceList = props.exitSourceList,
|
|
40
|
-
exitSourceList = _props$exitSourceList === void 0 ?
|
|
42
|
+
exitSourceList = _props$exitSourceList === void 0 ? EMPTY_ARRAY : _props$exitSourceList,
|
|
41
43
|
_props$showSubquery = props.showSubquery,
|
|
42
44
|
showSubquery = _props$showSubquery === void 0 ? true : _props$showSubquery,
|
|
43
45
|
_props$subShowSubquer = props.subShowSubquery,
|
|
@@ -70,13 +72,14 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
|
|
|
70
72
|
_props$moduleCopy = props.moduleCopy,
|
|
71
73
|
moduleCopy = _props$moduleCopy === void 0 ? false : _props$moduleCopy,
|
|
72
74
|
_props$operatorList = props.operatorList,
|
|
73
|
-
operatorList = _props$operatorList === void 0 ?
|
|
75
|
+
operatorList = _props$operatorList === void 0 ? EMPTY_ARRAY : _props$operatorList;
|
|
74
76
|
var store = useData();
|
|
75
77
|
useEffect(function () {
|
|
76
78
|
getTables && store.setFetchDatasetFn(getTables);
|
|
77
79
|
getColumns && store.setFetchColumnsFn(getColumns);
|
|
78
80
|
onChange && store.setFetchChangeFn(onChange);
|
|
79
81
|
getModuleDiffCode && store.setFetchDiffFn(getModuleDiffCode);
|
|
82
|
+
getExistsError && store.setExistsErrorFn(getExistsError);
|
|
80
83
|
}, []);
|
|
81
84
|
useEffect(function () {
|
|
82
85
|
store.setProps(props);
|
|
@@ -112,7 +115,7 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
|
|
|
112
115
|
store.setModuleDiff(moduleDiff);
|
|
113
116
|
store.setIsSubquery(isSubquery);
|
|
114
117
|
store.setModuleCopy(moduleCopy);
|
|
115
|
-
store.setOperatorList(operatorList);
|
|
118
|
+
store.setOperatorList(operatorList || []);
|
|
116
119
|
}, [showFields, fieldNameTpl, tableNameTpl, toolbar, showSubquery, subShowSubquery, constantList, formulaTemplates, ignoreGroupByType, filterCustomType, isExit, tableEnableAlias, fieldEnableAlias, groupByEnableAlias, isSelectFields, tableFlat, copyType, metabaseCopy, moduleDiff, isSubquery, moduleCopy, operatorList]);
|
|
117
120
|
React.useImperativeHandle(ref, function () {
|
|
118
121
|
return {
|
package/lib/es/types.d.ts
CHANGED
package/lib/es/utils.d.ts
CHANGED
|
@@ -30,6 +30,14 @@ export declare const patchData: (metas: MetaListType[]) => MetaListType[];
|
|
|
30
30
|
export declare function reassembleByUnion(target?: any[]): any[];
|
|
31
31
|
export declare const buildSqlQuery: (data: MetaListType[] | undefined, type: string) => string;
|
|
32
32
|
export declare const isError: (item: AtomsItem | AtomsItem[], data: DataType[]) => boolean;
|
|
33
|
+
/**
|
|
34
|
+
* 在嵌套结构 root 中查找是否存在一个对象,使得 target 是该对象的子集
|
|
35
|
+
* @param root 可能包含任意层数组/对象的根数据
|
|
36
|
+
* @param target 目标对象(可能只包含部分字段)
|
|
37
|
+
* @returns 是否存在
|
|
38
|
+
*/
|
|
39
|
+
export declare function containsSubset(root: unknown, target: Record<string, unknown>): boolean;
|
|
40
|
+
export declare const isExistsError: (meta: any[], errorList: any[]) => boolean;
|
|
33
41
|
export declare const changeCopyField: (items: AtomsItem[], data: any[]) => AtomsItem[];
|
|
34
42
|
export declare const changeExistsCopyField: (list: MetaListType[], data: any[]) => MetaListType[];
|
|
35
43
|
export declare const metaIsCheck: (data: any[], item: any) => boolean;
|
package/lib/es/utils.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
1
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
2
3
|
import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
|
|
3
4
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
@@ -723,7 +724,8 @@ var _isError = function isError(item, data) {
|
|
|
723
724
|
tableId = _item$tableId === void 0 ? '' : _item$tableId,
|
|
724
725
|
_item$tableAlias = item.tableAlias,
|
|
725
726
|
tableAlias = _item$tableAlias === void 0 ? '' : _item$tableAlias,
|
|
726
|
-
fieldName = item.fieldName
|
|
727
|
+
fieldName = item.fieldName,
|
|
728
|
+
fieldId = item.fieldId;
|
|
727
729
|
var _datasourceId = datasourceId || 'source'; // 默认为source
|
|
728
730
|
if (tableId === 'source') {
|
|
729
731
|
_datasourceId = 'source';
|
|
@@ -739,13 +741,13 @@ var _isError = function isError(item, data) {
|
|
|
739
741
|
} else {
|
|
740
742
|
var _tables$_datasourceId2;
|
|
741
743
|
return tables === null || tables === void 0 || (_tables$_datasourceId2 = tables[_datasourceId]) === null || _tables$_datasourceId2 === void 0 || (_tables$_datasourceId2 = _tables$_datasourceId2[tableId]) === null || _tables$_datasourceId2 === void 0 ? void 0 : _tables$_datasourceId2.every(function (field) {
|
|
742
|
-
return field.name !== fieldName;
|
|
744
|
+
return field.name !== fieldName || field.id !== fieldId;
|
|
743
745
|
});
|
|
744
746
|
}
|
|
745
747
|
} else {
|
|
746
748
|
var _tables$_datasourceId3;
|
|
747
749
|
var hasField = (tables === null || tables === void 0 || (_tables$_datasourceId3 = tables[_datasourceId]) === null || _tables$_datasourceId3 === void 0 || (_tables$_datasourceId3 = _tables$_datasourceId3[tableId + tableAlias]) === null || _tables$_datasourceId3 === void 0 || (_tables$_datasourceId3 = _tables$_datasourceId3.filter(function (v) {
|
|
748
|
-
return v.name === fieldName;
|
|
750
|
+
return v.name === fieldName && v.id === fieldId;
|
|
749
751
|
})) === null || _tables$_datasourceId3 === void 0 ? void 0 : _tables$_datasourceId3.length) > 0;
|
|
750
752
|
return !hasField; // 注意:返回 true 表示“有错误”
|
|
751
753
|
}
|
|
@@ -766,15 +768,102 @@ var _isError = function isError(item, data) {
|
|
|
766
768
|
}
|
|
767
769
|
return false; // 其他类型默认无错误
|
|
768
770
|
};
|
|
769
|
-
|
|
771
|
+
/**
|
|
772
|
+
* 深度判断 sub 是否是 obj 的子集(递归比较所有可枚举自有属性)
|
|
773
|
+
* @param sub 可能包含部分属性的对象
|
|
774
|
+
* @param obj 待比较的对象
|
|
775
|
+
* @param visited 用于处理循环引用的 WeakSet
|
|
776
|
+
*/
|
|
770
777
|
export { _isError as isError };
|
|
778
|
+
function isSubset(sub, obj) {
|
|
779
|
+
var visited = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new WeakSet();
|
|
780
|
+
// 基本类型或引用相同
|
|
781
|
+
if (sub === obj) return true;
|
|
782
|
+
// 如果任一不是对象/数组,或者为 null,则不相等(sub 为基本类型时,上面已经比较过,这里只处理对象不等的情况)
|
|
783
|
+
if (_typeof(sub) !== 'object' || sub === null || _typeof(obj) !== 'object' || obj === null) {
|
|
784
|
+
return false;
|
|
785
|
+
}
|
|
786
|
+
// 避免循环引用
|
|
787
|
+
if (visited.has(sub) || visited.has(obj)) return false;
|
|
788
|
+
visited.add(sub);
|
|
789
|
+
visited.add(obj);
|
|
790
|
+
// 处理数组
|
|
791
|
+
if (Array.isArray(sub)) {
|
|
792
|
+
if (!Array.isArray(obj) || sub.length !== obj.length) return false;
|
|
793
|
+
for (var i = 0; i < sub.length; i++) {
|
|
794
|
+
if (!isSubset(sub[i], obj[i], visited)) return false;
|
|
795
|
+
}
|
|
796
|
+
return true;
|
|
797
|
+
}
|
|
798
|
+
// 普通对象:遍历 sub 的每个键
|
|
799
|
+
for (var key in sub) {
|
|
800
|
+
if (Object.prototype.hasOwnProperty.call(sub, key)) {
|
|
801
|
+
// obj 必须包含该键
|
|
802
|
+
if (!Object.prototype.hasOwnProperty.call(obj, key)) return false;
|
|
803
|
+
// 递归比较值
|
|
804
|
+
if (!isSubset(sub[key], obj[key], visited)) return false;
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
return true;
|
|
808
|
+
}
|
|
809
|
+
/**
|
|
810
|
+
* 在嵌套结构 root 中查找是否存在一个对象,使得 target 是该对象的子集
|
|
811
|
+
* @param root 可能包含任意层数组/对象的根数据
|
|
812
|
+
* @param target 目标对象(可能只包含部分字段)
|
|
813
|
+
* @returns 是否存在
|
|
814
|
+
*/
|
|
815
|
+
export function containsSubset(root, target) {
|
|
816
|
+
var visited = new WeakSet();
|
|
817
|
+
function search(current) {
|
|
818
|
+
if (current && _typeof(current) === 'object') {
|
|
819
|
+
// 避免循环引用
|
|
820
|
+
if (visited.has(current)) return false;
|
|
821
|
+
visited.add(current);
|
|
822
|
+
// 如果是普通对象(非数组),先检查是否包含 target 子集
|
|
823
|
+
if (!Array.isArray(current) && isSubset(target, current)) {
|
|
824
|
+
return true;
|
|
825
|
+
}
|
|
826
|
+
// 继续深入遍历子元素
|
|
827
|
+
if (Array.isArray(current)) {
|
|
828
|
+
var _iterator2 = _createForOfIteratorHelper(current),
|
|
829
|
+
_step2;
|
|
830
|
+
try {
|
|
831
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
832
|
+
var item = _step2.value;
|
|
833
|
+
if (search(item)) return true;
|
|
834
|
+
}
|
|
835
|
+
} catch (err) {
|
|
836
|
+
_iterator2.e(err);
|
|
837
|
+
} finally {
|
|
838
|
+
_iterator2.f();
|
|
839
|
+
}
|
|
840
|
+
} else {
|
|
841
|
+
for (var key in current) {
|
|
842
|
+
if (Object.prototype.hasOwnProperty.call(current, key)) {
|
|
843
|
+
if (search(current[key])) return true;
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
return false;
|
|
849
|
+
}
|
|
850
|
+
return search(root);
|
|
851
|
+
}
|
|
852
|
+
// 判断当前meta中是否含有errorList
|
|
853
|
+
export var isExistsError = function isExistsError(meta, errorList) {
|
|
854
|
+
var _meta = cloneDeep(meta);
|
|
855
|
+
return errorList.some(function (error) {
|
|
856
|
+
return containsSubset(_meta, error);
|
|
857
|
+
});
|
|
858
|
+
};
|
|
859
|
+
// 设置新字段信息
|
|
771
860
|
function setNewField(field, data) {
|
|
772
861
|
console.log('🚀 ~ setNewField ~ field:', field);
|
|
773
|
-
var
|
|
774
|
-
|
|
862
|
+
var _iterator3 = _createForOfIteratorHelper(data),
|
|
863
|
+
_step3;
|
|
775
864
|
try {
|
|
776
|
-
for (
|
|
777
|
-
var table =
|
|
865
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
866
|
+
var table = _step3.value;
|
|
778
867
|
// 第一步:判断表名是否一致
|
|
779
868
|
if (table.name !== field.tableName) {
|
|
780
869
|
continue;
|
|
@@ -802,9 +891,9 @@ function setNewField(field, data) {
|
|
|
802
891
|
break;
|
|
803
892
|
}
|
|
804
893
|
} catch (err) {
|
|
805
|
-
|
|
894
|
+
_iterator3.e(err);
|
|
806
895
|
} finally {
|
|
807
|
-
|
|
896
|
+
_iterator3.f();
|
|
808
897
|
}
|
|
809
898
|
console.log('🚀 ~ setNewField ~ field:', field);
|
|
810
899
|
return field;
|