@gingkoo/pandora-metabase 1.0.118 → 1.0.120

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 +6 -31
  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 +970 -504
  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 +7 -4
  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 +251 -89
  62. package/lib/cjs/components/modules/summarize/select-index.js +116 -59
  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 +40 -101
  95. package/lib/cjs/utils.d.ts +1 -6
  96. package/lib/cjs/utils.js +126 -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 +5 -31
  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 +969 -504
  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 +7 -4
  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 +253 -91
  159. package/lib/es/components/modules/summarize/select-index.js +116 -59
  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 +40 -100
  193. package/lib/es/utils.d.ts +1 -6
  194. package/lib/es/utils.js +127 -255
  195. package/package.json +1 -1
package/lib/es/utils.js CHANGED
@@ -8,7 +8,7 @@ var _excluded = ["list"];
8
8
  import { __ } from './locale';
9
9
  import { TypeEnum, SQL_COLUMN_TYPE } from './store/enum';
10
10
  import { AtomsTypeEnum } from './store/types';
11
- import { summarizeToSql } from './store/helper';
11
+ import { summarizeByToSql, summarizeToSql } from './store/helper';
12
12
  import { transformSql } from './utils/transformSql';
13
13
  import { uuidv4 } from './utils/helper';
14
14
  import cloneDeep from 'lodash/cloneDeep';
@@ -39,7 +39,6 @@ export var getMetaTabels = function getMetaTabels(data) {
39
39
  export var getColumnsTables = function getColumnsTables(data) {
40
40
  var obj = {};
41
41
  data.map(function (v) {
42
- // data也可直接是下拉框
43
42
  var _v$datasourceId = v.datasourceId,
44
43
  datasourceId = _v$datasourceId === void 0 ? 'source' : _v$datasourceId,
45
44
  _v$id = v.id,
@@ -58,13 +57,11 @@ export var getHelper = function getHelper(list, item) {
58
57
  return v.type;
59
58
  });
60
59
  var curIndex = list.indexOf(item);
61
- var leftTypes = types.slice(0, curIndex); // 当前元素上面的所有元素 (不包含自己)
62
- var rightTypes = types.slice(curIndex + 1); // 当前元素下面的所有元素 (不包含自己)
60
+ var leftTypes = types.slice(0, curIndex);
61
+ var rightTypes = types.slice(curIndex + 1);
63
62
  var leftList = list.slice(0, curIndex);
64
63
  var rightList = list.slice(curIndex + 1);
65
- var topList = leftList; // 包含自己
66
- // let prevType = list[curIndex - 1]?.type || '';
67
- // let nextType = list[curIndex + 1]?.type || '';
64
+ var topList = leftList;
68
65
  var prevItem = list[curIndex - 1] || {};
69
66
  var nextItem = list[curIndex + 1] || {};
70
67
  var ExistAboveGroupBy = false;
@@ -106,16 +103,13 @@ export var getHelper = function getHelper(list, item) {
106
103
  nextItem: nextItem
107
104
  };
108
105
  };
109
- // 获取子查询的字段
110
106
  export var getSubColumns = function getSubColumns(metaList) {
111
107
  var obj = {
112
108
  metaKey: -1,
113
109
  type: TypeEnum.customColumn,
114
110
  customColumn: [{
115
111
  name: '',
116
- // 用户起的别名
117
112
  fieldUuid: ''
118
- // formula: '', // 公式}];
119
113
  }]
120
114
  };
121
115
  var _getHelper = getHelper([].concat(_toConsumableArray(metaList), [obj]), obj),
@@ -140,9 +134,7 @@ export var getSubColumns = function getSubColumns(metaList) {
140
134
  name: v.name || v.quotes,
141
135
  name_zh: v.name_zh || v.quotes,
142
136
  id: v.id || v.fieldId,
143
- // fieldUuid: uuidv4('field'),
144
137
  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]) || '',
145
- // name_zh: '',
146
138
  database_type: (v === null || v === void 0 ? void 0 : v.database_type) || SQL_COLUMN_TYPE.FLOAT,
147
139
  special_type: '',
148
140
  select: true
@@ -157,7 +149,6 @@ export var getSubColumns = function getSubColumns(metaList) {
157
149
  name_zh: v.name_zh || v.quotes,
158
150
  id: v.id || v.fieldId,
159
151
  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]) || '',
160
- // name_zh: '',
161
152
  database_type: (v === null || v === void 0 ? void 0 : v.database_type) || SQL_COLUMN_TYPE.FLOAT,
162
153
  special_type: '',
163
154
  select: true
@@ -167,20 +158,15 @@ export var getSubColumns = function getSubColumns(metaList) {
167
158
  data = [_data];
168
159
  var joinData = prevList.filter(function (v) {
169
160
  return v.type === TypeEnum.joinData;
170
- })
171
- // @ts-ignore
172
- .filter(function (v) {
161
+ }).filter(function (v) {
173
162
  return v && v.table2.name;
174
163
  });
175
164
  if (joinData.length) {
176
- data = data.concat(
177
- // @ts-ignore
178
- joinData.map(function (v) {
165
+ data = data.concat(joinData.map(function (v) {
179
166
  var columns = v.columns.map(function (column) {
180
167
  return _objectSpread(_objectSpread({}, column), {}, {
181
168
  name: column.fieldAlias || column.name,
182
169
  fieldAlias: ''
183
- // fieldUuid: uuidv4('field'),
184
170
  });
185
171
  });
186
172
  return {
@@ -191,14 +177,12 @@ export var getSubColumns = function getSubColumns(metaList) {
191
177
  }));
192
178
  }
193
179
  } else {
194
- // @ts-ignore
195
180
  data = metaList.slice().map(function (v) {
196
181
  if (v.type === TypeEnum.data) {
197
182
  var columns = v.columns.map(function (column) {
198
183
  return _objectSpread(_objectSpread({}, column), {}, {
199
184
  name: column.fieldAlias || column.name,
200
185
  fieldAlias: ''
201
- // fieldUuid: uuidv4('field'),
202
186
  });
203
187
  }).filter(function (item) {
204
188
  return item.select;
@@ -213,7 +197,6 @@ export var getSubColumns = function getSubColumns(metaList) {
213
197
  return _objectSpread(_objectSpread({}, column), {}, {
214
198
  name: column.fieldAlias || column.name,
215
199
  fieldAlias: ''
216
- // fieldUuid: uuidv4('field'),
217
200
  });
218
201
  }).filter(function (item) {
219
202
  return item.select;
@@ -252,20 +235,11 @@ export var getSubColumns = function getSubColumns(metaList) {
252
235
  }
253
236
  return data;
254
237
  };
255
- // data = 'data',
256
- // joinData = 'joinData',
257
- // permissionTable = 'permissionTable', // 权限表
258
- // customColumn = 'customColumn',
259
- // filter = 'filter',
260
- // summarize = 'summarize',
261
- // sort = 'sort',
262
- // rowLimit = 'rowLimit',
263
238
  var AliasType;
264
239
  (function (AliasType) {
265
240
  AliasType["table"] = "table";
266
241
  AliasType["field"] = "field";
267
242
  })(AliasType || (AliasType = {}));
268
- // 修改别名
269
243
  var _changeAlias = function changeAlias(items, val, type) {
270
244
  return items.map(function (v) {
271
245
  if (v.type === AtomsTypeEnum.JOIN_DEFAULT || v.type === AtomsTypeEnum.EXPRESSION) {
@@ -368,13 +342,26 @@ export var changeTableAlias = function changeTableAlias(list, curObj) {
368
342
  v.group.map(function (group) {
369
343
  if (group.tableUuid === tableUuid) {
370
344
  group.alias = alias;
345
+ var groupAtoms = group.atoms;
346
+ if (groupAtoms && groupAtoms.length > 0) {
347
+ group.atoms = _changeAlias(groupAtoms, {
348
+ uuid: tableUuid,
349
+ alias: alias
350
+ }, AliasType.table);
351
+ }
371
352
  group.sql = summarizeToSql(v.group, group).sql;
372
353
  }
373
354
  });
374
355
  v.by.map(function (by) {
375
356
  if (by.tableUuid === tableUuid) {
376
357
  by.alias = alias;
377
- by.sql = "".concat(by.alias, ".").concat(by.realName || by.name);
358
+ if (by.atoms && by.atoms.length > 0) {
359
+ by.atoms = _changeAlias(by.atoms, {
360
+ uuid: tableUuid,
361
+ alias: alias
362
+ }, AliasType.table);
363
+ }
364
+ by.sql = summarizeByToSql(by);
378
365
  }
379
366
  });
380
367
  }
@@ -386,12 +373,6 @@ export var changeTableAlias = function changeTableAlias(list, curObj) {
386
373
  }, AliasType.table);
387
374
  }
388
375
  }
389
- // if ((v as MetaData | MetaJoin).subquery) {
390
- // (v as MetaData | MetaJoin).subquery = changeTableAlias(
391
- // (v as MetaData | MetaJoin).subquery || [],
392
- // curObj,
393
- // );
394
- // }
395
376
  return v;
396
377
  })) || [];
397
378
  };
@@ -425,13 +406,26 @@ export var changeFieldAlias = function changeFieldAlias(list, curObj) {
425
406
  v.group.map(function (group) {
426
407
  if (group.fieldUuid === uuid) {
427
408
  group.fieldAlias = alias;
409
+ var groupAtoms = group.atoms;
410
+ if (groupAtoms && groupAtoms.length > 0) {
411
+ group.atoms = _changeAlias(groupAtoms, {
412
+ uuid: uuid,
413
+ alias: alias
414
+ }, AliasType.field);
415
+ }
428
416
  group.sql = summarizeToSql(v.group, group).sql;
429
417
  }
430
418
  });
431
419
  v.by.map(function (by) {
432
420
  if (by.fieldUuid === uuid) {
433
421
  by.fieldAlias = alias;
434
- by.sql = "".concat(by.alias, ".").concat(by.realName || by.name);
422
+ if (by.atoms && by.atoms.length > 0) {
423
+ by.atoms = _changeAlias(by.atoms, {
424
+ uuid: uuid,
425
+ alias: alias
426
+ }, AliasType.field);
427
+ }
428
+ by.sql = summarizeByToSql(by);
435
429
  }
436
430
  });
437
431
  }
@@ -466,7 +460,6 @@ export function splitByUnion(data) {
466
460
  while (i < original.length) {
467
461
  var item = original[i];
468
462
  if (item.type === 'group') {
469
- // group.list 中每一项原样推入结果
470
463
  var _iterator = _createForOfIteratorHelper(item.list),
471
464
  _step;
472
465
  try {
@@ -483,7 +476,6 @@ export function splitByUnion(data) {
483
476
  } else if (item.type === 'union') {
484
477
  var list = item.list,
485
478
  otehr = _objectWithoutProperties(item, _excluded);
486
- // 查找下一个 group,并将其 list 转成 subquery
487
479
  var nextItem = original[i + 1];
488
480
  if (nextItem && nextItem.type === 'group') {
489
481
  result.push(_objectSpread(_objectSpread({}, otehr), {}, {
@@ -502,6 +494,78 @@ export function splitByUnion(data) {
502
494
  }
503
495
  return result;
504
496
  }
497
+ var summarizeNoArgumentConditions = ['总行数', '累积行数'];
498
+ var stripSummarizeTableFields = function stripSummarizeTableFields(record) {
499
+ return _objectSpread(_objectSpread({}, record), {}, {
500
+ table: '',
501
+ tableId: '',
502
+ tableUuid: '',
503
+ alias: '',
504
+ datasourceId: '',
505
+ datasourceName: ''
506
+ });
507
+ };
508
+ var createSummarizeFieldAtom = function createSummarizeFieldAtom(record) {
509
+ if (!record.name) return null;
510
+ return {
511
+ fieldName: record.name,
512
+ fieldNameZh: record.name_zh || '',
513
+ fieldAlias: '',
514
+ fieldUuid: uuidv4('field'),
515
+ fieldId: record.id || record.fieldId || '',
516
+ tableName: record.table || '',
517
+ tableNameZh: '',
518
+ tableId: record.tableId || '',
519
+ tableAlias: record.alias || '',
520
+ tableUuid: record.tableUuid || '',
521
+ datasourceName: record.datasourceName || '',
522
+ datasourceId: record.datasourceId || '',
523
+ type: AtomsTypeEnum.FIELD
524
+ };
525
+ };
526
+ var normalizeSummarizeItemForSave = function normalizeSummarizeItemForSave(record) {
527
+ var _record$atoms;
528
+ if ((_record$atoms = record.atoms) !== null && _record$atoms !== void 0 && _record$atoms.length || summarizeNoArgumentConditions.includes(record.condition)) {
529
+ var _record$atoms2;
530
+ return (_record$atoms2 = record.atoms) !== null && _record$atoms2 !== void 0 && _record$atoms2.length ? stripSummarizeTableFields(record) : record;
531
+ }
532
+ var fieldAtom = createSummarizeFieldAtom(record);
533
+ if (!fieldAtom) return record;
534
+ return _objectSpread(_objectSpread({}, stripSummarizeTableFields(record)), {}, {
535
+ atoms: [fieldAtom]
536
+ });
537
+ };
538
+ var normalizeSummarizeByForSave = function normalizeSummarizeByForSave(record) {
539
+ var _record$atoms3;
540
+ if ((_record$atoms3 = record.atoms) !== null && _record$atoms3 !== void 0 && _record$atoms3.length) return stripSummarizeTableFields(record);
541
+ var fieldAtom = createSummarizeFieldAtom(record);
542
+ if (!fieldAtom) return record;
543
+ return _objectSpread(_objectSpread({}, stripSummarizeTableFields(record)), {}, {
544
+ atoms: [fieldAtom]
545
+ });
546
+ };
547
+ var _normalizeLegacySummarizeForSave = function normalizeLegacySummarizeForSave() {
548
+ var metas = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
549
+ return metas.map(function (meta) {
550
+ if (meta.type === TypeEnum.summarize) {
551
+ return _objectSpread(_objectSpread({}, meta), {}, {
552
+ group: meta.group.map(function (item) {
553
+ return normalizeSummarizeItemForSave(item);
554
+ }),
555
+ by: meta.by.map(function (item) {
556
+ return normalizeSummarizeByForSave(item);
557
+ })
558
+ });
559
+ }
560
+ if (meta.type === TypeEnum.union) {
561
+ return _objectSpread(_objectSpread({}, meta), {}, {
562
+ subquery: _normalizeLegacySummarizeForSave(meta.subquery || [])
563
+ });
564
+ }
565
+ return meta;
566
+ });
567
+ };
568
+ export { _normalizeLegacySummarizeForSave as normalizeLegacySummarizeForSave };
505
569
  export var getObjTem = function getObjTem(arr) {
506
570
  var obj = {};
507
571
  arr === null || arr === void 0 || arr.map(function (v) {
@@ -516,12 +580,8 @@ export var getObjTem = function getObjTem(arr) {
516
580
  export var patchData = function patchData(metas) {
517
581
  var constantList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
518
582
  var formulaTemplates = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
519
- // return metas;
520
583
  var mainTable = metas[0] || {};
521
584
  var version = (mainTable === null || mainTable === void 0 ? void 0 : mainTable.patchVersion) || '';
522
- // if (version != '1.0.0') {
523
- // return patchMetas(metas);
524
- // }
525
585
  if (version != '1.1.0') {
526
586
  return patchMetas(metas, constantList, getObjTem(formulaTemplates));
527
587
  }
@@ -533,7 +593,6 @@ export function reassembleByUnion() {
533
593
  var result = [];
534
594
  var i = 0;
535
595
  var len = target.length;
536
- // 如果没有任何 union,直接放入一个 group.list
537
596
  var hasUnion = target.some(function (item) {
538
597
  return item.type === 'union';
539
598
  });
@@ -544,11 +603,9 @@ export function reassembleByUnion() {
544
603
  list: _toConsumableArray(target)
545
604
  }];
546
605
  }
547
- // 否则正常处理
548
606
  while (i < len) {
549
607
  var item = target[i];
550
608
  if (item.type !== 'union') {
551
- // 收集连续非 union 的 item,统一放入一个 group.list
552
609
  var groupList = [];
553
610
  while (i < len && target[i].type !== 'union') {
554
611
  groupList.push(target[i]);
@@ -561,7 +618,6 @@ export function reassembleByUnion() {
561
618
  });
562
619
  } else {
563
620
  var _item$union;
564
- // 处理 union
565
621
  result.push({
566
622
  type: 'union',
567
623
  name: 'union',
@@ -571,39 +627,11 @@ export function reassembleByUnion() {
571
627
  var subquery = item.subquery || [];
572
628
  var convertedSubquery = reassembleByUnion(subquery);
573
629
  result.push.apply(result, _toConsumableArray(convertedSubquery));
574
- i++; // 跳过当前 union
630
+ i++;
575
631
  }
576
632
  }
577
633
  return result;
578
634
  }
579
- // export const buildSqlQuery = (data?: MetaListType[]): string => {
580
- // if (!data || data.length === 0) return '';
581
- // let sqlClauses: string[] = ['not exitis ( '];
582
- // data.forEach((item) => {
583
- // if (item.type === TypeEnum.data) {
584
- // const meta = item as MetaData;
585
- // const tableName = meta.table.name;
586
- // const alias = meta.table.alias ? `AS ${meta.table.alias}` : '';
587
- // const dataSource = meta.table.datasourceName;
588
- // sqlClauses.push(`SELECT 1 FROM ${dataSource}.${tableName} ${alias}`);
589
- // }
590
- // if (item.type === TypeEnum.joinData) {
591
- // const meta = item as MetaJoin;
592
- // const table1 = meta.table1.alias ? meta.table1.alias : meta.table1.name;
593
- // const table2 = `${meta.table2.datasourceName}.${meta.table2.name}`;
594
- // const alias2 = meta.table2.alias ? meta.table2.alias : '';
595
- // joins.push(`LEFT JOIN ${table2} ${alias2} ON ${table1}.${meta.columns[0]?.name} = ${alias2}.${meta.columns[0]?.name}`);
596
- // }
597
- // if (item.type === TypeEnum.filter) {
598
- // const filterStrings = (item as MetaFilter).filter.map((f) => f.quotes).filter(Boolean); // 排除空条件
599
- // if (filterStrings.length > 0) {
600
- // sqlClauses.push(`WHERE ${filterStrings.join(' AND ')}`);
601
- // }
602
- // }
603
- // });
604
- // // 简单拼接 SQL 片段
605
- // return sqlClauses.join(' ') + ' )' + ';';
606
- // };
607
635
  export var buildSqlQuery = function buildSqlQuery() {
608
636
  var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
609
637
  var type = arguments.length > 1 ? arguments[1] : undefined;
@@ -618,124 +646,17 @@ export var buildSqlQuery = function buildSqlQuery() {
618
646
  var _transformSql = transformSql(data),
619
647
  sql = _transformSql.sql;
620
648
  return "".concat(typeName, "(").concat(sql, ") ");
621
- // if (!data || data.length === 0) return '';
622
- // const name = type === AtomsTypeEnum.EXISTS ? 'EXISTS' : 'NOT EXISTS';
623
- // let sqlClauses: string[] = [`${name} (`];
624
- // let tables: string[] = [];
625
- // let joins: string[] = [];
626
- // let wheres: string[] = [];
627
- // data?.forEach((item) => {
628
- // if (item.type === TypeEnum.data) {
629
- // const meta = item as MetaData;
630
- // const tableName = `${meta.table.name}`;
631
- // const alias = meta.table.alias ? ` AS ${meta.table.alias}` : '';
632
- // tables.push(`${tableName}${alias}`);
633
- // }
634
- // if (item.type === TypeEnum.joinData) {
635
- // const meta = item as MetaJoin;
636
- // const table2Name = `${meta.table2.name}`;
637
- // const alias2 = meta.table2.alias ? ` AS ${meta.table2.alias}` : '';
638
- // const table2 = `${meta.table2.alias || meta.table2.name}`;
639
- // const table1 = `${meta.table1.alias || meta.table1.name}`;
640
- // joins.push(`LEFT JOIN ${table2Name}${alias2} ON `);
641
- // if (Array.isArray(item.expressions) && item.expressions?.length > 0) {
642
- // item.expressions?.forEach((expression) => {
643
- // let left = '',
644
- // right = '';
645
- // if (expression.type === AtomsTypeEnum.JOIN_DEFAULT) {
646
- // if (expression.lhs[0].type === AtomsTypeEnum.FIELD) {
647
- // left = expression.lhs
648
- // .map((v) => {
649
- // if (v.type === AtomsTypeEnum.FIELD) {
650
- // return v.fieldName;
651
- // } else {
652
- // return '';
653
- // }
654
- // })
655
- // .join(' || ');
656
- // } else if (
657
- // expression.lhs[0].type === AtomsTypeEnum.CONSTANT ||
658
- // expression.lhs[0].type === AtomsTypeEnum.INPUT_STRING
659
- // ) {
660
- // left = expression.lhs[0].val;
661
- // }
662
- // if (expression.rhs[0].type === AtomsTypeEnum.FIELD) {
663
- // right = expression.rhs
664
- // .map((v) => {
665
- // if (v.type === AtomsTypeEnum.FIELD) {
666
- // return v.fieldName;
667
- // } else {
668
- // return '';
669
- // }
670
- // })
671
- // .join(' || ');
672
- // } else if (
673
- // expression.rhs[0].type === AtomsTypeEnum.CONSTANT ||
674
- // expression.rhs[0].type === AtomsTypeEnum.INPUT_STRING
675
- // ) {
676
- // right = expression.rhs[0].val;
677
- // }
678
- // }
679
- // joins.push(`${left} = ${right}`);
680
- // });
681
- // }
682
- // }
683
- // if (item.type === TypeEnum.filter) {
684
- // const filterStrings = (item as MetaFilter).filter
685
- // .map((f) => {
686
- // if (f.type === AtomsTypeEnum.FIELD) {
687
- // return f.fieldName;
688
- // } else if (
689
- // f.type === AtomsTypeEnum.EXPRESSION ||
690
- // f.type === AtomsTypeEnum.EXISTS ||
691
- // f.type === AtomsTypeEnum.NOT_EXISTS ||
692
- // f.type === AtomsTypeEnum.FORMULA ||
693
- // f.type === AtomsTypeEnum.COLLECTION
694
- // ) {
695
- // return f.quotes;
696
- // } else if (f.type === AtomsTypeEnum.JOIN_DEFAULT) {
697
- // return '';
698
- // } else if (
699
- // f.type === AtomsTypeEnum.INPUT_NUMBER ||
700
- // f.type === AtomsTypeEnum.INPUT_NUMBER_LIST ||
701
- // f.type === AtomsTypeEnum.INPUT_STRING_LIST
702
- // ) {
703
- // return '';
704
- // } else {
705
- // return f.val;
706
- // }
707
- // })
708
- // .filter(Boolean);
709
- // if (filterStrings.length > 0) {
710
- // wheres.push(...filterStrings);
711
- // }
712
- // }
713
- // });
714
- // // 构建子查询
715
- // if (tables.length > 0) {
716
- // sqlClauses.push(`SELECT 1 FROM ${tables[0]}`);
717
- // if (joins.length > 0) {
718
- // sqlClauses.push(joins.join(' '));
719
- // }
720
- // if (wheres.length > 0) {
721
- // sqlClauses.push(`WHERE ${wheres.join(' ')}`);
722
- // }
723
- // }
724
- // sqlClauses.push(')');
725
- // return sqlClauses.join(' ');
726
649
  };
727
650
  var _isError = function isError(item, data) {
728
651
  var tables = getColumnsTables(data);
729
- // 不存在
730
652
  if (!item) {
731
653
  return false;
732
654
  }
733
655
  if (Array.isArray(item)) {
734
656
  return item.some(function (v) {
735
657
  return _isError(v, data);
736
- }); // item可能为数组关联的时候有多选情况,只要有一个错,整体就错
658
+ });
737
659
  }
738
- // 字段类型
739
660
  if (item.type === AtomsTypeEnum.FIELD) {
740
661
  var datasourceId = item.datasourceId,
741
662
  _item$tableId = item.tableId,
@@ -744,16 +665,15 @@ var _isError = function isError(item, data) {
744
665
  tableAlias = _item$tableAlias === void 0 ? '' : _item$tableAlias,
745
666
  fieldName = item.fieldName,
746
667
  fieldId = item.fieldId;
747
- var _datasourceId = datasourceId || 'source'; // 默认为source
668
+ var _datasourceId = datasourceId || 'source';
748
669
  if (tableId === 'source') {
749
670
  _datasourceId = 'source';
750
671
  }
751
672
  if (!tableId) {
752
- return false; // 未选不报错
673
+ return false;
753
674
  }
754
675
  if (_datasourceId === 'source') {
755
676
  var _tables$_datasourceId;
756
- // 检查是否所有字段的 name 都不等于 fieldName
757
677
  if (!(tables !== null && tables !== void 0 && (_tables$_datasourceId = tables[_datasourceId]) !== null && _tables$_datasourceId !== void 0 && _tables$_datasourceId[tableId + tableAlias])) {
758
678
  return true;
759
679
  } else {
@@ -770,45 +690,32 @@ var _isError = function isError(item, data) {
770
690
  var hasField = (_tables$_datasourceId3 = tables === null || tables === void 0 || (_tables$_datasourceId4 = tables[_datasourceId]) === null || _tables$_datasourceId4 === void 0 || (_tables$_datasourceId4 = _tables$_datasourceId4[tableId + tableAlias]) === null || _tables$_datasourceId4 === void 0 ? void 0 : _tables$_datasourceId4.some(function (v) {
771
691
  return v.name === fieldName && (v.id === undefined || v.id === fieldId);
772
692
  })) !== null && _tables$_datasourceId3 !== void 0 ? _tables$_datasourceId3 : false;
773
- return !hasField; // 注意:返回 true 表示“有错误”
693
+ return !hasField;
774
694
  }
775
695
  }
776
- // 表达式类型
777
696
  if (item.type === AtomsTypeEnum.EXPRESSION) {
778
697
  var lhsHasError = _isError(item.lhs, data);
779
698
  var rhsHasError = _isError(item.rhs, data);
780
699
  return lhsHasError || rhsHasError;
781
700
  }
782
- // 公式
783
701
  if (item.type === AtomsTypeEnum.FORMULA) {
784
702
  return _isError(item.args, data);
785
703
  }
786
- // 公式
787
704
  if (item.type === AtomsTypeEnum.COLLECTION) {
788
705
  return _isError(item.list, data);
789
706
  }
790
- return false; // 其他类型默认无错误
707
+ return false;
791
708
  };
792
- /**
793
- * 深度判断 sub 是否是 obj 的子集(递归比较所有可枚举自有属性)
794
- * @param sub 可能包含部分属性的对象
795
- * @param obj 待比较的对象
796
- * @param visited 用于处理循环引用的 WeakSet
797
- */
798
709
  export { _isError as isError };
799
710
  function isSubset(sub, obj) {
800
711
  var visited = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new WeakSet();
801
- // 基本类型或引用相同
802
712
  if (sub === obj) return true;
803
- // 如果任一不是对象/数组,或者为 null,则不相等(sub 为基本类型时,上面已经比较过,这里只处理对象不等的情况)
804
713
  if (_typeof(sub) !== 'object' || sub === null || _typeof(obj) !== 'object' || obj === null) {
805
714
  return false;
806
715
  }
807
- // 避免循环引用
808
716
  if (visited.has(sub) || visited.has(obj)) return false;
809
717
  visited.add(sub);
810
718
  visited.add(obj);
811
- // 处理数组
812
719
  if (Array.isArray(sub)) {
813
720
  if (!Array.isArray(obj) || sub.length !== obj.length) return false;
814
721
  for (var i = 0; i < sub.length; i++) {
@@ -816,35 +723,23 @@ function isSubset(sub, obj) {
816
723
  }
817
724
  return true;
818
725
  }
819
- // 普通对象:遍历 sub 的每个键
820
726
  for (var key in sub) {
821
727
  if (Object.prototype.hasOwnProperty.call(sub, key)) {
822
- // obj 必须包含该键
823
728
  if (!Object.prototype.hasOwnProperty.call(obj, key)) return false;
824
- // 递归比较值
825
729
  if (!isSubset(sub[key], obj[key], visited)) return false;
826
730
  }
827
731
  }
828
732
  return true;
829
733
  }
830
- /**
831
- * 在嵌套结构 root 中查找是否存在一个对象,使得 target 是该对象的子集
832
- * @param root 可能包含任意层数组/对象的根数据
833
- * @param target 目标对象(可能只包含部分字段)
834
- * @returns 是否存在
835
- */
836
734
  export function containsSubset(root, target) {
837
735
  var visited = new WeakSet();
838
736
  function search(current) {
839
737
  if (current && _typeof(current) === 'object') {
840
- // 避免循环引用
841
738
  if (visited.has(current)) return false;
842
739
  visited.add(current);
843
- // 如果是普通对象(非数组),先检查是否包含 target 子集
844
740
  if (!Array.isArray(current) && isSubset(target, current)) {
845
741
  return true;
846
742
  }
847
- // 继续深入遍历子元素
848
743
  if (Array.isArray(current)) {
849
744
  var _iterator2 = _createForOfIteratorHelper(current),
850
745
  _step2;
@@ -870,45 +765,37 @@ export function containsSubset(root, target) {
870
765
  }
871
766
  return search(root);
872
767
  }
873
- // 判断当前meta中是否含有errorList
874
768
  export var isExistsError = function isExistsError(meta, errorList) {
875
769
  var _meta = cloneDeep(meta);
876
770
  return errorList.some(function (error) {
877
771
  return containsSubset(_meta, error);
878
772
  });
879
773
  };
880
- // 设置新字段信息
881
774
  function setNewField(field, data) {
882
- console.log('🚀 ~ setNewField ~ field:', field);
883
775
  var _iterator3 = _createForOfIteratorHelper(data),
884
776
  _step3;
885
777
  try {
886
778
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
887
779
  var table = _step3.value;
888
- // 第一步:判断表名是否一致
889
780
  if (table.name !== field.tableName) {
890
781
  continue;
891
782
  }
892
- // 第二步:✅ 表名一致,立即更新所有表相关信息(不管字段是否存在)
893
783
  field.datasourceId = table.datasourceId || '';
894
784
  field.datasourceName = table.datasourceName || '';
895
785
  field.tableId = table.id || '';
896
- field.tableName = table.name || ''; // 虽然相同,但确保标准化
786
+ field.tableName = table.name || '';
897
787
  field.tableAlias = table.alias || '';
898
788
  field.tableUuid = table.tableUuid || '';
899
789
  field.tableNameZh = table.name_zh || '';
900
- // 第三步:尝试找字段,更新字段相关信息(仅当字段存在时)
901
790
  var matchedColumn = table.columns.find(function (col) {
902
791
  return col.name === field.fieldName;
903
792
  });
904
- console.log('🚀 ~ setNewField ~ matchedColumn:', matchedColumn);
905
793
  if (matchedColumn) {
906
794
  field.fieldId = matchedColumn.id || '';
907
795
  field.fieldNameZh = matchedColumn.name_zh || '';
908
796
  field.fieldUuid = matchedColumn.fieldUuid || '';
909
797
  field.fieldAlias = matchedColumn.fieldAlias || '';
910
798
  }
911
- // 找到同名表就停止(假设表名唯一)
912
799
  break;
913
800
  }
914
801
  } catch (err) {
@@ -916,10 +803,8 @@ function setNewField(field, data) {
916
803
  } finally {
917
804
  _iterator3.f();
918
805
  }
919
- console.log('🚀 ~ setNewField ~ field:', field);
920
806
  return field;
921
807
  }
922
- // 复制字段别名后修改对应的表id或字段id的别名
923
808
  var _changeCopyField = function changeCopyField(items, data) {
924
809
  return items.map(function (v) {
925
810
  if (v.type === AtomsTypeEnum.JOIN_DEFAULT || v.type === AtomsTypeEnum.EXPRESSION) {
@@ -928,22 +813,10 @@ var _changeCopyField = function changeCopyField(items, data) {
928
813
  rhs: _changeCopyField(v.rhs, data)
929
814
  });
930
815
  } else if (v.type === AtomsTypeEnum.FIELD) {
931
- // if (type === AliasType.table && v.tableUuid === val.uuid) {
932
- // v.tableAlias = val.alias;
933
- // }
934
- // if (type === AliasType.field && v.fieldUuid === val.uuid) {
935
- // v.fieldAlias = val.alias;
936
- // }
937
- // 需要处理复制的字段别名
938
816
  v = setNewField(v, data);
939
817
  return v;
940
818
  } else if (v.type === AtomsTypeEnum.EXISTS || v.type === AtomsTypeEnum.NOT_EXISTS) {
941
819
  v.notExists = changeExistsCopyField(v.notExists || [], data);
942
- // if (type === AliasType.table) {
943
- // v.notExists = changeExistsCopyTable(v.notExists || [], data);
944
- // }
945
- // if (type === AliasType.field) {
946
- // }
947
820
  return v;
948
821
  } else if (v.type === AtomsTypeEnum.FORMULA) {
949
822
  v.args = _changeCopyField(v.args, data);
@@ -975,23 +848,22 @@ export var changeExistsCopyField = function changeExistsCopyField(list, data) {
975
848
  });
976
849
  }
977
850
  if (v.type === TypeEnum.rowLimit) {}
978
- // if (v.type === TypeEnum.summarize) {
979
- // v.group.map((group) => {
980
- // if (group.fieldUuid === uuid) {
981
- // group.fieldAlias = alias;
982
- // group.sql = summarizeToSql(v.group, group).sql;
983
- // }
984
- // });
985
- // v.by.map((by) => {
986
- // if (by.fieldUuid === uuid) {
987
- // by.fieldAlias = alias;
988
- // by.sql = `${by.alias}.${by.realName || by.name}`;
989
- // }
990
- // });
991
- // }
851
+ if (v.type === TypeEnum.summarize) {
852
+ v.group.map(function (group) {
853
+ if (group.atoms && group.atoms.length > 0) {
854
+ group.atoms = _changeCopyField(group.atoms, _data);
855
+ group.sql = summarizeToSql(v.group, group).sql;
856
+ }
857
+ });
858
+ v.by.map(function (by) {
859
+ if (by.atoms && by.atoms.length > 0) {
860
+ by.atoms = _changeCopyField(by.atoms, _data);
861
+ by.sql = summarizeByToSql(by);
862
+ }
863
+ });
864
+ }
992
865
  if (v.type === TypeEnum.filter) {
993
866
  if (v.filter && v.filter.length > 0) {
994
- console.log(v.filter);
995
867
  v.filter = _changeCopyField(v.filter, _data);
996
868
  }
997
869
  }