@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.
Files changed (58) hide show
  1. package/lib/cjs/components/dialog/custom-editor/index.js +2 -2
  2. package/lib/cjs/components/dialog/expression/index.js +1 -1
  3. package/lib/cjs/components/dialog/formula/index.d.ts +10 -0
  4. package/lib/cjs/components/dialog/formula/index.js +242 -0
  5. package/lib/cjs/components/dialog/formula/index.less +81 -0
  6. package/lib/cjs/components/dialog/formula/utils.d.ts +7 -0
  7. package/lib/cjs/components/dialog/formula/utils.js +45 -0
  8. package/lib/cjs/components/dialog/formula-list/index.d.ts +2 -2
  9. package/lib/cjs/components/dialog/formula-list/index.js +87 -29
  10. package/lib/cjs/components/dialog/formula-list/utils.d.ts +14 -1
  11. package/lib/cjs/components/dialog/formula-list/utils.js +159 -2
  12. package/lib/cjs/components/metabase/index.less +1 -0
  13. package/lib/cjs/components/modules/enum/filter-enum.d.ts +7 -2
  14. package/lib/cjs/components/modules/enum/filter-enum.js +8 -2
  15. package/lib/cjs/components/modules/join-data.js +27 -2
  16. package/lib/cjs/hooks/patch.js +81 -79
  17. package/lib/cjs/hooks/use-state.js +33 -27
  18. package/lib/cjs/index.js +3 -1
  19. package/lib/cjs/locale/en.js +4 -2
  20. package/lib/cjs/locale/zh.js +4 -2
  21. package/lib/cjs/store/helper.d.ts +1 -2
  22. package/lib/cjs/store/helper.js +1 -76
  23. package/lib/cjs/store/types.d.ts +36 -2
  24. package/lib/cjs/store/types.js +3 -0
  25. package/lib/cjs/types.d.ts +2 -1
  26. package/lib/cjs/utils.js +2 -1
  27. package/lib/es/components/dialog/custom-editor/index.js +2 -2
  28. package/lib/es/components/dialog/expression/index.js +1 -1
  29. package/lib/es/components/dialog/formula/index.d.ts +10 -0
  30. package/lib/es/components/dialog/formula/index.js +236 -0
  31. package/lib/es/components/dialog/formula/index.less +81 -0
  32. package/lib/es/components/dialog/formula/utils.d.ts +7 -0
  33. package/lib/es/components/dialog/formula/utils.js +37 -0
  34. package/lib/es/components/dialog/formula-list/index.d.ts +2 -2
  35. package/lib/es/components/dialog/formula-list/index.js +84 -26
  36. package/lib/es/components/dialog/formula-list/utils.d.ts +14 -1
  37. package/lib/es/components/dialog/formula-list/utils.js +160 -2
  38. package/lib/es/components/metabase/index.less +1 -0
  39. package/lib/es/components/modules/enum/filter-enum.d.ts +7 -2
  40. package/lib/es/components/modules/enum/filter-enum.js +8 -2
  41. package/lib/es/components/modules/join-data.js +27 -2
  42. package/lib/es/hooks/patch.js +81 -79
  43. package/lib/es/hooks/use-state.js +33 -27
  44. package/lib/es/index.js +3 -1
  45. package/lib/es/locale/en.js +4 -2
  46. package/lib/es/locale/zh.js +4 -2
  47. package/lib/es/store/helper.d.ts +1 -2
  48. package/lib/es/store/helper.js +0 -75
  49. package/lib/es/store/types.d.ts +36 -2
  50. package/lib/es/store/types.js +3 -0
  51. package/lib/es/types.d.ts +2 -1
  52. package/lib/es/types.js +18 -1
  53. package/lib/es/utils.js +2 -1
  54. package/package.json +1 -1
  55. package/lib/cjs/components/dialog/formula-list/enum.d.ts +0 -39
  56. package/lib/cjs/components/dialog/formula-list/enum.js +0 -123
  57. package/lib/es/components/dialog/formula-list/enum.d.ts +0 -39
  58. 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 Array.from(caseList).length > 0 && name;
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.__)('SqlQueryBuilder.input')
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
- isCustom?: boolean;
10
- onChange?: Function;
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 _enum2 = require("../../../store/enum");
19
+ var _enum = require("../../../store/enum");
22
20
  var _pandora = require("@gingkoo/pandora");
23
21
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
24
- var _helper = require("../../../store/helper");
25
- var _utils2 = require("../../../utils");
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 ? _enum.customTypes : _props$customTypes,
37
+ _customTypes = _props$customTypes === void 0 ? _utils2.customTypes : _props$customTypes,
40
38
  _props$operatorList = props.operatorList,
41
- _operatorList = _props$operatorList === void 0 ? _enum.operatorList : _props$operatorList;
42
- var _useState = (0, _react.useState)(value || []),
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
- caseList = _useState2[0],
45
- setCaseList = _useState2[1];
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: _enum2.ColumnsPopupThemeEnum.skyBlue,
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, _utils.getTemplate)(oldType, val, _caseList, i);
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, _helper.getTemItem)(type);
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, _utils2.buildSqlQuery)(newList, caseList[i].type),
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.jsx)("div", {
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: [!v.quotes && (0, _locale.__)('customColumn.selectExpression'), v.quotes, (0, _jsxRuntime.jsx)("span", {
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: 'Sqb-NotebookCell-preview',
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 getTemplate: (oldType: string, type: string, list: any[], index: number) => any[];
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;