@gingkoo/pandora-metabase 1.0.140 → 1.0.141-alpha.4
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/README.md +2 -3
- package/lib/cjs/components/dialog/formula-list/LogicGroup.d.ts +8 -5
- package/lib/cjs/components/dialog/formula-list/LogicGroup.js +64 -18
- package/lib/cjs/components/dialog/formula-list/index.js +374 -153
- package/lib/cjs/components/dialog/formula-list/index.less +18 -5
- package/lib/cjs/components/dialog/formula-list/utils.js +45 -17
- package/lib/cjs/components/dialog/select-summarize/index.js +7 -0
- package/lib/cjs/components/modules/summarize/group-by.js +10 -1
- package/lib/cjs/components/modules/summarize/select-index.js +3 -1
- package/lib/cjs/hooks/use-state.js +181 -80
- package/lib/cjs/index.js +24 -3
- package/lib/cjs/store/types.d.ts +4 -4
- package/lib/cjs/types.d.ts +21 -1
- package/lib/cjs/utils/transformSql.js +51 -38
- package/lib/cjs/utils.d.ts +1 -0
- package/lib/cjs/utils.js +291 -56
- package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +8 -5
- package/lib/es/components/dialog/formula-list/LogicGroup.js +65 -19
- package/lib/es/components/dialog/formula-list/index.js +373 -152
- package/lib/es/components/dialog/formula-list/index.less +18 -5
- package/lib/es/components/dialog/formula-list/utils.js +45 -17
- package/lib/es/components/dialog/select-summarize/index.js +7 -0
- package/lib/es/components/modules/summarize/group-by.js +10 -1
- package/lib/es/components/modules/summarize/select-index.js +3 -1
- package/lib/es/hooks/use-state.js +182 -81
- package/lib/es/index.js +25 -4
- package/lib/es/store/types.d.ts +4 -4
- package/lib/es/types.d.ts +21 -1
- package/lib/es/utils/transformSql.js +52 -39
- package/lib/es/utils.d.ts +1 -0
- package/lib/es/utils.js +290 -55
- package/package.json +1 -1
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
-
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
2
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
5
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
4
6
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
5
7
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
6
8
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
7
|
-
var _excluded = ["
|
|
8
|
-
_excluded2 = ["
|
|
9
|
+
var _excluded = ["operator", "leftAtoms", "rightAtoms", "atoms"],
|
|
10
|
+
_excluded2 = ["notExistsToolbar", "toolbar"],
|
|
11
|
+
_excluded3 = ["subToolbar", "notExistsColumns", "showFields", "isExit", "toolbar"];
|
|
9
12
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
10
13
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
11
14
|
import React, { useEffect, useState, useMemo, useRef, forwardRef } from 'react';
|
|
@@ -18,9 +21,9 @@ import isEqual from 'lodash/isEqual';
|
|
|
18
21
|
import { getObjTem, getQuotes, formulaIsError } from '../formula/utils';
|
|
19
22
|
import { AtomsTypeEnum, FormulaTypeEnum } from '../../../store/types';
|
|
20
23
|
import { ColumnsPopupThemeEnum } from '../../../store/enum';
|
|
21
|
-
import { Select, Input, Modal2, Modal, InputNumber,
|
|
24
|
+
import { Select, Input, Modal2, Modal, InputNumber, Space, Button, Checkbox, Tooltip, Code, Toast } from '@gingkoo/pandora';
|
|
22
25
|
import cloneDeep from 'lodash/cloneDeep';
|
|
23
|
-
import { buildSqlQuery, isError, changeCopyField, isExistsError } from '../../../utils';
|
|
26
|
+
import { buildSqlQuery, isError, changeCopyField, isExistsError, normalizeAndOrStructure } from '../../../utils';
|
|
24
27
|
import Formula from '../formula';
|
|
25
28
|
import { AddIcon, CloseIcon } from '../../icons';
|
|
26
29
|
import { Expression, SelectColumnMultiple } from '../../dialog';
|
|
@@ -104,6 +107,12 @@ var TOKEN_PALETTE = {
|
|
|
104
107
|
gray: 'rgb(147, 161, 171)',
|
|
105
108
|
green: 'rgb(136, 191, 77)'
|
|
106
109
|
};
|
|
110
|
+
var createUnknownAtom = function createUnknownAtom() {
|
|
111
|
+
return {
|
|
112
|
+
val: '',
|
|
113
|
+
type: AtomsTypeEnum.UNKNOWN
|
|
114
|
+
};
|
|
115
|
+
};
|
|
107
116
|
var getTokenStyleByClassName = function getTokenStyleByClassName(className, extraStyle) {
|
|
108
117
|
var names = " ".concat(className || '', " ");
|
|
109
118
|
var color = TOKEN_PALETTE.blue;
|
|
@@ -273,22 +282,29 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
273
282
|
});
|
|
274
283
|
return map;
|
|
275
284
|
}, [otherTypes]);
|
|
276
|
-
var
|
|
285
|
+
var normalizedValue = useMemo(function () {
|
|
286
|
+
return normalizeAndOrStructure(value || []);
|
|
287
|
+
}, [value]);
|
|
288
|
+
var caseList = normalizedValue;
|
|
289
|
+
var initialValueRef = useRef(cloneDeep(caseList));
|
|
277
290
|
var caseListRef = useRef(caseList);
|
|
291
|
+
caseListRef.current = caseList;
|
|
292
|
+
var hasFormulaSqlAction = Boolean(store.showFormulaSql && store.hasFormulaSqlCode);
|
|
293
|
+
var hasFormulaDiffAction = Boolean(store.showFormulaDiff && store.hasFormulaDiffCode);
|
|
278
294
|
var operatorList = useMemo(function () {
|
|
279
295
|
if (store.operatorList.length > 0) {
|
|
280
296
|
return store.operatorList;
|
|
281
297
|
}
|
|
282
298
|
return __operatorList;
|
|
283
299
|
}, [store.operatorList]);
|
|
284
|
-
var _useState3 = useState(
|
|
300
|
+
var _useState3 = useState(false),
|
|
285
301
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
var _useState5 = useState(
|
|
302
|
+
sqlLoading = _useState4[0],
|
|
303
|
+
setSqlLoading = _useState4[1];
|
|
304
|
+
var _useState5 = useState(false),
|
|
289
305
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
290
|
-
|
|
291
|
-
|
|
306
|
+
diffLoading = _useState6[0],
|
|
307
|
+
setDiffLoading = _useState6[1];
|
|
292
308
|
var _useState7 = useState(function () {
|
|
293
309
|
if (!enableCopy) {
|
|
294
310
|
return false;
|
|
@@ -332,8 +348,54 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
332
348
|
}
|
|
333
349
|
return field.fieldName || field.fieldAlias || '';
|
|
334
350
|
}
|
|
351
|
+
var normalizeAndOrItems = function normalizeAndOrItems() {
|
|
352
|
+
var item = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
353
|
+
var legacyItem = item;
|
|
354
|
+
if (Array.isArray(legacyItem.items) && legacyItem.items.length > 0) {
|
|
355
|
+
return legacyItem.items.map(function (currentItem, index) {
|
|
356
|
+
return _objectSpread(_objectSpread({}, index > 0 ? {
|
|
357
|
+
operator: currentItem.operator || legacyItem.operator || 'and'
|
|
358
|
+
} : {}), {}, {
|
|
359
|
+
atoms: Array.isArray(currentItem.atoms) && currentItem.atoms.length > 0 ? currentItem.atoms : [createUnknownAtom()]
|
|
360
|
+
});
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
if (Array.isArray(legacyItem.leftAtoms) || Array.isArray(legacyItem.rightAtoms)) {
|
|
364
|
+
return [{
|
|
365
|
+
atoms: Array.isArray(legacyItem.leftAtoms) && legacyItem.leftAtoms.length > 0 ? legacyItem.leftAtoms : [createUnknownAtom()]
|
|
366
|
+
}, {
|
|
367
|
+
operator: legacyItem.operator || 'and',
|
|
368
|
+
atoms: Array.isArray(legacyItem.rightAtoms) && legacyItem.rightAtoms.length > 0 ? legacyItem.rightAtoms : [createUnknownAtom()]
|
|
369
|
+
}];
|
|
370
|
+
}
|
|
371
|
+
return [{
|
|
372
|
+
atoms: Array.isArray(legacyItem.atoms) && legacyItem.atoms.length > 0 ? legacyItem.atoms : [createUnknownAtom()]
|
|
373
|
+
}];
|
|
374
|
+
};
|
|
375
|
+
var buildAndOrItem = function buildAndOrItem(item, items) {
|
|
376
|
+
var normalizedItems = normalizeAndOrItems({
|
|
377
|
+
items: items
|
|
378
|
+
});
|
|
379
|
+
var operator = item.operator,
|
|
380
|
+
leftAtoms = item.leftAtoms,
|
|
381
|
+
rightAtoms = item.rightAtoms,
|
|
382
|
+
atoms = item.atoms,
|
|
383
|
+
nextItem = _objectWithoutProperties(item, _excluded);
|
|
384
|
+
var itemForQuotes = _objectSpread(_objectSpread({}, nextItem), {}, {
|
|
385
|
+
items: normalizedItems
|
|
386
|
+
});
|
|
387
|
+
return _objectSpread(_objectSpread({}, nextItem), {}, {
|
|
388
|
+
items: normalizedItems,
|
|
389
|
+
quotes: getItemQuotes(itemForQuotes)
|
|
390
|
+
});
|
|
391
|
+
};
|
|
335
392
|
function getItemDisplayText(v) {
|
|
393
|
+
var visited = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new WeakSet();
|
|
336
394
|
if (!v) return '';
|
|
395
|
+
if (_typeof(v) === 'object') {
|
|
396
|
+
if (visited.has(v)) return v.quotes || '';
|
|
397
|
+
visited.add(v);
|
|
398
|
+
}
|
|
337
399
|
if (v.quotes) return v.quotes;
|
|
338
400
|
if (v.type === AtomsTypeEnum.FIELD) return getFieldDisplayName(v);
|
|
339
401
|
if (v.fieldName) return v.fieldName;
|
|
@@ -342,25 +404,30 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
342
404
|
}
|
|
343
405
|
if (v.type === AtomsTypeEnum.CASE_WHEN) {
|
|
344
406
|
var caseAtomsText = (v.caseAtoms || []).map(function (item) {
|
|
345
|
-
return getItemDisplayText(item);
|
|
407
|
+
return getItemDisplayText(item, visited);
|
|
346
408
|
}).join(' ');
|
|
347
409
|
var whenClausesText = (v.whenClauses || []).map(function (branch) {
|
|
348
|
-
var whenText = (branch.whenAtoms || []).map(
|
|
349
|
-
|
|
410
|
+
var whenText = (branch.whenAtoms || []).map(function (item) {
|
|
411
|
+
return getItemDisplayText(item, visited);
|
|
412
|
+
}).join(' ');
|
|
413
|
+
var thenText = (branch.thenAtoms || []).map(function (item) {
|
|
414
|
+
return getItemDisplayText(item, visited);
|
|
415
|
+
}).join(' ');
|
|
350
416
|
return "when ".concat(whenText, " then ").concat(thenText).trim();
|
|
351
417
|
}).join(' ');
|
|
352
|
-
var elseAtomsText = (v.elseAtoms || []).length ? " else ".concat((v.elseAtoms || []).map(
|
|
418
|
+
var elseAtomsText = (v.elseAtoms || []).length ? " else ".concat((v.elseAtoms || []).map(function (item) {
|
|
419
|
+
return getItemDisplayText(item, visited);
|
|
420
|
+
}).join(' ')) : '';
|
|
353
421
|
return "case ".concat(caseAtomsText, " ").concat(whenClausesText).concat(elseAtomsText, " end").replace(/\s+/g, ' ').trim();
|
|
354
422
|
}
|
|
355
423
|
if (v.type === AtomsTypeEnum.AND_OR) {
|
|
356
|
-
var
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
return
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
return "".concat(v.operator || 'and', " ( ").concat(atomsText, " )").replace(/\s+/g, ' ').trim();
|
|
424
|
+
var itemsText = normalizeAndOrItems(v).map(function (item, index) {
|
|
425
|
+
var atomsText = (item.atoms || []).map(function (atom) {
|
|
426
|
+
return getItemDisplayText(atom, visited);
|
|
427
|
+
}).join(' ');
|
|
428
|
+
return index === 0 ? atomsText : "".concat(item.operator || 'and', " ").concat(atomsText);
|
|
429
|
+
}).join(' ');
|
|
430
|
+
return "( ".concat(itemsText, " )").replace(/\s+/g, ' ').trim();
|
|
364
431
|
}
|
|
365
432
|
if (v.type === AtomsTypeEnum.SELECT) {
|
|
366
433
|
return getSelectDisplayText(v);
|
|
@@ -375,55 +442,61 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
375
442
|
quotes: ''
|
|
376
443
|
}));
|
|
377
444
|
};
|
|
378
|
-
var
|
|
445
|
+
var _withSyncedQuotesInner = function withSyncedQuotesInner(item, visited) {
|
|
446
|
+
if (!item || _typeof(item) !== 'object') return item;
|
|
447
|
+
if (visited.has(item)) return visited.get(item);
|
|
379
448
|
if (item.type === AtomsTypeEnum.CASE_WHEN) {
|
|
380
449
|
var _item$elseAtoms;
|
|
381
450
|
var nextItem = _objectSpread(_objectSpread({}, item), {}, {
|
|
382
|
-
caseAtoms:
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
whenClauses: (item.whenClauses || []).map(function (clause) {
|
|
386
|
-
return _objectSpread(_objectSpread({}, clause), {}, {
|
|
387
|
-
whenAtoms: (clause.whenAtoms || []).map(function (currentItem) {
|
|
388
|
-
return _withSyncedQuotes(currentItem);
|
|
389
|
-
}),
|
|
390
|
-
thenAtoms: (clause.thenAtoms || []).map(function (currentItem) {
|
|
391
|
-
return _withSyncedQuotes(currentItem);
|
|
392
|
-
})
|
|
393
|
-
});
|
|
394
|
-
}),
|
|
395
|
-
elseAtoms: (_item$elseAtoms = item.elseAtoms) === null || _item$elseAtoms === void 0 ? void 0 : _item$elseAtoms.map(function (currentItem) {
|
|
396
|
-
return _withSyncedQuotes(currentItem);
|
|
397
|
-
})
|
|
451
|
+
caseAtoms: [],
|
|
452
|
+
whenClauses: [],
|
|
453
|
+
elseAtoms: []
|
|
398
454
|
});
|
|
399
|
-
|
|
400
|
-
|
|
455
|
+
visited.set(item, nextItem);
|
|
456
|
+
nextItem.caseAtoms = (item.caseAtoms || []).map(function (currentItem) {
|
|
457
|
+
return _withSyncedQuotesInner(currentItem, visited);
|
|
401
458
|
});
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
return _withSyncedQuotes(currentItem);
|
|
412
|
-
})
|
|
413
|
-
} : {
|
|
414
|
-
atoms: (item.atoms || []).map(function (currentItem) {
|
|
415
|
-
return _withSyncedQuotes(currentItem);
|
|
416
|
-
})
|
|
459
|
+
nextItem.whenClauses = (item.whenClauses || []).map(function (clause) {
|
|
460
|
+
return _objectSpread(_objectSpread({}, clause), {}, {
|
|
461
|
+
whenAtoms: (clause.whenAtoms || []).map(function (currentItem) {
|
|
462
|
+
return _withSyncedQuotesInner(currentItem, visited);
|
|
463
|
+
}),
|
|
464
|
+
thenAtoms: (clause.thenAtoms || []).map(function (currentItem) {
|
|
465
|
+
return _withSyncedQuotesInner(currentItem, visited);
|
|
466
|
+
})
|
|
467
|
+
});
|
|
417
468
|
});
|
|
418
|
-
|
|
419
|
-
|
|
469
|
+
nextItem.elseAtoms = (_item$elseAtoms = item.elseAtoms) === null || _item$elseAtoms === void 0 ? void 0 : _item$elseAtoms.map(function (currentItem) {
|
|
470
|
+
return _withSyncedQuotesInner(currentItem, visited);
|
|
420
471
|
});
|
|
472
|
+
nextItem.quotes = getItemQuotes(nextItem);
|
|
473
|
+
return nextItem;
|
|
474
|
+
}
|
|
475
|
+
if (item.type === AtomsTypeEnum.AND_OR) {
|
|
476
|
+
var _nextItem = {
|
|
477
|
+
type: item.type,
|
|
478
|
+
quotes: item.quotes || '',
|
|
479
|
+
items: []
|
|
480
|
+
};
|
|
481
|
+
visited.set(item, _nextItem);
|
|
482
|
+
var syncedItem = buildAndOrItem(item, normalizeAndOrItems(item).map(function (currentItem) {
|
|
483
|
+
return _objectSpread(_objectSpread({}, currentItem), {}, {
|
|
484
|
+
atoms: (currentItem.atoms || []).map(function (atom) {
|
|
485
|
+
return _withSyncedQuotesInner(atom, visited);
|
|
486
|
+
})
|
|
487
|
+
});
|
|
488
|
+
}));
|
|
489
|
+
_extends(_nextItem, syncedItem);
|
|
490
|
+
return _nextItem;
|
|
421
491
|
}
|
|
422
492
|
return item;
|
|
423
493
|
};
|
|
494
|
+
var withSyncedQuotes = function withSyncedQuotes(item) {
|
|
495
|
+
return _withSyncedQuotesInner(item, new WeakMap());
|
|
496
|
+
};
|
|
424
497
|
var setCaseList = function setCaseList(data) {
|
|
425
498
|
var nextData = data.map(function (item) {
|
|
426
|
-
return
|
|
499
|
+
return withSyncedQuotes(item);
|
|
427
500
|
});
|
|
428
501
|
var quotes = nextData.map(function (item) {
|
|
429
502
|
return getItemDisplayText(item);
|
|
@@ -437,21 +510,160 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
437
510
|
nextList[index] = nextItem;
|
|
438
511
|
setCaseList(nextList);
|
|
439
512
|
};
|
|
440
|
-
var
|
|
513
|
+
var getFormulaSqlText = function getFormulaSqlText(result) {
|
|
514
|
+
var _ref3, _result$sql;
|
|
515
|
+
if (typeof result === 'string') return result;
|
|
516
|
+
if (!result) return '';
|
|
517
|
+
return String((_ref3 = (_result$sql = result.sql) !== null && _result$sql !== void 0 ? _result$sql : result.code) !== null && _ref3 !== void 0 ? _ref3 : '');
|
|
518
|
+
};
|
|
519
|
+
var getFormulaDiffData = function getFormulaDiffData(result) {
|
|
520
|
+
var _result$oldCode, _ref4, _result$newCode;
|
|
521
|
+
if (typeof result === 'string') {
|
|
522
|
+
return {
|
|
523
|
+
oldCode: '',
|
|
524
|
+
newCode: result
|
|
525
|
+
};
|
|
526
|
+
}
|
|
527
|
+
if (!result) {
|
|
528
|
+
return {
|
|
529
|
+
oldCode: '',
|
|
530
|
+
newCode: ''
|
|
531
|
+
};
|
|
532
|
+
}
|
|
533
|
+
return {
|
|
534
|
+
oldCode: String((_result$oldCode = result.oldCode) !== null && _result$oldCode !== void 0 ? _result$oldCode : ''),
|
|
535
|
+
newCode: String((_ref4 = (_result$newCode = result.newCode) !== null && _result$newCode !== void 0 ? _result$newCode : result.code) !== null && _ref4 !== void 0 ? _ref4 : '')
|
|
536
|
+
};
|
|
537
|
+
};
|
|
538
|
+
var normalizeFormulaValueForOutput = function normalizeFormulaValueForOutput() {
|
|
441
539
|
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
442
|
-
return data.map(function (
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
}
|
|
446
|
-
if (v.type === AtomsTypeEnum.OPERATOR && (v.val === '(' || v.val === ')')) {
|
|
447
|
-
return "".concat(v.val);
|
|
448
|
-
}
|
|
449
|
-
return getItemDisplayText(v);
|
|
450
|
-
}).join(' ');
|
|
540
|
+
return data.map(function (item) {
|
|
541
|
+
return withSyncedQuotes(item);
|
|
542
|
+
});
|
|
451
543
|
};
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
}
|
|
544
|
+
var getCurrentFormulaValue = function getCurrentFormulaValue() {
|
|
545
|
+
return cloneDeep(normalizeFormulaValueForOutput(caseListRef.current || caseList || []));
|
|
546
|
+
};
|
|
547
|
+
var getInitialFormulaValue = function getInitialFormulaValue() {
|
|
548
|
+
return cloneDeep(normalizeFormulaValueForOutput(initialValueRef.current || []));
|
|
549
|
+
};
|
|
550
|
+
var showFormulaSql = function () {
|
|
551
|
+
var _ref5 = _asyncToGenerator(_regeneratorRuntime.mark(function _callee() {
|
|
552
|
+
var result, sql, _t;
|
|
553
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
554
|
+
while (1) switch (_context.prev = _context.next) {
|
|
555
|
+
case 0:
|
|
556
|
+
if (!(!hasFormulaSqlAction || sqlLoading)) {
|
|
557
|
+
_context.next = 1;
|
|
558
|
+
break;
|
|
559
|
+
}
|
|
560
|
+
return _context.abrupt("return");
|
|
561
|
+
case 1:
|
|
562
|
+
setSqlLoading(true);
|
|
563
|
+
_context.prev = 2;
|
|
564
|
+
_context.next = 3;
|
|
565
|
+
return store.getFormulaSqlCode(getCurrentFormulaValue());
|
|
566
|
+
case 3:
|
|
567
|
+
result = _context.sent;
|
|
568
|
+
sql = getFormulaSqlText(result);
|
|
569
|
+
if (sql) {
|
|
570
|
+
_context.next = 4;
|
|
571
|
+
break;
|
|
572
|
+
}
|
|
573
|
+
Toast.warning('暂无可展示的SQL');
|
|
574
|
+
return _context.abrupt("return");
|
|
575
|
+
case 4:
|
|
576
|
+
openChildModal({
|
|
577
|
+
title: '查看SQL',
|
|
578
|
+
transparentMask: true,
|
|
579
|
+
content: _jsx("div", {
|
|
580
|
+
className: 'Sqb-FormulaSqlPreview scroller',
|
|
581
|
+
children: _jsx(Code, {
|
|
582
|
+
mode: 'code',
|
|
583
|
+
language: 'sql',
|
|
584
|
+
children: sql
|
|
585
|
+
})
|
|
586
|
+
}),
|
|
587
|
+
onClose: function onClose() {}
|
|
588
|
+
});
|
|
589
|
+
_context.next = 6;
|
|
590
|
+
break;
|
|
591
|
+
case 5:
|
|
592
|
+
_context.prev = 5;
|
|
593
|
+
_t = _context["catch"](2);
|
|
594
|
+
Toast.error('获取SQL失败');
|
|
595
|
+
case 6:
|
|
596
|
+
_context.prev = 6;
|
|
597
|
+
setSqlLoading(false);
|
|
598
|
+
return _context.finish(6);
|
|
599
|
+
case 7:
|
|
600
|
+
case "end":
|
|
601
|
+
return _context.stop();
|
|
602
|
+
}
|
|
603
|
+
}, _callee, null, [[2, 5, 6, 7]]);
|
|
604
|
+
}));
|
|
605
|
+
return function showFormulaSql() {
|
|
606
|
+
return _ref5.apply(this, arguments);
|
|
607
|
+
};
|
|
608
|
+
}();
|
|
609
|
+
var showFormulaDiff = function () {
|
|
610
|
+
var _ref6 = _asyncToGenerator(_regeneratorRuntime.mark(function _callee2() {
|
|
611
|
+
var result, _getFormulaDiffData, oldCode, newCode, _t2;
|
|
612
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
613
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
614
|
+
case 0:
|
|
615
|
+
if (!(!hasFormulaDiffAction || diffLoading)) {
|
|
616
|
+
_context2.next = 1;
|
|
617
|
+
break;
|
|
618
|
+
}
|
|
619
|
+
return _context2.abrupt("return");
|
|
620
|
+
case 1:
|
|
621
|
+
setDiffLoading(true);
|
|
622
|
+
_context2.prev = 2;
|
|
623
|
+
_context2.next = 3;
|
|
624
|
+
return store.getFormulaDiffCode({
|
|
625
|
+
oldValue: getInitialFormulaValue(),
|
|
626
|
+
newValue: getCurrentFormulaValue()
|
|
627
|
+
});
|
|
628
|
+
case 3:
|
|
629
|
+
result = _context2.sent;
|
|
630
|
+
_getFormulaDiffData = getFormulaDiffData(result), oldCode = _getFormulaDiffData.oldCode, newCode = _getFormulaDiffData.newCode;
|
|
631
|
+
if (!(!oldCode && !newCode)) {
|
|
632
|
+
_context2.next = 4;
|
|
633
|
+
break;
|
|
634
|
+
}
|
|
635
|
+
Toast.warning('暂无可展示的对比结果');
|
|
636
|
+
return _context2.abrupt("return");
|
|
637
|
+
case 4:
|
|
638
|
+
openChildModal({
|
|
639
|
+
title: '对比结果',
|
|
640
|
+
transparentMask: true,
|
|
641
|
+
content: _jsx(DiffViewer, {
|
|
642
|
+
oldCode: oldCode,
|
|
643
|
+
newCode: newCode
|
|
644
|
+
}),
|
|
645
|
+
onClose: function onClose() {}
|
|
646
|
+
});
|
|
647
|
+
_context2.next = 6;
|
|
648
|
+
break;
|
|
649
|
+
case 5:
|
|
650
|
+
_context2.prev = 5;
|
|
651
|
+
_t2 = _context2["catch"](2);
|
|
652
|
+
Toast.error('获取对比结果失败');
|
|
653
|
+
case 6:
|
|
654
|
+
_context2.prev = 6;
|
|
655
|
+
setDiffLoading(false);
|
|
656
|
+
return _context2.finish(6);
|
|
657
|
+
case 7:
|
|
658
|
+
case "end":
|
|
659
|
+
return _context2.stop();
|
|
660
|
+
}
|
|
661
|
+
}, _callee2, null, [[2, 5, 6, 7]]);
|
|
662
|
+
}));
|
|
663
|
+
return function showFormulaDiff() {
|
|
664
|
+
return _ref6.apply(this, arguments);
|
|
665
|
+
};
|
|
666
|
+
}();
|
|
455
667
|
var renderTokenContent = function renderTokenContent(children) {
|
|
456
668
|
return _jsx("span", {
|
|
457
669
|
className: 'Sqb-TokenContent',
|
|
@@ -475,7 +687,7 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
475
687
|
activeZoomRegionKey = _useState12[0],
|
|
476
688
|
setActiveZoomRegionKey = _useState12[1];
|
|
477
689
|
var updateDraftValue = function updateDraftValue(nextValue) {
|
|
478
|
-
setDraftValue(
|
|
690
|
+
setDraftValue(withSyncedQuotes(nextValue));
|
|
479
691
|
};
|
|
480
692
|
var handleOk = function handleOk() {
|
|
481
693
|
var _modalInstance2, _modalInstance2$close;
|
|
@@ -636,7 +848,7 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
636
848
|
setDraftList = _useState14[1];
|
|
637
849
|
var updateDraftList = function updateDraftList(nextList) {
|
|
638
850
|
setDraftList(nextList.map(function (item) {
|
|
639
|
-
return
|
|
851
|
+
return withSyncedQuotes(item);
|
|
640
852
|
}));
|
|
641
853
|
};
|
|
642
854
|
var handleOk = function handleOk() {
|
|
@@ -841,38 +1053,66 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
841
1053
|
});
|
|
842
1054
|
};
|
|
843
1055
|
var renderAndOrEditor = function renderAndOrEditor(value, index) {
|
|
844
|
-
var
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
type: AtomsTypeEnum.UNKNOWN
|
|
848
|
-
};
|
|
1056
|
+
var items = normalizeAndOrItems(value);
|
|
1057
|
+
var updateItems = function updateItems(nextItems) {
|
|
1058
|
+
updateAtomAt(index, buildAndOrItem(value, nextItems));
|
|
849
1059
|
};
|
|
850
|
-
var leftAtoms = Array.isArray(value.leftAtoms) ? value.leftAtoms : value.atoms || [createUnknownAtom()];
|
|
851
|
-
var rightAtoms = Array.isArray(value.rightAtoms) ? value.rightAtoms : [createUnknownAtom()];
|
|
852
1060
|
return _jsx(LogicGroup, {
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
atoms: undefined,
|
|
865
|
-
rightAtoms: rightAtoms,
|
|
866
|
-
leftAtoms: nextList
|
|
867
|
-
}));
|
|
868
|
-
}),
|
|
869
|
-
rightContent: renderNestedFormulaList(rightAtoms, function (nextList) {
|
|
870
|
-
updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
|
|
871
|
-
atoms: undefined,
|
|
872
|
-
leftAtoms: leftAtoms,
|
|
873
|
-
rightAtoms: nextList
|
|
874
|
-
}));
|
|
1061
|
+
items: items.map(function (item, itemIndex) {
|
|
1062
|
+
return {
|
|
1063
|
+
operator: item.operator,
|
|
1064
|
+
content: renderNestedFormulaList(item.atoms, function (nextList) {
|
|
1065
|
+
var nextItems = items.slice();
|
|
1066
|
+
nextItems[itemIndex] = _objectSpread(_objectSpread({}, nextItems[itemIndex]), {}, {
|
|
1067
|
+
atoms: nextList
|
|
1068
|
+
});
|
|
1069
|
+
updateItems(nextItems);
|
|
1070
|
+
})
|
|
1071
|
+
};
|
|
875
1072
|
}),
|
|
1073
|
+
onChangeOperator: function onChangeOperator(itemIndex, operator) {
|
|
1074
|
+
var nextItems = items.slice();
|
|
1075
|
+
if (itemIndex <= 0 || !nextItems[itemIndex]) return;
|
|
1076
|
+
nextItems[itemIndex] = _objectSpread(_objectSpread({}, nextItems[itemIndex]), {}, {
|
|
1077
|
+
operator: operator
|
|
1078
|
+
});
|
|
1079
|
+
updateItems(nextItems);
|
|
1080
|
+
},
|
|
1081
|
+
onAddItem: function onAddItem() {
|
|
1082
|
+
var nextItems = items.slice();
|
|
1083
|
+
nextItems.push({
|
|
1084
|
+
operator: 'and',
|
|
1085
|
+
atoms: [createUnknownAtom()]
|
|
1086
|
+
});
|
|
1087
|
+
if (nextItems[0]) {
|
|
1088
|
+
nextItems[0] = _objectSpread(_objectSpread({}, nextItems[0]), {}, {
|
|
1089
|
+
operator: undefined
|
|
1090
|
+
});
|
|
1091
|
+
}
|
|
1092
|
+
updateItems(nextItems);
|
|
1093
|
+
},
|
|
1094
|
+
onDeleteItem: function onDeleteItem(operatorIndex, side) {
|
|
1095
|
+
if (items.length <= 2) return;
|
|
1096
|
+
var nextItems = items.slice();
|
|
1097
|
+
if (side === 'left') {
|
|
1098
|
+
var _nextItems;
|
|
1099
|
+
var previousOperator = (_nextItems = nextItems[operatorIndex - 1]) === null || _nextItems === void 0 ? void 0 : _nextItems.operator;
|
|
1100
|
+
nextItems.splice(operatorIndex - 1, 1);
|
|
1101
|
+
if (nextItems[operatorIndex - 1]) {
|
|
1102
|
+
nextItems[operatorIndex - 1] = _objectSpread(_objectSpread({}, nextItems[operatorIndex - 1]), {}, {
|
|
1103
|
+
operator: previousOperator
|
|
1104
|
+
});
|
|
1105
|
+
}
|
|
1106
|
+
} else {
|
|
1107
|
+
nextItems.splice(operatorIndex, 1);
|
|
1108
|
+
}
|
|
1109
|
+
if (nextItems[0]) {
|
|
1110
|
+
nextItems[0] = _objectSpread(_objectSpread({}, nextItems[0]), {}, {
|
|
1111
|
+
operator: undefined
|
|
1112
|
+
});
|
|
1113
|
+
}
|
|
1114
|
+
updateItems(nextItems);
|
|
1115
|
+
},
|
|
876
1116
|
onDelete: function onDelete(e) {
|
|
877
1117
|
return handleDel(e, index);
|
|
878
1118
|
}
|
|
@@ -1326,10 +1566,10 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
1326
1566
|
title: __('metabase.prompt'),
|
|
1327
1567
|
content: __('customColumn.confirmDelete'),
|
|
1328
1568
|
onOk: function () {
|
|
1329
|
-
var _onOk = _asyncToGenerator(_regeneratorRuntime.mark(function
|
|
1569
|
+
var _onOk = _asyncToGenerator(_regeneratorRuntime.mark(function _callee3() {
|
|
1330
1570
|
var selectedIndexSet, _caseList;
|
|
1331
|
-
return _regeneratorRuntime.wrap(function (
|
|
1332
|
-
while (1) switch (
|
|
1571
|
+
return _regeneratorRuntime.wrap(function (_context3) {
|
|
1572
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
1333
1573
|
case 0:
|
|
1334
1574
|
selectedIndexSet = new Set(selectedIndices);
|
|
1335
1575
|
_caseList = caseList.filter(function (_, index) {
|
|
@@ -1339,9 +1579,9 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
1339
1579
|
initPaste();
|
|
1340
1580
|
case 1:
|
|
1341
1581
|
case "end":
|
|
1342
|
-
return
|
|
1582
|
+
return _context3.stop();
|
|
1343
1583
|
}
|
|
1344
|
-
},
|
|
1584
|
+
}, _callee3);
|
|
1345
1585
|
}));
|
|
1346
1586
|
function onOk() {
|
|
1347
1587
|
return _onOk.apply(this, arguments);
|
|
@@ -1445,7 +1685,7 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
1445
1685
|
var _store$preProps = store.preProps,
|
|
1446
1686
|
notExistsToolbar = _store$preProps.notExistsToolbar,
|
|
1447
1687
|
toolbar = _store$preProps.toolbar,
|
|
1448
|
-
other = _objectWithoutProperties(_store$preProps,
|
|
1688
|
+
other = _objectWithoutProperties(_store$preProps, _excluded2);
|
|
1449
1689
|
var _value = ((_caseList$i = caseList[i]) === null || _caseList$i === void 0 ? void 0 : _caseList$i.notExists) || [];
|
|
1450
1690
|
var oldList = cloneDeep(((_caseList$i2 = caseList[i]) === null || _caseList$i2 === void 0 ? void 0 : _caseList$i2.notExists) || []);
|
|
1451
1691
|
var childModalZIndex = getTopLayerZIndex() + 1;
|
|
@@ -1493,7 +1733,7 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
1493
1733
|
showFields = _store$preProps2.showFields,
|
|
1494
1734
|
isExit = _store$preProps2.isExit,
|
|
1495
1735
|
toolbar = _store$preProps2.toolbar,
|
|
1496
|
-
other = _objectWithoutProperties(_store$preProps2,
|
|
1736
|
+
other = _objectWithoutProperties(_store$preProps2, _excluded3);
|
|
1497
1737
|
var _value = ((_caseList$i3 = caseList[i]) === null || _caseList$i3 === void 0 ? void 0 : _caseList$i3.subQuery) || [];
|
|
1498
1738
|
var oldList = cloneDeep(((_caseList$i4 = caseList[i]) === null || _caseList$i4 === void 0 ? void 0 : _caseList$i4.subQuery) || []);
|
|
1499
1739
|
var childModalZIndex = getTopLayerZIndex() + 1;
|
|
@@ -2104,50 +2344,31 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
2104
2344
|
size: 'middle',
|
|
2105
2345
|
className: 'preview-container',
|
|
2106
2346
|
children: [_jsxs("div", {
|
|
2347
|
+
className: 'Sqb-FormulaPreviewHeader',
|
|
2107
2348
|
children: [_jsx("p", {
|
|
2108
2349
|
children: "\u9884\u89C8\uFF1A"
|
|
2109
|
-
}),
|
|
2110
|
-
direction: 'vertical',
|
|
2111
|
-
defaultValue: previewMode,
|
|
2112
|
-
buttonStyle: 'solid',
|
|
2113
|
-
type: 'button',
|
|
2350
|
+
}), hasFormulaSqlAction && _jsx(Button, {
|
|
2114
2351
|
size: 'small',
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
overflow: 'auto',
|
|
2128
|
-
wordBreak: 'break-word'
|
|
2129
|
-
},
|
|
2130
|
-
children: [previewMode === 'diff' && _jsx(DiffViewer, {
|
|
2131
|
-
oldCode: oldCode,
|
|
2132
|
-
newCode: getPreviewStr(caseList)
|
|
2133
|
-
}), previewMode === 'code' && _jsx("div", {
|
|
2134
|
-
className: cx({
|
|
2135
|
-
isSqlError: errorInfo.isError
|
|
2136
|
-
}),
|
|
2137
|
-
children: caseList.map(function (v, i) {
|
|
2138
|
-
return _jsx("span", {
|
|
2139
|
-
className: 'mr-1',
|
|
2140
|
-
children: getItemDisplayText(v)
|
|
2141
|
-
}, i);
|
|
2142
|
-
})
|
|
2143
|
-
}), _jsx("div", {
|
|
2144
|
-
className: 'errorMsg mt-2',
|
|
2145
|
-
children: errorInfo.isError && _jsxs(_Fragment, {
|
|
2146
|
-
children: ["\u63D0\u793A\uFF1A", _jsx("span", {
|
|
2147
|
-
children: errorInfo.error
|
|
2148
|
-
})]
|
|
2149
|
-
})
|
|
2352
|
+
type: 'link',
|
|
2353
|
+
loading: sqlLoading,
|
|
2354
|
+
disabled: sqlLoading,
|
|
2355
|
+
onClick: showFormulaSql,
|
|
2356
|
+
children: "\u9884\u89C8SQL"
|
|
2357
|
+
}), hasFormulaDiffAction && _jsx(Button, {
|
|
2358
|
+
size: 'small',
|
|
2359
|
+
type: 'link',
|
|
2360
|
+
loading: diffLoading,
|
|
2361
|
+
disabled: diffLoading,
|
|
2362
|
+
onClick: showFormulaDiff,
|
|
2363
|
+
children: "\u5BF9\u6BD4\u7ED3\u679C"
|
|
2150
2364
|
})]
|
|
2365
|
+
}), _jsx("div", {
|
|
2366
|
+
className: 'errorMsg mt-2',
|
|
2367
|
+
children: errorInfo.isError && _jsxs(_Fragment, {
|
|
2368
|
+
children: ["\u63D0\u793A\uFF1A", _jsx("span", {
|
|
2369
|
+
children: errorInfo.error
|
|
2370
|
+
})]
|
|
2371
|
+
})
|
|
2151
2372
|
})]
|
|
2152
2373
|
})
|
|
2153
2374
|
})]
|