sea-chart 2.0.36 → 2.0.37

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 (84) hide show
  1. package/dist/api/index.js +59 -17
  2. package/dist/assets/css/sea-chart-d3-tooltip.css +1 -0
  3. package/dist/components/color-popover/color-rules-popover.js +2 -4
  4. package/dist/components/drill-down-settings/drill-down-fields-popover/index.js +4 -5
  5. package/dist/components/icon/index.js +13 -9
  6. package/dist/components/number-input/index.js +13 -7
  7. package/dist/components/popover/hide-column-popover/hide-column-popover-widgets/hide-column-item.js +3 -7
  8. package/dist/components/popover/hide-column-popover/hide-column-popover.css +1 -5
  9. package/dist/components/popover/hide-column-popover/hide-column-popover.js +4 -2
  10. package/dist/components/popover/sort-popover/sort-popover.js +7 -6
  11. package/dist/components/statistic-record-dialog/index.js +8 -9
  12. package/dist/components/tooltip/index.js +8 -26
  13. package/dist/editor/index.js +1 -5
  14. package/dist/locale/lang/de.js +0 -1
  15. package/dist/locale/lang/en.js +0 -1
  16. package/dist/locale/lang/es.js +0 -1
  17. package/dist/locale/lang/fr.js +0 -1
  18. package/dist/locale/lang/pt.js +0 -1
  19. package/dist/locale/lang/ru.js +0 -1
  20. package/dist/locale/lang/zh_CN.js +0 -1
  21. package/dist/model/funnel.js +2 -2
  22. package/dist/model/map-bubble.js +0 -4
  23. package/dist/services/map-json.js +0 -3
  24. package/dist/settings/advance-bar-settings/data-settings.js +1 -1
  25. package/dist/settings/advance-bar-settings/style-settings.js +3 -4
  26. package/dist/settings/bar-settings/data-settings.js +1 -1
  27. package/dist/settings/bar-settings/style-settings.js +2 -2
  28. package/dist/settings/basic-number-card/data-settings.js +2 -3
  29. package/dist/settings/combination-settings/data-settings.js +1 -0
  30. package/dist/settings/combination-settings/style-settings.js +2 -2
  31. package/dist/settings/dashboard-settings/data-settings.js +2 -3
  32. package/dist/settings/funnel-settings/components/funnel-layer-setting.js +7 -7
  33. package/dist/settings/index.js +3 -8
  34. package/dist/settings/table-element-settings/components/data-filter.js +25 -24
  35. package/dist/settings/table-element-settings/index.css +31 -1
  36. package/dist/settings/table-settings/data-settings.js +2 -3
  37. package/dist/settings/time-comparison-settings/style-settings.js +2 -2
  38. package/dist/settings/widgets/basic-summary/index.js +7 -8
  39. package/dist/settings/widgets/common-data-settings.js +6 -7
  40. package/dist/settings/widgets/data-filter/index.js +22 -30
  41. package/dist/settings/widgets/group-by.js +3 -4
  42. package/dist/settings/widgets/summary-settings.js +2 -3
  43. package/dist/settings/widgets/y-axis-group-settings.js +2 -3
  44. package/dist/utils/cell-format-utils.js +7 -9
  45. package/dist/utils/chart-utils/base-utils.js +86 -194
  46. package/dist/utils/chart-utils/index.js +3 -5
  47. package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +5 -5
  48. package/dist/utils/chart-utils/original-data-utils/card-calculator.js +2 -8
  49. package/dist/utils/chart-utils/original-data-utils/dashboard-calculator.js +3 -12
  50. package/dist/utils/chart-utils/original-data-utils/pivot-table-calculator.js +1 -4
  51. package/dist/utils/chart-utils/original-data-utils/scatter-calculator.js +0 -1
  52. package/dist/utils/chart-utils/original-data-utils/trend-calculator.js +3 -24
  53. package/dist/utils/chart-utils/sql-statistics-utils.js +177 -182
  54. package/dist/utils/column-utils.js +7 -20
  55. package/dist/utils/contexts.js +2 -5
  56. package/dist/utils/index.js +4 -25
  57. package/dist/utils/row-record-utils.js +20 -100
  58. package/dist/utils/sql/column-2-sql-column.js +10 -10
  59. package/dist/utils/trend-utils.js +2 -15
  60. package/dist/view/index.css +8 -2
  61. package/dist/view/index.js +9 -14
  62. package/dist/view/wrapper/area-group.js +7 -15
  63. package/dist/view/wrapper/bar-compare.js +2 -18
  64. package/dist/view/wrapper/bar-custom-stack.js +9 -35
  65. package/dist/view/wrapper/bar-group.js +26 -55
  66. package/dist/view/wrapper/bar-stack.js +2 -2
  67. package/dist/view/wrapper/basic-number-card.js +3 -27
  68. package/dist/view/wrapper/chart-component.js +440 -43
  69. package/dist/view/wrapper/completeness-group.js +49 -104
  70. package/dist/view/wrapper/dashboard.js +18 -68
  71. package/dist/view/wrapper/horizontal-bar-group.js +6 -26
  72. package/dist/view/wrapper/horizontal-bar-stack.js +2 -2
  73. package/dist/view/wrapper/line-group.js +3 -8
  74. package/dist/view/wrapper/map-world-bubble.js +0 -1
  75. package/dist/view/wrapper/map-world.js +0 -1
  76. package/dist/view/wrapper/pie.js +1 -1
  77. package/dist/view/wrapper/ring.js +1 -1
  78. package/dist/view/wrapper/scatter.js +6 -8
  79. package/dist/view/wrapper/table/two-dimension-table.js +2 -3
  80. package/dist/view/wrapper/table-element/components/records-header/index.js +1 -0
  81. package/dist/view/wrapper/table-element/components/resize-column-handle/resize-column-handle.js +1 -3
  82. package/dist/view/wrapper/table-element/index.js +21 -16
  83. package/dist/view/wrapper/trend.js +1 -24
  84. package/package.json +14 -17
@@ -24,6 +24,7 @@ class SQLStatisticsUtils {}
24
24
  _SQLStatisticsUtils = SQLStatisticsUtils;
25
25
  SQLStatisticsUtils.DATA_SOURCE = 'sql_statistics';
26
26
  SQLStatisticsUtils.getGroupLabelFromDB = async (cellValue, column, chart, isPivot) => {
27
+ const dateGranularity = _baseUtils.default.getDateGranularityByType(chart);
27
28
  const {
28
29
  type,
29
30
  data
@@ -37,6 +38,7 @@ SQLStatisticsUtils.getGroupLabelFromDB = async (cellValue, column, chart, isPivo
37
38
  case _dtableUtils.CellType.CTIME:
38
39
  case _dtableUtils.CellType.MTIME:
39
40
  {
41
+ // handled in sql query result
40
42
  return cellValue;
41
43
  }
42
44
  case _dtableUtils.CellType.NUMBER:
@@ -71,23 +73,23 @@ SQLStatisticsUtils.getGroupLabelFromDB = async (cellValue, column, chart, isPivo
71
73
  return cellValue || null;
72
74
  }
73
75
  case _dtableUtils.CellType.FORMULA:
74
- {
75
- if (Array.isArray(cellValue)) {
76
- const validValue = (0, _dtableUtils.getFormulaDisplayString)(cellValue, data) || [];
77
- return validValue;
78
- }
79
- return cellValue || null;
80
- }
81
76
  case _dtableUtils.CellType.LINK_FORMULA:
82
77
  {
83
78
  const {
79
+ array_type,
84
80
  result_type
85
81
  } = data || {};
82
+ const validValue = (0, _dtableUtils.getFormulaDisplayString)(cellValue, data) || [];
83
+ if (array_type === 'date' && (cellValue === null || cellValue === void 0 ? void 0 : cellValue.length) === 1) {
84
+ if (!dateGranularity) return validValue;
85
+ if (dateGranularity.toUpperCase() === 'QUARTER') return _dtableUtils.DateUtils.getDateByGranularity(validValue, 'QUARTAR');
86
+ return _dtableUtils.DateUtils.getDateByGranularity(validValue, dateGranularity);
87
+ }
88
+
86
89
  // handles mutiple select
87
90
  if (result_type === 'array') {
88
91
  return cellValue;
89
92
  }
90
- const validValue = (0, _dtableUtils.getFormulaDisplayString)(cellValue, data) || [];
91
93
  if (!validValue && validValue !== 0) {
92
94
  return null;
93
95
  }
@@ -730,7 +732,7 @@ SQLStatisticsUtils.basicChartSQLResult2JavaScript = async (chart, sqlRows, chart
730
732
  }
731
733
  }
732
734
  _baseUtils.default.sortCharts(result, groupbyColumn, 'name');
733
- await _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
735
+ _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
734
736
  _baseUtils.default.updateSummaryValuePrecision(result, summaryColumn, 'value');
735
737
  if (_constants.SUPPORT_DATA_SORT_CHART_TYPES.includes(type) && sort_type) {
736
738
  _baseUtils.default.sortChartData(result, sort_type);
@@ -852,7 +854,7 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
852
854
  result = assembled;
853
855
  }
854
856
  _baseUtils.default.sortCharts(result, groupbyColumn, 'name');
855
- await _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
857
+ _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
856
858
  _baseUtils.default.updateSummaryValuePrecision(result, summaryColumn, 'value');
857
859
  return result;
858
860
  };
@@ -889,7 +891,6 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
889
891
  const comparedEndDate = new Date(x_axis_compared_date_range_end);
890
892
  for (const item of sqlRows) {
891
893
  let name = item[sqlGroupbyColumnKey];
892
- if (!name) continue;
893
894
  const label = await _SQLStatisticsUtils.getGroupLabelFromDB(name, groupbyColumn, chart.config);
894
895
  if (x_axis_date_granularity === 'quarter') {
895
896
  name = (0, _dateTranslate.convertQuarterToDate)(name);
@@ -905,50 +906,30 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
905
906
  const currentValue = dateRangeResult.get(label);
906
907
  if (!currentValue) {
907
908
  if (isAdvanced) {
908
- dateRangeResult.set(label, {
909
- value: [value],
910
- date: name,
911
- rows: [item]
912
- });
909
+ dateRangeResult.set(label, [value]);
913
910
  } else {
914
- dateRangeResult.set(label, {
915
- value,
916
- date: name,
917
- rows: [item]
918
- });
911
+ dateRangeResult.set(label, value);
919
912
  }
920
913
  } else {
921
914
  if (isAdvanced) {
922
- currentValue.value.push(value);
923
- currentValue.rows.push(item);
915
+ currentValue.push(value);
924
916
  } else {
925
- currentValue.value = value + currentValue.value;
926
- currentValue.rows.push(item);
917
+ dateRangeResult.set(label, value + currentValue);
927
918
  }
928
919
  }
929
920
  } else if (name >= comparedStartDate && name <= comparedEndDate) {
930
921
  const currentValue = dateComparedResult.get(label);
931
922
  if (!currentValue) {
932
923
  if (isAdvanced) {
933
- dateComparedResult.set(label, {
934
- value: [value],
935
- date: name,
936
- rows: [item]
937
- });
924
+ dateComparedResult.set(label, [value]);
938
925
  } else {
939
- dateComparedResult.set(label, {
940
- value,
941
- date: name,
942
- rows: [item]
943
- });
926
+ dateComparedResult.set(label, value);
944
927
  }
945
928
  } else {
946
929
  if (isAdvanced) {
947
- currentValue.value.push(value);
948
- currentValue.rows.push(item);
930
+ dateComparedResult.push(value);
949
931
  } else {
950
- currentValue.value = value + currentValue.value;
951
- currentValue.rows.push(item);
932
+ dateComparedResult.set(label, value + currentValue);
952
933
  }
953
934
  }
954
935
  }
@@ -956,23 +937,11 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
956
937
  let comparedResult = [];
957
938
  let rangeResult = [];
958
939
  const data = (summaryColumn === null || summaryColumn === void 0 ? void 0 : summaryColumn.data) || {};
959
-
960
- // convert Map to array and sort by date
961
- const sortedDateRangeEntries = Array.from(dateRangeResult.entries()).sort((a, b) => {
962
- return a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0;
963
- });
964
- const sortedDateComparedEntries = Array.from(dateComparedResult.entries()).sort((a, b) => {
965
- return a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0;
966
- });
967
- for (let item of sortedDateRangeEntries) {
968
- const {
969
- value: rawValue,
970
- rows
971
- } = item[1] || {};
972
- let value = rawValue;
940
+ for (let item of dateRangeResult) {
941
+ let value = item[1];
973
942
  let formatted_value = value;
974
943
  if (isAdvanced) {
975
- value = (0, _columnUtils.getSummaryResult)(rawValue, y_axis_summary_method, data.precision);
944
+ value = (0, _columnUtils.getSummaryResult)(item[1], y_axis_summary_method, data.precision);
976
945
  formatted_value = (0, _columnUtils.getFormattedValue)(value, summaryColumn, y_axis_summary_method);
977
946
  }
978
947
  rangeResult.push({
@@ -980,21 +949,19 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
980
949
  group_name: groupName1,
981
950
  raw_name: item[0],
982
951
  value,
983
- rows: rows || [],
984
952
  formatted_value
985
953
  });
986
954
  }
987
955
  let index = 0;
988
- for (let item of sortedDateComparedEntries) {
956
+ for (let item of dateComparedResult) {
989
957
  let dateRangeItem = rangeResult[index];
990
958
  if (!dateRangeItem) {
991
959
  break;
992
960
  }
993
- let value = item[1].value;
994
- const rows = item[1].rows;
961
+ let value = item[1];
995
962
  let formatted_value = value;
996
963
  if (isAdvanced) {
997
- value = (0, _columnUtils.getSummaryResult)(item[1].value, y_axis_summary_method, data.precision);
964
+ value = (0, _columnUtils.getSummaryResult)(item[1], y_axis_summary_method, data.precision);
998
965
  formatted_value = (0, _columnUtils.getFormattedValue)(value, summaryColumn, y_axis_summary_method);
999
966
  }
1000
967
  const newItem = {
@@ -1002,7 +969,6 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
1002
969
  group_name: groupName2,
1003
970
  raw_name: item[0],
1004
971
  value,
1005
- rows,
1006
972
  formatted_value
1007
973
  };
1008
974
  if (display_increase) {
@@ -1021,8 +987,6 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
1021
987
  }
1022
988
  _baseUtils.default.updateSummaryValuePrecision(comparedResult, summaryColumn, 'value');
1023
989
  _baseUtils.default.updateSummaryValuePrecision(rangeResult, summaryColumn, 'value');
1024
- _baseUtils.default.sortCharts(rangeResult, groupbyColumn, 'name');
1025
- _baseUtils.default.sortCharts(comparedResult, groupbyColumn, 'name');
1026
990
  return [...comparedResult, ...rangeResult];
1027
991
  };
1028
992
  SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
@@ -1226,7 +1190,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
1226
1190
  }
1227
1191
  }
1228
1192
  }
1229
- await _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
1193
+ _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
1230
1194
  _baseUtils.default.sortCharts(result, groupbyColumn, 'name');
1231
1195
  _baseUtils.default.updateSummaryValuePrecision(result, summaryColumnLeft, 'value_left');
1232
1196
  _baseUtils.default.updateSummaryValuePrecision(result, summaryColumnRight, 'value_right');
@@ -1332,72 +1296,9 @@ SQLStatisticsUtils.groupingTwoDimensionChartSQLResult2JavaScript = async (chart,
1332
1296
  }
1333
1297
  }
1334
1298
  }
1335
-
1336
- // fill empty group name with value 0
1337
- const allGroupNames = new Set();
1338
- const nameGroupMap = new Map();
1339
- result.forEach(item => {
1340
- const {
1341
- name,
1342
- group_name: groupName
1343
- } = item;
1344
- allGroupNames.add(groupName);
1345
- if (!nameGroupMap.has(name)) {
1346
- nameGroupMap.set(name, new Set());
1347
- }
1348
- nameGroupMap.get(name).add(groupName);
1349
- });
1350
- const isEmptyGroupName = groupName => groupName === undefined || groupName === null || groupName === '';
1351
- const groupNameList = Array.from(allGroupNames).sort((a, b) => {
1352
- const aEmpty = isEmptyGroupName(a);
1353
- const bEmpty = isEmptyGroupName(b);
1354
- if (aEmpty && !bEmpty) return 1;
1355
- if (!aEmpty && bEmpty) return -1;
1356
- return "".concat(a !== null && a !== void 0 ? a : '').localeCompare("".concat(b !== null && b !== void 0 ? b : ''));
1357
- });
1358
- nameGroupMap.forEach((groupSet, name) => {
1359
- groupNameList.forEach(groupName => {
1360
- if (!groupSet.has(groupName)) {
1361
- result.push({
1362
- name,
1363
- rows: [],
1364
- group_name: groupName,
1365
- value: 0
1366
- });
1367
- }
1368
- });
1369
- });
1370
-
1371
- // ensure each name keeps original order while its group_name entries follow the normalized group order
1372
- const groupOrder = new Map(groupNameList.map((groupName, index) => [groupName, index]));
1373
- const nameOrder = [];
1374
- const seenNames = new Set();
1375
- const nameBuckets = new Map();
1376
- result.forEach(item => {
1377
- if (!seenNames.has(item.name)) {
1378
- seenNames.add(item.name);
1379
- nameOrder.push(item.name);
1380
- }
1381
- if (!nameBuckets.has(item.name)) {
1382
- nameBuckets.set(item.name, []);
1383
- }
1384
- nameBuckets.get(item.name).push(item);
1385
- });
1386
- const orderedResult = [];
1387
- nameOrder.forEach(name => {
1388
- const items = nameBuckets.get(name).sort((a, b) => {
1389
- var _a$group_name, _b$group_name;
1390
- const aOrder = groupOrder.has(a.group_name) ? groupOrder.get(a.group_name) : Number.MAX_SAFE_INTEGER;
1391
- const bOrder = groupOrder.has(b.group_name) ? groupOrder.get(b.group_name) : Number.MAX_SAFE_INTEGER;
1392
- if (aOrder !== bOrder) return aOrder - bOrder;
1393
- return "".concat((_a$group_name = a.group_name) !== null && _a$group_name !== void 0 ? _a$group_name : '').localeCompare("".concat((_b$group_name = b.group_name) !== null && _b$group_name !== void 0 ? _b$group_name : ''));
1394
- });
1395
- orderedResult.push(...items);
1396
- });
1397
- result.splice(0, result.length, ...orderedResult);
1398
1299
  _baseUtils.default.sortCharts(result, groupbyColumn, 'name');
1399
- await _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
1400
- await _baseUtils.default.updateTableViewList(result, columnGroupbyColumn, 'group_name', 'group_color', false, false);
1300
+ _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
1301
+ _baseUtils.default.updateTableViewList(result, columnGroupbyColumn, 'group_name', 'group_color', false, false);
1401
1302
  _baseUtils.default.updateSummaryValuePrecision(result, summaryColumn, 'value');
1402
1303
  return result;
1403
1304
  };
@@ -1455,7 +1356,7 @@ SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, ch
1455
1356
  }
1456
1357
  }
1457
1358
  _baseUtils.default.sortCharts(result, groupbyColumn, 'name');
1458
- await _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
1359
+ _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
1459
1360
  const allSummaryColumns = [summaryColumn].concat(summaryColumnsWithMethod.map(item => item.column));
1460
1361
 
1461
1362
  // format precision of enabled precision columns
@@ -1617,7 +1518,7 @@ SQLStatisticsUtils.trendMapChartSQLResult2JavaScript = (chart, sqlRows, chartSQL
1617
1518
  const {
1618
1519
  compareDate,
1619
1520
  comparedDate
1620
- } = (0, _trendUtils.getCompareDate)(date_granularity, 'app');
1521
+ } = (0, _trendUtils.getCompareDate)(date_granularity);
1621
1522
  for (const item of sqlRows) {
1622
1523
  if (!item[sqlGroupbyColumnKey]) continue;
1623
1524
  const currentDate = item[sqlGroupbyColumnKey] + '';
@@ -1725,7 +1626,7 @@ SQLStatisticsUtils.sqlResult2JavaScript = async (chart, sqlRows, chartSQLMap, co
1725
1626
  case _constants.CHART_TYPE.COMPLETENESS:
1726
1627
  case _constants.CHART_TYPE.COMPLETENESS_GROUP:
1727
1628
  {
1728
- const result = await _SQLStatisticsUtils.completenessSQlResult(chart, sqlRows, chartSQLMap, tables);
1629
+ const result = _SQLStatisticsUtils.completenessSQlResult(chart, sqlRows, chartSQLMap, tables);
1729
1630
  return {
1730
1631
  result
1731
1632
  };
@@ -1756,7 +1657,7 @@ SQLStatisticsUtils.sqlResult2JavaScript = async (chart, sqlRows, chartSQLMap, co
1756
1657
  case _constants.CHART_TYPE.SCATTER:
1757
1658
  {
1758
1659
  return {
1759
- result: await _SQLStatisticsUtils.scatterSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
1660
+ result: _SQLStatisticsUtils.scatterSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
1760
1661
  };
1761
1662
  }
1762
1663
  case _constants.CHART_TYPE.BAR_CUSTOM:
@@ -1810,10 +1711,16 @@ SQLStatisticsUtils._get_completeness_name = (row, column) => {
1810
1711
  }
1811
1712
  return value;
1812
1713
  };
1813
- SQLStatisticsUtils.completenessSQlResult = async (chart, sqlRows, chartSQLMap, tables) => {
1714
+ SQLStatisticsUtils.completenessSQlResult = (chart, sqlRows, chartSQLMap, tables) => {
1715
+ const {
1716
+ config: {
1717
+ type
1718
+ }
1719
+ } = chart;
1720
+ const isGroup = type === _constants.CHART_TYPE.COMPLETENESS_GROUP;
1814
1721
  const {
1815
1722
  sqlColumns,
1816
- sqlColumnGroupbyColumnKey
1723
+ sqlColumnGroupByColumnKey
1817
1724
  } = chartSQLMap;
1818
1725
  const {
1819
1726
  name_column,
@@ -1821,23 +1728,134 @@ SQLStatisticsUtils.completenessSQlResult = async (chart, sqlRows, chartSQLMap, t
1821
1728
  target_column,
1822
1729
  column_groupby_column
1823
1730
  } = sqlColumns;
1731
+ const res = [];
1732
+ let summedSqlRows;
1824
1733
  const nameColumnDataAsAnArray = (0, _baseUtils.findIfColumnDataIsArray)(name_column);
1825
- // group by name_column, so it can only have one value
1826
- let originalSqlRows = (0, _lodashEs.cloneDeep)(sqlRows);
1827
- if (nameColumnDataAsAnArray) {
1828
- sqlRows.forEach(row => {
1829
- var _row$name_column$key;
1830
- row[name_column.key] = (_row$name_column$key = row[name_column.key]) === null || _row$name_column$key === void 0 ? void 0 : _row$name_column$key[0];
1831
- });
1734
+ if (!isGroup) {
1735
+ if (nameColumnDataAsAnArray) {
1736
+ const sumSqlRows = sqlRows.reduce((acc, row) => {
1737
+ const names = row[name_column.key];
1738
+ if (!names) {
1739
+ row[name_column.key] = _intl.default.get('Empty');
1740
+ acc[_intl.default.get('Empty')] = row;
1741
+ return acc;
1742
+ }
1743
+ names.forEach(name => {
1744
+ if (!acc[name]) {
1745
+ row[name_column.key] = name;
1746
+ acc[name] = row;
1747
+ } else {
1748
+ const accRow = acc[name];
1749
+ Object.keys(row).forEach(key => {
1750
+ if (key === completed_column.key || key === target_column.key) {
1751
+ // in case of null
1752
+ if (!row[key]) {
1753
+ row[key] = 0;
1754
+ }
1755
+ if (!accRow[key]) {
1756
+ accRow[key] = 0;
1757
+ }
1758
+ accRow[key] = accRow[key] + row[key];
1759
+ }
1760
+ });
1761
+ }
1762
+ });
1763
+ return acc;
1764
+ }, {});
1765
+ summedSqlRows = Object.values(sumSqlRows);
1766
+ } else {
1767
+ const sumSqlRows = sqlRows.reduce((acc, row) => {
1768
+ const nameValue = row[name_column.key];
1769
+ if (!nameValue) {
1770
+ row[name_column.key] = _intl.default.get('Empty');
1771
+ acc[_intl.default.get('Empty')] = row;
1772
+ return acc;
1773
+ }
1774
+ if (!acc[nameValue]) {
1775
+ acc[nameValue] = row;
1776
+ } else {
1777
+ const accRow = acc[nameValue];
1778
+ Object.keys(row).forEach(key => {
1779
+ if (key === completed_column.key || key === target_column.key) {
1780
+ accRow[key] = accRow[key] + row[key];
1781
+ }
1782
+ });
1783
+ }
1784
+ return acc;
1785
+ }, {});
1786
+ summedSqlRows = Object.values(sumSqlRows);
1787
+ }
1788
+ } else {
1789
+ if (nameColumnDataAsAnArray) {
1790
+ const sumSqlRows = sqlRows.reduce((acc, row) => {
1791
+ const groupby = row[sqlColumnGroupByColumnKey];
1792
+ const names = row[name_column.key];
1793
+ if (!names) {
1794
+ const key = "empty_".concat(groupby);
1795
+ row[name_column.key] = _intl.default.get('Empty');
1796
+ acc[key] = row;
1797
+ return acc;
1798
+ }
1799
+ names.forEach(name => {
1800
+ const key = "".concat(name, "_").concat(groupby);
1801
+ if (!acc[key]) {
1802
+ row[name_column.key] = name;
1803
+ acc[key] = row;
1804
+ } else {
1805
+ const accRow = acc[key];
1806
+ Object.keys(row).forEach(k => {
1807
+ if (key === completed_column.key || key === target_column.key) {
1808
+ accRow[key] = accRow[key] + row[key];
1809
+ }
1810
+ });
1811
+ }
1812
+ });
1813
+ return acc;
1814
+ }, {});
1815
+ summedSqlRows = Object.values(sumSqlRows);
1816
+ } else {
1817
+ const sumSqlRows = sqlRows.reduce((acc, row) => {
1818
+ const nameValue = row[name_column.key];
1819
+ const groupby = row[sqlColumnGroupByColumnKey];
1820
+ if (!nameValue) {
1821
+ const key = "empty_".concat(groupby);
1822
+ row[name_column.key] = _intl.default.get('Empty');
1823
+ acc[key] = row;
1824
+ return acc;
1825
+ }
1826
+ const key = "".concat(nameValue, "_").concat(groupby);
1827
+ if (!acc[key]) {
1828
+ acc[key] = row;
1829
+ } else {
1830
+ const accRow = acc[key];
1831
+ Object.keys(row).forEach(key => {
1832
+ if (key === completed_column.key || key === target_column.key) {
1833
+ accRow[key] = accRow[key] + row[key];
1834
+ }
1835
+ });
1836
+ }
1837
+ return acc;
1838
+ }, {});
1839
+ summedSqlRows = Object.values(sumSqlRows);
1840
+ }
1832
1841
  }
1833
- await _baseUtils.default.updateTableViewList(sqlRows, name_column, name_column.key, 'color', false, true);
1834
- if (sqlColumnGroupbyColumnKey) await _baseUtils.default.updateTableViewList(sqlRows, column_groupby_column, sqlColumnGroupbyColumnKey, 'color', false, false);
1835
- const res = [];
1836
- sqlRows.forEach((row, index) => {
1842
+
1843
+ // format the fetched value
1844
+ _baseUtils.default.updateTableViewList(sqlRows, name_column, name_column.key, 'color', false, true);
1845
+ if (sqlColumnGroupByColumnKey) _baseUtils.default.updateTableViewList(sqlRows, column_groupby_column, sqlColumnGroupByColumnKey, 'color', false, false);
1846
+ summedSqlRows.forEach(row => {
1837
1847
  const nameValue = row[name_column.key];
1838
- const targetValue = row["SUM(".concat(target_column.name, ")")];
1839
- const completedValue = row["SUM(".concat(completed_column.name, ")")];
1840
- const groupby = row[sqlColumnGroupbyColumnKey] || _intl.default.get('Empty');
1848
+ let targetValue;
1849
+ let completedValue;
1850
+ let groupby;
1851
+ if (sqlColumnGroupByColumnKey) {
1852
+ targetValue = row["SUM(".concat(target_column.name, ")")];
1853
+ completedValue = row["SUM(".concat(completed_column.name, ")")];
1854
+ groupby = row[sqlColumnGroupByColumnKey] || _intl.default.get('Empty');
1855
+ } else {
1856
+ completedValue = _SQLStatisticsUtils._get_completeness_name(row, completed_column);
1857
+ targetValue = _SQLStatisticsUtils._get_completeness_name(row, target_column);
1858
+ }
1841
1859
  let completedRate;
1842
1860
  if (!targetValue && completedValue) {
1843
1861
  completedRate = 100;
@@ -1855,8 +1873,7 @@ SQLStatisticsUtils.completenessSQlResult = async (chart, sqlRows, chartSQLMap, t
1855
1873
  group_name: 'completed',
1856
1874
  groupby,
1857
1875
  color: row.color || _constants.CHART_STYLE_COLORS[0],
1858
- value: completedValue,
1859
- rows: [originalSqlRows[index]]
1876
+ value: completedValue
1860
1877
  });
1861
1878
  res.push({
1862
1879
  name: nameValue,
@@ -1865,8 +1882,7 @@ SQLStatisticsUtils.completenessSQlResult = async (chart, sqlRows, chartSQLMap, t
1865
1882
  value: Math.max(targetValue - completedValue, 0),
1866
1883
  groupby,
1867
1884
  color: '#bdbdbd',
1868
- completedRate,
1869
- rows: [originalSqlRows[index]]
1885
+ completedRate
1870
1886
  });
1871
1887
  });
1872
1888
 
@@ -1878,29 +1894,9 @@ SQLStatisticsUtils.completenessSQlResult = async (chart, sqlRows, chartSQLMap, t
1878
1894
  return 1;
1879
1895
  }
1880
1896
  });
1881
-
1882
- // deduplicate by (name, group_name)
1883
- const deduplicatedRes = [];
1884
- const keyMap = {};
1885
- res.forEach(item => {
1886
- const key = "".concat(item.name, "_").concat(item.group_name);
1887
- if (!keyMap[key]) {
1888
- keyMap[key] = item;
1889
- deduplicatedRes.push(item);
1890
- } else {
1891
- const existingItem = keyMap[key];
1892
- existingItem.value = (existingItem.value || 0) + (item.value || 0);
1893
- if (item.rows) {
1894
- existingItem.rows = (existingItem.rows || []).concat(item.rows);
1895
- }
1896
- if (item.group_name === 'rest' && item.completedRate !== undefined) {
1897
- existingItem.completedRate = item.completedRate;
1898
- }
1899
- }
1900
- });
1901
- return deduplicatedRes;
1897
+ return res;
1902
1898
  };
1903
- SQLStatisticsUtils.scatterSQLResult2JavaScript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
1899
+ SQLStatisticsUtils.scatterSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, columnMap, tables) => {
1904
1900
  const {
1905
1901
  sqlXColumnKey,
1906
1902
  sqlYColumnKey,
@@ -1914,13 +1910,13 @@ SQLStatisticsUtils.scatterSQLResult2JavaScript = async (chart, sqlRows, chartSQL
1914
1910
  // format sql rows
1915
1911
  const originalSqlRows = (0, _lodashEs.cloneDeep)(sqlRows);
1916
1912
  const isScatter = true;
1917
- await _baseUtils.default.updateTableViewList(sqlRows, groupbyColumn, groupbyColumn.key, 'color', isScatter, true);
1918
- await _baseUtils.default.updateTableViewList(sqlRows, summaryColumn, summaryColumn.key, 'color', isScatter, true);
1919
- if (sqlColumnGroupbyColumnKey) await _baseUtils.default.updateTableViewList(sqlRows, columnGroupbyColumn, sqlColumnGroupbyColumnKey, 'color', isScatter, false);
1913
+ _baseUtils.default.updateTableViewList(sqlRows, groupbyColumn, groupbyColumn.key, 'color', isScatter, true);
1914
+ _baseUtils.default.updateTableViewList(sqlRows, summaryColumn, summaryColumn.key, 'color', isScatter, true);
1915
+ if (sqlColumnGroupbyColumnKey) _baseUtils.default.updateTableViewList(sqlRows, columnGroupbyColumn, sqlColumnGroupbyColumnKey, 'color', isScatter, false);
1920
1916
  const res = [];
1921
1917
  sqlRows.forEach((row, index) => {
1922
- const xValue = row[sqlXColumnKey];
1923
- const yValue = row[sqlYColumnKey];
1918
+ const xValue = row[sqlXColumnKey] ? '' + row[sqlXColumnKey] : _intl.default.get('Empty');
1919
+ const yValue = row[sqlYColumnKey] ? '' + row[sqlYColumnKey] : _intl.default.get('Empty');
1924
1920
  const groupby = row[sqlColumnGroupbyColumnKey] ? '' + row[sqlColumnGroupbyColumnKey] : null;
1925
1921
  const originalSqlRow = originalSqlRows[index];
1926
1922
  const originalXValue = originalSqlRow[sqlXColumnKey];
@@ -1928,17 +1924,16 @@ SQLStatisticsUtils.scatterSQLResult2JavaScript = async (chart, sqlRows, chartSQL
1928
1924
  const originalGroupby = originalSqlRow[sqlColumnGroupbyColumnKey];
1929
1925
  res.push({
1930
1926
  name: xValue,
1931
- value: yValue !== null ? Number(yValue) : yValue,
1927
+ value: yValue,
1932
1928
  groupby,
1933
- rows: [originalSqlRow],
1934
1929
  original_value: {
1930
+ rows: [originalSqlRow],
1935
1931
  name: originalXValue,
1936
1932
  value: originalYValue,
1937
1933
  groupby: originalGroupby
1938
1934
  }
1939
1935
  });
1940
1936
  });
1941
- _baseUtils.default.sortCharts(res, groupbyColumn, 'name');
1942
1937
  return res;
1943
1938
  };
1944
1939
  SQLStatisticsUtils.mapSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, columnMap, tables) => {
@@ -8,8 +8,7 @@ exports.getColumnByKey = exports.getColorFromSingleSelectColumn = exports.format
8
8
  exports.getColumnOptions = getColumnOptions;
9
9
  exports.getFormattedValue = exports.getDateColumnFormat = void 0;
10
10
  exports.getSelectColumnOptions = getSelectColumnOptions;
11
- exports.sortDataByGroupSum = exports.isWorldMapColumn = exports.isStatisticWorldMapColumn = exports.isStatisticMirrorColumn = exports.isStatisticMapColumn = exports.isMapColumn = exports.isDateFormulaColumn = exports.isDateColumn = exports.isCheckboxColumn = exports.getSummaryResult = exports.getSqlGroup = void 0;
12
- var _DTableColumnIcon2 = _interopRequireDefault(require("dtable-ui-component/lib/DTableColumnIcon"));
11
+ exports.sortDataByGroupSum = exports.islinkDateFormula = exports.isWorldMapColumn = exports.isStatisticWorldMapColumn = exports.isStatisticMirrorColumn = exports.isStatisticMapColumn = exports.isMapColumn = exports.isCheckboxColumn = exports.getSummaryResult = exports.getSqlGroup = void 0;
13
12
  var _dtableUtils = require("dtable-utils");
14
13
  var _react = _interopRequireDefault(require("react"));
15
14
  var _constants = require("../constants");
@@ -190,42 +189,30 @@ const isStatisticMirrorColumn = column => {
190
189
  return _constants.MIRROR_COLUMN_LIST.includes(column.type);
191
190
  };
192
191
  exports.isStatisticMirrorColumn = isStatisticMirrorColumn;
193
- const isDateFormulaColumn = column => {
192
+ const islinkDateFormula = column => {
194
193
  if (column) {
195
194
  const {
196
195
  type,
197
196
  data
198
197
  } = column;
199
198
  const {
200
- array_type,
201
- result_type
199
+ array_type
202
200
  } = data || {};
203
- // formula or link formula
204
- if (type === 'link-formula' && array_type === 'date' || type === 'formula' && result_type === _dtableUtils.FORMULA_RESULT_TYPE.DATE) return true;
205
- }
206
- return false;
207
- };
208
- exports.isDateFormulaColumn = isDateFormulaColumn;
209
- const isDateColumn = column => {
210
- if (column) {
211
- const {
212
- type
213
- } = column;
214
- return type === _dtableUtils.CellType.CTIME || type === _dtableUtils.CellType.MTIME || type === _dtableUtils.CellType.DATE;
201
+ if (type === 'link-formula' && array_type === 'date') return true;
215
202
  }
216
203
  return false;
217
204
  };
218
205
 
219
206
  // get
220
- exports.isDateColumn = isDateColumn;
207
+ exports.islinkDateFormula = islinkDateFormula;
221
208
  function getColumnOptions(columns) {
222
209
  return columns.map(column => {
223
210
  return {
224
211
  value: column,
225
212
  label: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
226
213
  className: "sea-chart-column-icon"
227
- }, /*#__PURE__*/_react.default.createElement(_DTableColumnIcon2.default, {
228
- column: column
214
+ }, /*#__PURE__*/_react.default.createElement("i", {
215
+ className: _dtableUtils.COLUMNS_ICON_CONFIG[column.type]
229
216
  })), /*#__PURE__*/_react.default.createElement("span", {
230
217
  className: 'select-module select-module-name ml-0'
231
218
  }, column.name))
@@ -4,11 +4,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.settingsContext = exports.GlobalThemeContext = exports.FirstDayOfWeekContext = exports.DepartmentsContext = void 0;
7
+ exports.settingsContext = exports.GlobalThemeContext = exports.DepartmentsContext = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  const settingsContext = exports.settingsContext = /*#__PURE__*/_react.default.createContext('');
10
10
  const DepartmentsContext = exports.DepartmentsContext = /*#__PURE__*/_react.default.createContext([]);
11
- const GlobalThemeContext = exports.GlobalThemeContext = /*#__PURE__*/_react.default.createContext({});
12
- const FirstDayOfWeekContext = exports.FirstDayOfWeekContext = /*#__PURE__*/_react.default.createContext({
13
- firstDayOfWeek: 'Sunday'
14
- });
11
+ const GlobalThemeContext = exports.GlobalThemeContext = /*#__PURE__*/_react.default.createContext({});