@gingkoo/pandora-metabase 1.0.0-alpha.5 → 1.0.0-alpha.7

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.
@@ -10,6 +10,7 @@ interface PropsType {
10
10
  onChange: (reocrd: MetaFilter_Item) => void;
11
11
  didUpdate?: Function;
12
12
  isCustom?: boolean;
13
+ container?: any;
13
14
  }
14
15
  declare const _default: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
15
16
  export default _default;
package/lib/es/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @gingkoo/pandora-metabase v1.0.0-alpha.5
2
+ * @gingkoo/pandora-metabase v1.0.0-alpha.7
3
3
  */
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
5
  import * as React from 'react';
@@ -735,8 +735,8 @@ const changeTableAlias = (list, curObj) => {
735
735
  if (v.type === TypeEnum.customColumn) {
736
736
  v.customColumn.map(item => {
737
737
  item.formulaList?.map(formula => {
738
- if (formula.tableUuid === tableUuid) {
739
- formula.alias = alias;
738
+ if (formula.expression && formula.expression.tableUuid === tableUuid) {
739
+ formula.expression.alias = alias;
740
740
  }
741
741
  });
742
742
  });
@@ -808,8 +808,8 @@ const changeFieldAlias = (list, curObj) => {
808
808
  if (v.type === TypeEnum.customColumn) {
809
809
  v.customColumn.map(item => {
810
810
  item.formulaList?.map(formula => {
811
- if (formula.fieldUuid === fieldUuid) {
812
- formula.fieldAlias = fieldAlias;
811
+ if (formula.expression && formula.expression.fieldUuid === fieldUuid) {
812
+ formula.expression.fieldAlias = fieldAlias;
813
813
  }
814
814
  });
815
815
  });
@@ -3711,7 +3711,7 @@ const SelectColumn = ({
3711
3711
  });
3712
3712
  };
3713
3713
 
3714
- var css_248z$6 = ".Sqb-SelectColumns--box {\n box-sizing: border-box;\n min-width: 1em;\n max-width: 500px;\n background-color: #ffffff;\n overflow: hidden;\n}\n.Sqb-SelectColumns--box .Sqb-List-item {\n display: flex;\n border-radius: 4px;\n margin-top: 2px;\n margin-bottom: 2px;\n}\n.Sqb-SelectColumns--box .Sqb-List-item a {\n flex: auto;\n cursor: pointer;\n display: flex;\n align-items: center;\n}\n.Sqb-SelectColumns--box .Sqb-List-item .List-item-icon {\n display: flex;\n align-items: center;\n color: #b8bbc3;\n}\n.Sqb-SelectColumns--box .Sqb-List-item .List-item-title {\n word-break: break-word;\n word-wrap: anywhere;\n color: #4c5773;\n margin-top: 0;\n margin-bottom: 0;\n font-size: 14px;\n}\n.Sqb-SelectColumns--box .Sqb-List-item .Field-extra {\n display: flex;\n align-items: center;\n padding: 0.5rem;\n cursor: pointer;\n border-left: 2px solid rgba(113, 114, 173, 0.1);\n color: rgba(255, 255, 255, 0.5);\n visibility: hidden;\n}\n.Sqb-SelectColumns--box .Sqb-List-item .Field-extra h4 {\n margin-bottom: 0;\n color: inherit;\n}\n.Sqb-SelectColumns--box .Sqb-List-item .Field-extra svg {\n color: #fff;\n margin-left: 0.5rem;\n}\n.Sqb-SelectColumns--box .Sqb-List-item .Field-extra:hover {\n color: #fff;\n}\n.Sqb-SelectColumns--box .Sqb-List-item:not(.disabled):hover,\n.Sqb-SelectColumns--box .Sqb-List-item.active {\n background-color: #509ee3;\n border-color: rgba(169, 137, 197, 0.2);\n}\n.Sqb-SelectColumns--box .Sqb-List-item:not(.disabled):hover .List-item-icon,\n.Sqb-SelectColumns--box .Sqb-List-item.active .List-item-icon {\n color: #fff !important;\n}\n.Sqb-SelectColumns--box .Sqb-List-item:not(.disabled):hover .List-item-title,\n.Sqb-SelectColumns--box .Sqb-List-item.active .List-item-title {\n color: #fff !important;\n}\n.Sqb-SelectColumns--box .Sqb-List-item:not(.disabled):hover .Field-extra,\n.Sqb-SelectColumns--box .Sqb-List-item.active .Field-extra {\n visibility: visible;\n}\n.Sqb-SelectColumns--box .Sqb-List-item.disabled .List-item-title {\n color: #949aab !important;\n}\n.Sqb-SelectColumns--box .Sqb-List-title {\n display: flex;\n border-radius: 4px;\n}\n.Sqb-SelectColumns--box .Sqb-List-title a {\n flex: auto;\n cursor: default;\n display: flex;\n align-items: center;\n color: #4c5773;\n overflow: hidden;\n}\n.Sqb-SelectColumns--box .Sqb-List-title .List-item-icon {\n display: flex;\n align-items: center;\n}\n.Sqb-SelectColumns--box .Sqb-List-title .List-item-title {\n word-break: break-word;\n word-wrap: anywhere;\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.Sqb-SelectColumns--box .Sqb-List-title .List-title-arrow {\n margin-left: auto;\n}\n.Sqb-SelectColumns--box .Sqb-List-title.active .List-item-icon {\n color: #509ee3;\n}\n.Sqb-SelectColumns--box .Sqb-List-title.shrink {\n cursor: pointer;\n}\n.Sqb-SelectColumns--box .Sqb-List-title.shrink a {\n cursor: pointer;\n}\n.Sqb-SelectColumns--box .Sqb-List-title.shrink:hover a {\n color: #509ee3;\n}\n.Sqb-SelectColumns--box .Sqb-List-title.shrink:hover a .List-item-title {\n color: #509ee3;\n}\n.Sqb-SelectColumns--box .Sqb-List-search {\n display: flex;\n align-items: center;\n flex: 1 0 auto;\n color: #b8bbc3;\n background-color: #fff;\n border: 1px solid #f0f0f0;\n font-size: 14px;\n}\n.Sqb-SelectColumns--box .Sqb-List-search span {\n line-height: 0;\n}\n.Sqb-SelectColumns--box .Sqb-List-search input {\n box-shadow: none;\n outline: 0;\n border: none !important;\n background: transparent;\n color: #4c5773;\n font-size: 1.12em;\n font-weight: 600;\n}\n.Sqb-SelectColumns--box .Sqb-List-search input::-webkit-input-placeholder {\n color: #b8bbc3;\n}\n.Sqb-SelectColumns--box .Sqb-List-search input::-ms-input-placeholder {\n color: #b8bbc3;\n}\n.Sqb-SelectColumns--box.greenGrass .Sqb-List-item:not(.disabled):hover,\n.Sqb-SelectColumns--box.greenGrass .Sqb-List-item.active {\n background-color: #88bf4d;\n}\n.Sqb-SelectColumns--box.greenGrass .Sqb-List-title.active .List-item-icon {\n color: #88bf4d;\n}\n.Sqb-SelectColumns--box.greenGrass .Sqb-List-title.shrink:hover a {\n color: #88bf4d;\n}\n.Sqb-SelectColumns--box.greenGrass .Sqb-List-title.shrink:hover a .List-item-title {\n color: #88bf4d;\n}\n.Sqb-SelectColumns--box.purple .Sqb-List-item:not(.disabled):hover,\n.Sqb-SelectColumns--box.purple .Sqb-List-item.active {\n background-color: #7172ad;\n}\n.Sqb-SelectColumns--box.purple .Sqb-List-title.active .List-item-icon {\n color: #7172ad;\n}\n.Sqb-SelectColumns--box.purple .Sqb-List-title.shrink:hover a {\n color: #7172ad;\n}\n.Sqb-SelectColumns--box.purple .Sqb-List-title.shrink:hover a .List-item-title {\n color: #7172ad;\n}\n.menu-list {\n border: none !important;\n}\n.menu-list .ant-menu-item:hover {\n color: #88bf4d !important;\n}\n.menu-list .ant-menu-item-selected {\n background-color: #88bf4d !important;\n color: #fff !important;\n border-radius: 4px !important;\n}\n";
3714
+ var css_248z$6 = ".Sqb-SelectColumns--box {\n box-sizing: border-box;\n min-width: 1em;\n max-width: 500px;\n background-color: #ffffff;\n overflow: hidden;\n}\n.Sqb-SelectColumns--box .Sqb-List-item {\n display: flex;\n border-radius: 4px;\n margin-top: 2px;\n margin-bottom: 2px;\n}\n.Sqb-SelectColumns--box .Sqb-List-item .List-item {\n flex: auto;\n cursor: pointer;\n display: flex;\n align-items: center;\n}\n.Sqb-SelectColumns--box .Sqb-List-item .List-item-icon {\n display: flex;\n align-items: center;\n color: #b8bbc3;\n}\n.Sqb-SelectColumns--box .Sqb-List-item .List-item-title {\n word-break: break-word;\n word-wrap: anywhere;\n color: #4c5773;\n margin-top: 0;\n margin-bottom: 0;\n font-size: 14px;\n}\n.Sqb-SelectColumns--box .Sqb-List-item .Field-extra {\n display: flex;\n align-items: center;\n padding: 0.5rem;\n cursor: pointer;\n border-left: 2px solid rgba(113, 114, 173, 0.1);\n color: rgba(255, 255, 255, 0.5);\n visibility: hidden;\n}\n.Sqb-SelectColumns--box .Sqb-List-item .Field-extra h4 {\n margin-bottom: 0;\n color: inherit;\n}\n.Sqb-SelectColumns--box .Sqb-List-item .Field-extra svg {\n color: #fff;\n margin-left: 0.5rem;\n}\n.Sqb-SelectColumns--box .Sqb-List-item .Field-extra:hover {\n color: #fff;\n}\n.Sqb-SelectColumns--box .Sqb-List-item:not(.disabled):hover,\n.Sqb-SelectColumns--box .Sqb-List-item.active {\n background-color: #509ee3;\n border-color: rgba(169, 137, 197, 0.2);\n}\n.Sqb-SelectColumns--box .Sqb-List-item:not(.disabled):hover .List-item-icon,\n.Sqb-SelectColumns--box .Sqb-List-item.active .List-item-icon {\n color: #fff !important;\n}\n.Sqb-SelectColumns--box .Sqb-List-item:not(.disabled):hover .List-item-title,\n.Sqb-SelectColumns--box .Sqb-List-item.active .List-item-title {\n color: #fff !important;\n}\n.Sqb-SelectColumns--box .Sqb-List-item:not(.disabled):hover .Field-extra,\n.Sqb-SelectColumns--box .Sqb-List-item.active .Field-extra {\n visibility: visible;\n}\n.Sqb-SelectColumns--box .Sqb-List-item.disabled .List-item-title {\n color: #949aab !important;\n}\n.Sqb-SelectColumns--box .Sqb-List-title {\n display: flex;\n border-radius: 4px;\n}\n.Sqb-SelectColumns--box .Sqb-List-title .List-item {\n flex: auto;\n cursor: pointer;\n display: flex;\n align-items: center;\n color: #4c5773;\n overflow: hidden;\n}\n.Sqb-SelectColumns--box .Sqb-List-title .List-item-icon {\n display: flex;\n align-items: center;\n}\n.Sqb-SelectColumns--box .Sqb-List-title .List-item-title {\n word-break: break-word;\n word-wrap: anywhere;\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.Sqb-SelectColumns--box .Sqb-List-title .List-title-arrow {\n margin-left: auto;\n}\n.Sqb-SelectColumns--box .Sqb-List-title.active .List-item-icon {\n color: #509ee3;\n}\n.Sqb-SelectColumns--box .Sqb-List-title.shrink {\n cursor: pointer;\n}\n.Sqb-SelectColumns--box .Sqb-List-title.shrink .List-item {\n cursor: pointer;\n}\n.Sqb-SelectColumns--box .Sqb-List-title.shrink:hover .List-item {\n color: #509ee3;\n}\n.Sqb-SelectColumns--box .Sqb-List-title.shrink:hover .List-item .List-item-title {\n color: #509ee3;\n}\n.Sqb-SelectColumns--box .Sqb-List-search {\n display: flex;\n align-items: center;\n flex: 1 0 auto;\n color: #b8bbc3;\n background-color: #fff;\n border: 1px solid #f0f0f0;\n font-size: 14px;\n}\n.Sqb-SelectColumns--box .Sqb-List-search span {\n line-height: 0;\n}\n.Sqb-SelectColumns--box .Sqb-List-search input {\n box-shadow: none;\n outline: 0;\n border: none !important;\n background: transparent;\n color: #4c5773;\n font-size: 1.12em;\n font-weight: 600;\n}\n.Sqb-SelectColumns--box .Sqb-List-search input::-webkit-input-placeholder {\n color: #b8bbc3;\n}\n.Sqb-SelectColumns--box .Sqb-List-search input::-ms-input-placeholder {\n color: #b8bbc3;\n}\n.Sqb-SelectColumns--box.greenGrass .Sqb-List-item:not(.disabled):hover,\n.Sqb-SelectColumns--box.greenGrass .Sqb-List-item.active {\n background-color: #88bf4d;\n}\n.Sqb-SelectColumns--box.greenGrass .Sqb-List-title.active .List-item-icon {\n color: #88bf4d;\n}\n.Sqb-SelectColumns--box.greenGrass .Sqb-List-title.shrink:hover a {\n color: #88bf4d;\n}\n.Sqb-SelectColumns--box.greenGrass .Sqb-List-title.shrink:hover a .List-item-title {\n color: #88bf4d;\n}\n.Sqb-SelectColumns--box.purple .Sqb-List-item:not(.disabled):hover,\n.Sqb-SelectColumns--box.purple .Sqb-List-item.active {\n background-color: #7172ad;\n}\n.Sqb-SelectColumns--box.purple .Sqb-List-title.active .List-item-icon {\n color: #7172ad;\n}\n.Sqb-SelectColumns--box.purple .Sqb-List-title.shrink:hover a {\n color: #7172ad;\n}\n.Sqb-SelectColumns--box.purple .Sqb-List-title.shrink:hover a .List-item-title {\n color: #7172ad;\n}\n.menu-list {\n border: none !important;\n}\n.menu-list .ant-menu-item:hover {\n color: #88bf4d !important;\n}\n.menu-list .ant-menu-item-selected {\n background-color: #88bf4d !important;\n color: #fff !important;\n border-radius: 4px !important;\n}\n";
3715
3715
  styleInject(css_248z$6);
3716
3716
 
3717
3717
  const NUMBER_GROUP = [SQL_COLUMN_TYPE.FLOAT, SQL_COLUMN_TYPE.LONG, SQL_COLUMN_TYPE.CURRENCY];
@@ -3829,7 +3829,8 @@ const SelectJoinColumn = ({
3829
3829
  })));
3830
3830
  }
3831
3831
  },
3832
- children: jsxs("a", {
3832
+ children: jsxs("div", {
3833
+ className: 'List-item',
3833
3834
  children: [jsx("span", {
3834
3835
  className: 'List-item-icon',
3835
3836
  children: jsx(TableIcon, {})
@@ -3848,7 +3849,7 @@ const SelectJoinColumn = ({
3848
3849
  })]
3849
3850
  })
3850
3851
  })
3851
- }), open && jsxs(Fragment, {
3852
+ }), (open || isSummarize) && jsxs(Fragment, {
3852
3853
  children: [!isSummarize && jsx("div", {
3853
3854
  className: cx(`Sqb-List-section`),
3854
3855
  children: jsxs("div", {
@@ -3921,8 +3922,8 @@ const SelectJoinColumn = ({
3921
3922
  realName
3922
3923
  });
3923
3924
  },
3924
- children: [jsxs("a", {
3925
- className: 'p-2',
3925
+ children: [jsxs("div", {
3926
+ className: 'p-2 List-item',
3926
3927
  children: [jsx("span", {
3927
3928
  className: 'List-item-icon',
3928
3929
  children: IconMap[special_type || database_type] || jsx(LetterAaIcon, {})
@@ -3961,7 +3962,8 @@ const SelectFilterColumn = ({
3961
3962
  value,
3962
3963
  onChange,
3963
3964
  didUpdate,
3964
- isCustom: _isCustom = false
3965
+ isCustom: _isCustom = false,
3966
+ container: _container = null
3965
3967
  }) => {
3966
3968
  const [curColumn, setCurColumn] = useState(value);
3967
3969
  const [condition, setCondition] = useState(value.condition);
@@ -4378,6 +4380,7 @@ const SelectFilterColumn = ({
4378
4380
  store.setPopup2({
4379
4381
  visible: true,
4380
4382
  node: e.currentTarget,
4383
+ container: _container,
4381
4384
  content: jsx(SelectList, {
4382
4385
  value: valType,
4383
4386
  list: store.constantList || [],
@@ -4400,6 +4403,7 @@ const SelectFilterColumn = ({
4400
4403
  store.setPopup2({
4401
4404
  visible: true,
4402
4405
  node: e.currentTarget,
4406
+ container: _container,
4403
4407
  content: jsx(SelectList, {
4404
4408
  value: valType,
4405
4409
  list: [{
@@ -4434,6 +4438,7 @@ const SelectFilterColumn = ({
4434
4438
  store.setPopup2({
4435
4439
  visible: true,
4436
4440
  node: e.currentTarget,
4441
+ container: _container,
4437
4442
  content: jsx(SelectJoinColumn, {
4438
4443
  data: [..._data],
4439
4444
  value: value,
@@ -6539,12 +6544,12 @@ const CaseEditor = props => {
6539
6544
  onOk,
6540
6545
  onCancel
6541
6546
  } = props;
6542
- const [popup, setPopup] = useState({
6543
- visible: false
6544
- }); // 弹框信息
6547
+ // const [popup, setPopup] = useState<PopupType>({ visible: false }); // 弹框信息
6545
6548
  const [caseList, setCaseList] = useState(value.formulaList || []);
6546
6549
  const [name, setName] = useState(value?.name || ''); // 表达式名字
6547
6550
  const [ind, setInd] = useState(-1);
6551
+ const ref = useRef(null);
6552
+ const store = useStore$1();
6548
6553
  const filterCase = useMemo(() => {
6549
6554
  const hasCase = caseList.some(item => item.type === OptionsTypeEnum.OTHER && item.operator === 'case');
6550
6555
  if (hasCase) {
@@ -6556,24 +6561,22 @@ const CaseEditor = props => {
6556
6561
  const usable = useMemo(() => {
6557
6562
  return Array.from(caseList).length > 0 && name;
6558
6563
  }, [caseList, name]);
6559
- const popupContent = useMemo(() => {
6560
- let {
6561
- visible,
6562
- content
6563
- } = popup;
6564
- if (!visible) return null;
6565
- return content;
6566
- }, [popup]);
6564
+ // const popupContent = useMemo(() => {
6565
+ // let { visible, content } = popup;
6566
+ // if (!visible) return null;
6567
+ // return content;
6568
+ // }, [popup]);
6567
6569
  function closePopup() {
6568
- setPopup({
6570
+ store.setPopup({
6569
6571
  visible: false
6570
6572
  });
6571
6573
  }
6572
6574
  // 字段
6573
6575
  function handleField(e, i, val) {
6574
- setPopup({
6576
+ store.setPopup({
6575
6577
  visible: true,
6576
6578
  node: e.currentTarget,
6579
+ container: ref.current,
6577
6580
  content: jsx(SelectJoinColumn, {
6578
6581
  data: data,
6579
6582
  value: val,
@@ -6581,8 +6584,13 @@ const CaseEditor = props => {
6581
6584
  isGroup: true,
6582
6585
  // @ts-ignore
6583
6586
  onGroup: data => {
6587
+ let _data = cloneDeep(data);
6588
+ if (_data.alias != SummarizeAlias$1) {
6589
+ _data.fieldAlias = _data.name;
6590
+ _data.fieldUuid = uuidv4('field');
6591
+ }
6584
6592
  const _caseList = caseList.slice();
6585
- _caseList[i].expression = data;
6593
+ _caseList[i].expression = _data;
6586
6594
  setCaseList(_caseList);
6587
6595
  closePopup();
6588
6596
  }
@@ -6598,16 +6606,23 @@ const CaseEditor = props => {
6598
6606
  };
6599
6607
  // 表达式
6600
6608
  function handleExpression(e, i, val) {
6601
- setPopup({
6609
+ store.setPopup({
6602
6610
  visible: true,
6603
6611
  node: e.currentTarget,
6612
+ container: ref.current,
6604
6613
  content: jsx(SelectFilter, {
6605
6614
  isCustom: true,
6615
+ container: ref.current,
6606
6616
  data: data,
6607
6617
  value: val,
6608
6618
  onChange: data => {
6619
+ let _data = cloneDeep(data);
6620
+ if (_data.alias != SummarizeAlias$1) {
6621
+ _data.fieldAlias = _data.name;
6622
+ _data.fieldUuid = uuidv4('field');
6623
+ }
6609
6624
  const _caseList = caseList.slice();
6610
- _caseList[i].expression = data;
6625
+ _caseList[i].expression = _data;
6611
6626
  setCaseList(_caseList);
6612
6627
  closePopup();
6613
6628
  }
@@ -6799,6 +6814,7 @@ const CaseEditor = props => {
6799
6814
  };
6800
6815
  return jsxs("div", {
6801
6816
  className: 'custom-box',
6817
+ ref: ref,
6802
6818
  children: [jsx(VisualBox$1, {
6803
6819
  children: jsx("div", {
6804
6820
  className: `Sqb-item Sqb-case-editor mb-2 mt-2`,
@@ -6936,13 +6952,6 @@ const CaseEditor = props => {
6936
6952
  })]
6937
6953
  })
6938
6954
  })
6939
- }), jsx(Popup, {
6940
- visible: popup.visible,
6941
- closable: true,
6942
- node: popup.node,
6943
- innerSpacing: popup.innerSpacing,
6944
- hideVisible: closePopup,
6945
- children: popupContent
6946
6955
  }), jsx("div", {
6947
6956
  className: `btns p-4`,
6948
6957
  children: jsxs("div", {
@@ -7074,7 +7083,7 @@ const CustomColumn = props => {
7074
7083
  }
7075
7084
  return data;
7076
7085
  }
7077
- // 子查询弹窗
7086
+ // 自定义弹窗
7078
7087
  const showSubQuery = (e, i) => {
7079
7088
  let newMeta = store.metaList[groupIndex].list.slice();
7080
7089
  const _value = newMeta[index].customColumn[i] || [];
@@ -8735,7 +8744,7 @@ const Metabase = props => {
8735
8744
  onClick: onSave,
8736
8745
  children: btnText || __('SqlQueryBuilder.visualize')
8737
8746
  }) : null, store.popupContainer.current && jsx(Popup, {
8738
- container: store.popupContainer.current,
8747
+ container: store.popupData.container || store.popupContainer.current,
8739
8748
  visible: store.popupData.visible,
8740
8749
  node: store.popupData.node,
8741
8750
  closable: store.popupClosable,
@@ -8747,7 +8756,7 @@ const Metabase = props => {
8747
8756
  },
8748
8757
  children: popupContent
8749
8758
  }), store.popupContainer.current && jsx(Popup, {
8750
- container: store.popupContainer.current,
8759
+ container: store.popupData2.container || store.popupContainer.current,
8751
8760
  visible: store.popupData2.visible,
8752
8761
  node: store.popupData2.node,
8753
8762
  closable: store.popupClosable2,