@gingkoo/pandora-metabase 1.0.123 → 1.0.125
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/date-format-picker.d.ts +2 -0
- package/lib/cjs/components/dialog/expression/date-format-picker.js +14 -6
- package/lib/cjs/components/dialog/expression/index.d.ts +1 -0
- package/lib/cjs/components/dialog/expression/index.js +54 -9
- package/lib/cjs/components/dialog/formula/utils.js +16 -0
- package/lib/cjs/components/dialog/formula-list/index.js +30 -1
- package/lib/cjs/components/dialog/formula-list/utils.js +2 -0
- package/lib/cjs/components/modules/custom-column.js +3 -0
- package/lib/cjs/components/modules/summarize/group-by.js +5 -2
- package/lib/cjs/components/modules/summarize/select-index.js +13 -5
- package/lib/cjs/store/types.d.ts +12 -0
- package/lib/es/components/dialog/expression/date-format-picker.d.ts +2 -0
- package/lib/es/components/dialog/expression/date-format-picker.js +14 -6
- package/lib/es/components/dialog/expression/index.d.ts +1 -0
- package/lib/es/components/dialog/expression/index.js +54 -9
- package/lib/es/components/dialog/formula/utils.js +16 -0
- package/lib/es/components/dialog/formula-list/index.js +30 -1
- package/lib/es/components/dialog/formula-list/utils.js +2 -0
- package/lib/es/components/modules/custom-column.js +3 -0
- package/lib/es/components/modules/summarize/group-by.js +6 -3
- package/lib/es/components/modules/summarize/select-index.js +14 -6
- package/lib/es/store/types.d.ts +12 -0
- package/package.json +1 -1
|
@@ -3,12 +3,14 @@ interface DateRangeFormatPickerProps {
|
|
|
3
3
|
value?: string[];
|
|
4
4
|
format?: string;
|
|
5
5
|
onChange?: (val: string[], format?: string) => void;
|
|
6
|
+
getPopupContainer?: (node: HTMLElement) => Element;
|
|
6
7
|
}
|
|
7
8
|
export declare const DateRangeFormatPicker: React.FC<DateRangeFormatPickerProps>;
|
|
8
9
|
interface DateFormatPickerProps {
|
|
9
10
|
value?: string;
|
|
10
11
|
format?: string;
|
|
11
12
|
onChange?: (val: string, format?: string) => void;
|
|
13
|
+
getPopupContainer?: (node: HTMLElement) => Element;
|
|
12
14
|
}
|
|
13
15
|
export declare const DateFormatPicker: React.FC<DateFormatPickerProps>;
|
|
14
16
|
export {};
|
|
@@ -24,7 +24,8 @@ var DEFAULT_FORMAT = 'YYYY-MM-DD HH:mm';
|
|
|
24
24
|
var DateRangeFormatPicker = exports.DateRangeFormatPicker = function DateRangeFormatPicker(_ref) {
|
|
25
25
|
var value = _ref.value,
|
|
26
26
|
format = _ref.format,
|
|
27
|
-
onChange = _ref.onChange
|
|
27
|
+
onChange = _ref.onChange,
|
|
28
|
+
getPopupContainer = _ref.getPopupContainer;
|
|
28
29
|
var _useState = (0, _react.useState)(format || DEFAULT_FORMAT),
|
|
29
30
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
30
31
|
currentFormat = _useState2[0],
|
|
@@ -79,6 +80,7 @@ var DateRangeFormatPicker = exports.DateRangeFormatPicker = function DateRangeFo
|
|
|
79
80
|
},
|
|
80
81
|
value: currentFormat,
|
|
81
82
|
onChange: handleFormatChange,
|
|
83
|
+
getPopupContainer: getPopupContainer,
|
|
82
84
|
children: DATE_FORMAT_OPTIONS.map(function (option) {
|
|
83
85
|
return (0, _jsxRuntime.jsx)(_pandora.Select.Option, {
|
|
84
86
|
value: option.value,
|
|
@@ -93,14 +95,16 @@ var DateRangeFormatPicker = exports.DateRangeFormatPicker = function DateRangeFo
|
|
|
93
95
|
},
|
|
94
96
|
format: currentFormat,
|
|
95
97
|
showTime: showTime,
|
|
96
|
-
mode: getRangePickerMode()
|
|
98
|
+
mode: getRangePickerMode(),
|
|
99
|
+
getPopupContainer: getPopupContainer
|
|
97
100
|
})]
|
|
98
101
|
});
|
|
99
102
|
};
|
|
100
103
|
var DateFormatPicker = exports.DateFormatPicker = function DateFormatPicker(_ref2) {
|
|
101
104
|
var value = _ref2.value,
|
|
102
105
|
format = _ref2.format,
|
|
103
|
-
onChange = _ref2.onChange
|
|
106
|
+
onChange = _ref2.onChange,
|
|
107
|
+
getPopupContainer = _ref2.getPopupContainer;
|
|
104
108
|
var _useState3 = (0, _react.useState)(format || DEFAULT_FORMAT),
|
|
105
109
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
106
110
|
currentFormat = _useState4[0],
|
|
@@ -147,7 +151,8 @@ var DateFormatPicker = exports.DateFormatPicker = function DateFormatPicker(_ref
|
|
|
147
151
|
onChange: handleYearChange,
|
|
148
152
|
style: {
|
|
149
153
|
flex: 1
|
|
150
|
-
}
|
|
154
|
+
},
|
|
155
|
+
getPopupContainer: getPopupContainer
|
|
151
156
|
});
|
|
152
157
|
}
|
|
153
158
|
if (isMonthOnly) {
|
|
@@ -157,7 +162,8 @@ var DateFormatPicker = exports.DateFormatPicker = function DateFormatPicker(_ref
|
|
|
157
162
|
style: {
|
|
158
163
|
flex: 1
|
|
159
164
|
},
|
|
160
|
-
format: currentFormat
|
|
165
|
+
format: currentFormat,
|
|
166
|
+
getPopupContainer: getPopupContainer
|
|
161
167
|
});
|
|
162
168
|
}
|
|
163
169
|
return (0, _jsxRuntime.jsx)(_pandora.DatePicker, {
|
|
@@ -167,7 +173,8 @@ var DateFormatPicker = exports.DateFormatPicker = function DateFormatPicker(_ref
|
|
|
167
173
|
flex: 1
|
|
168
174
|
},
|
|
169
175
|
format: currentFormat,
|
|
170
|
-
showTime: showTime
|
|
176
|
+
showTime: showTime,
|
|
177
|
+
getPopupContainer: getPopupContainer
|
|
171
178
|
});
|
|
172
179
|
};
|
|
173
180
|
return (0, _jsxRuntime.jsxs)("div", {
|
|
@@ -181,6 +188,7 @@ var DateFormatPicker = exports.DateFormatPicker = function DateFormatPicker(_ref
|
|
|
181
188
|
},
|
|
182
189
|
value: currentFormat,
|
|
183
190
|
onChange: handleFormatChange,
|
|
191
|
+
getPopupContainer: getPopupContainer,
|
|
184
192
|
children: DATE_FORMAT_OPTIONS.map(function (option) {
|
|
185
193
|
return (0, _jsxRuntime.jsx)(_pandora.Select.Option, {
|
|
186
194
|
value: option.value,
|
|
@@ -9,6 +9,7 @@ interface PropsType {
|
|
|
9
9
|
isCustom?: boolean;
|
|
10
10
|
container?: any;
|
|
11
11
|
filterCustomType?: boolean;
|
|
12
|
+
parentPopupChannel?: 'primary' | 'secondary';
|
|
12
13
|
}
|
|
13
14
|
declare const _default: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
|
|
14
15
|
export default _default;
|
|
@@ -54,7 +54,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
54
54
|
_ref$container = _ref.container,
|
|
55
55
|
container = _ref$container === void 0 ? null : _ref$container,
|
|
56
56
|
_ref$filterCustomType = _ref.filterCustomType,
|
|
57
|
-
filterCustomType = _ref$filterCustomType === void 0 ? false : _ref$filterCustomType
|
|
57
|
+
filterCustomType = _ref$filterCustomType === void 0 ? false : _ref$filterCustomType,
|
|
58
|
+
parentPopupChannel = _ref.parentPopupChannel;
|
|
58
59
|
var _useState = (0, _react.useState)(value),
|
|
59
60
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
60
61
|
curColumn = _useState2[0],
|
|
@@ -84,6 +85,37 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
84
85
|
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
85
86
|
isNext = _useState12[0],
|
|
86
87
|
setIsNext = _useState12[1];
|
|
88
|
+
var setParentClosable = function setParentClosable(closable) {
|
|
89
|
+
if (parentPopupChannel === 'secondary') {
|
|
90
|
+
store.setClosable2(closable);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
store.setClosable(closable);
|
|
94
|
+
};
|
|
95
|
+
var setDropdownClosable = function setDropdownClosable(visible) {
|
|
96
|
+
if (visible) {
|
|
97
|
+
setParentClosable(false);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
setTimeout(function () {
|
|
101
|
+
return setParentClosable(true);
|
|
102
|
+
}, 300);
|
|
103
|
+
};
|
|
104
|
+
var setSelectPopupClosable = function setSelectPopupClosable(visible) {
|
|
105
|
+
setPopupVisible(visible);
|
|
106
|
+
if (visible) {
|
|
107
|
+
setParentClosable(false);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
setTimeout(function () {
|
|
111
|
+
return setParentClosable(true);
|
|
112
|
+
}, 300);
|
|
113
|
+
};
|
|
114
|
+
var getCurrentPopupContainer = function getCurrentPopupContainer(node) {
|
|
115
|
+
var _node$closest;
|
|
116
|
+
var popupContainer = node === null || node === void 0 || (_node$closest = node.closest) === null || _node$closest === void 0 ? void 0 : _node$closest.call(node, '[data-sqb-popup-container="true"]');
|
|
117
|
+
return popupContainer || document.body;
|
|
118
|
+
};
|
|
87
119
|
var table2Selected = Boolean(rhsVal && (rhsVal === null || rhsVal === void 0 ? void 0 : rhsVal.length) > 0);
|
|
88
120
|
var disabled = (0, _react.useMemo)(function () {
|
|
89
121
|
if (!condition) return true;
|
|
@@ -362,6 +394,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
362
394
|
return (0, _jsxRuntime.jsx)("div", {
|
|
363
395
|
children: (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
|
|
364
396
|
trigger: ['click'],
|
|
397
|
+
onVisibleChange: setDropdownClosable,
|
|
398
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
365
399
|
onChange: function onChange(key) {
|
|
366
400
|
setRhsVal([{
|
|
367
401
|
type: _types.AtomsTypeEnum.INPUT_STRING,
|
|
@@ -404,6 +438,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
404
438
|
}
|
|
405
439
|
}), (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
|
|
406
440
|
trigger: ['click'],
|
|
441
|
+
onVisibleChange: setDropdownClosable,
|
|
442
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
407
443
|
droplist: [{
|
|
408
444
|
key: '分',
|
|
409
445
|
label: (0, _locale.__)('filter.minute')
|
|
@@ -444,6 +480,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
444
480
|
return (0, _jsxRuntime.jsx)(_dateFormatPicker.DateFormatPicker, {
|
|
445
481
|
value: _dateVal,
|
|
446
482
|
format: _dateFormat,
|
|
483
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
447
484
|
onChange: function onChange(val, format) {
|
|
448
485
|
if (val) {
|
|
449
486
|
setRhsVal([{
|
|
@@ -467,6 +504,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
467
504
|
return (0, _jsxRuntime.jsx)(_dateFormatPicker.DateFormatPicker, {
|
|
468
505
|
value: _dateVal2,
|
|
469
506
|
format: _dateFormat2,
|
|
507
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
470
508
|
onChange: function onChange(val, format) {
|
|
471
509
|
if (val) {
|
|
472
510
|
setRhsVal([{
|
|
@@ -492,6 +530,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
492
530
|
placeholder: "\u53EF\u8F93\u5165\u56DE\u8F66\u65B0\u589E\u4E0B\u62C9\u9009\u9879",
|
|
493
531
|
allowCreate: true,
|
|
494
532
|
multiple: true,
|
|
533
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
495
534
|
value: options,
|
|
496
535
|
onChange: function onChange(val) {
|
|
497
536
|
setRhsVal([{
|
|
@@ -501,10 +540,10 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
501
540
|
},
|
|
502
541
|
popupVisible: popupVisible,
|
|
503
542
|
onBlur: function onBlur() {
|
|
504
|
-
|
|
543
|
+
setSelectPopupClosable(false);
|
|
505
544
|
},
|
|
506
545
|
onClick: function onClick() {
|
|
507
|
-
|
|
546
|
+
setSelectPopupClosable(true);
|
|
508
547
|
},
|
|
509
548
|
children: options.map(function (option) {
|
|
510
549
|
return (0, _jsxRuntime.jsx)(_pandora.Select.Option, {
|
|
@@ -536,7 +575,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
536
575
|
});
|
|
537
576
|
}
|
|
538
577
|
var selectConstant = function selectConstant(e) {
|
|
539
|
-
|
|
578
|
+
setParentClosable(false);
|
|
540
579
|
var node = e.currentTarget;
|
|
541
580
|
var _val = node.getAttribute('v-val');
|
|
542
581
|
store.setPopup2({
|
|
@@ -552,13 +591,13 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
552
591
|
newVal[0].id = val;
|
|
553
592
|
newVal[0].val = (0, _utils.getConstantLabel)(store.constantList, val);
|
|
554
593
|
setRhsVal(newVal);
|
|
555
|
-
|
|
594
|
+
setParentClosable(true);
|
|
556
595
|
}
|
|
557
596
|
})
|
|
558
597
|
});
|
|
559
598
|
};
|
|
560
599
|
var onRepeat = function onRepeat(e) {
|
|
561
|
-
|
|
600
|
+
setParentClosable(false);
|
|
562
601
|
store.setPopup2({
|
|
563
602
|
visible: true,
|
|
564
603
|
node: e.currentTarget,
|
|
@@ -600,13 +639,13 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
600
639
|
type: _types.AtomsTypeEnum.FIELD
|
|
601
640
|
}]);
|
|
602
641
|
}
|
|
603
|
-
|
|
642
|
+
setParentClosable(true);
|
|
604
643
|
}
|
|
605
644
|
})
|
|
606
645
|
});
|
|
607
646
|
};
|
|
608
647
|
var selectTable = function selectTable(e) {
|
|
609
|
-
|
|
648
|
+
setParentClosable(false);
|
|
610
649
|
var node = e.currentTarget;
|
|
611
650
|
var _index = Number(node.getAttribute('v-index'));
|
|
612
651
|
store.setPopup2({
|
|
@@ -633,7 +672,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
633
672
|
store.setPopup2({
|
|
634
673
|
visible: false
|
|
635
674
|
});
|
|
636
|
-
|
|
675
|
+
setParentClosable(true);
|
|
637
676
|
}
|
|
638
677
|
})
|
|
639
678
|
});
|
|
@@ -680,6 +719,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
680
719
|
className: 'left-info-formula',
|
|
681
720
|
children: (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
|
|
682
721
|
trigger: ['click'],
|
|
722
|
+
onVisibleChange: setDropdownClosable,
|
|
723
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
683
724
|
onChange: function onChange(key) {
|
|
684
725
|
changeFormula(key);
|
|
685
726
|
},
|
|
@@ -745,6 +786,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
745
786
|
className: 'right-info',
|
|
746
787
|
children: [filterCustomType && (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
|
|
747
788
|
trigger: ['click'],
|
|
789
|
+
onVisibleChange: setDropdownClosable,
|
|
790
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
748
791
|
onChange: function onChange(key) {
|
|
749
792
|
setCondition('');
|
|
750
793
|
setCurColumn((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, curColumn), {}, {
|
|
@@ -768,6 +811,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
768
811
|
})
|
|
769
812
|
}), (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
|
|
770
813
|
trigger: ['click'],
|
|
814
|
+
onVisibleChange: setDropdownClosable,
|
|
815
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
771
816
|
onChange: function onChange(key) {
|
|
772
817
|
setCurColumn((0, _objectSpread2["default"])({}, curColumn));
|
|
773
818
|
setDefaultVal(key);
|
|
@@ -69,6 +69,22 @@ var getQuotes = exports.getQuotes = function getQuotes(fun, _args, formulaList)
|
|
|
69
69
|
return vv === null || vv === void 0 ? void 0 : vv.quotes;
|
|
70
70
|
} else if (vv !== null && vv !== void 0 && vv.fieldName) {
|
|
71
71
|
return vv === null || vv === void 0 ? void 0 : vv.fieldName;
|
|
72
|
+
} else if ((vv === null || vv === void 0 ? void 0 : vv.type) === _types.AtomsTypeEnum.SELECT) {
|
|
73
|
+
var displayField = vv.displayField || 'value';
|
|
74
|
+
var getOptionText = function getOptionText(value) {
|
|
75
|
+
var _ref, _option$displayField;
|
|
76
|
+
var option = (vv.options || []).find(function (currentOption) {
|
|
77
|
+
return currentOption.value === value;
|
|
78
|
+
});
|
|
79
|
+
if (!option) return value || '';
|
|
80
|
+
return String((_ref = (_option$displayField = option[displayField]) !== null && _option$displayField !== void 0 ? _option$displayField : option.value) !== null && _ref !== void 0 ? _ref : '');
|
|
81
|
+
};
|
|
82
|
+
if (Array.isArray(vv.val)) {
|
|
83
|
+
return vv.val.map(function (currentValue) {
|
|
84
|
+
return getOptionText(currentValue);
|
|
85
|
+
}).join(', ');
|
|
86
|
+
}
|
|
87
|
+
return getOptionText(vv.val || '');
|
|
72
88
|
} else {
|
|
73
89
|
return vv.val;
|
|
74
90
|
}
|
|
@@ -240,6 +240,23 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
240
240
|
nextList[index] = nextItem;
|
|
241
241
|
setCaseList(nextList);
|
|
242
242
|
};
|
|
243
|
+
function getSelectDisplayText(item) {
|
|
244
|
+
var displayField = item.displayField || 'value';
|
|
245
|
+
var getOptionText = function getOptionText(value) {
|
|
246
|
+
var _ref2, _option$displayField;
|
|
247
|
+
var option = (item.options || []).find(function (currentOption) {
|
|
248
|
+
return currentOption.value === value;
|
|
249
|
+
});
|
|
250
|
+
if (!option) return value || '';
|
|
251
|
+
return String((_ref2 = (_option$displayField = option[displayField]) !== null && _option$displayField !== void 0 ? _option$displayField : option.value) !== null && _ref2 !== void 0 ? _ref2 : '');
|
|
252
|
+
};
|
|
253
|
+
if (Array.isArray(item.val)) {
|
|
254
|
+
return item.val.map(function (currentValue) {
|
|
255
|
+
return getOptionText(String(currentValue));
|
|
256
|
+
}).join(', ');
|
|
257
|
+
}
|
|
258
|
+
return getOptionText(String(item.val || ''));
|
|
259
|
+
}
|
|
243
260
|
function getItemDisplayText(v) {
|
|
244
261
|
if (!v) return '';
|
|
245
262
|
if (v.quotes) return v.quotes;
|
|
@@ -271,6 +288,9 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
271
288
|
}).join(' ');
|
|
272
289
|
return "".concat(v.operator || 'and', " ( ").concat(listText, " )").replace(/\s+/g, ' ').trim();
|
|
273
290
|
}
|
|
291
|
+
if (v.type === _types.AtomsTypeEnum.SELECT) {
|
|
292
|
+
return getSelectDisplayText(v);
|
|
293
|
+
}
|
|
274
294
|
if (Array.isArray(v.val)) {
|
|
275
295
|
return v.val.join(', ');
|
|
276
296
|
}
|
|
@@ -633,6 +653,11 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
633
653
|
visible: false
|
|
634
654
|
});
|
|
635
655
|
}
|
|
656
|
+
var getCurrentPopupContainer = function getCurrentPopupContainer(node) {
|
|
657
|
+
var _node$closest;
|
|
658
|
+
var popupContainer = node === null || node === void 0 || (_node$closest = node.closest) === null || _node$closest === void 0 ? void 0 : _node$closest.call(node, '[data-sqb-popup-container="true"]');
|
|
659
|
+
return popupContainer || document.body;
|
|
660
|
+
};
|
|
636
661
|
var getSelectTriggerProps = function getSelectTriggerProps() {
|
|
637
662
|
return {
|
|
638
663
|
clickToClose: true,
|
|
@@ -657,6 +682,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
657
682
|
showSearch: true,
|
|
658
683
|
trigger: trigger,
|
|
659
684
|
triggerProps: getSelectTriggerProps(),
|
|
685
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
660
686
|
virtualListProps: {
|
|
661
687
|
threshold: null
|
|
662
688
|
},
|
|
@@ -754,6 +780,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
754
780
|
filterCustomType: filterCustomType,
|
|
755
781
|
data: data,
|
|
756
782
|
container: ref === null || ref === void 0 ? void 0 : ref.current,
|
|
783
|
+
parentPopupChannel: 'primary',
|
|
757
784
|
value: val || {},
|
|
758
785
|
onChange: function onChange(data) {
|
|
759
786
|
var _caseList = caseList.slice();
|
|
@@ -1216,6 +1243,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
1216
1243
|
}),
|
|
1217
1244
|
node: (0, _jsxRuntime.jsx)(_pandora.Select, {
|
|
1218
1245
|
triggerProps: getSelectTriggerProps(),
|
|
1246
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
1219
1247
|
value: v.val,
|
|
1220
1248
|
triggerElement: function triggerElement() {
|
|
1221
1249
|
return renderTokenContent((0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
@@ -1317,11 +1345,12 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
|
|
|
1317
1345
|
}),
|
|
1318
1346
|
node: (0, _jsxRuntime.jsx)(_pandora.Select, {
|
|
1319
1347
|
triggerProps: getSelectTriggerProps(),
|
|
1348
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
1320
1349
|
multiple: v.multiple,
|
|
1321
1350
|
value: v.val,
|
|
1322
1351
|
triggerElement: function triggerElement() {
|
|
1323
1352
|
return renderTokenContent((0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
1324
|
-
children: [!v.val && (0, _locale.__)('customColumn.
|
|
1353
|
+
children: [!v.val && (v.placeholder || (0, _locale.__)('customColumn.pleaseSelect')), getSelectDisplayText(v), !v.fixed && renderDeleteIcon(v, index, groupType)]
|
|
1325
1354
|
}));
|
|
1326
1355
|
},
|
|
1327
1356
|
onChange: function onChange(val) {
|
|
@@ -234,6 +234,8 @@ var getTemplateItem = exports.getTemplateItem = function getTemplateItem(type, i
|
|
|
234
234
|
options: item.options || [],
|
|
235
235
|
multiple: item.multiple || false,
|
|
236
236
|
fixed: item.fixed || false,
|
|
237
|
+
placeholder: item.placeholder || '',
|
|
238
|
+
displayField: item.displayField || 'value',
|
|
237
239
|
quotes: '',
|
|
238
240
|
type: type
|
|
239
241
|
};
|
|
@@ -26,6 +26,7 @@ var _metaIcon = _interopRequireDefault(require("./components/meta-icon"));
|
|
|
26
26
|
var _header = _interopRequireDefault(require("./components/header"));
|
|
27
27
|
var _itemWrapper = _interopRequireDefault(require("./components/item-wrapper"));
|
|
28
28
|
var _itemName = _interopRequireDefault(require("./components/item-name"));
|
|
29
|
+
var _helperDom = require("../../utils/helper-dom");
|
|
29
30
|
var CustomColumn = function CustomColumn(props) {
|
|
30
31
|
var meta = props.meta,
|
|
31
32
|
groupIndex = props.groupIndex;
|
|
@@ -213,7 +214,9 @@ var CustomColumn = function CustomColumn(props) {
|
|
|
213
214
|
var showSubQuery = function showSubQuery(e, i) {
|
|
214
215
|
var newMeta = store.metaList[groupIndex].list.slice();
|
|
215
216
|
var _value = newMeta[index].customColumn[i] || [];
|
|
217
|
+
var childModalZIndex = (0, _helperDom.getTopLayerZIndex)() + 1;
|
|
216
218
|
var o = _pandora.Modal2.openModal({
|
|
219
|
+
zIndex: childModalZIndex,
|
|
217
220
|
title: (0, _locale.__)('SqlQueryBuilder.customExpression'),
|
|
218
221
|
transparentMask: true,
|
|
219
222
|
content: (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
@@ -365,7 +365,6 @@ var GroupBy = function GroupBy(props) {
|
|
|
365
365
|
newMeta = store.metaList[groupIndex].list.slice();
|
|
366
366
|
newMeta[index].by[i].fieldAlias = fieldAlias;
|
|
367
367
|
newMeta[index].by[i].sql = (0, _helper2.summarizeByToSql)(newMeta[index].by[i]);
|
|
368
|
-
newMeta = (0, _utils.changeFieldAlias)(newMeta, newMeta[index].by[i]);
|
|
369
368
|
store.setMeta(newMeta, groupIndex, {
|
|
370
369
|
obj: newMeta[index].by,
|
|
371
370
|
type: _types.ChangeType.by
|
|
@@ -460,6 +459,10 @@ var GroupBy = function GroupBy(props) {
|
|
|
460
459
|
var field = getField(record);
|
|
461
460
|
return field.fieldName ? [field] : [];
|
|
462
461
|
};
|
|
462
|
+
var getErrorCheckField = function getErrorCheckField(record) {
|
|
463
|
+
var atoms = getAtomsValue(record);
|
|
464
|
+
return _getFirstField(atoms) || getField(record);
|
|
465
|
+
};
|
|
463
466
|
var normalizeByRecord = function normalizeByRecord(record, itemIndex, metaList) {
|
|
464
467
|
var _store$preProps;
|
|
465
468
|
var atoms = getAtomsValue(record);
|
|
@@ -496,7 +499,7 @@ var GroupBy = function GroupBy(props) {
|
|
|
496
499
|
return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
497
500
|
children: [meta.by.map(function (v, i) {
|
|
498
501
|
return (0, _jsxRuntime.jsx)(_itemName["default"], {
|
|
499
|
-
isError: (0, _utils.isExistsError)([
|
|
502
|
+
isError: (0, _utils.isExistsError)([getErrorCheckField(v)], store.existsError),
|
|
500
503
|
children: (0, _jsxRuntime.jsxs)("div", {
|
|
501
504
|
className: "Sqb-TableName green-name",
|
|
502
505
|
onClick: function onClick(e) {
|
|
@@ -161,7 +161,11 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
161
161
|
_pandora.Toast.warning(summarizeWithoutArgumentMessage);
|
|
162
162
|
return;
|
|
163
163
|
}
|
|
164
|
-
newMeta[index].group
|
|
164
|
+
var prevRecord = newMeta[index].group[i];
|
|
165
|
+
var nextRecord = normalizeGroupRecord(data);
|
|
166
|
+
nextRecord.fieldAlias = (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord.fieldAlias) || nextRecord.fieldAlias;
|
|
167
|
+
nextRecord.fieldUuid = (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord.fieldUuid) || nextRecord.fieldUuid;
|
|
168
|
+
newMeta[index].group.splice(i, 1, nextRecord);
|
|
165
169
|
newMeta[index].group = newMeta[index].group.map(function (v) {
|
|
166
170
|
var _summarizeToSql = (0, _helper.summarizeToSql)(newMeta[index].group, v),
|
|
167
171
|
sql = _summarizeToSql.sql,
|
|
@@ -169,7 +173,8 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
169
173
|
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
|
|
170
174
|
name: v.name || v.quotes,
|
|
171
175
|
sql: sql,
|
|
172
|
-
|
|
176
|
+
fieldUuid: v.fieldUuid || (0, _helper2.uuidv4)('field'),
|
|
177
|
+
fieldAlias: v.fieldAlias || fieldAlias
|
|
173
178
|
});
|
|
174
179
|
});
|
|
175
180
|
store.setMeta(newMeta, groupIndex, {
|
|
@@ -221,7 +226,7 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
221
226
|
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
|
|
222
227
|
name: v.name || v.quotes,
|
|
223
228
|
sql: sql,
|
|
224
|
-
fieldUuid: (0, _helper2.uuidv4)('field'),
|
|
229
|
+
fieldUuid: v.fieldUuid || (0, _helper2.uuidv4)('field'),
|
|
225
230
|
fieldAlias: v.fieldAlias || fieldAlias,
|
|
226
231
|
summarizeType: _types.MetaSummarize_Enum.GROUP
|
|
227
232
|
});
|
|
@@ -276,7 +281,6 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
276
281
|
newMeta = store.metaList[groupIndex].list.slice();
|
|
277
282
|
newMeta[index].group[i].fieldAlias = fieldAlias;
|
|
278
283
|
newMeta[index].group[i].sql = newMeta[index].group[i].sql.split('AS ')[0] + "AS ".concat(fieldAlias);
|
|
279
|
-
newMeta = (0, _utils.changeFieldAlias)(newMeta, newMeta[index].group[i]);
|
|
280
284
|
store.setMeta(newMeta, groupIndex, {
|
|
281
285
|
obj: newMeta[index].group,
|
|
282
286
|
type: _types.ChangeType.group
|
|
@@ -379,6 +383,10 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
379
383
|
var field = getField(record);
|
|
380
384
|
return field.fieldName ? [field] : [];
|
|
381
385
|
};
|
|
386
|
+
var getErrorCheckField = function getErrorCheckField(record) {
|
|
387
|
+
var atoms = getAtomsValue(record);
|
|
388
|
+
return _getFirstField(atoms) || getField(record);
|
|
389
|
+
};
|
|
382
390
|
var normalizeGroupRecord = function normalizeGroupRecord(record) {
|
|
383
391
|
var atoms = getAtomsValue(record);
|
|
384
392
|
var firstField = _getFirstField(atoms);
|
|
@@ -406,7 +414,7 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
406
414
|
return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
407
415
|
children: [meta.group.map(function (v, i) {
|
|
408
416
|
return (0, _jsxRuntime.jsx)(_itemName["default"], {
|
|
409
|
-
isError: (0, _utils.isExistsError)([
|
|
417
|
+
isError: (0, _utils.isExistsError)([getErrorCheckField(v)], store.existsError),
|
|
410
418
|
children: (0, _jsxRuntime.jsxs)("div", {
|
|
411
419
|
className: "Sqb-TableName green-name",
|
|
412
420
|
onClick: function onClick(e) {
|
package/lib/cjs/store/types.d.ts
CHANGED
|
@@ -146,6 +146,7 @@ export interface AtomsConstant {
|
|
|
146
146
|
val: string;
|
|
147
147
|
type: AtomsTypeEnum.CONSTANT;
|
|
148
148
|
}
|
|
149
|
+
export type SelectOptionDisplayField = 'label' | 'value';
|
|
149
150
|
export interface AtomsOprator {
|
|
150
151
|
val: string;
|
|
151
152
|
type: AtomsTypeEnum.OPERATOR;
|
|
@@ -168,6 +169,8 @@ export interface AtomsSelect {
|
|
|
168
169
|
val: string | string[] | null;
|
|
169
170
|
multiple?: boolean;
|
|
170
171
|
fixed?: boolean;
|
|
172
|
+
placeholder?: string;
|
|
173
|
+
displayField?: SelectOptionDisplayField;
|
|
171
174
|
type: AtomsTypeEnum.SELECT;
|
|
172
175
|
}
|
|
173
176
|
export type AtomsItem = AtomsSubQuery | AtomsNotExists | AtomsExists | AtomsJoinDefault | AtomsExpression | AtomsCaseWhen | AtomsAndOr | AtomsFormula | AtomsField | AtomsInputString | AtomsInputStringList | AtomsInputNumberList | AtomsInputNumber | AtomsOprator | AtomsConstant | AtomsUnknown | AtomsCollection | AtomsSelect;
|
|
@@ -396,6 +399,15 @@ export interface FormulaTemplatesItem {
|
|
|
396
399
|
args: {
|
|
397
400
|
type: AtomsTypeEnum;
|
|
398
401
|
check?: string | null;
|
|
402
|
+
options?: {
|
|
403
|
+
label: string;
|
|
404
|
+
value: string;
|
|
405
|
+
}[];
|
|
406
|
+
default?: string | string[];
|
|
407
|
+
multiple?: boolean;
|
|
408
|
+
fixed?: boolean;
|
|
409
|
+
placeholder?: string;
|
|
410
|
+
displayField?: SelectOptionDisplayField;
|
|
399
411
|
}[];
|
|
400
412
|
arity?: Arity;
|
|
401
413
|
output?: string;
|
|
@@ -3,12 +3,14 @@ interface DateRangeFormatPickerProps {
|
|
|
3
3
|
value?: string[];
|
|
4
4
|
format?: string;
|
|
5
5
|
onChange?: (val: string[], format?: string) => void;
|
|
6
|
+
getPopupContainer?: (node: HTMLElement) => Element;
|
|
6
7
|
}
|
|
7
8
|
export declare const DateRangeFormatPicker: React.FC<DateRangeFormatPickerProps>;
|
|
8
9
|
interface DateFormatPickerProps {
|
|
9
10
|
value?: string;
|
|
10
11
|
format?: string;
|
|
11
12
|
onChange?: (val: string, format?: string) => void;
|
|
13
|
+
getPopupContainer?: (node: HTMLElement) => Element;
|
|
12
14
|
}
|
|
13
15
|
export declare const DateFormatPicker: React.FC<DateFormatPickerProps>;
|
|
14
16
|
export {};
|
|
@@ -17,7 +17,8 @@ var DEFAULT_FORMAT = 'YYYY-MM-DD HH:mm';
|
|
|
17
17
|
export var DateRangeFormatPicker = function DateRangeFormatPicker(_ref) {
|
|
18
18
|
var value = _ref.value,
|
|
19
19
|
format = _ref.format,
|
|
20
|
-
onChange = _ref.onChange
|
|
20
|
+
onChange = _ref.onChange,
|
|
21
|
+
getPopupContainer = _ref.getPopupContainer;
|
|
21
22
|
var _useState = useState(format || DEFAULT_FORMAT),
|
|
22
23
|
_useState2 = _slicedToArray(_useState, 2),
|
|
23
24
|
currentFormat = _useState2[0],
|
|
@@ -72,6 +73,7 @@ export var DateRangeFormatPicker = function DateRangeFormatPicker(_ref) {
|
|
|
72
73
|
},
|
|
73
74
|
value: currentFormat,
|
|
74
75
|
onChange: handleFormatChange,
|
|
76
|
+
getPopupContainer: getPopupContainer,
|
|
75
77
|
children: DATE_FORMAT_OPTIONS.map(function (option) {
|
|
76
78
|
return _jsx(Select.Option, {
|
|
77
79
|
value: option.value,
|
|
@@ -86,14 +88,16 @@ export var DateRangeFormatPicker = function DateRangeFormatPicker(_ref) {
|
|
|
86
88
|
},
|
|
87
89
|
format: currentFormat,
|
|
88
90
|
showTime: showTime,
|
|
89
|
-
mode: getRangePickerMode()
|
|
91
|
+
mode: getRangePickerMode(),
|
|
92
|
+
getPopupContainer: getPopupContainer
|
|
90
93
|
})]
|
|
91
94
|
});
|
|
92
95
|
};
|
|
93
96
|
export var DateFormatPicker = function DateFormatPicker(_ref2) {
|
|
94
97
|
var value = _ref2.value,
|
|
95
98
|
format = _ref2.format,
|
|
96
|
-
onChange = _ref2.onChange
|
|
99
|
+
onChange = _ref2.onChange,
|
|
100
|
+
getPopupContainer = _ref2.getPopupContainer;
|
|
97
101
|
var _useState3 = useState(format || DEFAULT_FORMAT),
|
|
98
102
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
99
103
|
currentFormat = _useState4[0],
|
|
@@ -140,7 +144,8 @@ export var DateFormatPicker = function DateFormatPicker(_ref2) {
|
|
|
140
144
|
onChange: handleYearChange,
|
|
141
145
|
style: {
|
|
142
146
|
flex: 1
|
|
143
|
-
}
|
|
147
|
+
},
|
|
148
|
+
getPopupContainer: getPopupContainer
|
|
144
149
|
});
|
|
145
150
|
}
|
|
146
151
|
if (isMonthOnly) {
|
|
@@ -150,7 +155,8 @@ export var DateFormatPicker = function DateFormatPicker(_ref2) {
|
|
|
150
155
|
style: {
|
|
151
156
|
flex: 1
|
|
152
157
|
},
|
|
153
|
-
format: currentFormat
|
|
158
|
+
format: currentFormat,
|
|
159
|
+
getPopupContainer: getPopupContainer
|
|
154
160
|
});
|
|
155
161
|
}
|
|
156
162
|
return _jsx(DatePicker, {
|
|
@@ -160,7 +166,8 @@ export var DateFormatPicker = function DateFormatPicker(_ref2) {
|
|
|
160
166
|
flex: 1
|
|
161
167
|
},
|
|
162
168
|
format: currentFormat,
|
|
163
|
-
showTime: showTime
|
|
169
|
+
showTime: showTime,
|
|
170
|
+
getPopupContainer: getPopupContainer
|
|
164
171
|
});
|
|
165
172
|
};
|
|
166
173
|
return _jsxs("div", {
|
|
@@ -174,6 +181,7 @@ export var DateFormatPicker = function DateFormatPicker(_ref2) {
|
|
|
174
181
|
},
|
|
175
182
|
value: currentFormat,
|
|
176
183
|
onChange: handleFormatChange,
|
|
184
|
+
getPopupContainer: getPopupContainer,
|
|
177
185
|
children: DATE_FORMAT_OPTIONS.map(function (option) {
|
|
178
186
|
return _jsx(Select.Option, {
|
|
179
187
|
value: option.value,
|
|
@@ -9,6 +9,7 @@ interface PropsType {
|
|
|
9
9
|
isCustom?: boolean;
|
|
10
10
|
container?: any;
|
|
11
11
|
filterCustomType?: boolean;
|
|
12
|
+
parentPopupChannel?: 'primary' | 'secondary';
|
|
12
13
|
}
|
|
13
14
|
declare const _default: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
|
|
14
15
|
export default _default;
|
|
@@ -46,7 +46,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
46
46
|
_ref$container = _ref.container,
|
|
47
47
|
container = _ref$container === void 0 ? null : _ref$container,
|
|
48
48
|
_ref$filterCustomType = _ref.filterCustomType,
|
|
49
|
-
filterCustomType = _ref$filterCustomType === void 0 ? false : _ref$filterCustomType
|
|
49
|
+
filterCustomType = _ref$filterCustomType === void 0 ? false : _ref$filterCustomType,
|
|
50
|
+
parentPopupChannel = _ref.parentPopupChannel;
|
|
50
51
|
var _useState = useState(value),
|
|
51
52
|
_useState2 = _slicedToArray(_useState, 2),
|
|
52
53
|
curColumn = _useState2[0],
|
|
@@ -76,6 +77,37 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
76
77
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
77
78
|
isNext = _useState12[0],
|
|
78
79
|
setIsNext = _useState12[1];
|
|
80
|
+
var setParentClosable = function setParentClosable(closable) {
|
|
81
|
+
if (parentPopupChannel === 'secondary') {
|
|
82
|
+
store.setClosable2(closable);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
store.setClosable(closable);
|
|
86
|
+
};
|
|
87
|
+
var setDropdownClosable = function setDropdownClosable(visible) {
|
|
88
|
+
if (visible) {
|
|
89
|
+
setParentClosable(false);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
setTimeout(function () {
|
|
93
|
+
return setParentClosable(true);
|
|
94
|
+
}, 300);
|
|
95
|
+
};
|
|
96
|
+
var setSelectPopupClosable = function setSelectPopupClosable(visible) {
|
|
97
|
+
setPopupVisible(visible);
|
|
98
|
+
if (visible) {
|
|
99
|
+
setParentClosable(false);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
setTimeout(function () {
|
|
103
|
+
return setParentClosable(true);
|
|
104
|
+
}, 300);
|
|
105
|
+
};
|
|
106
|
+
var getCurrentPopupContainer = function getCurrentPopupContainer(node) {
|
|
107
|
+
var _node$closest;
|
|
108
|
+
var popupContainer = node === null || node === void 0 || (_node$closest = node.closest) === null || _node$closest === void 0 ? void 0 : _node$closest.call(node, '[data-sqb-popup-container="true"]');
|
|
109
|
+
return popupContainer || document.body;
|
|
110
|
+
};
|
|
79
111
|
var table2Selected = Boolean(rhsVal && (rhsVal === null || rhsVal === void 0 ? void 0 : rhsVal.length) > 0);
|
|
80
112
|
var disabled = useMemo(function () {
|
|
81
113
|
if (!condition) return true;
|
|
@@ -354,6 +386,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
354
386
|
return _jsx("div", {
|
|
355
387
|
children: _jsx(Dropdown, {
|
|
356
388
|
trigger: ['click'],
|
|
389
|
+
onVisibleChange: setDropdownClosable,
|
|
390
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
357
391
|
onChange: function onChange(key) {
|
|
358
392
|
setRhsVal([{
|
|
359
393
|
type: AtomsTypeEnum.INPUT_STRING,
|
|
@@ -396,6 +430,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
396
430
|
}
|
|
397
431
|
}), _jsx(Dropdown, {
|
|
398
432
|
trigger: ['click'],
|
|
433
|
+
onVisibleChange: setDropdownClosable,
|
|
434
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
399
435
|
droplist: [{
|
|
400
436
|
key: '分',
|
|
401
437
|
label: __('filter.minute')
|
|
@@ -436,6 +472,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
436
472
|
return _jsx(DateFormatPicker, {
|
|
437
473
|
value: _dateVal,
|
|
438
474
|
format: _dateFormat,
|
|
475
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
439
476
|
onChange: function onChange(val, format) {
|
|
440
477
|
if (val) {
|
|
441
478
|
setRhsVal([{
|
|
@@ -459,6 +496,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
459
496
|
return _jsx(DateFormatPicker, {
|
|
460
497
|
value: _dateVal2,
|
|
461
498
|
format: _dateFormat2,
|
|
499
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
462
500
|
onChange: function onChange(val, format) {
|
|
463
501
|
if (val) {
|
|
464
502
|
setRhsVal([{
|
|
@@ -484,6 +522,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
484
522
|
placeholder: "\u53EF\u8F93\u5165\u56DE\u8F66\u65B0\u589E\u4E0B\u62C9\u9009\u9879",
|
|
485
523
|
allowCreate: true,
|
|
486
524
|
multiple: true,
|
|
525
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
487
526
|
value: options,
|
|
488
527
|
onChange: function onChange(val) {
|
|
489
528
|
setRhsVal([{
|
|
@@ -493,10 +532,10 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
493
532
|
},
|
|
494
533
|
popupVisible: popupVisible,
|
|
495
534
|
onBlur: function onBlur() {
|
|
496
|
-
|
|
535
|
+
setSelectPopupClosable(false);
|
|
497
536
|
},
|
|
498
537
|
onClick: function onClick() {
|
|
499
|
-
|
|
538
|
+
setSelectPopupClosable(true);
|
|
500
539
|
},
|
|
501
540
|
children: options.map(function (option) {
|
|
502
541
|
return _jsx(Select.Option, {
|
|
@@ -528,7 +567,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
528
567
|
});
|
|
529
568
|
}
|
|
530
569
|
var selectConstant = function selectConstant(e) {
|
|
531
|
-
|
|
570
|
+
setParentClosable(false);
|
|
532
571
|
var node = e.currentTarget;
|
|
533
572
|
var _val = node.getAttribute('v-val');
|
|
534
573
|
store.setPopup2({
|
|
@@ -544,13 +583,13 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
544
583
|
newVal[0].id = val;
|
|
545
584
|
newVal[0].val = getConstantLabel(store.constantList, val);
|
|
546
585
|
setRhsVal(newVal);
|
|
547
|
-
|
|
586
|
+
setParentClosable(true);
|
|
548
587
|
}
|
|
549
588
|
})
|
|
550
589
|
});
|
|
551
590
|
};
|
|
552
591
|
var onRepeat = function onRepeat(e) {
|
|
553
|
-
|
|
592
|
+
setParentClosable(false);
|
|
554
593
|
store.setPopup2({
|
|
555
594
|
visible: true,
|
|
556
595
|
node: e.currentTarget,
|
|
@@ -592,13 +631,13 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
592
631
|
type: AtomsTypeEnum.FIELD
|
|
593
632
|
}]);
|
|
594
633
|
}
|
|
595
|
-
|
|
634
|
+
setParentClosable(true);
|
|
596
635
|
}
|
|
597
636
|
})
|
|
598
637
|
});
|
|
599
638
|
};
|
|
600
639
|
var selectTable = function selectTable(e) {
|
|
601
|
-
|
|
640
|
+
setParentClosable(false);
|
|
602
641
|
var node = e.currentTarget;
|
|
603
642
|
var _index = Number(node.getAttribute('v-index'));
|
|
604
643
|
store.setPopup2({
|
|
@@ -625,7 +664,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
625
664
|
store.setPopup2({
|
|
626
665
|
visible: false
|
|
627
666
|
});
|
|
628
|
-
|
|
667
|
+
setParentClosable(true);
|
|
629
668
|
}
|
|
630
669
|
})
|
|
631
670
|
});
|
|
@@ -672,6 +711,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
672
711
|
className: 'left-info-formula',
|
|
673
712
|
children: _jsx(Dropdown, {
|
|
674
713
|
trigger: ['click'],
|
|
714
|
+
onVisibleChange: setDropdownClosable,
|
|
715
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
675
716
|
onChange: function onChange(key) {
|
|
676
717
|
changeFormula(key);
|
|
677
718
|
},
|
|
@@ -737,6 +778,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
737
778
|
className: 'right-info',
|
|
738
779
|
children: [filterCustomType && _jsx(Dropdown, {
|
|
739
780
|
trigger: ['click'],
|
|
781
|
+
onVisibleChange: setDropdownClosable,
|
|
782
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
740
783
|
onChange: function onChange(key) {
|
|
741
784
|
setCondition('');
|
|
742
785
|
setCurColumn(_objectSpread(_objectSpread({}, curColumn), {}, {
|
|
@@ -760,6 +803,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
|
|
|
760
803
|
})
|
|
761
804
|
}), _jsx(Dropdown, {
|
|
762
805
|
trigger: ['click'],
|
|
806
|
+
onVisibleChange: setDropdownClosable,
|
|
807
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
763
808
|
onChange: function onChange(key) {
|
|
764
809
|
setCurColumn(_objectSpread({}, curColumn));
|
|
765
810
|
setDefaultVal(key);
|
|
@@ -61,6 +61,22 @@ export var getQuotes = function getQuotes(fun, _args, formulaList) {
|
|
|
61
61
|
return vv === null || vv === void 0 ? void 0 : vv.quotes;
|
|
62
62
|
} else if (vv !== null && vv !== void 0 && vv.fieldName) {
|
|
63
63
|
return vv === null || vv === void 0 ? void 0 : vv.fieldName;
|
|
64
|
+
} else if ((vv === null || vv === void 0 ? void 0 : vv.type) === AtomsTypeEnum.SELECT) {
|
|
65
|
+
var displayField = vv.displayField || 'value';
|
|
66
|
+
var getOptionText = function getOptionText(value) {
|
|
67
|
+
var _ref, _option$displayField;
|
|
68
|
+
var option = (vv.options || []).find(function (currentOption) {
|
|
69
|
+
return currentOption.value === value;
|
|
70
|
+
});
|
|
71
|
+
if (!option) return value || '';
|
|
72
|
+
return String((_ref = (_option$displayField = option[displayField]) !== null && _option$displayField !== void 0 ? _option$displayField : option.value) !== null && _ref !== void 0 ? _ref : '');
|
|
73
|
+
};
|
|
74
|
+
if (Array.isArray(vv.val)) {
|
|
75
|
+
return vv.val.map(function (currentValue) {
|
|
76
|
+
return getOptionText(currentValue);
|
|
77
|
+
}).join(', ');
|
|
78
|
+
}
|
|
79
|
+
return getOptionText(vv.val || '');
|
|
64
80
|
} else {
|
|
65
81
|
return vv.val;
|
|
66
82
|
}
|
|
@@ -231,6 +231,23 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
231
231
|
nextList[index] = nextItem;
|
|
232
232
|
setCaseList(nextList);
|
|
233
233
|
};
|
|
234
|
+
function getSelectDisplayText(item) {
|
|
235
|
+
var displayField = item.displayField || 'value';
|
|
236
|
+
var getOptionText = function getOptionText(value) {
|
|
237
|
+
var _ref2, _option$displayField;
|
|
238
|
+
var option = (item.options || []).find(function (currentOption) {
|
|
239
|
+
return currentOption.value === value;
|
|
240
|
+
});
|
|
241
|
+
if (!option) return value || '';
|
|
242
|
+
return String((_ref2 = (_option$displayField = option[displayField]) !== null && _option$displayField !== void 0 ? _option$displayField : option.value) !== null && _ref2 !== void 0 ? _ref2 : '');
|
|
243
|
+
};
|
|
244
|
+
if (Array.isArray(item.val)) {
|
|
245
|
+
return item.val.map(function (currentValue) {
|
|
246
|
+
return getOptionText(String(currentValue));
|
|
247
|
+
}).join(', ');
|
|
248
|
+
}
|
|
249
|
+
return getOptionText(String(item.val || ''));
|
|
250
|
+
}
|
|
234
251
|
function getItemDisplayText(v) {
|
|
235
252
|
if (!v) return '';
|
|
236
253
|
if (v.quotes) return v.quotes;
|
|
@@ -262,6 +279,9 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
262
279
|
}).join(' ');
|
|
263
280
|
return "".concat(v.operator || 'and', " ( ").concat(listText, " )").replace(/\s+/g, ' ').trim();
|
|
264
281
|
}
|
|
282
|
+
if (v.type === AtomsTypeEnum.SELECT) {
|
|
283
|
+
return getSelectDisplayText(v);
|
|
284
|
+
}
|
|
265
285
|
if (Array.isArray(v.val)) {
|
|
266
286
|
return v.val.join(', ');
|
|
267
287
|
}
|
|
@@ -624,6 +644,11 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
624
644
|
visible: false
|
|
625
645
|
});
|
|
626
646
|
}
|
|
647
|
+
var getCurrentPopupContainer = function getCurrentPopupContainer(node) {
|
|
648
|
+
var _node$closest;
|
|
649
|
+
var popupContainer = node === null || node === void 0 || (_node$closest = node.closest) === null || _node$closest === void 0 ? void 0 : _node$closest.call(node, '[data-sqb-popup-container="true"]');
|
|
650
|
+
return popupContainer || document.body;
|
|
651
|
+
};
|
|
627
652
|
var getSelectTriggerProps = function getSelectTriggerProps() {
|
|
628
653
|
return {
|
|
629
654
|
clickToClose: true,
|
|
@@ -648,6 +673,7 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
648
673
|
showSearch: true,
|
|
649
674
|
trigger: trigger,
|
|
650
675
|
triggerProps: getSelectTriggerProps(),
|
|
676
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
651
677
|
virtualListProps: {
|
|
652
678
|
threshold: null
|
|
653
679
|
},
|
|
@@ -745,6 +771,7 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
745
771
|
filterCustomType: filterCustomType,
|
|
746
772
|
data: data,
|
|
747
773
|
container: ref === null || ref === void 0 ? void 0 : ref.current,
|
|
774
|
+
parentPopupChannel: 'primary',
|
|
748
775
|
value: val || {},
|
|
749
776
|
onChange: function onChange(data) {
|
|
750
777
|
var _caseList = caseList.slice();
|
|
@@ -1207,6 +1234,7 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
1207
1234
|
}),
|
|
1208
1235
|
node: _jsx(Select, {
|
|
1209
1236
|
triggerProps: getSelectTriggerProps(),
|
|
1237
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
1210
1238
|
value: v.val,
|
|
1211
1239
|
triggerElement: function triggerElement() {
|
|
1212
1240
|
return renderTokenContent(_jsxs(_Fragment, {
|
|
@@ -1308,11 +1336,12 @@ var FormulaList = forwardRef(function (props, ref) {
|
|
|
1308
1336
|
}),
|
|
1309
1337
|
node: _jsx(Select, {
|
|
1310
1338
|
triggerProps: getSelectTriggerProps(),
|
|
1339
|
+
getPopupContainer: getCurrentPopupContainer,
|
|
1311
1340
|
multiple: v.multiple,
|
|
1312
1341
|
value: v.val,
|
|
1313
1342
|
triggerElement: function triggerElement() {
|
|
1314
1343
|
return renderTokenContent(_jsxs(_Fragment, {
|
|
1315
|
-
children: [!v.val && __('customColumn.
|
|
1344
|
+
children: [!v.val && (v.placeholder || __('customColumn.pleaseSelect')), getSelectDisplayText(v), !v.fixed && renderDeleteIcon(v, index, groupType)]
|
|
1316
1345
|
}));
|
|
1317
1346
|
},
|
|
1318
1347
|
onChange: function onChange(val) {
|
|
@@ -226,6 +226,8 @@ export var getTemplateItem = function getTemplateItem(type, item) {
|
|
|
226
226
|
options: item.options || [],
|
|
227
227
|
multiple: item.multiple || false,
|
|
228
228
|
fixed: item.fixed || false,
|
|
229
|
+
placeholder: item.placeholder || '',
|
|
230
|
+
displayField: item.displayField || 'value',
|
|
229
231
|
quotes: '',
|
|
230
232
|
type: type
|
|
231
233
|
};
|
|
@@ -21,6 +21,7 @@ import NextDom from './components/meta-icon';
|
|
|
21
21
|
import Header from './components/header';
|
|
22
22
|
import ItemWrapper from './components/item-wrapper';
|
|
23
23
|
import ItemName from './components/item-name';
|
|
24
|
+
import { getTopLayerZIndex } from '../../utils/helper-dom';
|
|
24
25
|
import { useStore } from '../../hooks/use-provider';
|
|
25
26
|
var CustomColumn = function CustomColumn(props) {
|
|
26
27
|
var meta = props.meta,
|
|
@@ -209,7 +210,9 @@ var CustomColumn = function CustomColumn(props) {
|
|
|
209
210
|
var showSubQuery = function showSubQuery(e, i) {
|
|
210
211
|
var newMeta = store.metaList[groupIndex].list.slice();
|
|
211
212
|
var _value = newMeta[index].customColumn[i] || [];
|
|
213
|
+
var childModalZIndex = getTopLayerZIndex() + 1;
|
|
212
214
|
var o = Modal2.openModal({
|
|
215
|
+
zIndex: childModalZIndex,
|
|
213
216
|
title: __('SqlQueryBuilder.customExpression'),
|
|
214
217
|
transparentMask: true,
|
|
215
218
|
content: _jsx(_Fragment, {
|
|
@@ -14,7 +14,7 @@ import { TypeEnum, SQL_COLUMN_TYPE } from '../../../store/enum';
|
|
|
14
14
|
import { MetaSummarize_Enum, AtomsTypeEnum, ChangeType } from '../../../store/types';
|
|
15
15
|
import { Tooltip, Button, Modal, Input, Toast } from '@gingkoo/pandora';
|
|
16
16
|
import { uuidv4, getAlias } from '../../../utils/helper';
|
|
17
|
-
import {
|
|
17
|
+
import { isExistsError, isValidSQLAlias } from '../../../utils';
|
|
18
18
|
import ItemName from '../components/item-name';
|
|
19
19
|
import { AddIcon, CloseIcon } from '../../icons';
|
|
20
20
|
import FormulaList from '../../dialog/formula-list';
|
|
@@ -359,7 +359,6 @@ var GroupBy = function GroupBy(props) {
|
|
|
359
359
|
newMeta = store.metaList[groupIndex].list.slice();
|
|
360
360
|
newMeta[index].by[i].fieldAlias = fieldAlias;
|
|
361
361
|
newMeta[index].by[i].sql = summarizeByToSql(newMeta[index].by[i]);
|
|
362
|
-
newMeta = changeFieldAlias(newMeta, newMeta[index].by[i]);
|
|
363
362
|
store.setMeta(newMeta, groupIndex, {
|
|
364
363
|
obj: newMeta[index].by,
|
|
365
364
|
type: ChangeType.by
|
|
@@ -454,6 +453,10 @@ var GroupBy = function GroupBy(props) {
|
|
|
454
453
|
var field = getField(record);
|
|
455
454
|
return field.fieldName ? [field] : [];
|
|
456
455
|
};
|
|
456
|
+
var getErrorCheckField = function getErrorCheckField(record) {
|
|
457
|
+
var atoms = getAtomsValue(record);
|
|
458
|
+
return _getFirstField(atoms) || getField(record);
|
|
459
|
+
};
|
|
457
460
|
var normalizeByRecord = function normalizeByRecord(record, itemIndex, metaList) {
|
|
458
461
|
var _store$preProps;
|
|
459
462
|
var atoms = getAtomsValue(record);
|
|
@@ -490,7 +493,7 @@ var GroupBy = function GroupBy(props) {
|
|
|
490
493
|
return _jsxs(_Fragment, {
|
|
491
494
|
children: [meta.by.map(function (v, i) {
|
|
492
495
|
return _jsx(ItemName, {
|
|
493
|
-
isError: isExistsError([
|
|
496
|
+
isError: isExistsError([getErrorCheckField(v)], store.existsError),
|
|
494
497
|
children: _jsxs("div", {
|
|
495
498
|
className: "Sqb-TableName green-name",
|
|
496
499
|
onClick: function onClick(e) {
|
|
@@ -13,7 +13,7 @@ import { summarizeToSql } from '../../../store/helper';
|
|
|
13
13
|
import { Tooltip, Button, Modal, Input, Toast } from '@gingkoo/pandora';
|
|
14
14
|
import { uuidv4 } from '../../../utils/helper';
|
|
15
15
|
import { MetaSummarize_Enum, AtomsTypeEnum, ChangeType } from '../../../store/types';
|
|
16
|
-
import {
|
|
16
|
+
import { isExistsError, isValidSQLAlias } from '../../../utils';
|
|
17
17
|
import ItemName from '../components/item-name';
|
|
18
18
|
import { AddIcon, CloseIcon } from '../../icons';
|
|
19
19
|
import { SelectSummarize } from '../../dialog';
|
|
@@ -155,7 +155,11 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
155
155
|
Toast.warning(summarizeWithoutArgumentMessage);
|
|
156
156
|
return;
|
|
157
157
|
}
|
|
158
|
-
newMeta[index].group
|
|
158
|
+
var prevRecord = newMeta[index].group[i];
|
|
159
|
+
var nextRecord = normalizeGroupRecord(data);
|
|
160
|
+
nextRecord.fieldAlias = (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord.fieldAlias) || nextRecord.fieldAlias;
|
|
161
|
+
nextRecord.fieldUuid = (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord.fieldUuid) || nextRecord.fieldUuid;
|
|
162
|
+
newMeta[index].group.splice(i, 1, nextRecord);
|
|
159
163
|
newMeta[index].group = newMeta[index].group.map(function (v) {
|
|
160
164
|
var _summarizeToSql = summarizeToSql(newMeta[index].group, v),
|
|
161
165
|
sql = _summarizeToSql.sql,
|
|
@@ -163,7 +167,8 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
163
167
|
return _objectSpread(_objectSpread({}, v), {}, {
|
|
164
168
|
name: v.name || v.quotes,
|
|
165
169
|
sql: sql,
|
|
166
|
-
|
|
170
|
+
fieldUuid: v.fieldUuid || uuidv4('field'),
|
|
171
|
+
fieldAlias: v.fieldAlias || fieldAlias
|
|
167
172
|
});
|
|
168
173
|
});
|
|
169
174
|
store.setMeta(newMeta, groupIndex, {
|
|
@@ -215,7 +220,7 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
215
220
|
return _objectSpread(_objectSpread({}, v), {}, {
|
|
216
221
|
name: v.name || v.quotes,
|
|
217
222
|
sql: sql,
|
|
218
|
-
fieldUuid: uuidv4('field'),
|
|
223
|
+
fieldUuid: v.fieldUuid || uuidv4('field'),
|
|
219
224
|
fieldAlias: v.fieldAlias || fieldAlias,
|
|
220
225
|
summarizeType: MetaSummarize_Enum.GROUP
|
|
221
226
|
});
|
|
@@ -270,7 +275,6 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
270
275
|
newMeta = store.metaList[groupIndex].list.slice();
|
|
271
276
|
newMeta[index].group[i].fieldAlias = fieldAlias;
|
|
272
277
|
newMeta[index].group[i].sql = newMeta[index].group[i].sql.split('AS ')[0] + "AS ".concat(fieldAlias);
|
|
273
|
-
newMeta = changeFieldAlias(newMeta, newMeta[index].group[i]);
|
|
274
278
|
store.setMeta(newMeta, groupIndex, {
|
|
275
279
|
obj: newMeta[index].group,
|
|
276
280
|
type: ChangeType.group
|
|
@@ -373,6 +377,10 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
373
377
|
var field = getField(record);
|
|
374
378
|
return field.fieldName ? [field] : [];
|
|
375
379
|
};
|
|
380
|
+
var getErrorCheckField = function getErrorCheckField(record) {
|
|
381
|
+
var atoms = getAtomsValue(record);
|
|
382
|
+
return _getFirstField(atoms) || getField(record);
|
|
383
|
+
};
|
|
376
384
|
var normalizeGroupRecord = function normalizeGroupRecord(record) {
|
|
377
385
|
var atoms = getAtomsValue(record);
|
|
378
386
|
var firstField = _getFirstField(atoms);
|
|
@@ -400,7 +408,7 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
400
408
|
return _jsxs(_Fragment, {
|
|
401
409
|
children: [meta.group.map(function (v, i) {
|
|
402
410
|
return _jsx(ItemName, {
|
|
403
|
-
isError: isExistsError([
|
|
411
|
+
isError: isExistsError([getErrorCheckField(v)], store.existsError),
|
|
404
412
|
children: _jsxs("div", {
|
|
405
413
|
className: "Sqb-TableName green-name",
|
|
406
414
|
onClick: function onClick(e) {
|
package/lib/es/store/types.d.ts
CHANGED
|
@@ -146,6 +146,7 @@ export interface AtomsConstant {
|
|
|
146
146
|
val: string;
|
|
147
147
|
type: AtomsTypeEnum.CONSTANT;
|
|
148
148
|
}
|
|
149
|
+
export type SelectOptionDisplayField = 'label' | 'value';
|
|
149
150
|
export interface AtomsOprator {
|
|
150
151
|
val: string;
|
|
151
152
|
type: AtomsTypeEnum.OPERATOR;
|
|
@@ -168,6 +169,8 @@ export interface AtomsSelect {
|
|
|
168
169
|
val: string | string[] | null;
|
|
169
170
|
multiple?: boolean;
|
|
170
171
|
fixed?: boolean;
|
|
172
|
+
placeholder?: string;
|
|
173
|
+
displayField?: SelectOptionDisplayField;
|
|
171
174
|
type: AtomsTypeEnum.SELECT;
|
|
172
175
|
}
|
|
173
176
|
export type AtomsItem = AtomsSubQuery | AtomsNotExists | AtomsExists | AtomsJoinDefault | AtomsExpression | AtomsCaseWhen | AtomsAndOr | AtomsFormula | AtomsField | AtomsInputString | AtomsInputStringList | AtomsInputNumberList | AtomsInputNumber | AtomsOprator | AtomsConstant | AtomsUnknown | AtomsCollection | AtomsSelect;
|
|
@@ -396,6 +399,15 @@ export interface FormulaTemplatesItem {
|
|
|
396
399
|
args: {
|
|
397
400
|
type: AtomsTypeEnum;
|
|
398
401
|
check?: string | null;
|
|
402
|
+
options?: {
|
|
403
|
+
label: string;
|
|
404
|
+
value: string;
|
|
405
|
+
}[];
|
|
406
|
+
default?: string | string[];
|
|
407
|
+
multiple?: boolean;
|
|
408
|
+
fixed?: boolean;
|
|
409
|
+
placeholder?: string;
|
|
410
|
+
displayField?: SelectOptionDisplayField;
|
|
399
411
|
}[];
|
|
400
412
|
arity?: Arity;
|
|
401
413
|
output?: string;
|