@gingkoo/pandora-metabase 1.0.118 → 1.0.120
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/cjs/common/Portal/index.js +0 -2
- package/lib/cjs/common/SplitView/index.d.ts +0 -4
- package/lib/cjs/common/SplitView/index.js +0 -10
- package/lib/cjs/components/dialog/custom-column/config.js +4 -48
- package/lib/cjs/components/dialog/custom-column/expression-editor.js +3 -14
- package/lib/cjs/components/dialog/custom-column/expressions/suggest.d.ts +2 -34
- package/lib/cjs/components/dialog/custom-column/expressions/suggest.js +2 -43
- package/lib/cjs/components/dialog/custom-column/expressions/tokenizer.js +8 -65
- package/lib/cjs/components/dialog/custom-column/index.js +2 -4
- package/lib/cjs/components/dialog/custom-column/tokenized-expression.js +2 -3
- package/lib/cjs/components/dialog/custom-column/tokenizedI-input.js +1 -1
- package/lib/cjs/components/dialog/custom-editor/index.js +2 -7
- package/lib/cjs/components/dialog/diff-viewer/index copy.js +1 -16
- package/lib/cjs/components/dialog/expression/date-format-picker.js +2 -20
- package/lib/cjs/components/dialog/expression/date-format.js +2 -8
- package/lib/cjs/components/dialog/expression/index.d.ts +0 -3
- package/lib/cjs/components/dialog/expression/index.js +2 -83
- package/lib/cjs/components/dialog/formula/index.js +6 -31
- package/lib/cjs/components/dialog/formula/utils.js +2 -10
- package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.d.ts +19 -0
- package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.js +109 -0
- package/lib/cjs/components/dialog/formula-list/LogicGroup.d.ts +9 -0
- package/lib/cjs/components/dialog/formula-list/LogicGroup.js +43 -0
- package/lib/cjs/components/dialog/formula-list/index.d.ts +3 -0
- package/lib/cjs/components/dialog/formula-list/index.js +970 -504
- package/lib/cjs/components/dialog/formula-list/index.less +724 -0
- package/lib/cjs/components/dialog/formula-list/utils.d.ts +0 -7
- package/lib/cjs/components/dialog/formula-list/utils.js +117 -113
- package/lib/cjs/components/dialog/select-column/index.d.ts +0 -6
- package/lib/cjs/components/dialog/select-column/index.js +4 -15
- package/lib/cjs/components/dialog/select-column-multiple/index.d.ts +0 -8
- package/lib/cjs/components/dialog/select-column-multiple/index.js +6 -45
- package/lib/cjs/components/dialog/select-join/index.d.ts +0 -5
- package/lib/cjs/components/dialog/select-join/index.js +0 -6
- package/lib/cjs/components/dialog/select-join-column/index.d.ts +0 -8
- package/lib/cjs/components/dialog/select-join-column/index.js +7 -21
- package/lib/cjs/components/dialog/select-join-column-multiple/index.d.ts +0 -8
- package/lib/cjs/components/dialog/select-join-column-multiple/index.js +5 -35
- package/lib/cjs/components/dialog/select-permission-table/index.d.ts +0 -5
- package/lib/cjs/components/dialog/select-permission-table/index.js +0 -6
- package/lib/cjs/components/dialog/select-summarize/index.d.ts +7 -4
- package/lib/cjs/components/dialog/select-summarize/index.js +105 -18
- package/lib/cjs/components/dialog/select-summarize/index.less +23 -0
- package/lib/cjs/components/dialog/select-table/index.d.ts +0 -6
- package/lib/cjs/components/dialog/select-table/index.js +1 -9
- package/lib/cjs/components/metabase/index.js +72 -86
- package/lib/cjs/components/metabase/index.less +7 -7
- package/lib/cjs/components/modules/components/Wrapper.js +1 -1
- package/lib/cjs/components/modules/components/header.js +2 -2
- package/lib/cjs/components/modules/components/meta-icon.d.ts +0 -3
- package/lib/cjs/components/modules/components/meta-icon.js +2 -47
- package/lib/cjs/components/modules/custom-column.js +3 -29
- package/lib/cjs/components/modules/enum/filter-enum.js +9 -88
- package/lib/cjs/components/modules/filter.js +2 -20
- package/lib/cjs/components/modules/index.d.ts +4 -2
- package/lib/cjs/components/modules/index.js +24 -1
- package/lib/cjs/components/modules/join-data.js +13 -291
- package/lib/cjs/components/modules/row-limit.js +0 -1
- package/lib/cjs/components/modules/sort.js +1 -61
- package/lib/cjs/components/modules/summarize/group-by.d.ts +0 -5
- package/lib/cjs/components/modules/summarize/group-by.js +251 -89
- package/lib/cjs/components/modules/summarize/select-index.js +116 -59
- package/lib/cjs/components/modules/table-data.js +11 -64
- package/lib/cjs/components/popup.js +26 -32
- package/lib/cjs/hooks/patch.d.ts +1 -0
- package/lib/cjs/hooks/patch.js +104 -6
- package/lib/cjs/hooks/patch2.js +3 -165
- package/lib/cjs/hooks/use-provider.js +0 -3
- package/lib/cjs/hooks/use-state.js +55 -135
- package/lib/cjs/index.js +0 -15
- package/lib/cjs/locale/en.js +5 -0
- package/lib/cjs/locale/index.js +1 -4
- package/lib/cjs/locale/zh.js +5 -0
- package/lib/cjs/sql-formula.js +0 -1
- package/lib/cjs/store/enum.d.ts +6 -6
- package/lib/cjs/store/enum.js +0 -13
- package/lib/cjs/store/helper.d.ts +2 -1
- package/lib/cjs/store/helper.js +15 -225
- package/lib/cjs/store/types.d.ts +45 -67
- package/lib/cjs/store/types.js +3 -49
- package/lib/cjs/types.d.ts +1 -0
- package/lib/cjs/utils/cookies.js +0 -3
- package/lib/cjs/utils/event.js +1 -1
- package/lib/cjs/utils/helper-dom.d.ts +1 -0
- package/lib/cjs/utils/helper-dom.js +17 -10
- package/lib/cjs/utils/helper.js +1 -24
- package/lib/cjs/utils/keydown.js +4 -7
- package/lib/cjs/utils/platform.d.ts +0 -9
- package/lib/cjs/utils/platform.js +0 -10
- package/lib/cjs/utils/selection.js +0 -6
- package/lib/cjs/utils/storage.d.ts +0 -9
- package/lib/cjs/utils/storage.js +1 -11
- package/lib/cjs/utils/transformSql.d.ts +5 -0
- package/lib/cjs/utils/transformSql.js +40 -101
- package/lib/cjs/utils.d.ts +1 -6
- package/lib/cjs/utils.js +126 -255
- package/lib/es/common/Portal/index.js +0 -2
- package/lib/es/common/SplitView/index.d.ts +0 -4
- package/lib/es/common/SplitView/index.js +0 -10
- package/lib/es/components/dialog/custom-column/config.js +4 -48
- package/lib/es/components/dialog/custom-column/expression-editor.js +3 -14
- package/lib/es/components/dialog/custom-column/expressions/suggest.d.ts +2 -34
- package/lib/es/components/dialog/custom-column/expressions/suggest.js +2 -43
- package/lib/es/components/dialog/custom-column/expressions/tokenizer.js +8 -65
- package/lib/es/components/dialog/custom-column/index.js +2 -4
- package/lib/es/components/dialog/custom-column/tokenized-expression.js +1 -3
- package/lib/es/components/dialog/custom-column/tokenizedI-input.js +1 -1
- package/lib/es/components/dialog/custom-editor/index.js +1 -7
- package/lib/es/components/dialog/diff-viewer/index copy.js +1 -15
- package/lib/es/components/dialog/expression/date-format-picker.js +2 -20
- package/lib/es/components/dialog/expression/date-format.js +2 -8
- package/lib/es/components/dialog/expression/index.d.ts +0 -3
- package/lib/es/components/dialog/expression/index.js +2 -82
- package/lib/es/components/dialog/formula/index.js +5 -31
- package/lib/es/components/dialog/formula/utils.js +2 -10
- package/lib/es/components/dialog/formula-list/CaseWhenGroup.d.ts +19 -0
- package/lib/es/components/dialog/formula-list/CaseWhenGroup.js +102 -0
- package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +9 -0
- package/lib/es/components/dialog/formula-list/LogicGroup.js +36 -0
- package/lib/es/components/dialog/formula-list/index.d.ts +3 -0
- package/lib/es/components/dialog/formula-list/index.js +969 -504
- package/lib/es/components/dialog/formula-list/index.less +724 -0
- package/lib/es/components/dialog/formula-list/utils.d.ts +0 -7
- package/lib/es/components/dialog/formula-list/utils.js +117 -113
- package/lib/es/components/dialog/index.js +3 -3
- package/lib/es/components/dialog/select-column/index.d.ts +0 -6
- package/lib/es/components/dialog/select-column/index.js +4 -14
- package/lib/es/components/dialog/select-column-multiple/index.d.ts +0 -8
- package/lib/es/components/dialog/select-column-multiple/index.js +7 -47
- package/lib/es/components/dialog/select-join/index.d.ts +0 -5
- package/lib/es/components/dialog/select-join/index.js +0 -5
- package/lib/es/components/dialog/select-join-column/index.d.ts +0 -8
- package/lib/es/components/dialog/select-join-column/index.js +7 -20
- package/lib/es/components/dialog/select-join-column-multiple/index.d.ts +0 -8
- package/lib/es/components/dialog/select-join-column-multiple/index.js +5 -34
- package/lib/es/components/dialog/select-permission-table/index.d.ts +0 -5
- package/lib/es/components/dialog/select-permission-table/index.js +0 -5
- package/lib/es/components/dialog/select-summarize/index.d.ts +7 -4
- package/lib/es/components/dialog/select-summarize/index.js +106 -18
- package/lib/es/components/dialog/select-summarize/index.less +23 -0
- package/lib/es/components/dialog/select-table/index.d.ts +0 -6
- package/lib/es/components/dialog/select-table/index.js +1 -8
- package/lib/es/components/metabase/index.js +72 -87
- package/lib/es/components/metabase/index.less +7 -7
- package/lib/es/components/modules/components/Wrapper.js +1 -1
- package/lib/es/components/modules/components/header.js +2 -2
- package/lib/es/components/modules/components/meta-icon.d.ts +0 -3
- package/lib/es/components/modules/components/meta-icon.js +2 -46
- package/lib/es/components/modules/custom-column.js +3 -29
- package/lib/es/components/modules/enum/filter-enum.js +9 -88
- package/lib/es/components/modules/filter.js +2 -19
- package/lib/es/components/modules/index.d.ts +4 -2
- package/lib/es/components/modules/index.js +24 -1
- package/lib/es/components/modules/join-data.js +13 -291
- package/lib/es/components/modules/row-limit.js +0 -1
- package/lib/es/components/modules/sort.js +1 -61
- package/lib/es/components/modules/summarize/group-by.d.ts +0 -5
- package/lib/es/components/modules/summarize/group-by.js +253 -91
- package/lib/es/components/modules/summarize/select-index.js +116 -59
- package/lib/es/components/modules/table-data.js +11 -64
- package/lib/es/components/popup.js +27 -33
- package/lib/es/hooks/patch.d.ts +1 -0
- package/lib/es/hooks/patch.js +103 -5
- package/lib/es/hooks/patch2.js +2 -164
- package/lib/es/hooks/use-provider.js +0 -3
- package/lib/es/hooks/use-state.js +55 -135
- package/lib/es/index.js +0 -14
- package/lib/es/locale/en.js +5 -0
- package/lib/es/locale/index.js +1 -4
- package/lib/es/locale/zh.js +5 -0
- package/lib/es/sql-formula.js +0 -1
- package/lib/es/store/enum.d.ts +6 -6
- package/lib/es/store/enum.js +0 -13
- package/lib/es/store/helper.d.ts +2 -1
- package/lib/es/store/helper.js +13 -224
- package/lib/es/store/types.d.ts +45 -67
- package/lib/es/store/types.js +3 -49
- package/lib/es/types.d.ts +1 -0
- package/lib/es/types.js +1 -18
- package/lib/es/utils/cookies.js +0 -3
- package/lib/es/utils/event.js +1 -1
- package/lib/es/utils/helper-dom.d.ts +1 -0
- package/lib/es/utils/helper-dom.js +16 -9
- package/lib/es/utils/helper.js +1 -24
- package/lib/es/utils/keydown.js +4 -7
- package/lib/es/utils/platform.d.ts +0 -9
- package/lib/es/utils/platform.js +0 -10
- package/lib/es/utils/selection.js +0 -6
- package/lib/es/utils/storage.d.ts +0 -9
- package/lib/es/utils/storage.js +1 -10
- package/lib/es/utils/transformSql.d.ts +5 -0
- package/lib/es/utils/transformSql.js +40 -100
- package/lib/es/utils.d.ts +1 -6
- package/lib/es/utils.js +127 -255
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
3
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
4
4
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
5
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
5
6
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
6
7
|
var _excluded = ["notExistsToolbar", "toolbar"],
|
|
7
8
|
_excluded2 = ["subToolbar", "notExistsColumns", "showFields", "isExit", "toolbar"];
|
|
@@ -11,7 +12,6 @@ import React, { useEffect, useState, useMemo, useRef, forwardRef } from 'react';
|
|
|
11
12
|
import './index.less';
|
|
12
13
|
import { FieldString, FieldNumber, FfPlus } from '@gingkoo/pandora-icons';
|
|
13
14
|
import cx from 'classnames';
|
|
14
|
-
// import './index.less';
|
|
15
15
|
import Metabase from '../../../index';
|
|
16
16
|
import { __ } from '../../../locale';
|
|
17
17
|
import isEqual from 'lodash/isEqual';
|
|
@@ -31,22 +31,25 @@ import { useStore, Provider } from '../../../hooks/use-provider';
|
|
|
31
31
|
import ItemName from '../../modules/components/item-name';
|
|
32
32
|
import DiffViewer from '../diff-viewer';
|
|
33
33
|
import storage from '../../../utils/storage';
|
|
34
|
+
import { getTopLayerZIndex } from '../../../utils/helper-dom';
|
|
35
|
+
import CaseWhenGroup from './CaseWhenGroup';
|
|
36
|
+
import LogicGroup from './LogicGroup';
|
|
37
|
+
var CASE_FIXED_OPERATORS = ['case', 'when', 'then', 'else', 'end'];
|
|
38
|
+
var LOGIC_FIXED_OPERATORS = ['(', ')'];
|
|
39
|
+
var LOGIC_REQUIRED_OPERATORS = ['(', ')'];
|
|
34
40
|
var FormulaList = forwardRef(function (props, ref) {
|
|
35
|
-
var _storage$_metabaseCop
|
|
36
|
-
// 响应 storage._metabaseCopyItems 变化,保证粘贴按钮能实时显示
|
|
41
|
+
var _storage$_metabaseCop;
|
|
37
42
|
var _useState = useState((storage === null || storage === void 0 || (_storage$_metabaseCop = storage._metabaseCopyItems) === null || _storage$_metabaseCop === void 0 ? void 0 : _storage$_metabaseCop.length) || 0),
|
|
38
43
|
_useState2 = _slicedToArray(_useState, 2),
|
|
39
44
|
checkedItemsCount = _useState2[0],
|
|
40
45
|
setCheckedItemsCount = _useState2[1];
|
|
41
46
|
useEffect(function () {
|
|
42
47
|
var _storage$_metabaseCop3;
|
|
43
|
-
// 监听 _metabaseCopyItems 变化(自定义事件)
|
|
44
48
|
var handler = function handler() {
|
|
45
49
|
var _storage$_metabaseCop2;
|
|
46
50
|
setCheckedItemsCount((storage === null || storage === void 0 || (_storage$_metabaseCop2 = storage._metabaseCopyItems) === null || _storage$_metabaseCop2 === void 0 ? void 0 : _storage$_metabaseCop2.length) || 0);
|
|
47
51
|
};
|
|
48
52
|
window.addEventListener('sqb-checked-items-changed', handler);
|
|
49
|
-
// 初始化
|
|
50
53
|
setCheckedItemsCount((storage === null || storage === void 0 || (_storage$_metabaseCop3 = storage._metabaseCopyItems) === null || _storage$_metabaseCop3 === void 0 ? void 0 : _storage$_metabaseCop3.length) || 0);
|
|
51
54
|
return function () {
|
|
52
55
|
window.removeEventListener('sqb-checked-items-changed', handler);
|
|
@@ -68,7 +71,96 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
68
71
|
showPreview = _props$showPreview === void 0 ? true : _props$showPreview,
|
|
69
72
|
check = props.check,
|
|
70
73
|
_props$_type = props._type,
|
|
71
|
-
_type = _props$_type === void 0 ? 'filter' : _props$_type
|
|
74
|
+
_type = _props$_type === void 0 ? 'filter' : _props$_type,
|
|
75
|
+
_props$embedded = props.embedded,
|
|
76
|
+
embedded = _props$embedded === void 0 ? false : _props$embedded,
|
|
77
|
+
_props$enableCopy = props.enableCopy,
|
|
78
|
+
enableCopy = _props$enableCopy === void 0 ? true : _props$enableCopy,
|
|
79
|
+
parentPopupChannel = props.parentPopupChannel;
|
|
80
|
+
var parentPopupLockCountRef = useRef(0);
|
|
81
|
+
var parentPopupUnlockTimerRef = useRef(null);
|
|
82
|
+
var setParentClosable = function setParentClosable(closable) {
|
|
83
|
+
if (!parentPopupChannel) return;
|
|
84
|
+
if (parentPopupChannel === 'secondary') {
|
|
85
|
+
store.setClosable2(closable);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
store.setClosable(closable);
|
|
89
|
+
};
|
|
90
|
+
var lockParentPopup = function lockParentPopup() {
|
|
91
|
+
if (!parentPopupChannel) return;
|
|
92
|
+
if (parentPopupUnlockTimerRef.current) {
|
|
93
|
+
window.clearTimeout(parentPopupUnlockTimerRef.current);
|
|
94
|
+
parentPopupUnlockTimerRef.current = null;
|
|
95
|
+
}
|
|
96
|
+
parentPopupLockCountRef.current += 1;
|
|
97
|
+
if (parentPopupLockCountRef.current === 1) {
|
|
98
|
+
setParentClosable(false);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
var unlockParentPopup = function unlockParentPopup() {
|
|
102
|
+
var delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
103
|
+
if (!parentPopupChannel) return;
|
|
104
|
+
var runUnlock = function runUnlock() {
|
|
105
|
+
parentPopupUnlockTimerRef.current = null;
|
|
106
|
+
parentPopupLockCountRef.current = Math.max(0, parentPopupLockCountRef.current - 1);
|
|
107
|
+
if (parentPopupLockCountRef.current === 0) {
|
|
108
|
+
setParentClosable(true);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
if (delay > 0) {
|
|
112
|
+
if (parentPopupUnlockTimerRef.current) {
|
|
113
|
+
window.clearTimeout(parentPopupUnlockTimerRef.current);
|
|
114
|
+
}
|
|
115
|
+
parentPopupUnlockTimerRef.current = window.setTimeout(runUnlock, delay);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
runUnlock();
|
|
119
|
+
};
|
|
120
|
+
var openChildModal = function openChildModal(options) {
|
|
121
|
+
var _options$zIndex, _modalInstance;
|
|
122
|
+
var lockDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 120;
|
|
123
|
+
if (parentPopupChannel) {
|
|
124
|
+
lockParentPopup();
|
|
125
|
+
}
|
|
126
|
+
var modalZIndex = (_options$zIndex = options.zIndex) !== null && _options$zIndex !== void 0 ? _options$zIndex : getTopLayerZIndex() + 1;
|
|
127
|
+
var closed = false;
|
|
128
|
+
var modalInstance;
|
|
129
|
+
var releaseParentPopup = function releaseParentPopup() {
|
|
130
|
+
if (!parentPopupChannel || closed) return;
|
|
131
|
+
closed = true;
|
|
132
|
+
unlockParentPopup(lockDelay);
|
|
133
|
+
};
|
|
134
|
+
modalInstance = Modal2.openModal(_objectSpread(_objectSpread({
|
|
135
|
+
zIndex: modalZIndex
|
|
136
|
+
}, options), {}, {
|
|
137
|
+
onClose: function onClose() {
|
|
138
|
+
var _options$onClose;
|
|
139
|
+
releaseParentPopup();
|
|
140
|
+
(_options$onClose = options.onClose) === null || _options$onClose === void 0 || _options$onClose.call(options);
|
|
141
|
+
}
|
|
142
|
+
}));
|
|
143
|
+
var originalClose = (_modalInstance = modalInstance) === null || _modalInstance === void 0 || (_modalInstance = _modalInstance.close) === null || _modalInstance === void 0 ? void 0 : _modalInstance.bind(modalInstance);
|
|
144
|
+
if (originalClose) {
|
|
145
|
+
modalInstance.close = function () {
|
|
146
|
+
releaseParentPopup();
|
|
147
|
+
return originalClose.apply(void 0, arguments);
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
return modalInstance;
|
|
151
|
+
};
|
|
152
|
+
useEffect(function () {
|
|
153
|
+
return function () {
|
|
154
|
+
if (parentPopupUnlockTimerRef.current) {
|
|
155
|
+
window.clearTimeout(parentPopupUnlockTimerRef.current);
|
|
156
|
+
parentPopupUnlockTimerRef.current = null;
|
|
157
|
+
}
|
|
158
|
+
if (parentPopupLockCountRef.current > 0) {
|
|
159
|
+
parentPopupLockCountRef.current = 0;
|
|
160
|
+
setParentClosable(true);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}, [parentPopupChannel]);
|
|
72
164
|
var mergedTypes = useMemo(function () {
|
|
73
165
|
var map = new Map();
|
|
74
166
|
[].concat(_toConsumableArray(_customTypes), _toConsumableArray(otherTypes)).forEach(function (item) {
|
|
@@ -90,14 +182,12 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
90
182
|
return map;
|
|
91
183
|
}, [otherTypes]);
|
|
92
184
|
var caseList = value || [];
|
|
93
|
-
// const [caseList, setCaseListState] = useState<AtomsItem[]>(cloneDeep(value));
|
|
94
185
|
var caseListRef = useRef(caseList);
|
|
95
186
|
var operatorList = useMemo(function () {
|
|
96
187
|
if (store.operatorList.length > 0) {
|
|
97
188
|
return store.operatorList;
|
|
98
|
-
} else {
|
|
99
|
-
return __operatorList;
|
|
100
189
|
}
|
|
190
|
+
return __operatorList;
|
|
101
191
|
}, [store.operatorList]);
|
|
102
192
|
var _useState3 = useState(''),
|
|
103
193
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
@@ -108,6 +198,9 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
108
198
|
previewMode = _useState6[0],
|
|
109
199
|
setPreviewMode = _useState6[1];
|
|
110
200
|
var _useState7 = useState(function () {
|
|
201
|
+
if (!enableCopy) {
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
111
204
|
if (store.copyType.includes(FormulaTypeEnum.ALL)) {
|
|
112
205
|
return true;
|
|
113
206
|
}
|
|
@@ -116,33 +209,221 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
116
209
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
117
210
|
isCopy = _useState8[0],
|
|
118
211
|
setIsCopy = _useState8[1];
|
|
119
|
-
// const [formulaList, setFunctionList] = useState<{ [params: string]: FormulaTemplatesItem }>(
|
|
120
|
-
// );
|
|
121
212
|
var formulaList = useMemo(function () {
|
|
122
213
|
return getObjTem(store.formulaTemplates);
|
|
123
214
|
}, [store.formulaTemplates]);
|
|
124
|
-
useEffect(function () {
|
|
125
|
-
setOldCode(getPreviewStr(caseList));
|
|
126
|
-
}, []);
|
|
127
215
|
var _useState9 = useState(''),
|
|
128
216
|
_useState0 = _slicedToArray(_useState9, 2),
|
|
129
217
|
filterVal = _useState0[0],
|
|
130
218
|
setFilterVal = _useState0[1];
|
|
131
219
|
var setCaseList = function setCaseList(data) {
|
|
132
|
-
var quotes = data.map(function (v
|
|
133
|
-
if (v !== null && v !== void 0 && v.quotes)
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
return v === null || v === void 0 ? void 0 : v.fieldName;
|
|
137
|
-
} else {
|
|
138
|
-
return v.val;
|
|
139
|
-
}
|
|
220
|
+
var quotes = data.map(function (v) {
|
|
221
|
+
if (v !== null && v !== void 0 && v.quotes) return v.quotes;
|
|
222
|
+
if (v !== null && v !== void 0 && v.fieldName) return v.fieldName;
|
|
223
|
+
return v === null || v === void 0 ? void 0 : v.val;
|
|
140
224
|
}).join(' ');
|
|
141
|
-
// setCaseListState(data);
|
|
142
225
|
caseList = data;
|
|
143
226
|
caseListRef.current = data;
|
|
144
227
|
onChange === null || onChange === void 0 || onChange(data, quotes);
|
|
145
228
|
};
|
|
229
|
+
var updateAtomAt = function updateAtomAt(index, nextItem) {
|
|
230
|
+
var nextList = caseList.slice();
|
|
231
|
+
nextList[index] = nextItem;
|
|
232
|
+
setCaseList(nextList);
|
|
233
|
+
};
|
|
234
|
+
function getItemDisplayText(v) {
|
|
235
|
+
if (!v) return '';
|
|
236
|
+
if (v.quotes) return v.quotes;
|
|
237
|
+
if (v.fieldName) return v.fieldName;
|
|
238
|
+
if (v.type === AtomsTypeEnum.FORMULA) {
|
|
239
|
+
return v.name ? getQuotes(v, v.args, formulaList) : '';
|
|
240
|
+
}
|
|
241
|
+
if (v.type === AtomsTypeEnum.CASE_WHEN) {
|
|
242
|
+
var caseValueText = (v.caseValue || []).map(function (item) {
|
|
243
|
+
return getItemDisplayText(item);
|
|
244
|
+
}).join(' ');
|
|
245
|
+
var branchText = (v.branches || []).map(function (branch) {
|
|
246
|
+
var whenText = (branch.when || []).map(function (item) {
|
|
247
|
+
return getItemDisplayText(item);
|
|
248
|
+
}).join(' ');
|
|
249
|
+
var thenText = (branch.then || []).map(function (item) {
|
|
250
|
+
return getItemDisplayText(item);
|
|
251
|
+
}).join(' ');
|
|
252
|
+
return "when ".concat(whenText, " then ").concat(thenText).trim();
|
|
253
|
+
}).join(' ');
|
|
254
|
+
var elseText = (v.elseValue || []).length ? " else ".concat((v.elseValue || []).map(function (item) {
|
|
255
|
+
return getItemDisplayText(item);
|
|
256
|
+
}).join(' ')) : '';
|
|
257
|
+
return "case ".concat(caseValueText, " ").concat(branchText).concat(elseText, " end").replace(/\s+/g, ' ').trim();
|
|
258
|
+
}
|
|
259
|
+
if (v.type === AtomsTypeEnum.AND_OR) {
|
|
260
|
+
var listText = (v.list || []).map(function (item) {
|
|
261
|
+
return getItemDisplayText(item);
|
|
262
|
+
}).join(' ');
|
|
263
|
+
return "".concat(v.operator || 'and', " ( ").concat(listText, " )").replace(/\s+/g, ' ').trim();
|
|
264
|
+
}
|
|
265
|
+
if (Array.isArray(v.val)) {
|
|
266
|
+
return v.val.join(', ');
|
|
267
|
+
}
|
|
268
|
+
return v.val || '';
|
|
269
|
+
}
|
|
270
|
+
var getPreviewStr = function getPreviewStr() {
|
|
271
|
+
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
272
|
+
return data.map(function (v) {
|
|
273
|
+
if (v.type === AtomsTypeEnum.OPERATOR && (v.val === 'and' || v.val === 'or')) {
|
|
274
|
+
return "\r".concat(v.val, "\r");
|
|
275
|
+
}
|
|
276
|
+
if (v.type === AtomsTypeEnum.OPERATOR && (v.val === '(' || v.val === ')')) {
|
|
277
|
+
return "".concat(v.val);
|
|
278
|
+
}
|
|
279
|
+
return getItemDisplayText(v);
|
|
280
|
+
}).join(' ');
|
|
281
|
+
};
|
|
282
|
+
useEffect(function () {
|
|
283
|
+
setOldCode(getPreviewStr(caseList));
|
|
284
|
+
}, []);
|
|
285
|
+
var renderTokenContent = function renderTokenContent(children) {
|
|
286
|
+
return _jsx("span", {
|
|
287
|
+
className: 'Sqb-TokenContent',
|
|
288
|
+
children: children
|
|
289
|
+
});
|
|
290
|
+
};
|
|
291
|
+
var renderNestedFormulaList = function renderNestedFormulaList(list, onNestedChange) {
|
|
292
|
+
return _jsx("div", {
|
|
293
|
+
className: 'Sqb-NestedFormulaList',
|
|
294
|
+
children: _jsx(FormulaList, {
|
|
295
|
+
ref: ref,
|
|
296
|
+
embedded: true,
|
|
297
|
+
value: list,
|
|
298
|
+
data: data,
|
|
299
|
+
exitData: exitData,
|
|
300
|
+
onChange: function onChange(atoms) {
|
|
301
|
+
return onNestedChange(atoms);
|
|
302
|
+
},
|
|
303
|
+
customTypes: _customTypes,
|
|
304
|
+
otherTypes: otherTypes,
|
|
305
|
+
isCustom: isCustom,
|
|
306
|
+
showPreview: false,
|
|
307
|
+
check: check,
|
|
308
|
+
_type: _type,
|
|
309
|
+
parentPopupChannel: parentPopupChannel
|
|
310
|
+
})
|
|
311
|
+
});
|
|
312
|
+
};
|
|
313
|
+
var renderCaseWhenEditor = function renderCaseWhenEditor(value, index) {
|
|
314
|
+
return _jsx(CaseWhenGroup, {
|
|
315
|
+
caseValueContent: renderNestedFormulaList(value.caseValue || [], function (nextList) {
|
|
316
|
+
updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
|
|
317
|
+
caseValue: nextList
|
|
318
|
+
}));
|
|
319
|
+
}),
|
|
320
|
+
branches: (value.branches || []).map(function (branch, branchIndex) {
|
|
321
|
+
return {
|
|
322
|
+
key: "case-".concat(index, "-branch-").concat(branchIndex),
|
|
323
|
+
whenContent: renderNestedFormulaList(branch.when || [], function (nextList) {
|
|
324
|
+
var nextBranches = (value.branches || []).slice();
|
|
325
|
+
nextBranches[branchIndex] = _objectSpread(_objectSpread({}, branch), {}, {
|
|
326
|
+
when: nextList
|
|
327
|
+
});
|
|
328
|
+
updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
|
|
329
|
+
branches: nextBranches
|
|
330
|
+
}));
|
|
331
|
+
}),
|
|
332
|
+
thenContent: renderNestedFormulaList(branch.then || [], function (nextList) {
|
|
333
|
+
var nextBranches = (value.branches || []).slice();
|
|
334
|
+
nextBranches[branchIndex] = _objectSpread(_objectSpread({}, branch), {}, {
|
|
335
|
+
then: nextList
|
|
336
|
+
});
|
|
337
|
+
updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
|
|
338
|
+
branches: nextBranches
|
|
339
|
+
}));
|
|
340
|
+
}),
|
|
341
|
+
onAddAfter: function onAddAfter(e) {
|
|
342
|
+
e.stopPropagation();
|
|
343
|
+
var nextBranches = (value.branches || []).slice();
|
|
344
|
+
nextBranches.splice(branchIndex + 1, 0, {
|
|
345
|
+
when: [{
|
|
346
|
+
val: '',
|
|
347
|
+
type: AtomsTypeEnum.UNKNOWN
|
|
348
|
+
}],
|
|
349
|
+
then: [{
|
|
350
|
+
val: '',
|
|
351
|
+
type: AtomsTypeEnum.UNKNOWN
|
|
352
|
+
}]
|
|
353
|
+
});
|
|
354
|
+
updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
|
|
355
|
+
branches: nextBranches
|
|
356
|
+
}));
|
|
357
|
+
},
|
|
358
|
+
onDelete: function onDelete(e) {
|
|
359
|
+
e.stopPropagation();
|
|
360
|
+
var nextBranches = (value.branches || []).filter(function (_, currentIndex) {
|
|
361
|
+
return currentIndex !== branchIndex;
|
|
362
|
+
});
|
|
363
|
+
updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
|
|
364
|
+
branches: nextBranches
|
|
365
|
+
}));
|
|
366
|
+
}
|
|
367
|
+
};
|
|
368
|
+
}),
|
|
369
|
+
elseContent: value.elseValue ? renderNestedFormulaList(value.elseValue || [], function (nextList) {
|
|
370
|
+
updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
|
|
371
|
+
elseValue: nextList
|
|
372
|
+
}));
|
|
373
|
+
}) : undefined,
|
|
374
|
+
onAddBranch: function onAddBranch(e) {
|
|
375
|
+
e.stopPropagation();
|
|
376
|
+
updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
|
|
377
|
+
branches: [].concat(_toConsumableArray(value.branches || []), [{
|
|
378
|
+
when: [{
|
|
379
|
+
val: '',
|
|
380
|
+
type: AtomsTypeEnum.UNKNOWN
|
|
381
|
+
}],
|
|
382
|
+
then: [{
|
|
383
|
+
val: '',
|
|
384
|
+
type: AtomsTypeEnum.UNKNOWN
|
|
385
|
+
}]
|
|
386
|
+
}])
|
|
387
|
+
}));
|
|
388
|
+
},
|
|
389
|
+
onAddElse: function onAddElse(e) {
|
|
390
|
+
e.stopPropagation();
|
|
391
|
+
updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
|
|
392
|
+
elseValue: [{
|
|
393
|
+
val: '',
|
|
394
|
+
type: AtomsTypeEnum.UNKNOWN
|
|
395
|
+
}]
|
|
396
|
+
}));
|
|
397
|
+
},
|
|
398
|
+
onRemoveElse: function onRemoveElse(e) {
|
|
399
|
+
e.stopPropagation();
|
|
400
|
+
updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
|
|
401
|
+
elseValue: undefined
|
|
402
|
+
}));
|
|
403
|
+
},
|
|
404
|
+
onDeleteCase: function onDeleteCase(e) {
|
|
405
|
+
return handleDel(e, index);
|
|
406
|
+
}
|
|
407
|
+
});
|
|
408
|
+
};
|
|
409
|
+
var renderAndOrEditor = function renderAndOrEditor(value, index) {
|
|
410
|
+
return _jsx(LogicGroup, {
|
|
411
|
+
operator: value.operator || 'and',
|
|
412
|
+
onToggleOperator: function onToggleOperator() {
|
|
413
|
+
updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
|
|
414
|
+
operator: value.operator === 'or' ? 'and' : 'or'
|
|
415
|
+
}));
|
|
416
|
+
},
|
|
417
|
+
content: renderNestedFormulaList(value.list || [], function (nextList) {
|
|
418
|
+
updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
|
|
419
|
+
list: nextList
|
|
420
|
+
}));
|
|
421
|
+
}),
|
|
422
|
+
onDelete: function onDelete(e) {
|
|
423
|
+
return handleDel(e, index);
|
|
424
|
+
}
|
|
425
|
+
});
|
|
426
|
+
};
|
|
146
427
|
var _useState1 = useState(-1),
|
|
147
428
|
_useState10 = _slicedToArray(_useState1, 2),
|
|
148
429
|
ind = _useState10[0],
|
|
@@ -160,51 +441,194 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
160
441
|
isCheck = _useState14[0],
|
|
161
442
|
setIsCheck = _useState14[1];
|
|
162
443
|
var myInstanceIdRef = useRef(Math.random().toString(36).slice(2));
|
|
163
|
-
var _useState15 = useState(
|
|
444
|
+
var _useState15 = useState(null),
|
|
164
445
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
var _useState17 = useState(window.
|
|
446
|
+
hoveredCaseGroupKey = _useState16[0],
|
|
447
|
+
setHoveredCaseGroupKey = _useState16[1];
|
|
448
|
+
var _useState17 = useState(!!window.__sqb_selection_active__),
|
|
168
449
|
_useState18 = _slicedToArray(_useState17, 2),
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
var _useState19 = useState(
|
|
450
|
+
globalSelectionActive = _useState18[0],
|
|
451
|
+
setGlobalSelectionActive = _useState18[1];
|
|
452
|
+
var _useState19 = useState(window.__sqb_selection_owner__ || null),
|
|
172
453
|
_useState20 = _slicedToArray(_useState19, 2),
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
var _useState21 = useState(
|
|
454
|
+
globalSelectionOwner = _useState20[0],
|
|
455
|
+
setGlobalSelectionOwner = _useState20[1];
|
|
456
|
+
var _useState21 = useState([]),
|
|
176
457
|
_useState22 = _slicedToArray(_useState21, 2),
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
458
|
+
selectedIndices = _useState22[0],
|
|
459
|
+
setSelectedIndices = _useState22[1];
|
|
460
|
+
var _useState23 = useState(null),
|
|
461
|
+
_useState24 = _slicedToArray(_useState23, 2),
|
|
462
|
+
hoveredCopyIndex = _useState24[0],
|
|
463
|
+
setHoveredCopyIndex = _useState24[1];
|
|
464
|
+
var getCaseGroupEnd = function getCaseGroupEnd(list, startIndex) {
|
|
465
|
+
var depth = 0;
|
|
466
|
+
for (var index = startIndex; index < list.length; index++) {
|
|
467
|
+
var item = list[index];
|
|
468
|
+
if (item.type !== AtomsTypeEnum.OPERATOR) continue;
|
|
469
|
+
if (item.val === 'case') depth += 1;
|
|
470
|
+
if (item.val === 'end') {
|
|
471
|
+
depth -= 1;
|
|
472
|
+
if (depth === 0) {
|
|
473
|
+
return index;
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
return startIndex;
|
|
478
|
+
};
|
|
479
|
+
var getLogicGroupIndices = function getLogicGroupIndices(list, startIndex) {
|
|
480
|
+
var _list, _list2;
|
|
481
|
+
var prevItem = list[startIndex - 1];
|
|
482
|
+
var currentItem = list[startIndex];
|
|
483
|
+
if (!currentItem) return [];
|
|
484
|
+
if (currentItem.type === AtomsTypeEnum.OPERATOR && ['and', 'or'].includes(currentItem.val) && ((_list = list[startIndex + 1]) === null || _list === void 0 ? void 0 : _list.type) === AtomsTypeEnum.OPERATOR && ((_list2 = list[startIndex + 1]) === null || _list2 === void 0 ? void 0 : _list2.val) === '(') {
|
|
485
|
+
var depth = 0;
|
|
486
|
+
var _indices = [];
|
|
487
|
+
for (var index = startIndex; index < list.length; index++) {
|
|
488
|
+
var item = list[index];
|
|
489
|
+
_indices.push(index);
|
|
490
|
+
if ((item === null || item === void 0 ? void 0 : item.type) !== AtomsTypeEnum.OPERATOR) continue;
|
|
491
|
+
if (item.val === '(') depth += 1;
|
|
492
|
+
if (item.val === ')') {
|
|
493
|
+
depth -= 1;
|
|
494
|
+
if (depth === 0) {
|
|
495
|
+
return _indices;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
return _indices;
|
|
500
|
+
}
|
|
501
|
+
if (currentItem.type === AtomsTypeEnum.OPERATOR) return [];
|
|
502
|
+
if ((prevItem === null || prevItem === void 0 ? void 0 : prevItem.type) === AtomsTypeEnum.OPERATOR && ['and', 'or'].includes((prevItem === null || prevItem === void 0 ? void 0 : prevItem.val) || '')) {
|
|
503
|
+
return [];
|
|
504
|
+
}
|
|
505
|
+
var indices = [startIndex];
|
|
506
|
+
var cursor = startIndex;
|
|
507
|
+
while (cursor + 2 < list.length) {
|
|
508
|
+
var operatorItem = list[cursor + 1];
|
|
509
|
+
var nextItem = list[cursor + 2];
|
|
510
|
+
if ((operatorItem === null || operatorItem === void 0 ? void 0 : operatorItem.type) !== AtomsTypeEnum.OPERATOR || !['and', 'or'].includes((operatorItem === null || operatorItem === void 0 ? void 0 : operatorItem.val) || '') || !nextItem || nextItem.type === AtomsTypeEnum.OPERATOR) {
|
|
511
|
+
break;
|
|
512
|
+
}
|
|
513
|
+
indices.push(cursor + 1, cursor + 2);
|
|
514
|
+
cursor += 2;
|
|
515
|
+
}
|
|
516
|
+
return indices.length >= 3 ? indices : [];
|
|
517
|
+
};
|
|
518
|
+
var renderGroups = useMemo(function () {
|
|
519
|
+
var groups = [];
|
|
520
|
+
var index = 0;
|
|
521
|
+
while (index < caseList.length) {
|
|
522
|
+
var item = caseList[index];
|
|
523
|
+
if ((item === null || item === void 0 ? void 0 : item.type) === AtomsTypeEnum.OPERATOR && (item === null || item === void 0 ? void 0 : item.val) === 'case') {
|
|
524
|
+
var endIndex = getCaseGroupEnd(caseList, index);
|
|
525
|
+
groups.push({
|
|
526
|
+
type: 'caseWhen',
|
|
527
|
+
indices: Array.from({
|
|
528
|
+
length: endIndex - index + 1
|
|
529
|
+
}, function (_, offset) {
|
|
530
|
+
return index + offset;
|
|
531
|
+
})
|
|
532
|
+
});
|
|
533
|
+
index = endIndex + 1;
|
|
534
|
+
continue;
|
|
535
|
+
}
|
|
536
|
+
var logicIndices = getLogicGroupIndices(caseList, index);
|
|
537
|
+
if (logicIndices.length > 0) {
|
|
538
|
+
groups.push({
|
|
539
|
+
type: 'logic',
|
|
540
|
+
indices: logicIndices
|
|
541
|
+
});
|
|
542
|
+
index = logicIndices[logicIndices.length - 1] + 1;
|
|
543
|
+
continue;
|
|
544
|
+
}
|
|
545
|
+
groups.push({
|
|
546
|
+
type: 'single',
|
|
547
|
+
indices: [index]
|
|
548
|
+
});
|
|
549
|
+
index += 1;
|
|
550
|
+
}
|
|
551
|
+
return groups;
|
|
182
552
|
}, [caseList]);
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
var
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
553
|
+
var getCaseGroupRows = function getCaseGroupRows(indices) {
|
|
554
|
+
var rows = [];
|
|
555
|
+
var currentRow = [];
|
|
556
|
+
var depth = 0;
|
|
557
|
+
indices.forEach(function (itemIndex) {
|
|
558
|
+
var item = caseList[itemIndex];
|
|
559
|
+
if ((item === null || item === void 0 ? void 0 : item.type) === AtomsTypeEnum.OPERATOR) {
|
|
560
|
+
if (item.val === 'case') {
|
|
561
|
+
if (depth === 0) {
|
|
562
|
+
if (currentRow.length > 0) rows.push(currentRow);
|
|
563
|
+
currentRow = [itemIndex];
|
|
564
|
+
depth = 1;
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
567
|
+
depth += 1;
|
|
194
568
|
}
|
|
195
|
-
if (
|
|
196
|
-
|
|
569
|
+
if (depth === 1 && (item.val === 'when' || item.val === 'else')) {
|
|
570
|
+
if (currentRow.length > 0) rows.push(currentRow);
|
|
571
|
+
currentRow = [itemIndex];
|
|
572
|
+
return;
|
|
573
|
+
}
|
|
574
|
+
if (item.val === 'end') {
|
|
575
|
+
depth -= 1;
|
|
576
|
+
if (depth === 0) {
|
|
577
|
+
if (currentRow.length > 0) rows.push(currentRow);
|
|
578
|
+
rows.push([itemIndex]);
|
|
579
|
+
currentRow = [];
|
|
580
|
+
return;
|
|
581
|
+
}
|
|
197
582
|
}
|
|
198
|
-
return v.val;
|
|
199
583
|
}
|
|
200
|
-
|
|
584
|
+
currentRow.push(itemIndex);
|
|
585
|
+
});
|
|
586
|
+
if (currentRow.length > 0) {
|
|
587
|
+
rows.push(currentRow);
|
|
588
|
+
}
|
|
589
|
+
return rows;
|
|
201
590
|
};
|
|
591
|
+
var isFixedCaseOperator = function isFixedCaseOperator(item) {
|
|
592
|
+
return item.type === AtomsTypeEnum.OPERATOR && CASE_FIXED_OPERATORS.includes(item.val || '');
|
|
593
|
+
};
|
|
594
|
+
var isFixedLogicOperator = function isFixedLogicOperator(item) {
|
|
595
|
+
return item.type === AtomsTypeEnum.OPERATOR && LOGIC_FIXED_OPERATORS.includes(item.val || '');
|
|
596
|
+
};
|
|
597
|
+
var isRequiredLogicOperator = function isRequiredLogicOperator(item) {
|
|
598
|
+
return item.type === AtomsTypeEnum.OPERATOR && LOGIC_REQUIRED_OPERATORS.includes(item.val || '');
|
|
599
|
+
};
|
|
600
|
+
var canDeleteItem = function canDeleteItem(item, groupType) {
|
|
601
|
+
if (groupType === 'logic') {
|
|
602
|
+
return !isRequiredLogicOperator(item);
|
|
603
|
+
}
|
|
604
|
+
return !isFixedCaseOperator(item);
|
|
605
|
+
};
|
|
606
|
+
var canShowInsertArrows = function canShowInsertArrows(item, groupType) {
|
|
607
|
+
if (groupType === 'caseWhen') {
|
|
608
|
+
return !isFixedCaseOperator(item);
|
|
609
|
+
}
|
|
610
|
+
if (groupType === 'logic') {
|
|
611
|
+
return !isRequiredLogicOperator(item);
|
|
612
|
+
}
|
|
613
|
+
return !(item.type === AtomsTypeEnum.OPERATOR && ['case', 'end'].includes(item.val));
|
|
614
|
+
};
|
|
615
|
+
useEffect(function () {
|
|
616
|
+
var _errorInfo = validateExpressionIntegrity(caseList);
|
|
617
|
+
setErrorInfo(_errorInfo);
|
|
618
|
+
}, [caseList]);
|
|
202
619
|
function closePopup() {
|
|
203
620
|
store.setPopup({
|
|
204
621
|
visible: false
|
|
205
622
|
});
|
|
206
623
|
}
|
|
207
|
-
|
|
624
|
+
var getSelectTriggerProps = function getSelectTriggerProps() {
|
|
625
|
+
return {
|
|
626
|
+
clickToClose: true,
|
|
627
|
+
style: {
|
|
628
|
+
zIndex: getTopLayerZIndex() + 1
|
|
629
|
+
}
|
|
630
|
+
};
|
|
631
|
+
};
|
|
208
632
|
var selectOperator = function selectOperator(props) {
|
|
209
633
|
var triggerElement = props.triggerElement,
|
|
210
634
|
ind = props.ind,
|
|
@@ -220,9 +644,7 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
220
644
|
},
|
|
221
645
|
showSearch: true,
|
|
222
646
|
trigger: trigger,
|
|
223
|
-
triggerProps:
|
|
224
|
-
clickToClose: true
|
|
225
|
-
},
|
|
647
|
+
triggerProps: getSelectTriggerProps(),
|
|
226
648
|
virtualListProps: {
|
|
227
649
|
threshold: null
|
|
228
650
|
},
|
|
@@ -239,6 +661,9 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
239
661
|
onVisibleChange: function onVisibleChange(visible) {
|
|
240
662
|
if (visible) {
|
|
241
663
|
setFilterVal('');
|
|
664
|
+
lockParentPopup();
|
|
665
|
+
} else {
|
|
666
|
+
unlockParentPopup(300);
|
|
242
667
|
}
|
|
243
668
|
},
|
|
244
669
|
value: '',
|
|
@@ -252,7 +677,6 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
252
677
|
},
|
|
253
678
|
value: filterVal,
|
|
254
679
|
placeholder: __('SqlQueryBuilder.pleaseEnter'),
|
|
255
|
-
// size='large'
|
|
256
680
|
onChange: function onChange(val) {
|
|
257
681
|
setFilterVal(val);
|
|
258
682
|
}
|
|
@@ -270,7 +694,6 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
270
694
|
})]
|
|
271
695
|
});
|
|
272
696
|
};
|
|
273
|
-
// 字段
|
|
274
697
|
function handleField(e, i, val) {
|
|
275
698
|
store.setPopup({
|
|
276
699
|
visible: true,
|
|
@@ -281,7 +704,7 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
281
704
|
multiple: false,
|
|
282
705
|
value: [val],
|
|
283
706
|
theme: ColumnsPopupThemeEnum.skyBlue,
|
|
284
|
-
onSelect: function onSelect(fields
|
|
707
|
+
onSelect: function onSelect(fields) {
|
|
285
708
|
var _caseList = caseList.slice();
|
|
286
709
|
_caseList[i] = fields[0];
|
|
287
710
|
setCaseList(_caseList);
|
|
@@ -290,7 +713,6 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
290
713
|
})
|
|
291
714
|
});
|
|
292
715
|
}
|
|
293
|
-
// 常量
|
|
294
716
|
var handleConstant = function handleConstant(val, i) {
|
|
295
717
|
var _caseList = caseList.slice();
|
|
296
718
|
var currentItem = _caseList[i];
|
|
@@ -310,7 +732,6 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
310
732
|
_caseList = insertTemplateAt(oldVal, val, _caseList, i);
|
|
311
733
|
setCaseList(_caseList);
|
|
312
734
|
};
|
|
313
|
-
// 表达式
|
|
314
735
|
function handleExpression(e, i, val) {
|
|
315
736
|
store.setPopup({
|
|
316
737
|
visible: true,
|
|
@@ -331,7 +752,6 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
331
752
|
})
|
|
332
753
|
});
|
|
333
754
|
}
|
|
334
|
-
// 删除
|
|
335
755
|
function handleDel(e, index) {
|
|
336
756
|
e.stopPropagation();
|
|
337
757
|
var _caseList = caseList.slice();
|
|
@@ -339,13 +759,21 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
339
759
|
setCaseList(_caseList);
|
|
340
760
|
closePopup();
|
|
341
761
|
}
|
|
342
|
-
|
|
762
|
+
function handleDelItems(e, indices) {
|
|
763
|
+
e.stopPropagation();
|
|
764
|
+
if (!indices.length) return;
|
|
765
|
+
var indexSet = new Set(indices);
|
|
766
|
+
var _caseList = caseList.filter(function (_, itemIndex) {
|
|
767
|
+
return !indexSet.has(itemIndex);
|
|
768
|
+
});
|
|
769
|
+
setCaseList(_caseList);
|
|
770
|
+
closePopup();
|
|
771
|
+
}
|
|
343
772
|
function initPaste() {
|
|
344
773
|
var isDispatch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
345
774
|
setSelectedIndices([]);
|
|
346
775
|
setLocalItem([]);
|
|
347
776
|
setIsCheck(false);
|
|
348
|
-
//有些事不需要通知别的过滤器重置勾选状态
|
|
349
777
|
if (isDispatch) {
|
|
350
778
|
window.dispatchEvent(new CustomEvent('sqb-check-active', {
|
|
351
779
|
detail: {
|
|
@@ -354,11 +782,9 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
354
782
|
}));
|
|
355
783
|
}
|
|
356
784
|
}
|
|
357
|
-
// 粘贴到末尾并清除勾选
|
|
358
785
|
function handlePaste() {
|
|
359
786
|
var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;
|
|
360
787
|
var _caseList = caseList.slice();
|
|
361
|
-
// determine items to paste (selected items have priority)
|
|
362
788
|
var itemsToPaste = storage._metabaseCopyItems || [];
|
|
363
789
|
itemsToPaste = changeCopyField(itemsToPaste, data);
|
|
364
790
|
if (itemsToPaste.length) {
|
|
@@ -371,13 +797,10 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
371
797
|
}
|
|
372
798
|
initPaste();
|
|
373
799
|
}
|
|
374
|
-
// 将值存在 localStorage
|
|
375
800
|
function setLocalItem(next) {
|
|
376
801
|
var _caseList = caseList.slice();
|
|
377
|
-
// determine items to paste (selected items have priority)
|
|
378
802
|
var itemsToPaste = [];
|
|
379
803
|
if (next.length > 0) {
|
|
380
|
-
// paste all selected items
|
|
381
804
|
itemsToPaste = next.map(function (i) {
|
|
382
805
|
return _caseList[i] ? cloneDeep(_caseList[i]) : null;
|
|
383
806
|
}).filter(Boolean);
|
|
@@ -399,11 +822,33 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
399
822
|
});
|
|
400
823
|
setSelectedIndices(next);
|
|
401
824
|
setLocalItem(next);
|
|
402
|
-
// const active = next.length > 0;
|
|
403
825
|
}
|
|
826
|
+
function toggleSelectGroup(indices, checked) {
|
|
827
|
+
var next = selectedIndices.slice();
|
|
828
|
+
if (checked) {
|
|
829
|
+
indices.forEach(function (index) {
|
|
830
|
+
if (!next.includes(index)) next.push(index);
|
|
831
|
+
});
|
|
832
|
+
} else {
|
|
833
|
+
var indexSet = new Set(indices);
|
|
834
|
+
next = next.filter(function (index) {
|
|
835
|
+
return !indexSet.has(index);
|
|
836
|
+
});
|
|
837
|
+
}
|
|
838
|
+
next = next.sort(function (a, b) {
|
|
839
|
+
return a - b;
|
|
840
|
+
});
|
|
841
|
+
setSelectedIndices(next);
|
|
842
|
+
setLocalItem(next);
|
|
843
|
+
}
|
|
844
|
+
var isGroupSelected = function isGroupSelected(indices) {
|
|
845
|
+
return indices.length > 0 && indices.every(function (index) {
|
|
846
|
+
return selectedIndices.includes(index);
|
|
847
|
+
});
|
|
848
|
+
};
|
|
404
849
|
var copyAll = function copyAll() {
|
|
405
850
|
_setIsCheck(true);
|
|
406
|
-
var allIndices = caseList.map(function (
|
|
851
|
+
var allIndices = caseList.map(function (_, i) {
|
|
407
852
|
return i;
|
|
408
853
|
});
|
|
409
854
|
setSelectedIndices(allIndices);
|
|
@@ -412,11 +857,9 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
412
857
|
var delSelect = function delSelect() {
|
|
413
858
|
Modal.confirm({
|
|
414
859
|
title: __('metabase.prompt'),
|
|
415
|
-
// 提示
|
|
416
860
|
content: __('customColumn.confirmDelete'),
|
|
417
|
-
// 确认删除吗
|
|
418
861
|
onOk: function () {
|
|
419
|
-
var _onOk = _asyncToGenerator(
|
|
862
|
+
var _onOk = _asyncToGenerator(_regeneratorRuntime.mark(function _callee() {
|
|
420
863
|
var selectedIndexSet, _caseList;
|
|
421
864
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
422
865
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -441,7 +884,6 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
441
884
|
onCancel: function onCancel() {}
|
|
442
885
|
});
|
|
443
886
|
};
|
|
444
|
-
// 开启关闭勾选,清除别的过滤器勾选
|
|
445
887
|
var _setIsCheck = function _setIsCheck(val) {
|
|
446
888
|
initPaste();
|
|
447
889
|
setIsCheck(val);
|
|
@@ -459,7 +901,6 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
459
901
|
window.removeEventListener('sqb-check-active', onCheckActive);
|
|
460
902
|
};
|
|
461
903
|
}, []);
|
|
462
|
-
// 添加
|
|
463
904
|
var addOperator = function addOperator(type, index, position) {
|
|
464
905
|
var _caseList = caseList.slice() || [];
|
|
465
906
|
var _ind = index;
|
|
@@ -479,14 +920,59 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
479
920
|
_caseList.splice(index + 1, 0, temItem);
|
|
480
921
|
_ind = index + 1;
|
|
481
922
|
} else {
|
|
482
|
-
//替换
|
|
483
923
|
_caseList.splice(index, 1, temItem);
|
|
484
924
|
_ind = index;
|
|
485
925
|
}
|
|
486
926
|
setCaseList(_caseList);
|
|
487
927
|
return _ind < 0 ? 0 : _ind;
|
|
488
928
|
};
|
|
489
|
-
|
|
929
|
+
var getItemNameProps = function getItemNameProps(v) {
|
|
930
|
+
if (v.type === AtomsTypeEnum.NOT_EXISTS || v.type === AtomsTypeEnum.EXISTS) {
|
|
931
|
+
return {
|
|
932
|
+
isError: isExistsError(v.notExists, store.existsError)
|
|
933
|
+
};
|
|
934
|
+
}
|
|
935
|
+
if (v.type === AtomsTypeEnum.SUB_QUERY) {
|
|
936
|
+
return {
|
|
937
|
+
isError: isExistsError(v.subQuery, store.existsError)
|
|
938
|
+
};
|
|
939
|
+
}
|
|
940
|
+
if (v.type === AtomsTypeEnum.FIELD) {
|
|
941
|
+
return {
|
|
942
|
+
isError: isError(v, data)
|
|
943
|
+
};
|
|
944
|
+
}
|
|
945
|
+
if (v.type === AtomsTypeEnum.CONSTANT) {
|
|
946
|
+
return {
|
|
947
|
+
isError: !!(v.id || v.val) && !getConstantLabel(store.constantList, v.id || v.val),
|
|
948
|
+
message: '常量丢失'
|
|
949
|
+
};
|
|
950
|
+
}
|
|
951
|
+
if (otherTypeMap.has(String(v.type))) {
|
|
952
|
+
var currentOtherType = otherTypeMap.get(String(v.type));
|
|
953
|
+
var listSource = (currentOtherType === null || currentOtherType === void 0 ? void 0 : currentOtherType.list) || [];
|
|
954
|
+
return {
|
|
955
|
+
isError: !!(v.id || v.val) && !getConstantLabel(listSource, v.id || v.val),
|
|
956
|
+
message: "".concat(currentOtherType === null || currentOtherType === void 0 ? void 0 : currentOtherType.label, "\u4E22\u5931")
|
|
957
|
+
};
|
|
958
|
+
}
|
|
959
|
+
if (v.type === AtomsTypeEnum.EXPRESSION) {
|
|
960
|
+
return {
|
|
961
|
+
isError: isError(v, data)
|
|
962
|
+
};
|
|
963
|
+
}
|
|
964
|
+
if (v.type === AtomsTypeEnum.FORMULA) {
|
|
965
|
+
var formulaMissing = formulaIsError(v, formulaList);
|
|
966
|
+
return {
|
|
967
|
+
isError: isError(v, data) || formulaMissing,
|
|
968
|
+
message: formulaMissing ? '公式丢失' : ''
|
|
969
|
+
};
|
|
970
|
+
}
|
|
971
|
+
return {
|
|
972
|
+
isError: false,
|
|
973
|
+
message: ''
|
|
974
|
+
};
|
|
975
|
+
};
|
|
490
976
|
var showNotExists = function showNotExists(i) {
|
|
491
977
|
var _caseList$i, _caseList$i2;
|
|
492
978
|
var _store$preProps = store.preProps,
|
|
@@ -495,23 +981,22 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
495
981
|
other = _objectWithoutProperties(_store$preProps, _excluded);
|
|
496
982
|
var _value = ((_caseList$i = caseList[i]) === null || _caseList$i === void 0 ? void 0 : _caseList$i.notExists) || [];
|
|
497
983
|
var oldList = cloneDeep(((_caseList$i2 = caseList[i]) === null || _caseList$i2 === void 0 ? void 0 : _caseList$i2.notExists) || []);
|
|
984
|
+
var childModalZIndex = getTopLayerZIndex() + 1;
|
|
498
985
|
var _toolbar = notExistsToolbar || toolbar;
|
|
499
|
-
|
|
500
|
-
|
|
986
|
+
var o = openChildModal({
|
|
987
|
+
zIndex: childModalZIndex,
|
|
501
988
|
title: caseList[i].type,
|
|
502
|
-
transparentMask:
|
|
989
|
+
transparentMask: false,
|
|
503
990
|
content: _jsx(_Fragment, {
|
|
504
991
|
children: _jsx(Metabase, _objectSpread(_objectSpread({}, other), {}, {
|
|
992
|
+
popupZIndex: childModalZIndex + 1,
|
|
505
993
|
notExistsColumns: exitData,
|
|
506
|
-
// showFields={false}
|
|
507
994
|
isExit: true,
|
|
508
|
-
// showSubquery={subShowSubquery}
|
|
509
995
|
toolbar: _toolbar,
|
|
510
996
|
btnText: __('SqlQueryBuilder.confirm'),
|
|
511
997
|
value: cloneDeep(_value),
|
|
512
998
|
onOk: function onOk(newList) {
|
|
513
999
|
try {
|
|
514
|
-
// 子查询未改变不做操作
|
|
515
1000
|
if (isEqual(newList, oldList)) {
|
|
516
1001
|
o.close();
|
|
517
1002
|
return;
|
|
@@ -525,18 +1010,14 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
525
1010
|
onChange === null || onChange === void 0 || onChange(caseList, '');
|
|
526
1011
|
setCaseList(_toConsumableArray(caseList));
|
|
527
1012
|
o.close();
|
|
528
|
-
} catch (e) {
|
|
529
|
-
console.warn(e);
|
|
530
|
-
} finally {
|
|
1013
|
+
} catch (e) {} finally {
|
|
531
1014
|
o.close();
|
|
532
1015
|
}
|
|
533
1016
|
}
|
|
534
1017
|
}))
|
|
535
|
-
})
|
|
536
|
-
onClose: function onClose() {}
|
|
1018
|
+
})
|
|
537
1019
|
});
|
|
538
1020
|
};
|
|
539
|
-
// 子查询 窗口
|
|
540
1021
|
var showSubQuery = function showSubQuery(i) {
|
|
541
1022
|
var _caseList$i3, _caseList$i4;
|
|
542
1023
|
var _store$preProps2 = store.preProps,
|
|
@@ -548,12 +1029,15 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
548
1029
|
other = _objectWithoutProperties(_store$preProps2, _excluded2);
|
|
549
1030
|
var _value = ((_caseList$i3 = caseList[i]) === null || _caseList$i3 === void 0 ? void 0 : _caseList$i3.subQuery) || [];
|
|
550
1031
|
var oldList = cloneDeep(((_caseList$i4 = caseList[i]) === null || _caseList$i4 === void 0 ? void 0 : _caseList$i4.subQuery) || []);
|
|
1032
|
+
var childModalZIndex = getTopLayerZIndex() + 1;
|
|
551
1033
|
var _toolbar = subToolbar || toolbar;
|
|
552
|
-
var o =
|
|
1034
|
+
var o = openChildModal({
|
|
1035
|
+
zIndex: childModalZIndex,
|
|
553
1036
|
title: __('SqlQueryBuilder.subquery'),
|
|
554
|
-
transparentMask:
|
|
1037
|
+
transparentMask: false,
|
|
555
1038
|
content: _jsx(_Fragment, {
|
|
556
1039
|
children: _jsx(Metabase, _objectSpread(_objectSpread({}, other), {}, {
|
|
1040
|
+
popupZIndex: childModalZIndex + 1,
|
|
557
1041
|
isExit: true,
|
|
558
1042
|
isSubquery: true,
|
|
559
1043
|
notExistsColumns: exitData,
|
|
@@ -563,7 +1047,6 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
563
1047
|
value: cloneDeep(_value),
|
|
564
1048
|
onOk: function onOk(newList) {
|
|
565
1049
|
try {
|
|
566
|
-
// 子查询未改变不做操作
|
|
567
1050
|
if (isEqual(newList, oldList)) {
|
|
568
1051
|
o.close();
|
|
569
1052
|
return;
|
|
@@ -577,15 +1060,12 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
577
1060
|
onChange === null || onChange === void 0 || onChange(caseList, '');
|
|
578
1061
|
setCaseList(_toConsumableArray(caseList));
|
|
579
1062
|
o.close();
|
|
580
|
-
} catch (e) {
|
|
581
|
-
console.warn(e);
|
|
582
|
-
} finally {
|
|
1063
|
+
} catch (e) {} finally {
|
|
583
1064
|
o.close();
|
|
584
1065
|
}
|
|
585
1066
|
}
|
|
586
1067
|
}))
|
|
587
|
-
})
|
|
588
|
-
onClose: function onClose() {}
|
|
1068
|
+
})
|
|
589
1069
|
});
|
|
590
1070
|
};
|
|
591
1071
|
function selectConstant(e) {
|
|
@@ -610,10 +1090,11 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
610
1090
|
})
|
|
611
1091
|
});
|
|
612
1092
|
}
|
|
613
|
-
// 函数弹窗
|
|
614
1093
|
var showFunction = function showFunction(e, i) {
|
|
615
1094
|
var _value = caseList[i];
|
|
616
|
-
var
|
|
1095
|
+
var childModalZIndex = getTopLayerZIndex() + 1;
|
|
1096
|
+
var o = openChildModal({
|
|
1097
|
+
zIndex: childModalZIndex,
|
|
617
1098
|
title: __('customColumn.formula'),
|
|
618
1099
|
transparentMask: true,
|
|
619
1100
|
content: _jsx(_Fragment, {
|
|
@@ -647,317 +1128,275 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
647
1128
|
onClose: function onClose() {}
|
|
648
1129
|
});
|
|
649
1130
|
};
|
|
650
|
-
|
|
651
|
-
var itemDom = function itemDom(v, index) {
|
|
1131
|
+
var itemDom = function itemDom(v, index, groupType) {
|
|
652
1132
|
var type = v.type;
|
|
653
1133
|
if (v.type === AtomsTypeEnum.NOT_EXISTS || v.type === AtomsTypeEnum.EXISTS) {
|
|
654
|
-
return
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
1134
|
+
return {
|
|
1135
|
+
className: 'purple-name',
|
|
1136
|
+
onClick: function onClick() {
|
|
1137
|
+
return showNotExists(index);
|
|
1138
|
+
},
|
|
1139
|
+
node: _jsxs(_Fragment, {
|
|
1140
|
+
children: [v.type, " ( * )", renderDeleteIcon(v, index, groupType)]
|
|
1141
|
+
})
|
|
1142
|
+
};
|
|
1143
|
+
}
|
|
1144
|
+
if (v.type === AtomsTypeEnum.SUB_QUERY) {
|
|
1145
|
+
return {
|
|
1146
|
+
className: 'purple-name',
|
|
1147
|
+
onClick: function onClick() {
|
|
1148
|
+
return showSubQuery(index);
|
|
1149
|
+
},
|
|
1150
|
+
node: _jsxs(_Fragment, {
|
|
1151
|
+
children: [v.label || __('SqlQueryBuilder.subquery'), renderDeleteIcon(v, index, groupType)]
|
|
1152
|
+
})
|
|
1153
|
+
};
|
|
1154
|
+
}
|
|
1155
|
+
if (type === AtomsTypeEnum.FIELD) {
|
|
1156
|
+
return {
|
|
1157
|
+
className: cx({
|
|
1158
|
+
notSelected: !(v !== null && v !== void 0 && v.fieldName)
|
|
1159
|
+
}),
|
|
1160
|
+
onClick: function onClick(e) {
|
|
1161
|
+
return handleField(e, index, v);
|
|
1162
|
+
},
|
|
1163
|
+
node: _jsxs(_Fragment, {
|
|
1164
|
+
children: [!(v !== null && v !== void 0 && v.fieldName) && __('customColumn.selectField'), v.fieldName, renderDeleteIcon(v, index, groupType)]
|
|
1165
|
+
})
|
|
1166
|
+
};
|
|
1167
|
+
}
|
|
1168
|
+
if (type === AtomsTypeEnum.INPUT_STRING) {
|
|
1169
|
+
return {
|
|
1170
|
+
className: 'notSelected',
|
|
1171
|
+
node: _jsxs(_Fragment, {
|
|
1172
|
+
children: [_jsx(FieldString, {}), _jsx(Input, {
|
|
1173
|
+
className: ':sqb-Custom-input',
|
|
1174
|
+
value: v.val,
|
|
1175
|
+
placeholder: __('SqlQueryBuilder.pleaseEnter'),
|
|
1176
|
+
size: 'large',
|
|
1177
|
+
onChange: function onChange(val) {
|
|
1178
|
+
handleConstant(val, index);
|
|
1179
|
+
}
|
|
1180
|
+
}), renderDeleteIcon(v, index, groupType)]
|
|
1181
|
+
})
|
|
1182
|
+
};
|
|
1183
|
+
}
|
|
1184
|
+
if (type === AtomsTypeEnum.INPUT_NUMBER) {
|
|
1185
|
+
return {
|
|
1186
|
+
className: 'notSelected',
|
|
1187
|
+
node: _jsxs(_Fragment, {
|
|
1188
|
+
children: [_jsx(FieldNumber, {}), _jsx(InputNumber, {
|
|
1189
|
+
className: ':sqb-Custom-input',
|
|
1190
|
+
value: v.val,
|
|
1191
|
+
placeholder: __('SqlQueryBuilder.pleaseEnter'),
|
|
1192
|
+
size: 'large',
|
|
1193
|
+
onChange: function onChange(val) {
|
|
1194
|
+
handleConstant(val, index);
|
|
1195
|
+
}
|
|
1196
|
+
}), renderDeleteIcon(v, index, groupType)]
|
|
1197
|
+
})
|
|
1198
|
+
};
|
|
1199
|
+
}
|
|
1200
|
+
if (type === AtomsTypeEnum.OPERATOR) {
|
|
1201
|
+
if (isFixedCaseOperator(v)) {
|
|
1202
|
+
return {
|
|
1203
|
+
raw: true,
|
|
1204
|
+
node: _jsx("span", {
|
|
1205
|
+
className: 'Sqb-CaseKeyword',
|
|
1206
|
+
children: v.val
|
|
1207
|
+
})
|
|
1208
|
+
};
|
|
1209
|
+
}
|
|
1210
|
+
if (groupType === 'logic' && isFixedLogicOperator(v)) {
|
|
1211
|
+
return {
|
|
1212
|
+
raw: true,
|
|
1213
|
+
node: _jsx("span", {
|
|
1214
|
+
className: 'Sqb-CaseKeyword',
|
|
1215
|
+
children: v.val
|
|
1216
|
+
})
|
|
1217
|
+
};
|
|
1218
|
+
}
|
|
1219
|
+
if (groupType === 'logic' && ['and', 'or'].includes(v.val)) {
|
|
1220
|
+
var nextLogicOperator = v.val === 'and' ? 'or' : 'and';
|
|
1221
|
+
return {
|
|
1222
|
+
className: cx({
|
|
1223
|
+
'logic-operator': true,
|
|
1224
|
+
'logic-and': v.val === 'and',
|
|
1225
|
+
'logic-or': v.val === 'or'
|
|
700
1226
|
}),
|
|
701
|
-
onClick: function onClick(
|
|
702
|
-
|
|
1227
|
+
onClick: function onClick() {
|
|
1228
|
+
handleConstant(nextLogicOperator, index);
|
|
703
1229
|
},
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
})
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
// 输入框
|
|
718
|
-
return _jsxs("div", {
|
|
719
|
-
className: cx("Sqb-TableName notSelected "),
|
|
720
|
-
children: [_jsx(FieldString, {}), _jsx(Input, {
|
|
721
|
-
className: ':Sqb-Custom-input',
|
|
1230
|
+
node: renderTokenContent(v.val)
|
|
1231
|
+
};
|
|
1232
|
+
}
|
|
1233
|
+
return {
|
|
1234
|
+
className: cx('operator-trigger', {
|
|
1235
|
+
notSelected: !v.val,
|
|
1236
|
+
'flow-operator': ['case', 'when', 'then', 'else', 'end'].includes(v.val),
|
|
1237
|
+
'logic-operator': ['and', 'or'].includes(v.val),
|
|
1238
|
+
'logic-and': v.val === 'and',
|
|
1239
|
+
'logic-or': v.val === 'or'
|
|
1240
|
+
}),
|
|
1241
|
+
node: _jsx(Select, {
|
|
1242
|
+
triggerProps: getSelectTriggerProps(),
|
|
722
1243
|
value: v.val,
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
}
|
|
728
|
-
}), _jsx("span", {
|
|
729
|
-
className: 'item-del',
|
|
730
|
-
style: {
|
|
731
|
-
fontSize: 0
|
|
1244
|
+
triggerElement: function triggerElement() {
|
|
1245
|
+
return renderTokenContent(_jsxs(_Fragment, {
|
|
1246
|
+
children: [!v.val && __('customColumn.selectOperator'), v.val, renderDeleteIcon(v, index)]
|
|
1247
|
+
}));
|
|
732
1248
|
},
|
|
733
|
-
onClick: function onClick(e) {
|
|
734
|
-
return handleDel(e, index);
|
|
735
|
-
},
|
|
736
|
-
children: _jsx(CloseIcon, {})
|
|
737
|
-
})]
|
|
738
|
-
});
|
|
739
|
-
} else if (type === AtomsTypeEnum.INPUT_NUMBER) {
|
|
740
|
-
// 输入框
|
|
741
|
-
return _jsxs("div", {
|
|
742
|
-
className: cx("Sqb-TableName notSelected "),
|
|
743
|
-
children: [_jsx(FieldNumber, {}), _jsx(InputNumber, {
|
|
744
|
-
className: ':sqb-Custom-input',
|
|
745
|
-
value: v.val,
|
|
746
|
-
placeholder: __('SqlQueryBuilder.pleaseEnter'),
|
|
747
|
-
size: 'large',
|
|
748
1249
|
onChange: function onChange(val) {
|
|
749
1250
|
handleConstant(val, index);
|
|
750
|
-
}
|
|
751
|
-
}), _jsx("span", {
|
|
752
|
-
className: 'item-del',
|
|
753
|
-
style: {
|
|
754
|
-
fontSize: 0
|
|
755
|
-
},
|
|
756
|
-
onClick: function onClick(e) {
|
|
757
|
-
return handleDel(e, index);
|
|
758
1251
|
},
|
|
759
|
-
children:
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
triggerProps: {
|
|
766
|
-
clickToClose: true
|
|
767
|
-
},
|
|
768
|
-
value: v.val,
|
|
769
|
-
triggerElement: function triggerElement(value) {
|
|
770
|
-
return _jsxs("div", {
|
|
771
|
-
className: cx("Sqb-TableName Sqb-TableName-OPERATOR", {
|
|
772
|
-
notSelected: !v.val
|
|
773
|
-
}),
|
|
774
|
-
children: [!v.val && __('customColumn.selectOperator'), v.val, _jsx("span", {
|
|
775
|
-
className: 'item-del',
|
|
776
|
-
style: {
|
|
777
|
-
fontSize: 0
|
|
778
|
-
},
|
|
779
|
-
onClick: function onClick(e) {
|
|
780
|
-
return handleDel(e, index);
|
|
781
|
-
},
|
|
782
|
-
children: _jsx(CloseIcon, {})
|
|
783
|
-
})]
|
|
784
|
-
});
|
|
785
|
-
},
|
|
786
|
-
onChange: function onChange(val) {
|
|
787
|
-
handleConstant(val, index);
|
|
788
|
-
},
|
|
789
|
-
children: operatorList.map(function (option, index) {
|
|
790
|
-
return _jsx(Select.Option, {
|
|
791
|
-
value: option,
|
|
792
|
-
children: option
|
|
793
|
-
}, index + '' + ind);
|
|
1252
|
+
children: operatorList.map(function (option, optionIndex) {
|
|
1253
|
+
return _jsx(Select.Option, {
|
|
1254
|
+
value: option,
|
|
1255
|
+
children: option
|
|
1256
|
+
}, optionIndex + '' + ind);
|
|
1257
|
+
})
|
|
794
1258
|
})
|
|
795
|
-
}
|
|
796
|
-
}
|
|
797
|
-
|
|
798
|
-
return
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
children: [getConstantLabel(store.constantList, v.id || v.val, v.val) || __('SqlQueryBuilder.pickConstant'),
|
|
809
|
-
className: 'item-del',
|
|
810
|
-
style: {
|
|
811
|
-
fontSize: 0
|
|
812
|
-
},
|
|
813
|
-
onClick: function onClick(e) {
|
|
814
|
-
return handleDel(e, index);
|
|
815
|
-
},
|
|
816
|
-
children: _jsx(CloseIcon, {})
|
|
817
|
-
})]
|
|
1259
|
+
};
|
|
1260
|
+
}
|
|
1261
|
+
if (type === AtomsTypeEnum.CONSTANT) {
|
|
1262
|
+
return {
|
|
1263
|
+
className: cx({
|
|
1264
|
+
notSelected: !v.val
|
|
1265
|
+
}),
|
|
1266
|
+
attrs: {
|
|
1267
|
+
'v-index': index,
|
|
1268
|
+
'v-val': v.id || v.val
|
|
1269
|
+
},
|
|
1270
|
+
onClick: selectConstant,
|
|
1271
|
+
node: _jsxs(_Fragment, {
|
|
1272
|
+
children: [getConstantLabel(store.constantList, v.id || v.val, v.val) || __('SqlQueryBuilder.pickConstant'), renderDeleteIcon(v, index, groupType)]
|
|
818
1273
|
})
|
|
819
|
-
}
|
|
820
|
-
}
|
|
821
|
-
|
|
1274
|
+
};
|
|
1275
|
+
}
|
|
1276
|
+
if (otherTypeMap.has(String(type))) {
|
|
822
1277
|
var currentOtherType = otherTypeMap.get(String(type));
|
|
823
1278
|
var listSource = (currentOtherType === null || currentOtherType === void 0 ? void 0 : currentOtherType.list) || [];
|
|
824
|
-
return
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
children: [getConstantLabel(listSource, v.id || v.val, v.val) || "\u8BF7\u9009\u62E9".concat(currentOtherType.label),
|
|
836
|
-
className: 'item-del',
|
|
837
|
-
style: {
|
|
838
|
-
fontSize: 0
|
|
839
|
-
},
|
|
840
|
-
onClick: function onClick(e) {
|
|
841
|
-
return handleDel(e, index);
|
|
842
|
-
},
|
|
843
|
-
children: _jsx(CloseIcon, {})
|
|
844
|
-
})]
|
|
1279
|
+
return {
|
|
1280
|
+
className: cx({
|
|
1281
|
+
notSelected: !v.val
|
|
1282
|
+
}),
|
|
1283
|
+
attrs: {
|
|
1284
|
+
'v-index': index,
|
|
1285
|
+
'v-val': v.id || v.val,
|
|
1286
|
+
'v-type': type
|
|
1287
|
+
},
|
|
1288
|
+
onClick: selectConstant,
|
|
1289
|
+
node: _jsxs(_Fragment, {
|
|
1290
|
+
children: [getConstantLabel(listSource, v.id || v.val, v.val) || "\u8BF7\u9009\u62E9".concat(currentOtherType.label), renderDeleteIcon(v, index, groupType)]
|
|
845
1291
|
})
|
|
846
|
-
}
|
|
847
|
-
}
|
|
1292
|
+
};
|
|
1293
|
+
}
|
|
1294
|
+
if (type === AtomsTypeEnum.EXPRESSION) {
|
|
848
1295
|
if (~['早于', '晚于', '在'].indexOf(v.condition) && v.rhs.length > 1) {
|
|
849
|
-
var
|
|
850
|
-
var
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
setCaseList(
|
|
1296
|
+
var _nextList$index$quote;
|
|
1297
|
+
var nextList = caseList.slice();
|
|
1298
|
+
nextList[index].rhs = [nextList[index].rhs[0]];
|
|
1299
|
+
nextList[index].quotes = (_nextList$index$quote = nextList[index].quotes.split(' || ')) === null || _nextList$index$quote === void 0 ? void 0 : _nextList$index$quote[0];
|
|
1300
|
+
setCaseList(nextList);
|
|
854
1301
|
}
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
},
|
|
865
|
-
children: [v.quotes ? v.quotes : __('customColumn.selectExpression'), _jsx("span", {
|
|
866
|
-
className: 'item-del',
|
|
867
|
-
style: {
|
|
868
|
-
fontSize: 0
|
|
869
|
-
},
|
|
870
|
-
onClick: function onClick(e) {
|
|
871
|
-
return handleDel(e, index);
|
|
872
|
-
},
|
|
873
|
-
children: _jsx(CloseIcon, {})
|
|
874
|
-
})]
|
|
1302
|
+
return {
|
|
1303
|
+
className: cx('purple-name', {
|
|
1304
|
+
notSelected: !v.quotes
|
|
1305
|
+
}),
|
|
1306
|
+
onClick: function onClick(e) {
|
|
1307
|
+
return handleExpression(e, index, v);
|
|
1308
|
+
},
|
|
1309
|
+
node: _jsxs(_Fragment, {
|
|
1310
|
+
children: [v.quotes ? v.quotes : __('customColumn.selectExpression'), renderDeleteIcon(v, index, groupType)]
|
|
875
1311
|
})
|
|
876
|
-
}
|
|
877
|
-
}
|
|
878
|
-
|
|
879
|
-
return
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
1312
|
+
};
|
|
1313
|
+
}
|
|
1314
|
+
if (type === AtomsTypeEnum.CASE_WHEN) {
|
|
1315
|
+
return {
|
|
1316
|
+
raw: true,
|
|
1317
|
+
node: renderCaseWhenEditor(v, index)
|
|
1318
|
+
};
|
|
1319
|
+
}
|
|
1320
|
+
if (type === AtomsTypeEnum.AND_OR) {
|
|
1321
|
+
return {
|
|
1322
|
+
raw: true,
|
|
1323
|
+
node: renderAndOrEditor(v, index)
|
|
1324
|
+
};
|
|
1325
|
+
}
|
|
1326
|
+
if (type === AtomsTypeEnum.FORMULA) {
|
|
1327
|
+
return {
|
|
1328
|
+
className: 'gray-name',
|
|
1329
|
+
onClick: function onClick(e) {
|
|
1330
|
+
return showFunction(e, index);
|
|
1331
|
+
},
|
|
1332
|
+
node: _jsxs(_Fragment, {
|
|
1333
|
+
children: [v.name ? getQuotes(v, v.args, formulaList) : __('customColumn.selectFormula'), renderDeleteIcon(v, index, groupType)]
|
|
1334
|
+
})
|
|
1335
|
+
};
|
|
1336
|
+
}
|
|
1337
|
+
if (type === AtomsTypeEnum.SELECT) {
|
|
1338
|
+
return {
|
|
1339
|
+
className: cx('operator-trigger', {
|
|
1340
|
+
notSelected: !v.val,
|
|
1341
|
+
'flow-operator': v.val === 'caseWhen',
|
|
1342
|
+
'logic-operator': v.val === 'andOr'
|
|
1343
|
+
}),
|
|
1344
|
+
node: _jsx(Select, {
|
|
1345
|
+
triggerProps: getSelectTriggerProps(),
|
|
1346
|
+
multiple: v.multiple,
|
|
1347
|
+
value: v.val,
|
|
1348
|
+
triggerElement: function triggerElement() {
|
|
1349
|
+
return renderTokenContent(_jsxs(_Fragment, {
|
|
1350
|
+
children: [!v.val && __('customColumn.selectOperator'), v.val, !v.fixed && renderDeleteIcon(v, index, groupType)]
|
|
1351
|
+
}));
|
|
886
1352
|
},
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
},
|
|
895
|
-
|
|
896
|
-
})]
|
|
1353
|
+
onChange: function onChange(val) {
|
|
1354
|
+
handleConstant(val, index);
|
|
1355
|
+
},
|
|
1356
|
+
children: v.options.map(function (option, optionIndex) {
|
|
1357
|
+
return _jsx(Select.Option, {
|
|
1358
|
+
value: option.value,
|
|
1359
|
+
children: option.label
|
|
1360
|
+
}, optionIndex + '' + ind);
|
|
1361
|
+
})
|
|
897
1362
|
})
|
|
898
|
-
}
|
|
899
|
-
}
|
|
900
|
-
|
|
901
|
-
return
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
value: v.val,
|
|
907
|
-
triggerElement: function triggerElement(value) {
|
|
908
|
-
return _jsxs("div", {
|
|
909
|
-
className: cx("Sqb-TableName Sqb-TableName-OPERATOR", {
|
|
910
|
-
notSelected: !v.val
|
|
911
|
-
}),
|
|
912
|
-
children: [!v.val && __('customColumn.selectOperator'), v.val, !v.fixed && _jsx("span", {
|
|
913
|
-
className: 'item-del',
|
|
914
|
-
style: {
|
|
915
|
-
fontSize: 0
|
|
916
|
-
},
|
|
917
|
-
onClick: function onClick(e) {
|
|
918
|
-
return handleDel(e, index);
|
|
919
|
-
},
|
|
920
|
-
children: _jsx(CloseIcon, {})
|
|
921
|
-
})]
|
|
922
|
-
});
|
|
923
|
-
},
|
|
924
|
-
onChange: function onChange(val) {
|
|
925
|
-
handleConstant(val, index);
|
|
1363
|
+
};
|
|
1364
|
+
}
|
|
1365
|
+
if (groupType === 'logic') {
|
|
1366
|
+
return {
|
|
1367
|
+
className: cx('gray-name', 'notSelected'),
|
|
1368
|
+
style: {
|
|
1369
|
+
minWidth: 44,
|
|
1370
|
+
justifyContent: 'center'
|
|
926
1371
|
},
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
1372
|
+
node: selectOperator({
|
|
1373
|
+
triggerElement: function triggerElement() {
|
|
1374
|
+
return renderTokenContent(_jsx(AddIcon, {}));
|
|
1375
|
+
},
|
|
1376
|
+
ind: index,
|
|
1377
|
+
position: ''
|
|
932
1378
|
})
|
|
933
|
-
}
|
|
934
|
-
}
|
|
935
|
-
|
|
1379
|
+
};
|
|
1380
|
+
}
|
|
1381
|
+
return {
|
|
1382
|
+
className: cx({
|
|
1383
|
+
notSelected: true
|
|
1384
|
+
}),
|
|
1385
|
+
node: selectOperator({
|
|
936
1386
|
triggerElement: function triggerElement() {
|
|
937
|
-
return _jsxs(
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
}),
|
|
941
|
-
children: [__('customColumn.selectCustomInput'), _jsx("span", {
|
|
942
|
-
className: 'item-del',
|
|
943
|
-
style: {
|
|
944
|
-
fontSize: 0
|
|
945
|
-
},
|
|
946
|
-
onClick: function onClick(e) {
|
|
947
|
-
return handleDel(e, index);
|
|
948
|
-
},
|
|
949
|
-
children: _jsx(CloseIcon, {})
|
|
950
|
-
})]
|
|
951
|
-
});
|
|
1387
|
+
return renderTokenContent(_jsxs(_Fragment, {
|
|
1388
|
+
children: [__('customColumn.selectCustomInput'), renderDeleteIcon(v, index, groupType)]
|
|
1389
|
+
}));
|
|
952
1390
|
},
|
|
953
1391
|
ind: index,
|
|
954
1392
|
position: ''
|
|
955
|
-
})
|
|
956
|
-
}
|
|
1393
|
+
})
|
|
1394
|
+
};
|
|
957
1395
|
};
|
|
958
1396
|
var copyDom = function copyDom() {
|
|
959
1397
|
var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;
|
|
960
1398
|
var positioned = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
1399
|
+
if (embedded) return null;
|
|
961
1400
|
if (!isCopy || selectedIndices.length === 0 && checkedItemsCount === 0) return null;
|
|
962
1401
|
return _jsx("div", {
|
|
963
1402
|
className: cx('Sqb-Filter-item-copy', {
|
|
@@ -985,10 +1424,147 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
985
1424
|
})
|
|
986
1425
|
});
|
|
987
1426
|
};
|
|
1427
|
+
var renderItemShell = function renderItemShell(v, i, groupType, extraClassName) {
|
|
1428
|
+
var showCheckbox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
|
|
1429
|
+
var itemContent = itemDom(v, i, groupType);
|
|
1430
|
+
var isCompositeAtom = v.type === AtomsTypeEnum.CASE_WHEN || v.type === AtomsTypeEnum.AND_OR;
|
|
1431
|
+
var isPassiveCaseKeyword = groupType === 'caseWhen' && isFixedCaseOperator(v) || groupType === 'logic' && isFixedLogicOperator(v);
|
|
1432
|
+
return _jsx(React.Fragment, {
|
|
1433
|
+
children: _jsxs("div", {
|
|
1434
|
+
className: cx('Sqb-Filter-item', _defineProperty({
|
|
1435
|
+
hover: ind === i && hoveredCopyIndex !== i,
|
|
1436
|
+
'item-fixed': v.fixed || false,
|
|
1437
|
+
'item-selected': isCheck,
|
|
1438
|
+
'item-composite': isCompositeAtom,
|
|
1439
|
+
'group-child': groupType !== 'single',
|
|
1440
|
+
'group-flow-child': groupType === 'caseWhen',
|
|
1441
|
+
'group-logic-child': groupType === 'logic'
|
|
1442
|
+
}, extraClassName || '', !!extraClassName)),
|
|
1443
|
+
onMouseEnter: function onMouseEnter(e) {
|
|
1444
|
+
if (isCheck || isPassiveCaseKeyword) return;
|
|
1445
|
+
setInd(i);
|
|
1446
|
+
},
|
|
1447
|
+
onMouseLeave: function onMouseLeave() {
|
|
1448
|
+
if (isCheck || isPassiveCaseKeyword) return;
|
|
1449
|
+
setInd(-1);
|
|
1450
|
+
},
|
|
1451
|
+
children: [copyDom(i), canShowInsertArrows(v, groupType) && selectOperator({
|
|
1452
|
+
triggerElement: function triggerElement() {
|
|
1453
|
+
return _jsx("div", {
|
|
1454
|
+
className: 'left-arrow',
|
|
1455
|
+
"v-index": i,
|
|
1456
|
+
"v-type": 'before',
|
|
1457
|
+
onClick: function onClick() {
|
|
1458
|
+
if (!selectedIndices.length) addOperator(AtomsTypeEnum.UNKNOWN, i, 'before');
|
|
1459
|
+
},
|
|
1460
|
+
children: _jsx("img", {
|
|
1461
|
+
src: arrow
|
|
1462
|
+
})
|
|
1463
|
+
});
|
|
1464
|
+
},
|
|
1465
|
+
ind: i,
|
|
1466
|
+
position: 'before',
|
|
1467
|
+
trigger: 'hover'
|
|
1468
|
+
}), !embedded && showCheckbox && v.type !== AtomsTypeEnum.UNKNOWN && _jsx(Checkbox, {
|
|
1469
|
+
className: 'item-check',
|
|
1470
|
+
checked: selectedIndices.includes(i),
|
|
1471
|
+
disabled: globalSelectionActive && globalSelectionOwner !== myInstanceIdRef.current,
|
|
1472
|
+
onChange: function onChange(e) {
|
|
1473
|
+
var _e$target$checked, _e$target;
|
|
1474
|
+
return toggleSelect(i, (_e$target$checked = e === null || e === void 0 || (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.checked) !== null && _e$target$checked !== void 0 ? _e$target$checked : !selectedIndices.includes(i));
|
|
1475
|
+
}
|
|
1476
|
+
}), _jsx("div", {
|
|
1477
|
+
style: {
|
|
1478
|
+
pointerEvents: isCheck || store.isMetabaseCopy ? 'none' : 'auto'
|
|
1479
|
+
},
|
|
1480
|
+
className: cx({
|
|
1481
|
+
openCheck: isCheck
|
|
1482
|
+
}),
|
|
1483
|
+
children: _jsx(ItemName, _objectSpread(_objectSpread({}, getItemNameProps(v)), {}, {
|
|
1484
|
+
children: itemContent.raw ? itemContent.node : _jsx("div", _objectSpread(_objectSpread({
|
|
1485
|
+
className: cx('Sqb-TableName', itemContent.className),
|
|
1486
|
+
onClick: itemContent.onClick,
|
|
1487
|
+
style: itemContent.style
|
|
1488
|
+
}, itemContent.attrs || {}), {}, {
|
|
1489
|
+
children: itemContent.node
|
|
1490
|
+
}))
|
|
1491
|
+
}))
|
|
1492
|
+
}), canShowInsertArrows(v, groupType) && selectOperator({
|
|
1493
|
+
triggerElement: function triggerElement(value) {
|
|
1494
|
+
return _jsx("div", {
|
|
1495
|
+
className: 'right-arrow',
|
|
1496
|
+
"v-index": i,
|
|
1497
|
+
"v-type": 'after',
|
|
1498
|
+
onClick: function onClick() {
|
|
1499
|
+
addOperator(AtomsTypeEnum.UNKNOWN, i, 'after');
|
|
1500
|
+
},
|
|
1501
|
+
children: _jsx("img", {
|
|
1502
|
+
src: arrow
|
|
1503
|
+
})
|
|
1504
|
+
});
|
|
1505
|
+
},
|
|
1506
|
+
ind: i,
|
|
1507
|
+
position: 'after',
|
|
1508
|
+
trigger: 'hover'
|
|
1509
|
+
})]
|
|
1510
|
+
})
|
|
1511
|
+
}, i);
|
|
1512
|
+
};
|
|
1513
|
+
var renderCaseSection = function renderCaseSection(itemIndices, groupType, sectionClassName) {
|
|
1514
|
+
return itemIndices.map(function (itemIndex) {
|
|
1515
|
+
return renderItemShell(caseList[itemIndex], itemIndex, groupType, "case-row-item ".concat(sectionClassName), false);
|
|
1516
|
+
});
|
|
1517
|
+
};
|
|
1518
|
+
var renderDeleteIcon = function renderDeleteIcon(item, index, groupType) {
|
|
1519
|
+
if (!canDeleteItem(item, groupType)) return null;
|
|
1520
|
+
return _jsx("span", {
|
|
1521
|
+
className: 'item-del',
|
|
1522
|
+
style: {
|
|
1523
|
+
fontSize: 0
|
|
1524
|
+
},
|
|
1525
|
+
onClick: function onClick(e) {
|
|
1526
|
+
return handleDel(e, index);
|
|
1527
|
+
},
|
|
1528
|
+
children: _jsx(CloseIcon, {})
|
|
1529
|
+
});
|
|
1530
|
+
};
|
|
1531
|
+
var renderCaseRecoverButton = function renderCaseRecoverButton(onClick, className, label) {
|
|
1532
|
+
return _jsxs("button", {
|
|
1533
|
+
type: 'button',
|
|
1534
|
+
className: cx('Sqb-CaseRecover', className),
|
|
1535
|
+
onClick: onClick,
|
|
1536
|
+
children: [_jsx(FfPlus, {}), _jsx("span", {
|
|
1537
|
+
children: label
|
|
1538
|
+
})]
|
|
1539
|
+
});
|
|
1540
|
+
};
|
|
1541
|
+
var renderGroupInsertArrow = function renderGroupInsertArrow(index, position) {
|
|
1542
|
+
return selectOperator({
|
|
1543
|
+
triggerElement: function triggerElement() {
|
|
1544
|
+
return _jsx("div", {
|
|
1545
|
+
className: position === 'before' ? 'left-arrow' : 'right-arrow',
|
|
1546
|
+
"v-index": index,
|
|
1547
|
+
"v-type": position,
|
|
1548
|
+
onClick: function onClick() {
|
|
1549
|
+
if (position === 'before' && selectedIndices.length) return;
|
|
1550
|
+
addOperator(AtomsTypeEnum.UNKNOWN, index, position);
|
|
1551
|
+
},
|
|
1552
|
+
children: _jsx("img", {
|
|
1553
|
+
src: arrow
|
|
1554
|
+
})
|
|
1555
|
+
});
|
|
1556
|
+
},
|
|
1557
|
+
ind: index,
|
|
1558
|
+
position: position,
|
|
1559
|
+
trigger: 'hover'
|
|
1560
|
+
});
|
|
1561
|
+
};
|
|
988
1562
|
return _jsx(_Fragment, {
|
|
989
1563
|
children: _jsxs("div", {
|
|
990
|
-
className:
|
|
991
|
-
|
|
1564
|
+
className: cx('Sqb-NotebookCell', {
|
|
1565
|
+
'Sqb-NotebookCell--embedded': embedded
|
|
1566
|
+
}),
|
|
1567
|
+
children: [!embedded && isCopy && caseList.length > 0 && _jsxs(Space, {
|
|
992
1568
|
size: 'small',
|
|
993
1569
|
direction: 'vertical',
|
|
994
1570
|
className: cx('item-isCheck', {
|
|
@@ -1027,75 +1603,8 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
1027
1603
|
},
|
|
1028
1604
|
children: "\u6E05\u9664\u590D\u5236"
|
|
1029
1605
|
})]
|
|
1030
|
-
}),
|
|
1031
|
-
return
|
|
1032
|
-
children: _jsxs("div", {
|
|
1033
|
-
className: cx('Sqb-Filter-item', {
|
|
1034
|
-
hover: ind === i && hoveredCopyIndex !== i,
|
|
1035
|
-
'item-fixed': v.fixed || false,
|
|
1036
|
-
'item-selected': isCheck
|
|
1037
|
-
}),
|
|
1038
|
-
onMouseEnter: function onMouseEnter(e) {
|
|
1039
|
-
if (isCheck) return;
|
|
1040
|
-
setInd(i);
|
|
1041
|
-
},
|
|
1042
|
-
onMouseLeave: function onMouseLeave() {
|
|
1043
|
-
if (isCheck) return;
|
|
1044
|
-
setInd(-1);
|
|
1045
|
-
},
|
|
1046
|
-
children: [copyDom(i), selectOperator({
|
|
1047
|
-
triggerElement: function triggerElement() {
|
|
1048
|
-
return _jsx("div", {
|
|
1049
|
-
className: 'left-arrow',
|
|
1050
|
-
"v-index": i,
|
|
1051
|
-
"v-type": 'before',
|
|
1052
|
-
onClick: function onClick() {
|
|
1053
|
-
if (!selectedIndices.length) addOperator(AtomsTypeEnum.UNKNOWN, i, 'before');
|
|
1054
|
-
},
|
|
1055
|
-
children: _jsx("img", {
|
|
1056
|
-
src: arrow
|
|
1057
|
-
})
|
|
1058
|
-
});
|
|
1059
|
-
},
|
|
1060
|
-
ind: i,
|
|
1061
|
-
position: 'before',
|
|
1062
|
-
trigger: 'hover'
|
|
1063
|
-
}), v.type !== AtomsTypeEnum.UNKNOWN && _jsx(Checkbox, {
|
|
1064
|
-
className: 'item-check',
|
|
1065
|
-
checked: selectedIndices.includes(i),
|
|
1066
|
-
disabled: globalSelectionActive && globalSelectionOwner !== myInstanceIdRef.current,
|
|
1067
|
-
onChange: function onChange(e) {
|
|
1068
|
-
var _e$target$checked, _e$target;
|
|
1069
|
-
return toggleSelect(i, (_e$target$checked = e === null || e === void 0 || (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.checked) !== null && _e$target$checked !== void 0 ? _e$target$checked : !selectedIndices.includes(i));
|
|
1070
|
-
}
|
|
1071
|
-
}), _jsx("div", {
|
|
1072
|
-
style: {
|
|
1073
|
-
pointerEvents: isCheck || store.isMetabaseCopy ? 'none' : 'auto'
|
|
1074
|
-
},
|
|
1075
|
-
className: cx('Sqb-Filter-item-content', {
|
|
1076
|
-
openCheck: isCheck
|
|
1077
|
-
}),
|
|
1078
|
-
children: itemDom(v, i)
|
|
1079
|
-
}), selectOperator({
|
|
1080
|
-
triggerElement: function triggerElement(value) {
|
|
1081
|
-
return _jsx("div", {
|
|
1082
|
-
className: 'right-arrow',
|
|
1083
|
-
"v-index": i,
|
|
1084
|
-
"v-type": 'after',
|
|
1085
|
-
onClick: function onClick() {
|
|
1086
|
-
addOperator(AtomsTypeEnum.UNKNOWN, i, 'after');
|
|
1087
|
-
},
|
|
1088
|
-
children: _jsx("img", {
|
|
1089
|
-
src: arrow
|
|
1090
|
-
})
|
|
1091
|
-
});
|
|
1092
|
-
},
|
|
1093
|
-
ind: i,
|
|
1094
|
-
position: 'after',
|
|
1095
|
-
trigger: 'hover'
|
|
1096
|
-
})]
|
|
1097
|
-
}, i)
|
|
1098
|
-
}, i);
|
|
1606
|
+
}), caseList.map(function (item, itemIndex) {
|
|
1607
|
+
return renderItemShell(item, itemIndex, 'single');
|
|
1099
1608
|
}), Array.from(caseList).length < 1 && selectOperator({
|
|
1100
1609
|
triggerElement: function triggerElement() {
|
|
1101
1610
|
return _jsx("div", {
|
|
@@ -1106,7 +1615,7 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
1106
1615
|
ind: -1,
|
|
1107
1616
|
position: 'add',
|
|
1108
1617
|
trigger: 'click'
|
|
1109
|
-
}), copyDom(-1, false), showPreview && _jsx("div", {
|
|
1618
|
+
}), !embedded && copyDom(-1, false), !embedded && showPreview && _jsx("div", {
|
|
1110
1619
|
className: cx("mb-2 font-bold uppercase tracking-wider preview-box"),
|
|
1111
1620
|
style: {
|
|
1112
1621
|
fontSize: 12,
|
|
@@ -1149,54 +1658,10 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
1149
1658
|
isSqlError: errorInfo.isError
|
|
1150
1659
|
}),
|
|
1151
1660
|
children: caseList.map(function (v, i) {
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
}, i);
|
|
1157
|
-
} else if (v !== null && v !== void 0 && v.fieldName) {
|
|
1158
|
-
return _jsx("span", {
|
|
1159
|
-
className: 'mr-1',
|
|
1160
|
-
children: v === null || v === void 0 ? void 0 : v.fieldName
|
|
1161
|
-
}, i);
|
|
1162
|
-
} else {
|
|
1163
|
-
if (v.type === AtomsTypeEnum.OPERATOR && (v.val === 'and' || v.val === 'or')) {
|
|
1164
|
-
return _jsxs("span", {
|
|
1165
|
-
className: 'mr-1',
|
|
1166
|
-
children: [_jsx("br", {}), v.val, _jsx("br", {})]
|
|
1167
|
-
}, i);
|
|
1168
|
-
}
|
|
1169
|
-
if (v.type === AtomsTypeEnum.OPERATOR) {
|
|
1170
|
-
if (v.val === '(' || v.val === ')') {
|
|
1171
|
-
return _jsx("span", {
|
|
1172
|
-
className: cx('mr-1', {
|
|
1173
|
-
error: errorInfo.isBracket
|
|
1174
|
-
}),
|
|
1175
|
-
children: v.val
|
|
1176
|
-
}, i);
|
|
1177
|
-
}
|
|
1178
|
-
if (v.val === 'case' || v.val === 'end' || v.val === 'when' || v.val === 'then') {
|
|
1179
|
-
return _jsx("span", {
|
|
1180
|
-
className: cx('mr-1', {
|
|
1181
|
-
error: errorInfo.isCase
|
|
1182
|
-
}),
|
|
1183
|
-
children: v.val
|
|
1184
|
-
}, i);
|
|
1185
|
-
}
|
|
1186
|
-
if (v.val === 'over') {
|
|
1187
|
-
return _jsx("span", {
|
|
1188
|
-
className: cx('mr-1', {
|
|
1189
|
-
error: errorInfo.isOver
|
|
1190
|
-
}),
|
|
1191
|
-
children: v.val
|
|
1192
|
-
}, i);
|
|
1193
|
-
}
|
|
1194
|
-
}
|
|
1195
|
-
return _jsx("span", {
|
|
1196
|
-
className: 'mr-1',
|
|
1197
|
-
children: v.val
|
|
1198
|
-
}, i);
|
|
1199
|
-
}
|
|
1661
|
+
return _jsx("span", {
|
|
1662
|
+
className: 'mr-1',
|
|
1663
|
+
children: getItemDisplayText(v)
|
|
1664
|
+
}, i);
|
|
1200
1665
|
})
|
|
1201
1666
|
}), _jsx("div", {
|
|
1202
1667
|
className: 'errorMsg mt-2',
|