@gingkoo/pandora-metabase 1.0.136 → 1.0.137-alpha.1

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.
@@ -108,6 +108,12 @@ var customTypes = exports.customTypes = [{
108
108
  }, {
109
109
  value: _types.AtomsTypeEnum.EXPRESSION,
110
110
  label: (0, _locale.__)('customColumn.expression')
111
+ }, {
112
+ value: _types.AtomsTypeEnum.CASE_WHEN,
113
+ label: (0, _locale.__)('customColumn.caseWhen')
114
+ }, {
115
+ value: _types.AtomsTypeEnum.AND_OR,
116
+ label: (0, _locale.__)('customColumn.andOr')
111
117
  }, {
112
118
  value: _types.AtomsTypeEnum.INPUT_STRING,
113
119
  label: (0, _locale.__)('customColumn.input')
@@ -43,6 +43,18 @@ var SelectColumn = function SelectColumn(_ref) {
43
43
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
44
44
  filterVal = _useState6[0],
45
45
  setFilterVal = _useState6[1];
46
+ (0, _react.useEffect)(function () {
47
+ setOriginList(function (currentList) {
48
+ return data.map(function (item) {
49
+ var existingItem = currentList.find(function (current) {
50
+ return (0, _helper.isSameColumnByIdFirst)(current, item);
51
+ });
52
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, existingItem || {}), item), {}, {
53
+ fieldUuid: item.fieldUuid || (existingItem === null || existingItem === void 0 ? void 0 : existingItem.fieldUuid) || (0, _helper.uuidv4)('field')
54
+ });
55
+ });
56
+ });
57
+ }, [data]);
46
58
  (0, _react.useEffect)(function () {
47
59
  var newList = (0, _cloneDeep["default"])(originList.slice());
48
60
  setColumns(newList.filter(function (v) {
@@ -79,7 +91,7 @@ var SelectColumn = function SelectColumn(_ref) {
79
91
  var originalData = (0, _cloneDeep["default"])(originList);
80
92
  var mergedColumns = originalData.map(function (item) {
81
93
  var match = columns.find(function (col) {
82
- return (0, _helper.isSameColumnByIdName)(col, item);
94
+ return (0, _helper.isSameColumnByIdFirst)(col, item);
83
95
  });
84
96
  return match ? (0, _cloneDeep["default"])(match) : item;
85
97
  });
@@ -12,6 +12,7 @@ require("./index.less");
12
12
  var _react = require("react");
13
13
  var _pandora = require("@gingkoo/pandora");
14
14
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
15
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
15
16
  var _classnames = _interopRequireDefault(require("classnames"));
16
17
  var _enum = require("../../../store/enum");
17
18
  var _helper = require("../../../store/helper");
@@ -109,12 +110,12 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
109
110
  var getSelectedFieldKey = function getSelectedFieldKey(field) {
110
111
  if (!field) return '';
111
112
  var tableKey = getFieldTableKey(field.tableId, field.tableUuid);
112
- var fieldKey = "".concat(field.fieldId || '', "|").concat(field.fieldName || '');
113
+ var fieldKey = field.fieldId || field.fieldUuid || field.fieldName || '';
113
114
  return "".concat(tableKey, "|").concat(fieldKey);
114
115
  };
115
116
  var getColumnKey = function getColumnKey(column, isSummarizeColumn, tableId, tableUuid) {
116
117
  var tableKey = getFieldTableKey(tableId, tableUuid);
117
- var fieldKey = "".concat(column.id || '', "|").concat(column.name || '');
118
+ var fieldKey = column.id || column.fieldId || column.fieldUuid || column.name || '';
118
119
  return "".concat(tableKey, "|").concat(fieldKey);
119
120
  };
120
121
  var isActive = function isActive(id_alias, tableId, tableUuid) {
@@ -163,6 +164,58 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
163
164
  return v.tableId === _helper.SummarizeAlias ? v.fieldAlias : v.fieldName;
164
165
  }).join(' || ');
165
166
  };
167
+ var getFieldAliasByColumn = function getFieldAliasByColumn(field, column) {
168
+ if (field.tableId === _helper.SummarizeAlias) {
169
+ return column.fieldAlias || column.name || '';
170
+ }
171
+ if (column.fieldAlias) return column.fieldAlias;
172
+ if (field.fieldAlias === field.fieldName || field.fieldAlias === column.name) return '';
173
+ return field.fieldAlias || '';
174
+ };
175
+ var getMatchedColumnByField = function getMatchedColumnByField(field, tableItem) {
176
+ if (!tableItem) return null;
177
+ var tableId = tableItem.id || '';
178
+ var tableUuid = tableItem.tableUuid || '';
179
+ return (tableItem.columns || []).find(function (column) {
180
+ return (0, _helper2.isSameColumnByIdFirst)((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, column), {}, {
181
+ tableId: tableId,
182
+ tableUuid: tableUuid,
183
+ datasourceId: tableItem.datasourceId || ''
184
+ }), field);
185
+ }) || null;
186
+ };
187
+ var syncSelectedFieldByColumn = function syncSelectedFieldByColumn(field, column, tableItem) {
188
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, field), {}, {
189
+ tableName: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.name) || field.tableName || '',
190
+ tableId: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.id) || field.tableId || '',
191
+ tableNameZh: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.name_zh) || field.tableNameZh || '',
192
+ tableAlias: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.alias) || field.tableAlias || '',
193
+ tableUuid: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.tableUuid) || field.tableUuid || '',
194
+ datasourceName: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.datasourceName) || field.datasourceName || '',
195
+ datasourceId: (tableItem === null || tableItem === void 0 ? void 0 : tableItem.datasourceId) || field.datasourceId || ''
196
+ }, 'name' in field ? {
197
+ name: column.name || field.name || ''
198
+ } : {}), {}, {
199
+ fieldName: column.name || field.fieldName || '',
200
+ fieldId: column.id || column.fieldId || field.fieldId || '',
201
+ fieldNameZh: field.fieldNameZh || column.name_zh || '',
202
+ fieldAlias: getFieldAliasByColumn(field, column),
203
+ fieldUuid: column.fieldUuid || field.fieldUuid || ''
204
+ });
205
+ };
206
+ (0, _react.useEffect)(function () {
207
+ var syncedValue = (_value || []).map(function (field) {
208
+ var tableItem = data.find(function (item) {
209
+ return isSameSelectedTable(field, item.id || '', item.tableUuid || '');
210
+ });
211
+ var matchedColumn = getMatchedColumnByField(field, tableItem);
212
+ return matchedColumn ? syncSelectedFieldByColumn(field, matchedColumn, tableItem) : field;
213
+ });
214
+ setValue(syncedValue);
215
+ if (!(0, _isEqual["default"])(syncedValue, _value || [])) {
216
+ onSelect === null || onSelect === void 0 || onSelect(syncedValue, getQuotes(syncedValue));
217
+ }
218
+ }, [data, _value]);
166
219
  var changeValue = function changeValue(tableUuid, val) {
167
220
  if (!multiple) {
168
221
  var _data = val ? [val] : [];
@@ -173,7 +226,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
173
226
  return;
174
227
  }
175
228
  var isHas = (value === null || value === void 0 ? void 0 : value.filter(function (v) {
176
- return val && isSameSelectedTable(v, val.tableId, val.tableUuid) && (0, _helper2.isSameColumnByIdName)(v, val);
229
+ return val && isSameSelectedTable(v, val.tableId, val.tableUuid) && (0, _helper2.isSameColumnByIdFirst)(v, val);
177
230
  }).length) > 0;
178
231
  var _value = value.slice();
179
232
  if (tableUuid != selectedTable) {
@@ -188,26 +241,18 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
188
241
  _value.push(val);
189
242
  } else {
190
243
  _value = _value.filter(function (v) {
191
- return !(val && isSameSelectedTable(v, val.tableId, val.tableUuid) && (0, _helper2.isSameColumnByIdName)(v, val));
244
+ return !(val && isSameSelectedTable(v, val.tableId, val.tableUuid) && (0, _helper2.isSameColumnByIdFirst)(v, val));
192
245
  });
193
246
  }
194
247
  var curTableItem = data.find(function (v) {
195
248
  return v.tableUuid === tableUuid;
196
249
  });
197
250
  var curTableId = (curTableItem === null || curTableItem === void 0 ? void 0 : curTableItem.id) || '';
198
- var curTableColumn = (curTableItem === null || curTableItem === void 0 ? void 0 : curTableItem.columns) || [];
199
- _value = _value.filter(function (item2) {
200
- return isSameSelectedTable(item2, curTableId, tableUuid) && curTableColumn.some(function (item1) {
201
- if (item2.tableId === _helper.SummarizeAlias) {
202
- return (0, _helper2.isSameColumnByIdName)(item2, item1);
203
- }
204
- return (0, _helper2.isSameColumnByIdFirst)((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, item1), {}, {
205
- tableId: curTableId,
206
- tableUuid: tableUuid,
207
- datasourceId: (curTableItem === null || curTableItem === void 0 ? void 0 : curTableItem.datasourceId) || ''
208
- }), item2);
209
- });
210
- });
251
+ _value = _value.map(function (item2) {
252
+ if (!isSameSelectedTable(item2, curTableId, tableUuid)) return null;
253
+ var matchedColumn = getMatchedColumnByField(item2, curTableItem);
254
+ return matchedColumn ? syncSelectedFieldByColumn(item2, matchedColumn, curTableItem) : null;
255
+ }).filter(Boolean);
211
256
  setValue(_value);
212
257
  setSelectedTable(tableUuid);
213
258
  setCurTable(tableUuid);
@@ -15,6 +15,7 @@ var _locale = require("../../../locale");
15
15
  var _useProvider = require("../../../hooks/use-provider");
16
16
  var _utils = require("../../../utils");
17
17
  var _diffViewer = _interopRequireDefault(require("../../dialog/diff-viewer"));
18
+ var _helperDom = require("../../../utils/helper-dom");
18
19
  var Header = function Header(props) {
19
20
  var meta = props.meta,
20
21
  groupIndex = props.groupIndex,
@@ -35,6 +36,7 @@ var Header = function Header(props) {
35
36
  oldCode = _yield$store$getModul.oldCode;
36
37
  newCode = _yield$store$getModul.newCode;
37
38
  o = _pandora.Modal2.openModal({
39
+ zIndex: (0, _helperDom.getTopLayerZIndex)() + 1,
38
40
  title: '差异对比',
39
41
  transparentMask: true,
40
42
  content: (0, _jsxRuntime.jsx)(_diffViewer["default"], {
@@ -50,9 +50,10 @@ var Filter = function Filter(props) {
50
50
  if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$group = prevGroupBy.group) !== null && _prevGroupBy$group !== void 0 && _prevGroupBy$group.length) {
51
51
  _data.columns = _data.columns.concat(prevGroupBy.group.map(function (v) {
52
52
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
53
- name: v.name || v.quotes,
53
+ name: v.fieldAlias || v.name || v.quotes,
54
54
  name_zh: v.name_zh || v.quotes,
55
55
  id: v.id || v.fieldId,
56
+ fieldAlias: '',
56
57
  database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
57
58
  sql: v.sql,
58
59
  special_type: '',
@@ -63,9 +64,10 @@ var Filter = function Filter(props) {
63
64
  if (prevGroupBy !== null && prevGroupBy !== void 0 && (_prevGroupBy$by = prevGroupBy.by) !== null && _prevGroupBy$by !== void 0 && _prevGroupBy$by.length) {
64
65
  _data.columns = _data.columns.concat(prevGroupBy.by.map(function (v) {
65
66
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
66
- name: v.name || v.quotes,
67
+ name: v.fieldAlias || v.name || v.quotes,
67
68
  name_zh: v.name_zh || v.quotes,
68
69
  id: v.id || v.fieldId,
70
+ fieldAlias: '',
69
71
  database_type: (v === null || v === void 0 ? void 0 : v.database_type) || _enum.SQL_COLUMN_TYPE.FLOAT,
70
72
  sql: v.sql,
71
73
  special_type: '',
@@ -17,7 +17,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
17
17
  var _pandora = require("@gingkoo/pandora");
18
18
  var _pandoraIcons = require("@gingkoo/pandora-icons");
19
19
  var _index = _interopRequireDefault(require("../../index"));
20
- var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
21
20
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
22
21
  var _helper = require("../../utils/helper");
23
22
  var _helperDom = require("../../utils/helper-dom");
@@ -957,7 +956,6 @@ var JoinData = function JoinData(props) {
957
956
  var childModalZIndex = (0, _helperDom.getTopLayerZIndex)() + 1;
958
957
  var newMeta = (0, _cloneDeep["default"])(store.metaList[groupIndex].list);
959
958
  var index = (0, _utils2.findIndex)(store.metaList[groupIndex].list, meta);
960
- var oldList = (0, _cloneDeep["default"])(newMeta[index].subquery);
961
959
  var _toolbar = subToolbar || toolbar;
962
960
  var o = _pandora.Modal2.openModal({
963
961
  zIndex: childModalZIndex,
@@ -973,21 +971,22 @@ var JoinData = function JoinData(props) {
973
971
  onOk: function onOk(newList) {
974
972
  try {
975
973
  var _store$preProps3;
976
- if ((0, _isEqual["default"])(newList, oldList)) {
977
- o.close();
978
- return;
979
- }
980
974
  newMeta[index].subquery = newList;
981
975
  newMeta[index].table2 = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, newList[0].table), {}, {
982
976
  alias: newMeta[index].table2.alias || (0, _helper.getAlias)(newList[0].table.name, newMeta, ((_store$preProps3 = store.preProps) === null || _store$preProps3 === void 0 ? void 0 : _store$preProps3.notExistsColumns) || [])
983
977
  });
984
978
  var items = (0, _utils2.getSubColumns)(newList);
979
+ var subQueryTable = newMeta[index].table2;
985
980
  var newColumns = items.flatMap(function (item) {
986
981
  return item.columns.map(function (column) {
982
+ var columnMeta = column;
987
983
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, column), {}, {
988
- tableId: column.tableId || column.id || item.id,
989
- tableUuid: column.tableUuid || item.tableUuid,
990
- datasourceId: column.datasourceId || item.datasourceId || ''
984
+ tableId: subQueryTable.id || item.id || column.tableId || column.id,
985
+ tableUuid: subQueryTable.tableUuid || item.tableUuid || column.tableUuid,
986
+ tableName: subQueryTable.name || item.name || columnMeta.tableName || '',
987
+ tableAlias: subQueryTable.alias || item.alias || columnMeta.tableAlias || '',
988
+ datasourceId: subQueryTable.datasourceId || item.datasourceId || column.datasourceId || '',
989
+ datasourceName: subQueryTable.datasourceName || item.datasourceName || column.datasourceName || ''
991
990
  });
992
991
  });
993
992
  }).map(function (v) {
@@ -995,15 +994,10 @@ var JoinData = function JoinData(props) {
995
994
  select: false
996
995
  });
997
996
  });
998
- newMeta[index].columns = newColumns.map(function (newCol) {
999
- var existingCol = newMeta[index].columns.find(function (oldCol) {
1000
- return (0, _helper.isSameColumnByIdFirst)(oldCol, newCol);
1001
- });
1002
- var _column = existingCol ? existingCol : newCol;
1003
- _column.select = store.isSelectFields || _column.select;
1004
- return _column;
1005
- });
997
+ var oldColumns = newMeta[index].columns;
998
+ newMeta[index].columns = (0, _utils2.mergeSubQueryColumns)(newColumns, oldColumns, store.isSelectFields);
1006
999
  initExpressions(newMeta);
1000
+ newMeta = (0, _utils2.syncSubQueryFieldReferences)(newMeta, newMeta[index].table2, newMeta[index].columns, oldColumns);
1007
1001
  store.setMeta(newMeta, groupIndex, {
1008
1002
  obj: newList,
1009
1003
  type: _types.ChangeType.subQuery
@@ -23,7 +23,6 @@ var _helperDom = require("../../utils/helper-dom");
23
23
  var _utils = require("../../utils");
24
24
  var _pandoraIcons = require("@gingkoo/pandora-icons");
25
25
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
26
- var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
27
26
  var _itemName = _interopRequireDefault(require("./components/item-name"));
28
27
  var _dialog = require("../dialog");
29
28
  var _Wrapper = _interopRequireDefault(require("./components/Wrapper"));
@@ -195,7 +194,6 @@ var TableData = function TableData(props) {
195
194
  var childModalZIndex = (0, _helperDom.getTopLayerZIndex)() + 1;
196
195
  var newMetaList = store.metaList[groupIndex].list.slice()[0];
197
196
  var newMeta = store.metaList[groupIndex].list.slice();
198
- var oldList = (0, _cloneDeep["default"])(newMetaList.subquery);
199
197
  var _toolbar = subToolbar || toolbar;
200
198
  var o = _pandora.Modal2.openModal({
201
199
  zIndex: childModalZIndex,
@@ -210,22 +208,23 @@ var TableData = function TableData(props) {
210
208
  value: (0, _cloneDeep["default"])(val),
211
209
  onOk: function onOk(newList) {
212
210
  try {
213
- if ((0, _isEqual["default"])(newList, oldList)) {
214
- o.close();
215
- return;
216
- }
217
211
  newMetaList.subquery = newList;
218
212
  newMetaList.table = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, newList[0].table), {}, {
219
213
  alias: newMetaList.table.alias || (0, _helper.getAlias)(newList[0].table.name, newMeta),
220
214
  tableUuid: newMetaList.table.tableUuid || (0, _helper.uuidv4)('table')
221
215
  });
222
216
  var items = (0, _utils.getSubColumns)(newList);
217
+ var subQueryTable = newMetaList.table;
223
218
  var newColumns = items.flatMap(function (item) {
224
219
  return item.columns.map(function (column) {
220
+ var columnMeta = column;
225
221
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, column), {}, {
226
- tableId: column.tableId || column.id || item.id,
227
- tableUuid: column.tableUuid || item.tableUuid,
228
- datasourceId: column.datasourceId || item.datasourceId || ''
222
+ tableId: subQueryTable.id || item.id || column.tableId || column.id,
223
+ tableUuid: subQueryTable.tableUuid || item.tableUuid || column.tableUuid,
224
+ tableName: subQueryTable.name || item.name || columnMeta.tableName || '',
225
+ tableAlias: subQueryTable.alias || item.alias || columnMeta.tableAlias || '',
226
+ datasourceId: subQueryTable.datasourceId || item.datasourceId || column.datasourceId || '',
227
+ datasourceName: subQueryTable.datasourceName || item.datasourceName || column.datasourceName || ''
229
228
  });
230
229
  });
231
230
  }).map(function (v) {
@@ -233,16 +232,11 @@ var TableData = function TableData(props) {
233
232
  select: false
234
233
  });
235
234
  });
236
- newMetaList.columns = newColumns.map(function (newCol) {
237
- var existingCol = newMetaList.columns.find(function (oldCol) {
238
- return (0, _helper.isSameColumnByIdFirst)(oldCol, newCol);
239
- });
240
- var _column = existingCol ? existingCol : newCol;
241
- _column.select = store.isSelectFields || _column.select;
242
- return _column;
243
- });
235
+ var oldColumns = newMetaList.columns;
236
+ newMetaList.columns = (0, _utils.mergeSubQueryColumns)(newColumns, oldColumns, store.isSelectFields);
244
237
  var newMetas = store.metaList[groupIndex].list.slice();
245
238
  newMetas[0] = newMetaList;
239
+ newMetas = (0, _utils.syncSubQueryFieldReferences)(newMetas, newMetaList.table, newMetaList.columns, oldColumns);
246
240
  store.setMeta(newMetas, groupIndex, {
247
241
  obj: newList,
248
242
  type: _types.ChangeType.subQuery
@@ -21,6 +21,8 @@ interface HelperResultType {
21
21
  };
22
22
  }
23
23
  export declare const getHelper: (list: MetaListType[], item: MetaListType) => HelperResultType;
24
+ export declare const mergeSubQueryColumns: (columns: MetaData_ColumnsType[], oldColumns?: MetaData_ColumnsType[], isSelectFields?: boolean) => MetaData_ColumnsType[];
25
+ export declare const syncSubQueryFieldReferences: (list: MetaListType[], table: MetaData_TableType, columns: MetaData_ColumnsType[], oldColumns?: MetaData_ColumnsType[]) => MetaListType[];
24
26
  export declare const getSubColumns: (metaList: any) => DataType[];
25
27
  export declare function isValidSQLAlias(str: string): boolean;
26
28
  export declare const changeTableAlias: (list: MetaListType[] | [], curObj: Pick<MetaData_TableType, "tableUuid" | "alias">) => MetaListType[];
@@ -31,7 +33,7 @@ export declare const getObjTem: (arr: any[]) => any;
31
33
  export declare const patchData: (metas: MetaListType[], constantList?: any, formulaTemplates?: any) => MetaListType[];
32
34
  export declare function reassembleByUnion(target?: any[]): any[];
33
35
  export declare const buildSqlQuery: (data: MetaListType[] | undefined, type: string) => string;
34
- export declare const isError: (item: AtomsItem | AtomsItem[], data: DataType[]) => boolean;
36
+ export declare const isError: (item: AtomsItem | AtomsItem[], data?: DataType[]) => boolean;
35
37
  export declare function containsSubset(root: unknown, target: Record<string, unknown>): boolean;
36
38
  export declare const isExistsError: (meta: any[], errorList: any[]) => boolean;
37
39
  export declare const changeCopyField: (items: AtomsItem[], data: any[]) => AtomsItem[];