@gingkoo/pandora-metabase 1.0.0-alpha.18 → 1.0.0-alpha.19
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 +185 -23
- package/lib/es/index.js.map +1 -1
- package/lib/es/store/types.d.ts +4 -3
- package/lib/es/utils.d.ts +2 -1
- package/package.json +1 -1
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.19
|
|
3
3
|
*/
|
|
4
4
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
5
5
|
import * as React from 'react';
|
|
@@ -8,12 +8,12 @@ import cloneDeep from 'lodash/cloneDeep';
|
|
|
8
8
|
import cx from 'classnames';
|
|
9
9
|
import { Tooltip, Button, Modal, Input, DatePicker, Dropdown, InputNumber, Select, Modal2, Toast } from '@gingkoo/pandora';
|
|
10
10
|
import Styled from 'styled-components';
|
|
11
|
+
import { ChevronODown, Repeat, Function, RelatedWork, FfPlus, FfLine } from '@gingkoo/pandora-icons';
|
|
12
|
+
import isEqual from 'lodash/isEqual';
|
|
11
13
|
import 'underscore';
|
|
12
14
|
import ReactDOM from 'react-dom';
|
|
13
15
|
import ReactDOMServer from 'react-dom/server';
|
|
14
|
-
import { ChevronODown, Repeat, Function, RelatedWork, FfPlus, FfLine } from '@gingkoo/pandora-icons';
|
|
15
16
|
import moment from 'dayjs';
|
|
16
|
-
import isEqual from 'lodash/isEqual';
|
|
17
17
|
|
|
18
18
|
// 创建 Context
|
|
19
19
|
const Context = /*#__PURE__*/createContext({});
|
|
@@ -724,8 +724,12 @@ const changeTableAlias = (list, curObj) => {
|
|
|
724
724
|
alias
|
|
725
725
|
} = cloneDeep(curObj);
|
|
726
726
|
const newList = cloneDeep(list);
|
|
727
|
-
newList
|
|
728
|
-
if (v.type === TypeEnum.data)
|
|
727
|
+
newList?.map(v => {
|
|
728
|
+
if (v.type === TypeEnum.data) {
|
|
729
|
+
if (v.table.tableUuid === tableUuid) {
|
|
730
|
+
v.table.alias = alias;
|
|
731
|
+
}
|
|
732
|
+
}
|
|
729
733
|
if (v.type === TypeEnum.joinData) {
|
|
730
734
|
if (v.table1.tableUuid === tableUuid) {
|
|
731
735
|
v.table1.alias = alias;
|
|
@@ -809,12 +813,15 @@ const changeTableAlias = (list, curObj) => {
|
|
|
809
813
|
// }
|
|
810
814
|
// }
|
|
811
815
|
item.table2.alias = alias;
|
|
812
|
-
item.table2.sql = '';
|
|
816
|
+
// item.table2.sql = '';
|
|
813
817
|
}
|
|
814
818
|
});
|
|
815
819
|
}
|
|
820
|
+
if (v.subquery) {
|
|
821
|
+
v.subquery = changeTableAlias(v.subquery || [], curObj);
|
|
822
|
+
}
|
|
816
823
|
});
|
|
817
|
-
return newList;
|
|
824
|
+
return newList || [];
|
|
818
825
|
};
|
|
819
826
|
const changeFieldAlias = (list, curObj) => {
|
|
820
827
|
const {
|
|
@@ -1005,6 +1012,27 @@ function reassembleByUnion(target = []) {
|
|
|
1005
1012
|
}
|
|
1006
1013
|
return result;
|
|
1007
1014
|
}
|
|
1015
|
+
const buildSqlQuery = data => {
|
|
1016
|
+
if (!data || data.length === 0) return '';
|
|
1017
|
+
let sqlClauses = ['not exitis ( '];
|
|
1018
|
+
data.forEach(item => {
|
|
1019
|
+
if (item.type === TypeEnum.data) {
|
|
1020
|
+
const meta = item;
|
|
1021
|
+
const tableName = meta.table.name;
|
|
1022
|
+
const alias = meta.table.alias ? `AS ${meta.table.alias}` : '';
|
|
1023
|
+
const dataSource = meta.table.datasourceName;
|
|
1024
|
+
sqlClauses.push(`SELECT ${tableName} ${alias} FROM ${dataSource}`);
|
|
1025
|
+
}
|
|
1026
|
+
if (item.type === TypeEnum.filter) {
|
|
1027
|
+
const filterStrings = item.filter.map(f => f.quotes).filter(Boolean); // 排除空条件
|
|
1028
|
+
if (filterStrings.length > 0) {
|
|
1029
|
+
sqlClauses.push(`WHERE ${filterStrings.join(' AND ')}`);
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
});
|
|
1033
|
+
// 简单拼接 SQL 片段
|
|
1034
|
+
return sqlClauses.join(' ') + ' )' + ';';
|
|
1035
|
+
};
|
|
1008
1036
|
|
|
1009
1037
|
let metaKey = 1;
|
|
1010
1038
|
const SummarizeAlias = 'source';
|
|
@@ -1164,8 +1192,8 @@ const useStore = () => {
|
|
|
1164
1192
|
newMeta.expressions = newMeta.expressions?.map(v => {
|
|
1165
1193
|
return {
|
|
1166
1194
|
...v,
|
|
1167
|
-
left_fieldAlias: v.
|
|
1168
|
-
left_fieldUuid: v.
|
|
1195
|
+
left_fieldAlias: v.left_fieldAlias || v.left_column,
|
|
1196
|
+
left_fieldUuid: v.left_fieldUuid || uuidv4('field'),
|
|
1169
1197
|
left_quotes: v.left_quotes || v.left_column,
|
|
1170
1198
|
right_fieldAlias: v.right_fieldAlias || v.right_column,
|
|
1171
1199
|
right_fieldUuid: v.right_fieldUuid || uuidv4('field'),
|
|
@@ -1841,7 +1869,7 @@ const Loading = ({
|
|
|
1841
1869
|
});
|
|
1842
1870
|
};
|
|
1843
1871
|
|
|
1844
|
-
var css_248z$d = ".mx-4 {\n margin-left: 1rem;\n margin-right: 1rem;\n}\n.m-2 {\n margin: 0.5rem;\n}\n.mx-2 {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n.ml-2 {\n margin-left: 0.5rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.mb-2 {\n margin-bottom: 0.5rem;\n}\n.mt-4 {\n margin-top: 1rem;\n}\n.ml-4 {\n margin-left: 1rem;\n}\n.mr-4 {\n margin-right: 1rem;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.pt-2 {\n padding-top: 0.5rem;\n}\n.pb-2 {\n padding-bottom: 0.5rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.pb-4 {\n padding-bottom: 1rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.block {\n display: block;\n}\n.w-full {\n width: 100%;\n}\n.font-bold {\n font-weight: 700;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.tracking-wider {\n letter-spacing: 0.05em;\n}\n.relative {\n position: relative;\n}\n.absolute {\n position: absolute;\n}\n.top-0 {\n top: 0px;\n}\n.left-0 {\n left: 0;\n}\n.rounded-lg {\n border-radius: 0.5rem;\n}\n.text-gray-500 {\n color: #6b7280;\n}\n.flex {\n display: flex;\n}\n.items-center {\n align-items: center;\n}\n.justify-center {\n justify-content: center;\n}\n.visual-box {\n position: relative;\n width: 100%;\n height: 100%;\n overflow-y: scroll;\n overflow-x: hidden;\n transition: all 0.3s;\n z-index: 3;\n background-color: #fff;\n}\n.Sqb {\n padding: 0 20px 50px;\n}\n.Sqb-list {\n padding-top: 1.5rem;\n}\n.Sqb-hover-parent {\n margin-bottom: 16px;\n padding-bottom: 16px;\n}\n.Sqb-item {\n font-size: 14px;\n}\n.Sqb-item--text {\n color: #509ee3;\n width: 66.6667%;\n box-sizing: border-box;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n font-weight: 600;\n}\n.Sqb-item--text.purple-text {\n color: #7172ad;\n}\n.Sqb-item--text.gray-text {\n color: #93a1ab;\n}\n.Sqb-item--text.green-text {\n color: #88bf4d;\n}\n.Sqb-item-close {\n width: 16px;\n height: 16px;\n color: #b8bbc3;\n margin-left: auto;\n visibility: hidden;\n cursor: pointer;\n}\n.Sqb-item--content {\n width: 66.6667%;\n box-sizing: border-box;\n}\n.Sqb-item--content .Sqb-Filter-item {\n position: relative;\n margin: 0 10px;\n}\n.Sqb-item--content .Sqb-Filter-item .right-arrow,\n.Sqb-item--content .Sqb-Filter-item .left-arrow {\n position: absolute;\n top: 0;\n height: 40px;\n width: 30px;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.4;\n cursor: pointer;\n transform: scale(0);\n transition: all 0.3s;\n}\n.Sqb-item--content .Sqb-Filter-item .right-arrow img,\n.Sqb-item--content .Sqb-Filter-item .left-arrow img {\n transform: scale(0.8);\n}\n.Sqb-item--content .Sqb-Filter-item .right-arrow:hover,\n.Sqb-item--content .Sqb-Filter-item .left-arrow:hover {\n opacity: 1;\n}\n.Sqb-item--content .Sqb-Filter-item .left-arrow {\n transform: rotate(180deg) scale(0);\n transform-origin: 50% 50%;\n left: -30px;\n}\n.Sqb-item--content .Sqb-Filter-item .right-arrow {\n right: -20px;\n}\n.Sqb-item--content .Sqb-Filter-item.hover .left-arrow {\n transform: rotate(180deg) scale(1);\n}\n.Sqb-item--content .Sqb-Filter-item.hover .right-arrow {\n transform: scale(1);\n}\n.Sqb-item--content .Sqb-NotebookCell {\n box-sizing: border-box;\n padding: 16px 16px 8px;\n color: #509ee3;\n display: flex;\n flex-wrap: wrap;\n -webkit-box-align: center;\n align-items: center;\n border-radius: 8px;\n background-color: rgba(80, 158, 227, 0.1);\n}\n.Sqb-item--content .Sqb-NotebookCell-preview {\n flex-shrink: 0;\n width: 100%;\n}\n.Sqb-item--content .Sqb-NotebookCell.gray-bg {\n background-color: rgba(147, 161, 171, 0.1);\n}\n.Sqb-item--content .Sqb-NotebookCell.green-bg {\n background-color: rgba(136, 191, 77, 0.1);\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName {\n position: relative;\n border: 2px solid transparent;\n border-radius: 6px;\n color: white;\n background-color: #509ee3;\n transition: background 300ms linear 0s,\n border 300ms linear 0s;\n box-sizing: border-box;\n margin-bottom: 8px;\n margin-right: 8px;\n padding: 8px;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n cursor: pointer;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName-as {\n position: absolute;\n right: 0;\n top: 0;\n transform: translate(50%, -50%);\n margin: 0;\n border: none;\n border-radius: 50%;\n width: 20px;\n height: 20px;\n font-size: 12px;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName-input {\n margin-bottom: 9px;\n margin-right: 8px;\n padding: 9px;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName::selection {\n color: #ffffff;\n background-color: #d489ac;\n text-shadow: none;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName:hover {\n background-color: rgba(80, 158, 227, 0.8);\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.noClick {\n cursor: default;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.noClick:hover {\n background-color: #509ee3;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.notSelected {\n border: 2px solid rgba(80, 158, 227, 0.25);\n color: #509ee3;\n background-color: transparent;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.notSelected:hover {\n border-color: rgba(80, 158, 227, 0.8);\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.purple-name {\n color: white;\n background-color: #7172ad;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.purple-name:hover {\n background-color: rgba(113, 114, 173, 0.8);\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.purple-name svg.closeIcon {\n opacity: 0.6;\n margin-left: 8px;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.purple-name.notSelected {\n border: 2px solid rgba(113, 114, 173, 0.25);\n color: #7172ad;\n background-color: transparent;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.purple-name.notSelected:hover {\n border-color: rgba(113, 114, 173, 0.8);\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.gray-name {\n color: white;\n background-color: #93a1ab;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.gray-name:hover {\n background-color: rgba(147, 161, 171, 0.8);\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.gray-name svg.sort-arrow {\n margin-right: 0.5rem;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.gray-name svg.closeIcon {\n opacity: 0.6;\n margin-left: 8px;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.green-name {\n color: white;\n background-color: #88bf4d;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.green-name:hover {\n background-color: rgba(136, 191, 77, 0.8);\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.green-name svg.closeIcon {\n opacity: 0.6;\n margin-left: 8px;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.green-name.notSelected {\n border: 2px solid rgba(136, 191, 77, 0.25);\n color: #88bf4d;\n background-color: transparent;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.green-name.notSelected:hover {\n border-color: rgba(136, 191, 77, 0.8);\n}\n.Sqb-item--content .Sqb-NotebookCell .ant-input-number {\n margin-bottom: 0.5rem;\n}\n.Sqb-item--content .Sqb-NotebookCell .ant-input-number .ant-input-number-input {\n height: 32px;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-where {\n box-sizing: border-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-where.block {\n width: 100%;\n}\n.Sqb-item--content .Sqb-NotebookCell .operator-icon,\n.Sqb-item--content .Sqb-NotebookCell .operator-icon button {\n font-size: 18px !important;\n border: none !important;\n}\n.Sqb-item--content .Sqb-NotebookCell .subquery-icon {\n color: #93a1ab;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableColumns {\n font-weight: 600;\n margin-bottom: 0.5rem;\n margin-left: auto;\n cursor: pointer;\n}\n.Sqb-item--content .flex-row {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n flex-direction: row;\n}\n.Sqb-item--content .flex-row .Sqb-NotebookCell {\n width: 50%;\n}\n.Sqb-item--content .flex-row .pass {\n color: #88bf4d;\n margin: 4px 16px;\n font-size: 600;\n}\n.Sqb-item--func {\n box-sizing: border-box;\n margin-top: 8px;\n}\n.Sqb-item--func .Sqb-button {\n display: inline-block;\n box-sizing: border-box;\n text-decoration: none;\n cursor: pointer;\n font-weight: bold;\n padding: 12px 16px;\n border-radius: 6px;\n margin-right: 16px;\n margin-top: 16px;\n border: none;\n transition: background 300ms ease 0s;\n flex-shrink: 0;\n color: #93a1ab;\n background-color: #ffffff;\n}\n.Sqb-item--func .Sqb-button:hover {\n color: #7e8f9b;\n background-color: #eceff0;\n}\n.Sqb-item--func .Sqb-button > div {\n min-width: 60px;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n display: flex;\n}\n.Sqb-item--func .Sqb-button > div svg {\n flex-shrink: 0;\n}\n.Sqb-item--func .Sqb-button > div div {\n margin-top: 0.5rem;\n}\n.Sqb-item--func .Sqb-button.filter {\n color: #7172ad;\n background-color: #e0e0ed;\n}\n.Sqb-item--func .Sqb-button.filter:hover {\n color: #5d5ea0;\n background-color: #cccce1;\n}\n.Sqb-item--func .Sqb-button.summarize {\n color: #88bf4d;\n background-color: #d8eac5;\n}\n.Sqb-item--func .Sqb-button.summarize:hover {\n color: #79ae3f;\n background-color: #cae2af;\n}\n.Sqb-item--func .Sqb-button.joinData {\n color: #509ee3;\n background-color: #f1f7fd;\n}\n.Sqb-item--func .Sqb-button.joinData:hover {\n color: #328dde;\n background-color: #d4e7f8;\n}\n.Sqb-item--func .Sqb-button.small {\n margin-right: 8px;\n margin-top: 0;\n padding: 0.5rem;\n}\n.Sqb-item--func .Sqb-button.small > div {\n min-width: 0;\n}\n.Sqb-item--func .Sqb-button.small > div svg {\n width: 14px;\n height: 14px;\n}\n.Sqb-item--func .Sqb-button.small > div div {\n display: none;\n}\n.Sqb-item:hover .Sqb-item-close {\n visibility: visible;\n}\n.Sqb > .Sqb-btn {\n min-width: 220px;\n height: 36px;\n border-radius: 6px;\n color: #ffffff;\n background-color: #509ee3 !important;\n border: 1px solid #509ee3;\n}\n.Sqb > .Sqb-btn:hover {\n background-color: rgba(80, 158, 227, 0.8) !important;\n}\n";
|
|
1872
|
+
var css_248z$d = ".mx-4 {\n margin-left: 1rem;\n margin-right: 1rem;\n}\n.m-2 {\n margin: 0.5rem;\n}\n.mx-2 {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n.ml-2 {\n margin-left: 0.5rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.mb-2 {\n margin-bottom: 0.5rem;\n}\n.mt-4 {\n margin-top: 1rem;\n}\n.ml-4 {\n margin-left: 1rem;\n}\n.mr-4 {\n margin-right: 1rem;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.pt-2 {\n padding-top: 0.5rem;\n}\n.pb-2 {\n padding-bottom: 0.5rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-1 {\n padding: 0.25rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.pb-4 {\n padding-bottom: 1rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.block {\n display: block;\n}\n.w-full {\n width: 100%;\n}\n.font-bold {\n font-weight: 700;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.tracking-wider {\n letter-spacing: 0.05em;\n}\n.relative {\n position: relative;\n}\n.absolute {\n position: absolute;\n}\n.top-0 {\n top: 0px;\n}\n.left-0 {\n left: 0;\n}\n.rounded-lg {\n border-radius: 0.5rem;\n}\n.text-gray-500 {\n color: #6b7280;\n}\n.flex {\n display: flex;\n}\n.items-center {\n align-items: center;\n}\n.justify-center {\n justify-content: center;\n}\n.visual-box {\n position: relative;\n width: 100%;\n height: 100%;\n overflow-y: scroll;\n overflow-x: hidden;\n transition: all 0.3s;\n z-index: 3;\n background-color: #fff;\n}\n.Sqb {\n padding: 0 20px 50px;\n}\n.Sqb-list {\n padding-top: 1.5rem;\n}\n.Sqb-hover-parent {\n margin-bottom: 16px;\n padding-bottom: 16px;\n}\n.Sqb-item {\n font-size: 14px;\n}\n.Sqb-item--text {\n color: #509ee3;\n width: 66.6667%;\n box-sizing: border-box;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n font-weight: 600;\n}\n.Sqb-item--text.purple-text {\n color: #7172ad;\n}\n.Sqb-item--text.gray-text {\n color: #93a1ab;\n}\n.Sqb-item--text.green-text {\n color: #88bf4d;\n}\n.Sqb-item-close {\n width: 16px;\n height: 16px;\n color: #b8bbc3;\n margin-left: auto;\n visibility: hidden;\n cursor: pointer;\n}\n.Sqb-item--content {\n width: 66.6667%;\n box-sizing: border-box;\n}\n.Sqb-item--content .Sqb-Filter-item {\n position: relative;\n margin: 0 10px;\n}\n.Sqb-item--content .Sqb-Filter-item .right-arrow,\n.Sqb-item--content .Sqb-Filter-item .left-arrow {\n position: absolute;\n top: 0;\n height: 40px;\n width: 30px;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.4;\n cursor: pointer;\n transform: scale(0);\n transition: all 0.3s;\n}\n.Sqb-item--content .Sqb-Filter-item .right-arrow img,\n.Sqb-item--content .Sqb-Filter-item .left-arrow img {\n transform: scale(0.8);\n}\n.Sqb-item--content .Sqb-Filter-item .right-arrow:hover,\n.Sqb-item--content .Sqb-Filter-item .left-arrow:hover {\n opacity: 1;\n}\n.Sqb-item--content .Sqb-Filter-item .left-arrow {\n transform: rotate(180deg) scale(0);\n transform-origin: 50% 50%;\n left: -30px;\n}\n.Sqb-item--content .Sqb-Filter-item .right-arrow {\n right: -20px;\n}\n.Sqb-item--content .Sqb-Filter-item.hover .left-arrow {\n transform: rotate(180deg) scale(1);\n}\n.Sqb-item--content .Sqb-Filter-item.hover .right-arrow {\n transform: scale(1);\n}\n.Sqb-item--content .Sqb-NotebookCell {\n box-sizing: border-box;\n padding: 16px 16px 8px;\n color: #509ee3;\n display: flex;\n flex-wrap: wrap;\n -webkit-box-align: center;\n align-items: center;\n border-radius: 8px;\n background-color: rgba(80, 158, 227, 0.1);\n}\n.Sqb-item--content .Sqb-NotebookCell-preview {\n flex-shrink: 0;\n width: 100%;\n}\n.Sqb-item--content .Sqb-NotebookCell.gray-bg {\n background-color: rgba(147, 161, 171, 0.1);\n}\n.Sqb-item--content .Sqb-NotebookCell.green-bg {\n background-color: rgba(136, 191, 77, 0.1);\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName {\n position: relative;\n border: 2px solid transparent;\n border-radius: 6px;\n color: white;\n background-color: #509ee3;\n transition: background 300ms linear 0s,\n border 300ms linear 0s;\n box-sizing: border-box;\n margin-bottom: 8px;\n margin-right: 8px;\n padding: 8px;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n cursor: pointer;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName-as {\n position: absolute;\n right: 0;\n top: 0;\n transform: translate(50%, -50%);\n margin: 0;\n border: none;\n border-radius: 50%;\n width: 20px;\n height: 20px;\n font-size: 12px;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName-input {\n margin-bottom: 9px;\n margin-right: 8px;\n padding: 9px;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName::selection {\n color: #ffffff;\n background-color: #d489ac;\n text-shadow: none;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName:hover {\n background-color: rgba(80, 158, 227, 0.8);\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.noClick {\n cursor: default;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.noClick:hover {\n background-color: #509ee3;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.notSelected {\n border: 2px solid rgba(80, 158, 227, 0.25);\n color: #509ee3;\n background-color: transparent;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.notSelected:hover {\n border-color: rgba(80, 158, 227, 0.8);\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.purple-name {\n color: white;\n background-color: #7172ad;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.purple-name:hover {\n background-color: rgba(113, 114, 173, 0.8);\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.purple-name svg.closeIcon {\n opacity: 0.6;\n margin-left: 8px;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.purple-name.notSelected {\n border: 2px solid rgba(113, 114, 173, 0.25);\n color: #7172ad;\n background-color: transparent;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.purple-name.notSelected:hover {\n border-color: rgba(113, 114, 173, 0.8);\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.gray-name {\n color: white;\n background-color: #93a1ab;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.gray-name:hover {\n background-color: rgba(147, 161, 171, 0.8);\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.gray-name svg.sort-arrow {\n margin-right: 0.5rem;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.gray-name svg.closeIcon {\n opacity: 0.6;\n margin-left: 8px;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.green-name {\n color: white;\n background-color: #88bf4d;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.green-name:hover {\n background-color: rgba(136, 191, 77, 0.8);\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.green-name svg.closeIcon {\n opacity: 0.6;\n margin-left: 8px;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.green-name.notSelected {\n border: 2px solid rgba(136, 191, 77, 0.25);\n color: #88bf4d;\n background-color: transparent;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableName.green-name.notSelected:hover {\n border-color: rgba(136, 191, 77, 0.8);\n}\n.Sqb-item--content .Sqb-NotebookCell .ant-input-number {\n margin-bottom: 0.5rem;\n}\n.Sqb-item--content .Sqb-NotebookCell .ant-input-number .ant-input-number-input {\n height: 32px;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-where {\n box-sizing: border-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-where.block {\n width: 100%;\n}\n.Sqb-item--content .Sqb-NotebookCell .operator-icon,\n.Sqb-item--content .Sqb-NotebookCell .operator-icon button {\n font-size: 18px !important;\n border: none !important;\n}\n.Sqb-item--content .Sqb-NotebookCell .subquery-icon {\n color: #93a1ab;\n}\n.Sqb-item--content .Sqb-NotebookCell .Sqb-TableColumns {\n font-weight: 600;\n margin-bottom: 0.5rem;\n margin-left: auto;\n cursor: pointer;\n}\n.Sqb-item--content .flex-row {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n flex-direction: row;\n}\n.Sqb-item--content .flex-row .Sqb-NotebookCell {\n width: 50%;\n}\n.Sqb-item--content .flex-row .pass {\n color: #88bf4d;\n margin: 4px 16px;\n font-size: 600;\n}\n.Sqb-item--func {\n box-sizing: border-box;\n margin-top: 8px;\n}\n.Sqb-item--func .Sqb-button {\n display: inline-block;\n box-sizing: border-box;\n text-decoration: none;\n cursor: pointer;\n font-weight: bold;\n padding: 12px 16px;\n border-radius: 6px;\n margin-right: 16px;\n margin-top: 16px;\n border: none;\n transition: background 300ms ease 0s;\n flex-shrink: 0;\n color: #93a1ab;\n background-color: #ffffff;\n}\n.Sqb-item--func .Sqb-button:hover {\n color: #7e8f9b;\n background-color: #eceff0;\n}\n.Sqb-item--func .Sqb-button > div {\n min-width: 60px;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n display: flex;\n}\n.Sqb-item--func .Sqb-button > div svg {\n flex-shrink: 0;\n}\n.Sqb-item--func .Sqb-button > div div {\n margin-top: 0.5rem;\n}\n.Sqb-item--func .Sqb-button.filter {\n color: #7172ad;\n background-color: #e0e0ed;\n}\n.Sqb-item--func .Sqb-button.filter:hover {\n color: #5d5ea0;\n background-color: #cccce1;\n}\n.Sqb-item--func .Sqb-button.summarize {\n color: #88bf4d;\n background-color: #d8eac5;\n}\n.Sqb-item--func .Sqb-button.summarize:hover {\n color: #79ae3f;\n background-color: #cae2af;\n}\n.Sqb-item--func .Sqb-button.joinData {\n color: #509ee3;\n background-color: #f1f7fd;\n}\n.Sqb-item--func .Sqb-button.joinData:hover {\n color: #328dde;\n background-color: #d4e7f8;\n}\n.Sqb-item--func .Sqb-button.small {\n margin-right: 8px;\n margin-top: 0;\n padding: 0.5rem;\n}\n.Sqb-item--func .Sqb-button.small > div {\n min-width: 0;\n}\n.Sqb-item--func .Sqb-button.small > div svg {\n width: 14px;\n height: 14px;\n}\n.Sqb-item--func .Sqb-button.small > div div {\n display: none;\n}\n.Sqb-item:hover .Sqb-item-close {\n visibility: visible;\n}\n.Sqb > .Sqb-btn {\n min-width: 220px;\n height: 36px;\n border-radius: 6px;\n color: #ffffff;\n background-color: #509ee3 !important;\n border: 1px solid #509ee3;\n}\n.Sqb > .Sqb-btn:hover {\n background-color: rgba(80, 158, 227, 0.8) !important;\n}\n";
|
|
1845
1873
|
styleInject(css_248z$d);
|
|
1846
1874
|
|
|
1847
1875
|
// 获取元素translate x y值
|
|
@@ -3655,7 +3683,7 @@ styleInject(css_248z$9);
|
|
|
3655
3683
|
var css_248z$8 = ".function-tip__container {\n width: 448px;\n font-size: 14px;\n color: #4c5773;\n}\n.function-tip__container .function-name {\n background: #fffcf2;\n font-weight: 700;\n padding: 1rem;\n font-size: 14px;\n}\n.function-tip__container .function-desc {\n padding: 1rem;\n border-top: 1px solid #f0f0f0;\n}\n.function-tip__container .function-desc .desc {\n font-weight: 700;\n}\n.function-tip__container .function-desc .case {\n font-family: monospace;\n color: #949aab;\n background-color: #edf2f5;\n border-radius: 2px;\n padding: 0.2em 0.4em;\n line-height: 1.4em;\n white-space: pre-wrap;\n}\n.function-tip__container .funciton-parameter {\n padding: 1rem;\n border-top: 1px solid #f0f0f0;\n}\n.function-tip__container .funciton-parameter .key {\n color: #949aab;\n}\n.function-tip__container .funciton-parameter .explain {\n font-weight: 700;\n margin-top: 0.5rem;\n}\n";
|
|
3656
3684
|
styleInject(css_248z$8);
|
|
3657
3685
|
|
|
3658
|
-
var css_248z$7 = ".Sqb-SelectColumn--box {\n box-sizing: border-box;\n min-width: 1em;\n max-width: 300px;\n background-color: #ffffff;\n overflow: hidden;\n}\n.Sqb-SelectColumn--box .SelectColumn-border {\n border-bottom: 1px solid #f0f0f0;\n}\n.Sqb-SelectColumn--box .SelectColumn-border.events-none {\n pointer-events: none;\n opacity: 0.4;\n}\n.Sqb-SelectColumn--box > div {\n cursor: pointer;\n color: #4c5773;\n}\n.Sqb-SelectColumn--box > div .selected {\n width: 16px;\n height: 16px;\n background-color: #509ee3;\n border: 2px solid #509ee3;\n border-radius: 4px;\n color: #fff;\n}\n.Sqb-SelectColumn--box > div .no-select {\n width: 16px;\n height: 16px;\n background-color: white;\n border: 2px solid #b8bbc3;\n border-radius: 4px;\n color: #b8bbc3;\n}\n.Sqb-SelectColumn--box > div .Sqb-TableName-as {\n margin-left: auto;\n}\n";
|
|
3686
|
+
var css_248z$7 = ".Sqb-SelectColumn--box {\n box-sizing: border-box;\n min-width: 1em;\n max-width: 300px;\n background-color: #ffffff;\n overflow: hidden;\n}\n.Sqb-SelectColumn--box .SelectColumn-border {\n border-bottom: 1px solid #f0f0f0;\n}\n.Sqb-SelectColumn--box .SelectColumn-border.events-none {\n pointer-events: none;\n opacity: 0.4;\n}\n.Sqb-SelectColumn--box > div {\n cursor: pointer;\n color: #4c5773;\n}\n.Sqb-SelectColumn--box > div .selected {\n width: 16px;\n height: 16px;\n background-color: #509ee3;\n border: 2px solid #509ee3;\n border-radius: 4px;\n color: #fff;\n}\n.Sqb-SelectColumn--box > div .no-select {\n width: 16px;\n height: 16px;\n background-color: white;\n border: 2px solid #b8bbc3;\n border-radius: 4px;\n color: #b8bbc3;\n}\n.Sqb-SelectColumn--box > div .Sqb-TableName-as {\n margin-left: auto;\n}\n.Sqb-SelectColumn--box .Sqb-SelectColumn-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-SelectColumn--box .Sqb-SelectColumn-search span {\n line-height: 0;\n}\n.Sqb-SelectColumn--box .Sqb-SelectColumn-search input {\n box-shadow: none;\n outline: 0;\n border: none !important;\n background: transparent;\n color: #4c5773;\n font-size: 1em;\n font-weight: 600;\n}\n.Sqb-SelectColumn--box .Sqb-SelectColumn-search input::-webkit-input-placeholder {\n color: #b8bbc3;\n}\n.Sqb-SelectColumn--box .Sqb-SelectColumn-search input::-ms-input-placeholder {\n color: #b8bbc3;\n}\n";
|
|
3659
3687
|
styleInject(css_248z$7);
|
|
3660
3688
|
|
|
3661
3689
|
// 选择表中参数
|
|
@@ -3664,11 +3692,21 @@ const SelectColumn = ({
|
|
|
3664
3692
|
groupIndex,
|
|
3665
3693
|
onChange
|
|
3666
3694
|
}) => {
|
|
3667
|
-
const [columns, setColumns] = useState(
|
|
3695
|
+
const [columns, setColumns] = useState([]);
|
|
3696
|
+
const [originList, setOriginList] = useState(_data.slice());
|
|
3668
3697
|
const store = useStore$1();
|
|
3698
|
+
const [filterVal, setFilterVal] = useState('');
|
|
3699
|
+
useEffect(() => {
|
|
3700
|
+
let newList = cloneDeep(originList.slice());
|
|
3701
|
+
setColumns(newList.filter(v => ~(v.name + (v.name_zh || '')).toLocaleLowerCase().indexOf(filterVal.toLocaleLowerCase())));
|
|
3702
|
+
}, [filterVal, originList]);
|
|
3703
|
+
function onInput(e) {
|
|
3704
|
+
let val = e.target.value;
|
|
3705
|
+
setFilterVal(val);
|
|
3706
|
+
}
|
|
3669
3707
|
const isAllSelect = useMemo(() => {
|
|
3670
|
-
return
|
|
3671
|
-
}, [
|
|
3708
|
+
return originList.filter(v => v.select).length === originList.length;
|
|
3709
|
+
}, [originList]);
|
|
3672
3710
|
const AllSelectElement = useMemo(() => {
|
|
3673
3711
|
if (isAllSelect) {
|
|
3674
3712
|
return jsxs(Fragment, {
|
|
@@ -3687,8 +3725,14 @@ const SelectColumn = ({
|
|
|
3687
3725
|
}
|
|
3688
3726
|
}, [isAllSelect]);
|
|
3689
3727
|
function onSelect(columns) {
|
|
3728
|
+
const originalData = cloneDeep(originList); // 原始数据
|
|
3729
|
+
const mergedColumns = originalData.map(item => {
|
|
3730
|
+
const match = columns.find(col => col.fieldUuid === item.fieldUuid);
|
|
3731
|
+
return match ? cloneDeep(match) : item; // 可选:是否需要深拷贝 match
|
|
3732
|
+
});
|
|
3690
3733
|
setColumns(columns);
|
|
3691
|
-
|
|
3734
|
+
setOriginList(mergedColumns);
|
|
3735
|
+
typeof onChange === 'function' && onChange(mergedColumns);
|
|
3692
3736
|
}
|
|
3693
3737
|
const onChangeFieldAlias = (val, i) => {
|
|
3694
3738
|
let fieldAlias = val || '';
|
|
@@ -3732,6 +3776,18 @@ const SelectColumn = ({
|
|
|
3732
3776
|
onSelect(newColumns);
|
|
3733
3777
|
},
|
|
3734
3778
|
children: AllSelectElement
|
|
3779
|
+
}), jsxs("div", {
|
|
3780
|
+
className: cx(`Sqb-SelectColumn-search m-2 rounded-lg`),
|
|
3781
|
+
children: [jsx("span", {
|
|
3782
|
+
className: 'px-2',
|
|
3783
|
+
children: jsx(SearchIcon, {})
|
|
3784
|
+
}), jsx("input", {
|
|
3785
|
+
type: 'text',
|
|
3786
|
+
autoFocus: true,
|
|
3787
|
+
className: 'p-1',
|
|
3788
|
+
placeholder: __('data.search'),
|
|
3789
|
+
onInput: onInput
|
|
3790
|
+
})]
|
|
3735
3791
|
}), Array.isArray(columns) && columns.map((v, i) => {
|
|
3736
3792
|
return jsxs("div", {
|
|
3737
3793
|
className: 'pb-2 px-2 flex items-center',
|
|
@@ -4805,7 +4861,7 @@ const SelectSummarize = ({
|
|
|
4805
4861
|
availableData = data.map(v => {
|
|
4806
4862
|
return {
|
|
4807
4863
|
...v,
|
|
4808
|
-
columns: v.columns.filter(o => o.database_type && NUMBER_GROUP.includes(o.database_type))
|
|
4864
|
+
columns: v.columns.filter(o => o.database_type && (NUMBER_GROUP.includes(o.database_type) || (condition === '最大值' || condition === '最小值') && DATE_GROUP.includes(o.database_type)))
|
|
4809
4865
|
};
|
|
4810
4866
|
}).filter(v => v.columns.length);
|
|
4811
4867
|
}
|
|
@@ -5488,6 +5544,7 @@ const TableData = props => {
|
|
|
5488
5544
|
} = props;
|
|
5489
5545
|
const store = useStore$1();
|
|
5490
5546
|
let selected = Boolean(meta.table.name);
|
|
5547
|
+
let subQuerySelected = Boolean(meta.subquery?.[0]?.table?.name);
|
|
5491
5548
|
function selectTable(e) {
|
|
5492
5549
|
!meta.readonly && store.setPopup({
|
|
5493
5550
|
visible: true,
|
|
@@ -5553,6 +5610,77 @@ const TableData = props => {
|
|
|
5553
5610
|
onCancel: () => {}
|
|
5554
5611
|
});
|
|
5555
5612
|
};
|
|
5613
|
+
// 子查询弹窗
|
|
5614
|
+
const showSubQuery = (val = []) => {
|
|
5615
|
+
const {
|
|
5616
|
+
subToolbar,
|
|
5617
|
+
toolbar,
|
|
5618
|
+
...other
|
|
5619
|
+
} = store.preProps;
|
|
5620
|
+
let newMetaList = store.metaList[groupIndex].list.slice()[0];
|
|
5621
|
+
let oldList = cloneDeep(newMetaList.subquery);
|
|
5622
|
+
let _toolbar = subToolbar || toolbar;
|
|
5623
|
+
_toolbar = _toolbar.filter(v => v !== 'group'); // 子查询不需要分组
|
|
5624
|
+
let zIndex = store.popupContainer.current ? getMaxZIndexInParents(store.popupContainer.current) : 0;
|
|
5625
|
+
let o = Modal2.openModal({
|
|
5626
|
+
title: __('SqlQueryBuilder.subquery'),
|
|
5627
|
+
transparentMask: true,
|
|
5628
|
+
zIndex: Number(zIndex),
|
|
5629
|
+
content: jsx(Fragment, {
|
|
5630
|
+
children: jsx(SqlVisionBuilder, {
|
|
5631
|
+
...other,
|
|
5632
|
+
showSubquery: store._showSubquery,
|
|
5633
|
+
toolbar: _toolbar,
|
|
5634
|
+
btnText: __('SqlQueryBuilder.confirm'),
|
|
5635
|
+
value: val,
|
|
5636
|
+
onOk: newList => {
|
|
5637
|
+
try {
|
|
5638
|
+
// 子查询未改变不做操作
|
|
5639
|
+
if (isEqual(newList, oldList)) {
|
|
5640
|
+
o.close();
|
|
5641
|
+
return;
|
|
5642
|
+
}
|
|
5643
|
+
newMetaList.subquery = newList;
|
|
5644
|
+
newMetaList.table = {
|
|
5645
|
+
...newList[0].table
|
|
5646
|
+
};
|
|
5647
|
+
const items = getSubColumns(newList);
|
|
5648
|
+
const newColumns = items.flatMap(item => item.columns);
|
|
5649
|
+
newMetaList.columns = newColumns;
|
|
5650
|
+
// (newMeta[index] as MetaJoin).expressions = [];
|
|
5651
|
+
store.setMeta([newMetaList], groupIndex);
|
|
5652
|
+
o.close();
|
|
5653
|
+
} catch (e) {
|
|
5654
|
+
console.warn(e);
|
|
5655
|
+
} finally {
|
|
5656
|
+
o.close();
|
|
5657
|
+
}
|
|
5658
|
+
}
|
|
5659
|
+
})
|
|
5660
|
+
}),
|
|
5661
|
+
onClose: () => {}
|
|
5662
|
+
});
|
|
5663
|
+
};
|
|
5664
|
+
// 切换子查询
|
|
5665
|
+
const switchSubQuery = () => {
|
|
5666
|
+
let newMetaList = store.metaList[groupIndex].list.slice()[0];
|
|
5667
|
+
newMetaList.isSubquery = !newMetaList.isSubquery;
|
|
5668
|
+
//重置表数据
|
|
5669
|
+
newMetaList.subquery = [];
|
|
5670
|
+
newMetaList.table = {
|
|
5671
|
+
name: '',
|
|
5672
|
+
// 表名
|
|
5673
|
+
tableUuid: '',
|
|
5674
|
+
id: '',
|
|
5675
|
+
// 表名
|
|
5676
|
+
alias: '',
|
|
5677
|
+
// 表别名
|
|
5678
|
+
datasourceName: '',
|
|
5679
|
+
// 数据源名
|
|
5680
|
+
datasourceId: '' // 数据源id
|
|
5681
|
+
};
|
|
5682
|
+
store.setMeta([newMetaList], groupIndex);
|
|
5683
|
+
};
|
|
5556
5684
|
return jsx(Wrapper, {
|
|
5557
5685
|
className: `Sqb-item`,
|
|
5558
5686
|
children: jsxs("div", {
|
|
@@ -5563,7 +5691,29 @@ const TableData = props => {
|
|
|
5563
5691
|
className: `Sqb-item--content`,
|
|
5564
5692
|
children: jsxs("div", {
|
|
5565
5693
|
className: `Sqb-NotebookCell`,
|
|
5566
|
-
children: [jsxs("div", {
|
|
5694
|
+
children: [meta.isSubquery ? jsxs("div", {
|
|
5695
|
+
className: cx(`Sqb-TableName`, {
|
|
5696
|
+
notSelected: !subQuerySelected
|
|
5697
|
+
}),
|
|
5698
|
+
onClick: () => {
|
|
5699
|
+
showSubQuery(meta.subquery);
|
|
5700
|
+
},
|
|
5701
|
+
children: [subQuerySelected && jsx(Tooltip, {
|
|
5702
|
+
title: __('SqlQueryBuilder.alias'),
|
|
5703
|
+
children: jsx(Button, {
|
|
5704
|
+
className: ':Sqb-TableName-as',
|
|
5705
|
+
shape: 'circle',
|
|
5706
|
+
iconOnly: true,
|
|
5707
|
+
primary: true,
|
|
5708
|
+
icon: 'As',
|
|
5709
|
+
size: 'small',
|
|
5710
|
+
onClick: e => {
|
|
5711
|
+
e.stopPropagation();
|
|
5712
|
+
onChangeTableAlias(meta.table?.alias || '');
|
|
5713
|
+
}
|
|
5714
|
+
})
|
|
5715
|
+
}), subQuerySelected ? `${(meta.subquery?.[0]).table.datasourceName}.${(meta.subquery?.[0]).table.name} ${meta.table?.alias ? `as ${meta.table?.alias}` : ''} ` : __('SqlQueryBuilder.setSubQuery')]
|
|
5716
|
+
}) : jsxs("div", {
|
|
5567
5717
|
className: cx(`Sqb-TableName`, {
|
|
5568
5718
|
notSelected: !selected
|
|
5569
5719
|
}),
|
|
@@ -5583,7 +5733,19 @@ const TableData = props => {
|
|
|
5583
5733
|
}
|
|
5584
5734
|
})
|
|
5585
5735
|
}), selected ? `${meta.table.datasourceName}.${meta.table.name} ${meta.table?.alias ? `as ${meta.table?.alias}` : ''}` : __('SqlQueryBuilder.pickTable')]
|
|
5586
|
-
}),
|
|
5736
|
+
}), store.showSubquery && jsx(Tooltip, {
|
|
5737
|
+
title: __('SqlQueryBuilder.switchSubQuery'),
|
|
5738
|
+
children: jsx(Button, {
|
|
5739
|
+
disabled: meta.readonly,
|
|
5740
|
+
primary: meta.isSubquery,
|
|
5741
|
+
ghost: true,
|
|
5742
|
+
className: cx('mr-2 operator-icon', {
|
|
5743
|
+
['subquery-icon']: !meta.isSubquery
|
|
5744
|
+
}),
|
|
5745
|
+
icon: jsx(RelatedWork, {}),
|
|
5746
|
+
onClick: switchSubQuery
|
|
5747
|
+
})
|
|
5748
|
+
}), selected && store.showFields && jsx("div", {
|
|
5587
5749
|
className: `Sqb-TableColumns`,
|
|
5588
5750
|
onClick: selectColumns,
|
|
5589
5751
|
children: __('SqlQueryBuilder.columns')
|
|
@@ -6269,7 +6431,7 @@ const JoinData = props => {
|
|
|
6269
6431
|
onChangeTableAlias(meta.table2?.alias || '');
|
|
6270
6432
|
}
|
|
6271
6433
|
})
|
|
6272
|
-
}), subQuerySelected ? `${meta.subquery?.[0].table.datasourceName}.${meta.subquery?.[0].table.name} ${meta.table2?.alias ? `as ${meta.table2?.alias}` : ''} ` : __('SqlQueryBuilder.setSubQuery')]
|
|
6434
|
+
}), subQuerySelected ? `${(meta.subquery?.[0]).table.datasourceName}.${(meta.subquery?.[0]).table.name} ${meta.table2?.alias ? `as ${meta.table2?.alias}` : ''} ` : __('SqlQueryBuilder.setSubQuery')]
|
|
6273
6435
|
}) : jsxs("div", {
|
|
6274
6436
|
className: cx(`Sqb-TableName`, {
|
|
6275
6437
|
notSelected: !table2Selected
|
|
@@ -6439,7 +6601,7 @@ const JoinData = props => {
|
|
|
6439
6601
|
right_fieldUuid: '',
|
|
6440
6602
|
right_quotes: '',
|
|
6441
6603
|
right_string: '',
|
|
6442
|
-
right_isString: false,
|
|
6604
|
+
// right_isString: false,
|
|
6443
6605
|
right_type: 'field',
|
|
6444
6606
|
right_constant: ''
|
|
6445
6607
|
});
|
|
@@ -6485,7 +6647,7 @@ const JoinData = props => {
|
|
|
6485
6647
|
right_fieldUuid: '',
|
|
6486
6648
|
right_quotes: '',
|
|
6487
6649
|
right_string: '',
|
|
6488
|
-
right_isString: false,
|
|
6650
|
+
// right_isString: false,
|
|
6489
6651
|
right_constant: '',
|
|
6490
6652
|
right_type: 'field'
|
|
6491
6653
|
}];
|
|
@@ -7574,7 +7736,7 @@ const Filter = props => {
|
|
|
7574
7736
|
}
|
|
7575
7737
|
const _tem = {
|
|
7576
7738
|
subquery: newList,
|
|
7577
|
-
quotes:
|
|
7739
|
+
quotes: buildSqlQuery(newList),
|
|
7578
7740
|
condition: '',
|
|
7579
7741
|
table: '',
|
|
7580
7742
|
tableId: '',
|
|
@@ -7760,7 +7922,7 @@ const Filter = props => {
|
|
|
7760
7922
|
if (typeof v === 'string') {
|
|
7761
7923
|
return v;
|
|
7762
7924
|
} else if (v.type === Filter_TypeEnum.NOT_EXISTS) {
|
|
7763
|
-
return
|
|
7925
|
+
return `${buildSqlQuery(v.subquery)}`;
|
|
7764
7926
|
} else {
|
|
7765
7927
|
return v.quotes;
|
|
7766
7928
|
}
|