@gingkoo/pandora-metabase 0.0.1-alpha.14 → 0.0.1-alpha.15

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,5 +1,5 @@
1
1
  /**
2
- * @gingkoo/pandora-metabase v0.0.1-alpha.14
2
+ * @gingkoo/pandora-metabase v0.0.1-alpha.15
3
3
  */
4
4
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
5
5
  import * as React from 'react';
@@ -7,7 +7,7 @@ import React__default, { forwardRef, useRef, useImperativeHandle, useEffect, use
7
7
  import { DatePicker, Menu, Dropdown, Button, Input, Tooltip, InputNumber, ConfigProvider } from 'antd';
8
8
  import zhCN from 'antd/locale/zh_CN';
9
9
  import cx from 'classnames';
10
- import { Toast } from '@gingkoo/pandora';
10
+ import { Input as Input$1, Tooltip as Tooltip$1, Button as Button$1, Toast } from '@gingkoo/pandora';
11
11
  import { configure, makeAutoObservable, runInAction, toJS } from 'mobx';
12
12
  import { DownOutlined, LoadingOutlined } from '@ant-design/icons';
13
13
  import Styled from 'styled-components';
@@ -17,6 +17,7 @@ import ReactDOMServer from 'react-dom/server';
17
17
  import { useLocalObservable, observer } from 'mobx-react';
18
18
  import _$3 from 'lodash';
19
19
  import moment from 'dayjs';
20
+ import { Repeat, FfPlus, FfLine } from '@gingkoo/pandora-icons';
20
21
 
21
22
  //获取指定名称的cookie值
22
23
  function getCookie(name) {
@@ -80,6 +81,10 @@ register('en', {
80
81
  'SqlQueryBuilder.maximumOf': 'maximumOf',
81
82
  'SqlQueryBuilder.customExpression': 'customExpression',
82
83
  'SqlQueryBuilder.pickTable': 'Select data table...',
84
+ 'SqlQueryBuilder.add': 'Add',
85
+ 'SqlQueryBuilder.del': 'Delete',
86
+ 'SqlQueryBuilder.switch': 'Switch input type',
87
+ 'SqlQueryBuilder.pleaseEnter': 'please enter',
83
88
  'SqlQueryBuilder.pickPermissionTable': 'Select permission table...',
84
89
  'SqlQueryBuilder.visualize': 'visualize',
85
90
  'SqlQueryBuilder.selectColumnAll': 'select all',
@@ -200,6 +205,10 @@ register('zh', {
200
205
  'SqlQueryBuilder.maximumOf': '最大值',
201
206
  'SqlQueryBuilder.customExpression': '自定义表达方式',
202
207
  'SqlQueryBuilder.pickTable': '选择数据表...',
208
+ 'SqlQueryBuilder.add': '添加',
209
+ 'SqlQueryBuilder.del': '删除',
210
+ 'SqlQueryBuilder.switch': '切换输入类型',
211
+ 'SqlQueryBuilder.pleaseEnter': '请输入',
203
212
  'SqlQueryBuilder.pickPermissionTable': '选择权限数据表...',
204
213
  'SqlQueryBuilder.visualize': '可视化',
205
214
  'SqlQueryBuilder.selectColumnAll': '全选',
@@ -336,7 +345,7 @@ const Loading = ({
336
345
  });
337
346
  };
338
347
 
339
- var css_248z$b = ".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-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.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 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::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-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: #509ee3;\n border: 1px solid #509ee3;\n}\n.Sqb > .Sqb-btn:hover {\n background-color: rgba(80, 158, 227, 0.8) !important;\n}\n";
348
+ var css_248z$b = ".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-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.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 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-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 button {\n font-size: 18px !important;\n border: none !important;\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: #509ee3;\n border: 1px solid #509ee3;\n}\n.Sqb > .Sqb-btn:hover {\n background-color: rgba(80, 158, 227, 0.8) !important;\n}\n";
340
349
  styleInject(css_248z$b);
341
350
 
342
351
  var SortEnum;
@@ -2323,7 +2332,8 @@ class SqlVisionStore {
2323
2332
  column: '',
2324
2333
  column_id: ''
2325
2334
  },
2326
- columns: []
2335
+ columns: [],
2336
+ expressions: []
2327
2337
  };
2328
2338
  }
2329
2339
  if (type === TypeEnum.customColumn) {
@@ -4767,6 +4777,11 @@ var FlagLocation;
4767
4777
  FlagLocation["TABLE_1"] = "table1";
4768
4778
  FlagLocation["TABLE_2"] = "table2";
4769
4779
  })(FlagLocation || (FlagLocation = {}));
4780
+ var ExpressionsEnum;
4781
+ (function (ExpressionsEnum) {
4782
+ ExpressionsEnum["LEFT"] = "left_column";
4783
+ ExpressionsEnum["RIGHT"] = "right_column";
4784
+ })(ExpressionsEnum || (ExpressionsEnum = {}));
4770
4785
  const JoinData = props => {
4771
4786
  const {
4772
4787
  meta
@@ -4998,6 +5013,7 @@ const JoinData = props => {
4998
5013
  newMeta[index][type].name = table;
4999
5014
  newMeta[index][type].datasourceId = datasourceId;
5000
5015
  newMeta[index][type].datasourceName = datasourceName;
5016
+ newMeta[index].expressions = [];
5001
5017
  if (alias === SummarizeAlias) {
5002
5018
  newMeta[index][type].groupSql = sql?.split(' AS ')?.[1] || '';
5003
5019
  }
@@ -5011,6 +5027,144 @@ const JoinData = props => {
5011
5027
  })
5012
5028
  });
5013
5029
  }
5030
+ function selectMoreJoinColumn(e) {
5031
+ let node = e.currentTarget;
5032
+ let type = node.getAttribute('v-data');
5033
+ let _ind = Number(node.getAttribute('v-index'));
5034
+ let index = findIndex(store.metaList, meta);
5035
+ let table_type = type === ExpressionsEnum.LEFT ? FlagLocation.TABLE_1 : FlagLocation.TABLE_2;
5036
+ let value = {
5037
+ name: meta.expressions[_ind][type],
5038
+ table: meta[table_type].name,
5039
+ alias: meta[table_type].alias,
5040
+ database_type: ''
5041
+ };
5042
+ let data = [];
5043
+ let {
5044
+ ExistAboveGroupBy,
5045
+ prevList,
5046
+ prevGroupBy
5047
+ } = getHelper(store.metaList, meta);
5048
+ if (type === ExpressionsEnum.LEFT) {
5049
+ if (ExistAboveGroupBy) {
5050
+ let _data = {
5051
+ table: prevGroupBy.alias,
5052
+ alias: prevGroupBy.alias,
5053
+ datasourceId: '',
5054
+ datasourceName: '',
5055
+ columns: []
5056
+ };
5057
+ if (prevGroupBy?.group?.length) {
5058
+ _data.columns = _data.columns.concat(prevGroupBy.group.map(v => {
5059
+ return {
5060
+ ...v,
5061
+ name: v.quotes,
5062
+ database_type: v?.database_type || SQL_COLUMN_TYPE.FLOAT,
5063
+ special_type: '',
5064
+ sql: v.sql,
5065
+ select: true
5066
+ };
5067
+ }));
5068
+ }
5069
+ if (prevGroupBy?.by?.length) {
5070
+ _data.columns = _data.columns.concat(prevGroupBy.by.map(v => {
5071
+ return {
5072
+ ...v,
5073
+ name: v.quotes,
5074
+ database_type: v?.database_type || SQL_COLUMN_TYPE.FLOAT,
5075
+ special_type: '',
5076
+ sql: v.sql,
5077
+ select: true
5078
+ };
5079
+ }));
5080
+ }
5081
+ data = [_data];
5082
+ let joinData = prevList.filter(v => v.type === TypeEnum.joinData).filter(v => v && v.table2.name);
5083
+ if (joinData.length) {
5084
+ data = data.concat(joinData.map(v => {
5085
+ return {
5086
+ alias: v.table2.alias,
5087
+ table: v.table2.name,
5088
+ datasourceId: v.table2.datasourceId,
5089
+ datasourceName: v.table2.datasourceName,
5090
+ columns: v.columns
5091
+ };
5092
+ }));
5093
+ }
5094
+ } else {
5095
+ data = store.metaList.slice(0, index).reduce((mo, v) => {
5096
+ if (v.type === TypeEnum.data) {
5097
+ mo.push({
5098
+ alias: v.table.alias,
5099
+ table: v.table.name,
5100
+ columns: v.columns,
5101
+ datasourceId: v.table.datasourceId,
5102
+ datasourceName: v.table.datasourceName
5103
+ });
5104
+ } else if (v.type === TypeEnum.joinData) {
5105
+ mo.push({
5106
+ alias: v.table2.alias,
5107
+ table: v.table2.name,
5108
+ columns: v.columns,
5109
+ datasourceId: v.table2.datasourceId,
5110
+ datasourceName: v.table2.datasourceName
5111
+ });
5112
+ }
5113
+ return mo;
5114
+ }, []);
5115
+ }
5116
+ // 过滤为table1选中的表
5117
+ let newMeta = store.metaList.slice();
5118
+ data = data.filter(v => {
5119
+ return newMeta[index][FlagLocation.TABLE_1].name == v.table;
5120
+ });
5121
+ } else {
5122
+ data = [{
5123
+ alias: meta.table2.alias,
5124
+ table: meta.table2.name,
5125
+ datasourceId: meta.table2.datasourceId,
5126
+ datasourceName: meta.table2.datasourceName,
5127
+ columns: meta.columns
5128
+ }];
5129
+ }
5130
+ !meta.readonly && store.setPopup({
5131
+ visible: true,
5132
+ node,
5133
+ content: jsx(SelectJoinColumn$1, {
5134
+ data: data,
5135
+ value: value,
5136
+ theme: ColumnsPopupThemeEnum.skyBlue,
5137
+ onSelect: record => {
5138
+ let {
5139
+ table,
5140
+ alias,
5141
+ name,
5142
+ sql,
5143
+ datasourceId,
5144
+ datasourceName,
5145
+ id = ''
5146
+ } = record;
5147
+ let newMeta = store.metaList.slice();
5148
+ newMeta[index].expressions[_ind][type] = name;
5149
+ newMeta[index].expressions[_ind][`${type}_id`] = id;
5150
+ store.setMeta(newMeta);
5151
+ store.setPopup({
5152
+ visible: false
5153
+ });
5154
+ }
5155
+ })
5156
+ });
5157
+ }
5158
+ function onIsString(type, _ind) {
5159
+ let index = findIndex(store.metaList, meta);
5160
+ let newMeta = store.metaList.slice();
5161
+ newMeta[index].expressions[_ind][type] = !newMeta[index].expressions[_ind][type];
5162
+ }
5163
+ function onChangeString(type, _ind, val) {
5164
+ let index = findIndex(store.metaList, meta);
5165
+ let newMeta = store.metaList.slice();
5166
+ newMeta[index].expressions[_ind][type] = val;
5167
+ }
5014
5168
  return jsx(Wrapper, {
5015
5169
  className: cx(`Sqb-item`),
5016
5170
  children: jsxs("div", {
@@ -5073,6 +5227,145 @@ const JoinData = props => {
5073
5227
  onClick: selectJoinColumn,
5074
5228
  children: meta.table2.column ? meta.table2.column : __('SqlQueryBuilder.pickTable')
5075
5229
  })]
5230
+ }), meta.table1.column_id && meta.table2.column_id && meta.expressions?.map((v, i) => {
5231
+ return jsxs("div", {
5232
+ className: cx(`Sqb-where block`),
5233
+ children: [jsx("span", {
5234
+ className: 'ml-2 mr-4 text-gray-500',
5235
+ children: v.operator
5236
+ }), v.left_isString ? jsx(Input$1, {
5237
+ disabled: meta.readonly,
5238
+ className: ':Sqb-TableName-input',
5239
+ value: v.left_string,
5240
+ placeholder: __('SqlQueryBuilder.pleaseEnter'),
5241
+ style: {
5242
+ width: '180px'
5243
+ },
5244
+ size: 'large',
5245
+ onChange: val => {
5246
+ onChangeString('left_string', i, val);
5247
+ }
5248
+ }) : jsx("div", {
5249
+ className: cx(`Sqb-TableName`, {
5250
+ notSelected: !v.left_column
5251
+ }),
5252
+ "v-data": ExpressionsEnum.LEFT,
5253
+ "v-index": i,
5254
+ onClick: selectMoreJoinColumn,
5255
+ children: v.left_column ? v.left_column : __('SqlQueryBuilder.pickTable')
5256
+ }), jsx(Tooltip$1, {
5257
+ title: __('SqlQueryBuilder.switch'),
5258
+ children: jsx(Button$1, {
5259
+ disabled: meta.readonly,
5260
+ primary: true,
5261
+ ghost: true,
5262
+ className: 'mr-2 operator-icon',
5263
+ icon: jsx(Repeat, {}),
5264
+ onClick: () => {
5265
+ onIsString('left_isString', i);
5266
+ }
5267
+ })
5268
+ }), jsx("span", {
5269
+ className: 'mr-2 text-gray-500',
5270
+ children: "="
5271
+ }), v.right_isString ? jsx(Input$1, {
5272
+ disabled: meta.readonly,
5273
+ className: ':Sqb-TableName-input',
5274
+ value: v.right_string,
5275
+ placeholder: __('SqlQueryBuilder.pleaseEnter'),
5276
+ style: {
5277
+ width: '180px'
5278
+ },
5279
+ size: 'large',
5280
+ onChange: val => {
5281
+ onChangeString('right_string', i, val);
5282
+ }
5283
+ }) : jsx("div", {
5284
+ className: cx(`Sqb-TableName`, {
5285
+ notSelected: !v.right_column
5286
+ }),
5287
+ "v-data": ExpressionsEnum.RIGHT,
5288
+ "v-index": i,
5289
+ onClick: selectMoreJoinColumn,
5290
+ children: v.right_column ? v.right_column : __('SqlQueryBuilder.pickTable')
5291
+ }), jsx(Tooltip$1, {
5292
+ title: __('SqlQueryBuilder.switch'),
5293
+ children: jsx(Button$1, {
5294
+ disabled: meta.readonly,
5295
+ primary: true,
5296
+ ghost: true,
5297
+ className: 'mr-2 operator-icon',
5298
+ icon: jsx(Repeat, {}),
5299
+ onClick: () => {
5300
+ onIsString('right_isString', i);
5301
+ }
5302
+ })
5303
+ }), jsx(Tooltip$1, {
5304
+ title: __('SqlQueryBuilder.add'),
5305
+ children: jsx(Button$1, {
5306
+ disabled: meta.readonly,
5307
+ primary: true,
5308
+ ghost: true,
5309
+ className: 'mr-2 operator-icon',
5310
+ icon: jsx(FfPlus, {}),
5311
+ onClick: () => {
5312
+ let index = findIndex(store.metaList, meta);
5313
+ let newMeta = store.metaList.slice();
5314
+ newMeta[index].expressions.splice(i + 1, 0, {
5315
+ operator: 'and',
5316
+ left_column: '',
5317
+ left_column_id: '',
5318
+ left_string: '',
5319
+ left_isString: false,
5320
+ right_column: '',
5321
+ right_column_id: '',
5322
+ right_string: '',
5323
+ right_isString: false
5324
+ });
5325
+ store.setMeta(newMeta);
5326
+ }
5327
+ })
5328
+ }), meta.expressions.length > 0 && jsx(Tooltip$1, {
5329
+ title: __('SqlQueryBuilder.del'),
5330
+ children: jsx(Button$1, {
5331
+ disabled: meta.readonly,
5332
+ danger: true,
5333
+ className: 'mr-2 operator-icon',
5334
+ icon: jsx(FfLine, {}),
5335
+ onClick: () => {
5336
+ let index = findIndex(store.metaList, meta);
5337
+ let newMeta = store.metaList.slice();
5338
+ newMeta[index].expressions.splice(i, 1);
5339
+ store.setMeta(newMeta);
5340
+ }
5341
+ })
5342
+ })]
5343
+ }, i);
5344
+ }), meta.table1.column_id && meta.table2.column_id && meta.expressions.length < 1 && jsx(Tooltip$1, {
5345
+ title: __('SqlQueryBuilder.add'),
5346
+ children: jsx(Button$1, {
5347
+ disabled: meta.readonly,
5348
+ primary: true,
5349
+ ghost: true,
5350
+ className: 'mr-2 operator-icon',
5351
+ icon: jsx(FfPlus, {}),
5352
+ onClick: () => {
5353
+ let index = findIndex(store.metaList, meta);
5354
+ let newMeta = store.metaList.slice();
5355
+ newMeta[index].expressions = [{
5356
+ operator: 'and',
5357
+ left_column: '',
5358
+ left_column_id: '',
5359
+ left_string: '',
5360
+ left_isString: false,
5361
+ right_column: '',
5362
+ right_column_id: '',
5363
+ right_string: '',
5364
+ right_isString: false
5365
+ }];
5366
+ store.setMeta(newMeta);
5367
+ }
5368
+ })
5076
5369
  }), columnsSelected && store.showFields && jsx("div", {
5077
5370
  className: `Sqb-TableColumns`,
5078
5371
  onClick: selectColumns,