@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
@@ -1,129 +1,120 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
1
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
5
3
  var _excluded = ["children"],
6
4
  _excluded2 = ["metaKey"];
5
+ import { AtomsTypeEnum } from './types';
7
6
  // import { SummarizeAlias } from './index';
8
- import { TypeEnum, SQL_GROUP_TYPE, SQL_COLUMN_TYPE } from './enum';
7
+ import { TypeEnum, SQL_COLUMN_TYPE } from './enum';
9
8
  export var SummarizeAlias = 'source';
10
9
  var NUMBER_GROUP = [SQL_COLUMN_TYPE.FLOAT, SQL_COLUMN_TYPE.LONG, SQL_COLUMN_TYPE.CURRENCY];
11
10
  var STRING_GROUP = [SQL_COLUMN_TYPE.STRING];
12
11
  var DATE_GROUP = [SQL_COLUMN_TYPE.DATE];
13
12
  // 过滤器对象转sql语句
14
- export var filterToSql = function filterToSql(record) {
15
- var alias = record.alias,
16
- name = record.name,
17
- condition = record.condition,
18
- val = record.val,
19
- groupSql = record.groupSql,
20
- database_type = record.database_type;
21
- var _val = _slicedToArray(val, 2),
22
- condition_1 = _val[0],
23
- condition_2 = _val[1];
24
- var columnName;
25
- if (alias === SummarizeAlias) {
26
- var _groupSql$split;
27
- columnName = "".concat(alias, ".").concat((groupSql === null || groupSql === void 0 || (_groupSql$split = groupSql.split(' AS ')) === null || _groupSql$split === void 0 ? void 0 : _groupSql$split[1]) || '');
28
- } else {
29
- columnName = "".concat(alias, ".").concat(name);
30
- }
31
- var sql = '';
32
- var group = SQL_GROUP_TYPE.STRING;
33
- if (~NUMBER_GROUP.indexOf(database_type)) {
34
- group = SQL_GROUP_TYPE.NUMBER;
35
- }
36
- if (~DATE_GROUP.indexOf(database_type)) {
37
- group = SQL_GROUP_TYPE.DATE;
38
- }
39
- if (group === SQL_GROUP_TYPE.STRING) {
40
- switch (condition) {
41
- // string
42
- case '是':
43
- sql = "".concat(columnName, " = '").concat(condition_1, "'");
44
- break;
45
- case '不是':
46
- sql = "".concat(columnName, " <> '").concat(condition_1, "'");
47
- break;
48
- case '包含':
49
- sql = "(".concat(columnName, " like '%").concat(condition_1, "%')");
50
- break;
51
- case '不包含':
52
- sql = "(NOT ".concat(columnName, " like '%").concat(condition_1, "%')");
53
- break;
54
- case '为空':
55
- sql = "".concat(columnName, " IS NULL");
56
- break;
57
- case '不为空':
58
- sql = "".concat(columnName, " IS NOT NULL");
59
- break;
60
- case '以...开始':
61
- sql = "(".concat(columnName, " like '").concat(condition_1, "%')");
62
- break;
63
- case '以...结束':
64
- sql = "(".concat(columnName, " like '%").concat(condition_1, "')");
65
- break;
66
- }
67
- }
68
- if (group === SQL_GROUP_TYPE.NUMBER) {
69
- switch (condition) {
70
- // number
71
- case '等于':
72
- sql = "".concat(columnName, " = ").concat(condition_1);
73
- break;
74
- case '不等于':
75
- sql = "".concat(columnName, " <> ").concat(condition_1);
76
- break;
77
- case '大于':
78
- sql = "".concat(columnName, " > ").concat(condition_1);
79
- break;
80
- case '小于':
81
- sql = "".concat(columnName, " < ").concat(condition_1);
82
- break;
83
- case '介于之间':
84
- sql = "".concat(columnName, " BETWEEN ").concat(condition_1, " AND ").concat(condition_2);
85
- break;
86
- case '大于或等于':
87
- sql = "".concat(columnName, " >= ").concat(condition_1);
88
- break;
89
- case '小于或等于':
90
- sql = "".concat(columnName, " <= ").concat(condition_1);
91
- break;
92
- case '为空':
93
- sql = "".concat(columnName, " IS NULL");
94
- break;
95
- case '不为空':
96
- sql = "".concat(columnName, " IS NOT NULL");
97
- break;
98
- }
99
- }
100
- if (group === SQL_GROUP_TYPE.DATE) {
101
- function transformDate(dataStr) {
102
- return dataStr.replace(/-/g, '').replace(/:/g, '').replace(' ', '') + '00';
103
- }
104
- var c_1 = transformDate(condition_1 || '');
105
- var c_2 = transformDate(condition_2 || '');
106
- switch (condition) {
107
- // date
108
- case '早于':
109
- sql = "".concat(columnName, " < '").concat(c_1, "'");
110
- break;
111
- case '晚于':
112
- sql = "".concat(columnName, " >= '").concat(c_1, "'");
113
- break;
114
- case '介于之间':
115
- sql = "(".concat(columnName, " >= '").concat(c_1, "' AND ").concat(columnName, " < '").concat(c_2, "')");
116
- break;
117
- case '是空的':
118
- sql = "".concat(columnName, " IS NULL");
119
- break;
120
- case '不是空的':
121
- sql = "".concat(columnName, " IS NOT NULL");
122
- break;
123
- }
124
- }
125
- return sql;
126
- };
13
+ // export const filterToSql = (record: AtomsItem): string => {
14
+ // let { alias, name, condition, val, groupSql, database_type } = record;
15
+ // let [condition_1, condition_2] = val;
16
+ // let columnName: string;
17
+ // if (alias === SummarizeAlias) {
18
+ // columnName = `${alias}.${groupSql?.split(' AS ')?.[1] || ''}`;
19
+ // } else {
20
+ // columnName = `${alias}.${name}`;
21
+ // }
22
+ // let sql: string = '';
23
+ // let group: SQL_GROUP_TYPE = SQL_GROUP_TYPE.STRING;
24
+ // if (~NUMBER_GROUP.indexOf(database_type as SQL_COLUMN_TYPE)) {
25
+ // group = SQL_GROUP_TYPE.NUMBER;
26
+ // }
27
+ // if (~DATE_GROUP.indexOf(database_type as SQL_COLUMN_TYPE)) {
28
+ // group = SQL_GROUP_TYPE.DATE;
29
+ // }
30
+ // if (group === SQL_GROUP_TYPE.STRING) {
31
+ // switch (condition) {
32
+ // // string
33
+ // case '是':
34
+ // sql = `${columnName} = '${condition_1}'`;
35
+ // break;
36
+ // case '不是':
37
+ // sql = `${columnName} <> '${condition_1}'`;
38
+ // break;
39
+ // case '包含':
40
+ // sql = `(${columnName} like '%${condition_1}%')`;
41
+ // break;
42
+ // case '不包含':
43
+ // sql = `(NOT ${columnName} like '%${condition_1}%')`;
44
+ // break;
45
+ // case '为空':
46
+ // sql = `${columnName} IS NULL`;
47
+ // break;
48
+ // case '不为空':
49
+ // sql = `${columnName} IS NOT NULL`;
50
+ // break;
51
+ // case '以...开始':
52
+ // sql = `(${columnName} like '${condition_1}%')`;
53
+ // break;
54
+ // case '以...结束':
55
+ // sql = `(${columnName} like '%${condition_1}')`;
56
+ // break;
57
+ // }
58
+ // }
59
+ // if (group === SQL_GROUP_TYPE.NUMBER) {
60
+ // switch (condition) {
61
+ // // number
62
+ // case '等于':
63
+ // sql = `${columnName} = ${condition_1}`;
64
+ // break;
65
+ // case '不等于':
66
+ // sql = `${columnName} <> ${condition_1}`;
67
+ // break;
68
+ // case '大于':
69
+ // sql = `${columnName} > ${condition_1}`;
70
+ // break;
71
+ // case '小于':
72
+ // sql = `${columnName} < ${condition_1}`;
73
+ // break;
74
+ // case '介于之间':
75
+ // sql = `${columnName} BETWEEN ${condition_1} AND ${condition_2}`;
76
+ // break;
77
+ // case '大于或等于':
78
+ // sql = `${columnName} >= ${condition_1}`;
79
+ // break;
80
+ // case '小于或等于':
81
+ // sql = `${columnName} <= ${condition_1}`;
82
+ // break;
83
+ // case '为空':
84
+ // sql = `${columnName} IS NULL`;
85
+ // break;
86
+ // case '不为空':
87
+ // sql = `${columnName} IS NOT NULL`;
88
+ // break;
89
+ // }
90
+ // }
91
+ // if (group === SQL_GROUP_TYPE.DATE) {
92
+ // function transformDate(dataStr: string) {
93
+ // return dataStr.replace(/-/g, '').replace(/:/g, '').replace(' ', '') + '00';
94
+ // }
95
+ // let c_1 = transformDate(condition_1 || '');
96
+ // let c_2 = transformDate(condition_2 || '');
97
+ // switch (condition) {
98
+ // // date
99
+ // case '早于':
100
+ // sql = `${columnName} < '${c_1}'`;
101
+ // break;
102
+ // case '晚于':
103
+ // sql = `${columnName} >= '${c_1}'`;
104
+ // break;
105
+ // case '介于之间':
106
+ // sql = `(${columnName} >= '${c_1}' AND ${columnName} < '${c_2}')`;
107
+ // break;
108
+ // case '是空的':
109
+ // sql = `${columnName} IS NULL`;
110
+ // break;
111
+ // case '不是空的':
112
+ // sql = `${columnName} IS NOT NULL`;
113
+ // break;
114
+ // }
115
+ // }
116
+ // return sql;
117
+ // };
127
118
  // 聚合转sql语句
128
119
  export var summarizeToSql = function summarizeToSql(arr, record) {
129
120
  var condition = record.condition,
@@ -267,123 +258,113 @@ var _layeredData = function layeredData(list) {
267
258
  return res;
268
259
  };
269
260
  // 处理数据格式 - (这里才是真正处理成后端需要的格式 前面两步都是准备工作)
270
- var _handleNesting = function handleNesting(data) {
271
- var hasInnerSql = Boolean(data.children);
272
- var obj = {
273
- hasInnerSql: hasInnerSql,
274
- innerSqlStruct: hasInnerSql ? _handleNesting(data.children) : null
275
- };
276
- var tableData = data[TypeEnum.data];
277
- var joinData = data[TypeEnum.joinData] || [];
278
- var permissionTable = data[TypeEnum.permissionTable];
279
- var customColumn = data[TypeEnum.customColumn];
280
- var filterData = data[TypeEnum.filter];
281
- var summarize = data[TypeEnum.summarize];
282
- var sortData = data[TypeEnum.sort];
283
- var rowLimit = data[TypeEnum.rowLimit];
284
- if (tableData) {
285
- obj.alias = tableData.table.alias;
286
- obj.tableName = tableData.table.name;
287
- obj.datasourceId = tableData.table.datasourceId;
288
- if (!summarize || !summarize.group.length && !summarize.by.length) {
289
- obj.queryColumns = tableData.columns.filter(function (v) {
290
- return v.select;
291
- }).map(function (v) {
292
- var _tableData$table;
293
- return "".concat(tableData === null || tableData === void 0 || (_tableData$table = tableData.table) === null || _tableData$table === void 0 ? void 0 : _tableData$table.alias, ".").concat(v.name);
294
- });
295
- }
296
- } else {
297
- if (!summarize || !summarize.group.length && !summarize.by.length) {
298
- obj.alias = SummarizeAlias;
299
- }
300
- }
301
- if (joinData.length) {
302
- obj.joinTables = joinData.filter(function (v) {
303
- return v.table2.name;
304
- }).map(function (v) {
305
- var joinCondition;
306
- if (v.table1.alias === SummarizeAlias) {
307
- joinCondition = "ON ".concat(SummarizeAlias, ".").concat(v.table1.groupSql, " = ").concat(v.table2.alias, ".").concat(v.table2.column);
308
- } else {
309
- joinCondition = "ON ".concat(v.table1.alias, ".").concat(v.table1.column, " = ").concat(v.table2.alias, ".").concat(v.table2.column);
310
- }
311
- return {
312
- alias: v.table2.alias,
313
- tableName: v.table2.name,
314
- datasourceId: v.table2.datasourceId || '',
315
- joinCondition: joinCondition,
316
- joinType: v.joinType,
317
- queryColumns: v.columns.filter(function (o) {
318
- return o.select;
319
- }).map(function (o) {
320
- return "".concat(v.table2.alias, ".").concat(o.name);
321
- })
322
- };
323
- });
324
- }
325
- if (customColumn && customColumn.customColumn.length) {
326
- obj.customColumns = customColumn.customColumn.map(function (v) {
327
- return {
328
- alias: v.name
329
- // formula: v.formula.replace(/\[.*?\]/g, (column: string): string => {
330
- // let str = column.substr(1, column.length - 2);
331
- // if (~str.indexOf('->')) {
332
- // let _str = str.replace(/ /g, '').split('->');
333
- // return `${_str[0]}.${_str[1]}`;
334
- // }
335
- // return str;
336
- // }),
337
- };
338
- });
339
- }
340
- if (filterData && filterData.filter.length) {
341
- obj.filters = 'WHERE ' + filterData.filter.map(function (v) {
342
- return filterToSql(v);
343
- }).join(' AND ');
344
- if (permissionTable) {
345
- obj.filters += " @{_DATA_I_PRIV_COND:".concat(permissionTable.table.alias, "}");
346
- }
347
- }
348
- if (summarize && (summarize.group.length || summarize.by.length)) {
349
- obj.groupBy = {
350
- calcColumns: [],
351
- groupColumns: []
352
- };
353
- var queryColumns = [];
354
- if (summarize.group.length) {
355
- obj.groupBy.calcColumns = summarize.group.map(function (v) {
356
- return v.sql;
357
- });
358
- queryColumns = _toConsumableArray(obj.groupBy.calcColumns);
359
- }
360
- if (summarize.by.length) {
361
- obj.groupBy.groupColumns = summarize.by.map(function (v) {
362
- queryColumns.push("".concat(v.sql));
363
- return "".concat(v.alias, ".").concat(v.realName || v.name);
364
- });
365
- }
366
- obj.queryColumns = queryColumns;
367
- if (!tableData) {
368
- obj.alias = summarize.alias;
369
- }
370
- }
371
- if (sortData && sortData.sort.length) {
372
- obj.orderInfos = "ORDER BY ".concat(sortData.sort.map(function (v) {
373
- return "".concat(v.sql, " ").concat(v.sort);
374
- }).join(', '));
375
- }
376
- if (rowLimit) {
377
- obj.limit = Number(rowLimit.limit);
378
- }
379
- if (permissionTable) {
380
- obj.privilegeTable = "@{_DATA_I_PRIV_COND:".concat(permissionTable.table.alias, "}");
381
- }
382
- return obj;
383
- };
384
- export var handleSqlStruct = function handleSqlStruct(list) {
385
- return _handleNesting(reverseData(_layeredData(list)));
386
- };
261
+ // const handleNesting = (data: LooseObject): ParamsStruct => {
262
+ // let hasInnerSql = Boolean(data.children);
263
+ // let obj: ParamsStruct = {
264
+ // hasInnerSql,
265
+ // innerSqlStruct: hasInnerSql ? handleNesting(data.children as LooseObject) : null,
266
+ // };
267
+ // let tableData: MetaData | undefined = data[TypeEnum.data];
268
+ // let joinData: MetaJoin[] = data[TypeEnum.joinData] || [];
269
+ // let permissionTable: MetaPermissionTable | undefined = data[TypeEnum.permissionTable];
270
+ // let customColumn: MetaCustom | undefined = data[TypeEnum.customColumn];
271
+ // let filterData: MetaFilter | undefined = data[TypeEnum.filter];
272
+ // let summarize: MetaSummarize | undefined = data[TypeEnum.summarize];
273
+ // let sortData: MetaSort | undefined = data[TypeEnum.sort];
274
+ // let rowLimit: MetaLimit | undefined = data[TypeEnum.rowLimit];
275
+ // if (tableData) {
276
+ // obj.alias = tableData.table.alias;
277
+ // obj.tableName = tableData.table.name;
278
+ // obj.datasourceId = tableData.table.datasourceId;
279
+ // if (!summarize || (!summarize.group.length && !summarize.by.length)) {
280
+ // obj.queryColumns = tableData.columns
281
+ // .filter((v) => v.select)
282
+ // .map((v) => `${tableData?.table?.alias}.${v.name}`);
283
+ // }
284
+ // } else {
285
+ // if (!summarize || (!summarize.group.length && !summarize.by.length)) {
286
+ // obj.alias = SummarizeAlias;
287
+ // }
288
+ // }
289
+ // if (joinData.length) {
290
+ // obj.joinTables = joinData
291
+ // .filter((v) => v.table2.name)
292
+ // .map((v) => {
293
+ // let joinCondition: string;
294
+ // if (v.table1.alias === SummarizeAlias) {
295
+ // joinCondition = `ON ${SummarizeAlias}.${v.table1.groupSql} = ${v.table2.alias}.${v.table2.column}`;
296
+ // } else {
297
+ // joinCondition = `ON ${v.table1.alias}.${v.table1.column} = ${v.table2.alias}.${v.table2.column}`;
298
+ // }
299
+ // return {
300
+ // alias: v.table2.alias,
301
+ // tableName: v.table2.name,
302
+ // datasourceId: v.table2.datasourceId || '',
303
+ // joinCondition,
304
+ // joinType: v.joinType,
305
+ // queryColumns: v.columns.filter((o) => o.select).map((o) => `${v.table2.alias}.${o.name}`),
306
+ // };
307
+ // });
308
+ // }
309
+ // if (customColumn && customColumn.customColumn.length) {
310
+ // obj.customColumns = customColumn.customColumn.map((v) => {
311
+ // return {
312
+ // alias: v.name,
313
+ // // formula: v.formula.replace(/\[.*?\]/g, (column: string): string => {
314
+ // // let str = column.substr(1, column.length - 2);
315
+ // // if (~str.indexOf('->')) {
316
+ // // let _str = str.replace(/ /g, '').split('->');
317
+ // // return `${_str[0]}.${_str[1]}`;
318
+ // // }
319
+ // // return str;
320
+ // // }),
321
+ // };
322
+ // });
323
+ // }
324
+ // if (filterData && filterData.filter.length) {
325
+ // obj.filters = 'WHERE ' + filterData.filter.map((v) => filterToSql(v)).join(' AND ');
326
+ // if (permissionTable) {
327
+ // obj.filters += ` @{_DATA_I_PRIV_COND:${permissionTable.table.alias}}`;
328
+ // }
329
+ // }
330
+ // if (summarize && (summarize.group.length || summarize.by.length)) {
331
+ // obj.groupBy = {
332
+ // calcColumns: [],
333
+ // groupColumns: [],
334
+ // };
335
+ // let queryColumns: string[] = [];
336
+ // if (summarize.group.length) {
337
+ // obj.groupBy.calcColumns = summarize.group.map((v) => {
338
+ // return v.sql;
339
+ // });
340
+ // queryColumns = [...obj.groupBy.calcColumns];
341
+ // }
342
+ // if (summarize.by.length) {
343
+ // obj.groupBy.groupColumns = summarize.by.map((v) => {
344
+ // queryColumns.push(`${v.sql}`);
345
+ // return `${v.alias}.${v.realName || v.name}`;
346
+ // });
347
+ // }
348
+ // obj.queryColumns = queryColumns;
349
+ // if (!tableData) {
350
+ // obj.alias = summarize.alias;
351
+ // }
352
+ // }
353
+ // if (sortData && sortData.sort.length) {
354
+ // obj.orderInfos = `ORDER BY ${sortData.sort
355
+ // .map((v: MetaSort_Item) => `${v.sql} ${v.sort}`)
356
+ // .join(', ')}`;
357
+ // }
358
+ // if (rowLimit) {
359
+ // obj.limit = Number(rowLimit.limit);
360
+ // }
361
+ // if (permissionTable) {
362
+ // obj.privilegeTable = `@{_DATA_I_PRIV_COND:${permissionTable.table.alias}}`;
363
+ // }
364
+ // return obj;
365
+ // };
366
+ // export const handleSqlStruct = (list: MetaListType[]) =>
367
+ // handleNesting(reverseData(layeredData(list)));
387
368
  // 压缩结构
388
369
  export var compressionStructure = function compressionStructure(data) {
389
370
  var _data = JSON.parse(JSON.stringify(data)).map(function (v) {
@@ -435,4 +416,78 @@ export var restoreStructure = function restoreStructure(data) {
435
416
  } catch (e) {
436
417
  return [];
437
418
  }
419
+ };
420
+ export var getTemItem = function getTemItem(type) {
421
+ var temItem;
422
+ // 字段
423
+ if (type === AtomsTypeEnum.FIELD) {
424
+ temItem = {
425
+ fieldName: '',
426
+ // 字段名
427
+ fieldNameZh: '',
428
+ // 字段中文名
429
+ fieldAlias: '',
430
+ // 别名
431
+ fieldUuid: '',
432
+ // uuid
433
+ fieldId: '',
434
+ // 字段id
435
+ // quotes?: string; // 字段展示的 不知道有没有用
436
+ tableName: '',
437
+ // 表名
438
+ tableNameZh: '',
439
+ tableId: '',
440
+ // 表名
441
+ tableAlias: '',
442
+ // 别名
443
+ tableUuid: '',
444
+ // 表唯一标识
445
+ datasourceName: '',
446
+ // 数据源名
447
+ datasourceId: '',
448
+ // 数据源id
449
+ type: AtomsTypeEnum.FIELD
450
+ };
451
+ }
452
+ // 表达式
453
+ else if (type === AtomsTypeEnum.EXPRESSION || type === AtomsTypeEnum.JOIN_DEFAULT) {
454
+ return {
455
+ lhs: [],
456
+ rhs: [],
457
+ condition: '',
458
+ quotes: '',
459
+ type: type
460
+ };
461
+ } else if (type === AtomsTypeEnum.EXISTS || type === AtomsTypeEnum.NOT_EXISTS) {
462
+ return {
463
+ quotes: '',
464
+ // 展示用户看的 组装的文字
465
+ notExists: [],
466
+ type: type
467
+ };
468
+ } else if (type === AtomsTypeEnum.UNKNOWN) {
469
+ return {
470
+ // quotes: '', // 展示用户看的 组装的文字
471
+ // notExists: [],
472
+ val: '',
473
+ type: type
474
+ };
475
+ } else if (type === AtomsTypeEnum.INPUT_NUMBER) {
476
+ return {
477
+ val: 0,
478
+ type: type
479
+ };
480
+ } else if (type === AtomsTypeEnum.INPUT_NUMBER_LIST || type === AtomsTypeEnum.INPUT_STRING_LIST) {
481
+ temItem = {
482
+ val: [],
483
+ type: type
484
+ };
485
+ } else {
486
+ // 其他
487
+ temItem = {
488
+ val: '',
489
+ type: type
490
+ };
491
+ }
492
+ return temItem;
438
493
  };