@gingkoo/pandora-metabase 1.0.126 → 1.0.128

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 (65) hide show
  1. package/lib/cjs/components/dialog/expression/index.js +15 -5
  2. package/lib/cjs/components/dialog/expression/index.less +31 -16
  3. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.d.ts +14 -5
  4. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.js +236 -62
  5. package/lib/cjs/components/dialog/formula-list/LogicGroup.d.ts +3 -2
  6. package/lib/cjs/components/dialog/formula-list/LogicGroup.js +19 -11
  7. package/lib/cjs/components/dialog/formula-list/index.d.ts +1 -0
  8. package/lib/cjs/components/dialog/formula-list/index.js +658 -174
  9. package/lib/cjs/components/dialog/formula-list/index.less +1438 -145
  10. package/lib/cjs/components/dialog/formula-list/utils.js +50 -19
  11. package/lib/cjs/components/dialog/select-column-multiple/index.d.ts +1 -0
  12. package/lib/cjs/components/dialog/select-column-multiple/index.js +42 -22
  13. package/lib/cjs/components/dialog/select-summarize/index.js +10 -2
  14. package/lib/cjs/components/dialog/select-table/index.d.ts +2 -1
  15. package/lib/cjs/components/dialog/select-table/index.js +197 -52
  16. package/lib/cjs/components/dialog/select-table/index.less +45 -2
  17. package/lib/cjs/components/metabase/index.less +156 -39
  18. package/lib/cjs/components/modules/custom-column.js +7 -3
  19. package/lib/cjs/components/modules/filter.js +6 -3
  20. package/lib/cjs/components/modules/join-data.js +67 -16
  21. package/lib/cjs/components/modules/permission-table.js +8 -4
  22. package/lib/cjs/components/modules/sort.js +2 -1
  23. package/lib/cjs/components/modules/summarize/group-by.js +20 -6
  24. package/lib/cjs/components/modules/summarize/select-index.js +9 -5
  25. package/lib/cjs/components/modules/table-data.js +26 -5
  26. package/lib/cjs/hooks/use-state.js +143 -17
  27. package/lib/cjs/index.js +7 -1
  28. package/lib/cjs/store/types.d.ts +14 -7
  29. package/lib/cjs/types.d.ts +8 -0
  30. package/lib/cjs/utils/transformSql.js +44 -21
  31. package/lib/cjs/utils.d.ts +2 -2
  32. package/lib/cjs/utils.js +349 -58
  33. package/lib/es/components/dialog/expression/index.js +15 -5
  34. package/lib/es/components/dialog/expression/index.less +31 -16
  35. package/lib/es/components/dialog/formula-list/CaseWhenGroup.d.ts +14 -5
  36. package/lib/es/components/dialog/formula-list/CaseWhenGroup.js +238 -64
  37. package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +3 -2
  38. package/lib/es/components/dialog/formula-list/LogicGroup.js +19 -11
  39. package/lib/es/components/dialog/formula-list/index.d.ts +1 -0
  40. package/lib/es/components/dialog/formula-list/index.js +660 -176
  41. package/lib/es/components/dialog/formula-list/index.less +1438 -145
  42. package/lib/es/components/dialog/formula-list/utils.js +50 -19
  43. package/lib/es/components/dialog/select-column-multiple/index.d.ts +1 -0
  44. package/lib/es/components/dialog/select-column-multiple/index.js +42 -22
  45. package/lib/es/components/dialog/select-summarize/index.js +10 -2
  46. package/lib/es/components/dialog/select-table/index.d.ts +2 -1
  47. package/lib/es/components/dialog/select-table/index.js +197 -52
  48. package/lib/es/components/dialog/select-table/index.less +45 -2
  49. package/lib/es/components/metabase/index.less +156 -39
  50. package/lib/es/components/modules/custom-column.js +7 -3
  51. package/lib/es/components/modules/filter.js +6 -3
  52. package/lib/es/components/modules/join-data.js +67 -16
  53. package/lib/es/components/modules/permission-table.js +8 -4
  54. package/lib/es/components/modules/sort.js +2 -1
  55. package/lib/es/components/modules/summarize/group-by.js +21 -7
  56. package/lib/es/components/modules/summarize/select-index.js +10 -6
  57. package/lib/es/components/modules/table-data.js +26 -5
  58. package/lib/es/hooks/use-state.js +143 -17
  59. package/lib/es/index.js +7 -1
  60. package/lib/es/store/types.d.ts +14 -7
  61. package/lib/es/types.d.ts +8 -0
  62. package/lib/es/utils/transformSql.js +45 -22
  63. package/lib/es/utils.d.ts +2 -2
  64. package/lib/es/utils.js +350 -59
  65. package/package.json +1 -1
@@ -67,6 +67,7 @@ export var insertTemplateAt = function insertTemplateAt(oldType, type, list, ind
67
67
  tableUuid: '',
68
68
  datasourceName: '',
69
69
  datasourceId: '',
70
+ datasourceType: '',
70
71
  type: AtomsTypeEnum.FIELD
71
72
  }, {
72
73
  val: 'ORDER BY',
@@ -84,6 +85,7 @@ export var insertTemplateAt = function insertTemplateAt(oldType, type, list, ind
84
85
  tableUuid: '',
85
86
  datasourceName: '',
86
87
  datasourceId: '',
88
+ datasourceType: '',
87
89
  type: AtomsTypeEnum.FIELD
88
90
  }, {
89
91
  val: ')',
@@ -100,6 +102,12 @@ export var customTypes = [{
100
102
  }, {
101
103
  value: AtomsTypeEnum.EXPRESSION,
102
104
  label: __('customColumn.expression')
105
+ }, {
106
+ value: AtomsTypeEnum.CASE_WHEN,
107
+ label: __('customColumn.caseWhen')
108
+ }, {
109
+ value: AtomsTypeEnum.AND_OR,
110
+ label: __('customColumn.andOr')
103
111
  }, {
104
112
  value: AtomsTypeEnum.INPUT_STRING,
105
113
  label: __('customColumn.input')
@@ -143,6 +151,7 @@ export var getTemplateItem = function getTemplateItem(type, item) {
143
151
  tableUuid: '',
144
152
  datasourceName: '',
145
153
  datasourceId: '',
154
+ datasourceType: '',
146
155
  type: AtomsTypeEnum.FIELD
147
156
  };
148
157
  } else if (type === AtomsTypeEnum.EXPRESSION || type === AtomsTypeEnum.JOIN_DEFAULT) {
@@ -189,25 +198,29 @@ export var getTemplateItem = function getTemplateItem(type, item) {
189
198
  };
190
199
  } else if (type === AtomsTypeEnum.CASE_WHEN) {
191
200
  return {
192
- caseValue: [],
193
- branches: [{
194
- when: [{
201
+ caseAtoms: [],
202
+ whenClauses: [{
203
+ whenAtoms: [{
195
204
  val: '',
196
205
  type: AtomsTypeEnum.UNKNOWN
197
206
  }],
198
- then: [{
207
+ thenAtoms: [{
199
208
  val: '',
200
209
  type: AtomsTypeEnum.UNKNOWN
201
210
  }]
202
211
  }],
203
- elseValue: [],
212
+ elseAtoms: [],
204
213
  quotes: '',
205
214
  type: type
206
215
  };
207
216
  } else if (type === AtomsTypeEnum.AND_OR) {
208
217
  return {
209
218
  operator: 'and',
210
- list: [{
219
+ leftAtoms: [{
220
+ val: '',
221
+ type: AtomsTypeEnum.UNKNOWN
222
+ }],
223
+ rightAtoms: [{
211
224
  val: '',
212
225
  type: AtomsTypeEnum.UNKNOWN
213
226
  }],
@@ -256,11 +269,16 @@ var _isOk = function isOk(rhsVal) {
256
269
  } else if (v.type === AtomsTypeEnum.COLLECTION) {
257
270
  return _isOk(v.list || []);
258
271
  } else if (v.type === AtomsTypeEnum.CASE_WHEN) {
259
- return (v.branches || []).length > 0 && (v.branches || []).every(function (branch) {
260
- return _isOk(branch.when || []) && _isOk(branch.then || []);
261
- }) && _isOk(v.caseValue || []) && _isOk(v.elseValue || []);
272
+ return (v.whenClauses || []).length > 0 && (v.whenClauses || []).every(function (clause) {
273
+ return _isOk(clause.whenAtoms || []) && _isOk(clause.thenAtoms || []);
274
+ }) && _isOk(v.caseAtoms || []) && _isOk(v.elseAtoms || []);
262
275
  } else if (v.type === AtomsTypeEnum.AND_OR) {
263
- return Boolean(v.operator) && _isOk(v.list || []);
276
+ var hasBinarySides = Array.isArray(v.leftAtoms) || Array.isArray(v.rightAtoms);
277
+ if (hasBinarySides) {
278
+ var _v$leftAtoms, _v$rightAtoms;
279
+ return Boolean(v.operator) && Boolean((_v$leftAtoms = v.leftAtoms) === null || _v$leftAtoms === void 0 ? void 0 : _v$leftAtoms.length) && Boolean((_v$rightAtoms = v.rightAtoms) === null || _v$rightAtoms === void 0 ? void 0 : _v$rightAtoms.length) && _isOk(v.leftAtoms || []) && _isOk(v.rightAtoms || []);
280
+ }
281
+ return Boolean(v.operator) && _isOk(v.atoms || []);
264
282
  } else if (v.type === AtomsTypeEnum.FORMULA) {
265
283
  if (!v.quotes) {
266
284
  return false;
@@ -392,33 +410,46 @@ export function validateExpressionIntegrity(list) {
392
410
  error: 'AND / OR 结构缺少操作符'
393
411
  };
394
412
  }
395
- var nestedError = validateExpressionIntegrity(item.list || []);
413
+ var hasBinarySides = Array.isArray(item.leftAtoms) || Array.isArray(item.rightAtoms);
414
+ if (hasBinarySides) {
415
+ var leftError = validateExpressionIntegrity(item.leftAtoms || []);
416
+ if (leftError.isError) {
417
+ return leftError;
418
+ }
419
+ var rightError = validateExpressionIntegrity(item.rightAtoms || []);
420
+ if (rightError.isError) {
421
+ return rightError;
422
+ }
423
+ continue;
424
+ }
425
+ var nestedError = validateExpressionIntegrity(item.atoms || []);
396
426
  if (nestedError.isError) {
397
427
  return nestedError;
398
428
  }
399
429
  }
400
430
  if (item.type === AtomsTypeEnum.CASE_WHEN) {
401
- if ((item.branches || []).length < 1) {
431
+ var whenClauses = item.whenClauses || [];
432
+ if (whenClauses.length < 1) {
402
433
  return {
403
434
  isError: true,
404
435
  error: 'CASE WHEN 至少需要一个 when / then 分支',
405
436
  isCase: true
406
437
  };
407
438
  }
408
- var caseValueError = validateExpressionIntegrity(item.caseValue || []);
409
- if (caseValueError.isError) {
410
- return caseValueError;
439
+ var caseAtomsError = validateExpressionIntegrity(item.caseAtoms || []);
440
+ if (caseAtomsError.isError) {
441
+ return caseAtomsError;
411
442
  }
412
- var _iterator3 = _createForOfIteratorHelper(item.branches || []),
443
+ var _iterator3 = _createForOfIteratorHelper(whenClauses),
413
444
  _step3;
414
445
  try {
415
446
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
416
447
  var branch = _step3.value;
417
- var whenError = validateExpressionIntegrity(branch.when || []);
448
+ var whenError = validateExpressionIntegrity(branch.whenAtoms || []);
418
449
  if (whenError.isError) {
419
450
  return whenError;
420
451
  }
421
- var thenError = validateExpressionIntegrity(branch.then || []);
452
+ var thenError = validateExpressionIntegrity(branch.thenAtoms || []);
422
453
  if (thenError.isError) {
423
454
  return thenError;
424
455
  }
@@ -428,7 +459,7 @@ export function validateExpressionIntegrity(list) {
428
459
  } finally {
429
460
  _iterator3.f();
430
461
  }
431
- var elseError = validateExpressionIntegrity(item.elseValue || []);
462
+ var elseError = validateExpressionIntegrity(item.elseAtoms || []);
432
463
  if (elseError.isError) {
433
464
  return elseError;
434
465
  }
@@ -14,6 +14,7 @@ export interface ColumnType {
14
14
  id: string;
15
15
  datasourceId: string;
16
16
  datasourceName: string;
17
+ datasourceType?: string;
17
18
  table2?: Omit<MetaJoin_TalbeType, 'column' | 'column_id'> | null;
18
19
  }
19
20
  export interface ColumnGroupType {
@@ -80,9 +80,22 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
80
80
  useEffect(function () {
81
81
  setValue(_value);
82
82
  }, [_value]);
83
+ var getSelectedFieldKey = function getSelectedFieldKey(field) {
84
+ if (!field) return '';
85
+ if (field.tableId === SummarizeAlias) {
86
+ return field.fieldAlias || '';
87
+ }
88
+ return "".concat(field.fieldId).concat(field.fieldAlias || '');
89
+ };
90
+ var getColumnKey = function getColumnKey(column, isSummarizeColumn) {
91
+ if (isSummarizeColumn) {
92
+ return column.fieldAlias || column.name || '';
93
+ }
94
+ return "".concat(column.id || column.name).concat(column.fieldAlias || '');
95
+ };
83
96
  var isActive = function isActive(id_alias) {
84
97
  return (value === null || value === void 0 ? void 0 : value.filter(function (v) {
85
- return v.fieldId + (v.fieldAlias || '') === id_alias;
98
+ return getSelectedFieldKey(v) === id_alias;
86
99
  }).length) > 0;
87
100
  };
88
101
  useEffect(function () {
@@ -123,11 +136,10 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
123
136
  }
124
137
  var getQuotes = function getQuotes(items) {
125
138
  return items.map(function (v) {
126
- return v.fieldName;
139
+ return v.tableId === SummarizeAlias ? v.fieldAlias : v.fieldName;
127
140
  }).join(' || ');
128
141
  };
129
142
  var changeValue = function changeValue(tableUuid, val) {
130
- var _value$filter;
131
143
  if (!multiple) {
132
144
  var _data = val ? [val] : [];
133
145
  setValue(_data);
@@ -135,10 +147,11 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
135
147
  onSelect === null || onSelect === void 0 || onSelect(_data, getQuotes(_data));
136
148
  return;
137
149
  }
138
- var isHas = (value === null || value === void 0 || (_value$filter = value.filter(function (v) {
139
- return v.fieldId === (val === null || val === void 0 ? void 0 : val.fieldId);
140
- })) === null || _value$filter === void 0 ? void 0 : _value$filter.length) > 0;
141
- var _value = value;
150
+ var selectedKey = getSelectedFieldKey(val);
151
+ var isHas = (value === null || value === void 0 ? void 0 : value.filter(function (v) {
152
+ return getSelectedFieldKey(v) === selectedKey;
153
+ }).length) > 0;
154
+ var _value = value.slice();
142
155
  if (tableUuid != curTable) {
143
156
  _value = [];
144
157
  }
@@ -146,7 +159,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
146
159
  _value.push(val);
147
160
  } else {
148
161
  _value = _value.filter(function (v) {
149
- return v.fieldId != (val === null || val === void 0 ? void 0 : val.fieldId);
162
+ return getSelectedFieldKey(v) !== selectedKey;
150
163
  });
151
164
  }
152
165
  var curTableColumn = data.filter(function (v) {
@@ -156,6 +169,9 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
156
169
  });
157
170
  _value = _value.filter(function (item2) {
158
171
  return curTableColumn.some(function (item1) {
172
+ if (item2.tableId === SummarizeAlias) {
173
+ return (item1.fieldAlias || item1.name) === item2.fieldAlias;
174
+ }
159
175
  return item1.name === item2.fieldName;
160
176
  });
161
177
  });
@@ -225,12 +241,14 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
225
241
  _tableItem$datasource2 = tableItem.datasourceId,
226
242
  datasourceId = _tableItem$datasource2 === void 0 ? '' : _tableItem$datasource2,
227
243
  _tableItem$tableUuid = tableItem.tableUuid,
228
- tableUuid = _tableItem$tableUuid === void 0 ? '' : _tableItem$tableUuid;
244
+ tableUuid = _tableItem$tableUuid === void 0 ? '' : _tableItem$tableUuid,
245
+ _tableItem$id = tableItem.id,
246
+ tableId = _tableItem$id === void 0 ? '' : _tableItem$id;
229
247
  var isMultiple = tableList.length > 1;
230
248
  if (!isMultiple) {
231
249
  open = true;
232
250
  }
233
- var isSummarize = tableAlias === SummarizeAlias;
251
+ var isSummarize = tableId === SummarizeAlias;
234
252
  return _jsxs("div", {
235
253
  children: [!isSummarize && _jsx("div", {
236
254
  className: cx("Sqb-List-section"),
@@ -254,7 +272,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
254
272
  } else {
255
273
  setTableList(newTables.map(function (v) {
256
274
  return _objectSpread(_objectSpread({}, v), {}, {
257
- open: tableUuid === v.tableUuid || v.alias === SummarizeAlias
275
+ open: tableUuid === v.tableUuid || v.id === SummarizeAlias
258
276
  });
259
277
  }));
260
278
  }
@@ -302,10 +320,12 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
302
320
  var special_type = v.special_type,
303
321
  _v$database_type = v.database_type,
304
322
  database_type = _v$database_type === void 0 ? '' : _v$database_type,
305
- name = v.name,
306
- _v$realName = v.realName,
307
- realName = _v$realName === void 0 ? '' : _v$realName,
308
- fieldId = v.id;
323
+ name = v.name;
324
+ var columnKey = getColumnKey(v, isSummarize);
325
+ var fieldAlias = isSummarize ? v.fieldAlias || name || '' : v.fieldAlias || '';
326
+ var fieldName = isSummarize ? '' : name || '';
327
+ var fieldId = isSummarize ? '' : v.id || name || '';
328
+ var fieldNameZh = isSummarize ? '' : v.name_zh || '';
309
329
  var groupe = SQL_GROUP_TYPE.STRING;
310
330
  if (~NUMBER_GROUP.indexOf(database_type)) {
311
331
  groupe = SQL_GROUP_TYPE.NUMBER;
@@ -317,22 +337,22 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
317
337
  className: cx("Sqb-List-section"),
318
338
  children: _jsx("div", {
319
339
  className: cx("Sqb-List-item mx-2", {
320
- active: isActive((v.id || v.name) + (v.fieldAlias || ''))
340
+ active: isActive(columnKey)
321
341
  }),
322
342
  onClick: function onClick() {
323
- if (isSummarize) {}
324
343
  changeValue(tableUuid, {
325
344
  tableName: tableItem.name || '',
326
- tableId: tableItem.id || '',
345
+ tableId: tableId || '',
327
346
  tableNameZh: tableItem.name_zh || '',
328
347
  tableAlias: tableItem.alias || '',
329
348
  tableUuid: tableItem.tableUuid || '',
330
349
  datasourceName: tableItem.datasourceName || '',
331
350
  datasourceId: tableItem.datasourceId || '',
332
- fieldName: v.name || '',
333
- fieldId: v.id || v.name || '',
334
- fieldNameZh: v.name_zh || '',
335
- fieldAlias: v.fieldAlias || '',
351
+ datasourceType: tableItem.datasourceType || '',
352
+ fieldName: fieldName,
353
+ fieldId: fieldId,
354
+ fieldNameZh: fieldNameZh,
355
+ fieldAlias: fieldAlias,
336
356
  fieldUuid: v.fieldUuid || '',
337
357
  type: AtomsTypeEnum.FIELD
338
358
  });
@@ -103,6 +103,7 @@ var SelectSummarize = function SelectSummarize(_ref) {
103
103
  tableUuid: value.tableUuid || '',
104
104
  datasourceName: value.datasourceName || '',
105
105
  datasourceId: value.datasourceId || '',
106
+ datasourceType: value.datasourceType || '',
106
107
  type: AtomsTypeEnum.FIELD
107
108
  };
108
109
  return [fieldAtom];
@@ -133,7 +134,13 @@ var SelectSummarize = function SelectSummarize(_ref) {
133
134
  return [lhs, item.condition, rhs].filter(Boolean).join(' ').trim();
134
135
  }
135
136
  if (item.type === AtomsTypeEnum.AND_OR) {
136
- return "".concat(item.operator || 'and', " ( ").concat(getFormulaSummary(item.list || []), " )").replace(/\s+/g, ' ').trim();
137
+ var hasBinarySides = Array.isArray(item.leftAtoms) || Array.isArray(item.rightAtoms);
138
+ if (hasBinarySides) {
139
+ var leftText = getFormulaSummary(item.leftAtoms || []);
140
+ var rightText = getFormulaSummary(item.rightAtoms || []);
141
+ return "( ".concat(leftText, " ").concat(item.operator || 'and', " ").concat(rightText, " )").replace(/\s+/g, ' ').trim();
142
+ }
143
+ return "".concat(item.operator || 'and', " ( ").concat(getFormulaSummary(item.atoms || []), " )").replace(/\s+/g, ' ').trim();
137
144
  }
138
145
  if (item.type === AtomsTypeEnum.CASE_WHEN) {
139
146
  return item.quotes || 'case when';
@@ -163,7 +170,8 @@ var SelectSummarize = function SelectSummarize(_ref) {
163
170
  fieldAlias: '',
164
171
  fieldUuid: '',
165
172
  datasourceId: '',
166
- datasourceName: ''
173
+ datasourceName: '',
174
+ datasourceType: ''
167
175
  } : {}), record), {}, {
168
176
  condition: condition,
169
177
  quotes: quotes
@@ -6,8 +6,9 @@ interface PropsType {
6
6
  sourceTable: any[];
7
7
  value: MetaData_TableType;
8
8
  onChange: (reocrd: MetaData_TableType) => void;
9
+ onDatasourceTypeChange?: (record: MetaData_TableType) => void;
9
10
  didUpdate?: Function;
10
11
  tableFlat?: boolean;
11
12
  }
12
- declare const SelectTable: ({ data, sourceTable, value, onChange, didUpdate, tableFlat, }: PropsType) => import("react/jsx-runtime").JSX.Element;
13
+ declare const SelectTable: ({ data, sourceTable, value, onChange, onDatasourceTypeChange, didUpdate, tableFlat, }: PropsType) => import("react/jsx-runtime").JSX.Element;
13
14
  export default SelectTable;