@gingkoo/pandora-metabase 1.0.0-alpha.4 → 1.0.0-alpha.6
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/es/components/popup.d.ts +6 -2
- package/lib/es/index.js +73 -27
- package/lib/es/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
export declare function generateTrigger(PortalComponent: any): {
|
|
3
3
|
new (props: PropsType): {
|
|
4
|
+
resizeObserver: ResizeObserver | null;
|
|
4
5
|
resetId: number;
|
|
5
6
|
ref: any;
|
|
6
7
|
componentDidMount(): void;
|
|
8
|
+
componentDidUpdate(prevProps: PropsType): void;
|
|
7
9
|
componentWillUnmount(): void;
|
|
10
|
+
initResizeObserver: () => void;
|
|
8
11
|
bindEvent: () => void;
|
|
9
12
|
closePopup: () => void;
|
|
10
13
|
attachParent: (popupContainer: HTMLSpanElement) => void;
|
|
@@ -29,7 +32,6 @@ export declare function generateTrigger(PortalComponent: any): {
|
|
|
29
32
|
shouldComponentUpdate?(nextProps: Readonly<PropsType>, nextState: Readonly<{}>, nextContext: any): boolean;
|
|
30
33
|
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
|
31
34
|
getSnapshotBeforeUpdate?(prevProps: Readonly<PropsType>, prevState: Readonly<{}>): any;
|
|
32
|
-
componentDidUpdate?(prevProps: Readonly<PropsType>, prevState: Readonly<{}>, snapshot?: any): void;
|
|
33
35
|
componentWillMount?(): void;
|
|
34
36
|
UNSAFE_componentWillMount?(): void;
|
|
35
37
|
componentWillReceiveProps?(nextProps: Readonly<PropsType>, nextContext: any): void;
|
|
@@ -45,10 +47,13 @@ export declare function generateTrigger(PortalComponent: any): {
|
|
|
45
47
|
};
|
|
46
48
|
declare const _default: {
|
|
47
49
|
new (props: PropsType): {
|
|
50
|
+
resizeObserver: ResizeObserver | null;
|
|
48
51
|
resetId: number;
|
|
49
52
|
ref: any;
|
|
50
53
|
componentDidMount(): void;
|
|
54
|
+
componentDidUpdate(prevProps: PropsType): void;
|
|
51
55
|
componentWillUnmount(): void;
|
|
56
|
+
initResizeObserver: () => void;
|
|
52
57
|
bindEvent: () => void;
|
|
53
58
|
closePopup: () => void;
|
|
54
59
|
attachParent: (popupContainer: HTMLSpanElement) => void;
|
|
@@ -73,7 +78,6 @@ declare const _default: {
|
|
|
73
78
|
shouldComponentUpdate?(nextProps: Readonly<PropsType>, nextState: Readonly<{}>, nextContext: any): boolean;
|
|
74
79
|
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
|
75
80
|
getSnapshotBeforeUpdate?(prevProps: Readonly<PropsType>, prevState: Readonly<{}>): any;
|
|
76
|
-
componentDidUpdate?(prevProps: Readonly<PropsType>, prevState: Readonly<{}>, snapshot?: any): void;
|
|
77
81
|
componentWillMount?(): void;
|
|
78
82
|
UNSAFE_componentWillMount?(): void;
|
|
79
83
|
componentWillReceiveProps?(nextProps: Readonly<PropsType>, nextContext: any): void;
|
package/lib/es/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @gingkoo/pandora-metabase v1.0.0-alpha.
|
|
2
|
+
* @gingkoo/pandora-metabase v1.0.0-alpha.6
|
|
3
3
|
*/
|
|
4
4
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
5
5
|
import * as React from 'react';
|
|
@@ -278,7 +278,6 @@ const summarizeToSql = (arr, record) => {
|
|
|
278
278
|
condition,
|
|
279
279
|
alias,
|
|
280
280
|
name,
|
|
281
|
-
fieldAlias,
|
|
282
281
|
realName = ''
|
|
283
282
|
} = record;
|
|
284
283
|
let index = arr.indexOf(record);
|
|
@@ -339,7 +338,7 @@ const summarizeToSql = (arr, record) => {
|
|
|
339
338
|
count++;
|
|
340
339
|
}
|
|
341
340
|
});
|
|
342
|
-
as =
|
|
341
|
+
as = as + (count ? '_' + (count + 1) : '');
|
|
343
342
|
return {
|
|
344
343
|
sql: sql + ' AS ' + as,
|
|
345
344
|
fieldAlias: as
|
|
@@ -736,8 +735,8 @@ const changeTableAlias = (list, curObj) => {
|
|
|
736
735
|
if (v.type === TypeEnum.customColumn) {
|
|
737
736
|
v.customColumn.map(item => {
|
|
738
737
|
item.formulaList?.map(formula => {
|
|
739
|
-
if (formula.tableUuid === tableUuid) {
|
|
740
|
-
formula.alias = alias;
|
|
738
|
+
if (formula.expression && formula.expression.tableUuid === tableUuid) {
|
|
739
|
+
formula.expression.alias = alias;
|
|
741
740
|
}
|
|
742
741
|
});
|
|
743
742
|
});
|
|
@@ -809,8 +808,8 @@ const changeFieldAlias = (list, curObj) => {
|
|
|
809
808
|
if (v.type === TypeEnum.customColumn) {
|
|
810
809
|
v.customColumn.map(item => {
|
|
811
810
|
item.formulaList?.map(formula => {
|
|
812
|
-
if (formula.fieldUuid === fieldUuid) {
|
|
813
|
-
formula.fieldAlias = fieldAlias;
|
|
811
|
+
if (formula.expression && formula.expression.fieldUuid === fieldUuid) {
|
|
812
|
+
formula.expression.fieldAlias = fieldAlias;
|
|
814
813
|
}
|
|
815
814
|
});
|
|
816
815
|
});
|
|
@@ -1001,6 +1000,8 @@ const useStore = () => {
|
|
|
1001
1000
|
}); //弹窗
|
|
1002
1001
|
const [popupClosable, setClosable] = useState(true); //是否可关闭 如果弹框里面再弹框 则不可关闭
|
|
1003
1002
|
const [popupClosable2, setClosable2] = useState(true); //是否可关闭 如果弹框里面再弹框 则不可关闭
|
|
1003
|
+
// 外层ref
|
|
1004
|
+
const popupContainer = useRef();
|
|
1004
1005
|
// const [fetchDatasetFn, setFetchDatasetFn] = useState<(id: string) => Promise<any>>(
|
|
1005
1006
|
// async () => {},
|
|
1006
1007
|
// ); //fn
|
|
@@ -1411,7 +1412,8 @@ const useStore = () => {
|
|
|
1411
1412
|
_setShowSubquery,
|
|
1412
1413
|
constantList,
|
|
1413
1414
|
setConstantList,
|
|
1414
|
-
changeAlias
|
|
1415
|
+
changeAlias,
|
|
1416
|
+
popupContainer
|
|
1415
1417
|
};
|
|
1416
1418
|
};
|
|
1417
1419
|
|
|
@@ -3426,6 +3428,7 @@ function returnDocument(element) {
|
|
|
3426
3428
|
const outSpacing = 10;
|
|
3427
3429
|
function generateTrigger(PortalComponent) {
|
|
3428
3430
|
class Trigger extends React.Component {
|
|
3431
|
+
resizeObserver = null; // 显式声明 resizeObserver 属性
|
|
3429
3432
|
resetId = -1; // 监听窗口改变事件id 用于组件销毁的时候清除事件
|
|
3430
3433
|
static defaultProps = {
|
|
3431
3434
|
visible: false,
|
|
@@ -3440,11 +3443,39 @@ function generateTrigger(PortalComponent) {
|
|
|
3440
3443
|
this.resetId = winResetEvent.addEvent(this.didUpdate, this, 300);
|
|
3441
3444
|
this.props.container && this.props.container.addEventListener('scroll', this.didUpdate);
|
|
3442
3445
|
this.bindEvent();
|
|
3446
|
+
// 延迟绑定 ResizeObserver 到 ensure the element is ready
|
|
3447
|
+
this.initResizeObserver();
|
|
3448
|
+
}
|
|
3449
|
+
componentDidUpdate(prevProps) {
|
|
3450
|
+
// 如果 children 发生变化,重新初始化观察器
|
|
3451
|
+
if (prevProps.children !== this.props.children) {
|
|
3452
|
+
this.initResizeObserver();
|
|
3453
|
+
}
|
|
3443
3454
|
}
|
|
3444
3455
|
componentWillUnmount() {
|
|
3445
3456
|
winResetEvent.removeEvent(this.resetId);
|
|
3446
3457
|
this.props.container && this.props.container.removeEventListener('scroll', this.didUpdate);
|
|
3458
|
+
if (this.resizeObserver) {
|
|
3459
|
+
this.resizeObserver.disconnect();
|
|
3460
|
+
this.resizeObserver = null;
|
|
3461
|
+
}
|
|
3447
3462
|
}
|
|
3463
|
+
// children高度变化后,从新计算高度
|
|
3464
|
+
initResizeObserver = () => {
|
|
3465
|
+
const targetNode = this.ref.current;
|
|
3466
|
+
if (!targetNode) return;
|
|
3467
|
+
// 如果已经存在 ResizeObserver,先断开连接
|
|
3468
|
+
if (this.resizeObserver) {
|
|
3469
|
+
this.resizeObserver.disconnect();
|
|
3470
|
+
}
|
|
3471
|
+
// 初始化 ResizeObserver 并开始观察目标节点
|
|
3472
|
+
this.resizeObserver = new ResizeObserver(entries => {
|
|
3473
|
+
entries.forEach(entry => {
|
|
3474
|
+
this.didUpdate();
|
|
3475
|
+
});
|
|
3476
|
+
});
|
|
3477
|
+
this.resizeObserver.observe(targetNode);
|
|
3478
|
+
};
|
|
3448
3479
|
bindEvent = () => {
|
|
3449
3480
|
let that = this;
|
|
3450
3481
|
returnDocument().body.addEventListener('click', function (e) {
|
|
@@ -3680,7 +3711,7 @@ const SelectColumn = ({
|
|
|
3680
3711
|
});
|
|
3681
3712
|
};
|
|
3682
3713
|
|
|
3683
|
-
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
|
|
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";
|
|
3684
3715
|
styleInject(css_248z$6);
|
|
3685
3716
|
|
|
3686
3717
|
const NUMBER_GROUP = [SQL_COLUMN_TYPE.FLOAT, SQL_COLUMN_TYPE.LONG, SQL_COLUMN_TYPE.CURRENCY];
|
|
@@ -3798,7 +3829,8 @@ const SelectJoinColumn = ({
|
|
|
3798
3829
|
})));
|
|
3799
3830
|
}
|
|
3800
3831
|
},
|
|
3801
|
-
children: jsxs("
|
|
3832
|
+
children: jsxs("div", {
|
|
3833
|
+
className: 'List-item',
|
|
3802
3834
|
children: [jsx("span", {
|
|
3803
3835
|
className: 'List-item-icon',
|
|
3804
3836
|
children: jsx(TableIcon, {})
|
|
@@ -3817,7 +3849,7 @@ const SelectJoinColumn = ({
|
|
|
3817
3849
|
})]
|
|
3818
3850
|
})
|
|
3819
3851
|
})
|
|
3820
|
-
}), open && jsxs(Fragment, {
|
|
3852
|
+
}), (open || isSummarize) && jsxs(Fragment, {
|
|
3821
3853
|
children: [!isSummarize && jsx("div", {
|
|
3822
3854
|
className: cx(`Sqb-List-section`),
|
|
3823
3855
|
children: jsxs("div", {
|
|
@@ -3890,8 +3922,8 @@ const SelectJoinColumn = ({
|
|
|
3890
3922
|
realName
|
|
3891
3923
|
});
|
|
3892
3924
|
},
|
|
3893
|
-
children: [jsxs("
|
|
3894
|
-
className: 'p-2',
|
|
3925
|
+
children: [jsxs("div", {
|
|
3926
|
+
className: 'p-2 List-item',
|
|
3895
3927
|
children: [jsx("span", {
|
|
3896
3928
|
className: 'List-item-icon',
|
|
3897
3929
|
children: IconMap[special_type || database_type] || jsx(LetterAaIcon, {})
|
|
@@ -6003,10 +6035,11 @@ const JoinData = props => {
|
|
|
6003
6035
|
let oldList = cloneDeep(newMeta[index].subquery);
|
|
6004
6036
|
let _toolbar = subToolbar || toolbar;
|
|
6005
6037
|
_toolbar = _toolbar.filter(v => v !== 'group'); // 子查询不需要分组
|
|
6038
|
+
let zIndex = store.popupContainer.current ? getMaxZIndexInParents(store.popupContainer.current) : 0;
|
|
6006
6039
|
let o = Modal2.openModal({
|
|
6007
6040
|
title: __('SqlQueryBuilder.subquery'),
|
|
6008
6041
|
transparentMask: true,
|
|
6009
|
-
zIndex:
|
|
6042
|
+
zIndex: Number(zIndex),
|
|
6010
6043
|
content: jsx(Fragment, {
|
|
6011
6044
|
children: jsx(SqlVisionBuilder, {
|
|
6012
6045
|
...other,
|
|
@@ -6549,8 +6582,13 @@ const CaseEditor = props => {
|
|
|
6549
6582
|
isGroup: true,
|
|
6550
6583
|
// @ts-ignore
|
|
6551
6584
|
onGroup: data => {
|
|
6585
|
+
let _data = cloneDeep(data);
|
|
6586
|
+
if (_data.alias != SummarizeAlias$1) {
|
|
6587
|
+
_data.fieldAlias = _data.name;
|
|
6588
|
+
_data.fieldUuid = uuidv4('field');
|
|
6589
|
+
}
|
|
6552
6590
|
const _caseList = caseList.slice();
|
|
6553
|
-
_caseList[i].expression =
|
|
6591
|
+
_caseList[i].expression = _data;
|
|
6554
6592
|
setCaseList(_caseList);
|
|
6555
6593
|
closePopup();
|
|
6556
6594
|
}
|
|
@@ -6574,8 +6612,13 @@ const CaseEditor = props => {
|
|
|
6574
6612
|
data: data,
|
|
6575
6613
|
value: val,
|
|
6576
6614
|
onChange: data => {
|
|
6615
|
+
let _data = cloneDeep(data);
|
|
6616
|
+
if (_data.alias != SummarizeAlias$1) {
|
|
6617
|
+
_data.fieldAlias = _data.name;
|
|
6618
|
+
_data.fieldUuid = uuidv4('field');
|
|
6619
|
+
}
|
|
6577
6620
|
const _caseList = caseList.slice();
|
|
6578
|
-
_caseList[i].expression =
|
|
6621
|
+
_caseList[i].expression = _data;
|
|
6579
6622
|
setCaseList(_caseList);
|
|
6580
6623
|
closePopup();
|
|
6581
6624
|
}
|
|
@@ -7046,10 +7089,11 @@ const CustomColumn = props => {
|
|
|
7046
7089
|
const showSubQuery = (e, i) => {
|
|
7047
7090
|
let newMeta = store.metaList[groupIndex].list.slice();
|
|
7048
7091
|
const _value = newMeta[index].customColumn[i] || [];
|
|
7092
|
+
let zIndex = store.popupContainer.current ? getMaxZIndexInParents(store.popupContainer.current) : 0;
|
|
7049
7093
|
let o = Modal2.openModal({
|
|
7050
7094
|
title: __('SqlQueryBuilder.customExpression'),
|
|
7051
7095
|
transparentMask: true,
|
|
7052
|
-
zIndex:
|
|
7096
|
+
zIndex: Number(zIndex),
|
|
7053
7097
|
content: jsx(Fragment, {
|
|
7054
7098
|
children: jsx(Provider, {
|
|
7055
7099
|
value: store,
|
|
@@ -7421,10 +7465,11 @@ const Filter = props => {
|
|
|
7421
7465
|
let oldList = position ? [] : cloneDeep(newMeta[index].filter[i]?.subquery || []);
|
|
7422
7466
|
let _toolbar = subToolbar || toolbar;
|
|
7423
7467
|
_toolbar = _toolbar.filter(v => v !== 'group'); // 子查询不需要分组
|
|
7468
|
+
let zIndex = store.popupContainer.current ? getMaxZIndexInParents(store.popupContainer.current) : null;
|
|
7424
7469
|
let o = Modal2.openModal({
|
|
7425
7470
|
title: 'NOT EXISTS',
|
|
7426
7471
|
transparentMask: true,
|
|
7427
|
-
zIndex:
|
|
7472
|
+
zIndex: Number(zIndex),
|
|
7428
7473
|
content: jsx(Fragment, {
|
|
7429
7474
|
children: jsx(SqlVisionBuilder, {
|
|
7430
7475
|
...other,
|
|
@@ -7760,7 +7805,7 @@ const GroupBy = props => {
|
|
|
7760
7805
|
newMeta[index].by.splice(i, 1, data);
|
|
7761
7806
|
// @ts-ignore
|
|
7762
7807
|
newMeta[index].by = newMeta[index].by.map(v => {
|
|
7763
|
-
const fieldAlias =
|
|
7808
|
+
const fieldAlias = `${v.alias}__${v.name}`;
|
|
7764
7809
|
return {
|
|
7765
7810
|
...v,
|
|
7766
7811
|
sql: `${v.alias}.${v.realName || v.name} AS ${fieldAlias}`,
|
|
@@ -7812,7 +7857,7 @@ const GroupBy = props => {
|
|
|
7812
7857
|
newMeta[index].by.push(data);
|
|
7813
7858
|
// @ts-ignore
|
|
7814
7859
|
newMeta[index].by = newMeta[index].by.map(v => {
|
|
7815
|
-
const fieldAlias =
|
|
7860
|
+
const fieldAlias = `${v.alias}__${v.name}`;
|
|
7816
7861
|
return {
|
|
7817
7862
|
...v,
|
|
7818
7863
|
sql: `${v.alias}.${v.realName || v.name} AS ${fieldAlias}`,
|
|
@@ -8627,7 +8672,8 @@ const Metabase = props => {
|
|
|
8627
8672
|
} = props;
|
|
8628
8673
|
const store = useStore$1();
|
|
8629
8674
|
const [saveLoading, setSaveLoading] = useState(false);
|
|
8630
|
-
const popupContainer = useRef();
|
|
8675
|
+
// const popupContainer = useRef();
|
|
8676
|
+
// store.setPopupContainer(popupContainer);
|
|
8631
8677
|
const popupContent = useMemo(() => {
|
|
8632
8678
|
let {
|
|
8633
8679
|
visible,
|
|
@@ -8658,11 +8704,11 @@ const Metabase = props => {
|
|
|
8658
8704
|
await onOk?.(_metaList);
|
|
8659
8705
|
setSaveLoading(false);
|
|
8660
8706
|
};
|
|
8661
|
-
let zIndex = popupContainer.current ? getMaxZIndexInParents(popupContainer.current) : null;
|
|
8707
|
+
let zIndex = store.popupContainer.current ? getMaxZIndexInParents(store.popupContainer.current) : null;
|
|
8662
8708
|
return (
|
|
8663
8709
|
// @ts-ignore
|
|
8664
8710
|
jsx(VisualBox, {
|
|
8665
|
-
ref: popupContainer,
|
|
8711
|
+
ref: store.popupContainer,
|
|
8666
8712
|
children: jsxs("div", {
|
|
8667
8713
|
className: 'Sqb',
|
|
8668
8714
|
children: [store.metaList.map((v, index) => {
|
|
@@ -8699,8 +8745,8 @@ const Metabase = props => {
|
|
|
8699
8745
|
disabled: saveLoading,
|
|
8700
8746
|
onClick: onSave,
|
|
8701
8747
|
children: btnText || __('SqlQueryBuilder.visualize')
|
|
8702
|
-
}) : null, popupContainer.current && jsx(Popup, {
|
|
8703
|
-
container: popupContainer.current,
|
|
8748
|
+
}) : null, store.popupContainer.current && jsx(Popup, {
|
|
8749
|
+
container: store.popupContainer.current,
|
|
8704
8750
|
visible: store.popupData.visible,
|
|
8705
8751
|
node: store.popupData.node,
|
|
8706
8752
|
closable: store.popupClosable,
|
|
@@ -8711,8 +8757,8 @@ const Metabase = props => {
|
|
|
8711
8757
|
});
|
|
8712
8758
|
},
|
|
8713
8759
|
children: popupContent
|
|
8714
|
-
}), popupContainer.current && jsx(Popup, {
|
|
8715
|
-
container: popupContainer.current,
|
|
8760
|
+
}), store.popupContainer.current && jsx(Popup, {
|
|
8761
|
+
container: store.popupContainer.current,
|
|
8716
8762
|
visible: store.popupData2.visible,
|
|
8717
8763
|
node: store.popupData2.node,
|
|
8718
8764
|
closable: store.popupClosable2,
|