@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.
Files changed (195) hide show
  1. package/lib/cjs/common/Portal/index.js +0 -2
  2. package/lib/cjs/common/SplitView/index.d.ts +0 -4
  3. package/lib/cjs/common/SplitView/index.js +0 -10
  4. package/lib/cjs/components/dialog/custom-column/config.js +4 -48
  5. package/lib/cjs/components/dialog/custom-column/expression-editor.js +3 -14
  6. package/lib/cjs/components/dialog/custom-column/expressions/suggest.d.ts +2 -34
  7. package/lib/cjs/components/dialog/custom-column/expressions/suggest.js +2 -43
  8. package/lib/cjs/components/dialog/custom-column/expressions/tokenizer.js +8 -65
  9. package/lib/cjs/components/dialog/custom-column/index.js +2 -4
  10. package/lib/cjs/components/dialog/custom-column/tokenized-expression.js +2 -3
  11. package/lib/cjs/components/dialog/custom-column/tokenizedI-input.js +1 -1
  12. package/lib/cjs/components/dialog/custom-editor/index.js +2 -7
  13. package/lib/cjs/components/dialog/diff-viewer/index copy.js +1 -16
  14. package/lib/cjs/components/dialog/expression/date-format-picker.js +2 -20
  15. package/lib/cjs/components/dialog/expression/date-format.js +2 -8
  16. package/lib/cjs/components/dialog/expression/index.d.ts +0 -3
  17. package/lib/cjs/components/dialog/expression/index.js +2 -83
  18. package/lib/cjs/components/dialog/formula/index.js +1 -30
  19. package/lib/cjs/components/dialog/formula/utils.js +2 -10
  20. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.d.ts +19 -0
  21. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.js +109 -0
  22. package/lib/cjs/components/dialog/formula-list/LogicGroup.d.ts +9 -0
  23. package/lib/cjs/components/dialog/formula-list/LogicGroup.js +43 -0
  24. package/lib/cjs/components/dialog/formula-list/index.d.ts +3 -0
  25. package/lib/cjs/components/dialog/formula-list/index.js +967 -503
  26. package/lib/cjs/components/dialog/formula-list/index.less +724 -0
  27. package/lib/cjs/components/dialog/formula-list/utils.d.ts +0 -7
  28. package/lib/cjs/components/dialog/formula-list/utils.js +117 -113
  29. package/lib/cjs/components/dialog/select-column/index.d.ts +0 -6
  30. package/lib/cjs/components/dialog/select-column/index.js +4 -15
  31. package/lib/cjs/components/dialog/select-column-multiple/index.d.ts +0 -8
  32. package/lib/cjs/components/dialog/select-column-multiple/index.js +6 -45
  33. package/lib/cjs/components/dialog/select-join/index.d.ts +0 -5
  34. package/lib/cjs/components/dialog/select-join/index.js +0 -6
  35. package/lib/cjs/components/dialog/select-join-column/index.d.ts +0 -8
  36. package/lib/cjs/components/dialog/select-join-column/index.js +7 -21
  37. package/lib/cjs/components/dialog/select-join-column-multiple/index.d.ts +0 -8
  38. package/lib/cjs/components/dialog/select-join-column-multiple/index.js +5 -35
  39. package/lib/cjs/components/dialog/select-permission-table/index.d.ts +0 -5
  40. package/lib/cjs/components/dialog/select-permission-table/index.js +0 -6
  41. package/lib/cjs/components/dialog/select-summarize/index.d.ts +3 -3
  42. package/lib/cjs/components/dialog/select-summarize/index.js +105 -18
  43. package/lib/cjs/components/dialog/select-summarize/index.less +23 -0
  44. package/lib/cjs/components/dialog/select-table/index.d.ts +0 -6
  45. package/lib/cjs/components/dialog/select-table/index.js +1 -9
  46. package/lib/cjs/components/metabase/index.js +72 -86
  47. package/lib/cjs/components/metabase/index.less +7 -7
  48. package/lib/cjs/components/modules/components/Wrapper.js +1 -1
  49. package/lib/cjs/components/modules/components/header.js +2 -2
  50. package/lib/cjs/components/modules/components/meta-icon.d.ts +0 -3
  51. package/lib/cjs/components/modules/components/meta-icon.js +2 -47
  52. package/lib/cjs/components/modules/custom-column.js +3 -29
  53. package/lib/cjs/components/modules/enum/filter-enum.js +9 -88
  54. package/lib/cjs/components/modules/filter.js +2 -20
  55. package/lib/cjs/components/modules/index.d.ts +4 -2
  56. package/lib/cjs/components/modules/index.js +24 -1
  57. package/lib/cjs/components/modules/join-data.js +13 -291
  58. package/lib/cjs/components/modules/row-limit.js +0 -1
  59. package/lib/cjs/components/modules/sort.js +1 -61
  60. package/lib/cjs/components/modules/summarize/group-by.d.ts +0 -5
  61. package/lib/cjs/components/modules/summarize/group-by.js +231 -76
  62. package/lib/cjs/components/modules/summarize/select-index.js +96 -46
  63. package/lib/cjs/components/modules/table-data.js +11 -64
  64. package/lib/cjs/components/popup.js +26 -32
  65. package/lib/cjs/hooks/patch.d.ts +1 -0
  66. package/lib/cjs/hooks/patch.js +104 -6
  67. package/lib/cjs/hooks/patch2.js +3 -165
  68. package/lib/cjs/hooks/use-provider.js +0 -3
  69. package/lib/cjs/hooks/use-state.js +55 -135
  70. package/lib/cjs/index.js +0 -15
  71. package/lib/cjs/locale/en.js +5 -0
  72. package/lib/cjs/locale/index.js +1 -4
  73. package/lib/cjs/locale/zh.js +5 -0
  74. package/lib/cjs/sql-formula.js +0 -1
  75. package/lib/cjs/store/enum.d.ts +6 -6
  76. package/lib/cjs/store/enum.js +0 -13
  77. package/lib/cjs/store/helper.d.ts +2 -1
  78. package/lib/cjs/store/helper.js +15 -225
  79. package/lib/cjs/store/types.d.ts +45 -67
  80. package/lib/cjs/store/types.js +3 -49
  81. package/lib/cjs/types.d.ts +1 -0
  82. package/lib/cjs/utils/cookies.js +0 -3
  83. package/lib/cjs/utils/event.js +1 -1
  84. package/lib/cjs/utils/helper-dom.d.ts +1 -0
  85. package/lib/cjs/utils/helper-dom.js +17 -10
  86. package/lib/cjs/utils/helper.js +1 -24
  87. package/lib/cjs/utils/keydown.js +4 -7
  88. package/lib/cjs/utils/platform.d.ts +0 -9
  89. package/lib/cjs/utils/platform.js +0 -10
  90. package/lib/cjs/utils/selection.js +0 -6
  91. package/lib/cjs/utils/storage.d.ts +0 -9
  92. package/lib/cjs/utils/storage.js +1 -11
  93. package/lib/cjs/utils/transformSql.d.ts +5 -0
  94. package/lib/cjs/utils/transformSql.js +42 -113
  95. package/lib/cjs/utils.d.ts +1 -6
  96. package/lib/cjs/utils.js +115 -255
  97. package/lib/es/common/Portal/index.js +0 -2
  98. package/lib/es/common/SplitView/index.d.ts +0 -4
  99. package/lib/es/common/SplitView/index.js +0 -10
  100. package/lib/es/components/dialog/custom-column/config.js +4 -48
  101. package/lib/es/components/dialog/custom-column/expression-editor.js +3 -14
  102. package/lib/es/components/dialog/custom-column/expressions/suggest.d.ts +2 -34
  103. package/lib/es/components/dialog/custom-column/expressions/suggest.js +2 -43
  104. package/lib/es/components/dialog/custom-column/expressions/tokenizer.js +8 -65
  105. package/lib/es/components/dialog/custom-column/index.js +2 -4
  106. package/lib/es/components/dialog/custom-column/tokenized-expression.js +1 -3
  107. package/lib/es/components/dialog/custom-column/tokenizedI-input.js +1 -1
  108. package/lib/es/components/dialog/custom-editor/index.js +1 -7
  109. package/lib/es/components/dialog/diff-viewer/index copy.js +1 -15
  110. package/lib/es/components/dialog/expression/date-format-picker.js +2 -20
  111. package/lib/es/components/dialog/expression/date-format.js +2 -8
  112. package/lib/es/components/dialog/expression/index.d.ts +0 -3
  113. package/lib/es/components/dialog/expression/index.js +2 -82
  114. package/lib/es/components/dialog/formula/index.js +0 -30
  115. package/lib/es/components/dialog/formula/utils.js +2 -10
  116. package/lib/es/components/dialog/formula-list/CaseWhenGroup.d.ts +19 -0
  117. package/lib/es/components/dialog/formula-list/CaseWhenGroup.js +102 -0
  118. package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +9 -0
  119. package/lib/es/components/dialog/formula-list/LogicGroup.js +36 -0
  120. package/lib/es/components/dialog/formula-list/index.d.ts +3 -0
  121. package/lib/es/components/dialog/formula-list/index.js +966 -503
  122. package/lib/es/components/dialog/formula-list/index.less +724 -0
  123. package/lib/es/components/dialog/formula-list/utils.d.ts +0 -7
  124. package/lib/es/components/dialog/formula-list/utils.js +117 -113
  125. package/lib/es/components/dialog/index.js +3 -3
  126. package/lib/es/components/dialog/select-column/index.d.ts +0 -6
  127. package/lib/es/components/dialog/select-column/index.js +4 -14
  128. package/lib/es/components/dialog/select-column-multiple/index.d.ts +0 -8
  129. package/lib/es/components/dialog/select-column-multiple/index.js +7 -47
  130. package/lib/es/components/dialog/select-join/index.d.ts +0 -5
  131. package/lib/es/components/dialog/select-join/index.js +0 -5
  132. package/lib/es/components/dialog/select-join-column/index.d.ts +0 -8
  133. package/lib/es/components/dialog/select-join-column/index.js +7 -20
  134. package/lib/es/components/dialog/select-join-column-multiple/index.d.ts +0 -8
  135. package/lib/es/components/dialog/select-join-column-multiple/index.js +5 -34
  136. package/lib/es/components/dialog/select-permission-table/index.d.ts +0 -5
  137. package/lib/es/components/dialog/select-permission-table/index.js +0 -5
  138. package/lib/es/components/dialog/select-summarize/index.d.ts +3 -3
  139. package/lib/es/components/dialog/select-summarize/index.js +106 -18
  140. package/lib/es/components/dialog/select-summarize/index.less +23 -0
  141. package/lib/es/components/dialog/select-table/index.d.ts +0 -6
  142. package/lib/es/components/dialog/select-table/index.js +1 -8
  143. package/lib/es/components/metabase/index.js +72 -87
  144. package/lib/es/components/metabase/index.less +7 -7
  145. package/lib/es/components/modules/components/Wrapper.js +1 -1
  146. package/lib/es/components/modules/components/header.js +2 -2
  147. package/lib/es/components/modules/components/meta-icon.d.ts +0 -3
  148. package/lib/es/components/modules/components/meta-icon.js +2 -46
  149. package/lib/es/components/modules/custom-column.js +3 -29
  150. package/lib/es/components/modules/enum/filter-enum.js +9 -88
  151. package/lib/es/components/modules/filter.js +2 -19
  152. package/lib/es/components/modules/index.d.ts +4 -2
  153. package/lib/es/components/modules/index.js +24 -1
  154. package/lib/es/components/modules/join-data.js +13 -291
  155. package/lib/es/components/modules/row-limit.js +0 -1
  156. package/lib/es/components/modules/sort.js +1 -61
  157. package/lib/es/components/modules/summarize/group-by.d.ts +0 -5
  158. package/lib/es/components/modules/summarize/group-by.js +233 -78
  159. package/lib/es/components/modules/summarize/select-index.js +96 -46
  160. package/lib/es/components/modules/table-data.js +11 -64
  161. package/lib/es/components/popup.js +27 -33
  162. package/lib/es/hooks/patch.d.ts +1 -0
  163. package/lib/es/hooks/patch.js +103 -5
  164. package/lib/es/hooks/patch2.js +2 -164
  165. package/lib/es/hooks/use-provider.js +0 -3
  166. package/lib/es/hooks/use-state.js +55 -135
  167. package/lib/es/index.js +0 -14
  168. package/lib/es/locale/en.js +5 -0
  169. package/lib/es/locale/index.js +1 -4
  170. package/lib/es/locale/zh.js +5 -0
  171. package/lib/es/sql-formula.js +0 -1
  172. package/lib/es/store/enum.d.ts +6 -6
  173. package/lib/es/store/enum.js +0 -13
  174. package/lib/es/store/helper.d.ts +2 -1
  175. package/lib/es/store/helper.js +13 -224
  176. package/lib/es/store/types.d.ts +45 -67
  177. package/lib/es/store/types.js +3 -49
  178. package/lib/es/types.d.ts +1 -0
  179. package/lib/es/types.js +1 -18
  180. package/lib/es/utils/cookies.js +0 -3
  181. package/lib/es/utils/event.js +1 -1
  182. package/lib/es/utils/helper-dom.d.ts +1 -0
  183. package/lib/es/utils/helper-dom.js +16 -9
  184. package/lib/es/utils/helper.js +1 -24
  185. package/lib/es/utils/keydown.js +4 -7
  186. package/lib/es/utils/platform.d.ts +0 -9
  187. package/lib/es/utils/platform.js +0 -10
  188. package/lib/es/utils/selection.js +0 -6
  189. package/lib/es/utils/storage.d.ts +0 -9
  190. package/lib/es/utils/storage.js +1 -10
  191. package/lib/es/utils/transformSql.d.ts +5 -0
  192. package/lib/es/utils/transformSql.js +42 -112
  193. package/lib/es/utils.d.ts +1 -6
  194. package/lib/es/utils.js +116 -255
  195. 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.setPopup({
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
- //@ts-ignore
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.setPopup({
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
- // @ts-ignore
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.setPopup({
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"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
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(); // @ts-ignore
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); //修改sql
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 = /*#__PURE__*/function () {
46
- var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
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"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
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(); // @ts-ignore
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 TriggerInternal = /*#__PURE__*/function (_React$Component) {
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 ele = e.target;
38
- while (ele) {
39
- if (ele === _this.props.node) return;
40
- if (_this.popupContainer && ele === _this.popupContainer) return;
41
- ele = ele.parentNode;
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.body.addEventListener('click', _this.handleClickOutside, false);
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.body.removeEventListener('click', _this.handleClickOutside, false);
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.style.cssText = "\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n z-index: ".concat((_this$props$zIndex = _this.props.zIndex) !== null && _this$props$zIndex !== void 0 ? _this$props$zIndex : 999, ";\n opacity: 0;\n transition: opacity 0.2s ease;\n will-change: transform;\n ");
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 = {
@@ -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[];