@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.
Files changed (32) hide show
  1. package/README.md +2 -3
  2. package/lib/cjs/components/dialog/formula-list/LogicGroup.d.ts +8 -5
  3. package/lib/cjs/components/dialog/formula-list/LogicGroup.js +64 -18
  4. package/lib/cjs/components/dialog/formula-list/index.js +374 -153
  5. package/lib/cjs/components/dialog/formula-list/index.less +18 -5
  6. package/lib/cjs/components/dialog/formula-list/utils.js +45 -17
  7. package/lib/cjs/components/dialog/select-summarize/index.js +7 -0
  8. package/lib/cjs/components/modules/summarize/group-by.js +10 -1
  9. package/lib/cjs/components/modules/summarize/select-index.js +3 -1
  10. package/lib/cjs/hooks/use-state.js +181 -80
  11. package/lib/cjs/index.js +24 -3
  12. package/lib/cjs/store/types.d.ts +4 -4
  13. package/lib/cjs/types.d.ts +21 -1
  14. package/lib/cjs/utils/transformSql.js +51 -38
  15. package/lib/cjs/utils.d.ts +1 -0
  16. package/lib/cjs/utils.js +291 -56
  17. package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +8 -5
  18. package/lib/es/components/dialog/formula-list/LogicGroup.js +65 -19
  19. package/lib/es/components/dialog/formula-list/index.js +373 -152
  20. package/lib/es/components/dialog/formula-list/index.less +18 -5
  21. package/lib/es/components/dialog/formula-list/utils.js +45 -17
  22. package/lib/es/components/dialog/select-summarize/index.js +7 -0
  23. package/lib/es/components/modules/summarize/group-by.js +10 -1
  24. package/lib/es/components/modules/summarize/select-index.js +3 -1
  25. package/lib/es/hooks/use-state.js +182 -81
  26. package/lib/es/index.js +25 -4
  27. package/lib/es/store/types.d.ts +4 -4
  28. package/lib/es/types.d.ts +21 -1
  29. package/lib/es/utils/transformSql.js +52 -39
  30. package/lib/es/utils.d.ts +1 -0
  31. package/lib/es/utils.js +290 -55
  32. package/package.json +1 -1
package/lib/cjs/utils.js CHANGED
@@ -8,13 +8,13 @@ exports.changeTableAlias = exports.changeFieldAlias = exports.changeExistsCopyFi
8
8
  exports.containsSubset = containsSubset;
9
9
  exports.isExistsError = exports.isError = exports.isCanPaste = exports.getSubQueryColumnInstanceUuid = exports.getSubColumns = exports.getObjTem = exports.getMetaTabels = exports.getHelper = exports.getColumnsTables = exports.findMetaKey = exports.findIndex = void 0;
10
10
  exports.isValidSQLAlias = isValidSQLAlias;
11
- exports.patchData = exports.normalizeLegacySummarizeForSave = exports.metaIsCheck = exports.mergeSubQueryColumns = void 0;
11
+ exports.patchData = exports.normalizeLegacySummarizeForSave = exports.normalizeAndOrStructure = exports.metaIsCheck = exports.mergeSubQueryColumns = void 0;
12
12
  exports.reassembleByUnion = reassembleByUnion;
13
13
  exports.splitByUnion = splitByUnion;
14
14
  exports.syncSubQueryFieldReferences = void 0;
15
+ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
15
16
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/typeof"));
16
17
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectWithoutProperties"));
17
- var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
18
18
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
19
19
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
20
20
  var _objectSpread6 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
@@ -26,7 +26,10 @@ var _transformSql2 = require("./utils/transformSql");
26
26
  var _helper2 = require("./utils/helper");
27
27
  var _cloneDeep3 = _interopRequireDefault(require("lodash/cloneDeep"));
28
28
  var _patch = require("./hooks/patch");
29
- var _excluded = ["list"];
29
+ var _excluded = ["operator", "leftAtoms", "rightAtoms", "atoms"],
30
+ _excluded2 = ["operator", "leftAtoms", "rightAtoms", "atoms"],
31
+ _excluded3 = ["operator", "leftAtoms", "rightAtoms", "atoms", "items"],
32
+ _excluded4 = ["list"];
30
33
  var findIndex = exports.findIndex = function findIndex(arr, item) {
31
34
  return arr.indexOf(item);
32
35
  };
@@ -326,14 +329,13 @@ var _syncSubQueryFieldItems = function syncSubQueryFieldItems() {
326
329
  elseAtoms: _syncSubQueryFieldItems(item.elseAtoms || [], table, columns, oldColumns)
327
330
  });
328
331
  } else if (item.type === _types.AtomsTypeEnum.AND_OR) {
329
- var hasBinarySides = Array.isArray(item.leftAtoms) || Array.isArray(item.rightAtoms);
330
- nextItem = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), hasBinarySides ? {
331
- atoms: undefined,
332
- leftAtoms: _syncSubQueryFieldItems(item.leftAtoms || [], table, columns, oldColumns),
333
- rightAtoms: _syncSubQueryFieldItems(item.rightAtoms || [], table, columns, oldColumns)
334
- } : {
335
- atoms: _syncSubQueryFieldItems(item.atoms || [], table, columns, oldColumns)
336
- });
332
+ nextItem = syncAndOrBinaryFields((0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), {}, {
333
+ items: normalizeAndOrItems(item).map(function (logicItem) {
334
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, logicItem), {}, {
335
+ atoms: _syncSubQueryFieldItems(logicItem.atoms || [], table, columns, oldColumns)
336
+ });
337
+ })
338
+ }));
337
339
  } else {
338
340
  nextItem = item;
339
341
  }
@@ -633,15 +635,250 @@ var buildFormulaQuotes = function buildFormulaQuotes(item) {
633
635
  var argsText = (item.args || []).map(_getAtomDisplayText).join(' , ');
634
636
  return normalizeAtomQuotes("".concat(item.name || '', " ( ").concat(argsText, " )"));
635
637
  };
638
+ var normalizeAndOrItems = function normalizeAndOrItems(item) {
639
+ if (Array.isArray(item.items) && item.items.length > 0) {
640
+ return item.items.map(function (logicItem, index) {
641
+ var operator = logicItem.operator,
642
+ leftAtoms = logicItem.leftAtoms,
643
+ rightAtoms = logicItem.rightAtoms,
644
+ atoms = logicItem.atoms,
645
+ nextLogicItem = (0, _objectWithoutProperties2["default"])(logicItem, _excluded);
646
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, nextLogicItem), index > 0 ? {
647
+ operator: operator || item.operator || 'and'
648
+ } : {}), {}, {
649
+ atoms: Array.isArray(atoms) && atoms.length > 0 ? atoms : []
650
+ });
651
+ });
652
+ }
653
+ if (Array.isArray(item.leftAtoms) || Array.isArray(item.rightAtoms)) {
654
+ return [{
655
+ atoms: Array.isArray(item.leftAtoms) ? item.leftAtoms : []
656
+ }, {
657
+ operator: item.operator || 'and',
658
+ atoms: Array.isArray(item.rightAtoms) ? item.rightAtoms : []
659
+ }];
660
+ }
661
+ return [{
662
+ atoms: Array.isArray(item.atoms) ? item.atoms : []
663
+ }];
664
+ };
636
665
  var buildAndOrQuotes = function buildAndOrQuotes(item) {
637
- var hasBinarySides = Array.isArray(item.leftAtoms) || Array.isArray(item.rightAtoms);
638
- if (hasBinarySides) {
639
- var leftText = (item.leftAtoms || []).map(_getAtomDisplayText).join(' ');
640
- var rightText = (item.rightAtoms || []).map(_getAtomDisplayText).join(' ');
641
- return normalizeAtomQuotes("( ".concat(leftText, " ").concat(item.operator || 'and', " ").concat(rightText, " )"));
642
- }
643
- var atomsText = (item.atoms || []).map(_getAtomDisplayText).join(' ');
644
- return normalizeAtomQuotes("".concat(item.operator || 'and', " ( ").concat(atomsText, " )"));
666
+ var itemsText = normalizeAndOrItems(item).map(function (logicItem, index) {
667
+ var atomsText = (logicItem.atoms || []).map(_getAtomDisplayText).join(' ');
668
+ return index === 0 ? atomsText : "".concat(logicItem.operator || 'and', " ").concat(atomsText);
669
+ }).join(' ');
670
+ return normalizeAtomQuotes("( ".concat(itemsText, " )"));
671
+ };
672
+ var syncAndOrBinaryFields = function syncAndOrBinaryFields(item) {
673
+ var operator = item.operator,
674
+ leftAtoms = item.leftAtoms,
675
+ rightAtoms = item.rightAtoms,
676
+ atoms = item.atoms,
677
+ nextItem = (0, _objectWithoutProperties2["default"])(item, _excluded2);
678
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, nextItem), {}, {
679
+ items: normalizeAndOrItems(item)
680
+ });
681
+ };
682
+ var _normalizeAndOrStructureInner = function normalizeAndOrStructureInner(data, cache) {
683
+ if (!data || (0, _typeof2["default"])(data) !== 'object') return data;
684
+ if (cache.has(data)) return cache.get(data);
685
+ if (Array.isArray(data)) {
686
+ var nextList = [];
687
+ cache.set(data, nextList);
688
+ data.forEach(function (item) {
689
+ nextList.push(_normalizeAndOrStructureInner(item, cache));
690
+ });
691
+ return nextList;
692
+ }
693
+ var item = data;
694
+ if (item.type === _types.AtomsTypeEnum.AND_OR) {
695
+ var operator = item.operator,
696
+ leftAtoms = item.leftAtoms,
697
+ rightAtoms = item.rightAtoms,
698
+ atoms = item.atoms,
699
+ items = item.items,
700
+ nextItem = (0, _objectWithoutProperties2["default"])(item, _excluded3);
701
+ var normalizedItem = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, nextItem), {}, {
702
+ items: []
703
+ });
704
+ cache.set(item, normalizedItem);
705
+ normalizedItem.items = normalizeAndOrItems(item).map(function (logicItem) {
706
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, logicItem.operator ? {
707
+ operator: logicItem.operator
708
+ } : {}), {}, {
709
+ atoms: _normalizeAndOrStructureInner(logicItem.atoms || [], cache)
710
+ });
711
+ });
712
+ normalizedItem.quotes = buildAndOrQuotes(normalizedItem);
713
+ return normalizedItem;
714
+ }
715
+ if (item.type === _types.AtomsTypeEnum.JOIN_DEFAULT || item.type === _types.AtomsTypeEnum.EXPRESSION) {
716
+ var _nextItem = (0, _objectSpread6["default"])({}, item);
717
+ cache.set(item, _nextItem);
718
+ if (Array.isArray(item.lhs)) {
719
+ _nextItem.lhs = _normalizeAndOrStructureInner(item.lhs, cache);
720
+ }
721
+ if (Array.isArray(item.rhs)) {
722
+ _nextItem.rhs = _normalizeAndOrStructureInner(item.rhs, cache);
723
+ }
724
+ return _nextItem;
725
+ }
726
+ if (item.type === _types.AtomsTypeEnum.FORMULA) {
727
+ var _nextItem2 = (0, _objectSpread6["default"])({}, item);
728
+ cache.set(item, _nextItem2);
729
+ if (Array.isArray(item.args)) {
730
+ _nextItem2.args = _normalizeAndOrStructureInner(item.args, cache);
731
+ }
732
+ return _nextItem2;
733
+ }
734
+ if (item.type === _types.AtomsTypeEnum.COLLECTION) {
735
+ var _nextItem3 = (0, _objectSpread6["default"])({}, item);
736
+ cache.set(item, _nextItem3);
737
+ if (Array.isArray(item.list)) {
738
+ _nextItem3.list = _normalizeAndOrStructureInner(item.list, cache);
739
+ }
740
+ return _nextItem3;
741
+ }
742
+ if (item.type === _types.AtomsTypeEnum.CASE_WHEN) {
743
+ var _nextItem4 = (0, _objectSpread6["default"])({}, item);
744
+ cache.set(item, _nextItem4);
745
+ if (Array.isArray(item.caseAtoms)) {
746
+ _nextItem4.caseAtoms = _normalizeAndOrStructureInner(item.caseAtoms, cache);
747
+ }
748
+ if (Array.isArray(item.whenClauses)) {
749
+ _nextItem4.whenClauses = item.whenClauses.map(function (clause) {
750
+ if (!clause || (0, _typeof2["default"])(clause) !== 'object') return clause;
751
+ if (cache.has(clause)) return cache.get(clause);
752
+ var nextClause = (0, _objectSpread6["default"])({}, clause);
753
+ cache.set(clause, nextClause);
754
+ if (Array.isArray(clause.whenAtoms)) {
755
+ nextClause.whenAtoms = _normalizeAndOrStructureInner(clause.whenAtoms, cache);
756
+ }
757
+ if (Array.isArray(clause.thenAtoms)) {
758
+ nextClause.thenAtoms = _normalizeAndOrStructureInner(clause.thenAtoms, cache);
759
+ }
760
+ return nextClause;
761
+ });
762
+ }
763
+ if (Array.isArray(item.elseAtoms)) {
764
+ _nextItem4.elseAtoms = _normalizeAndOrStructureInner(item.elseAtoms, cache);
765
+ }
766
+ return _nextItem4;
767
+ }
768
+ if (item.type === _types.AtomsTypeEnum.EXISTS || item.type === _types.AtomsTypeEnum.NOT_EXISTS || item.type === _types.AtomsTypeEnum.SUB_QUERY) {
769
+ var _nextItem5 = (0, _objectSpread6["default"])({}, item);
770
+ cache.set(item, _nextItem5);
771
+ if (Array.isArray(item.notExists)) {
772
+ _nextItem5.notExists = _normalizeAndOrStructureInner(item.notExists, cache);
773
+ }
774
+ if (Array.isArray(item.subQuery)) {
775
+ _nextItem5.subQuery = _normalizeAndOrStructureInner(item.subQuery, cache);
776
+ }
777
+ return _nextItem5;
778
+ }
779
+ if (item.type === _enum.TypeEnum.data) {
780
+ var _nextItem6 = (0, _objectSpread6["default"])({}, item);
781
+ cache.set(item, _nextItem6);
782
+ if (Array.isArray(item.subquery)) {
783
+ _nextItem6.subquery = _normalizeAndOrStructureInner(item.subquery, cache);
784
+ }
785
+ return _nextItem6;
786
+ }
787
+ if (item.type === _enum.TypeEnum.joinData) {
788
+ var _nextItem7 = (0, _objectSpread6["default"])({}, item);
789
+ cache.set(item, _nextItem7);
790
+ if (Array.isArray(item.expressions)) {
791
+ _nextItem7.expressions = _normalizeAndOrStructureInner(item.expressions, cache);
792
+ }
793
+ if (Array.isArray(item.subquery)) {
794
+ _nextItem7.subquery = _normalizeAndOrStructureInner(item.subquery, cache);
795
+ }
796
+ return _nextItem7;
797
+ }
798
+ if (item.type === _enum.TypeEnum.customColumn) {
799
+ var _nextItem8 = (0, _objectSpread6["default"])({}, item);
800
+ cache.set(item, _nextItem8);
801
+ if (Array.isArray(item.customColumn)) {
802
+ _nextItem8.customColumn = item.customColumn.map(function (column) {
803
+ if (!column || (0, _typeof2["default"])(column) !== 'object') return column;
804
+ if (cache.has(column)) return cache.get(column);
805
+ var nextColumn = (0, _objectSpread6["default"])({}, column);
806
+ cache.set(column, nextColumn);
807
+ if (Array.isArray(column.formulaList)) {
808
+ nextColumn.formulaList = _normalizeAndOrStructureInner(column.formulaList, cache);
809
+ }
810
+ return nextColumn;
811
+ });
812
+ }
813
+ return _nextItem8;
814
+ }
815
+ if (item.type === _enum.TypeEnum.filter) {
816
+ var _nextItem9 = (0, _objectSpread6["default"])({}, item);
817
+ cache.set(item, _nextItem9);
818
+ if (Array.isArray(item.filter)) {
819
+ _nextItem9.filter = _normalizeAndOrStructureInner(item.filter, cache);
820
+ }
821
+ return _nextItem9;
822
+ }
823
+ if (item.type === _enum.TypeEnum.summarize) {
824
+ var _nextItem0 = (0, _objectSpread6["default"])({}, item);
825
+ cache.set(item, _nextItem0);
826
+ if (Array.isArray(item.group)) {
827
+ _nextItem0.group = item.group.map(function (record) {
828
+ if (!record || (0, _typeof2["default"])(record) !== 'object') return record;
829
+ if (cache.has(record)) return cache.get(record);
830
+ var nextRecord = (0, _objectSpread6["default"])({}, record);
831
+ cache.set(record, nextRecord);
832
+ if (Array.isArray(record.atoms)) {
833
+ nextRecord.atoms = _normalizeAndOrStructureInner(record.atoms, cache);
834
+ }
835
+ return nextRecord;
836
+ });
837
+ }
838
+ if (Array.isArray(item.by)) {
839
+ _nextItem0.by = item.by.map(function (record) {
840
+ if (!record || (0, _typeof2["default"])(record) !== 'object') return record;
841
+ if (cache.has(record)) return cache.get(record);
842
+ var nextRecord = (0, _objectSpread6["default"])({}, record);
843
+ cache.set(record, nextRecord);
844
+ if (Array.isArray(record.atoms)) {
845
+ nextRecord.atoms = _normalizeAndOrStructureInner(record.atoms, cache);
846
+ }
847
+ return nextRecord;
848
+ });
849
+ }
850
+ return _nextItem0;
851
+ }
852
+ if (item.type === _enum.TypeEnum.sort) {
853
+ var _nextItem1 = (0, _objectSpread6["default"])({}, item);
854
+ cache.set(item, _nextItem1);
855
+ if (Array.isArray(item.sort)) {
856
+ _nextItem1.sort = item.sort.map(function (record) {
857
+ if (!record || (0, _typeof2["default"])(record) !== 'object') return record;
858
+ if (cache.has(record)) return cache.get(record);
859
+ var nextRecord = (0, _objectSpread6["default"])({}, record);
860
+ cache.set(record, nextRecord);
861
+ if (Array.isArray(record.expression)) {
862
+ nextRecord.expression = _normalizeAndOrStructureInner(record.expression, cache);
863
+ }
864
+ return nextRecord;
865
+ });
866
+ }
867
+ return _nextItem1;
868
+ }
869
+ if (item.type === _enum.TypeEnum.union) {
870
+ var _nextItem10 = (0, _objectSpread6["default"])({}, item);
871
+ cache.set(item, _nextItem10);
872
+ if (Array.isArray(item.subquery)) {
873
+ _nextItem10.subquery = _normalizeAndOrStructureInner(item.subquery, cache);
874
+ }
875
+ return _nextItem10;
876
+ }
877
+ cache.set(item, item);
878
+ return item;
879
+ };
880
+ var normalizeAndOrStructure = exports.normalizeAndOrStructure = function normalizeAndOrStructure(data) {
881
+ return _normalizeAndOrStructureInner(data, new WeakMap());
645
882
  };
646
883
  var buildCaseWhenQuotes = function buildCaseWhenQuotes(item) {
647
884
  var caseAtomsText = (item.caseAtoms || []).map(_getAtomDisplayText).join(' ');
@@ -748,23 +985,23 @@ var syncAtomQuotes = function syncAtomQuotes(item) {
748
985
  });
749
986
  }
750
987
  if (item.type === _types.AtomsTypeEnum.FORMULA) {
751
- var _nextItem = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), {}, {
988
+ var _nextItem11 = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), {}, {
752
989
  args: syncAtomQuotesList(item.args || [])
753
990
  });
754
- return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, _nextItem), {}, {
755
- quotes: buildFormulaQuotes(_nextItem)
991
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, _nextItem11), {}, {
992
+ quotes: buildFormulaQuotes(_nextItem11)
756
993
  });
757
994
  }
758
995
  if (item.type === _types.AtomsTypeEnum.COLLECTION) {
759
- var _nextItem2 = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), {}, {
996
+ var _nextItem12 = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), {}, {
760
997
  list: syncAtomQuotesList(item.list || [])
761
998
  });
762
- return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, _nextItem2), {}, {
763
- quotes: (_nextItem2.list || []).map(_getAtomDisplayText).join(' ')
999
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, _nextItem12), {}, {
1000
+ quotes: (_nextItem12.list || []).map(_getAtomDisplayText).join(' ')
764
1001
  });
765
1002
  }
766
1003
  if (item.type === _types.AtomsTypeEnum.CASE_WHEN) {
767
- var _nextItem3 = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), {}, {
1004
+ var _nextItem13 = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), {}, {
768
1005
  caseAtoms: syncAtomQuotesList(item.caseAtoms || []),
769
1006
  whenClauses: (item.whenClauses || []).map(function (clause) {
770
1007
  return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, clause), {}, {
@@ -774,21 +1011,20 @@ var syncAtomQuotes = function syncAtomQuotes(item) {
774
1011
  }),
775
1012
  elseAtoms: syncAtomQuotesList(item.elseAtoms || [])
776
1013
  });
777
- return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, _nextItem3), {}, {
778
- quotes: buildCaseWhenQuotes(_nextItem3)
1014
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, _nextItem13), {}, {
1015
+ quotes: buildCaseWhenQuotes(_nextItem13)
779
1016
  });
780
1017
  }
781
1018
  if (item.type === _types.AtomsTypeEnum.AND_OR) {
782
- var hasBinarySides = Array.isArray(item.leftAtoms) || Array.isArray(item.rightAtoms);
783
- var _nextItem4 = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), hasBinarySides ? {
784
- atoms: undefined,
785
- leftAtoms: syncAtomQuotesList(item.leftAtoms || []),
786
- rightAtoms: syncAtomQuotesList(item.rightAtoms || [])
787
- } : {
788
- atoms: syncAtomQuotesList(item.atoms || [])
789
- });
790
- return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, _nextItem4), {}, {
791
- quotes: buildAndOrQuotes(_nextItem4)
1019
+ var _nextItem14 = syncAndOrBinaryFields((0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, item), {}, {
1020
+ items: normalizeAndOrItems(item).map(function (logicItem) {
1021
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, logicItem), {}, {
1022
+ atoms: syncAtomQuotesList(logicItem.atoms || [])
1023
+ });
1024
+ })
1025
+ }));
1026
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, _nextItem14), {}, {
1027
+ quotes: buildAndOrQuotes(_nextItem14)
792
1028
  });
793
1029
  }
794
1030
  return item;
@@ -907,14 +1143,13 @@ var _changeAlias = function changeAlias(items, val, type) {
907
1143
  elseAtoms: _changeAlias(v.elseAtoms || [], val, type)
908
1144
  });
909
1145
  } else if (v.type === _types.AtomsTypeEnum.AND_OR) {
910
- var hasBinarySides = Array.isArray(v.leftAtoms) || Array.isArray(v.rightAtoms);
911
- nextItem = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, v), hasBinarySides ? {
912
- atoms: undefined,
913
- leftAtoms: _changeAlias(v.leftAtoms || [], val, type),
914
- rightAtoms: _changeAlias(v.rightAtoms || [], val, type)
915
- } : {
916
- atoms: _changeAlias(v.atoms || [], val, type)
917
- });
1146
+ nextItem = syncAndOrBinaryFields((0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, v), {}, {
1147
+ items: normalizeAndOrItems(v).map(function (logicItem) {
1148
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, logicItem), {}, {
1149
+ atoms: _changeAlias(logicItem.atoms || [], val, type)
1150
+ });
1151
+ })
1152
+ }));
918
1153
  } else {
919
1154
  nextItem = v;
920
1155
  }
@@ -1119,7 +1354,7 @@ function splitByUnion(data) {
1119
1354
  i++;
1120
1355
  } else if (item.type === 'union') {
1121
1356
  var list = item.list,
1122
- otehr = (0, _objectWithoutProperties2["default"])(item, _excluded);
1357
+ otehr = (0, _objectWithoutProperties2["default"])(item, _excluded4);
1123
1358
  var nextItem = original[i + 1];
1124
1359
  if (nextItem && nextItem.type === 'group') {
1125
1360
  result.push((0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, otehr), {}, {
@@ -1190,7 +1425,7 @@ var normalizeSummarizeByForSave = function normalizeSummarizeByForSave(record) {
1190
1425
  };
1191
1426
  var _normalizeLegacySummarizeForSave = exports.normalizeLegacySummarizeForSave = function normalizeLegacySummarizeForSave() {
1192
1427
  var metas = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
1193
- return metas.map(function (meta) {
1428
+ var normalizedMetas = metas.map(function (meta) {
1194
1429
  if (meta.type === _enum.TypeEnum.summarize) {
1195
1430
  return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, meta), {}, {
1196
1431
  group: meta.group.map(function (item) {
@@ -1208,6 +1443,7 @@ var _normalizeLegacySummarizeForSave = exports.normalizeLegacySummarizeForSave =
1208
1443
  }
1209
1444
  return meta;
1210
1445
  });
1446
+ return normalizeAndOrStructure(normalizedMetas);
1211
1447
  };
1212
1448
  var getObjTem = exports.getObjTem = function getObjTem(arr) {
1213
1449
  var obj = {};
@@ -1509,14 +1745,13 @@ var _changeCopyField = exports.changeCopyField = function changeCopyField(items,
1509
1745
  v.args = _changeCopyField(v.args, data);
1510
1746
  return v;
1511
1747
  } else if (v.type === _types.AtomsTypeEnum.AND_OR) {
1512
- var hasBinarySides = Array.isArray(v.leftAtoms) || Array.isArray(v.rightAtoms);
1513
- return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, v), hasBinarySides ? {
1514
- atoms: undefined,
1515
- leftAtoms: _changeCopyField(v.leftAtoms || [], data),
1516
- rightAtoms: _changeCopyField(v.rightAtoms || [], data)
1517
- } : {
1518
- atoms: _changeCopyField(v.atoms || [], data)
1519
- });
1748
+ return syncAndOrBinaryFields((0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, v), {}, {
1749
+ items: normalizeAndOrItems(v).map(function (logicItem) {
1750
+ return (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, logicItem), {}, {
1751
+ atoms: _changeCopyField(logicItem.atoms || [], data)
1752
+ });
1753
+ })
1754
+ }));
1520
1755
  } else if (v.type === _types.AtomsTypeEnum.COLLECTION) {
1521
1756
  v.list = _changeCopyField(v.list, data);
1522
1757
  return v;
@@ -1,10 +1,13 @@
1
1
  import React from 'react';
2
2
  type Props = {
3
- operator: 'and' | 'or';
4
- onToggleOperator: () => void;
5
- leftContent: React.ReactNode;
6
- rightContent: React.ReactNode;
3
+ items: {
4
+ operator?: 'and' | 'or';
5
+ content: React.ReactNode;
6
+ }[];
7
+ onChangeOperator: (index: number, operator: 'and' | 'or') => void;
8
+ onAddItem: () => void;
9
+ onDeleteItem: (operatorIndex: number, side: 'left' | 'right') => void;
7
10
  onDelete: (e: any) => void;
8
11
  };
9
- declare const LogicGroup: ({ operator, onToggleOperator, leftContent, rightContent, onDelete, }: Props) => import("react/jsx-runtime").JSX.Element;
12
+ declare const LogicGroup: ({ items, onChangeOperator, onAddItem, onDeleteItem, onDelete, }: Props) => import("react/jsx-runtime").JSX.Element;
10
13
  export default LogicGroup;
@@ -1,32 +1,78 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
1
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import React from 'react';
2
4
  import cx from 'classnames';
3
- import { Tooltip } from '@gingkoo/pandora';
5
+ import { Dropdown, Tooltip } from '@gingkoo/pandora';
4
6
  import { CloseIcon } from '../../icons';
7
+ var operatorMenuItems = [{
8
+ key: 'add',
9
+ label: '添加连接符'
10
+ }, {
11
+ key: 'delete-left',
12
+ label: '删除左侧和当前连接符'
13
+ }, {
14
+ key: 'delete-right',
15
+ label: '删除右侧和当前连接符'
16
+ }];
5
17
  var LogicGroup = function LogicGroup(_ref) {
6
- var operator = _ref.operator,
7
- onToggleOperator = _ref.onToggleOperator,
8
- leftContent = _ref.leftContent,
9
- rightContent = _ref.rightContent,
18
+ var items = _ref.items,
19
+ onChangeOperator = _ref.onChangeOperator,
20
+ onAddItem = _ref.onAddItem,
21
+ onDeleteItem = _ref.onDeleteItem,
10
22
  onDelete = _ref.onDelete;
23
+ var canDeleteItem = items.length > 2;
24
+ var handleOperatorMenuChange = function handleOperatorMenuChange(operatorIndex, action) {
25
+ if (action === 'add') {
26
+ onAddItem();
27
+ return;
28
+ }
29
+ if (action === 'delete-left' || action === 'delete-right') {
30
+ var side = action === 'delete-left' ? 'left' : 'right';
31
+ onDeleteItem(operatorIndex, side);
32
+ }
33
+ };
34
+ var renderOperator = function renderOperator(operator, index) {
35
+ return _jsx(Dropdown, {
36
+ trigger: 'contextMenu',
37
+ droplist: operatorMenuItems.map(function (item) {
38
+ return _objectSpread(_objectSpread({}, item), {}, {
39
+ disabled: item.key !== 'add' && !canDeleteItem
40
+ });
41
+ }),
42
+ triggerProps: {
43
+ clickToClose: true,
44
+ style: {
45
+ zIndex: 9999
46
+ }
47
+ },
48
+ onChange: function onChange(action) {
49
+ handleOperatorMenuChange(index, action);
50
+ },
51
+ children: _jsx("button", {
52
+ type: 'button',
53
+ className: cx(':Sqb-TableName', 'operator-trigger', 'logic-operator', {
54
+ 'logic-and': operator === 'and',
55
+ 'logic-or': operator === 'or'
56
+ }),
57
+ onClick: function onClick() {
58
+ return onChangeOperator(index, operator === 'or' ? 'and' : 'or');
59
+ },
60
+ children: operator
61
+ })
62
+ });
63
+ };
11
64
  return _jsxs("div", {
12
65
  className: cx('Sqb-FormulaGroup', 'logic-group', 'formula-node-group'),
13
66
  children: [_jsx("span", {
14
67
  className: 'Sqb-CaseKeyword',
15
68
  children: "("
16
- }), _jsx("div", {
17
- className: 'Sqb-LogicGroup-content',
18
- children: leftContent
19
- }), _jsx("button", {
20
- type: 'button',
21
- className: cx('Sqb-TableName', 'operator-trigger', 'logic-operator', {
22
- 'logic-and': operator === 'and',
23
- 'logic-or': operator === 'or'
24
- }),
25
- onClick: onToggleOperator,
26
- children: operator
27
- }), _jsx("div", {
28
- className: 'Sqb-LogicGroup-content',
29
- children: rightContent
69
+ }), items.map(function (item, index) {
70
+ return _jsxs(React.Fragment, {
71
+ children: [index > 0 && renderOperator(item.operator || 'and', index), _jsx("div", {
72
+ className: 'Sqb-LogicGroup-content',
73
+ children: item.content
74
+ })]
75
+ }, index);
30
76
  }), _jsx("span", {
31
77
  className: 'Sqb-CaseKeyword',
32
78
  children: ")"