sea-chart 2.0.37 → 2.0.39
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.
- package/dist/api/index.js +17 -59
- package/dist/assets/css/sea-chart-d3-tooltip.css +0 -1
- package/dist/components/color-popover/color-rules-popover.js +4 -2
- package/dist/components/drill-down-settings/drill-down-fields-popover/index.js +5 -4
- package/dist/components/icon/index.js +9 -13
- package/dist/components/number-input/index.js +7 -13
- package/dist/components/popover/hide-column-popover/hide-column-popover-widgets/hide-column-item.js +7 -3
- package/dist/components/popover/hide-column-popover/hide-column-popover.css +5 -1
- package/dist/components/popover/hide-column-popover/hide-column-popover.js +2 -4
- package/dist/components/popover/sort-popover/sort-popover.js +6 -7
- package/dist/components/statistic-record-dialog/index.js +9 -8
- package/dist/components/tooltip/index.js +26 -8
- package/dist/editor/index.js +5 -1
- package/dist/locale/lang/de.js +1 -0
- package/dist/locale/lang/en.js +1 -0
- package/dist/locale/lang/es.js +1 -0
- package/dist/locale/lang/fr.js +1 -0
- package/dist/locale/lang/pt.js +1 -0
- package/dist/locale/lang/ru.js +1 -0
- package/dist/locale/lang/zh_CN.js +1 -0
- package/dist/model/funnel.js +2 -2
- package/dist/model/map-bubble.js +4 -0
- package/dist/services/map-json.js +3 -0
- package/dist/settings/advance-bar-settings/data-settings.js +1 -1
- package/dist/settings/advance-bar-settings/style-settings.js +4 -3
- package/dist/settings/bar-settings/data-settings.js +1 -1
- package/dist/settings/bar-settings/style-settings.js +2 -2
- package/dist/settings/basic-number-card/data-settings.js +3 -2
- package/dist/settings/combination-settings/data-settings.js +0 -1
- package/dist/settings/combination-settings/style-settings.js +2 -2
- package/dist/settings/dashboard-settings/data-settings.js +3 -2
- package/dist/settings/funnel-settings/components/funnel-layer-setting.js +7 -7
- package/dist/settings/index.js +8 -3
- package/dist/settings/table-element-settings/components/data-filter.js +24 -25
- package/dist/settings/table-element-settings/index.css +1 -31
- package/dist/settings/table-settings/data-settings.js +3 -2
- package/dist/settings/time-comparison-settings/style-settings.js +2 -2
- package/dist/settings/widgets/basic-summary/index.js +8 -7
- package/dist/settings/widgets/common-data-settings.js +7 -6
- package/dist/settings/widgets/data-filter/index.js +30 -22
- package/dist/settings/widgets/group-by.js +4 -3
- package/dist/settings/widgets/summary-settings.js +3 -2
- package/dist/settings/widgets/y-axis-group-settings.js +3 -2
- package/dist/utils/cell-format-utils.js +9 -7
- package/dist/utils/chart-utils/base-utils.js +194 -86
- package/dist/utils/chart-utils/index.js +5 -3
- package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +5 -5
- package/dist/utils/chart-utils/original-data-utils/card-calculator.js +8 -2
- package/dist/utils/chart-utils/original-data-utils/dashboard-calculator.js +12 -3
- package/dist/utils/chart-utils/original-data-utils/pivot-table-calculator.js +4 -1
- package/dist/utils/chart-utils/original-data-utils/scatter-calculator.js +1 -0
- package/dist/utils/chart-utils/original-data-utils/trend-calculator.js +24 -3
- package/dist/utils/chart-utils/sql-statistics-utils.js +182 -177
- package/dist/utils/column-utils.js +20 -7
- package/dist/utils/contexts.js +5 -2
- package/dist/utils/index.js +25 -4
- package/dist/utils/row-record-utils.js +100 -20
- package/dist/utils/sql/column-2-sql-column.js +10 -10
- package/dist/utils/trend-utils.js +15 -2
- package/dist/view/index.css +2 -8
- package/dist/view/index.js +14 -9
- package/dist/view/wrapper/area-group.js +15 -7
- package/dist/view/wrapper/bar-compare.js +18 -2
- package/dist/view/wrapper/bar-custom-stack.js +35 -9
- package/dist/view/wrapper/bar-group.js +55 -26
- package/dist/view/wrapper/bar-stack.js +2 -2
- package/dist/view/wrapper/basic-number-card.js +27 -3
- package/dist/view/wrapper/chart-component.js +43 -440
- package/dist/view/wrapper/completeness-group.js +104 -49
- package/dist/view/wrapper/dashboard.js +68 -18
- package/dist/view/wrapper/horizontal-bar-group.js +26 -6
- package/dist/view/wrapper/horizontal-bar-stack.js +2 -2
- package/dist/view/wrapper/line-group.js +8 -3
- package/dist/view/wrapper/map-world-bubble.js +1 -0
- package/dist/view/wrapper/map-world.js +1 -0
- package/dist/view/wrapper/pie.js +1 -1
- package/dist/view/wrapper/ring.js +1 -1
- package/dist/view/wrapper/scatter.js +8 -6
- package/dist/view/wrapper/table/two-dimension-table.js +3 -2
- package/dist/view/wrapper/table-element/components/records-header/index.js +0 -1
- package/dist/view/wrapper/table-element/components/resize-column-handle/resize-column-handle.js +3 -1
- package/dist/view/wrapper/table-element/index.js +16 -21
- package/dist/view/wrapper/trend.js +24 -1
- package/package.json +15 -12
|
@@ -24,7 +24,6 @@ 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);
|
|
28
27
|
const {
|
|
29
28
|
type,
|
|
30
29
|
data
|
|
@@ -38,7 +37,6 @@ SQLStatisticsUtils.getGroupLabelFromDB = async (cellValue, column, chart, isPivo
|
|
|
38
37
|
case _dtableUtils.CellType.CTIME:
|
|
39
38
|
case _dtableUtils.CellType.MTIME:
|
|
40
39
|
{
|
|
41
|
-
// handled in sql query result
|
|
42
40
|
return cellValue;
|
|
43
41
|
}
|
|
44
42
|
case _dtableUtils.CellType.NUMBER:
|
|
@@ -73,23 +71,23 @@ SQLStatisticsUtils.getGroupLabelFromDB = async (cellValue, column, chart, isPivo
|
|
|
73
71
|
return cellValue || null;
|
|
74
72
|
}
|
|
75
73
|
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
|
+
}
|
|
76
81
|
case _dtableUtils.CellType.LINK_FORMULA:
|
|
77
82
|
{
|
|
78
83
|
const {
|
|
79
|
-
array_type,
|
|
80
84
|
result_type
|
|
81
85
|
} = 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
|
-
|
|
89
86
|
// handles mutiple select
|
|
90
87
|
if (result_type === 'array') {
|
|
91
88
|
return cellValue;
|
|
92
89
|
}
|
|
90
|
+
const validValue = (0, _dtableUtils.getFormulaDisplayString)(cellValue, data) || [];
|
|
93
91
|
if (!validValue && validValue !== 0) {
|
|
94
92
|
return null;
|
|
95
93
|
}
|
|
@@ -732,7 +730,7 @@ SQLStatisticsUtils.basicChartSQLResult2JavaScript = async (chart, sqlRows, chart
|
|
|
732
730
|
}
|
|
733
731
|
}
|
|
734
732
|
_baseUtils.default.sortCharts(result, groupbyColumn, 'name');
|
|
735
|
-
_baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
|
|
733
|
+
await _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
|
|
736
734
|
_baseUtils.default.updateSummaryValuePrecision(result, summaryColumn, 'value');
|
|
737
735
|
if (_constants.SUPPORT_DATA_SORT_CHART_TYPES.includes(type) && sort_type) {
|
|
738
736
|
_baseUtils.default.sortChartData(result, sort_type);
|
|
@@ -854,7 +852,7 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
|
|
|
854
852
|
result = assembled;
|
|
855
853
|
}
|
|
856
854
|
_baseUtils.default.sortCharts(result, groupbyColumn, 'name');
|
|
857
|
-
_baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
|
|
855
|
+
await _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
|
|
858
856
|
_baseUtils.default.updateSummaryValuePrecision(result, summaryColumn, 'value');
|
|
859
857
|
return result;
|
|
860
858
|
};
|
|
@@ -891,6 +889,7 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
891
889
|
const comparedEndDate = new Date(x_axis_compared_date_range_end);
|
|
892
890
|
for (const item of sqlRows) {
|
|
893
891
|
let name = item[sqlGroupbyColumnKey];
|
|
892
|
+
if (!name) continue;
|
|
894
893
|
const label = await _SQLStatisticsUtils.getGroupLabelFromDB(name, groupbyColumn, chart.config);
|
|
895
894
|
if (x_axis_date_granularity === 'quarter') {
|
|
896
895
|
name = (0, _dateTranslate.convertQuarterToDate)(name);
|
|
@@ -906,30 +905,50 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
906
905
|
const currentValue = dateRangeResult.get(label);
|
|
907
906
|
if (!currentValue) {
|
|
908
907
|
if (isAdvanced) {
|
|
909
|
-
dateRangeResult.set(label,
|
|
908
|
+
dateRangeResult.set(label, {
|
|
909
|
+
value: [value],
|
|
910
|
+
date: name,
|
|
911
|
+
rows: [item]
|
|
912
|
+
});
|
|
910
913
|
} else {
|
|
911
|
-
dateRangeResult.set(label,
|
|
914
|
+
dateRangeResult.set(label, {
|
|
915
|
+
value,
|
|
916
|
+
date: name,
|
|
917
|
+
rows: [item]
|
|
918
|
+
});
|
|
912
919
|
}
|
|
913
920
|
} else {
|
|
914
921
|
if (isAdvanced) {
|
|
915
|
-
currentValue.push(value);
|
|
922
|
+
currentValue.value.push(value);
|
|
923
|
+
currentValue.rows.push(item);
|
|
916
924
|
} else {
|
|
917
|
-
|
|
925
|
+
currentValue.value = value + currentValue.value;
|
|
926
|
+
currentValue.rows.push(item);
|
|
918
927
|
}
|
|
919
928
|
}
|
|
920
929
|
} else if (name >= comparedStartDate && name <= comparedEndDate) {
|
|
921
930
|
const currentValue = dateComparedResult.get(label);
|
|
922
931
|
if (!currentValue) {
|
|
923
932
|
if (isAdvanced) {
|
|
924
|
-
dateComparedResult.set(label,
|
|
933
|
+
dateComparedResult.set(label, {
|
|
934
|
+
value: [value],
|
|
935
|
+
date: name,
|
|
936
|
+
rows: [item]
|
|
937
|
+
});
|
|
925
938
|
} else {
|
|
926
|
-
dateComparedResult.set(label,
|
|
939
|
+
dateComparedResult.set(label, {
|
|
940
|
+
value,
|
|
941
|
+
date: name,
|
|
942
|
+
rows: [item]
|
|
943
|
+
});
|
|
927
944
|
}
|
|
928
945
|
} else {
|
|
929
946
|
if (isAdvanced) {
|
|
930
|
-
|
|
947
|
+
currentValue.value.push(value);
|
|
948
|
+
currentValue.rows.push(item);
|
|
931
949
|
} else {
|
|
932
|
-
|
|
950
|
+
currentValue.value = value + currentValue.value;
|
|
951
|
+
currentValue.rows.push(item);
|
|
933
952
|
}
|
|
934
953
|
}
|
|
935
954
|
}
|
|
@@ -937,11 +956,23 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
937
956
|
let comparedResult = [];
|
|
938
957
|
let rangeResult = [];
|
|
939
958
|
const data = (summaryColumn === null || summaryColumn === void 0 ? void 0 : summaryColumn.data) || {};
|
|
940
|
-
|
|
941
|
-
|
|
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;
|
|
942
973
|
let formatted_value = value;
|
|
943
974
|
if (isAdvanced) {
|
|
944
|
-
value = (0, _columnUtils.getSummaryResult)(
|
|
975
|
+
value = (0, _columnUtils.getSummaryResult)(rawValue, y_axis_summary_method, data.precision);
|
|
945
976
|
formatted_value = (0, _columnUtils.getFormattedValue)(value, summaryColumn, y_axis_summary_method);
|
|
946
977
|
}
|
|
947
978
|
rangeResult.push({
|
|
@@ -949,19 +980,21 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
949
980
|
group_name: groupName1,
|
|
950
981
|
raw_name: item[0],
|
|
951
982
|
value,
|
|
983
|
+
rows: rows || [],
|
|
952
984
|
formatted_value
|
|
953
985
|
});
|
|
954
986
|
}
|
|
955
987
|
let index = 0;
|
|
956
|
-
for (let item of
|
|
988
|
+
for (let item of sortedDateComparedEntries) {
|
|
957
989
|
let dateRangeItem = rangeResult[index];
|
|
958
990
|
if (!dateRangeItem) {
|
|
959
991
|
break;
|
|
960
992
|
}
|
|
961
|
-
let value = item[1];
|
|
993
|
+
let value = item[1].value;
|
|
994
|
+
const rows = item[1].rows;
|
|
962
995
|
let formatted_value = value;
|
|
963
996
|
if (isAdvanced) {
|
|
964
|
-
value = (0, _columnUtils.getSummaryResult)(item[1], y_axis_summary_method, data.precision);
|
|
997
|
+
value = (0, _columnUtils.getSummaryResult)(item[1].value, y_axis_summary_method, data.precision);
|
|
965
998
|
formatted_value = (0, _columnUtils.getFormattedValue)(value, summaryColumn, y_axis_summary_method);
|
|
966
999
|
}
|
|
967
1000
|
const newItem = {
|
|
@@ -969,6 +1002,7 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
969
1002
|
group_name: groupName2,
|
|
970
1003
|
raw_name: item[0],
|
|
971
1004
|
value,
|
|
1005
|
+
rows,
|
|
972
1006
|
formatted_value
|
|
973
1007
|
};
|
|
974
1008
|
if (display_increase) {
|
|
@@ -987,6 +1021,8 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
987
1021
|
}
|
|
988
1022
|
_baseUtils.default.updateSummaryValuePrecision(comparedResult, summaryColumn, 'value');
|
|
989
1023
|
_baseUtils.default.updateSummaryValuePrecision(rangeResult, summaryColumn, 'value');
|
|
1024
|
+
_baseUtils.default.sortCharts(rangeResult, groupbyColumn, 'name');
|
|
1025
|
+
_baseUtils.default.sortCharts(comparedResult, groupbyColumn, 'name');
|
|
990
1026
|
return [...comparedResult, ...rangeResult];
|
|
991
1027
|
};
|
|
992
1028
|
SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
@@ -1190,7 +1226,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1190
1226
|
}
|
|
1191
1227
|
}
|
|
1192
1228
|
}
|
|
1193
|
-
_baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
|
|
1229
|
+
await _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
|
|
1194
1230
|
_baseUtils.default.sortCharts(result, groupbyColumn, 'name');
|
|
1195
1231
|
_baseUtils.default.updateSummaryValuePrecision(result, summaryColumnLeft, 'value_left');
|
|
1196
1232
|
_baseUtils.default.updateSummaryValuePrecision(result, summaryColumnRight, 'value_right');
|
|
@@ -1296,9 +1332,72 @@ SQLStatisticsUtils.groupingTwoDimensionChartSQLResult2JavaScript = async (chart,
|
|
|
1296
1332
|
}
|
|
1297
1333
|
}
|
|
1298
1334
|
}
|
|
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);
|
|
1299
1398
|
_baseUtils.default.sortCharts(result, groupbyColumn, 'name');
|
|
1300
|
-
_baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
|
|
1301
|
-
_baseUtils.default.updateTableViewList(result, columnGroupbyColumn, 'group_name', 'group_color', false, false);
|
|
1399
|
+
await _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
|
|
1400
|
+
await _baseUtils.default.updateTableViewList(result, columnGroupbyColumn, 'group_name', 'group_color', false, false);
|
|
1302
1401
|
_baseUtils.default.updateSummaryValuePrecision(result, summaryColumn, 'value');
|
|
1303
1402
|
return result;
|
|
1304
1403
|
};
|
|
@@ -1356,7 +1455,7 @@ SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, ch
|
|
|
1356
1455
|
}
|
|
1357
1456
|
}
|
|
1358
1457
|
_baseUtils.default.sortCharts(result, groupbyColumn, 'name');
|
|
1359
|
-
_baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
|
|
1458
|
+
await _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
|
|
1360
1459
|
const allSummaryColumns = [summaryColumn].concat(summaryColumnsWithMethod.map(item => item.column));
|
|
1361
1460
|
|
|
1362
1461
|
// format precision of enabled precision columns
|
|
@@ -1518,7 +1617,7 @@ SQLStatisticsUtils.trendMapChartSQLResult2JavaScript = (chart, sqlRows, chartSQL
|
|
|
1518
1617
|
const {
|
|
1519
1618
|
compareDate,
|
|
1520
1619
|
comparedDate
|
|
1521
|
-
} = (0, _trendUtils.getCompareDate)(date_granularity);
|
|
1620
|
+
} = (0, _trendUtils.getCompareDate)(date_granularity, 'app');
|
|
1522
1621
|
for (const item of sqlRows) {
|
|
1523
1622
|
if (!item[sqlGroupbyColumnKey]) continue;
|
|
1524
1623
|
const currentDate = item[sqlGroupbyColumnKey] + '';
|
|
@@ -1626,7 +1725,7 @@ SQLStatisticsUtils.sqlResult2JavaScript = async (chart, sqlRows, chartSQLMap, co
|
|
|
1626
1725
|
case _constants.CHART_TYPE.COMPLETENESS:
|
|
1627
1726
|
case _constants.CHART_TYPE.COMPLETENESS_GROUP:
|
|
1628
1727
|
{
|
|
1629
|
-
const result = _SQLStatisticsUtils.completenessSQlResult(chart, sqlRows, chartSQLMap, tables);
|
|
1728
|
+
const result = await _SQLStatisticsUtils.completenessSQlResult(chart, sqlRows, chartSQLMap, tables);
|
|
1630
1729
|
return {
|
|
1631
1730
|
result
|
|
1632
1731
|
};
|
|
@@ -1657,7 +1756,7 @@ SQLStatisticsUtils.sqlResult2JavaScript = async (chart, sqlRows, chartSQLMap, co
|
|
|
1657
1756
|
case _constants.CHART_TYPE.SCATTER:
|
|
1658
1757
|
{
|
|
1659
1758
|
return {
|
|
1660
|
-
result: _SQLStatisticsUtils.scatterSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1759
|
+
result: await _SQLStatisticsUtils.scatterSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1661
1760
|
};
|
|
1662
1761
|
}
|
|
1663
1762
|
case _constants.CHART_TYPE.BAR_CUSTOM:
|
|
@@ -1711,16 +1810,10 @@ SQLStatisticsUtils._get_completeness_name = (row, column) => {
|
|
|
1711
1810
|
}
|
|
1712
1811
|
return value;
|
|
1713
1812
|
};
|
|
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;
|
|
1813
|
+
SQLStatisticsUtils.completenessSQlResult = async (chart, sqlRows, chartSQLMap, tables) => {
|
|
1721
1814
|
const {
|
|
1722
1815
|
sqlColumns,
|
|
1723
|
-
|
|
1816
|
+
sqlColumnGroupbyColumnKey
|
|
1724
1817
|
} = chartSQLMap;
|
|
1725
1818
|
const {
|
|
1726
1819
|
name_column,
|
|
@@ -1728,134 +1821,23 @@ SQLStatisticsUtils.completenessSQlResult = (chart, sqlRows, chartSQLMap, tables)
|
|
|
1728
1821
|
target_column,
|
|
1729
1822
|
column_groupby_column
|
|
1730
1823
|
} = sqlColumns;
|
|
1731
|
-
const res = [];
|
|
1732
|
-
let summedSqlRows;
|
|
1733
1824
|
const nameColumnDataAsAnArray = (0, _baseUtils.findIfColumnDataIsArray)(name_column);
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
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
|
-
}
|
|
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
|
+
});
|
|
1841
1832
|
}
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
summedSqlRows.forEach(row => {
|
|
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) => {
|
|
1847
1837
|
const nameValue = row[name_column.key];
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
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
|
-
}
|
|
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');
|
|
1859
1841
|
let completedRate;
|
|
1860
1842
|
if (!targetValue && completedValue) {
|
|
1861
1843
|
completedRate = 100;
|
|
@@ -1873,7 +1855,8 @@ SQLStatisticsUtils.completenessSQlResult = (chart, sqlRows, chartSQLMap, tables)
|
|
|
1873
1855
|
group_name: 'completed',
|
|
1874
1856
|
groupby,
|
|
1875
1857
|
color: row.color || _constants.CHART_STYLE_COLORS[0],
|
|
1876
|
-
value: completedValue
|
|
1858
|
+
value: completedValue,
|
|
1859
|
+
rows: [originalSqlRows[index]]
|
|
1877
1860
|
});
|
|
1878
1861
|
res.push({
|
|
1879
1862
|
name: nameValue,
|
|
@@ -1882,7 +1865,8 @@ SQLStatisticsUtils.completenessSQlResult = (chart, sqlRows, chartSQLMap, tables)
|
|
|
1882
1865
|
value: Math.max(targetValue - completedValue, 0),
|
|
1883
1866
|
groupby,
|
|
1884
1867
|
color: '#bdbdbd',
|
|
1885
|
-
completedRate
|
|
1868
|
+
completedRate,
|
|
1869
|
+
rows: [originalSqlRows[index]]
|
|
1886
1870
|
});
|
|
1887
1871
|
});
|
|
1888
1872
|
|
|
@@ -1894,9 +1878,29 @@ SQLStatisticsUtils.completenessSQlResult = (chart, sqlRows, chartSQLMap, tables)
|
|
|
1894
1878
|
return 1;
|
|
1895
1879
|
}
|
|
1896
1880
|
});
|
|
1897
|
-
|
|
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;
|
|
1898
1902
|
};
|
|
1899
|
-
SQLStatisticsUtils.scatterSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
1903
|
+
SQLStatisticsUtils.scatterSQLResult2JavaScript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
1900
1904
|
const {
|
|
1901
1905
|
sqlXColumnKey,
|
|
1902
1906
|
sqlYColumnKey,
|
|
@@ -1910,13 +1914,13 @@ SQLStatisticsUtils.scatterSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, c
|
|
|
1910
1914
|
// format sql rows
|
|
1911
1915
|
const originalSqlRows = (0, _lodashEs.cloneDeep)(sqlRows);
|
|
1912
1916
|
const isScatter = true;
|
|
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);
|
|
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);
|
|
1916
1920
|
const res = [];
|
|
1917
1921
|
sqlRows.forEach((row, index) => {
|
|
1918
|
-
const xValue = row[sqlXColumnKey]
|
|
1919
|
-
const yValue = row[sqlYColumnKey]
|
|
1922
|
+
const xValue = row[sqlXColumnKey];
|
|
1923
|
+
const yValue = row[sqlYColumnKey];
|
|
1920
1924
|
const groupby = row[sqlColumnGroupbyColumnKey] ? '' + row[sqlColumnGroupbyColumnKey] : null;
|
|
1921
1925
|
const originalSqlRow = originalSqlRows[index];
|
|
1922
1926
|
const originalXValue = originalSqlRow[sqlXColumnKey];
|
|
@@ -1924,16 +1928,17 @@ SQLStatisticsUtils.scatterSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, c
|
|
|
1924
1928
|
const originalGroupby = originalSqlRow[sqlColumnGroupbyColumnKey];
|
|
1925
1929
|
res.push({
|
|
1926
1930
|
name: xValue,
|
|
1927
|
-
value: yValue,
|
|
1931
|
+
value: yValue !== null ? Number(yValue) : yValue,
|
|
1928
1932
|
groupby,
|
|
1933
|
+
rows: [originalSqlRow],
|
|
1929
1934
|
original_value: {
|
|
1930
|
-
rows: [originalSqlRow],
|
|
1931
1935
|
name: originalXValue,
|
|
1932
1936
|
value: originalYValue,
|
|
1933
1937
|
groupby: originalGroupby
|
|
1934
1938
|
}
|
|
1935
1939
|
});
|
|
1936
1940
|
});
|
|
1941
|
+
_baseUtils.default.sortCharts(res, groupbyColumn, 'name');
|
|
1937
1942
|
return res;
|
|
1938
1943
|
};
|
|
1939
1944
|
SQLStatisticsUtils.mapSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
@@ -8,7 +8,8 @@ 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.
|
|
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"));
|
|
12
13
|
var _dtableUtils = require("dtable-utils");
|
|
13
14
|
var _react = _interopRequireDefault(require("react"));
|
|
14
15
|
var _constants = require("../constants");
|
|
@@ -189,30 +190,42 @@ const isStatisticMirrorColumn = column => {
|
|
|
189
190
|
return _constants.MIRROR_COLUMN_LIST.includes(column.type);
|
|
190
191
|
};
|
|
191
192
|
exports.isStatisticMirrorColumn = isStatisticMirrorColumn;
|
|
192
|
-
const
|
|
193
|
+
const isDateFormulaColumn = column => {
|
|
193
194
|
if (column) {
|
|
194
195
|
const {
|
|
195
196
|
type,
|
|
196
197
|
data
|
|
197
198
|
} = column;
|
|
198
199
|
const {
|
|
199
|
-
array_type
|
|
200
|
+
array_type,
|
|
201
|
+
result_type
|
|
200
202
|
} = data || {};
|
|
201
|
-
|
|
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;
|
|
202
215
|
}
|
|
203
216
|
return false;
|
|
204
217
|
};
|
|
205
218
|
|
|
206
219
|
// get
|
|
207
|
-
exports.
|
|
220
|
+
exports.isDateColumn = isDateColumn;
|
|
208
221
|
function getColumnOptions(columns) {
|
|
209
222
|
return columns.map(column => {
|
|
210
223
|
return {
|
|
211
224
|
value: column,
|
|
212
225
|
label: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
213
226
|
className: "sea-chart-column-icon"
|
|
214
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
215
|
-
|
|
227
|
+
}, /*#__PURE__*/_react.default.createElement(_DTableColumnIcon2.default, {
|
|
228
|
+
column: column
|
|
216
229
|
})), /*#__PURE__*/_react.default.createElement("span", {
|
|
217
230
|
className: 'select-module select-module-name ml-0'
|
|
218
231
|
}, column.name))
|
package/dist/utils/contexts.js
CHANGED
|
@@ -4,8 +4,11 @@ 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.DepartmentsContext = void 0;
|
|
7
|
+
exports.settingsContext = exports.GlobalThemeContext = exports.FirstDayOfWeekContext = 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({});
|
|
11
|
+
const GlobalThemeContext = exports.GlobalThemeContext = /*#__PURE__*/_react.default.createContext({});
|
|
12
|
+
const FirstDayOfWeekContext = exports.FirstDayOfWeekContext = /*#__PURE__*/_react.default.createContext({
|
|
13
|
+
firstDayOfWeek: 'Sunday'
|
|
14
|
+
});
|