@gingkoo/pandora-metabase 0.0.23 → 0.0.25
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/index.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @gingkoo/pandora-metabase v0.0.
|
|
2
|
+
* @gingkoo/pandora-metabase v0.0.25
|
|
3
3
|
*/
|
|
4
4
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import React__default, { useContext, createContext, useState, useRef, useMemo, forwardRef, useImperativeHandle, useEffect } from 'react';
|
|
7
7
|
import cx from 'classnames';
|
|
8
|
-
import {
|
|
9
|
-
import { DatePicker,
|
|
8
|
+
import { Button, Tooltip, Input, Modal2, Toast } from '@gingkoo/pandora';
|
|
9
|
+
import { DatePicker, Dropdown, Tooltip as Tooltip$1, InputNumber, Button as Button$1 } from 'antd';
|
|
10
10
|
import { DownOutlined, LoadingOutlined } from '@ant-design/icons';
|
|
11
11
|
import Styled from 'styled-components';
|
|
12
12
|
import _$2 from 'underscore';
|
|
13
13
|
import ReactDOM from 'react-dom';
|
|
14
14
|
import ReactDOMServer from 'react-dom/server';
|
|
15
15
|
import cloneDeep from 'lodash/cloneDeep';
|
|
16
|
+
import { Repeat, RelatedWork, FfPlus, FfLine } from '@gingkoo/pandora-icons';
|
|
16
17
|
import moment from 'dayjs';
|
|
17
|
-
import { RelatedWork, Repeat, FfPlus, FfLine } from '@gingkoo/pandora-icons';
|
|
18
18
|
import isEqual from 'lodash/isEqual';
|
|
19
19
|
|
|
20
20
|
// 创建 Context
|
|
@@ -171,6 +171,7 @@ const getSubColumns = metaList => {
|
|
|
171
171
|
if (ExistAboveGroupBy) {
|
|
172
172
|
let _data = {
|
|
173
173
|
table: prevGroupBy.alias,
|
|
174
|
+
tableId: prevGroupBy.alias,
|
|
174
175
|
alias: prevGroupBy.alias,
|
|
175
176
|
columns: []
|
|
176
177
|
};
|
|
@@ -251,6 +252,7 @@ const useStore = () => {
|
|
|
251
252
|
type: TypeEnum.data,
|
|
252
253
|
table: {
|
|
253
254
|
name: '',
|
|
255
|
+
id: '',
|
|
254
256
|
alias: '',
|
|
255
257
|
datasourceId: '',
|
|
256
258
|
datasourceName: ''
|
|
@@ -272,7 +274,13 @@ const useStore = () => {
|
|
|
272
274
|
node: null,
|
|
273
275
|
content: null
|
|
274
276
|
}); //弹窗
|
|
277
|
+
const [popupData2, setPopup2] = useState({
|
|
278
|
+
visible: false,
|
|
279
|
+
node: null,
|
|
280
|
+
content: null
|
|
281
|
+
}); //弹窗
|
|
275
282
|
const [popupClosable, setClosable] = useState(defaultMetaList); //是否可关闭 如果弹框里面再弹框 则不可关闭
|
|
283
|
+
const [popupClosable2, setClosable2] = useState(defaultMetaList); //是否可关闭 如果弹框里面再弹框 则不可关闭
|
|
276
284
|
// const [fetchDatasetFn, setFetchDatasetFn] = useState<(id: string) => Promise<any>>(
|
|
277
285
|
// async () => {},
|
|
278
286
|
// ); //fn
|
|
@@ -385,6 +393,7 @@ const useStore = () => {
|
|
|
385
393
|
metaKey += 1;
|
|
386
394
|
if (type === TypeEnum.joinData) {
|
|
387
395
|
let table1 = {
|
|
396
|
+
id: '',
|
|
388
397
|
name: '',
|
|
389
398
|
alias: '',
|
|
390
399
|
datasourceId: '',
|
|
@@ -410,6 +419,7 @@ const useStore = () => {
|
|
|
410
419
|
table1,
|
|
411
420
|
table2: {
|
|
412
421
|
name: '',
|
|
422
|
+
id: '',
|
|
413
423
|
alias: '',
|
|
414
424
|
datasourceId: '',
|
|
415
425
|
datasourceName: '',
|
|
@@ -463,6 +473,7 @@ const useStore = () => {
|
|
|
463
473
|
type: TypeEnum.permissionTable,
|
|
464
474
|
table: {
|
|
465
475
|
name: '',
|
|
476
|
+
id: '',
|
|
466
477
|
alias: '',
|
|
467
478
|
datasourceId: '',
|
|
468
479
|
datasourceName: ''
|
|
@@ -540,8 +551,12 @@ const useStore = () => {
|
|
|
540
551
|
setMeta,
|
|
541
552
|
popupData,
|
|
542
553
|
setPopup,
|
|
554
|
+
popupData2,
|
|
555
|
+
setPopup2,
|
|
543
556
|
popupClosable,
|
|
544
557
|
setClosable,
|
|
558
|
+
popupClosable2,
|
|
559
|
+
setClosable2,
|
|
545
560
|
fetchDatasetFn: fetchDatasetFn.current,
|
|
546
561
|
setFetchDatasetFn,
|
|
547
562
|
fetchColumnsFn: fetchColumnsFn.current,
|
|
@@ -3869,6 +3884,7 @@ const SelectJoinColumn = ({
|
|
|
3869
3884
|
let {
|
|
3870
3885
|
alias: tableAlias,
|
|
3871
3886
|
table,
|
|
3887
|
+
tableId,
|
|
3872
3888
|
columns,
|
|
3873
3889
|
open,
|
|
3874
3890
|
searchText,
|
|
@@ -3966,6 +3982,7 @@ const SelectJoinColumn = ({
|
|
|
3966
3982
|
return onGroup({
|
|
3967
3983
|
...v,
|
|
3968
3984
|
table,
|
|
3985
|
+
tableId,
|
|
3969
3986
|
alias: tableAlias,
|
|
3970
3987
|
name,
|
|
3971
3988
|
database_type,
|
|
@@ -3977,6 +3994,7 @@ const SelectJoinColumn = ({
|
|
|
3977
3994
|
typeof onSelect === 'function' && onSelect({
|
|
3978
3995
|
...v,
|
|
3979
3996
|
table,
|
|
3997
|
+
tableId,
|
|
3980
3998
|
alias: tableAlias,
|
|
3981
3999
|
name,
|
|
3982
4000
|
database_type,
|
|
@@ -4008,7 +4026,7 @@ const SelectJoinColumn = ({
|
|
|
4008
4026
|
});
|
|
4009
4027
|
};
|
|
4010
4028
|
|
|
4011
|
-
var css_248z$4 = ".filter-page {\n min-width: 300px;\n}\n.filter-page .header {\n margin-bottom: 0.5rem;\n padding: 0.5rem;\n display: flex;\n align-items: center;\n color: #949aab;\n border-bottom: 1px solid #f0f0f0;\n}\n.filter-page .header .left-info {\n padding: 0.5rem 0.5rem 0.5rem 0;\n display: flex;\n align-items: center;\n}\n.filter-page .header .left-info span {\n font-weight: 900;\n font-size: 16px;\n color: #4c5773;\n display: flex;\n align-items: center;\n cursor: pointer;\n font-family: 'Lato', sans-serif;\n}\n.filter-page .header .left-info span svg {\n margin-right: 0.5rem;\n}\n.filter-page .header .left-info span:hover {\n color: #509ee3;\n}\n.filter-page .header .right-info {\n margin-left: auto;\n display: flex;\n align-items: center;\n}\n.filter-page .content {\n padding: 0.5rem;\n}\n.filter-page .content .w_300 {\n width: 300px;\n}\n.filter-page .content .input {\n border: 1px solid #f0f0f0;\n font-size: 16px;\n color: #4c5773;\n border-radius: 4px;\n transition: border 0.3s linear;\n padding: 9px 20px;\n
|
|
4029
|
+
var css_248z$4 = ".filter-page {\n min-width: 300px;\n}\n.filter-page .header {\n margin-bottom: 0.5rem;\n padding: 0.5rem;\n display: flex;\n align-items: center;\n color: #949aab;\n border-bottom: 1px solid #f0f0f0;\n}\n.filter-page .header .left-info {\n padding: 0.5rem 0.5rem 0.5rem 0;\n display: flex;\n align-items: center;\n}\n.filter-page .header .left-info span {\n font-weight: 900;\n font-size: 16px;\n color: #4c5773;\n display: flex;\n align-items: center;\n cursor: pointer;\n font-family: 'Lato', sans-serif;\n}\n.filter-page .header .left-info span svg {\n margin-right: 0.5rem;\n}\n.filter-page .header .left-info span:hover {\n color: #509ee3;\n}\n.filter-page .header .right-info {\n margin-left: auto;\n display: flex;\n align-items: center;\n}\n.filter-page .content {\n padding: 0.5rem;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.filter-page .content_l {\n flex: 1;\n}\n.filter-page .content .operator-icon {\n font-size: 18px !important;\n}\n.filter-page .content .Sqb-TableName {\n border: 2px solid transparent;\n border-radius: 6px;\n color: white;\n background-color: #509ee3;\n transition: background 300ms linear 0s;\n box-sizing: border-box;\n padding: 8px;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n cursor: pointer;\n}\n.filter-page .content .Sqb-TableName-input {\n margin-bottom: 9px;\n margin-right: 8px;\n padding: 9px;\n}\n.filter-page .content .Sqb-TableName::selection {\n color: #ffffff;\n background-color: #d489ac;\n text-shadow: none;\n}\n.filter-page .content .Sqb-TableName:hover {\n background-color: rgba(80, 158, 227, 0.8);\n}\n.filter-page .content .Sqb-TableName.noClick {\n cursor: default;\n}\n.filter-page .content .Sqb-TableName.noClick:hover {\n background-color: #509ee3;\n}\n.filter-page .content .Sqb-TableName.notSelected {\n border: 2px solid rgba(80, 158, 227, 0.25);\n color: #509ee3;\n background-color: transparent;\n}\n.filter-page .content .Sqb-TableName.notSelected:hover {\n border-color: rgba(80, 158, 227, 0.8);\n}\n.filter-page .content .Sqb-TableName.purple-name {\n color: white;\n background-color: #7172ad;\n}\n.filter-page .content .Sqb-TableName.purple-name:hover {\n background-color: rgba(113, 114, 173, 0.8);\n}\n.filter-page .content .Sqb-TableName.purple-name svg.closeIcon {\n opacity: 0.6;\n margin-left: 8px;\n}\n.filter-page .content .Sqb-TableName.purple-name.notSelected {\n border: 2px solid rgba(113, 114, 173, 0.25);\n color: #7172ad;\n background-color: transparent;\n}\n.filter-page .content .Sqb-TableName.purple-name.notSelected:hover {\n border-color: rgba(113, 114, 173, 0.8);\n}\n.filter-page .content .Sqb-TableName.gray-name {\n color: white;\n background-color: #93a1ab;\n}\n.filter-page .content .Sqb-TableName.gray-name:hover {\n background-color: rgba(147, 161, 171, 0.8);\n}\n.filter-page .content .Sqb-TableName.gray-name svg.sort-arrow {\n margin-right: 0.5rem;\n}\n.filter-page .content .Sqb-TableName.gray-name svg.closeIcon {\n opacity: 0.6;\n margin-left: 8px;\n}\n.filter-page .content .Sqb-TableName.green-name {\n color: white;\n background-color: #88bf4d;\n}\n.filter-page .content .Sqb-TableName.green-name:hover {\n background-color: rgba(136, 191, 77, 0.8);\n}\n.filter-page .content .Sqb-TableName.green-name svg.closeIcon {\n opacity: 0.6;\n margin-left: 8px;\n}\n.filter-page .content .Sqb-TableName.green-name.notSelected {\n border: 2px solid rgba(136, 191, 77, 0.25);\n color: #88bf4d;\n background-color: transparent;\n}\n.filter-page .content .Sqb-TableName.green-name.notSelected:hover {\n border-color: rgba(136, 191, 77, 0.8);\n}\n.filter-page .content .w_300 {\n width: 300px;\n}\n.filter-page .content .input {\n border: 1px solid #f0f0f0;\n font-size: 16px;\n color: #4c5773;\n border-radius: 4px;\n transition: border 0.3s linear;\n padding: 9px 20px;\n height: 40px;\n outline: none;\n}\n.filter-page .content .input::placeholder {\n color: #ccc;\n}\n.filter-page .content .input + .input {\n margin-top: 10px;\n}\n.filter-page .content .input.inline {\n display: inline-block;\n flex: 1;\n margin-right: 15px;\n padding: 5px 20px;\n}\n.filter-page .footer {\n padding: 0 0.5rem 0.5rem;\n display: flex;\n align-items: center;\n}\n.filter-page .footer .button--purple {\n margin-left: auto;\n flex-shrink: 0;\n color: white;\n background-color: #7172ad;\n border: 1px solid #7172ad;\n padding: 6px 14px;\n font-size: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n cursor: pointer;\n}\n.filter-page .footer .button--purple.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.filter-page .footer .button--purple:hover {\n color: white;\n background-color: rgba(113, 114, 173, 0.88);\n border-color: rgba(113, 114, 173, 0.88);\n}\n.operator-btn {\n height: 38px !important;\n padding: 8px !important;\n text-align: left !important;\n display: flex !important;\n align-items: center !important;\n}\n.operator-btn > .anticon {\n margin-left: auto !important;\n}\n";
|
|
4012
4030
|
styleInject(css_248z$4);
|
|
4013
4031
|
|
|
4014
4032
|
const {
|
|
@@ -4029,9 +4047,15 @@ const SelectFilterColumn = ({
|
|
|
4029
4047
|
}) => {
|
|
4030
4048
|
const [curColumn, setCurColumn] = useState(value);
|
|
4031
4049
|
const [condition, setCondition] = useState(value.condition);
|
|
4050
|
+
const [isField, setIsField] = useState(value.isField || false);
|
|
4032
4051
|
const [curVal, setVal] = useState(value.val);
|
|
4052
|
+
const store = useStore$1();
|
|
4053
|
+
let table2Selected = Boolean(curColumn.table2?.name);
|
|
4033
4054
|
const disabled = useMemo(() => {
|
|
4034
4055
|
if (!condition) return true;
|
|
4056
|
+
if (curColumn.table2?.id && ~['是', '不是'].indexOf(condition)) {
|
|
4057
|
+
return false;
|
|
4058
|
+
}
|
|
4035
4059
|
if (~['为空', '不为空', '是空的', '不是空的'].indexOf(condition)) {
|
|
4036
4060
|
return false;
|
|
4037
4061
|
} else if (~['前', '下一个', '介于之间'].indexOf(condition)) {
|
|
@@ -4042,11 +4066,11 @@ const SelectFilterColumn = ({
|
|
|
4042
4066
|
return false;
|
|
4043
4067
|
}
|
|
4044
4068
|
return true;
|
|
4045
|
-
}, [curVal, condition]);
|
|
4069
|
+
}, [curVal, condition, curColumn]);
|
|
4046
4070
|
useEffect(() => {
|
|
4047
4071
|
didUpdate?.();
|
|
4048
4072
|
}, [condition]);
|
|
4049
|
-
function generateQuotes(val) {
|
|
4073
|
+
function generateQuotes(val, curColumn) {
|
|
4050
4074
|
let [firstVal = '', secondVal = ''] = val;
|
|
4051
4075
|
let quotes = '';
|
|
4052
4076
|
if (condition === '以...开始') {
|
|
@@ -4132,17 +4156,27 @@ const SelectFilterColumn = ({
|
|
|
4132
4156
|
晚于: 'filter.laterThan',
|
|
4133
4157
|
是空的: 'filter.isEmpty'
|
|
4134
4158
|
}[condition]);
|
|
4135
|
-
|
|
4159
|
+
if (curColumn.table2?.id) {
|
|
4160
|
+
const {
|
|
4161
|
+
datasourceName,
|
|
4162
|
+
name
|
|
4163
|
+
} = curColumn.table2;
|
|
4164
|
+
quotes = curColumn.name + ' ' + cond + ' ' + datasourceName + '.' + name;
|
|
4165
|
+
} else {
|
|
4166
|
+
quotes = curColumn.name + ' ' + cond + ' ' + firstVal;
|
|
4167
|
+
}
|
|
4136
4168
|
}
|
|
4137
4169
|
return quotes;
|
|
4138
4170
|
}
|
|
4139
4171
|
function addFilter() {
|
|
4140
4172
|
if (disabled) return void 0;
|
|
4141
|
-
let quotes = generateQuotes(curVal);
|
|
4173
|
+
let quotes = generateQuotes(curVal, curColumn);
|
|
4142
4174
|
typeof onChange === 'function' && onChange({
|
|
4143
4175
|
...curColumn,
|
|
4144
4176
|
val: curVal,
|
|
4145
4177
|
// 选择结果 如果有两个 长度就为2
|
|
4178
|
+
isField: isField,
|
|
4179
|
+
//是否是选择字段
|
|
4146
4180
|
condition,
|
|
4147
4181
|
// 选择条件
|
|
4148
4182
|
quotes,
|
|
@@ -4154,11 +4188,17 @@ const SelectFilterColumn = ({
|
|
|
4154
4188
|
setCurColumn({
|
|
4155
4189
|
table: '',
|
|
4156
4190
|
// 表名
|
|
4191
|
+
tableId: '',
|
|
4192
|
+
// 表名
|
|
4157
4193
|
alias: '',
|
|
4158
4194
|
// 表的别名
|
|
4159
4195
|
name: '',
|
|
4160
4196
|
// 字段名
|
|
4197
|
+
id: '',
|
|
4198
|
+
// 字段名
|
|
4161
4199
|
sql: '',
|
|
4200
|
+
datasourceId: '',
|
|
4201
|
+
datasourceName: '',
|
|
4162
4202
|
database_type: '' // 字段类型
|
|
4163
4203
|
});
|
|
4164
4204
|
setCondition('');
|
|
@@ -4237,20 +4277,26 @@ const SelectFilterColumn = ({
|
|
|
4237
4277
|
return jsx("div", {
|
|
4238
4278
|
children: jsx(Dropdown, {
|
|
4239
4279
|
trigger: ['click'],
|
|
4240
|
-
|
|
4280
|
+
menu: {
|
|
4281
|
+
items: [{
|
|
4282
|
+
key: '天',
|
|
4283
|
+
label: __('filter.day')
|
|
4284
|
+
}, {
|
|
4285
|
+
key: '周',
|
|
4286
|
+
label: __('filter.week')
|
|
4287
|
+
}, {
|
|
4288
|
+
key: '月',
|
|
4289
|
+
label: __('filter.month')
|
|
4290
|
+
}, {
|
|
4291
|
+
key: '年',
|
|
4292
|
+
label: __('filter.year')
|
|
4293
|
+
}],
|
|
4241
4294
|
onClick: ({
|
|
4242
4295
|
key
|
|
4243
|
-
}) =>
|
|
4244
|
-
|
|
4245
|
-
|
|
4246
|
-
|
|
4247
|
-
children: __('filter.week')
|
|
4248
|
-
}, '\u5468'), jsx(Menu.Item, {
|
|
4249
|
-
children: __('filter.month')
|
|
4250
|
-
}, '\u6708'), jsx(Menu.Item, {
|
|
4251
|
-
children: __('filter.year')
|
|
4252
|
-
}, '\u5E74')]
|
|
4253
|
-
}),
|
|
4296
|
+
}) => {
|
|
4297
|
+
setVal([key]);
|
|
4298
|
+
}
|
|
4299
|
+
},
|
|
4254
4300
|
children: jsxs(Button, {
|
|
4255
4301
|
className: 'operator-btn',
|
|
4256
4302
|
style: {
|
|
@@ -4274,28 +4320,34 @@ const SelectFilterColumn = ({
|
|
|
4274
4320
|
}
|
|
4275
4321
|
}), jsx(Dropdown, {
|
|
4276
4322
|
trigger: ['click'],
|
|
4277
|
-
|
|
4323
|
+
menu: {
|
|
4324
|
+
items: [{
|
|
4325
|
+
key: '分',
|
|
4326
|
+
label: __('filter.minute')
|
|
4327
|
+
}, {
|
|
4328
|
+
key: '时',
|
|
4329
|
+
label: __('filter.hour')
|
|
4330
|
+
}, {
|
|
4331
|
+
key: '天',
|
|
4332
|
+
label: __('filter.day')
|
|
4333
|
+
}, {
|
|
4334
|
+
key: '周',
|
|
4335
|
+
label: __('filter.week')
|
|
4336
|
+
}, {
|
|
4337
|
+
key: '月',
|
|
4338
|
+
label: __('filter.month')
|
|
4339
|
+
}, {
|
|
4340
|
+
key: '年',
|
|
4341
|
+
label: __('filter.year')
|
|
4342
|
+
}],
|
|
4278
4343
|
onClick: ({
|
|
4279
4344
|
key
|
|
4280
4345
|
}) => {
|
|
4281
4346
|
let newVal = curVal.slice();
|
|
4282
4347
|
newVal[1] = key;
|
|
4283
4348
|
setVal(newVal);
|
|
4284
|
-
}
|
|
4285
|
-
|
|
4286
|
-
children: __('filter.minute')
|
|
4287
|
-
}, '\u5206'), jsx(Menu.Item, {
|
|
4288
|
-
children: __('filter.hour')
|
|
4289
|
-
}, '\u65F6'), jsx(Menu.Item, {
|
|
4290
|
-
children: __('filter.day')
|
|
4291
|
-
}, '\u5929'), jsx(Menu.Item, {
|
|
4292
|
-
children: __('filter.week')
|
|
4293
|
-
}, '\u5468'), jsx(Menu.Item, {
|
|
4294
|
-
children: __('filter.month')
|
|
4295
|
-
}, '\u6708'), jsx(Menu.Item, {
|
|
4296
|
-
children: __('filter.year')
|
|
4297
|
-
}, '\u5E74')]
|
|
4298
|
-
}),
|
|
4349
|
+
}
|
|
4350
|
+
},
|
|
4299
4351
|
children: jsxs(Button, {
|
|
4300
4352
|
className: 'operator-btn',
|
|
4301
4353
|
style: {
|
|
@@ -4339,42 +4391,67 @@ const SelectFilterColumn = ({
|
|
|
4339
4391
|
}
|
|
4340
4392
|
return null;
|
|
4341
4393
|
}
|
|
4394
|
+
const onRepeat = () => {
|
|
4395
|
+
setIsField(!isField);
|
|
4396
|
+
setVal([]);
|
|
4397
|
+
setCurColumn({
|
|
4398
|
+
...curColumn,
|
|
4399
|
+
table2: null
|
|
4400
|
+
});
|
|
4401
|
+
};
|
|
4342
4402
|
const nextPage = !!curColumn.name;
|
|
4403
|
+
const selectTable = e => {
|
|
4404
|
+
store.setClosable(false);
|
|
4405
|
+
store.setPopup2({
|
|
4406
|
+
visible: true,
|
|
4407
|
+
node: e.currentTarget,
|
|
4408
|
+
content: jsx(SelectJoinColumn, {
|
|
4409
|
+
data: [..._data],
|
|
4410
|
+
value: value,
|
|
4411
|
+
theme: ColumnsPopupThemeEnum.purple,
|
|
4412
|
+
didUpdate: didUpdate,
|
|
4413
|
+
onSelect: record => {
|
|
4414
|
+
setCurColumn({
|
|
4415
|
+
...curColumn,
|
|
4416
|
+
table2: record
|
|
4417
|
+
});
|
|
4418
|
+
store.setPopup2({
|
|
4419
|
+
visible: false
|
|
4420
|
+
});
|
|
4421
|
+
store.setClosable(true);
|
|
4422
|
+
}
|
|
4423
|
+
})
|
|
4424
|
+
});
|
|
4425
|
+
};
|
|
4343
4426
|
if (nextPage) {
|
|
4344
4427
|
let {
|
|
4345
4428
|
type,
|
|
4346
4429
|
conditions
|
|
4347
4430
|
} = getData(curColumn);
|
|
4348
|
-
const menu =
|
|
4349
|
-
|
|
4350
|
-
key
|
|
4351
|
-
|
|
4352
|
-
|
|
4353
|
-
|
|
4354
|
-
|
|
4355
|
-
|
|
4356
|
-
|
|
4357
|
-
|
|
4358
|
-
|
|
4359
|
-
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
|
|
4369
|
-
|
|
4370
|
-
|
|
4371
|
-
|
|
4372
|
-
早于: 'filter.earlierThan',
|
|
4373
|
-
晚于: 'filter.laterThan',
|
|
4374
|
-
是空的: 'filter.isEmpty'
|
|
4375
|
-
}[v])
|
|
4376
|
-
}, v);
|
|
4377
|
-
})
|
|
4431
|
+
const menu = conditions.map(v => {
|
|
4432
|
+
return {
|
|
4433
|
+
key: v,
|
|
4434
|
+
label: __({
|
|
4435
|
+
等于: 'filter.equal',
|
|
4436
|
+
不等于: 'filter.notEqual',
|
|
4437
|
+
大于: 'filter.greaterThan',
|
|
4438
|
+
小于: 'filter.lessThan',
|
|
4439
|
+
介于之间: 'filter.inBetween',
|
|
4440
|
+
大于或等于: 'filter.greaterThanOrEqualTo',
|
|
4441
|
+
小于或等于: 'filter.lessThanOrEqualTo',
|
|
4442
|
+
为空: 'filter.empty',
|
|
4443
|
+
不为空: 'filter.notEmpty',
|
|
4444
|
+
是: 'filter.is',
|
|
4445
|
+
不是: 'filter.isNo',
|
|
4446
|
+
包含: 'filter.contain',
|
|
4447
|
+
不包含: 'filter.notInclude',
|
|
4448
|
+
'以...开始': 'filter.startWith',
|
|
4449
|
+
'以...结束': 'filter.endWith',
|
|
4450
|
+
早于: 'filter.earlierThan',
|
|
4451
|
+
晚于: 'filter.laterThan',
|
|
4452
|
+
是空的: 'filter.isEmpty'
|
|
4453
|
+
}[v])
|
|
4454
|
+
};
|
|
4378
4455
|
});
|
|
4379
4456
|
return jsxs("div", {
|
|
4380
4457
|
className: 'filter-page',
|
|
@@ -4389,7 +4466,22 @@ const SelectFilterColumn = ({
|
|
|
4389
4466
|
}), jsx("div", {
|
|
4390
4467
|
className: 'right-info',
|
|
4391
4468
|
children: jsx(Dropdown, {
|
|
4392
|
-
|
|
4469
|
+
menu: {
|
|
4470
|
+
items: menu,
|
|
4471
|
+
onClick: ({
|
|
4472
|
+
key
|
|
4473
|
+
}) => {
|
|
4474
|
+
setIsField(false);
|
|
4475
|
+
setCurColumn({
|
|
4476
|
+
...curColumn,
|
|
4477
|
+
table2: null
|
|
4478
|
+
});
|
|
4479
|
+
setDefaultVal(key);
|
|
4480
|
+
}
|
|
4481
|
+
},
|
|
4482
|
+
// dropdownRender={() => {
|
|
4483
|
+
// return menu;
|
|
4484
|
+
// }}
|
|
4393
4485
|
trigger: ['click'],
|
|
4394
4486
|
children: jsxs(Button, {
|
|
4395
4487
|
className: 'operator-btn',
|
|
@@ -4419,9 +4511,27 @@ const SelectFilterColumn = ({
|
|
|
4419
4511
|
})
|
|
4420
4512
|
})
|
|
4421
4513
|
})]
|
|
4422
|
-
}),
|
|
4514
|
+
}), jsxs("div", {
|
|
4423
4515
|
className: 'content',
|
|
4424
|
-
children:
|
|
4516
|
+
children: [isField ? jsx("div", {
|
|
4517
|
+
className: cx(`Sqb-TableName`, {
|
|
4518
|
+
notSelected: !table2Selected
|
|
4519
|
+
}),
|
|
4520
|
+
onClick: selectTable,
|
|
4521
|
+
children: table2Selected ? `${curColumn.table2?.datasourceName}.${curColumn.table2?.name}` : __('SqlQueryBuilder.pickTable')
|
|
4522
|
+
}) : jsx("div", {
|
|
4523
|
+
className: 'content_l',
|
|
4524
|
+
children: renderFilter(type, condition)
|
|
4525
|
+
}), ~['是', '不是'].indexOf(condition) ? jsx(Tooltip, {
|
|
4526
|
+
title: __('SqlQueryBuilder.switch'),
|
|
4527
|
+
children: jsx(Button, {
|
|
4528
|
+
primary: true,
|
|
4529
|
+
ghost: true,
|
|
4530
|
+
className: 'ml-2 operator-icon',
|
|
4531
|
+
icon: jsx(Repeat, {}),
|
|
4532
|
+
onClick: onRepeat
|
|
4533
|
+
})
|
|
4534
|
+
}) : '']
|
|
4425
4535
|
}), jsx("div", {
|
|
4426
4536
|
className: 'footer',
|
|
4427
4537
|
children: jsx("div", {
|
|
@@ -4633,7 +4743,7 @@ const SelectSummarize = ({
|
|
|
4633
4743
|
})
|
|
4634
4744
|
}), jsx("div", {
|
|
4635
4745
|
onClick: e => e.stopPropagation(),
|
|
4636
|
-
children: jsx(Tooltip, {
|
|
4746
|
+
children: jsx(Tooltip$1, {
|
|
4637
4747
|
placement: 'rightTop',
|
|
4638
4748
|
title: __(localeMap[v.tip]),
|
|
4639
4749
|
children: jsx("span", {
|
|
@@ -4752,6 +4862,7 @@ const SelectTable = ({
|
|
|
4752
4862
|
datasourceId: '',
|
|
4753
4863
|
datasourceName: '',
|
|
4754
4864
|
name: '',
|
|
4865
|
+
id: '',
|
|
4755
4866
|
alias: ''
|
|
4756
4867
|
});
|
|
4757
4868
|
}
|
|
@@ -4780,6 +4891,7 @@ const SelectTable = ({
|
|
|
4780
4891
|
datasourceId: v.datasourceId,
|
|
4781
4892
|
datasourceName: v.datasourceName,
|
|
4782
4893
|
name: '',
|
|
4894
|
+
id: '',
|
|
4783
4895
|
alias: ''
|
|
4784
4896
|
});
|
|
4785
4897
|
getTables(v.datasourceId);
|
|
@@ -5258,7 +5370,7 @@ const NextDom = props => {
|
|
|
5258
5370
|
const Header = props => {
|
|
5259
5371
|
return jsxs("div", {
|
|
5260
5372
|
className: `Sqb-item--text ${props.className || ''}`,
|
|
5261
|
-
children: [props.title, props.onClose && jsx(Tooltip, {
|
|
5373
|
+
children: [props.title, props.onClose && jsx(Tooltip$1, {
|
|
5262
5374
|
placement: 'bottom',
|
|
5263
5375
|
title: __('data.del'),
|
|
5264
5376
|
children: jsx(CloseIcon2, {
|
|
@@ -5386,6 +5498,7 @@ const JoinData = props => {
|
|
|
5386
5498
|
function selectTable(e) {
|
|
5387
5499
|
let value = {
|
|
5388
5500
|
name: meta.table2.name,
|
|
5501
|
+
id: meta.table2.id,
|
|
5389
5502
|
alias: meta.table2.alias,
|
|
5390
5503
|
datasourceId: meta.table2.datasourceId,
|
|
5391
5504
|
datasourceName: meta.table2.datasourceName
|
|
@@ -5433,6 +5546,7 @@ const JoinData = props => {
|
|
|
5433
5546
|
name: tableName,
|
|
5434
5547
|
alias,
|
|
5435
5548
|
column: '',
|
|
5549
|
+
column_id: '',
|
|
5436
5550
|
datasourceId: data.datasourceId,
|
|
5437
5551
|
datasourceName: data.datasourceName
|
|
5438
5552
|
};
|
|
@@ -5476,9 +5590,13 @@ const JoinData = props => {
|
|
|
5476
5590
|
let data = [];
|
|
5477
5591
|
let value = {
|
|
5478
5592
|
name: meta[type].column,
|
|
5593
|
+
id: meta[type].column_id,
|
|
5479
5594
|
table: meta[type].name,
|
|
5595
|
+
tableId: meta[type].id,
|
|
5480
5596
|
alias: meta[type].alias,
|
|
5481
|
-
database_type: ''
|
|
5597
|
+
database_type: '',
|
|
5598
|
+
datasourceId: '',
|
|
5599
|
+
datasourceName: ''
|
|
5482
5600
|
};
|
|
5483
5601
|
let {
|
|
5484
5602
|
ExistAboveGroupBy,
|
|
@@ -5489,6 +5607,7 @@ const JoinData = props => {
|
|
|
5489
5607
|
if (ExistAboveGroupBy) {
|
|
5490
5608
|
let _data = {
|
|
5491
5609
|
table: prevGroupBy.alias,
|
|
5610
|
+
tableId: prevGroupBy.alias,
|
|
5492
5611
|
alias: prevGroupBy.alias,
|
|
5493
5612
|
datasourceId: '',
|
|
5494
5613
|
datasourceName: '',
|
|
@@ -5525,6 +5644,7 @@ const JoinData = props => {
|
|
|
5525
5644
|
return {
|
|
5526
5645
|
alias: v.table2.alias,
|
|
5527
5646
|
table: v.table2.name,
|
|
5647
|
+
tableId: v.table2.id,
|
|
5528
5648
|
datasourceId: v.table2.datasourceId,
|
|
5529
5649
|
datasourceName: v.table2.datasourceName,
|
|
5530
5650
|
columns: v.columns
|
|
@@ -5537,6 +5657,7 @@ const JoinData = props => {
|
|
|
5537
5657
|
mo.push({
|
|
5538
5658
|
alias: v.table.alias,
|
|
5539
5659
|
table: v.table.name,
|
|
5660
|
+
tableId: v.table.id,
|
|
5540
5661
|
columns: v.columns,
|
|
5541
5662
|
datasourceId: v.table.datasourceId,
|
|
5542
5663
|
datasourceName: v.table.datasourceName
|
|
@@ -5545,6 +5666,7 @@ const JoinData = props => {
|
|
|
5545
5666
|
mo.push({
|
|
5546
5667
|
alias: v.table2.alias,
|
|
5547
5668
|
table: v.table2.name,
|
|
5669
|
+
tableId: v.table2.id,
|
|
5548
5670
|
columns: v.columns,
|
|
5549
5671
|
datasourceId: v.table2.datasourceId,
|
|
5550
5672
|
datasourceName: v.table2.datasourceName
|
|
@@ -5557,6 +5679,7 @@ const JoinData = props => {
|
|
|
5557
5679
|
data = [{
|
|
5558
5680
|
alias: meta.table2.alias,
|
|
5559
5681
|
table: meta.table2.name,
|
|
5682
|
+
tableId: meta.table2.id,
|
|
5560
5683
|
datasourceId: meta.table2.datasourceId,
|
|
5561
5684
|
datasourceName: meta.table2.datasourceName,
|
|
5562
5685
|
columns: meta.columns
|
|
@@ -5610,9 +5733,14 @@ const JoinData = props => {
|
|
|
5610
5733
|
let table_type = type === ExpressionsEnum.LEFT ? FlagLocation.TABLE_1 : FlagLocation.TABLE_2;
|
|
5611
5734
|
let value = {
|
|
5612
5735
|
name: meta.expressions[_ind][type],
|
|
5736
|
+
id: meta.expressions[_ind][`${type}_id`],
|
|
5613
5737
|
table: meta[table_type].name,
|
|
5738
|
+
tableId: meta[table_type].id,
|
|
5614
5739
|
alias: meta[table_type].alias,
|
|
5615
|
-
database_type: ''
|
|
5740
|
+
database_type: '',
|
|
5741
|
+
datasourceId: meta[table_type].datasourceId,
|
|
5742
|
+
// 数据源id
|
|
5743
|
+
datasourceName: meta[table_type].datasourceName // 数据源名
|
|
5616
5744
|
};
|
|
5617
5745
|
let data = [];
|
|
5618
5746
|
let {
|
|
@@ -5624,6 +5752,7 @@ const JoinData = props => {
|
|
|
5624
5752
|
if (ExistAboveGroupBy) {
|
|
5625
5753
|
let _data = {
|
|
5626
5754
|
table: prevGroupBy.alias,
|
|
5755
|
+
tableId: prevGroupBy.alias,
|
|
5627
5756
|
alias: prevGroupBy.alias,
|
|
5628
5757
|
datasourceId: '',
|
|
5629
5758
|
datasourceName: '',
|
|
@@ -5660,6 +5789,7 @@ const JoinData = props => {
|
|
|
5660
5789
|
return {
|
|
5661
5790
|
alias: v.table2.alias,
|
|
5662
5791
|
table: v.table2.name,
|
|
5792
|
+
tableId: v.table2.id,
|
|
5663
5793
|
datasourceId: v.table2.datasourceId,
|
|
5664
5794
|
datasourceName: v.table2.datasourceName,
|
|
5665
5795
|
columns: v.columns
|
|
@@ -5672,6 +5802,7 @@ const JoinData = props => {
|
|
|
5672
5802
|
mo.push({
|
|
5673
5803
|
alias: v.table.alias,
|
|
5674
5804
|
table: v.table.name,
|
|
5805
|
+
tableId: v.table.id,
|
|
5675
5806
|
columns: v.columns,
|
|
5676
5807
|
datasourceId: v.table.datasourceId,
|
|
5677
5808
|
datasourceName: v.table.datasourceName
|
|
@@ -5680,6 +5811,7 @@ const JoinData = props => {
|
|
|
5680
5811
|
mo.push({
|
|
5681
5812
|
alias: v.table2.alias,
|
|
5682
5813
|
table: v.table2.name,
|
|
5814
|
+
tableId: v.table2.id,
|
|
5683
5815
|
columns: v.columns,
|
|
5684
5816
|
datasourceId: v.table2.datasourceId,
|
|
5685
5817
|
datasourceName: v.table2.datasourceName
|
|
@@ -5697,6 +5829,7 @@ const JoinData = props => {
|
|
|
5697
5829
|
data = [{
|
|
5698
5830
|
alias: meta.table2.alias,
|
|
5699
5831
|
table: meta.table2.name,
|
|
5832
|
+
tableId: meta.table2.id,
|
|
5700
5833
|
datasourceId: meta.table2.datasourceId,
|
|
5701
5834
|
datasourceName: meta.table2.datasourceName,
|
|
5702
5835
|
columns: meta.columns
|
|
@@ -5800,8 +5933,11 @@ const JoinData = props => {
|
|
|
5800
5933
|
newMeta[index].isSubquery = !newMeta[index].isSubquery;
|
|
5801
5934
|
newMeta[index].table2 = {
|
|
5802
5935
|
column: '',
|
|
5936
|
+
column_id: '',
|
|
5803
5937
|
name: '',
|
|
5804
5938
|
// 表名
|
|
5939
|
+
id: '',
|
|
5940
|
+
// 表名
|
|
5805
5941
|
alias: '',
|
|
5806
5942
|
// 表别名
|
|
5807
5943
|
datasourceName: '',
|
|
@@ -5861,9 +5997,9 @@ const JoinData = props => {
|
|
|
5861
5997
|
}),
|
|
5862
5998
|
onClick: selectTable,
|
|
5863
5999
|
children: table2Selected ? `${meta.table2.datasourceName}.${meta.table2.name}` : __('SqlQueryBuilder.pickTable')
|
|
5864
|
-
}), store._showSubquery && jsx(Tooltip
|
|
6000
|
+
}), store._showSubquery && jsx(Tooltip, {
|
|
5865
6001
|
title: __('SqlQueryBuilder.switchSubQuery'),
|
|
5866
|
-
children: jsx(Button
|
|
6002
|
+
children: jsx(Button, {
|
|
5867
6003
|
disabled: meta.readonly,
|
|
5868
6004
|
primary: meta.isSubquery,
|
|
5869
6005
|
ghost: true,
|
|
@@ -5902,7 +6038,7 @@ const JoinData = props => {
|
|
|
5902
6038
|
children: [jsx("span", {
|
|
5903
6039
|
className: 'ml-2 mr-4 text-gray-500',
|
|
5904
6040
|
children: v.operator
|
|
5905
|
-
}), v.left_isString ? jsx(Input
|
|
6041
|
+
}), v.left_isString ? jsx(Input, {
|
|
5906
6042
|
disabled: meta.readonly,
|
|
5907
6043
|
className: ':Sqb-TableName-input',
|
|
5908
6044
|
value: v.left_string,
|
|
@@ -5922,9 +6058,9 @@ const JoinData = props => {
|
|
|
5922
6058
|
"v-index": i,
|
|
5923
6059
|
onClick: selectMoreJoinColumn,
|
|
5924
6060
|
children: v.left_column ? v.left_column : __('SqlQueryBuilder.pickTable')
|
|
5925
|
-
}), jsx(Tooltip
|
|
6061
|
+
}), jsx(Tooltip, {
|
|
5926
6062
|
title: __('SqlQueryBuilder.switch'),
|
|
5927
|
-
children: jsx(Button
|
|
6063
|
+
children: jsx(Button, {
|
|
5928
6064
|
disabled: meta.readonly,
|
|
5929
6065
|
primary: true,
|
|
5930
6066
|
ghost: true,
|
|
@@ -5937,7 +6073,7 @@ const JoinData = props => {
|
|
|
5937
6073
|
}), jsx("span", {
|
|
5938
6074
|
className: 'mr-2 text-gray-500',
|
|
5939
6075
|
children: "="
|
|
5940
|
-
}), v.right_isString ? jsx(Input
|
|
6076
|
+
}), v.right_isString ? jsx(Input, {
|
|
5941
6077
|
disabled: meta.readonly,
|
|
5942
6078
|
className: ':Sqb-TableName-input',
|
|
5943
6079
|
value: v.right_string,
|
|
@@ -5957,9 +6093,9 @@ const JoinData = props => {
|
|
|
5957
6093
|
"v-index": i,
|
|
5958
6094
|
onClick: selectMoreJoinColumn,
|
|
5959
6095
|
children: v.right_column ? v.right_column : __('SqlQueryBuilder.pickTable')
|
|
5960
|
-
}), jsx(Tooltip
|
|
6096
|
+
}), jsx(Tooltip, {
|
|
5961
6097
|
title: __('SqlQueryBuilder.switch'),
|
|
5962
|
-
children: jsx(Button
|
|
6098
|
+
children: jsx(Button, {
|
|
5963
6099
|
disabled: meta.readonly,
|
|
5964
6100
|
primary: true,
|
|
5965
6101
|
ghost: true,
|
|
@@ -5969,9 +6105,9 @@ const JoinData = props => {
|
|
|
5969
6105
|
onIsString('right_isString', i);
|
|
5970
6106
|
}
|
|
5971
6107
|
})
|
|
5972
|
-
}), jsx(Tooltip
|
|
6108
|
+
}), jsx(Tooltip, {
|
|
5973
6109
|
title: __('SqlQueryBuilder.add'),
|
|
5974
|
-
children: jsx(Button
|
|
6110
|
+
children: jsx(Button, {
|
|
5975
6111
|
disabled: meta.readonly,
|
|
5976
6112
|
primary: true,
|
|
5977
6113
|
ghost: true,
|
|
@@ -5994,9 +6130,9 @@ const JoinData = props => {
|
|
|
5994
6130
|
store.setMeta(newMeta);
|
|
5995
6131
|
}
|
|
5996
6132
|
})
|
|
5997
|
-
}), meta.expressions.length > 0 && jsx(Tooltip
|
|
6133
|
+
}), meta.expressions.length > 0 && jsx(Tooltip, {
|
|
5998
6134
|
title: __('SqlQueryBuilder.del'),
|
|
5999
|
-
children: jsx(Button
|
|
6135
|
+
children: jsx(Button, {
|
|
6000
6136
|
disabled: meta.readonly,
|
|
6001
6137
|
danger: true,
|
|
6002
6138
|
className: 'mr-2 operator-icon',
|
|
@@ -6010,9 +6146,9 @@ const JoinData = props => {
|
|
|
6010
6146
|
})
|
|
6011
6147
|
})]
|
|
6012
6148
|
}, i);
|
|
6013
|
-
}), meta.table1.column_id && meta.table2.column_id && (meta.expressions?.length || 0) < 1 && jsx(Tooltip
|
|
6149
|
+
}), meta.table1.column_id && meta.table2.column_id && (meta.expressions?.length || 0) < 1 && jsx(Tooltip, {
|
|
6014
6150
|
title: __('SqlQueryBuilder.add'),
|
|
6015
|
-
children: jsx(Button
|
|
6151
|
+
children: jsx(Button, {
|
|
6016
6152
|
disabled: meta.readonly,
|
|
6017
6153
|
primary: true,
|
|
6018
6154
|
ghost: true,
|
|
@@ -6201,11 +6337,16 @@ const Filter = props => {
|
|
|
6201
6337
|
prevList,
|
|
6202
6338
|
prevGroupBy
|
|
6203
6339
|
} = getHelper(store.metaList, meta);
|
|
6340
|
+
let newMeta = store.metaList.slice();
|
|
6341
|
+
let mainTable = newMeta[0];
|
|
6204
6342
|
let data;
|
|
6205
6343
|
if (ExistAboveGroupBy) {
|
|
6206
6344
|
let _data = {
|
|
6207
6345
|
table: prevGroupBy.alias,
|
|
6346
|
+
tableId: prevGroupBy.alias,
|
|
6208
6347
|
alias: prevGroupBy.alias,
|
|
6348
|
+
datasourceId: mainTable.table.datasourceId,
|
|
6349
|
+
datasourceName: mainTable.table.datasourceName,
|
|
6209
6350
|
columns: []
|
|
6210
6351
|
};
|
|
6211
6352
|
if (prevGroupBy?.group?.length) {
|
|
@@ -6247,7 +6388,10 @@ const Filter = props => {
|
|
|
6247
6388
|
return {
|
|
6248
6389
|
alias: v.table2.alias,
|
|
6249
6390
|
table: v.table2.name,
|
|
6250
|
-
|
|
6391
|
+
tableId: v.table2.id,
|
|
6392
|
+
columns: v.columns,
|
|
6393
|
+
datasourceId: mainTable.table.datasourceId,
|
|
6394
|
+
datasourceName: mainTable.table.datasourceName
|
|
6251
6395
|
};
|
|
6252
6396
|
}));
|
|
6253
6397
|
}
|
|
@@ -6258,13 +6402,19 @@ const Filter = props => {
|
|
|
6258
6402
|
return {
|
|
6259
6403
|
alias: v.table.alias,
|
|
6260
6404
|
table: v.table.name,
|
|
6261
|
-
|
|
6405
|
+
tableId: v.table.id,
|
|
6406
|
+
columns: v.columns,
|
|
6407
|
+
datasourceId: mainTable.table.datasourceId,
|
|
6408
|
+
datasourceName: mainTable.table.datasourceName
|
|
6262
6409
|
};
|
|
6263
6410
|
} else if (v.type === TypeEnum.joinData) {
|
|
6264
6411
|
return {
|
|
6265
6412
|
alias: v.table2.alias,
|
|
6266
6413
|
table: v.table2.name,
|
|
6267
|
-
|
|
6414
|
+
tableId: v.table2.id,
|
|
6415
|
+
columns: v.columns,
|
|
6416
|
+
datasourceId: mainTable.table.datasourceId,
|
|
6417
|
+
datasourceName: mainTable.table.datasourceName
|
|
6268
6418
|
};
|
|
6269
6419
|
} else {
|
|
6270
6420
|
return {
|
|
@@ -6298,17 +6448,24 @@ const Filter = props => {
|
|
|
6298
6448
|
let value = {
|
|
6299
6449
|
table: '',
|
|
6300
6450
|
// 表名
|
|
6451
|
+
tableId: '',
|
|
6452
|
+
// 表名
|
|
6301
6453
|
alias: '',
|
|
6302
6454
|
// 表的别名
|
|
6303
6455
|
name: '',
|
|
6304
6456
|
// 字段名
|
|
6457
|
+
id: '',
|
|
6458
|
+
// 字段名
|
|
6305
6459
|
database_type: '',
|
|
6306
6460
|
// 字段类型
|
|
6307
6461
|
condition: '',
|
|
6308
6462
|
// 选择条件
|
|
6309
6463
|
val: [],
|
|
6310
6464
|
// 选择结果 如果有两个 长度就为2
|
|
6311
|
-
quotes: ''
|
|
6465
|
+
quotes: '',
|
|
6466
|
+
// 前端显示用户看的文字
|
|
6467
|
+
datasourceId: '',
|
|
6468
|
+
datasourceName: ''
|
|
6312
6469
|
};
|
|
6313
6470
|
store.setPopup({
|
|
6314
6471
|
visible: true,
|
|
@@ -6399,6 +6556,7 @@ const GroupBy = props => {
|
|
|
6399
6556
|
if (ExistAboveGroupBy) {
|
|
6400
6557
|
let _data = {
|
|
6401
6558
|
table: prevGroupBy.alias,
|
|
6559
|
+
tableId: prevGroupBy.alias,
|
|
6402
6560
|
alias: prevGroupBy.alias,
|
|
6403
6561
|
columns: []
|
|
6404
6562
|
};
|
|
@@ -6506,12 +6664,18 @@ const GroupBy = props => {
|
|
|
6506
6664
|
let data = getColumns();
|
|
6507
6665
|
let value = {
|
|
6508
6666
|
table: '',
|
|
6667
|
+
tableId: '',
|
|
6509
6668
|
alias: '',
|
|
6510
6669
|
name: '',
|
|
6670
|
+
id: '',
|
|
6511
6671
|
sql: '',
|
|
6512
6672
|
database_type: '',
|
|
6513
6673
|
condition: '',
|
|
6514
|
-
quotes: ''
|
|
6674
|
+
quotes: '',
|
|
6675
|
+
datasourceId: '',
|
|
6676
|
+
datasourceName: '',
|
|
6677
|
+
column: '',
|
|
6678
|
+
column_id: ''
|
|
6515
6679
|
};
|
|
6516
6680
|
store.setPopup({
|
|
6517
6681
|
visible: true,
|
|
@@ -6596,6 +6760,7 @@ const SelectIndex = props => {
|
|
|
6596
6760
|
if (ExistAboveGroupBy) {
|
|
6597
6761
|
let _data = {
|
|
6598
6762
|
table: prevGroupBy.alias,
|
|
6763
|
+
tableId: prevGroupBy.alias,
|
|
6599
6764
|
alias: prevGroupBy.alias,
|
|
6600
6765
|
columns: []
|
|
6601
6766
|
};
|
|
@@ -6701,12 +6866,18 @@ const SelectIndex = props => {
|
|
|
6701
6866
|
let data = getColumns();
|
|
6702
6867
|
let value = {
|
|
6703
6868
|
table: '',
|
|
6869
|
+
tableId: '',
|
|
6704
6870
|
alias: '',
|
|
6705
6871
|
name: '',
|
|
6872
|
+
id: '',
|
|
6706
6873
|
sql: '',
|
|
6707
6874
|
database_type: '',
|
|
6708
6875
|
condition: '',
|
|
6709
|
-
quotes: ''
|
|
6876
|
+
quotes: '',
|
|
6877
|
+
datasourceId: '',
|
|
6878
|
+
datasourceName: '',
|
|
6879
|
+
column: '',
|
|
6880
|
+
column_id: ''
|
|
6710
6881
|
};
|
|
6711
6882
|
store.setPopup({
|
|
6712
6883
|
visible: true,
|
|
@@ -6830,6 +7001,7 @@ const Sort = props => {
|
|
|
6830
7001
|
if (ExistAboveGroupBy) {
|
|
6831
7002
|
let _data = {
|
|
6832
7003
|
table: prevGroupBy.alias,
|
|
7004
|
+
tableId: prevGroupBy.alias,
|
|
6833
7005
|
alias: prevGroupBy.alias,
|
|
6834
7006
|
columns: []
|
|
6835
7007
|
};
|
|
@@ -6891,9 +7063,14 @@ const Sort = props => {
|
|
|
6891
7063
|
let newMeta = store.metaList.slice();
|
|
6892
7064
|
let value = {
|
|
6893
7065
|
table: '',
|
|
7066
|
+
tableId: '',
|
|
6894
7067
|
alias: '',
|
|
6895
7068
|
name: '',
|
|
6896
|
-
|
|
7069
|
+
id: '',
|
|
7070
|
+
database_type: '',
|
|
7071
|
+
datasourceId: '',
|
|
7072
|
+
// 数据源id
|
|
7073
|
+
datasourceName: '' // 数据源名
|
|
6897
7074
|
};
|
|
6898
7075
|
let data = getColumns();
|
|
6899
7076
|
// ② 过滤掉已经选择的 排序参数
|
|
@@ -7091,6 +7268,7 @@ const PermissionTable = props => {
|
|
|
7091
7268
|
if (ExistAboveGroupBy) {
|
|
7092
7269
|
let _data = {
|
|
7093
7270
|
name: prevGroupBy.alias,
|
|
7271
|
+
id: prevGroupBy.alias,
|
|
7094
7272
|
alias: prevGroupBy.alias,
|
|
7095
7273
|
datasourceId: '',
|
|
7096
7274
|
datasourceName: ''
|
|
@@ -7102,6 +7280,7 @@ const PermissionTable = props => {
|
|
|
7102
7280
|
return {
|
|
7103
7281
|
alias: v.table2.alias,
|
|
7104
7282
|
name: v.table2.name,
|
|
7283
|
+
id: v.table2.id,
|
|
7105
7284
|
datasourceId: v.table2.datasourceId,
|
|
7106
7285
|
datasourceName: v.table2.datasourceName
|
|
7107
7286
|
};
|
|
@@ -7113,6 +7292,7 @@ const PermissionTable = props => {
|
|
|
7113
7292
|
mo.push({
|
|
7114
7293
|
alias: v.table.alias,
|
|
7115
7294
|
name: v.table.name,
|
|
7295
|
+
id: v.table.id,
|
|
7116
7296
|
datasourceId: v.table.datasourceId,
|
|
7117
7297
|
datasourceName: v.table.datasourceName
|
|
7118
7298
|
});
|
|
@@ -7120,6 +7300,7 @@ const PermissionTable = props => {
|
|
|
7120
7300
|
mo.push({
|
|
7121
7301
|
alias: v.table2.alias,
|
|
7122
7302
|
name: v.table2.name,
|
|
7303
|
+
id: v.table2.id,
|
|
7123
7304
|
datasourceId: v.table2.datasourceId,
|
|
7124
7305
|
datasourceName: v.table2.datasourceName
|
|
7125
7306
|
});
|
|
@@ -7196,6 +7377,14 @@ const Metabase = props => {
|
|
|
7196
7377
|
if (!visible) return null;
|
|
7197
7378
|
return content;
|
|
7198
7379
|
}, [store.popupData]);
|
|
7380
|
+
const popupContent2 = useMemo(() => {
|
|
7381
|
+
let {
|
|
7382
|
+
visible,
|
|
7383
|
+
content
|
|
7384
|
+
} = store.popupData2;
|
|
7385
|
+
if (!visible) return null;
|
|
7386
|
+
return content;
|
|
7387
|
+
}, [store.popupData2]);
|
|
7199
7388
|
return (
|
|
7200
7389
|
// @ts-ignore
|
|
7201
7390
|
jsx(VisualBox, {
|
|
@@ -7216,7 +7405,7 @@ const Metabase = props => {
|
|
|
7216
7405
|
meta: meta
|
|
7217
7406
|
}, metaKey);
|
|
7218
7407
|
})
|
|
7219
|
-
}), !readonly && typeof onOk === 'function' ? jsx(Button, {
|
|
7408
|
+
}), !readonly && typeof onOk === 'function' ? jsx(Button$1, {
|
|
7220
7409
|
type: 'primary',
|
|
7221
7410
|
className: `Sqb-btn`,
|
|
7222
7411
|
icon: saveLoading ? jsx(LoadingOutlined, {}) : null,
|
|
@@ -7242,6 +7431,18 @@ const Metabase = props => {
|
|
|
7242
7431
|
});
|
|
7243
7432
|
},
|
|
7244
7433
|
children: popupContent
|
|
7434
|
+
}), popupContainer.current && jsx(Popup, {
|
|
7435
|
+
container: popupContainer.current,
|
|
7436
|
+
visible: store.popupData2.visible,
|
|
7437
|
+
node: store.popupData2.node,
|
|
7438
|
+
closable: store.popupClosable2,
|
|
7439
|
+
hideVisible: () => {
|
|
7440
|
+
store.setClosable(true);
|
|
7441
|
+
store.setPopup2({
|
|
7442
|
+
visible: false
|
|
7443
|
+
});
|
|
7444
|
+
},
|
|
7445
|
+
children: popupContent2
|
|
7245
7446
|
})]
|
|
7246
7447
|
})
|
|
7247
7448
|
})
|