@gingkoo/pandora-metabase 1.0.90 → 1.0.92
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/expression/index.js +6 -4
- package/lib/cjs/components/dialog/formula/index.js +6 -20
- package/lib/cjs/components/dialog/formula/utils.d.ts +1 -0
- package/lib/cjs/components/dialog/formula/utils.js +18 -2
- package/lib/cjs/components/dialog/formula-list/index.js +65 -46
- package/lib/cjs/components/dialog/formula-list/utils.d.ts +1 -0
- package/lib/cjs/components/dialog/formula-list/utils.js +9 -2
- package/lib/cjs/components/metabase/index.less +2 -1
- package/lib/cjs/hooks/use-state.js +25 -19
- package/lib/cjs/index.js +5 -2
- package/lib/cjs/store/types.d.ts +1 -0
- package/lib/cjs/types.d.ts +1 -0
- package/lib/es/components/dialog/expression/index.js +6 -4
- package/lib/es/components/dialog/formula/index.js +7 -21
- package/lib/es/components/dialog/formula/utils.d.ts +1 -0
- package/lib/es/components/dialog/formula/utils.js +17 -1
- package/lib/es/components/dialog/formula-list/index.js +55 -36
- package/lib/es/components/dialog/formula-list/utils.d.ts +1 -0
- package/lib/es/components/dialog/formula-list/utils.js +8 -1
- package/lib/es/components/metabase/index.less +2 -1
- package/lib/es/hooks/use-state.js +25 -19
- package/lib/es/index.js +5 -2
- package/lib/es/store/types.d.ts +1 -0
- package/lib/es/types.d.ts +1 -0
- package/package.json +2 -2
|
@@ -507,10 +507,12 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
507
507
|
setRhsVal([{
|
|
508
508
|
type: _types.AtomsTypeEnum.INPUT_STRING,
|
|
509
509
|
val: (0, _dayjs["default"])(val).format('YYYY-MM-DD HH:mm')
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
510
|
+
}
|
|
511
|
+
// {
|
|
512
|
+
// type: AtomsTypeEnum.INPUT_STRING,
|
|
513
|
+
// val: moment(val).format('YYYY-MM-DD HH:mm'),
|
|
514
|
+
// },
|
|
515
|
+
]);
|
|
514
516
|
} else {
|
|
515
517
|
setRhsVal([{
|
|
516
518
|
val: '',
|
|
@@ -80,7 +80,7 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
|
|
|
80
80
|
// 确定
|
|
81
81
|
var _onOk = function _onOk() {
|
|
82
82
|
typeof onOk === 'function' && (onOk === null || onOk === void 0 ? void 0 : onOk((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, fun), {}, {
|
|
83
|
-
quotes: getQuotes(fun.args)
|
|
83
|
+
quotes: (0, _utils2.getQuotes)(fun, fun.args, formulaList)
|
|
84
84
|
})));
|
|
85
85
|
};
|
|
86
86
|
// 选择公式名
|
|
@@ -95,21 +95,6 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
|
|
|
95
95
|
name: formulaList === null || formulaList === void 0 || (_formulaList$id3 = formulaList[id]) === null || _formulaList$id3 === void 0 ? void 0 : _formulaList$id3.name
|
|
96
96
|
}));
|
|
97
97
|
};
|
|
98
|
-
var getQuotes = function getQuotes(_args) {
|
|
99
|
-
var quotes = _args.map(function (v) {
|
|
100
|
-
var quotes = v.list.map(function (vv, i) {
|
|
101
|
-
if (vv !== null && vv !== void 0 && vv.quotes) {
|
|
102
|
-
return vv === null || vv === void 0 ? void 0 : vv.quotes;
|
|
103
|
-
} else if (vv !== null && vv !== void 0 && vv.fieldName) {
|
|
104
|
-
return vv === null || vv === void 0 ? void 0 : vv.fieldName;
|
|
105
|
-
} else {
|
|
106
|
-
return vv.val;
|
|
107
|
-
}
|
|
108
|
-
}).join(' ');
|
|
109
|
-
return quotes;
|
|
110
|
-
}).join(' , ');
|
|
111
|
-
return fun.name + ' ( ' + quotes + ' ) ';
|
|
112
|
-
};
|
|
113
98
|
var addParams = function addParams(index) {
|
|
114
99
|
var _args = (0, _cloneDeep["default"])(fun.args);
|
|
115
100
|
var tem = (0, _utils2.getTemArgs)(formulaList === null || formulaList === void 0 ? void 0 : formulaList[fun.name].args)[index + 1] || {
|
|
@@ -118,7 +103,7 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
|
|
|
118
103
|
};
|
|
119
104
|
_args.splice(index + 1, 0, tem);
|
|
120
105
|
setFun((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, fun), {}, {
|
|
121
|
-
quotes: getQuotes(_args),
|
|
106
|
+
quotes: (0, _utils2.getQuotes)(fun, _args, formulaList),
|
|
122
107
|
args: _args
|
|
123
108
|
}));
|
|
124
109
|
};
|
|
@@ -126,7 +111,7 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
|
|
|
126
111
|
var _args = (0, _cloneDeep["default"])(fun.args);
|
|
127
112
|
_args.splice(index, 1);
|
|
128
113
|
setFun((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, fun), {}, {
|
|
129
|
-
quotes: getQuotes(_args),
|
|
114
|
+
quotes: (0, _utils2.getQuotes)(fun, _args, formulaList),
|
|
130
115
|
args: _args
|
|
131
116
|
}));
|
|
132
117
|
};
|
|
@@ -155,11 +140,12 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
|
|
|
155
140
|
},
|
|
156
141
|
value: fun.id || fun.name,
|
|
157
142
|
triggerElement: function triggerElement(value) {
|
|
143
|
+
var _formulaList$fun$id;
|
|
158
144
|
return (0, _jsxRuntime.jsx)("div", {
|
|
159
145
|
className: (0, _classnames["default"])("Sqb-TableName Sqb-TableName-OPERATOR", {
|
|
160
146
|
notSelected: !fun.name
|
|
161
147
|
}),
|
|
162
|
-
children: fun.
|
|
148
|
+
children: fun.id ? (_formulaList$fun$id = formulaList[fun.id]) === null || _formulaList$fun$id === void 0 ? void 0 : _formulaList$fun$id.name : (0, _locale.__)('customColumn.selectFormula')
|
|
163
149
|
});
|
|
164
150
|
},
|
|
165
151
|
onChange: function onChange(val) {
|
|
@@ -222,7 +208,7 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
|
|
|
222
208
|
// })
|
|
223
209
|
// .join(' , ');
|
|
224
210
|
setFun((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, fun), {}, {
|
|
225
|
-
quotes: getQuotes(_args),
|
|
211
|
+
quotes: (0, _utils2.getQuotes)(fun, _args, formulaList),
|
|
226
212
|
//fun.name + ' ( ' + quotes + ' ) ',
|
|
227
213
|
args: _args
|
|
228
214
|
}));
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getObjTem = void 0;
|
|
7
7
|
exports.getParamActions = getParamActions;
|
|
8
|
-
exports.getTemArgs = void 0;
|
|
8
|
+
exports.getTemArgs = exports.getQuotes = void 0;
|
|
9
9
|
var _types = require("../../../store/types");
|
|
10
10
|
var _utils = require("../formula-list/utils");
|
|
11
11
|
var getObjTem = exports.getObjTem = function getObjTem(arr) {
|
|
@@ -63,4 +63,20 @@ function getParamActions(params, arity) {
|
|
|
63
63
|
// 小于 max 才能加
|
|
64
64
|
canDel: len > effectiveMin // 大于 min 才能删
|
|
65
65
|
};
|
|
66
|
-
}
|
|
66
|
+
}
|
|
67
|
+
var getQuotes = exports.getQuotes = function getQuotes(fun, _args, formulaList) {
|
|
68
|
+
var _formulaList$fun$id;
|
|
69
|
+
var quotes = _args === null || _args === void 0 ? void 0 : _args.map(function (v) {
|
|
70
|
+
var quotes = v.list.map(function (vv, i) {
|
|
71
|
+
if (vv !== null && vv !== void 0 && vv.quotes) {
|
|
72
|
+
return vv === null || vv === void 0 ? void 0 : vv.quotes;
|
|
73
|
+
} else if (vv !== null && vv !== void 0 && vv.fieldName) {
|
|
74
|
+
return vv === null || vv === void 0 ? void 0 : vv.fieldName;
|
|
75
|
+
} else {
|
|
76
|
+
return vv.val;
|
|
77
|
+
}
|
|
78
|
+
}).join(' ');
|
|
79
|
+
return quotes;
|
|
80
|
+
}).join(' , ');
|
|
81
|
+
return ((_formulaList$fun$id = formulaList[fun.id]) === null || _formulaList$fun$id === void 0 ? void 0 : _formulaList$fun$id.name) + ' ( ' + quotes + ' ) ';
|
|
82
|
+
};
|
|
@@ -20,15 +20,16 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
20
20
|
var _index2 = _interopRequireDefault(require("../../../index"));
|
|
21
21
|
var _locale = require("../../../locale");
|
|
22
22
|
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
23
|
+
var _utils = require("../formula/utils");
|
|
23
24
|
var _types = require("../../../store/types");
|
|
24
25
|
var _enum = require("../../../store/enum");
|
|
25
26
|
var _pandora = require("@gingkoo/pandora");
|
|
26
27
|
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
27
|
-
var
|
|
28
|
+
var _utils2 = require("../../../utils");
|
|
28
29
|
var _formula = _interopRequireDefault(require("../formula"));
|
|
29
30
|
var _icons = require("../../icons");
|
|
30
31
|
var _dialog = require("../../dialog");
|
|
31
|
-
var
|
|
32
|
+
var _utils3 = require("./utils");
|
|
32
33
|
var _selectList = _interopRequireDefault(require("../../dialog/select-list"));
|
|
33
34
|
var _arrow = _interopRequireDefault(require("./arrow.svg"));
|
|
34
35
|
var _useProvider = require("../../../hooks/use-provider");
|
|
@@ -59,14 +60,15 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
59
60
|
window.removeEventListener('sqb-checked-items-changed', handler);
|
|
60
61
|
};
|
|
61
62
|
}, []);
|
|
63
|
+
var store = (0, _useProvider.useStore)();
|
|
62
64
|
var value = props.value,
|
|
63
65
|
data = props.data,
|
|
64
66
|
exitData = props.exitData,
|
|
65
67
|
onChange = props.onChange,
|
|
66
68
|
_props$customTypes = props.customTypes,
|
|
67
|
-
_customTypes = _props$customTypes === void 0 ?
|
|
69
|
+
_customTypes = _props$customTypes === void 0 ? _utils3.customTypes : _props$customTypes,
|
|
68
70
|
_props$operatorList = props.operatorList,
|
|
69
|
-
_operatorList = _props$operatorList === void 0 ?
|
|
71
|
+
_operatorList = _props$operatorList === void 0 ? store.operatorList : _props$operatorList,
|
|
70
72
|
_props$isCustom = props.isCustom,
|
|
71
73
|
isCustom = _props$isCustom === void 0 ? false : _props$isCustom,
|
|
72
74
|
_props$showPreview = props.showPreview,
|
|
@@ -75,8 +77,14 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
75
77
|
_props$_type = props._type,
|
|
76
78
|
_type = _props$_type === void 0 ? 'filter' : _props$_type;
|
|
77
79
|
var caseList = value || [];
|
|
78
|
-
var store = (0, _useProvider.useStore)();
|
|
79
80
|
var caseListRef = (0, _react.useRef)(caseList);
|
|
81
|
+
var operatorList = (0, _react.useMemo)(function () {
|
|
82
|
+
if (store.operatorList.length > 0) {
|
|
83
|
+
return store.operatorList;
|
|
84
|
+
} else {
|
|
85
|
+
return _utils3.operatorList;
|
|
86
|
+
}
|
|
87
|
+
}, [store.operatorList]);
|
|
80
88
|
var _useState3 = (0, _react.useState)(''),
|
|
81
89
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
82
90
|
oldCode = _useState4[0],
|
|
@@ -94,13 +102,17 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
94
102
|
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
95
103
|
isCopy = _useState8[0],
|
|
96
104
|
setIsCopy = _useState8[1];
|
|
105
|
+
var _useState9 = (0, _react.useState)((0, _utils.getObjTem)(store.formulaTemplates)),
|
|
106
|
+
_useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
107
|
+
formulaList = _useState0[0],
|
|
108
|
+
setFunctionList = _useState0[1];
|
|
97
109
|
(0, _react.useEffect)(function () {
|
|
98
110
|
setOldCode(getPreviewStr(caseList));
|
|
99
111
|
}, []);
|
|
100
|
-
var
|
|
101
|
-
|
|
102
|
-
filterVal =
|
|
103
|
-
setFilterVal =
|
|
112
|
+
var _useState1 = (0, _react.useState)(''),
|
|
113
|
+
_useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
|
|
114
|
+
filterVal = _useState10[0],
|
|
115
|
+
setFilterVal = _useState10[1];
|
|
104
116
|
var setCaseList = function setCaseList(data) {
|
|
105
117
|
var quotes = data.map(function (v, i) {
|
|
106
118
|
if (v !== null && v !== void 0 && v.quotes) {
|
|
@@ -115,35 +127,35 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
115
127
|
caseList = data;
|
|
116
128
|
caseListRef.current = data;
|
|
117
129
|
};
|
|
118
|
-
var
|
|
119
|
-
|
|
120
|
-
ind =
|
|
121
|
-
setInd =
|
|
130
|
+
var _useState11 = (0, _react.useState)(-1),
|
|
131
|
+
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
132
|
+
ind = _useState12[0],
|
|
133
|
+
setInd = _useState12[1];
|
|
122
134
|
var filterCustomType = store.filterCustomType;
|
|
123
135
|
var _ref = (0, _react.useRef)(null);
|
|
124
|
-
var
|
|
136
|
+
var _useState13 = (0, _react.useState)({
|
|
125
137
|
isError: false
|
|
126
138
|
}),
|
|
127
|
-
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
128
|
-
errorInfo = _useState12[0],
|
|
129
|
-
setErrorInfo = _useState12[1];
|
|
130
|
-
var _useState13 = (0, _react.useState)(false),
|
|
131
139
|
_useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
var
|
|
135
|
-
var _useState15 = (0, _react.useState)(!!window.__sqb_selection_active__),
|
|
140
|
+
errorInfo = _useState14[0],
|
|
141
|
+
setErrorInfo = _useState14[1];
|
|
142
|
+
var _useState15 = (0, _react.useState)(false),
|
|
136
143
|
_useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
var
|
|
144
|
+
isCheck = _useState16[0],
|
|
145
|
+
setIsCheck = _useState16[1];
|
|
146
|
+
var myInstanceIdRef = (0, _react.useRef)(Math.random().toString(36).slice(2));
|
|
147
|
+
var _useState17 = (0, _react.useState)(!!window.__sqb_selection_active__),
|
|
140
148
|
_useState18 = (0, _slicedToArray2["default"])(_useState17, 2),
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
var _useState19 = (0, _react.useState)(
|
|
149
|
+
globalSelectionActive = _useState18[0],
|
|
150
|
+
setGlobalSelectionActive = _useState18[1];
|
|
151
|
+
var _useState19 = (0, _react.useState)(window.__sqb_selection_owner__ || null),
|
|
144
152
|
_useState20 = (0, _slicedToArray2["default"])(_useState19, 2),
|
|
145
|
-
|
|
146
|
-
|
|
153
|
+
globalSelectionOwner = _useState20[0],
|
|
154
|
+
setGlobalSelectionOwner = _useState20[1];
|
|
155
|
+
var _useState21 = (0, _react.useState)([]),
|
|
156
|
+
_useState22 = (0, _slicedToArray2["default"])(_useState21, 2),
|
|
157
|
+
selectedIndices = _useState22[0],
|
|
158
|
+
setSelectedIndices = _useState22[1];
|
|
147
159
|
(0, _react.useEffect)(function () {
|
|
148
160
|
var leftBrackets = caseList.filter(function (v) {
|
|
149
161
|
return v.type === _types.AtomsTypeEnum.OPERATOR && v.val === '(';
|
|
@@ -152,7 +164,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
152
164
|
return v.type === _types.AtomsTypeEnum.OPERATOR && v.val === ')';
|
|
153
165
|
}).length;
|
|
154
166
|
// setIsSqlError(leftBrackets != rightBrackets);
|
|
155
|
-
var _errorInfo = (0,
|
|
167
|
+
var _errorInfo = (0, _utils3.validateExpressionIntegrity)(caseList);
|
|
156
168
|
setErrorInfo(_errorInfo);
|
|
157
169
|
}, [caseList]);
|
|
158
170
|
// 获取预览字符串
|
|
@@ -186,7 +198,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
186
198
|
position = props.position,
|
|
187
199
|
_props$trigger = props.trigger,
|
|
188
200
|
trigger = _props$trigger === void 0 ? 'click' : _props$trigger;
|
|
189
|
-
var showOperatorList =
|
|
201
|
+
var showOperatorList = operatorList.filter(function (v) {
|
|
190
202
|
return ~(v + (v || '')).toLocaleLowerCase().indexOf(filterVal.toLocaleLowerCase());
|
|
191
203
|
});
|
|
192
204
|
return (0, _jsxRuntime.jsxs)(_pandora.Select, {
|
|
@@ -268,9 +280,15 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
268
280
|
// 常量
|
|
269
281
|
var handleConstant = function handleConstant(val, i) {
|
|
270
282
|
var _caseList = caseList.slice();
|
|
271
|
-
var
|
|
272
|
-
_caseList[i].
|
|
273
|
-
|
|
283
|
+
var oldVal = _caseList[i].val;
|
|
284
|
+
var oldType = _caseList[i].type;
|
|
285
|
+
if (oldType === _types.AtomsTypeEnum.CONSTANT) {
|
|
286
|
+
_caseList[i].id = val;
|
|
287
|
+
_caseList[i].val = (0, _utils3.getConstantLabel)(store.constantList, val);
|
|
288
|
+
} else {
|
|
289
|
+
_caseList[i].val = val;
|
|
290
|
+
}
|
|
291
|
+
_caseList = (0, _utils3.insertTemplateAt)(oldVal, val, _caseList, i);
|
|
274
292
|
setCaseList(_caseList);
|
|
275
293
|
};
|
|
276
294
|
// 表达式
|
|
@@ -323,7 +341,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
323
341
|
var _caseList = caseList.slice();
|
|
324
342
|
// determine items to paste (selected items have priority)
|
|
325
343
|
var itemsToPaste = _storage["default"]._metabaseCopyItems || [];
|
|
326
|
-
itemsToPaste = (0,
|
|
344
|
+
itemsToPaste = (0, _utils2.changeCopyField)(itemsToPaste, data);
|
|
327
345
|
if (itemsToPaste.length) {
|
|
328
346
|
if (index === -1) {
|
|
329
347
|
_caseList.push.apply(_caseList, (0, _toConsumableArray2["default"])(itemsToPaste));
|
|
@@ -426,7 +444,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
426
444
|
var addOperator = function addOperator(type, index, position) {
|
|
427
445
|
var _caseList = caseList.slice() || [];
|
|
428
446
|
var _ind = index;
|
|
429
|
-
var temItem = (0,
|
|
447
|
+
var temItem = (0, _utils3.getTemplateItem)(type);
|
|
430
448
|
if (position === 'add') {
|
|
431
449
|
_caseList.push(temItem);
|
|
432
450
|
_ind = index + 1;
|
|
@@ -476,7 +494,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
476
494
|
}
|
|
477
495
|
var expression = {
|
|
478
496
|
notExists: (0, _cloneDeep["default"])(newList),
|
|
479
|
-
quotes: (0,
|
|
497
|
+
quotes: (0, _utils2.buildSqlQuery)(newList, caseList[i].type),
|
|
480
498
|
type: caseList[i].type
|
|
481
499
|
};
|
|
482
500
|
caseList[i] = expression;
|
|
@@ -528,7 +546,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
528
546
|
}
|
|
529
547
|
var expression = {
|
|
530
548
|
subQuery: (0, _cloneDeep["default"])(newList),
|
|
531
|
-
quotes: (0,
|
|
549
|
+
quotes: (0, _utils2.buildSqlQuery)(newList, caseList[i].type),
|
|
532
550
|
type: caseList[i].type
|
|
533
551
|
};
|
|
534
552
|
caseList[i] = expression;
|
|
@@ -639,7 +657,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
639
657
|
} else if (type === _types.AtomsTypeEnum.FIELD) {
|
|
640
658
|
// 字段
|
|
641
659
|
return (0, _jsxRuntime.jsx)(_itemName["default"], {
|
|
642
|
-
isError: (0,
|
|
660
|
+
isError: (0, _utils2.isError)(v, data),
|
|
643
661
|
children: (0, _jsxRuntime.jsxs)("div", {
|
|
644
662
|
className: (0, _classnames["default"])("Sqb-TableName ", {
|
|
645
663
|
notSelected: !(v !== null && v !== void 0 && v.fieldName)
|
|
@@ -742,9 +760,9 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
742
760
|
notSelected: !v.val
|
|
743
761
|
}),
|
|
744
762
|
"v-index": index,
|
|
745
|
-
"v-val": v.val,
|
|
763
|
+
"v-val": v.id || v.val,
|
|
746
764
|
onClick: selectConstant,
|
|
747
|
-
children: [v.val ? v.val : (0, _locale.__)('SqlQueryBuilder.pickConstant'), (0, _jsxRuntime.jsx)("span", {
|
|
765
|
+
children: [v.val || v.id ? (0, _utils3.getConstantLabel)(store.constantList, v.id || v.val) : (0, _locale.__)('SqlQueryBuilder.pickConstant'), (0, _jsxRuntime.jsx)("span", {
|
|
748
766
|
style: {
|
|
749
767
|
fontSize: 0
|
|
750
768
|
},
|
|
@@ -757,7 +775,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
757
775
|
} else if (type === _types.AtomsTypeEnum.EXPRESSION) {
|
|
758
776
|
// 表达式
|
|
759
777
|
return (0, _jsxRuntime.jsx)(_itemName["default"], {
|
|
760
|
-
isError: (0,
|
|
778
|
+
isError: (0, _utils2.isError)(v, data),
|
|
761
779
|
children: (0, _jsxRuntime.jsxs)("div", {
|
|
762
780
|
className: (0, _classnames["default"])("Sqb-TableName purple-name", {
|
|
763
781
|
notSelected: !v.quotes
|
|
@@ -779,13 +797,13 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
779
797
|
} else if (type === _types.AtomsTypeEnum.FORMULA) {
|
|
780
798
|
// 公式
|
|
781
799
|
return (0, _jsxRuntime.jsx)(_itemName["default"], {
|
|
782
|
-
isError: (0,
|
|
800
|
+
isError: (0, _utils2.isError)(v, data),
|
|
783
801
|
children: (0, _jsxRuntime.jsxs)("div", {
|
|
784
802
|
className: (0, _classnames["default"])("Sqb-TableName gray-name"),
|
|
785
803
|
onClick: function onClick(e) {
|
|
786
804
|
return showFunction(e, index);
|
|
787
805
|
},
|
|
788
|
-
children: [v.
|
|
806
|
+
children: [v.name ? (0, _utils.getQuotes)(v, v.args, formulaList) : (0, _locale.__)('customColumn.selectFormula'), (0, _jsxRuntime.jsx)("span", {
|
|
789
807
|
style: {
|
|
790
808
|
fontSize: 0
|
|
791
809
|
},
|
|
@@ -1021,7 +1039,8 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
1021
1039
|
}), (0, _jsxRuntime.jsxs)("div", {
|
|
1022
1040
|
style: {
|
|
1023
1041
|
maxHeight: '700px',
|
|
1024
|
-
overflow: 'auto'
|
|
1042
|
+
overflow: 'auto',
|
|
1043
|
+
wordBreak: 'break-word'
|
|
1025
1044
|
},
|
|
1026
1045
|
children: [previewMode === 'diff' && (0, _jsxRuntime.jsx)(_diffViewer["default"], {
|
|
1027
1046
|
oldCode: oldCode,
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.operatorList = exports.isOk = exports.insertTemplateAt = exports.getTemplateItem = exports.customTypes = void 0;
|
|
7
|
+
exports.operatorList = exports.isOk = exports.insertTemplateAt = exports.getTemplateItem = exports.getConstantLabel = exports.customTypes = void 0;
|
|
8
8
|
exports.validateExpressionIntegrity = validateExpressionIntegrity;
|
|
9
9
|
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
|
|
10
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
@@ -466,4 +466,11 @@ function validateExpressionIntegrity(list) {
|
|
|
466
466
|
return {
|
|
467
467
|
isError: false
|
|
468
468
|
};
|
|
469
|
-
}
|
|
469
|
+
}
|
|
470
|
+
var getConstantLabel = exports.getConstantLabel = function getConstantLabel(list, val) {
|
|
471
|
+
var _list$filter;
|
|
472
|
+
var _list = (0, _toConsumableArray2["default"])(list);
|
|
473
|
+
return ((_list$filter = _list.filter(function (v) {
|
|
474
|
+
return v.value === val;
|
|
475
|
+
})) === null || _list$filter === void 0 || (_list$filter = _list$filter[0]) === null || _list$filter === void 0 ? void 0 : _list$filter.label) || '';
|
|
476
|
+
};
|
|
@@ -165,32 +165,36 @@ var useStore = function useStore() {
|
|
|
165
165
|
setSourceTable = _useState52[1];
|
|
166
166
|
var _useState53 = (0, _react.useState)([]),
|
|
167
167
|
_useState54 = (0, _slicedToArray2["default"])(_useState53, 2),
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
var _useState55 = (0, _react.useState)(
|
|
168
|
+
operatorList = _useState54[0],
|
|
169
|
+
setOperatorList = _useState54[1]; // 操作符
|
|
170
|
+
var _useState55 = (0, _react.useState)([]),
|
|
171
171
|
_useState56 = (0, _slicedToArray2["default"])(_useState55, 2),
|
|
172
|
-
|
|
173
|
-
|
|
172
|
+
copyType = _useState56[0],
|
|
173
|
+
setCopyType = _useState56[1]; // 复制类型
|
|
174
174
|
var _useState57 = (0, _react.useState)(false),
|
|
175
175
|
_useState58 = (0, _slicedToArray2["default"])(_useState57, 2),
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
var _useState59 = (0, _react.useState)(
|
|
176
|
+
metabaseCopy = _useState58[0],
|
|
177
|
+
setMetabaseCopy = _useState58[1]; // 是否开启复制功能
|
|
178
|
+
var _useState59 = (0, _react.useState)(false),
|
|
179
179
|
_useState60 = (0, _slicedToArray2["default"])(_useState59, 2),
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
var _useState61 = (0, _react.useState)(
|
|
180
|
+
moduleDiff = _useState60[0],
|
|
181
|
+
setModuleDiff = _useState60[1]; // 是否开启模块比对功能
|
|
182
|
+
var _useState61 = (0, _react.useState)([]),
|
|
183
183
|
_useState62 = (0, _slicedToArray2["default"])(_useState61, 2),
|
|
184
|
-
|
|
185
|
-
|
|
184
|
+
sourceData = _useState62[0],
|
|
185
|
+
setSourceData = _useState62[1]; // 原始数据
|
|
186
186
|
var _useState63 = (0, _react.useState)(false),
|
|
187
187
|
_useState64 = (0, _slicedToArray2["default"])(_useState63, 2),
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
var _useState65 = (0, _react.useState)(
|
|
188
|
+
moduleCopy = _useState64[0],
|
|
189
|
+
setModuleCopy = _useState64[1]; // 是否开启模块复制功能
|
|
190
|
+
var _useState65 = (0, _react.useState)(false),
|
|
191
191
|
_useState66 = (0, _slicedToArray2["default"])(_useState65, 2),
|
|
192
|
-
|
|
193
|
-
|
|
192
|
+
isMetabaseCopy = _useState66[0],
|
|
193
|
+
setIsMetabaseCopy = _useState66[1]; // 是否开启勾选组复制
|
|
194
|
+
var _useState67 = (0, _react.useState)(_storage["default"]._metabaseCopyModule || []),
|
|
195
|
+
_useState68 = (0, _slicedToArray2["default"])(_useState67, 2),
|
|
196
|
+
metabaseCopyModule = _useState68[0],
|
|
197
|
+
setMetabaseCopyModule = _useState68[1]; // 复制的内容
|
|
194
198
|
var setFormulaTemplates = function setFormulaTemplates(data) {
|
|
195
199
|
var newData = data === null || data === void 0 ? void 0 : data.map(function (v) {
|
|
196
200
|
var children = v.children.map(function (vv) {
|
|
@@ -872,7 +876,9 @@ var useStore = function useStore() {
|
|
|
872
876
|
metabaseCopyModule: metabaseCopyModule,
|
|
873
877
|
setMetabaseCopyModule: setMetabaseCopyModule,
|
|
874
878
|
isMetabaseCopy: isMetabaseCopy,
|
|
875
|
-
setIsMetabaseCopy: setIsMetabaseCopy
|
|
879
|
+
setIsMetabaseCopy: setIsMetabaseCopy,
|
|
880
|
+
operatorList: operatorList,
|
|
881
|
+
setOperatorList: setOperatorList
|
|
876
882
|
};
|
|
877
883
|
};
|
|
878
884
|
var _default = exports["default"] = useStore;
|
package/lib/cjs/index.js
CHANGED
|
@@ -78,7 +78,9 @@ var SqlVisionBuilder = _react["default"].forwardRef(function (props, ref) {
|
|
|
78
78
|
_props$moduleDiff = props.moduleDiff,
|
|
79
79
|
moduleDiff = _props$moduleDiff === void 0 ? false : _props$moduleDiff,
|
|
80
80
|
_props$moduleCopy = props.moduleCopy,
|
|
81
|
-
moduleCopy = _props$moduleCopy === void 0 ? false : _props$moduleCopy
|
|
81
|
+
moduleCopy = _props$moduleCopy === void 0 ? false : _props$moduleCopy,
|
|
82
|
+
_props$operatorList = props.operatorList,
|
|
83
|
+
operatorList = _props$operatorList === void 0 ? [] : _props$operatorList;
|
|
82
84
|
var store = (0, _useState["default"])();
|
|
83
85
|
(0, _react.useEffect)(function () {
|
|
84
86
|
getTables && store.setFetchDatasetFn(getTables);
|
|
@@ -120,7 +122,8 @@ var SqlVisionBuilder = _react["default"].forwardRef(function (props, ref) {
|
|
|
120
122
|
store.setModuleDiff(moduleDiff);
|
|
121
123
|
store.setIsSubquery(isSubquery);
|
|
122
124
|
store.setModuleCopy(moduleCopy);
|
|
123
|
-
|
|
125
|
+
store.setOperatorList(operatorList);
|
|
126
|
+
}, [showFields, fieldNameTpl, tableNameTpl, toolbar, showSubquery, subShowSubquery, constantList, formulaTemplates, ignoreGroupByType, filterCustomType, isExit, tableEnableAlias, fieldEnableAlias, groupByEnableAlias, isSelectFields, tableFlat, copyType, metabaseCopy, moduleDiff, isSubquery, moduleCopy, operatorList]);
|
|
124
127
|
_react["default"].useImperativeHandle(ref, function () {
|
|
125
128
|
return {
|
|
126
129
|
// setDatasource: (list) => {
|
package/lib/cjs/store/types.d.ts
CHANGED
package/lib/cjs/types.d.ts
CHANGED
|
@@ -498,10 +498,12 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
498
498
|
setRhsVal([{
|
|
499
499
|
type: AtomsTypeEnum.INPUT_STRING,
|
|
500
500
|
val: moment(val).format('YYYY-MM-DD HH:mm')
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
501
|
+
}
|
|
502
|
+
// {
|
|
503
|
+
// type: AtomsTypeEnum.INPUT_STRING,
|
|
504
|
+
// val: moment(val).format('YYYY-MM-DD HH:mm'),
|
|
505
|
+
// },
|
|
506
|
+
]);
|
|
505
507
|
} else {
|
|
506
508
|
setRhsVal([{
|
|
507
509
|
val: '',
|
|
@@ -10,7 +10,7 @@ import FormulaList from '../formula-list';
|
|
|
10
10
|
import { AddIcon, CloseIcon } from '../../icons';
|
|
11
11
|
import { isOk } from '../formula-list/utils';
|
|
12
12
|
import { __ } from '../../../locale';
|
|
13
|
-
import { getTemArgs, getObjTem, getParamActions } from './utils';
|
|
13
|
+
import { getTemArgs, getObjTem, getParamActions, getQuotes } from './utils';
|
|
14
14
|
import Styled from 'styled-components';
|
|
15
15
|
// import { OptionsTypeEnum, customTypes, otherList, operatorList, functionList } from './enum';
|
|
16
16
|
import { AtomsTypeEnum, FormulaTypeEnum } from '../../../store/types';
|
|
@@ -72,7 +72,7 @@ var CaseEditor = React.forwardRef(function (props, ref) {
|
|
|
72
72
|
// 确定
|
|
73
73
|
var _onOk = function _onOk() {
|
|
74
74
|
typeof onOk === 'function' && (onOk === null || onOk === void 0 ? void 0 : onOk(_objectSpread(_objectSpread({}, fun), {}, {
|
|
75
|
-
quotes: getQuotes(fun.args)
|
|
75
|
+
quotes: getQuotes(fun, fun.args, formulaList)
|
|
76
76
|
})));
|
|
77
77
|
};
|
|
78
78
|
// 选择公式名
|
|
@@ -87,21 +87,6 @@ var CaseEditor = React.forwardRef(function (props, ref) {
|
|
|
87
87
|
name: formulaList === null || formulaList === void 0 || (_formulaList$id3 = formulaList[id]) === null || _formulaList$id3 === void 0 ? void 0 : _formulaList$id3.name
|
|
88
88
|
}));
|
|
89
89
|
};
|
|
90
|
-
var getQuotes = function getQuotes(_args) {
|
|
91
|
-
var quotes = _args.map(function (v) {
|
|
92
|
-
var quotes = v.list.map(function (vv, i) {
|
|
93
|
-
if (vv !== null && vv !== void 0 && vv.quotes) {
|
|
94
|
-
return vv === null || vv === void 0 ? void 0 : vv.quotes;
|
|
95
|
-
} else if (vv !== null && vv !== void 0 && vv.fieldName) {
|
|
96
|
-
return vv === null || vv === void 0 ? void 0 : vv.fieldName;
|
|
97
|
-
} else {
|
|
98
|
-
return vv.val;
|
|
99
|
-
}
|
|
100
|
-
}).join(' ');
|
|
101
|
-
return quotes;
|
|
102
|
-
}).join(' , ');
|
|
103
|
-
return fun.name + ' ( ' + quotes + ' ) ';
|
|
104
|
-
};
|
|
105
90
|
var addParams = function addParams(index) {
|
|
106
91
|
var _args = cloneDeep(fun.args);
|
|
107
92
|
var tem = getTemArgs(formulaList === null || formulaList === void 0 ? void 0 : formulaList[fun.name].args)[index + 1] || {
|
|
@@ -110,7 +95,7 @@ var CaseEditor = React.forwardRef(function (props, ref) {
|
|
|
110
95
|
};
|
|
111
96
|
_args.splice(index + 1, 0, tem);
|
|
112
97
|
setFun(_objectSpread(_objectSpread({}, fun), {}, {
|
|
113
|
-
quotes: getQuotes(_args),
|
|
98
|
+
quotes: getQuotes(fun, _args, formulaList),
|
|
114
99
|
args: _args
|
|
115
100
|
}));
|
|
116
101
|
};
|
|
@@ -118,7 +103,7 @@ var CaseEditor = React.forwardRef(function (props, ref) {
|
|
|
118
103
|
var _args = cloneDeep(fun.args);
|
|
119
104
|
_args.splice(index, 1);
|
|
120
105
|
setFun(_objectSpread(_objectSpread({}, fun), {}, {
|
|
121
|
-
quotes: getQuotes(_args),
|
|
106
|
+
quotes: getQuotes(fun, _args, formulaList),
|
|
122
107
|
args: _args
|
|
123
108
|
}));
|
|
124
109
|
};
|
|
@@ -147,11 +132,12 @@ var CaseEditor = React.forwardRef(function (props, ref) {
|
|
|
147
132
|
},
|
|
148
133
|
value: fun.id || fun.name,
|
|
149
134
|
triggerElement: function triggerElement(value) {
|
|
135
|
+
var _formulaList$fun$id;
|
|
150
136
|
return _jsx("div", {
|
|
151
137
|
className: cx("Sqb-TableName Sqb-TableName-OPERATOR", {
|
|
152
138
|
notSelected: !fun.name
|
|
153
139
|
}),
|
|
154
|
-
children: fun.
|
|
140
|
+
children: fun.id ? (_formulaList$fun$id = formulaList[fun.id]) === null || _formulaList$fun$id === void 0 ? void 0 : _formulaList$fun$id.name : __('customColumn.selectFormula')
|
|
155
141
|
});
|
|
156
142
|
},
|
|
157
143
|
onChange: function onChange(val) {
|
|
@@ -214,7 +200,7 @@ var CaseEditor = React.forwardRef(function (props, ref) {
|
|
|
214
200
|
// })
|
|
215
201
|
// .join(' , ');
|
|
216
202
|
setFun(_objectSpread(_objectSpread({}, fun), {}, {
|
|
217
|
-
quotes: getQuotes(_args),
|
|
203
|
+
quotes: getQuotes(fun, _args, formulaList),
|
|
218
204
|
//fun.name + ' ( ' + quotes + ' ) ',
|
|
219
205
|
args: _args
|
|
220
206
|
}));
|
|
@@ -55,4 +55,20 @@ export function getParamActions(params, arity) {
|
|
|
55
55
|
// 小于 max 才能加
|
|
56
56
|
canDel: len > effectiveMin // 大于 min 才能删
|
|
57
57
|
};
|
|
58
|
-
}
|
|
58
|
+
}
|
|
59
|
+
export var getQuotes = function getQuotes(fun, _args, formulaList) {
|
|
60
|
+
var _formulaList$fun$id;
|
|
61
|
+
var quotes = _args === null || _args === void 0 ? void 0 : _args.map(function (v) {
|
|
62
|
+
var quotes = v.list.map(function (vv, i) {
|
|
63
|
+
if (vv !== null && vv !== void 0 && vv.quotes) {
|
|
64
|
+
return vv === null || vv === void 0 ? void 0 : vv.quotes;
|
|
65
|
+
} else if (vv !== null && vv !== void 0 && vv.fieldName) {
|
|
66
|
+
return vv === null || vv === void 0 ? void 0 : vv.fieldName;
|
|
67
|
+
} else {
|
|
68
|
+
return vv.val;
|
|
69
|
+
}
|
|
70
|
+
}).join(' ');
|
|
71
|
+
return quotes;
|
|
72
|
+
}).join(' , ');
|
|
73
|
+
return ((_formulaList$fun$id = formulaList[fun.id]) === null || _formulaList$fun$id === void 0 ? void 0 : _formulaList$fun$id.name) + ' ( ' + quotes + ' ) ';
|
|
74
|
+
};
|
|
@@ -7,7 +7,7 @@ var _excluded = ["notExistsToolbar", "toolbar"],
|
|
|
7
7
|
_excluded2 = ["subToolbar", "notExistsColumns", "showFields", "isExit", "toolbar"];
|
|
8
8
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
9
9
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
-
import React, { useEffect, useState, useRef, forwardRef } from 'react';
|
|
10
|
+
import React, { useEffect, useState, useMemo, useRef, forwardRef } from 'react';
|
|
11
11
|
import './index.less';
|
|
12
12
|
import { FieldString, FieldNumber, FfPlus } from '@gingkoo/pandora-icons';
|
|
13
13
|
import cx from 'classnames';
|
|
@@ -15,6 +15,7 @@ import cx from 'classnames';
|
|
|
15
15
|
import Metabase from '../../../index';
|
|
16
16
|
import { __ } from '../../../locale';
|
|
17
17
|
import isEqual from 'lodash/isEqual';
|
|
18
|
+
import { getObjTem, getQuotes } from '../formula/utils';
|
|
18
19
|
import { AtomsTypeEnum, FormulaTypeEnum } from '../../../store/types';
|
|
19
20
|
import { ColumnsPopupThemeEnum } from '../../../store/enum';
|
|
20
21
|
import { Select, Input, Modal2, Modal, InputNumber, Radio, Space, Button, Checkbox, Tooltip } from '@gingkoo/pandora';
|
|
@@ -23,7 +24,7 @@ import { buildSqlQuery, isError, changeCopyField } from '../../../utils';
|
|
|
23
24
|
import Formula from '../formula';
|
|
24
25
|
import { AddIcon, CloseIcon } from '../../icons';
|
|
25
26
|
import { Expression, SelectColumnMultiple } from '../../dialog';
|
|
26
|
-
import { customTypes, operatorList, insertTemplateAt, getTemplateItem, validateExpressionIntegrity } from './utils';
|
|
27
|
+
import { customTypes, operatorList as __operatorList, insertTemplateAt, getTemplateItem, validateExpressionIntegrity, getConstantLabel } from './utils';
|
|
27
28
|
import SelectList from '../../dialog/select-list';
|
|
28
29
|
import arrow from './arrow.svg';
|
|
29
30
|
import { useStore, Provider } from '../../../hooks/use-provider';
|
|
@@ -51,6 +52,7 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
51
52
|
window.removeEventListener('sqb-checked-items-changed', handler);
|
|
52
53
|
};
|
|
53
54
|
}, []);
|
|
55
|
+
var store = useStore();
|
|
54
56
|
var value = props.value,
|
|
55
57
|
data = props.data,
|
|
56
58
|
exitData = props.exitData,
|
|
@@ -58,7 +60,7 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
58
60
|
_props$customTypes = props.customTypes,
|
|
59
61
|
_customTypes = _props$customTypes === void 0 ? customTypes : _props$customTypes,
|
|
60
62
|
_props$operatorList = props.operatorList,
|
|
61
|
-
_operatorList = _props$operatorList === void 0 ? operatorList : _props$operatorList,
|
|
63
|
+
_operatorList = _props$operatorList === void 0 ? store.operatorList : _props$operatorList,
|
|
62
64
|
_props$isCustom = props.isCustom,
|
|
63
65
|
isCustom = _props$isCustom === void 0 ? false : _props$isCustom,
|
|
64
66
|
_props$showPreview = props.showPreview,
|
|
@@ -67,8 +69,14 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
67
69
|
_props$_type = props._type,
|
|
68
70
|
_type = _props$_type === void 0 ? 'filter' : _props$_type;
|
|
69
71
|
var caseList = value || [];
|
|
70
|
-
var store = useStore();
|
|
71
72
|
var caseListRef = useRef(caseList);
|
|
73
|
+
var operatorList = useMemo(function () {
|
|
74
|
+
if (store.operatorList.length > 0) {
|
|
75
|
+
return store.operatorList;
|
|
76
|
+
} else {
|
|
77
|
+
return __operatorList;
|
|
78
|
+
}
|
|
79
|
+
}, [store.operatorList]);
|
|
72
80
|
var _useState3 = useState(''),
|
|
73
81
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
74
82
|
oldCode = _useState4[0],
|
|
@@ -86,13 +94,17 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
86
94
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
87
95
|
isCopy = _useState8[0],
|
|
88
96
|
setIsCopy = _useState8[1];
|
|
97
|
+
var _useState9 = useState(getObjTem(store.formulaTemplates)),
|
|
98
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
99
|
+
formulaList = _useState0[0],
|
|
100
|
+
setFunctionList = _useState0[1];
|
|
89
101
|
useEffect(function () {
|
|
90
102
|
setOldCode(getPreviewStr(caseList));
|
|
91
103
|
}, []);
|
|
92
|
-
var
|
|
93
|
-
|
|
94
|
-
filterVal =
|
|
95
|
-
setFilterVal =
|
|
104
|
+
var _useState1 = useState(''),
|
|
105
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
106
|
+
filterVal = _useState10[0],
|
|
107
|
+
setFilterVal = _useState10[1];
|
|
96
108
|
var setCaseList = function setCaseList(data) {
|
|
97
109
|
var quotes = data.map(function (v, i) {
|
|
98
110
|
if (v !== null && v !== void 0 && v.quotes) {
|
|
@@ -107,35 +119,35 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
107
119
|
caseList = data;
|
|
108
120
|
caseListRef.current = data;
|
|
109
121
|
};
|
|
110
|
-
var
|
|
111
|
-
|
|
112
|
-
ind =
|
|
113
|
-
setInd =
|
|
122
|
+
var _useState11 = useState(-1),
|
|
123
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
124
|
+
ind = _useState12[0],
|
|
125
|
+
setInd = _useState12[1];
|
|
114
126
|
var filterCustomType = store.filterCustomType;
|
|
115
127
|
var _ref = useRef(null);
|
|
116
|
-
var
|
|
128
|
+
var _useState13 = useState({
|
|
117
129
|
isError: false
|
|
118
130
|
}),
|
|
119
|
-
_useState12 = _slicedToArray(_useState11, 2),
|
|
120
|
-
errorInfo = _useState12[0],
|
|
121
|
-
setErrorInfo = _useState12[1];
|
|
122
|
-
var _useState13 = useState(false),
|
|
123
131
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
var
|
|
127
|
-
var _useState15 = useState(!!window.__sqb_selection_active__),
|
|
132
|
+
errorInfo = _useState14[0],
|
|
133
|
+
setErrorInfo = _useState14[1];
|
|
134
|
+
var _useState15 = useState(false),
|
|
128
135
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
var
|
|
136
|
+
isCheck = _useState16[0],
|
|
137
|
+
setIsCheck = _useState16[1];
|
|
138
|
+
var myInstanceIdRef = useRef(Math.random().toString(36).slice(2));
|
|
139
|
+
var _useState17 = useState(!!window.__sqb_selection_active__),
|
|
132
140
|
_useState18 = _slicedToArray(_useState17, 2),
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
var _useState19 = useState(
|
|
141
|
+
globalSelectionActive = _useState18[0],
|
|
142
|
+
setGlobalSelectionActive = _useState18[1];
|
|
143
|
+
var _useState19 = useState(window.__sqb_selection_owner__ || null),
|
|
136
144
|
_useState20 = _slicedToArray(_useState19, 2),
|
|
137
|
-
|
|
138
|
-
|
|
145
|
+
globalSelectionOwner = _useState20[0],
|
|
146
|
+
setGlobalSelectionOwner = _useState20[1];
|
|
147
|
+
var _useState21 = useState([]),
|
|
148
|
+
_useState22 = _slicedToArray(_useState21, 2),
|
|
149
|
+
selectedIndices = _useState22[0],
|
|
150
|
+
setSelectedIndices = _useState22[1];
|
|
139
151
|
useEffect(function () {
|
|
140
152
|
var leftBrackets = caseList.filter(function (v) {
|
|
141
153
|
return v.type === AtomsTypeEnum.OPERATOR && v.val === '(';
|
|
@@ -260,9 +272,15 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
260
272
|
// 常量
|
|
261
273
|
var handleConstant = function handleConstant(val, i) {
|
|
262
274
|
var _caseList = caseList.slice();
|
|
263
|
-
var
|
|
264
|
-
_caseList[i].
|
|
265
|
-
|
|
275
|
+
var oldVal = _caseList[i].val;
|
|
276
|
+
var oldType = _caseList[i].type;
|
|
277
|
+
if (oldType === AtomsTypeEnum.CONSTANT) {
|
|
278
|
+
_caseList[i].id = val;
|
|
279
|
+
_caseList[i].val = getConstantLabel(store.constantList, val);
|
|
280
|
+
} else {
|
|
281
|
+
_caseList[i].val = val;
|
|
282
|
+
}
|
|
283
|
+
_caseList = insertTemplateAt(oldVal, val, _caseList, i);
|
|
266
284
|
setCaseList(_caseList);
|
|
267
285
|
};
|
|
268
286
|
// 表达式
|
|
@@ -734,9 +752,9 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
734
752
|
notSelected: !v.val
|
|
735
753
|
}),
|
|
736
754
|
"v-index": index,
|
|
737
|
-
"v-val": v.val,
|
|
755
|
+
"v-val": v.id || v.val,
|
|
738
756
|
onClick: selectConstant,
|
|
739
|
-
children: [v.val ? v.val : __('SqlQueryBuilder.pickConstant'), _jsx("span", {
|
|
757
|
+
children: [v.val || v.id ? getConstantLabel(store.constantList, v.id || v.val) : __('SqlQueryBuilder.pickConstant'), _jsx("span", {
|
|
740
758
|
style: {
|
|
741
759
|
fontSize: 0
|
|
742
760
|
},
|
|
@@ -777,7 +795,7 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
777
795
|
onClick: function onClick(e) {
|
|
778
796
|
return showFunction(e, index);
|
|
779
797
|
},
|
|
780
|
-
children: [v.
|
|
798
|
+
children: [v.name ? getQuotes(v, v.args, formulaList) : __('customColumn.selectFormula'), _jsx("span", {
|
|
781
799
|
style: {
|
|
782
800
|
fontSize: 0
|
|
783
801
|
},
|
|
@@ -1013,7 +1031,8 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
1013
1031
|
}), _jsxs("div", {
|
|
1014
1032
|
style: {
|
|
1015
1033
|
maxHeight: '700px',
|
|
1016
|
-
overflow: 'auto'
|
|
1034
|
+
overflow: 'auto',
|
|
1035
|
+
wordBreak: 'break-word'
|
|
1017
1036
|
},
|
|
1018
1037
|
children: [previewMode === 'diff' && _jsx(DiffViewer, {
|
|
1019
1038
|
oldCode: oldCode,
|
|
@@ -459,4 +459,11 @@ export function validateExpressionIntegrity(list) {
|
|
|
459
459
|
return {
|
|
460
460
|
isError: false
|
|
461
461
|
};
|
|
462
|
-
}
|
|
462
|
+
}
|
|
463
|
+
export var getConstantLabel = function getConstantLabel(list, val) {
|
|
464
|
+
var _list$filter;
|
|
465
|
+
var _list = _toConsumableArray(list);
|
|
466
|
+
return ((_list$filter = _list.filter(function (v) {
|
|
467
|
+
return v.value === val;
|
|
468
|
+
})) === null || _list$filter === void 0 || (_list$filter = _list$filter[0]) === null || _list$filter === void 0 ? void 0 : _list$filter.label) || '';
|
|
469
|
+
};
|
|
@@ -159,32 +159,36 @@ var useStore = function useStore() {
|
|
|
159
159
|
setSourceTable = _useState52[1];
|
|
160
160
|
var _useState53 = useState([]),
|
|
161
161
|
_useState54 = _slicedToArray(_useState53, 2),
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
var _useState55 = useState(
|
|
162
|
+
operatorList = _useState54[0],
|
|
163
|
+
setOperatorList = _useState54[1]; // 操作符
|
|
164
|
+
var _useState55 = useState([]),
|
|
165
165
|
_useState56 = _slicedToArray(_useState55, 2),
|
|
166
|
-
|
|
167
|
-
|
|
166
|
+
copyType = _useState56[0],
|
|
167
|
+
setCopyType = _useState56[1]; // 复制类型
|
|
168
168
|
var _useState57 = useState(false),
|
|
169
169
|
_useState58 = _slicedToArray(_useState57, 2),
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
var _useState59 = useState(
|
|
170
|
+
metabaseCopy = _useState58[0],
|
|
171
|
+
setMetabaseCopy = _useState58[1]; // 是否开启复制功能
|
|
172
|
+
var _useState59 = useState(false),
|
|
173
173
|
_useState60 = _slicedToArray(_useState59, 2),
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
var _useState61 = useState(
|
|
174
|
+
moduleDiff = _useState60[0],
|
|
175
|
+
setModuleDiff = _useState60[1]; // 是否开启模块比对功能
|
|
176
|
+
var _useState61 = useState([]),
|
|
177
177
|
_useState62 = _slicedToArray(_useState61, 2),
|
|
178
|
-
|
|
179
|
-
|
|
178
|
+
sourceData = _useState62[0],
|
|
179
|
+
setSourceData = _useState62[1]; // 原始数据
|
|
180
180
|
var _useState63 = useState(false),
|
|
181
181
|
_useState64 = _slicedToArray(_useState63, 2),
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
var _useState65 = useState(
|
|
182
|
+
moduleCopy = _useState64[0],
|
|
183
|
+
setModuleCopy = _useState64[1]; // 是否开启模块复制功能
|
|
184
|
+
var _useState65 = useState(false),
|
|
185
185
|
_useState66 = _slicedToArray(_useState65, 2),
|
|
186
|
-
|
|
187
|
-
|
|
186
|
+
isMetabaseCopy = _useState66[0],
|
|
187
|
+
setIsMetabaseCopy = _useState66[1]; // 是否开启勾选组复制
|
|
188
|
+
var _useState67 = useState(storage._metabaseCopyModule || []),
|
|
189
|
+
_useState68 = _slicedToArray(_useState67, 2),
|
|
190
|
+
metabaseCopyModule = _useState68[0],
|
|
191
|
+
setMetabaseCopyModule = _useState68[1]; // 复制的内容
|
|
188
192
|
var setFormulaTemplates = function setFormulaTemplates(data) {
|
|
189
193
|
var newData = data === null || data === void 0 ? void 0 : data.map(function (v) {
|
|
190
194
|
var children = v.children.map(function (vv) {
|
|
@@ -866,7 +870,9 @@ var useStore = function useStore() {
|
|
|
866
870
|
metabaseCopyModule: metabaseCopyModule,
|
|
867
871
|
setMetabaseCopyModule: setMetabaseCopyModule,
|
|
868
872
|
isMetabaseCopy: isMetabaseCopy,
|
|
869
|
-
setIsMetabaseCopy: setIsMetabaseCopy
|
|
873
|
+
setIsMetabaseCopy: setIsMetabaseCopy,
|
|
874
|
+
operatorList: operatorList,
|
|
875
|
+
setOperatorList: setOperatorList
|
|
870
876
|
};
|
|
871
877
|
};
|
|
872
878
|
export default useStore;
|
package/lib/es/index.js
CHANGED
|
@@ -68,7 +68,9 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
|
|
|
68
68
|
_props$moduleDiff = props.moduleDiff,
|
|
69
69
|
moduleDiff = _props$moduleDiff === void 0 ? false : _props$moduleDiff,
|
|
70
70
|
_props$moduleCopy = props.moduleCopy,
|
|
71
|
-
moduleCopy = _props$moduleCopy === void 0 ? false : _props$moduleCopy
|
|
71
|
+
moduleCopy = _props$moduleCopy === void 0 ? false : _props$moduleCopy,
|
|
72
|
+
_props$operatorList = props.operatorList,
|
|
73
|
+
operatorList = _props$operatorList === void 0 ? [] : _props$operatorList;
|
|
72
74
|
var store = useData();
|
|
73
75
|
useEffect(function () {
|
|
74
76
|
getTables && store.setFetchDatasetFn(getTables);
|
|
@@ -110,7 +112,8 @@ var SqlVisionBuilder = React.forwardRef(function (props, ref) {
|
|
|
110
112
|
store.setModuleDiff(moduleDiff);
|
|
111
113
|
store.setIsSubquery(isSubquery);
|
|
112
114
|
store.setModuleCopy(moduleCopy);
|
|
113
|
-
|
|
115
|
+
store.setOperatorList(operatorList);
|
|
116
|
+
}, [showFields, fieldNameTpl, tableNameTpl, toolbar, showSubquery, subShowSubquery, constantList, formulaTemplates, ignoreGroupByType, filterCustomType, isExit, tableEnableAlias, fieldEnableAlias, groupByEnableAlias, isSelectFields, tableFlat, copyType, metabaseCopy, moduleDiff, isSubquery, moduleCopy, operatorList]);
|
|
114
117
|
React.useImperativeHandle(ref, function () {
|
|
115
118
|
return {
|
|
116
119
|
// setDatasource: (list) => {
|
package/lib/es/store/types.d.ts
CHANGED
package/lib/es/types.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gingkoo/pandora-metabase",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.92",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/es/index.js",
|
|
6
6
|
"module": "lib/es/index.js",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"react-dom": "^17.0.0 || ^18.0.0"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@gingkoo/pandora": "1.2.20-alpha.
|
|
30
|
+
"@gingkoo/pandora": "1.2.20-alpha.3",
|
|
31
31
|
"@gingkoo/pandora-hooks": "1.0.5",
|
|
32
32
|
"@gingkoo/pandora-icons": "0.0.1-alpha.28",
|
|
33
33
|
"@types/diff": "^8.0.0",
|