@gingkoo/pandora-metabase 1.0.22 → 1.0.24
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/components/dialog/custom-editor/index.js +2 -2
- package/lib/cjs/components/dialog/expression/index.js +1 -1
- package/lib/cjs/components/dialog/formula/index.d.ts +10 -0
- package/lib/cjs/components/dialog/formula/index.js +242 -0
- package/lib/cjs/components/dialog/formula/index.less +81 -0
- package/lib/cjs/components/dialog/formula/utils.d.ts +7 -0
- package/lib/cjs/components/dialog/formula/utils.js +45 -0
- package/lib/cjs/components/dialog/formula-list/index.d.ts +2 -2
- package/lib/cjs/components/dialog/formula-list/index.js +87 -29
- package/lib/cjs/components/dialog/formula-list/utils.d.ts +14 -1
- package/lib/cjs/components/dialog/formula-list/utils.js +159 -2
- package/lib/cjs/components/metabase/index.less +1 -0
- package/lib/cjs/components/modules/enum/filter-enum.d.ts +7 -2
- package/lib/cjs/components/modules/enum/filter-enum.js +8 -2
- package/lib/cjs/components/modules/join-data.js +27 -2
- package/lib/cjs/hooks/patch.js +81 -79
- package/lib/cjs/hooks/use-state.js +33 -27
- package/lib/cjs/index.js +3 -1
- package/lib/cjs/locale/en.js +4 -2
- package/lib/cjs/locale/zh.js +4 -2
- package/lib/cjs/store/helper.d.ts +1 -2
- package/lib/cjs/store/helper.js +1 -76
- package/lib/cjs/store/types.d.ts +36 -2
- package/lib/cjs/store/types.js +3 -0
- package/lib/cjs/types.d.ts +2 -1
- package/lib/cjs/utils.js +2 -1
- package/lib/es/components/dialog/custom-editor/index.js +2 -2
- package/lib/es/components/dialog/expression/index.js +1 -1
- package/lib/es/components/dialog/formula/index.d.ts +10 -0
- package/lib/es/components/dialog/formula/index.js +236 -0
- package/lib/es/components/dialog/formula/index.less +81 -0
- package/lib/es/components/dialog/formula/utils.d.ts +7 -0
- package/lib/es/components/dialog/formula/utils.js +37 -0
- package/lib/es/components/dialog/formula-list/index.d.ts +2 -2
- package/lib/es/components/dialog/formula-list/index.js +84 -26
- package/lib/es/components/dialog/formula-list/utils.d.ts +14 -1
- package/lib/es/components/dialog/formula-list/utils.js +160 -2
- package/lib/es/components/metabase/index.less +1 -0
- package/lib/es/components/modules/enum/filter-enum.d.ts +7 -2
- package/lib/es/components/modules/enum/filter-enum.js +8 -2
- package/lib/es/components/modules/join-data.js +27 -2
- package/lib/es/hooks/patch.js +81 -79
- package/lib/es/hooks/use-state.js +33 -27
- package/lib/es/index.js +3 -1
- package/lib/es/locale/en.js +4 -2
- package/lib/es/locale/zh.js +4 -2
- package/lib/es/store/helper.d.ts +1 -2
- package/lib/es/store/helper.js +0 -75
- package/lib/es/store/types.d.ts +36 -2
- package/lib/es/store/types.js +3 -0
- package/lib/es/types.d.ts +2 -1
- package/lib/es/types.js +18 -1
- package/lib/es/utils.js +2 -1
- package/package.json +1 -1
- package/lib/cjs/components/dialog/formula-list/enum.d.ts +0 -39
- package/lib/cjs/components/dialog/formula-list/enum.js +0 -123
- package/lib/es/components/dialog/formula-list/enum.d.ts +0 -39
- package/lib/es/components/dialog/formula-list/enum.js +0 -117
|
@@ -12,6 +12,7 @@ var _react = require("react");
|
|
|
12
12
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
13
|
require("./index.less");
|
|
14
14
|
var _formulaList = _interopRequireDefault(require("../formula-list"));
|
|
15
|
+
var _utils = require("../formula-list/utils");
|
|
15
16
|
var _locale = require("../../../locale");
|
|
16
17
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
17
18
|
var _pandora = require("@gingkoo/pandora");
|
|
@@ -36,7 +37,7 @@ var CaseEditor = function CaseEditor(props) {
|
|
|
36
37
|
var ref = (0, _react.useRef)(null);
|
|
37
38
|
// 提交按钮是否可用
|
|
38
39
|
var usable = (0, _react.useMemo)(function () {
|
|
39
|
-
return
|
|
40
|
+
return (0, _utils.isOk)(caseList) && name;
|
|
40
41
|
}, [caseList, name]);
|
|
41
42
|
// 取消
|
|
42
43
|
var _onClose = function _onClose() {
|
|
@@ -78,7 +79,6 @@ var CaseEditor = function CaseEditor(props) {
|
|
|
78
79
|
})
|
|
79
80
|
})]
|
|
80
81
|
}), (0, _jsxRuntime.jsx)(_formulaList["default"], {
|
|
81
|
-
isCustom: true,
|
|
82
82
|
value: caseList,
|
|
83
83
|
data: data,
|
|
84
84
|
ref: ref,
|
|
@@ -629,7 +629,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
629
629
|
value: '',
|
|
630
630
|
list: [{
|
|
631
631
|
value: _types.AtomsTypeEnum.INPUT_STRING,
|
|
632
|
-
label: (0, _locale.__)('
|
|
632
|
+
label: (0, _locale.__)('customColumn.input')
|
|
633
633
|
}, {
|
|
634
634
|
value: _types.AtomsTypeEnum.CONSTANT,
|
|
635
635
|
label: (0, _locale.__)('customColumn.constant')
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import './index.less';
|
|
2
|
+
import { AtomsFormula } from '../../../store/types';
|
|
3
|
+
interface PropsType {
|
|
4
|
+
value: AtomsFormula;
|
|
5
|
+
data: any;
|
|
6
|
+
onOk: Function;
|
|
7
|
+
onCancel: Function;
|
|
8
|
+
}
|
|
9
|
+
declare const CaseEditor: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export default CaseEditor;
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/taggedTemplateLiteral"));
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
var _react = require("react");
|
|
13
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
14
|
+
require("./index.less");
|
|
15
|
+
var _formulaList = _interopRequireDefault(require("../formula-list"));
|
|
16
|
+
var _icons = require("../../icons");
|
|
17
|
+
var _utils = require("../formula-list/utils");
|
|
18
|
+
var _locale = require("../../../locale");
|
|
19
|
+
var _utils2 = require("./utils");
|
|
20
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
21
|
+
var _types = require("../../../store/types");
|
|
22
|
+
var _pandora = require("@gingkoo/pandora");
|
|
23
|
+
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
24
|
+
var _useProvider = require("../../../hooks/use-provider");
|
|
25
|
+
var _templateObject; // import { OptionsTypeEnum, customTypes, otherList, operatorList, functionList } from './enum';
|
|
26
|
+
var VisualBox = _styledComponents["default"].div.attrs({
|
|
27
|
+
className: 'visual-box'
|
|
28
|
+
})(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])([""])));
|
|
29
|
+
var CaseEditor = function CaseEditor(props) {
|
|
30
|
+
var _store$formulaTemplat, _fun$args;
|
|
31
|
+
var store = (0, _useProvider.useStore)();
|
|
32
|
+
var value = props.value,
|
|
33
|
+
data = props.data,
|
|
34
|
+
onOk = props.onOk,
|
|
35
|
+
onCancel = props.onCancel;
|
|
36
|
+
var _useState = (0, _react.useState)(value),
|
|
37
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
38
|
+
fun = _useState2[0],
|
|
39
|
+
setFun = _useState2[1];
|
|
40
|
+
var _useState3 = (0, _react.useState)((0, _utils2.getObjTem)(store.formulaTemplates)),
|
|
41
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
42
|
+
formulaList = _useState4[0],
|
|
43
|
+
setFunctionList = _useState4[1];
|
|
44
|
+
var _useState5 = (0, _react.useState)({
|
|
45
|
+
canAdd: true,
|
|
46
|
+
canDel: true
|
|
47
|
+
}),
|
|
48
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
49
|
+
formulaOpr = _useState6[0],
|
|
50
|
+
setFormulaOpr = _useState6[1];
|
|
51
|
+
(0, _react.useEffect)(function () {
|
|
52
|
+
setFormulaOpr((0, _utils2.getParamActions)(fun.args, fun.arity));
|
|
53
|
+
}, [fun]);
|
|
54
|
+
var ref = (0, _react.useRef)(null);
|
|
55
|
+
// EXPRESSION = 'expression', // 表达式
|
|
56
|
+
// // FUNCTION = 'function', // 函数
|
|
57
|
+
// INPUT_STRING = 'inputString', // 字符串输入框
|
|
58
|
+
// INPUT_STRING_LIST = 'inputStringList', // 字符串输入框
|
|
59
|
+
// INPUT_NUMBER_LIST = 'inputNumberList', // 数字输入框
|
|
60
|
+
// INPUT_NUMBER = 'inputNumber', // 数字输入框
|
|
61
|
+
// CONSTANT = 'constant', // 常量
|
|
62
|
+
// OPERATOR = 'operator', // 运算符
|
|
63
|
+
// UNKNOWN = 'unknown', //未选具体类型
|
|
64
|
+
// FORMULA = 'FORMULA',
|
|
65
|
+
// COLLECTION = 'collection',
|
|
66
|
+
// 提交按钮是否可用
|
|
67
|
+
var usable = (0, _react.useMemo)(function () {
|
|
68
|
+
return fun.name && (0, _utils.isOk)(fun.args);
|
|
69
|
+
}, [fun]);
|
|
70
|
+
// 取消
|
|
71
|
+
var _onClose = function _onClose() {
|
|
72
|
+
onCancel === null || onCancel === void 0 || onCancel();
|
|
73
|
+
};
|
|
74
|
+
// 确定
|
|
75
|
+
var _onOk = function _onOk() {
|
|
76
|
+
typeof onOk === 'function' && (onOk === null || onOk === void 0 ? void 0 : onOk(fun));
|
|
77
|
+
};
|
|
78
|
+
// 选择公式名
|
|
79
|
+
var handleFunName = function handleFunName(name) {
|
|
80
|
+
var _formulaList$name;
|
|
81
|
+
formulaList === null || formulaList === void 0 || formulaList[name].args;
|
|
82
|
+
setFun((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, fun), {}, {
|
|
83
|
+
args: (0, _utils2.getTemArgs)(formulaList === null || formulaList === void 0 ? void 0 : formulaList[name].args),
|
|
84
|
+
arity: formulaList === null || formulaList === void 0 || (_formulaList$name = formulaList[name]) === null || _formulaList$name === void 0 ? void 0 : _formulaList$name.arity,
|
|
85
|
+
name: name
|
|
86
|
+
}));
|
|
87
|
+
};
|
|
88
|
+
var addParams = function addParams(index) {
|
|
89
|
+
var _args = (0, _cloneDeep["default"])(fun.args);
|
|
90
|
+
var tem = (0, _utils2.getTemArgs)(formulaList === null || formulaList === void 0 ? void 0 : formulaList[fun.name].args)[index + 1] || {
|
|
91
|
+
type: _types.AtomsTypeEnum.COLLECTION,
|
|
92
|
+
list: []
|
|
93
|
+
};
|
|
94
|
+
_args.splice(index + 1, 0, tem);
|
|
95
|
+
setFun((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, fun), {}, {
|
|
96
|
+
args: _args
|
|
97
|
+
}));
|
|
98
|
+
};
|
|
99
|
+
var delParams = function delParams(index) {
|
|
100
|
+
var _args = (0, _cloneDeep["default"])(fun.args);
|
|
101
|
+
_args.splice(index, 1);
|
|
102
|
+
setFun((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, fun), {}, {
|
|
103
|
+
args: _args
|
|
104
|
+
}));
|
|
105
|
+
};
|
|
106
|
+
return (0, _jsxRuntime.jsxs)("div", {
|
|
107
|
+
className: 'function-box',
|
|
108
|
+
ref: ref,
|
|
109
|
+
children: [(0, _jsxRuntime.jsx)(VisualBox, {
|
|
110
|
+
children: (0, _jsxRuntime.jsx)("div", {
|
|
111
|
+
className: "Sqb-item Sqb-case-editor mb-2 mt-2",
|
|
112
|
+
children: (0, _jsxRuntime.jsxs)("div", {
|
|
113
|
+
className: "Sqb-item--content",
|
|
114
|
+
children: [(0, _jsxRuntime.jsxs)("div", {
|
|
115
|
+
className: 'Sqb-NotebookCell-header',
|
|
116
|
+
children: [(0, _jsxRuntime.jsx)("div", {
|
|
117
|
+
className: "mb-2 font-bold uppercase tracking-wider",
|
|
118
|
+
style: {
|
|
119
|
+
fontSize: 12,
|
|
120
|
+
color: '#949aab'
|
|
121
|
+
},
|
|
122
|
+
children: "\u8BF7\u5148\u9009\u62E9\u516C\u5F0F\uFF0C\u5207\u6362\u516C\u5F0F\u65F6\u4F1A\u91CD\u7F6E\u53C2\u6570"
|
|
123
|
+
}), (0, _jsxRuntime.jsx)("div", {
|
|
124
|
+
className: 'Sqb-NotebookCell formula-name',
|
|
125
|
+
children: (0, _jsxRuntime.jsx)(_pandora.Select, {
|
|
126
|
+
triggerProps: {
|
|
127
|
+
clickToClose: true
|
|
128
|
+
},
|
|
129
|
+
value: fun.name,
|
|
130
|
+
triggerElement: function triggerElement(value) {
|
|
131
|
+
return (0, _jsxRuntime.jsx)("div", {
|
|
132
|
+
className: (0, _classnames["default"])("Sqb-TableName Sqb-TableName-OPERATOR", {
|
|
133
|
+
notSelected: !fun.name
|
|
134
|
+
}),
|
|
135
|
+
children: fun.name ? fun.name : (0, _locale.__)('customColumn.selectFormula')
|
|
136
|
+
});
|
|
137
|
+
},
|
|
138
|
+
onChange: function onChange(val) {
|
|
139
|
+
handleFunName(val);
|
|
140
|
+
},
|
|
141
|
+
children: (_store$formulaTemplat = store.formulaTemplates) === null || _store$formulaTemplat === void 0 ? void 0 : _store$formulaTemplat.map(function (option, index) {
|
|
142
|
+
return (0, _jsxRuntime.jsx)(_pandora.Select.Option, {
|
|
143
|
+
value: option.name,
|
|
144
|
+
children: option.name
|
|
145
|
+
}, index);
|
|
146
|
+
})
|
|
147
|
+
})
|
|
148
|
+
}), fun.name && (0, _jsxRuntime.jsxs)("div", {
|
|
149
|
+
className: "mb-2 font-bold uppercase tracking-wider",
|
|
150
|
+
style: {
|
|
151
|
+
fontSize: 12,
|
|
152
|
+
color: '#949aab'
|
|
153
|
+
},
|
|
154
|
+
children: [(0, _jsxRuntime.jsxs)("p", {
|
|
155
|
+
children: ["\u63CF\u8FF0\uFF1A", formulaList[fun.name].description]
|
|
156
|
+
}), (0, _jsxRuntime.jsxs)("p", {
|
|
157
|
+
children: ["\u6848\u4F8B\uFF1A", formulaList[fun.name].example]
|
|
158
|
+
})]
|
|
159
|
+
})]
|
|
160
|
+
}), fun === null || fun === void 0 || (_fun$args = fun.args) === null || _fun$args === void 0 ? void 0 : _fun$args.map(function (v, i) {
|
|
161
|
+
if (v.type === _types.AtomsTypeEnum.COLLECTION) {
|
|
162
|
+
var _formulaList$fun$name;
|
|
163
|
+
return (0, _jsxRuntime.jsxs)("div", {
|
|
164
|
+
className: 'Sqb-item-formula-args',
|
|
165
|
+
children: [(0, _jsxRuntime.jsxs)("div", {
|
|
166
|
+
className: 'Sqb-item-formula',
|
|
167
|
+
children: [(0, _jsxRuntime.jsxs)("div", {
|
|
168
|
+
className: "mb-2 font-bold uppercase tracking-wider",
|
|
169
|
+
style: {
|
|
170
|
+
fontSize: 12,
|
|
171
|
+
color: '#949aab'
|
|
172
|
+
},
|
|
173
|
+
children: ["\u53C2\u6570", i + 1, ":"]
|
|
174
|
+
}), (0, _jsxRuntime.jsx)(_formulaList["default"], {
|
|
175
|
+
check: (formulaList === null || formulaList === void 0 || (_formulaList$fun$name = formulaList[fun.name]) === null || _formulaList$fun$name === void 0 || (_formulaList$fun$name = _formulaList$fun$name.args) === null || _formulaList$fun$name === void 0 || (_formulaList$fun$name = _formulaList$fun$name[i]) === null || _formulaList$fun$name === void 0 ? void 0 : _formulaList$fun$name.check) || '',
|
|
176
|
+
value: v.list,
|
|
177
|
+
data: data,
|
|
178
|
+
ref: ref,
|
|
179
|
+
onChange: function onChange(data, _quotes) {
|
|
180
|
+
var _args = (0, _cloneDeep["default"])(fun.args);
|
|
181
|
+
_args[i].list = data;
|
|
182
|
+
_args[i].quotes = _quotes || '';
|
|
183
|
+
var quotes = _args.map(function (v) {
|
|
184
|
+
return v.quotes;
|
|
185
|
+
}).join(' , ');
|
|
186
|
+
setFun((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, fun), {}, {
|
|
187
|
+
quotes: fun.name + ' ( ' + quotes + ' ) ',
|
|
188
|
+
args: _args
|
|
189
|
+
}));
|
|
190
|
+
}
|
|
191
|
+
})]
|
|
192
|
+
}), (0, _jsxRuntime.jsxs)("div", {
|
|
193
|
+
className: 'Sqb-item-opr',
|
|
194
|
+
children: [(0, _jsxRuntime.jsx)(_pandora.Button, {
|
|
195
|
+
primary: true,
|
|
196
|
+
disabled: !formulaOpr.canAdd,
|
|
197
|
+
shape: 'square',
|
|
198
|
+
icon: (0, _jsxRuntime.jsx)(_icons.AddIcon, {}),
|
|
199
|
+
onClick: function onClick() {
|
|
200
|
+
addParams(i);
|
|
201
|
+
}
|
|
202
|
+
}), (0, _jsxRuntime.jsx)(_pandora.Button, {
|
|
203
|
+
primary: true,
|
|
204
|
+
level: 'danger',
|
|
205
|
+
shape: 'square',
|
|
206
|
+
icon: (0, _jsxRuntime.jsx)(_icons.CloseIcon, {}),
|
|
207
|
+
disabled: !formulaOpr.canDel,
|
|
208
|
+
onClick: function onClick() {
|
|
209
|
+
delParams(i);
|
|
210
|
+
}
|
|
211
|
+
})]
|
|
212
|
+
})]
|
|
213
|
+
}, i);
|
|
214
|
+
}
|
|
215
|
+
})]
|
|
216
|
+
})
|
|
217
|
+
})
|
|
218
|
+
}), (0, _jsxRuntime.jsx)("div", {
|
|
219
|
+
className: "btns p-4",
|
|
220
|
+
children: (0, _jsxRuntime.jsxs)("div", {
|
|
221
|
+
style: {
|
|
222
|
+
marginLeft: 'auto'
|
|
223
|
+
},
|
|
224
|
+
children: [(0, _jsxRuntime.jsx)("button", {
|
|
225
|
+
className: "btn",
|
|
226
|
+
onClick: function onClick() {
|
|
227
|
+
return _onClose();
|
|
228
|
+
},
|
|
229
|
+
children: (0, _locale.__)('customColumn.cancel')
|
|
230
|
+
}), (0, _jsxRuntime.jsx)("button", {
|
|
231
|
+
className: (0, _classnames["default"])("btn ml-4", {
|
|
232
|
+
usable: usable
|
|
233
|
+
}),
|
|
234
|
+
disabled: !usable,
|
|
235
|
+
onClick: _onOk,
|
|
236
|
+
children: (0, _locale.__)('customColumn.complete')
|
|
237
|
+
})]
|
|
238
|
+
})
|
|
239
|
+
})]
|
|
240
|
+
});
|
|
241
|
+
};
|
|
242
|
+
var _default = exports["default"] = CaseEditor;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
.function-box {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
height: 100%;
|
|
5
|
+
width: 100%;
|
|
6
|
+
.visual-box {
|
|
7
|
+
flex: 1;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.Sqb-case-editor {
|
|
11
|
+
padding: 20px 20px 50px;
|
|
12
|
+
.Sqb-item--content {
|
|
13
|
+
width: 100%;
|
|
14
|
+
height: 100%;
|
|
15
|
+
.Sqb-item-formula-args {
|
|
16
|
+
display: flex;
|
|
17
|
+
align-items: center;
|
|
18
|
+
margin: 20px 0;
|
|
19
|
+
.Sqb-item-formula {
|
|
20
|
+
flex: 1;
|
|
21
|
+
}
|
|
22
|
+
.Sqb-item-opr {
|
|
23
|
+
display: flex;
|
|
24
|
+
gap: 10px;
|
|
25
|
+
margin-left: 10px;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.btns {
|
|
32
|
+
flex-direction: row;
|
|
33
|
+
align-items: center;
|
|
34
|
+
display: flex;
|
|
35
|
+
border-top: 1px solid #f0f0f0;
|
|
36
|
+
// position: absolute;
|
|
37
|
+
width: 100%;
|
|
38
|
+
bottom: 0;
|
|
39
|
+
z-index: 3;
|
|
40
|
+
background-color: #fff;
|
|
41
|
+
.btn {
|
|
42
|
+
padding: 0.75rem 1rem;
|
|
43
|
+
|
|
44
|
+
display: inline-block;
|
|
45
|
+
box-sizing: border-box;
|
|
46
|
+
text-decoration: none;
|
|
47
|
+
background: transparent;
|
|
48
|
+
border: 1px solid rgb(228, 228, 228);
|
|
49
|
+
color: #4c5773;
|
|
50
|
+
cursor: pointer;
|
|
51
|
+
text-decoration: none;
|
|
52
|
+
font-weight: bold;
|
|
53
|
+
font-family: 'Lato', sans-serif;
|
|
54
|
+
border-radius: 6px;
|
|
55
|
+
|
|
56
|
+
outline: none;
|
|
57
|
+
|
|
58
|
+
&:disabled {
|
|
59
|
+
opacity: 0.5;
|
|
60
|
+
cursor: not-allowed;
|
|
61
|
+
}
|
|
62
|
+
&:not(:disabled):hover {
|
|
63
|
+
color: #509ee3;
|
|
64
|
+
border-color: rgb(214, 214, 214);
|
|
65
|
+
background: #f9fbfc;
|
|
66
|
+
transition: all 200ms linear;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
&.usable {
|
|
70
|
+
color: #ffffff;
|
|
71
|
+
background: #509ee3;
|
|
72
|
+
border: 1px solid #509ee3;
|
|
73
|
+
&:hover {
|
|
74
|
+
color: #ffffff;
|
|
75
|
+
border-color: #509ee3;
|
|
76
|
+
background-color: rgba(80, 158, 227, 0.88);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Arity, AtomsItem, AtomsCollection } from '../../../store/types';
|
|
2
|
+
export declare const getObjTem: (arr: any[]) => any;
|
|
3
|
+
export declare const getTemArgs: (temArgs: any[]) => AtomsCollection[];
|
|
4
|
+
export declare function getParamActions(params: AtomsItem[], arity?: Arity): {
|
|
5
|
+
canAdd: boolean;
|
|
6
|
+
canDel: boolean;
|
|
7
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getObjTem = void 0;
|
|
7
|
+
exports.getParamActions = getParamActions;
|
|
8
|
+
exports.getTemArgs = void 0;
|
|
9
|
+
var _types = require("../../../store/types");
|
|
10
|
+
var _utils = require("../formula-list/utils");
|
|
11
|
+
var getObjTem = exports.getObjTem = function getObjTem(arr) {
|
|
12
|
+
var obj = {};
|
|
13
|
+
arr === null || arr === void 0 || arr.map(function (v) {
|
|
14
|
+
if (v.name) {
|
|
15
|
+
obj[v.name] = v;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
return obj;
|
|
19
|
+
};
|
|
20
|
+
var getTemArgs = exports.getTemArgs = function getTemArgs(temArgs) {
|
|
21
|
+
return (temArgs === null || temArgs === void 0 ? void 0 : temArgs.map(function (v) {
|
|
22
|
+
return {
|
|
23
|
+
type: _types.AtomsTypeEnum.COLLECTION,
|
|
24
|
+
quotes: '',
|
|
25
|
+
list: [(0, _utils.getTemplateItem)(v.type)]
|
|
26
|
+
};
|
|
27
|
+
})) || [];
|
|
28
|
+
};
|
|
29
|
+
function getParamActions(params, arity) {
|
|
30
|
+
var len = (params === null || params === void 0 ? void 0 : params.length) || 0;
|
|
31
|
+
if (!arity) {
|
|
32
|
+
return {
|
|
33
|
+
canAdd: true,
|
|
34
|
+
canDel: true
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
var effectiveMin = 'min' in arity ? arity.min : 'exact' in arity ? arity.exact : 0;
|
|
38
|
+
var effectiveMax = 'max' in arity ? arity.max : 'exact' in arity ? arity.exact // ← 这里!不能是 Infinity
|
|
39
|
+
: Infinity;
|
|
40
|
+
return {
|
|
41
|
+
canAdd: len < effectiveMax,
|
|
42
|
+
// 小于 max 才能加
|
|
43
|
+
canDel: len > effectiveMin // 大于 min 才能删
|
|
44
|
+
};
|
|
45
|
+
}
|
|
@@ -6,8 +6,8 @@ interface PropsType {
|
|
|
6
6
|
value: AtomsItem[];
|
|
7
7
|
data: any;
|
|
8
8
|
exitData?: any;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
onChange?: (atoms: AtomsItem[], quotes?: string) => void;
|
|
10
|
+
check?: string;
|
|
11
11
|
}
|
|
12
12
|
declare const FormulaList: React.ForwardRefExoticComponent<PropsType & React.RefAttributes<unknown>>;
|
|
13
13
|
export default FormulaList;
|
|
@@ -15,16 +15,15 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
15
15
|
var _index = _interopRequireDefault(require("../../../index"));
|
|
16
16
|
var _locale = require("../../../locale");
|
|
17
17
|
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
18
|
-
var _utils = require("./utils");
|
|
19
|
-
var _enum = require("./enum");
|
|
20
18
|
var _types = require("../../../store/types");
|
|
21
|
-
var
|
|
19
|
+
var _enum = require("../../../store/enum");
|
|
22
20
|
var _pandora = require("@gingkoo/pandora");
|
|
23
21
|
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
24
|
-
var
|
|
25
|
-
var
|
|
22
|
+
var _utils = require("../../../utils");
|
|
23
|
+
var _formula = _interopRequireDefault(require("../formula"));
|
|
26
24
|
var _icons = require("../../icons");
|
|
27
25
|
var _dialog = require("../../dialog");
|
|
26
|
+
var _utils2 = require("./utils");
|
|
28
27
|
var _selectList = _interopRequireDefault(require("../../dialog/select-list"));
|
|
29
28
|
var _arrow = _interopRequireDefault(require("./arrow.svg"));
|
|
30
29
|
var _useProvider = require("../../../hooks/use-provider");
|
|
@@ -32,29 +31,32 @@ var _excluded = ["notExistsToolbar", "toolbar"]; // import './index.less';
|
|
|
32
31
|
var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
33
32
|
var value = props.value,
|
|
34
33
|
data = props.data,
|
|
35
|
-
isCustom = props.isCustom,
|
|
36
34
|
exitData = props.exitData,
|
|
37
35
|
onChange = props.onChange,
|
|
38
36
|
_props$customTypes = props.customTypes,
|
|
39
|
-
_customTypes = _props$customTypes === void 0 ?
|
|
37
|
+
_customTypes = _props$customTypes === void 0 ? _utils2.customTypes : _props$customTypes,
|
|
40
38
|
_props$operatorList = props.operatorList,
|
|
41
|
-
_operatorList = _props$operatorList === void 0 ?
|
|
42
|
-
|
|
39
|
+
_operatorList = _props$operatorList === void 0 ? _utils2.operatorList : _props$operatorList,
|
|
40
|
+
check = props.check;
|
|
41
|
+
var caseList = value || [];
|
|
42
|
+
var setCaseList = function setCaseList(data) {
|
|
43
|
+
var quotes = data.map(function (v, i) {
|
|
44
|
+
if (v !== null && v !== void 0 && v.quotes) {
|
|
45
|
+
return v === null || v === void 0 ? void 0 : v.quotes;
|
|
46
|
+
} else if (v !== null && v !== void 0 && v.fieldName) {
|
|
47
|
+
return v === null || v === void 0 ? void 0 : v.fieldName;
|
|
48
|
+
} else {
|
|
49
|
+
return v.val;
|
|
50
|
+
}
|
|
51
|
+
}).join(' ');
|
|
52
|
+
onChange === null || onChange === void 0 || onChange(data, quotes);
|
|
53
|
+
};
|
|
54
|
+
var _useState = (0, _react.useState)(-1),
|
|
43
55
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
// useEffect(() => {
|
|
47
|
-
// setCaseList(value);
|
|
48
|
-
// }, [value]);
|
|
49
|
-
var _useState3 = (0, _react.useState)(-1),
|
|
50
|
-
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
51
|
-
ind = _useState4[0],
|
|
52
|
-
setInd = _useState4[1];
|
|
56
|
+
ind = _useState2[0],
|
|
57
|
+
setInd = _useState2[1];
|
|
53
58
|
var store = (0, _useProvider.useStore)();
|
|
54
59
|
var filterCustomType = store.filterCustomType;
|
|
55
|
-
(0, _react.useEffect)(function () {
|
|
56
|
-
onChange === null || onChange === void 0 || onChange(caseList);
|
|
57
|
-
}, [caseList]);
|
|
58
60
|
function closePopup() {
|
|
59
61
|
store.setPopup({
|
|
60
62
|
visible: false
|
|
@@ -70,7 +72,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
70
72
|
data: data,
|
|
71
73
|
multiple: false,
|
|
72
74
|
value: [val],
|
|
73
|
-
theme:
|
|
75
|
+
theme: _enum.ColumnsPopupThemeEnum.skyBlue,
|
|
74
76
|
onSelect: function onSelect(fields, quotes) {
|
|
75
77
|
var _caseList = caseList.slice();
|
|
76
78
|
_caseList[i] = fields[0];
|
|
@@ -85,7 +87,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
85
87
|
var _caseList = caseList.slice();
|
|
86
88
|
var oldType = _caseList[i].val;
|
|
87
89
|
_caseList[i].val = val;
|
|
88
|
-
_caseList = (0,
|
|
90
|
+
_caseList = (0, _utils2.insertTemplateAt)(oldType, val, _caseList, i);
|
|
89
91
|
setCaseList(_caseList);
|
|
90
92
|
};
|
|
91
93
|
// 表达式
|
|
@@ -119,7 +121,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
119
121
|
// 添加
|
|
120
122
|
var addOperator = function addOperator(type, index, position) {
|
|
121
123
|
var _caseList = caseList.slice() || [];
|
|
122
|
-
var temItem = (0,
|
|
124
|
+
var temItem = (0, _utils2.getTemplateItem)(type);
|
|
123
125
|
if (position === 'add') {
|
|
124
126
|
_caseList.push(temItem);
|
|
125
127
|
} else if (position === 'before') {
|
|
@@ -165,7 +167,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
165
167
|
}
|
|
166
168
|
var expression = {
|
|
167
169
|
notExists: (0, _cloneDeep["default"])(newList),
|
|
168
|
-
quotes: (0,
|
|
170
|
+
quotes: (0, _utils.buildSqlQuery)(newList, caseList[i].type),
|
|
169
171
|
type: caseList[i].type
|
|
170
172
|
};
|
|
171
173
|
caseList[i] = expression;
|
|
@@ -201,6 +203,33 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
201
203
|
})
|
|
202
204
|
});
|
|
203
205
|
}
|
|
206
|
+
// 函数弹窗
|
|
207
|
+
var showFunction = function showFunction(e, i) {
|
|
208
|
+
var _value = caseList[i];
|
|
209
|
+
var o = _pandora.Modal2.openModal({
|
|
210
|
+
title: (0, _locale.__)('customColumn.formula'),
|
|
211
|
+
transparentMask: true,
|
|
212
|
+
content: (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
213
|
+
children: (0, _jsxRuntime.jsx)(_useProvider.Provider, {
|
|
214
|
+
value: store,
|
|
215
|
+
children: (0, _jsxRuntime.jsx)(_formula["default"], {
|
|
216
|
+
data: data,
|
|
217
|
+
value: _value,
|
|
218
|
+
onCancel: function onCancel() {
|
|
219
|
+
o.close();
|
|
220
|
+
},
|
|
221
|
+
onOk: function onOk(data) {
|
|
222
|
+
var _caseList = caseList.slice();
|
|
223
|
+
_caseList[i] = data;
|
|
224
|
+
setCaseList(_caseList);
|
|
225
|
+
o.close();
|
|
226
|
+
}
|
|
227
|
+
})
|
|
228
|
+
})
|
|
229
|
+
}),
|
|
230
|
+
onClose: function onClose() {}
|
|
231
|
+
});
|
|
232
|
+
};
|
|
204
233
|
// 分段
|
|
205
234
|
var itemDom = function itemDom(v, index) {
|
|
206
235
|
var type = v.type;
|
|
@@ -318,14 +347,22 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
318
347
|
});
|
|
319
348
|
} else if (type === _types.AtomsTypeEnum.CONSTANT) {
|
|
320
349
|
//常量
|
|
321
|
-
return (0, _jsxRuntime.
|
|
350
|
+
return (0, _jsxRuntime.jsxs)("div", {
|
|
322
351
|
className: (0, _classnames["default"])("Sqb-TableName", {
|
|
323
352
|
notSelected: !v.val
|
|
324
353
|
}),
|
|
325
354
|
"v-index": index,
|
|
326
355
|
"v-val": v.val,
|
|
327
356
|
onClick: selectConstant,
|
|
328
|
-
children: v.val ? v.val : (0, _locale.__)('SqlQueryBuilder.pickConstant')
|
|
357
|
+
children: [v.val ? v.val : (0, _locale.__)('SqlQueryBuilder.pickConstant'), (0, _jsxRuntime.jsx)("span", {
|
|
358
|
+
style: {
|
|
359
|
+
fontSize: 0
|
|
360
|
+
},
|
|
361
|
+
onClick: function onClick(e) {
|
|
362
|
+
return handleDel(e, index);
|
|
363
|
+
},
|
|
364
|
+
children: (0, _jsxRuntime.jsx)(_icons.CloseIcon, {})
|
|
365
|
+
})]
|
|
329
366
|
}, index);
|
|
330
367
|
} else if (type === _types.AtomsTypeEnum.EXPRESSION) {
|
|
331
368
|
// 表达式
|
|
@@ -336,7 +373,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
336
373
|
onClick: function onClick(e) {
|
|
337
374
|
return handleExpression(e, index, v);
|
|
338
375
|
},
|
|
339
|
-
children: [
|
|
376
|
+
children: [v.quotes ? v.quotes : (0, _locale.__)('customColumn.selectExpression'), (0, _jsxRuntime.jsx)("span", {
|
|
340
377
|
style: {
|
|
341
378
|
fontSize: 0
|
|
342
379
|
},
|
|
@@ -346,6 +383,23 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
346
383
|
children: (0, _jsxRuntime.jsx)(_icons.CloseIcon, {})
|
|
347
384
|
})]
|
|
348
385
|
});
|
|
386
|
+
} else if (type === _types.AtomsTypeEnum.FORMULA) {
|
|
387
|
+
// 公式
|
|
388
|
+
return (0, _jsxRuntime.jsxs)("div", {
|
|
389
|
+
className: "Sqb-TableName gray-name",
|
|
390
|
+
onClick: function onClick(e) {
|
|
391
|
+
return showFunction(e, index);
|
|
392
|
+
},
|
|
393
|
+
children: [v.quotes ? v.quotes : (0, _locale.__)('customColumn.selectFormula'), (0, _jsxRuntime.jsx)("span", {
|
|
394
|
+
style: {
|
|
395
|
+
fontSize: 0
|
|
396
|
+
},
|
|
397
|
+
onClick: function onClick(e) {
|
|
398
|
+
return handleDel(e, index);
|
|
399
|
+
},
|
|
400
|
+
children: (0, _jsxRuntime.jsx)(_icons.CloseIcon, {})
|
|
401
|
+
})]
|
|
402
|
+
}, index);
|
|
349
403
|
} else {
|
|
350
404
|
return (0, _jsxRuntime.jsx)(_pandora.Select, {
|
|
351
405
|
triggerProps: {
|
|
@@ -488,7 +542,11 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
488
542
|
})
|
|
489
543
|
})]
|
|
490
544
|
}), (0, _jsxRuntime.jsxs)("p", {
|
|
491
|
-
className:
|
|
545
|
+
className: "mb-2 font-bold uppercase tracking-wider",
|
|
546
|
+
style: {
|
|
547
|
+
fontSize: 12,
|
|
548
|
+
color: '#949aab'
|
|
549
|
+
},
|
|
492
550
|
children: ["\u9884\u89C8\uFF1A", caseList.map(function (v, i) {
|
|
493
551
|
if (v !== null && v !== void 0 && v.quotes) {
|
|
494
552
|
return v === null || v === void 0 ? void 0 : v.quotes;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AtomsTypeEnum, AtomsItem } from '../../../store/types';
|
|
1
2
|
/**
|
|
2
3
|
*
|
|
3
4
|
* @param type 当前选择的类型
|
|
@@ -5,4 +6,16 @@
|
|
|
5
6
|
* @param index 需要讲模版插入的位置
|
|
6
7
|
* @returns
|
|
7
8
|
*/
|
|
8
|
-
export declare const
|
|
9
|
+
export declare const insertTemplateAt: (oldType: string, type: string, list: any[], index: number) => any[];
|
|
10
|
+
export declare const operatorList: string[];
|
|
11
|
+
export declare const customTypes: ({
|
|
12
|
+
value: AtomsTypeEnum;
|
|
13
|
+
label: any;
|
|
14
|
+
children?: undefined;
|
|
15
|
+
} | {
|
|
16
|
+
value: AtomsTypeEnum;
|
|
17
|
+
label: any;
|
|
18
|
+
children: string[];
|
|
19
|
+
})[];
|
|
20
|
+
export declare const getTemplateItem: (type: AtomsTypeEnum) => AtomsItem;
|
|
21
|
+
export declare const isOk: (rhsVal: AtomsItem[]) => boolean;
|