@gingkoo/pandora-metabase 1.0.14 → 1.0.16

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 (96) hide show
  1. package/lib/cjs/common/SplitView/index.js +11 -12
  2. package/lib/cjs/components/dialog/custom-column/expression-editor.js +1 -2
  3. package/lib/cjs/components/dialog/custom-column/expressions/suggest.js +1 -1
  4. package/lib/cjs/components/dialog/custom-column/tokenizedI-input.js +1 -2
  5. package/lib/cjs/components/dialog/{select-filter → expression}/index.d.ts +4 -4
  6. package/lib/cjs/components/dialog/{select-filter → expression}/index.js +345 -206
  7. package/lib/cjs/components/dialog/formula-list/enum.d.ts +9 -13
  8. package/lib/cjs/components/dialog/formula-list/enum.js +83 -39
  9. package/lib/cjs/components/dialog/formula-list/index.d.ts +4 -1
  10. package/lib/cjs/components/dialog/formula-list/index.js +110 -126
  11. package/lib/cjs/components/dialog/formula-list/utils.js +77 -46
  12. package/lib/cjs/components/dialog/index.d.ts +2 -2
  13. package/lib/cjs/components/dialog/index.js +20 -20
  14. package/lib/cjs/components/dialog/select-column/index.js +43 -12
  15. package/lib/cjs/components/dialog/select-column-multiple/index.d.ts +54 -0
  16. package/lib/cjs/components/dialog/select-column-multiple/index.js +341 -0
  17. package/lib/cjs/components/dialog/select-column-multiple/index.less +246 -0
  18. package/lib/cjs/components/dialog/select-table/index.js +9 -7
  19. package/lib/cjs/components/icons.js +36 -36
  20. package/lib/cjs/components/metabase/index.js +6 -6
  21. package/lib/cjs/components/metabase/index.less +12 -1
  22. package/lib/cjs/components/modules/components/Wrapper.js +6 -6
  23. package/lib/cjs/components/modules/custom-column.js +12 -14
  24. package/lib/cjs/components/modules/enum/filter-enum.d.ts +34 -0
  25. package/lib/cjs/components/modules/enum/filter-enum.js +137 -0
  26. package/lib/cjs/components/modules/filter.js +43 -460
  27. package/lib/cjs/components/modules/join-data.js +863 -525
  28. package/lib/cjs/components/modules/permission-table.js +4 -0
  29. package/lib/cjs/components/modules/sort.js +102 -91
  30. package/lib/cjs/components/modules/summarize/group-by.js +47 -16
  31. package/lib/cjs/components/modules/summarize/select-index.js +48 -17
  32. package/lib/cjs/components/modules/table-data.js +13 -4
  33. package/lib/cjs/components/popup.js +1 -2
  34. package/lib/cjs/hooks/patch.d.ts +4 -0
  35. package/lib/cjs/hooks/patch.js +464 -0
  36. package/lib/cjs/hooks/use-state.js +73 -138
  37. package/lib/cjs/index.d.ts +0 -1
  38. package/lib/cjs/index.js +3 -21
  39. package/lib/cjs/locale/en.js +9 -2
  40. package/lib/cjs/locale/zh.js +11 -4
  41. package/lib/cjs/store/helper.d.ts +2 -3
  42. package/lib/cjs/store/helper.js +288 -233
  43. package/lib/cjs/store/types.d.ts +94 -71
  44. package/lib/cjs/store/types.js +17 -12
  45. package/lib/cjs/utils.d.ts +3 -3
  46. package/lib/cjs/utils.js +152 -187
  47. package/lib/es/common/SplitView/index.js +10 -10
  48. package/lib/es/components/dialog/custom-column/expressions/suggest.js +1 -1
  49. package/lib/es/components/dialog/{select-filter → expression}/index.d.ts +4 -4
  50. package/lib/es/components/dialog/{select-filter → expression}/index.js +343 -206
  51. package/lib/es/components/dialog/formula-list/enum.d.ts +9 -13
  52. package/lib/es/components/dialog/formula-list/enum.js +82 -38
  53. package/lib/es/components/dialog/formula-list/index.d.ts +4 -1
  54. package/lib/es/components/dialog/formula-list/index.js +115 -131
  55. package/lib/es/components/dialog/formula-list/utils.js +77 -46
  56. package/lib/es/components/dialog/index.d.ts +2 -2
  57. package/lib/es/components/dialog/index.js +3 -3
  58. package/lib/es/components/dialog/select-column/index.js +44 -13
  59. package/lib/es/components/dialog/select-column-multiple/index.d.ts +54 -0
  60. package/lib/es/components/dialog/select-column-multiple/index.js +335 -0
  61. package/lib/es/components/dialog/select-column-multiple/index.less +246 -0
  62. package/lib/es/components/dialog/select-table/index.js +9 -7
  63. package/lib/es/components/icons.js +36 -36
  64. package/lib/es/components/metabase/index.js +6 -6
  65. package/lib/es/components/metabase/index.less +12 -1
  66. package/lib/es/components/modules/components/Wrapper.js +6 -6
  67. package/lib/es/components/modules/custom-column.js +12 -14
  68. package/lib/es/components/modules/enum/filter-enum.d.ts +34 -0
  69. package/lib/es/components/modules/enum/filter-enum.js +131 -0
  70. package/lib/es/components/modules/filter.js +45 -463
  71. package/lib/es/components/modules/join-data.js +865 -527
  72. package/lib/es/components/modules/permission-table.js +4 -0
  73. package/lib/es/components/modules/sort.js +102 -91
  74. package/lib/es/components/modules/summarize/group-by.js +48 -17
  75. package/lib/es/components/modules/summarize/select-index.js +49 -18
  76. package/lib/es/components/modules/table-data.js +13 -4
  77. package/lib/es/hooks/patch.d.ts +4 -0
  78. package/lib/es/hooks/patch.js +457 -0
  79. package/lib/es/hooks/use-state.js +73 -138
  80. package/lib/es/index.d.ts +0 -1
  81. package/lib/es/index.js +1 -1
  82. package/lib/es/locale/en.js +9 -2
  83. package/lib/es/locale/zh.js +11 -4
  84. package/lib/es/store/helper.d.ts +2 -3
  85. package/lib/es/store/helper.js +288 -233
  86. package/lib/es/store/types.d.ts +94 -71
  87. package/lib/es/store/types.js +16 -11
  88. package/lib/es/utils.d.ts +3 -3
  89. package/lib/es/utils.js +154 -190
  90. package/package.json +1 -1
  91. package/lib/cjs/components/modules/filter copy.d.ts +0 -7
  92. package/lib/cjs/components/modules/filter copy.js +0 -178
  93. package/lib/es/components/modules/filter copy.d.ts +0 -7
  94. package/lib/es/components/modules/filter copy.js +0 -171
  95. /package/lib/cjs/components/dialog/{select-filter → expression}/index.less +0 -0
  96. /package/lib/es/components/dialog/{select-filter → expression}/index.less +0 -0
package/lib/es/utils.js CHANGED
@@ -5,8 +5,8 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
5
5
  var _excluded = ["list"];
6
6
  import { __ } from './locale';
7
7
  import { TypeEnum, SQL_COLUMN_TYPE } from './store/enum';
8
- import { Filter_TypeEnum } from './store/types';
9
- import { SummarizeAlias, summarizeToSql } from './store/helper';
8
+ import { AtomsTypeEnum } from './store/types';
9
+ import { summarizeToSql } from './store/helper';
10
10
  import { uuidv4 } from './utils/helper';
11
11
  import cloneDeep from 'lodash/cloneDeep';
12
12
  export var findIndex = function findIndex(arr, item) {
@@ -72,20 +72,20 @@ export var getSubColumns = function getSubColumns(metaList) {
72
72
  if (ExistAboveGroupBy) {
73
73
  var _prevGroupBy$group, _prevGroupBy$by;
74
74
  var _data = {
75
- table: prevGroupBy.alias,
76
- tableId: prevGroupBy.alias,
77
- tableUuid: uuidv4('table'),
78
75
  alias: prevGroupBy.alias,
76
+ name: prevGroupBy.alias,
77
+ name_zh: prevGroupBy.alias,
78
+ tableUuid: uuidv4('table'),
79
+ id: prevGroupBy.alias,
79
80
  columns: []
80
81
  };
81
82
  if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$group = prevGroupBy.group) !== null && _prevGroupBy$group !== void 0 && _prevGroupBy$group.length) {
82
83
  _data.columns = _data.columns.concat(prevGroupBy.group.map(function (v) {
83
84
  var _v$sql;
84
- return _objectSpread(_objectSpread({
85
- name_zh: v.quotes
86
- }, v), {}, {
87
- name: v.fieldAlias || v.name,
88
- fieldAlias: '',
85
+ return _objectSpread(_objectSpread({}, v), {}, {
86
+ name: v.name || v.quotes,
87
+ name_zh: v.name_zh || v.quotes,
88
+ id: v.id || v.fieldId,
89
89
  // fieldUuid: uuidv4('field'),
90
90
  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]) || '',
91
91
  // name_zh: '',
@@ -98,12 +98,10 @@ export var getSubColumns = function getSubColumns(metaList) {
98
98
  if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$by = prevGroupBy.by) !== null && _prevGroupBy$by !== void 0 && _prevGroupBy$by.length) {
99
99
  _data.columns = _data.columns.concat(prevGroupBy.by.map(function (v) {
100
100
  var _v$sql2;
101
- return _objectSpread(_objectSpread({
102
- name_zh: v.quotes
103
- }, v), {}, {
104
- name: v.fieldAlias || v.name,
105
- fieldAlias: '',
106
- // fieldUuid: uuidv4('field'),
101
+ return _objectSpread(_objectSpread({}, v), {}, {
102
+ name: v.name || v.quotes,
103
+ name_zh: v.name_zh || v.quotes,
104
+ id: v.id || v.fieldId,
107
105
  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]) || '',
108
106
  // name_zh: '',
109
107
  database_type: (v === null || v === void 0 ? void 0 : v.database_type) || SQL_COLUMN_TYPE.FLOAT,
@@ -207,6 +205,46 @@ export var getSubColumns = function getSubColumns(metaList) {
207
205
  // summarize = 'summarize',
208
206
  // sort = 'sort',
209
207
  // rowLimit = 'rowLimit',
208
+ var AliasType;
209
+ (function (AliasType) {
210
+ AliasType["table"] = "table";
211
+ AliasType["field"] = "field";
212
+ })(AliasType || (AliasType = {}));
213
+ // 修改别名
214
+ var _changeAlias = function changeAlias(items, val, type) {
215
+ return items.map(function (v) {
216
+ if (v.type === AtomsTypeEnum.JOIN_DEFAULT || v.type === AtomsTypeEnum.EXPRESSION) {
217
+ return _objectSpread(_objectSpread({}, v), {}, {
218
+ lhs: _changeAlias(v.lhs, val, type),
219
+ rhs: _changeAlias(v.rhs, val, type)
220
+ });
221
+ } else if (v.type === AtomsTypeEnum.FIELD) {
222
+ if (type === AliasType.table && v.tableUuid === val.uuid) {
223
+ v.tableAlias = val.alias;
224
+ }
225
+ if (type === AliasType.field && v.fieldUuid === val.uuid) {
226
+ v.fieldAlias = val.alias;
227
+ }
228
+ return v;
229
+ } else if (v.type === AtomsTypeEnum.EXISTS || v.type === AtomsTypeEnum.NOT_EXISTS) {
230
+ if (type === AliasType.table) {
231
+ v.notExists = changeTableAlias(v.notExists || [], {
232
+ tableUuid: val.uuid,
233
+ alias: val.alias
234
+ });
235
+ }
236
+ if (type === AliasType.field) {
237
+ v.notExists = changeFieldAlias(v.notExists || [], {
238
+ fieldUuid: val.uuid,
239
+ fieldAlias: val.alias
240
+ });
241
+ }
242
+ return v;
243
+ } else {
244
+ return v;
245
+ }
246
+ });
247
+ };
210
248
  export var changeTableAlias = function changeTableAlias(list, curObj) {
211
249
  var _cloneDeep = cloneDeep(curObj),
212
250
  tableUuid = _cloneDeep.tableUuid,
@@ -219,21 +257,29 @@ export var changeTableAlias = function changeTableAlias(list, curObj) {
219
257
  }
220
258
  }
221
259
  if (v.type === TypeEnum.joinData) {
260
+ var _v$expressions;
222
261
  if (v.table1.tableUuid === tableUuid) {
223
262
  v.table1.alias = alias;
224
263
  }
225
264
  if (v.table2.tableUuid === tableUuid) {
226
265
  v.table2.alias = alias;
227
266
  }
267
+ if (((_v$expressions = v.expressions) === null || _v$expressions === void 0 ? void 0 : _v$expressions.length) > 0) {
268
+ v.expressions = _changeAlias(v.expressions, {
269
+ uuid: tableUuid,
270
+ alias: alias
271
+ }, AliasType.table);
272
+ }
228
273
  }
229
274
  if (v.type === TypeEnum.customColumn) {
230
275
  v.customColumn.map(function (item) {
231
276
  var _item$formulaList;
232
- (_item$formulaList = item.formulaList) === null || _item$formulaList === void 0 || _item$formulaList.map(function (formula) {
233
- if (formula.expression && formula.expression.tableUuid === tableUuid) {
234
- formula.expression.alias = alias;
235
- }
236
- });
277
+ if (item !== null && item !== void 0 && item.formulaList && ((_item$formulaList = item.formulaList) === null || _item$formulaList === void 0 ? void 0 : _item$formulaList.length) > 0) {
278
+ item.formulaList = _changeAlias(item.formulaList, {
279
+ uuid: tableUuid,
280
+ alias: alias
281
+ }, AliasType.table);
282
+ }
237
283
  });
238
284
  }
239
285
  if (v.type === TypeEnum.permissionTable) {
@@ -243,13 +289,13 @@ export var changeTableAlias = function changeTableAlias(list, curObj) {
243
289
  }
244
290
  if (v.type === TypeEnum.rowLimit) {}
245
291
  if (v.type === TypeEnum.sort) {
246
- v.sort.map(function (sort) {
247
- if (sort.alias === SummarizeAlias) {} else {
248
- if (sort.tableUuid === tableUuid) {
249
- sort.alias = alias;
250
- sort.sql = "".concat(alias, ".").concat(sort.name);
251
- }
252
- }
292
+ v.sort = v.sort.map(function (sort) {
293
+ return _objectSpread(_objectSpread({}, sort), {}, {
294
+ expression: _changeAlias(sort.expression, {
295
+ uuid: tableUuid,
296
+ alias: alias
297
+ }, AliasType.table)
298
+ });
253
299
  });
254
300
  }
255
301
  if (v.type === TypeEnum.summarize) {
@@ -267,47 +313,12 @@ export var changeTableAlias = function changeTableAlias(list, curObj) {
267
313
  });
268
314
  }
269
315
  if (v.type === TypeEnum.filter) {
270
- v.filter.map(function (item) {
271
- if (item.tableUuid === tableUuid) {
272
- // if (item.alias === SummarizeAlias) {
273
- // //有groupBy 特殊处理
274
- // const { prevGroupBy } = getHelper(list, v);
275
- // let groupBy: any =
276
- // prevGroupBy?.by.filter((v) => v.fieldUuid === item.fieldUuid)[0] ||
277
- // prevGroupBy?.group.filter((v) => v.fieldUuid === item.fieldUuid)[0] ||
278
- // null;
279
- // groupBy.alias = alias;
280
- // const sql = groupBy.sql;
281
- // if (groupBy) {
282
- // item.sql = sql;
283
- // item.groupSql = sql;
284
- // }
285
- // }
286
- item.alias = alias;
287
- item.sql = '';
288
- }
289
- if (item.table2 && item.table2.tableUuid === tableUuid) {
290
- // if (item.table2.alias === SummarizeAlias) {
291
- // //有groupBy 特殊处理
292
- // const { prevGroupBy } = getHelper(list, v);
293
- // let groupBy: any =
294
- // prevGroupBy?.by.filter((v) => v.fieldUuid === item.table2?.fieldUuid)[0] ||
295
- // prevGroupBy?.group.filter((v) => v.fieldUuid === item.table2?.fieldUuid)[0] ||
296
- // null;
297
- // groupBy.alias = alias;
298
- // const sql = groupBy.sql;
299
- // if (groupBy) {
300
- // item.table2.sql = sql;
301
- // item.table2.groupSql = sql;
302
- // }
303
- // }
304
- item.table2.alias = alias;
305
- // item.table2.sql = '';
306
- }
307
- // if (item.subquery) {
308
- // item.subquery = changeTableAlias(item.subquery || [], curObj);
309
- // }
310
- });
316
+ if (v.filter && v.filter.length > 0) {
317
+ v.filter = _changeAlias(v.filter, {
318
+ uuid: tableUuid,
319
+ alias: alias
320
+ }, AliasType.table);
321
+ }
311
322
  }
312
323
  // if ((v as MetaData | MetaJoin).subquery) {
313
324
  // (v as MetaData | MetaJoin).subquery = changeTableAlias(
@@ -318,141 +329,70 @@ export var changeTableAlias = function changeTableAlias(list, curObj) {
318
329
  return v;
319
330
  })) || [];
320
331
  };
321
- var _changeFieldAlias = function changeFieldAlias(list, curObj) {
332
+ export var changeFieldAlias = function changeFieldAlias(list, curObj) {
322
333
  var _cloneDeep2 = cloneDeep(curObj),
323
- fieldUuid = _cloneDeep2.fieldUuid,
324
- fieldAlias = _cloneDeep2.fieldAlias;
334
+ uuid = _cloneDeep2.fieldUuid,
335
+ alias = _cloneDeep2.fieldAlias;
325
336
  var newList = cloneDeep(list);
326
337
  return (newList === null || newList === void 0 ? void 0 : newList.map(function (v) {
327
338
  if (v.type === TypeEnum.data) {}
328
339
  if (v.type === TypeEnum.joinData) {
329
- var _v$expressions;
330
- if (v.table1.fieldUuid === fieldUuid) {
331
- v.table1.fieldAlias = fieldAlias;
340
+ if (v.expressions && v.expressions.length > 0) {
341
+ v.expressions = _changeAlias(v.expressions, {
342
+ uuid: uuid,
343
+ alias: alias
344
+ }, AliasType.field);
332
345
  }
333
- if (v.table2.fieldUuid === fieldUuid) {
334
- v.table2.fieldAlias = fieldAlias;
335
- }
336
- v.table1.fields.map(function (field) {
337
- if (field.fieldUuid === fieldUuid) {
338
- field.fieldAlias = fieldAlias;
339
- }
340
- });
341
- v.table2.fields.map(function (field) {
342
- if (field.fieldUuid === fieldUuid) {
343
- field.fieldAlias = fieldAlias;
344
- }
345
- });
346
- (_v$expressions = v.expressions) === null || _v$expressions === void 0 || _v$expressions.map(function (column) {
347
- column.left_fields.map(function (field) {
348
- if (field.fieldUuid === fieldUuid) {
349
- field.fieldAlias = fieldAlias;
350
- }
351
- });
352
- column.right_fields.map(function (field) {
353
- if (field.fieldUuid === fieldUuid) {
354
- field.fieldAlias = fieldAlias;
355
- }
356
- });
357
- if ((column === null || column === void 0 ? void 0 : column.left_fieldUuid) === fieldUuid) {
358
- column.left_fieldAlias = fieldAlias;
359
- }
360
- if ((column === null || column === void 0 ? void 0 : column.right_fieldUuid) === fieldUuid) {
361
- column.right_fieldAlias = fieldAlias;
362
- }
363
- });
364
- // if (v.table1.tableUuid === tableUuid) {
365
- // v.table1.alias = alias;
366
- // }
367
346
  }
368
347
  if (v.type === TypeEnum.customColumn) {
369
348
  v.customColumn.map(function (item) {
370
- var _item$formulaList2;
371
- (_item$formulaList2 = item.formulaList) === null || _item$formulaList2 === void 0 || _item$formulaList2.map(function (formula) {
372
- if (formula.expression && formula.expression.fieldUuid === fieldUuid) {
373
- formula.expression.fieldAlias = fieldAlias;
374
- }
375
- });
349
+ if (item.formulaList && item.formulaList.length > 0) {
350
+ item.formulaList = _changeAlias(item.formulaList, {
351
+ uuid: uuid,
352
+ alias: alias
353
+ }, AliasType.field);
354
+ }
376
355
  });
377
356
  }
378
- // if (v.type === TypeEnum.permissionTable) {
379
- // if (v.table.tableUuid === tableUuid) {
380
- // v.table.alias = alias;
381
- // }
382
- // }
383
357
  if (v.type === TypeEnum.rowLimit) {}
384
- // if (v.type === TypeEnum.sort) {
385
- // v.sort.map((sort) => {
386
- // if (sort.alias === SummarizeAlias) {
387
- // } else {
388
- // if (sort.tableUuid === tableUuid) {
389
- // sort.alias = alias;
390
- // sort.sql = `${alias}.${sort.name}`;
391
- // }
392
- // }
393
- // });
394
- // }
395
358
  if (v.type === TypeEnum.summarize) {
396
359
  v.group.map(function (group) {
397
- if (group.fieldUuid === fieldUuid) {
398
- group.fieldAlias = fieldAlias;
360
+ if (group.fieldUuid === uuid) {
361
+ group.fieldAlias = alias;
399
362
  group.sql = summarizeToSql(v.group, group).sql;
400
363
  }
401
364
  });
402
365
  v.by.map(function (by) {
403
- if (by.fieldUuid === fieldUuid) {
404
- by.fieldAlias = fieldAlias;
366
+ if (by.fieldUuid === uuid) {
367
+ by.fieldAlias = alias;
405
368
  by.sql = "".concat(by.alias, ".").concat(by.realName || by.name);
406
369
  }
407
370
  });
408
371
  }
409
372
  if (v.type === TypeEnum.filter) {
410
- v.filter.map(function (item) {
411
- if (item.fieldUuid === fieldUuid) {
412
- item.fieldAlias = fieldAlias;
413
- if (item.alias === SummarizeAlias) {
414
- //有groupBy 特殊处理
415
- var _getHelper2 = getHelper(list, v),
416
- prevGroupBy = _getHelper2.prevGroupBy;
417
- var groupBy = (prevGroupBy === null || prevGroupBy === void 0 ? void 0 : prevGroupBy.by.filter(function (v) {
418
- return v.fieldUuid === item.fieldUuid;
419
- })[0]) || (prevGroupBy === null || prevGroupBy === void 0 ? void 0 : prevGroupBy.group.filter(function (v) {
420
- return v.fieldUuid === item.fieldUuid;
421
- })[0]) || null;
422
- if (groupBy) {
423
- groupBy.fieldAlias = fieldAlias;
424
- var sql = groupBy.sql;
425
- item.sql = sql;
426
- item.groupSql = sql;
427
- }
428
- }
429
- }
430
- if (item.table2 && item.table2.fieldUuid === fieldUuid) {
431
- item.table2.fieldAlias = fieldAlias;
432
- // if (item.table2.alias === SummarizeAlias) {
433
- // //有groupBy 特殊处理
434
- // const { prevGroupBy } = getHelper(list, v);
435
- // let groupBy: any =
436
- // prevGroupBy?.by.filter((v) => v.fieldUuid === item.table2?.fieldUuid)[0] ||
437
- // prevGroupBy?.group.filter((v) => v.fieldUuid === item.table2?.fieldUuid)[0] ||
438
- // null;
439
- // groupBy.fieldAlias = fieldAlias;
440
- // const sql = groupBy.sql;
441
- // if (groupBy) {
442
- // item.table2.sql = sql;
443
- // item.table2.groupSql = sql;
444
- // }
445
- // }
446
- }
447
- if (item.notExists) {
448
- item.notExists = _changeFieldAlias(item.notExists || [], curObj);
449
- }
450
- });
373
+ if (v.filter && v.filter.length > 0) {
374
+ console.log(v.filter);
375
+ v.filter = _changeAlias(v.filter, {
376
+ uuid: uuid,
377
+ alias: alias
378
+ }, AliasType.field);
379
+ }
380
+ }
381
+ if (v.type === TypeEnum.sort) {
382
+ if (v.sort && v.sort.length > 0) {
383
+ v.sort = v.sort.map(function (sort) {
384
+ return _objectSpread(_objectSpread({}, sort), {}, {
385
+ expression: _changeAlias(sort.expression, {
386
+ uuid: uuid,
387
+ alias: alias
388
+ }, AliasType.field)
389
+ });
390
+ });
391
+ }
451
392
  }
452
393
  return _objectSpread({}, v);
453
394
  })) || [];
454
395
  };
455
- export { _changeFieldAlias as changeFieldAlias };
456
396
  export function splitByUnion(data) {
457
397
  if (!data) return [];
458
398
  var original = cloneDeep(data);
@@ -578,7 +518,7 @@ export var buildSqlQuery = function buildSqlQuery() {
578
518
  var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
579
519
  var type = arguments.length > 1 ? arguments[1] : undefined;
580
520
  if (!data || data.length === 0) return '';
581
- var name = type === Filter_TypeEnum.EXISTS ? 'EXISTS' : 'NOT EXISTS';
521
+ var name = type === AtomsTypeEnum.EXISTS ? 'EXISTS' : 'NOT EXISTS';
582
522
  var sqlClauses = ["".concat(name, " (")];
583
523
  var tables = [];
584
524
  var joins = [];
@@ -597,29 +537,53 @@ export var buildSqlQuery = function buildSqlQuery() {
597
537
  var alias2 = _meta.table2.alias ? " AS ".concat(_meta.table2.alias) : '';
598
538
  var table2 = "".concat(_meta.table2.alias || _meta.table2.name);
599
539
  var table1 = "".concat(_meta.table1.alias || _meta.table1.name);
600
- joins.push("LEFT JOIN ".concat(table2Name).concat(alias2, " ON ").concat(table1, ".").concat(_meta.table1.fieldAlias, " = ").concat(table2, ".").concat(_meta.table2.fieldAlias));
540
+ joins.push("LEFT JOIN ".concat(table2Name).concat(alias2, " ON "));
601
541
  if (Array.isArray(item.expressions) && ((_item$expressions = item.expressions) === null || _item$expressions === void 0 ? void 0 : _item$expressions.length) > 0) {
602
542
  var _item$expressions2;
603
543
  (_item$expressions2 = item.expressions) === null || _item$expressions2 === void 0 || _item$expressions2.forEach(function (expression) {
604
544
  var left = '',
605
545
  right = '';
606
- if (expression.left_type === 'field') {
607
- left = "".concat(table1, ".").concat(expression.left_fieldAlias);
608
- } else {
609
- left = expression.left_string;
610
- }
611
- if (expression.right_type === 'field') {
612
- right = "".concat(table2, ".").concat(expression.right_fieldAlias);
613
- } else {
614
- right = expression.right_string;
546
+ if (expression.type === AtomsTypeEnum.JOIN_DEFAULT) {
547
+ if (expression.lhs[0].type === AtomsTypeEnum.FIELD) {
548
+ left = expression.lhs.map(function (v) {
549
+ if (v.type === AtomsTypeEnum.FIELD) {
550
+ return v.fieldName;
551
+ } else {
552
+ return '';
553
+ }
554
+ }).join(' || ');
555
+ } else if (expression.lhs[0].type === AtomsTypeEnum.CONSTANT || expression.lhs[0].type === AtomsTypeEnum.INPUT_STRING) {
556
+ left = expression.lhs[0].val;
557
+ }
558
+ if (expression.rhs[0].type === AtomsTypeEnum.FIELD) {
559
+ right = expression.rhs.map(function (v) {
560
+ if (v.type === AtomsTypeEnum.FIELD) {
561
+ return v.fieldName;
562
+ } else {
563
+ return '';
564
+ }
565
+ }).join(' || ');
566
+ } else if (expression.rhs[0].type === AtomsTypeEnum.CONSTANT || expression.rhs[0].type === AtomsTypeEnum.INPUT_STRING) {
567
+ right = expression.rhs[0].val;
568
+ }
615
569
  }
616
- joins.push("AND ".concat(left, " = ").concat(right));
570
+ joins.push("".concat(left, " = ").concat(right));
617
571
  });
618
572
  }
619
573
  }
620
574
  if (item.type === TypeEnum.filter) {
621
575
  var filterStrings = item.filter.map(function (f) {
622
- return f.quotes;
576
+ if (f.type === AtomsTypeEnum.FIELD) {
577
+ return f.fieldName;
578
+ } else if (f.type === AtomsTypeEnum.EXPRESSION || f.type === AtomsTypeEnum.EXISTS || f.type === AtomsTypeEnum.NOT_EXISTS) {
579
+ return f.quotes;
580
+ } else if (f.type === AtomsTypeEnum.JOIN_DEFAULT) {
581
+ return '';
582
+ } else if (f.type === AtomsTypeEnum.INPUT_NUMBER || f.type === AtomsTypeEnum.INPUT_NUMBER_LIST || f.type === AtomsTypeEnum.INPUT_STRING_LIST) {
583
+ return '';
584
+ } else {
585
+ return f.val;
586
+ }
623
587
  }).filter(Boolean);
624
588
  if (filterStrings.length > 0) {
625
589
  wheres.push.apply(wheres, _toConsumableArray(filterStrings));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gingkoo/pandora-metabase",
3
- "version": "1.0.14",
3
+ "version": "1.0.16",
4
4
  "description": "",
5
5
  "main": "lib/es/index.js",
6
6
  "module": "lib/es/index.js",
@@ -1,7 +0,0 @@
1
- import { MetaFilter } from '../../store/types';
2
- interface PropsType {
3
- meta: MetaFilter;
4
- groupIndex: number;
5
- }
6
- declare const Filter: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
7
- export default Filter;
@@ -1,178 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports["default"] = void 0;
8
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
9
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
11
- var _jsxRuntime = require("react/jsx-runtime");
12
- var _react = require("react");
13
- var _locale = require("../../locale");
14
- var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
15
- var _helper = require("../../utils/helper");
16
- var _utils = require("../../utils");
17
- var _enum = require("../../store/enum");
18
- var _formulaList = _interopRequireDefault(require("../dialog/formula-list"));
19
- var _Wrapper = _interopRequireDefault(require("./components/Wrapper"));
20
- var _metaIcon = _interopRequireDefault(require("./components/meta-icon"));
21
- var _header = _interopRequireDefault(require("./components/header"));
22
- var _useProvider = require("../../hooks/use-provider");
23
- var Filter = function Filter(props) {
24
- var meta = props.meta,
25
- groupIndex = props.groupIndex;
26
- var store = (0, _useProvider.useStore)();
27
- var filter = meta.filter;
28
- var notExistsColumns = store.preProps.notExistsColumns;
29
- var filterCustomType = store.filterCustomType;
30
- var index = (0, _utils.findIndex)(store.metaList[groupIndex].list, meta);
31
- var notSelected = !meta.filter.length;
32
- var _useState = (0, _react.useState)(-1),
33
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
34
- ind = _useState2[0],
35
- setInd = _useState2[1];
36
- function getColumns() {
37
- var _getHelper = (0, _utils.getHelper)(store.metaList[groupIndex].list, meta),
38
- ExistAboveGroupBy = _getHelper.ExistAboveGroupBy,
39
- prevList = _getHelper.prevList,
40
- prevGroupBy = _getHelper.prevGroupBy;
41
- var newMeta = store.metaList[groupIndex].list.slice();
42
- var mainTable = newMeta[0];
43
- var data;
44
- if (ExistAboveGroupBy) {
45
- var _prevGroupBy$group, _prevGroupBy$by;
46
- var _data = {
47
- table: prevGroupBy.alias,
48
- tableId: prevGroupBy.alias,
49
- tableUuid: prevGroupBy.tableUuid,
50
- alias: prevGroupBy.alias,
51
- datasourceId: mainTable.table.datasourceId,
52
- datasourceName: mainTable.table.datasourceName,
53
- columns: []
54
- };
55
- if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$group = prevGroupBy.group) !== null && _prevGroupBy$group !== void 0 && _prevGroupBy$group.length) {
56
- _data.columns = _data.columns.concat(prevGroupBy.group.map(function (v) {
57
- return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
58
- name_zh: v.quotes
59
- }, v), {}, {
60
- name: v.quotes,
61
- // name_zh: '',
62
- database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
63
- sql: v.sql,
64
- special_type: '',
65
- select: true
66
- });
67
- }));
68
- }
69
- if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$by = prevGroupBy.by) !== null && _prevGroupBy$by !== void 0 && _prevGroupBy$by.length) {
70
- _data.columns = _data.columns.concat(prevGroupBy.by.map(function (v) {
71
- return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
72
- name_zh: v.quotes
73
- }, v), {}, {
74
- name: v.quotes,
75
- // name_zh: '',
76
- database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
77
- sql: v.sql,
78
- special_type: '',
79
- select: true
80
- });
81
- }));
82
- }
83
- data = [_data];
84
- var joinData = prevList.filter(function (v) {
85
- return v.type === _enum.TypeEnum.joinData;
86
- })
87
- // @ts-ignore
88
- .filter(function (v) {
89
- return v && v.table2.name;
90
- });
91
- if (joinData.length) {
92
- data = data.concat(
93
- // @ts-ignore
94
- joinData.map(function (v) {
95
- return {
96
- alias: v.table2.alias,
97
- table: v.table2.name,
98
- tableId: v.table2.id,
99
- tableUuid: v.table2.tableUuid || (0, _helper.uuidv4)('table'),
100
- columns: v.columns,
101
- datasourceId: mainTable.table.datasourceId,
102
- datasourceName: mainTable.table.datasourceName
103
- };
104
- }));
105
- }
106
- } else {
107
- // @ts-ignore
108
- data = store.metaList[groupIndex].list.slice(0, index).map(function (v) {
109
- if (v.type === _enum.TypeEnum.data) {
110
- return {
111
- alias: v.table.alias,
112
- table: v.table.name,
113
- tableId: v.table.id,
114
- tableUuid: v.table.tableUuid || (0, _helper.uuidv4)('table'),
115
- columns: v.columns,
116
- datasourceId: mainTable.table.datasourceId,
117
- datasourceName: mainTable.table.datasourceName
118
- };
119
- } else if (v.type === _enum.TypeEnum.joinData) {
120
- return {
121
- alias: v.table2.alias,
122
- table: v.table2.name,
123
- tableId: v.table2.id,
124
- tableUuid: v.table2.tableUuid || (0, _helper.uuidv4)('table'),
125
- columns: v.columns,
126
- datasourceId: mainTable.table.datasourceId,
127
- datasourceName: mainTable.table.datasourceName
128
- };
129
- } else {
130
- return {
131
- table: null
132
- };
133
- }
134
- }).filter(function (v) {
135
- return v.table;
136
- });
137
- }
138
- return data;
139
- }
140
- function closePopup() {
141
- store.setPopup({
142
- visible: false
143
- });
144
- }
145
- var selectFilter = function selectFilter(val) {
146
- var newMeta = store.metaList[groupIndex].list.slice();
147
- newMeta[index].filter = val;
148
- store.setMeta(newMeta, groupIndex);
149
- };
150
- return (0, _jsxRuntime.jsx)(_Wrapper["default"], {
151
- className: "Sqb-item",
152
- children: (0, _jsxRuntime.jsxs)("div", {
153
- className: "Sqb-hover-parent",
154
- children: [!meta.isPermanent ? (0, _jsxRuntime.jsx)(_header["default"], {
155
- className: 'purple-text',
156
- title: (0, _locale.__)('SqlQueryBuilder.filter'),
157
- onClose: function onClose() {
158
- closePopup();
159
- store.delMeta(meta, groupIndex);
160
- }
161
- }) : null, (0, _jsxRuntime.jsx)("div", {
162
- className: "Sqb-item--content",
163
- children: (0, _jsxRuntime.jsx)(_formulaList["default"], {
164
- value: filter,
165
- data: [].concat((0, _toConsumableArray2["default"])(getColumns()), (0, _toConsumableArray2["default"])((0, _cloneDeep["default"])(notExistsColumns || []))),
166
- exitData: getColumns(),
167
- onChange: function onChange(val) {
168
- selectFilter(val);
169
- }
170
- })
171
- }), (0, _jsxRuntime.jsx)(_metaIcon["default"], {
172
- meta: meta,
173
- groupIndex: groupIndex
174
- })]
175
- })
176
- });
177
- };
178
- var _default = exports["default"] = Filter;
@@ -1,7 +0,0 @@
1
- import { MetaFilter } from '../../store/types';
2
- interface PropsType {
3
- meta: MetaFilter;
4
- groupIndex: number;
5
- }
6
- declare const Filter: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
7
- export default Filter;