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