@gingkoo/pandora-metabase 1.0.118 → 1.0.119
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/common/Portal/index.js +0 -2
- package/lib/cjs/common/SplitView/index.d.ts +0 -4
- package/lib/cjs/common/SplitView/index.js +0 -10
- package/lib/cjs/components/dialog/custom-column/config.js +4 -48
- package/lib/cjs/components/dialog/custom-column/expression-editor.js +3 -14
- package/lib/cjs/components/dialog/custom-column/expressions/suggest.d.ts +2 -34
- package/lib/cjs/components/dialog/custom-column/expressions/suggest.js +2 -43
- package/lib/cjs/components/dialog/custom-column/expressions/tokenizer.js +8 -65
- package/lib/cjs/components/dialog/custom-column/index.js +2 -4
- package/lib/cjs/components/dialog/custom-column/tokenized-expression.js +2 -3
- package/lib/cjs/components/dialog/custom-column/tokenizedI-input.js +1 -1
- package/lib/cjs/components/dialog/custom-editor/index.js +2 -7
- package/lib/cjs/components/dialog/diff-viewer/index copy.js +1 -16
- package/lib/cjs/components/dialog/expression/date-format-picker.js +2 -20
- package/lib/cjs/components/dialog/expression/date-format.js +2 -8
- package/lib/cjs/components/dialog/expression/index.d.ts +0 -3
- package/lib/cjs/components/dialog/expression/index.js +2 -83
- package/lib/cjs/components/dialog/formula/index.js +1 -30
- package/lib/cjs/components/dialog/formula/utils.js +2 -10
- package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.d.ts +19 -0
- package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.js +109 -0
- package/lib/cjs/components/dialog/formula-list/LogicGroup.d.ts +9 -0
- package/lib/cjs/components/dialog/formula-list/LogicGroup.js +43 -0
- package/lib/cjs/components/dialog/formula-list/index.d.ts +3 -0
- package/lib/cjs/components/dialog/formula-list/index.js +967 -503
- package/lib/cjs/components/dialog/formula-list/index.less +724 -0
- package/lib/cjs/components/dialog/formula-list/utils.d.ts +0 -7
- package/lib/cjs/components/dialog/formula-list/utils.js +117 -113
- package/lib/cjs/components/dialog/select-column/index.d.ts +0 -6
- package/lib/cjs/components/dialog/select-column/index.js +4 -15
- package/lib/cjs/components/dialog/select-column-multiple/index.d.ts +0 -8
- package/lib/cjs/components/dialog/select-column-multiple/index.js +6 -45
- package/lib/cjs/components/dialog/select-join/index.d.ts +0 -5
- package/lib/cjs/components/dialog/select-join/index.js +0 -6
- package/lib/cjs/components/dialog/select-join-column/index.d.ts +0 -8
- package/lib/cjs/components/dialog/select-join-column/index.js +7 -21
- package/lib/cjs/components/dialog/select-join-column-multiple/index.d.ts +0 -8
- package/lib/cjs/components/dialog/select-join-column-multiple/index.js +5 -35
- package/lib/cjs/components/dialog/select-permission-table/index.d.ts +0 -5
- package/lib/cjs/components/dialog/select-permission-table/index.js +0 -6
- package/lib/cjs/components/dialog/select-summarize/index.d.ts +3 -3
- package/lib/cjs/components/dialog/select-summarize/index.js +105 -18
- package/lib/cjs/components/dialog/select-summarize/index.less +23 -0
- package/lib/cjs/components/dialog/select-table/index.d.ts +0 -6
- package/lib/cjs/components/dialog/select-table/index.js +1 -9
- package/lib/cjs/components/metabase/index.js +72 -86
- package/lib/cjs/components/metabase/index.less +7 -7
- package/lib/cjs/components/modules/components/Wrapper.js +1 -1
- package/lib/cjs/components/modules/components/header.js +2 -2
- package/lib/cjs/components/modules/components/meta-icon.d.ts +0 -3
- package/lib/cjs/components/modules/components/meta-icon.js +2 -47
- package/lib/cjs/components/modules/custom-column.js +3 -29
- package/lib/cjs/components/modules/enum/filter-enum.js +9 -88
- package/lib/cjs/components/modules/filter.js +2 -20
- package/lib/cjs/components/modules/index.d.ts +4 -2
- package/lib/cjs/components/modules/index.js +24 -1
- package/lib/cjs/components/modules/join-data.js +13 -291
- package/lib/cjs/components/modules/row-limit.js +0 -1
- package/lib/cjs/components/modules/sort.js +1 -61
- package/lib/cjs/components/modules/summarize/group-by.d.ts +0 -5
- package/lib/cjs/components/modules/summarize/group-by.js +231 -76
- package/lib/cjs/components/modules/summarize/select-index.js +96 -46
- package/lib/cjs/components/modules/table-data.js +11 -64
- package/lib/cjs/components/popup.js +26 -32
- package/lib/cjs/hooks/patch.d.ts +1 -0
- package/lib/cjs/hooks/patch.js +104 -6
- package/lib/cjs/hooks/patch2.js +3 -165
- package/lib/cjs/hooks/use-provider.js +0 -3
- package/lib/cjs/hooks/use-state.js +55 -135
- package/lib/cjs/index.js +0 -15
- package/lib/cjs/locale/en.js +5 -0
- package/lib/cjs/locale/index.js +1 -4
- package/lib/cjs/locale/zh.js +5 -0
- package/lib/cjs/sql-formula.js +0 -1
- package/lib/cjs/store/enum.d.ts +6 -6
- package/lib/cjs/store/enum.js +0 -13
- package/lib/cjs/store/helper.d.ts +2 -1
- package/lib/cjs/store/helper.js +15 -225
- package/lib/cjs/store/types.d.ts +45 -67
- package/lib/cjs/store/types.js +3 -49
- package/lib/cjs/types.d.ts +1 -0
- package/lib/cjs/utils/cookies.js +0 -3
- package/lib/cjs/utils/event.js +1 -1
- package/lib/cjs/utils/helper-dom.d.ts +1 -0
- package/lib/cjs/utils/helper-dom.js +17 -10
- package/lib/cjs/utils/helper.js +1 -24
- package/lib/cjs/utils/keydown.js +4 -7
- package/lib/cjs/utils/platform.d.ts +0 -9
- package/lib/cjs/utils/platform.js +0 -10
- package/lib/cjs/utils/selection.js +0 -6
- package/lib/cjs/utils/storage.d.ts +0 -9
- package/lib/cjs/utils/storage.js +1 -11
- package/lib/cjs/utils/transformSql.d.ts +5 -0
- package/lib/cjs/utils/transformSql.js +42 -113
- package/lib/cjs/utils.d.ts +1 -6
- package/lib/cjs/utils.js +115 -255
- package/lib/es/common/Portal/index.js +0 -2
- package/lib/es/common/SplitView/index.d.ts +0 -4
- package/lib/es/common/SplitView/index.js +0 -10
- package/lib/es/components/dialog/custom-column/config.js +4 -48
- package/lib/es/components/dialog/custom-column/expression-editor.js +3 -14
- package/lib/es/components/dialog/custom-column/expressions/suggest.d.ts +2 -34
- package/lib/es/components/dialog/custom-column/expressions/suggest.js +2 -43
- package/lib/es/components/dialog/custom-column/expressions/tokenizer.js +8 -65
- package/lib/es/components/dialog/custom-column/index.js +2 -4
- package/lib/es/components/dialog/custom-column/tokenized-expression.js +1 -3
- package/lib/es/components/dialog/custom-column/tokenizedI-input.js +1 -1
- package/lib/es/components/dialog/custom-editor/index.js +1 -7
- package/lib/es/components/dialog/diff-viewer/index copy.js +1 -15
- package/lib/es/components/dialog/expression/date-format-picker.js +2 -20
- package/lib/es/components/dialog/expression/date-format.js +2 -8
- package/lib/es/components/dialog/expression/index.d.ts +0 -3
- package/lib/es/components/dialog/expression/index.js +2 -82
- package/lib/es/components/dialog/formula/index.js +0 -30
- package/lib/es/components/dialog/formula/utils.js +2 -10
- package/lib/es/components/dialog/formula-list/CaseWhenGroup.d.ts +19 -0
- package/lib/es/components/dialog/formula-list/CaseWhenGroup.js +102 -0
- package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +9 -0
- package/lib/es/components/dialog/formula-list/LogicGroup.js +36 -0
- package/lib/es/components/dialog/formula-list/index.d.ts +3 -0
- package/lib/es/components/dialog/formula-list/index.js +966 -503
- package/lib/es/components/dialog/formula-list/index.less +724 -0
- package/lib/es/components/dialog/formula-list/utils.d.ts +0 -7
- package/lib/es/components/dialog/formula-list/utils.js +117 -113
- package/lib/es/components/dialog/index.js +3 -3
- package/lib/es/components/dialog/select-column/index.d.ts +0 -6
- package/lib/es/components/dialog/select-column/index.js +4 -14
- package/lib/es/components/dialog/select-column-multiple/index.d.ts +0 -8
- package/lib/es/components/dialog/select-column-multiple/index.js +7 -47
- package/lib/es/components/dialog/select-join/index.d.ts +0 -5
- package/lib/es/components/dialog/select-join/index.js +0 -5
- package/lib/es/components/dialog/select-join-column/index.d.ts +0 -8
- package/lib/es/components/dialog/select-join-column/index.js +7 -20
- package/lib/es/components/dialog/select-join-column-multiple/index.d.ts +0 -8
- package/lib/es/components/dialog/select-join-column-multiple/index.js +5 -34
- package/lib/es/components/dialog/select-permission-table/index.d.ts +0 -5
- package/lib/es/components/dialog/select-permission-table/index.js +0 -5
- package/lib/es/components/dialog/select-summarize/index.d.ts +3 -3
- package/lib/es/components/dialog/select-summarize/index.js +106 -18
- package/lib/es/components/dialog/select-summarize/index.less +23 -0
- package/lib/es/components/dialog/select-table/index.d.ts +0 -6
- package/lib/es/components/dialog/select-table/index.js +1 -8
- package/lib/es/components/metabase/index.js +72 -87
- package/lib/es/components/metabase/index.less +7 -7
- package/lib/es/components/modules/components/Wrapper.js +1 -1
- package/lib/es/components/modules/components/header.js +2 -2
- package/lib/es/components/modules/components/meta-icon.d.ts +0 -3
- package/lib/es/components/modules/components/meta-icon.js +2 -46
- package/lib/es/components/modules/custom-column.js +3 -29
- package/lib/es/components/modules/enum/filter-enum.js +9 -88
- package/lib/es/components/modules/filter.js +2 -19
- package/lib/es/components/modules/index.d.ts +4 -2
- package/lib/es/components/modules/index.js +24 -1
- package/lib/es/components/modules/join-data.js +13 -291
- package/lib/es/components/modules/row-limit.js +0 -1
- package/lib/es/components/modules/sort.js +1 -61
- package/lib/es/components/modules/summarize/group-by.d.ts +0 -5
- package/lib/es/components/modules/summarize/group-by.js +233 -78
- package/lib/es/components/modules/summarize/select-index.js +96 -46
- package/lib/es/components/modules/table-data.js +11 -64
- package/lib/es/components/popup.js +27 -33
- package/lib/es/hooks/patch.d.ts +1 -0
- package/lib/es/hooks/patch.js +103 -5
- package/lib/es/hooks/patch2.js +2 -164
- package/lib/es/hooks/use-provider.js +0 -3
- package/lib/es/hooks/use-state.js +55 -135
- package/lib/es/index.js +0 -14
- package/lib/es/locale/en.js +5 -0
- package/lib/es/locale/index.js +1 -4
- package/lib/es/locale/zh.js +5 -0
- package/lib/es/sql-formula.js +0 -1
- package/lib/es/store/enum.d.ts +6 -6
- package/lib/es/store/enum.js +0 -13
- package/lib/es/store/helper.d.ts +2 -1
- package/lib/es/store/helper.js +13 -224
- package/lib/es/store/types.d.ts +45 -67
- package/lib/es/store/types.js +3 -49
- package/lib/es/types.d.ts +1 -0
- package/lib/es/types.js +1 -18
- package/lib/es/utils/cookies.js +0 -3
- package/lib/es/utils/event.js +1 -1
- package/lib/es/utils/helper-dom.d.ts +1 -0
- package/lib/es/utils/helper-dom.js +16 -9
- package/lib/es/utils/helper.js +1 -24
- package/lib/es/utils/keydown.js +4 -7
- package/lib/es/utils/platform.d.ts +0 -9
- package/lib/es/utils/platform.js +0 -10
- package/lib/es/utils/selection.js +0 -6
- package/lib/es/utils/storage.d.ts +0 -9
- package/lib/es/utils/storage.js +1 -10
- package/lib/es/utils/transformSql.d.ts +5 -0
- package/lib/es/utils/transformSql.js +42 -112
- package/lib/es/utils.d.ts +1 -6
- package/lib/es/utils.js +116 -255
- package/package.json +1 -1
|
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports["default"] = void 0;
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
11
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
|
|
10
12
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
|
|
11
13
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
12
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -30,6 +32,7 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
30
32
|
var group = meta.group;
|
|
31
33
|
var index = (0, _utils.findIndex)(store.metaList[groupIndex].list, meta);
|
|
32
34
|
var notGroupSelected = !group.length;
|
|
35
|
+
var summarizeWithoutArgument = ['总行数', '累积行数'];
|
|
33
36
|
function getColumns() {
|
|
34
37
|
var _getHelper = (0, _utils.getHelper)(store.metaList[groupIndex].list, meta),
|
|
35
38
|
ExistAboveGroupBy = _getHelper.ExistAboveGroupBy,
|
|
@@ -55,7 +58,6 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
55
58
|
fieldUuid: (0, _helper2.uuidv4)('field'),
|
|
56
59
|
fieldAlias: v.fieldAlias || '',
|
|
57
60
|
realName: ((_v$sql = v.sql) === null || _v$sql === void 0 || (_v$sql = _v$sql.split(' AS ')) === null || _v$sql === void 0 ? void 0 : _v$sql[1]) || '',
|
|
58
|
-
// name_zh: '',
|
|
59
61
|
database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
|
|
60
62
|
special_type: '',
|
|
61
63
|
select: true
|
|
@@ -70,7 +72,6 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
70
72
|
name_zh: v.name_zh || v.quotes,
|
|
71
73
|
id: v.id || v.fieldId,
|
|
72
74
|
realName: ((_v$sql2 = v.sql) === null || _v$sql2 === void 0 || (_v$sql2 = _v$sql2.split(' AS ')) === null || _v$sql2 === void 0 ? void 0 : _v$sql2[1]) || '',
|
|
73
|
-
// name_zh: '',
|
|
74
75
|
database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
|
|
75
76
|
special_type: '',
|
|
76
77
|
fieldUuid: (0, _helper2.uuidv4)('field'),
|
|
@@ -82,15 +83,11 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
82
83
|
data = [_data];
|
|
83
84
|
var joinData = prevList.filter(function (v) {
|
|
84
85
|
return v.type === _enum.TypeEnum.joinData;
|
|
85
|
-
})
|
|
86
|
-
// @ts-ignore
|
|
87
|
-
.filter(function (v) {
|
|
86
|
+
}).filter(function (v) {
|
|
88
87
|
return v && v.table2.name;
|
|
89
88
|
});
|
|
90
89
|
if (joinData.length) {
|
|
91
|
-
data = data.concat(
|
|
92
|
-
// @ts-ignore
|
|
93
|
-
joinData.map(function (v) {
|
|
90
|
+
data = data.concat(joinData.map(function (v) {
|
|
94
91
|
return {
|
|
95
92
|
alias: v.table2.alias,
|
|
96
93
|
table: v.table2.name,
|
|
@@ -101,7 +98,6 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
101
98
|
}));
|
|
102
99
|
}
|
|
103
100
|
} else {
|
|
104
|
-
// @ts-ignore
|
|
105
101
|
data = store.metaList[groupIndex].list.slice(0, index).map(function (v) {
|
|
106
102
|
if (v.type === _enum.TypeEnum.data) {
|
|
107
103
|
return {
|
|
@@ -134,7 +130,7 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
134
130
|
var newMeta = store.metaList[groupIndex].list.slice();
|
|
135
131
|
var data = getColumns();
|
|
136
132
|
var value = group[i];
|
|
137
|
-
store.
|
|
133
|
+
store.setPopup2({
|
|
138
134
|
visible: true,
|
|
139
135
|
node: e.currentTarget,
|
|
140
136
|
content: (0, _jsxRuntime.jsx)(_dialog.SelectSummarize, {
|
|
@@ -142,23 +138,17 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
142
138
|
value: value,
|
|
143
139
|
ignoreGroupByType: store.ignoreGroupByType,
|
|
144
140
|
onChange: function onChange(data) {
|
|
145
|
-
|
|
146
|
-
newMeta[index].group.splice(i, 1, data);
|
|
147
|
-
//@ts-ignore
|
|
141
|
+
newMeta[index].group.splice(i, 1, normalizeGroupRecord(data));
|
|
148
142
|
newMeta[index].group = newMeta[index].group.map(function (v) {
|
|
149
143
|
var _summarizeToSql = (0, _helper.summarizeToSql)(newMeta[index].group, v),
|
|
150
144
|
sql = _summarizeToSql.sql,
|
|
151
145
|
fieldAlias = _summarizeToSql.fieldAlias;
|
|
152
146
|
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
|
|
153
147
|
name: v.name || v.quotes,
|
|
154
|
-
//@ts-ignore
|
|
155
148
|
sql: sql,
|
|
156
149
|
fieldAlias: fieldAlias
|
|
157
150
|
});
|
|
158
151
|
});
|
|
159
|
-
// if (value.quotes !== data.quotes) {
|
|
160
|
-
// newMeta = newMeta.filter((_: MetaListType, _i: number) => _i <= index);
|
|
161
|
-
// }
|
|
162
152
|
store.setMeta(newMeta, groupIndex, {
|
|
163
153
|
obj: newMeta[index].group,
|
|
164
154
|
type: _types.ChangeType.group
|
|
@@ -186,11 +176,9 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
186
176
|
quotes: '',
|
|
187
177
|
datasourceId: '',
|
|
188
178
|
datasourceName: '',
|
|
189
|
-
// column: '',
|
|
190
|
-
// column_id: '',
|
|
191
179
|
summarizeType: _types.MetaSummarize_Enum.GROUP
|
|
192
180
|
};
|
|
193
|
-
store.
|
|
181
|
+
store.setPopup2({
|
|
194
182
|
visible: true,
|
|
195
183
|
node: e.currentTarget,
|
|
196
184
|
content: (0, _jsxRuntime.jsx)(_dialog.SelectSummarize, {
|
|
@@ -198,9 +186,7 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
198
186
|
value: value,
|
|
199
187
|
ignoreGroupByType: store.ignoreGroupByType,
|
|
200
188
|
onChange: function onChange(data) {
|
|
201
|
-
|
|
202
|
-
newMeta[index].group.push(data);
|
|
203
|
-
// @ts-ignore
|
|
189
|
+
newMeta[index].group.push(normalizeGroupRecord(data));
|
|
204
190
|
newMeta[index].group = newMeta[index].group.map(function (v) {
|
|
205
191
|
var _summarizeToSql2 = (0, _helper.summarizeToSql)(newMeta[index].group, v),
|
|
206
192
|
sql = _summarizeToSql2.sql,
|
|
@@ -226,15 +212,13 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
226
212
|
e.stopPropagation();
|
|
227
213
|
closePopup();
|
|
228
214
|
var newMeta = store.metaList[groupIndex].list.slice();
|
|
229
|
-
// @ts-ignore
|
|
230
215
|
newMeta[index].group = group.filter(function (_, i) {
|
|
231
216
|
return i !== itemId;
|
|
232
217
|
});
|
|
233
|
-
// newMeta = newMeta.filter((_: MetaListType, _i: number) => _i <= index);
|
|
234
218
|
store.setMeta(newMeta, groupIndex);
|
|
235
219
|
}
|
|
236
220
|
function closePopup() {
|
|
237
|
-
store.
|
|
221
|
+
store.setPopup2({
|
|
238
222
|
visible: false
|
|
239
223
|
});
|
|
240
224
|
}
|
|
@@ -242,7 +226,6 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
242
226
|
var fieldAlias = val || '';
|
|
243
227
|
_pandora.Modal.confirm({
|
|
244
228
|
title: (0, _locale.__)('SqlQueryBuilder.alias'),
|
|
245
|
-
// 设置别名
|
|
246
229
|
content: (0, _jsxRuntime.jsx)(_pandora.Input, {
|
|
247
230
|
defaultValue: fieldAlias,
|
|
248
231
|
onChange: function onChange(val) {
|
|
@@ -251,7 +234,7 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
251
234
|
}),
|
|
252
235
|
icon: false,
|
|
253
236
|
onOk: function () {
|
|
254
|
-
var _onOk = (0, _asyncToGenerator2["default"])(
|
|
237
|
+
var _onOk = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
|
|
255
238
|
var newMeta;
|
|
256
239
|
return _regenerator["default"].wrap(function (_context) {
|
|
257
240
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -263,9 +246,9 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
263
246
|
_pandora.Toast.warning((0, _locale.__)('SqlQueryBuilder.aliasForRules'));
|
|
264
247
|
return _context.abrupt("return", false);
|
|
265
248
|
case 1:
|
|
266
|
-
newMeta = store.metaList[groupIndex].list.slice();
|
|
249
|
+
newMeta = store.metaList[groupIndex].list.slice();
|
|
267
250
|
newMeta[index].group[i].fieldAlias = fieldAlias;
|
|
268
|
-
newMeta[index].group[i].sql = newMeta[index].group[i].sql.split('AS ')[0] + "AS ".concat(fieldAlias);
|
|
251
|
+
newMeta[index].group[i].sql = newMeta[index].group[i].sql.split('AS ')[0] + "AS ".concat(fieldAlias);
|
|
269
252
|
newMeta = (0, _utils.changeFieldAlias)(newMeta, newMeta[index].group[i]);
|
|
270
253
|
store.setMeta(newMeta, groupIndex, {
|
|
271
254
|
obj: newMeta[index].group,
|
|
@@ -293,10 +276,8 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
293
276
|
name_zh: '',
|
|
294
277
|
tableUuid: v.tableUuid,
|
|
295
278
|
alias: v.alias,
|
|
296
|
-
// 线上的都为空,默认会标红。 等统一格式后可隐藏
|
|
297
279
|
datasourceName: '',
|
|
298
|
-
|
|
299
|
-
datasourceId: '' // 数据源id
|
|
280
|
+
datasourceId: ''
|
|
300
281
|
});
|
|
301
282
|
});
|
|
302
283
|
};
|
|
@@ -304,36 +285,105 @@ var SelectIndex = function SelectIndex(props) {
|
|
|
304
285
|
var _v = (0, _cloneDeep["default"])(v);
|
|
305
286
|
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _v), {}, {
|
|
306
287
|
fieldName: v.name,
|
|
307
|
-
// 字段名
|
|
308
288
|
fieldNameZh: v.name_zh,
|
|
309
|
-
// 字段中文名
|
|
310
289
|
fieldAlias: v.fieldAlias,
|
|
311
|
-
// 别名
|
|
312
290
|
fieldUuid: v.fieldUuid,
|
|
313
|
-
// uuid
|
|
314
291
|
fieldId: v.fieldId,
|
|
315
|
-
// 字段id
|
|
316
292
|
tableName: v.table,
|
|
317
|
-
// 表名
|
|
318
293
|
tableNameZh: '',
|
|
319
294
|
tableId: v.tableId,
|
|
320
|
-
// 表名
|
|
321
295
|
tableAlias: v.alias,
|
|
322
|
-
// 别名
|
|
323
296
|
tableUuid: v.tableUuid,
|
|
324
|
-
// 表唯一标识
|
|
325
|
-
// 线上的都为空,默认会标红。 等统一格式后可隐藏
|
|
326
297
|
datasourceName: '',
|
|
327
|
-
// 数据源名
|
|
328
298
|
datasourceId: '',
|
|
329
|
-
// 数据源id
|
|
330
299
|
type: _types.AtomsTypeEnum.FIELD
|
|
331
300
|
});
|
|
332
301
|
};
|
|
302
|
+
var isFormulaMetric = function isFormulaMetric(record) {
|
|
303
|
+
return !!record.condition && !summarizeWithoutArgument.includes(record.condition);
|
|
304
|
+
};
|
|
305
|
+
var _getFirstField = function getFirstField() {
|
|
306
|
+
var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
307
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])(list),
|
|
308
|
+
_step;
|
|
309
|
+
try {
|
|
310
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
311
|
+
var item = _step.value;
|
|
312
|
+
if (!item) continue;
|
|
313
|
+
if (item.type === _types.AtomsTypeEnum.FIELD) return item;
|
|
314
|
+
if (item.type === _types.AtomsTypeEnum.EXPRESSION) {
|
|
315
|
+
var found = _getFirstField([].concat((0, _toConsumableArray2["default"])(item.lhs || []), (0, _toConsumableArray2["default"])(item.rhs || [])));
|
|
316
|
+
if (found) return found;
|
|
317
|
+
}
|
|
318
|
+
if (item.type === _types.AtomsTypeEnum.FORMULA) {
|
|
319
|
+
var _found = (item.args || []).map(function (arg) {
|
|
320
|
+
return _getFirstField((arg === null || arg === void 0 ? void 0 : arg.list) || []);
|
|
321
|
+
}).find(Boolean);
|
|
322
|
+
if (_found) return _found;
|
|
323
|
+
}
|
|
324
|
+
if (item.type === _types.AtomsTypeEnum.AND_OR) {
|
|
325
|
+
var _found2 = _getFirstField(item.list || []);
|
|
326
|
+
if (_found2) return _found2;
|
|
327
|
+
}
|
|
328
|
+
if (item.type === _types.AtomsTypeEnum.CASE_WHEN) {
|
|
329
|
+
var _found3 = _getFirstField(item.caseValue || []) || (item.branches || []).map(function (branch) {
|
|
330
|
+
return _getFirstField([].concat((0, _toConsumableArray2["default"])(branch.when || []), (0, _toConsumableArray2["default"])(branch.then || [])));
|
|
331
|
+
}).find(Boolean) || _getFirstField(item.elseValue || []);
|
|
332
|
+
if (_found3) return _found3;
|
|
333
|
+
}
|
|
334
|
+
if (item.type === _types.AtomsTypeEnum.EXISTS || item.type === _types.AtomsTypeEnum.NOT_EXISTS) {
|
|
335
|
+
var _found4 = _getFirstField(item.notExists || []);
|
|
336
|
+
if (_found4) return _found4;
|
|
337
|
+
}
|
|
338
|
+
if (item.type === _types.AtomsTypeEnum.COLLECTION) {
|
|
339
|
+
var _found5 = _getFirstField(item.list || []);
|
|
340
|
+
if (_found5) return _found5;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
} catch (err) {
|
|
344
|
+
_iterator.e(err);
|
|
345
|
+
} finally {
|
|
346
|
+
_iterator.f();
|
|
347
|
+
}
|
|
348
|
+
return null;
|
|
349
|
+
};
|
|
350
|
+
var getAtomsValue = function getAtomsValue(record) {
|
|
351
|
+
var _record$atoms;
|
|
352
|
+
if (!isFormulaMetric(record)) return [];
|
|
353
|
+
if ((_record$atoms = record.atoms) !== null && _record$atoms !== void 0 && _record$atoms.length) return record.atoms;
|
|
354
|
+
var field = getField(record);
|
|
355
|
+
return field.fieldName ? [field] : [];
|
|
356
|
+
};
|
|
357
|
+
var normalizeGroupRecord = function normalizeGroupRecord(record) {
|
|
358
|
+
var atoms = getAtomsValue(record);
|
|
359
|
+
var firstField = _getFirstField(atoms);
|
|
360
|
+
var nextRecord = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, record), {}, {
|
|
361
|
+
atoms: atoms.length ? atoms : undefined
|
|
362
|
+
});
|
|
363
|
+
if (firstField) {
|
|
364
|
+
nextRecord.table = firstField.tableName || nextRecord.table;
|
|
365
|
+
nextRecord.tableId = firstField.tableId || nextRecord.tableId;
|
|
366
|
+
nextRecord.tableUuid = firstField.tableUuid || nextRecord.tableUuid;
|
|
367
|
+
nextRecord.alias = firstField.tableAlias || nextRecord.alias;
|
|
368
|
+
nextRecord.name = firstField.fieldName || nextRecord.name;
|
|
369
|
+
nextRecord.id = firstField.fieldId || nextRecord.id;
|
|
370
|
+
nextRecord.realName = firstField.fieldName || nextRecord.realName;
|
|
371
|
+
nextRecord.fieldUuid = firstField.fieldUuid || nextRecord.fieldUuid;
|
|
372
|
+
nextRecord.datasourceId = firstField.datasourceId || nextRecord.datasourceId;
|
|
373
|
+
nextRecord.datasourceName = firstField.datasourceName || nextRecord.datasourceName;
|
|
374
|
+
nextRecord.database_type = firstField.database_type || nextRecord.database_type;
|
|
375
|
+
if (!nextRecord.quotes || nextRecord.quotes === nextRecord.condition) {
|
|
376
|
+
nextRecord.quotes = "".concat(nextRecord.condition, " ").concat(firstField.fieldAlias || firstField.fieldName || '').trim();
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
return nextRecord;
|
|
380
|
+
};
|
|
333
381
|
return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
334
382
|
children: [meta.group.map(function (v, i) {
|
|
383
|
+
var atomsValue = getAtomsValue(v);
|
|
384
|
+
var showAtoms = isFormulaMetric(v);
|
|
335
385
|
return (0, _jsxRuntime.jsx)(_itemName["default"], {
|
|
336
|
-
isError: (0, _utils.isError)(getField(v), _getColumns()),
|
|
386
|
+
isError: (0, _utils.isError)(showAtoms ? atomsValue : getField(v), _getColumns()),
|
|
337
387
|
children: (0, _jsxRuntime.jsxs)("div", {
|
|
338
388
|
className: "Sqb-TableName green-name",
|
|
339
389
|
onClick: function onClick(e) {
|
|
@@ -19,6 +19,7 @@ var _types = require("../../store/types");
|
|
|
19
19
|
var _pandora = require("@gingkoo/pandora");
|
|
20
20
|
var _index = _interopRequireDefault(require("../../index"));
|
|
21
21
|
var _helper = require("../../utils/helper");
|
|
22
|
+
var _helperDom = require("../../utils/helper-dom");
|
|
22
23
|
var _utils = require("../../utils");
|
|
23
24
|
var _pandoraIcons = require("@gingkoo/pandora-icons");
|
|
24
25
|
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
@@ -42,8 +43,8 @@ var TableData = function TableData(props) {
|
|
|
42
43
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
43
44
|
isDel = _useState2[0],
|
|
44
45
|
setIsDel = _useState2[1];
|
|
45
|
-
var tableIsDel =
|
|
46
|
-
var _ref = (0, _asyncToGenerator2["default"])(
|
|
46
|
+
var tableIsDel = function () {
|
|
47
|
+
var _ref = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
|
|
47
48
|
var _meta$table, _meta$table2;
|
|
48
49
|
var tableName, tables, names;
|
|
49
50
|
return _regenerator["default"].wrap(function (_context) {
|
|
@@ -103,14 +104,12 @@ var TableData = function TableData(props) {
|
|
|
103
104
|
});
|
|
104
105
|
store.fetchColumns(data, data.datasourceId, [], function (columns) {
|
|
105
106
|
newMetaList.columns = columns;
|
|
106
|
-
// ① 主表动了 其他都得重新选
|
|
107
107
|
var newMetas = store.metaList[groupIndex].list.slice();
|
|
108
108
|
newMetas[0] = newMetaList;
|
|
109
109
|
store.setMeta(newMetas, groupIndex, {
|
|
110
110
|
obj: data,
|
|
111
111
|
type: _types.ChangeType.datasource
|
|
112
112
|
});
|
|
113
|
-
// store.setMeta([newMetaList], groupIndex);
|
|
114
113
|
});
|
|
115
114
|
}
|
|
116
115
|
store.setPopup({
|
|
@@ -130,9 +129,7 @@ var TableData = function TableData(props) {
|
|
|
130
129
|
groupIndex: groupIndex,
|
|
131
130
|
data: columns,
|
|
132
131
|
onChange: function onChange(data, newMetaList) {
|
|
133
|
-
// 当前值已改变。必须以传入的数组为准,改变别名
|
|
134
132
|
var _newMetaList = newMetaList || store.metaList[groupIndex].list.slice();
|
|
135
|
-
// @ts-ignore
|
|
136
133
|
_newMetaList[0].columns = data;
|
|
137
134
|
if (!newMetaList) {
|
|
138
135
|
store.setMeta(_newMetaList, groupIndex, {
|
|
@@ -148,7 +145,6 @@ var TableData = function TableData(props) {
|
|
|
148
145
|
var alias = val || '';
|
|
149
146
|
_pandora.Modal.confirm({
|
|
150
147
|
title: (0, _locale.__)('SqlQueryBuilder.alias'),
|
|
151
|
-
// 设置别名
|
|
152
148
|
content: (0, _jsxRuntime.jsx)(_pandora.Input, {
|
|
153
149
|
defaultValue: alias,
|
|
154
150
|
onChange: function onChange(val) {
|
|
@@ -156,7 +152,7 @@ var TableData = function TableData(props) {
|
|
|
156
152
|
}
|
|
157
153
|
}),
|
|
158
154
|
onOk: function () {
|
|
159
|
-
var _onOk = (0, _asyncToGenerator2["default"])(
|
|
155
|
+
var _onOk = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2() {
|
|
160
156
|
var newMetaList;
|
|
161
157
|
return _regenerator["default"].wrap(function (_context2) {
|
|
162
158
|
while (1) switch (_context2.prev = _context2.next) {
|
|
@@ -168,7 +164,7 @@ var TableData = function TableData(props) {
|
|
|
168
164
|
_pandora.Toast.warning((0, _locale.__)('SqlQueryBuilder.aliasForRules'));
|
|
169
165
|
return _context2.abrupt("return", false);
|
|
170
166
|
case 1:
|
|
171
|
-
newMetaList = store.metaList[groupIndex].list.slice();
|
|
167
|
+
newMetaList = store.metaList[groupIndex].list.slice();
|
|
172
168
|
newMetaList[0].table.alias = alias;
|
|
173
169
|
newMetaList = (0, _utils.changeTableAlias)(newMetaList, newMetaList[0].table);
|
|
174
170
|
store.setMeta(newMetaList, groupIndex, {
|
|
@@ -189,7 +185,6 @@ var TableData = function TableData(props) {
|
|
|
189
185
|
onCancel: function onCancel() {}
|
|
190
186
|
});
|
|
191
187
|
};
|
|
192
|
-
// 子查询弹窗
|
|
193
188
|
var showSubQuery = function showSubQuery() {
|
|
194
189
|
var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
195
190
|
var _store$preProps2 = store.preProps,
|
|
@@ -198,23 +193,24 @@ var TableData = function TableData(props) {
|
|
|
198
193
|
isExit = _store$preProps2.isExit,
|
|
199
194
|
toolbar = _store$preProps2.toolbar,
|
|
200
195
|
other = (0, _objectWithoutProperties2["default"])(_store$preProps2, _excluded);
|
|
196
|
+
var childModalZIndex = (0, _helperDom.getTopLayerZIndex)() + 1;
|
|
201
197
|
var newMetaList = store.metaList[groupIndex].list.slice()[0];
|
|
202
198
|
var newMeta = store.metaList[groupIndex].list.slice();
|
|
203
199
|
var oldList = (0, _cloneDeep["default"])(newMetaList.subquery);
|
|
204
200
|
var _toolbar = subToolbar || toolbar;
|
|
205
|
-
// _toolbar = _toolbar.filter((v: string) => v !== 'group'); // 子查询不需要分组
|
|
206
201
|
var o = _pandora.Modal2.openModal({
|
|
202
|
+
zIndex: childModalZIndex,
|
|
207
203
|
title: (0, _locale.__)('SqlQueryBuilder.subquery'),
|
|
208
204
|
transparentMask: true,
|
|
209
205
|
content: (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
210
206
|
children: (0, _jsxRuntime.jsx)(_index["default"], (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, other), {}, {
|
|
207
|
+
popupZIndex: childModalZIndex + 1,
|
|
211
208
|
showSubquery: store._showSubquery,
|
|
212
209
|
toolbar: _toolbar,
|
|
213
210
|
btnText: (0, _locale.__)('SqlQueryBuilder.confirm'),
|
|
214
211
|
value: (0, _cloneDeep["default"])(val),
|
|
215
212
|
onOk: function onOk(newList) {
|
|
216
213
|
try {
|
|
217
|
-
// 子查询未改变不做操作
|
|
218
214
|
if ((0, _isEqual["default"])(newList, oldList)) {
|
|
219
215
|
o.close();
|
|
220
216
|
return;
|
|
@@ -232,18 +228,14 @@ var TableData = function TableData(props) {
|
|
|
232
228
|
select: false
|
|
233
229
|
});
|
|
234
230
|
});
|
|
235
|
-
// newMetaList.columns = newColumns;
|
|
236
231
|
newMetaList.columns = newColumns.map(function (newCol) {
|
|
237
|
-
// 查找旧列中是否有相同 name 的列
|
|
238
232
|
var existingCol = newMetaList.columns.find(function (oldCol) {
|
|
239
233
|
return oldCol.name === newCol.name;
|
|
240
234
|
});
|
|
241
235
|
var _column = existingCol ? existingCol : newCol;
|
|
242
236
|
_column.select = store.isSelectFields || _column.select;
|
|
243
|
-
// 如果存在,返回旧列;否则返回新列
|
|
244
237
|
return _column;
|
|
245
238
|
});
|
|
246
|
-
// (newMeta[index] as MetaJoin).expressions = [];
|
|
247
239
|
var newMetas = store.metaList[groupIndex].list.slice();
|
|
248
240
|
newMetas[0] = newMetaList;
|
|
249
241
|
store.setMeta(newMetas, groupIndex, {
|
|
@@ -252,9 +244,7 @@ var TableData = function TableData(props) {
|
|
|
252
244
|
});
|
|
253
245
|
tableIsDel();
|
|
254
246
|
o.close();
|
|
255
|
-
} catch (e) {
|
|
256
|
-
console.warn(e);
|
|
257
|
-
} finally {
|
|
247
|
+
} catch (e) {} finally {
|
|
258
248
|
o.close();
|
|
259
249
|
}
|
|
260
250
|
}
|
|
@@ -263,25 +253,18 @@ var TableData = function TableData(props) {
|
|
|
263
253
|
onClose: function onClose() {}
|
|
264
254
|
});
|
|
265
255
|
};
|
|
266
|
-
// 切换子查询
|
|
267
256
|
var switchSubQuery = function switchSubQuery() {
|
|
268
257
|
var newMetaList = store.metaList[groupIndex].list.slice();
|
|
269
258
|
newMetaList[0].isSubquery = !newMetaList[0].isSubquery;
|
|
270
|
-
//重置表数据
|
|
271
259
|
newMetaList[0].subquery = [];
|
|
272
260
|
newMetaList[0].table = {
|
|
273
261
|
name: '',
|
|
274
|
-
// 表名
|
|
275
262
|
name_zh: '',
|
|
276
|
-
// 表名
|
|
277
263
|
tableUuid: '',
|
|
278
264
|
id: '',
|
|
279
|
-
// 表名
|
|
280
265
|
alias: '',
|
|
281
|
-
// 表别名
|
|
282
266
|
datasourceName: '',
|
|
283
|
-
|
|
284
|
-
datasourceId: '' // 数据源id
|
|
267
|
+
datasourceId: ''
|
|
285
268
|
};
|
|
286
269
|
store.setMeta(newMetaList, groupIndex);
|
|
287
270
|
};
|
|
@@ -392,43 +375,7 @@ var TableData = function TableData(props) {
|
|
|
392
375
|
})
|
|
393
376
|
}) : null;
|
|
394
377
|
}()
|
|
395
|
-
})
|
|
396
|
-
// <Tooltip
|
|
397
|
-
// title={__(
|
|
398
|
-
// tableIsError()
|
|
399
|
-
// ? isDel
|
|
400
|
-
// ? 'metabase.verify'
|
|
401
|
-
// : 'SqlQueryBuilder.repeatAlias'
|
|
402
|
-
// : 'SqlQueryBuilder.alias',
|
|
403
|
-
// )}
|
|
404
|
-
// >
|
|
405
|
-
// <Button
|
|
406
|
-
// danger={tableIsError()}
|
|
407
|
-
// className={cx(':Sqb-TableName-as', {
|
|
408
|
-
// isError: tableIsError(),
|
|
409
|
-
// })}
|
|
410
|
-
// shape='circle'
|
|
411
|
-
// style={
|
|
412
|
-
// isDel
|
|
413
|
-
// ? {
|
|
414
|
-
// fontSize: 18,
|
|
415
|
-
// backgroundColor: '#fff',
|
|
416
|
-
// width: 'auto',
|
|
417
|
-
// height: 'auto',
|
|
418
|
-
// }
|
|
419
|
-
// : {}
|
|
420
|
-
// }
|
|
421
|
-
// iconOnly
|
|
422
|
-
// primary={!isDel}
|
|
423
|
-
// icon={isDel ? <ExclamationCircleFill /> : 'As'}
|
|
424
|
-
// size='small'
|
|
425
|
-
// onClick={(e) => {
|
|
426
|
-
// e.stopPropagation();
|
|
427
|
-
// onChangeTableAlias(meta.table?.alias || '');
|
|
428
|
-
// }}
|
|
429
|
-
// ></Button>
|
|
430
|
-
// </Tooltip>
|
|
431
|
-
, selected ? "".concat(meta.table.datasourceName, ".").concat(meta.table.name, " ").concat((_meta$table8 = meta.table) !== null && _meta$table8 !== void 0 && _meta$table8.alias && store.tableEnableAlias ? "as ".concat((_meta$table9 = meta.table) === null || _meta$table9 === void 0 ? void 0 : _meta$table9.alias) : '') : (0, _locale.__)('SqlQueryBuilder.pickTable')]
|
|
378
|
+
}), selected ? "".concat(meta.table.datasourceName, ".").concat(meta.table.name, " ").concat((_meta$table8 = meta.table) !== null && _meta$table8 !== void 0 && _meta$table8.alias && store.tableEnableAlias ? "as ".concat((_meta$table9 = meta.table) === null || _meta$table9 === void 0 ? void 0 : _meta$table9.alias) : '') : (0, _locale.__)('SqlQueryBuilder.pickTable')]
|
|
432
379
|
}), store.showSubquery && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
|
|
433
380
|
title: (0, _locale.__)('SqlQueryBuilder.switchSubQuery'),
|
|
434
381
|
children: (0, _jsxRuntime.jsx)(_pandora.Button, {
|
|
@@ -22,7 +22,8 @@ var _Portal = _interopRequireDefault(require("../common/Portal"));
|
|
|
22
22
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
23
23
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, (0, _isNativeReflectConstruct2["default"])() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
24
24
|
var outSpacing = 10;
|
|
25
|
-
var
|
|
25
|
+
var popupOrderSeed = 1;
|
|
26
|
+
var TriggerInternal = function (_React$Component) {
|
|
26
27
|
function TriggerInternal(props) {
|
|
27
28
|
var _this;
|
|
28
29
|
(0, _classCallCheck2["default"])(this, TriggerInternal);
|
|
@@ -34,11 +35,21 @@ var TriggerInternal = /*#__PURE__*/function (_React$Component) {
|
|
|
34
35
|
(0, _defineProperty2["default"])(_this, "scrollHeightCheckTimer", null);
|
|
35
36
|
(0, _defineProperty2["default"])(_this, "lastScrollHeight", 0);
|
|
36
37
|
(0, _defineProperty2["default"])(_this, "handleClickOutside", function (e) {
|
|
37
|
-
var
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
var _this$props$node, _this$props$node$cont, _this$popupContainer;
|
|
39
|
+
var target = e.target;
|
|
40
|
+
if (!target) {
|
|
41
|
+
_this.closePopup();
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if ((_this$props$node = _this.props.node) !== null && _this$props$node !== void 0 && (_this$props$node$cont = _this$props$node.contains) !== null && _this$props$node$cont !== void 0 && _this$props$node$cont.call(_this$props$node, target)) return;
|
|
45
|
+
if ((_this$popupContainer = _this.popupContainer) !== null && _this$popupContainer !== void 0 && _this$popupContainer.contains(target)) return;
|
|
46
|
+
var clickedPopupContainer = target instanceof Element ? target.closest('[data-sqb-popup-container="true"]') : null;
|
|
47
|
+
if (clickedPopupContainer && _this.popupContainer) {
|
|
48
|
+
var currentOrder = Number(_this.popupContainer.getAttribute('data-sqb-popup-order') || 0);
|
|
49
|
+
var clickedOrder = Number(clickedPopupContainer.getAttribute('data-sqb-popup-order') || 0);
|
|
50
|
+
if (clickedOrder > currentOrder) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
42
53
|
}
|
|
43
54
|
_this.closePopup();
|
|
44
55
|
});
|
|
@@ -47,7 +58,7 @@ var TriggerInternal = /*#__PURE__*/function (_React$Component) {
|
|
|
47
58
|
_this.createPopupContainer();
|
|
48
59
|
_this.resetId = _event.winResetEvent.addEvent(_this.didUpdate, _this, 300);
|
|
49
60
|
window.addEventListener('scroll', _this.didUpdate, true);
|
|
50
|
-
document.
|
|
61
|
+
document.addEventListener('mousedown', _this.handleClickOutside, true);
|
|
51
62
|
_this.initContentResizeObserver();
|
|
52
63
|
_this.startScrollHeightCheck();
|
|
53
64
|
setTimeout(function () {
|
|
@@ -70,7 +81,7 @@ var TriggerInternal = /*#__PURE__*/function (_React$Component) {
|
|
|
70
81
|
(0, _defineProperty2["default"])(_this, "cleanup", function () {
|
|
71
82
|
_event.winResetEvent.removeEvent(_this.resetId);
|
|
72
83
|
window.removeEventListener('scroll', _this.didUpdate, true);
|
|
73
|
-
document.
|
|
84
|
+
document.removeEventListener('mousedown', _this.handleClickOutside, true);
|
|
74
85
|
if (_this.resizeObserver) {
|
|
75
86
|
_this.resizeObserver.disconnect();
|
|
76
87
|
_this.resizeObserver = null;
|
|
@@ -105,7 +116,6 @@ var TriggerInternal = /*#__PURE__*/function (_React$Component) {
|
|
|
105
116
|
_this.didUpdate();
|
|
106
117
|
});
|
|
107
118
|
_this.contentResizeObserver.observe(targetNode);
|
|
108
|
-
// 额外监听图片加载
|
|
109
119
|
var images = targetNode.querySelectorAll('img');
|
|
110
120
|
images.forEach(function (img) {
|
|
111
121
|
if (!img.complete) {
|
|
@@ -137,7 +147,12 @@ var TriggerInternal = /*#__PURE__*/function (_React$Component) {
|
|
|
137
147
|
var _this$props$zIndex;
|
|
138
148
|
if (_this.popupContainer) return;
|
|
139
149
|
var container = document.createElement('span');
|
|
140
|
-
container.
|
|
150
|
+
container.setAttribute('data-sqb-popup-container', 'true');
|
|
151
|
+
container.setAttribute('data-sqb-popup-order', String(popupOrderSeed++));
|
|
152
|
+
var baseZIndex = Number((_this$props$zIndex = _this.props.zIndex) !== null && _this$props$zIndex !== void 0 ? _this$props$zIndex : 999);
|
|
153
|
+
var normalizedBaseZIndex = Number.isNaN(baseZIndex) ? 999 : baseZIndex;
|
|
154
|
+
var containerZIndex = Math.max(normalizedBaseZIndex, (0, _helperDom.getTopLayerZIndex)() + 1);
|
|
155
|
+
container.style.cssText = "\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n z-index: ".concat(containerZIndex, ";\n opacity: 0;\n transition: opacity 0.2s ease;\n will-change: transform;\n ");
|
|
141
156
|
document.body.appendChild(container);
|
|
142
157
|
_this.popupContainer = container;
|
|
143
158
|
});
|
|
@@ -179,17 +194,12 @@ var TriggerInternal = /*#__PURE__*/function (_React$Component) {
|
|
|
179
194
|
innerSpacing = _this$props$innerSpac === void 0 ? 10 : _this$props$innerSpac,
|
|
180
195
|
_this$props$outSpacin = _this$props.outSpacing,
|
|
181
196
|
outSpacing = _this$props$outSpacin === void 0 ? 5 : _this$props$outSpacin;
|
|
182
|
-
// 假设 outSpacing 也是 props 或者常量,这里保持与你原代码一致,若未定义请确保其存在
|
|
183
|
-
// const outSpacing = this.props.outSpacing || 0;
|
|
184
197
|
var rect = node.getBoundingClientRect();
|
|
185
|
-
// --- 垂直方向逻辑 (保持原样) ---
|
|
186
198
|
var triggerTop = rect.top + window.scrollY;
|
|
187
|
-
var triggerLeft = rect.left + window.scrollX;
|
|
199
|
+
var triggerLeft = rect.left + window.scrollX;
|
|
188
200
|
var triggerHeight = rect.height;
|
|
189
201
|
var popupContent = _this.ref.current;
|
|
190
202
|
var realHeight = popupContent.scrollHeight;
|
|
191
|
-
// 获取弹窗的实际宽度,用于水平碰撞检测
|
|
192
|
-
// 注意:此时 popupContent 可能还没有被渲染到最终位置,但 scrollWidth 通常能反映内容宽度
|
|
193
203
|
var realWidth = popupContent.scrollWidth;
|
|
194
204
|
var _getWindowSize = (0, _helperDom.getWindowSize)(),
|
|
195
205
|
viewportHeight = _getWindowSize.height,
|
|
@@ -205,31 +215,15 @@ var TriggerInternal = /*#__PURE__*/function (_React$Component) {
|
|
|
205
215
|
maxHeight = Math.min(realHeight, spaceAbove - innerSpacing - outSpacing);
|
|
206
216
|
topPosition = triggerTop - innerSpacing - maxHeight;
|
|
207
217
|
}
|
|
208
|
-
// --- 水平方向逻辑 (新增) ---
|
|
209
218
|
var leftPosition = triggerLeft;
|
|
210
|
-
// 1. 检查是否超出右侧边界
|
|
211
219
|
if (leftPosition + realWidth > viewportWidth) {
|
|
212
|
-
// 如果超出,尝试向左移动,使弹窗右边缘对齐屏幕右边缘
|
|
213
220
|
leftPosition = viewportWidth - realWidth;
|
|
214
221
|
}
|
|
215
|
-
// 2. 检查是否超出左侧边界 (兜底策略)
|
|
216
|
-
// 如果弹窗太宽,或者触发点太靠左导致上面的计算结果小于0
|
|
217
222
|
if (leftPosition < 0) {
|
|
218
223
|
leftPosition = 0;
|
|
219
|
-
// 可选:如果弹窗比屏幕还宽,你可能希望限制它的最大宽度为屏幕宽度
|
|
220
|
-
// 此时需要重新计算 realWidth 或者直接限制样式
|
|
221
|
-
// 这里我们通过 CSS 的 maxWidth 来配合,或者在这里强制限制 width
|
|
222
|
-
// 如果必须通过 JS 控制宽度:
|
|
223
|
-
// popupContent.style.width = `${viewportWidth}px`;
|
|
224
|
-
// leftPosition = 0;
|
|
225
224
|
}
|
|
226
|
-
// --- 应用样式 ---
|
|
227
|
-
// 使用 transform 进行定位
|
|
228
225
|
_this.popupContainer.style.transform = "translate(".concat(leftPosition, "px, ").concat(topPosition, "px)");
|
|
229
|
-
// 设置最大高度
|
|
230
226
|
popupContent.style.maxHeight = "".concat(maxHeight, "px");
|
|
231
|
-
// 【重要】为了防止第2步中弹窗过宽超出屏幕,建议同时限制 popupContent 的最大宽度
|
|
232
|
-
// 这样即使 leftPosition=0,内容也不会撑破屏幕
|
|
233
227
|
popupContent.style.maxWidth = "".concat(viewportWidth - outSpacing * 2, "px");
|
|
234
228
|
});
|
|
235
229
|
_this.state = {
|
package/lib/cjs/hooks/patch.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ import { MetaListType } from '../store/types';
|
|
|
2
2
|
export declare const joinDataPatch: (newMeta: any, constantList: any, formulaTemplates: any) => any;
|
|
3
3
|
export declare const filterPatch: (newMeta: any, constantList: any, formulaTemplates: any) => any;
|
|
4
4
|
export declare const customColumnPatch: (newMeta: any, constantList: any, formulaTemplates: any) => any;
|
|
5
|
+
export declare const summarizePatch: (newMeta: any, constantList: any, formulaTemplates: any) => any;
|
|
5
6
|
export declare const patchMetas: (items: MetaListType[], constantList: any[], formulaTemplates: any[]) => MetaListType[];
|