sea-chart 2.0.43 → 2.0.44
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 +4 -11
- package/dist/components/cell-factory/FormatterConfig.js +55 -62
- package/dist/components/cell-factory/SimpleCellFormatter.js +4 -11
- package/dist/components/cell-factory/SingleSelectOption.js +11 -18
- package/dist/components/cell-factory/cell-editor-factory.js +5 -12
- package/dist/components/cell-factory/cell-formatter-factory.js +4 -11
- package/dist/components/cell-factory/link-content.js +27 -35
- package/dist/components/chart-color-selector/color-selector.js +11 -18
- package/dist/components/collaborator/index.js +7 -14
- package/dist/components/color-picker/index.js +11 -18
- package/dist/components/color-popover/color-rules/color-rule.js +25 -33
- package/dist/components/color-popover/color-rules/index.js +6 -14
- package/dist/components/color-popover/color-rules/rule-filters/filter.js +27 -34
- package/dist/components/color-popover/color-rules/rule-filters/index.js +17 -25
- package/dist/components/color-popover/color-rules/rule-filters/number-input.js +10 -18
- package/dist/components/color-popover/color-rules-popover.js +26 -34
- package/dist/components/color-popover/color-selector-popover.js +10 -18
- package/dist/components/color-setting/color-group-selector.js +12 -20
- package/dist/components/common-add-tool/index.js +6 -13
- package/dist/components/data-process-setter/data-setting-header.js +7 -14
- package/dist/components/data-process-setter/hide-column-setter.js +12 -19
- package/dist/components/data-process-setter/index.js +4 -27
- package/dist/components/data-process-setter/sort-setter.js +16 -24
- package/dist/components/draggable/Draggable.js +7 -13
- package/dist/components/drill-down-settings/drill-down-fields-popover/index.js +42 -50
- package/dist/components/drill-down-settings/drill-down-fields-settings/index.js +10 -18
- package/dist/components/drill-down-settings/index.js +11 -18
- package/dist/components/dtable-popover/index.js +13 -20
- package/dist/components/dtable-search-input/index.js +13 -21
- package/dist/components/font-settings/index.js +14 -22
- package/dist/components/goal-line-setting/goal-setting-item.js +6 -14
- package/dist/components/goal-line-setting/index.js +12 -19
- package/dist/components/highlighter/highlighter.js +7 -14
- package/dist/components/icon/index.js +4 -11
- package/dist/components/index.js +7 -48
- package/dist/components/loading/index.js +6 -13
- package/dist/components/number-input/index.js +4 -11
- package/dist/components/pixel-editor/index.js +15 -23
- package/dist/components/popover/hide-column-popover/hide-column-popover-widgets/hide-column-item.js +8 -15
- package/dist/components/popover/hide-column-popover/hide-column-popover.js +25 -33
- package/dist/components/popover/sort-popover/sort-popover-widgets/sort-utils.js +9 -18
- package/dist/components/popover/sort-popover/sort-popover.js +54 -64
- package/dist/components/resize-handle/ResizeHandle.js +6 -13
- package/dist/components/row-card/row-card-header-cell.js +15 -22
- package/dist/components/row-card/row-card-header.js +14 -21
- package/dist/components/row-card/row-card-item.js +33 -41
- package/dist/components/row-card/row-card.js +15 -23
- package/dist/components/statistic-record-dialog/index.js +56 -64
- package/dist/components/tooltip/index.js +21 -21
- package/dist/components/types-dialog/index.js +56 -64
- package/dist/components/types-dialog/use-force-update.js +4 -10
- package/dist/constants/color-rules.js +8 -14
- package/dist/constants/common-constants.js +8 -14
- package/dist/constants/error.js +2 -8
- package/dist/constants/geolocation.js +9 -15
- package/dist/constants/index.js +149 -273
- package/dist/constants/key-codes.js +0 -2
- package/dist/constants/model.js +3 -9
- package/dist/constants/regions.js +3 -8
- package/dist/constants/style.js +6 -12
- package/dist/constants/table.js +1 -7
- package/dist/constants/type-image.js +33 -39
- package/dist/constants/type.js +3 -9
- package/dist/context.js +20 -24
- package/dist/editor/index.js +8 -15
- package/dist/index.js +13 -104
- package/dist/intl.js +10 -17
- package/dist/locale/index.js +16 -23
- package/dist/locale/lang/de.js +1 -7
- package/dist/locale/lang/en.js +1 -7
- package/dist/locale/lang/es.js +1 -7
- package/dist/locale/lang/fr.js +1 -7
- package/dist/locale/lang/pt.js +1 -7
- package/dist/locale/lang/ru.js +1 -7
- package/dist/locale/lang/zh_CN.js +1 -7
- package/dist/model/area-group.js +12 -19
- package/dist/model/area.js +12 -19
- package/dist/model/bar-custom.js +11 -18
- package/dist/model/bar-group.js +12 -19
- package/dist/model/bar-stack.js +10 -17
- package/dist/model/bar.js +11 -18
- package/dist/model/base-model.js +8 -11
- package/dist/model/basic-number-card.js +13 -20
- package/dist/model/chart.js +7 -13
- package/dist/model/combination.js +19 -22
- package/dist/model/compare-bar.js +14 -21
- package/dist/model/completeness-group.js +11 -18
- package/dist/model/completeness.js +10 -17
- package/dist/model/dashboard.js +7 -14
- package/dist/model/funnel.js +14 -21
- package/dist/model/generic-model.js +135 -143
- package/dist/model/heat-map.js +9 -16
- package/dist/model/horizontal-bar.js +15 -18
- package/dist/model/horizontal-group-bar.js +14 -17
- package/dist/model/index.js +69 -93
- package/dist/model/line-group.js +13 -20
- package/dist/model/line.js +12 -19
- package/dist/model/map-bubble.js +12 -19
- package/dist/model/map.js +12 -19
- package/dist/model/mirror.js +13 -20
- package/dist/model/pie.js +12 -19
- package/dist/model/ring.js +12 -19
- package/dist/model/scatter.js +10 -17
- package/dist/model/stacked-horizontal-bar.js +15 -18
- package/dist/model/table-element.js +5 -12
- package/dist/model/table.js +7 -14
- package/dist/model/tree-map.js +7 -14
- package/dist/model/trend.js +11 -18
- package/dist/model/user.js +1 -7
- package/dist/model/world-map-bubble.js +12 -19
- package/dist/model/world-map.js +12 -19
- package/dist/services/map-json.js +7 -13
- package/dist/settings/advance-bar-settings/data-settings.js +36 -44
- package/dist/settings/advance-bar-settings/index.js +3 -20
- package/dist/settings/advance-bar-settings/style-settings.js +83 -74
- package/dist/settings/bar-settings/data-settings.js +39 -47
- package/dist/settings/bar-settings/index.js +3 -20
- package/dist/settings/bar-settings/style-settings.js +69 -60
- package/dist/settings/basic-number-card/data-settings.js +49 -57
- package/dist/settings/basic-number-card/index.js +3 -20
- package/dist/settings/basic-number-card/style-settings.js +18 -26
- package/dist/settings/combination-settings/data-settings.js +55 -63
- package/dist/settings/combination-settings/index.js +3 -20
- package/dist/settings/combination-settings/style-settings.js +94 -77
- package/dist/settings/completeness-settings/callbacks/callbacks.js +16 -27
- package/dist/settings/completeness-settings/data-settings/completion-settings.js +21 -28
- package/dist/settings/completeness-settings/data-settings/data-settings.js +25 -32
- package/dist/settings/completeness-settings/index.js +3 -20
- package/dist/settings/completeness-settings/style-settings.js +19 -26
- package/dist/settings/dashboard-settings/data-settings.js +43 -51
- package/dist/settings/dashboard-settings/index.js +2 -13
- package/dist/settings/data-settings.js +72 -79
- package/dist/settings/funnel-settings/components/dnd-item/dnd-item.js +12 -19
- package/dist/settings/funnel-settings/components/dnd-list.js +15 -23
- package/dist/settings/funnel-settings/components/funnel-label-setting.js +32 -40
- package/dist/settings/funnel-settings/components/funnel-layer-setting.js +20 -28
- package/dist/settings/funnel-settings/data-settings.js +23 -31
- package/dist/settings/funnel-settings/index.js +3 -20
- package/dist/settings/funnel-settings/style-settings.js +11 -19
- package/dist/settings/heat-map-settings/data-settings.js +18 -26
- package/dist/settings/heat-map-settings/index.js +3 -20
- package/dist/settings/heat-map-settings/style-settings.js +18 -26
- package/dist/settings/horizontal-bar-settings/data-settings.js +12 -19
- package/dist/settings/horizontal-bar-settings/index.js +3 -20
- package/dist/settings/horizontal-bar-settings/style-settings.js +12 -19
- package/dist/settings/index.js +52 -70
- package/dist/settings/map-settings/components/location-field-selector.js +10 -17
- package/dist/settings/map-settings/components/map-level-selector.js +11 -18
- package/dist/settings/map-settings/components/map-province-city-selector.js +19 -26
- package/dist/settings/map-settings/index.js +3 -20
- package/dist/settings/map-settings/map-data-settings.js +23 -30
- package/dist/settings/map-settings/map-style-settings.js +26 -34
- package/dist/settings/mirror-settings/data-settings.js +26 -34
- package/dist/settings/mirror-settings/index.js +2 -13
- package/dist/settings/pie-settings/data-settings.js +33 -41
- package/dist/settings/pie-settings/index.js +3 -20
- package/dist/settings/pie-settings/style-settings.js +47 -55
- package/dist/settings/scatter/data-settings.js +27 -34
- package/dist/settings/scatter/index.js +3 -12
- package/dist/settings/stacks-settings/index.js +19 -27
- package/dist/settings/stacks-settings/stack-item-settings.js +19 -27
- package/dist/settings/style-settings.js +64 -72
- package/dist/settings/table-element-settings/components/data-filter.js +30 -38
- package/dist/settings/table-element-settings/data-settings.js +21 -29
- package/dist/settings/table-element-settings/index.js +2 -13
- package/dist/settings/table-settings/data-settings.js +111 -119
- package/dist/settings/table-settings/index.js +2 -13
- package/dist/settings/time-comparison-settings/data-settings.js +43 -51
- package/dist/settings/time-comparison-settings/index.js +3 -20
- package/dist/settings/time-comparison-settings/style-settings.js +62 -53
- package/dist/settings/trend-settings/data-settings.js +24 -32
- package/dist/settings/trend-settings/index.js +3 -20
- package/dist/settings/trend-settings/style-setting.js +17 -25
- package/dist/settings/widgets/axis-title-font-settings/index.js +39 -0
- package/dist/settings/widgets/basic-summary/index.js +55 -63
- package/dist/settings/widgets/chart-type/index.js +18 -26
- package/dist/settings/widgets/color-settings/index.js +72 -80
- package/dist/settings/widgets/common-data-settings.js +21 -29
- package/dist/settings/widgets/data-filter/index.js +35 -43
- package/dist/settings/widgets/data-sort.js +16 -24
- package/dist/settings/widgets/date-summary-item.js +24 -32
- package/dist/settings/widgets/display-values-settings/index.js +14 -22
- package/dist/settings/widgets/divider/index.js +8 -16
- package/dist/settings/widgets/font-settings/font-color-settings.js +11 -19
- package/dist/settings/widgets/font-settings/font-size-settings.js +14 -22
- package/dist/settings/widgets/font-settings/font-weight-settings.js +17 -25
- package/dist/settings/widgets/font-settings/index.js +4 -27
- package/dist/settings/widgets/group-by.js +51 -59
- package/dist/settings/widgets/min-max-setting.js +10 -18
- package/dist/settings/widgets/mininum-slice-percent.js +10 -18
- package/dist/settings/widgets/numeric-summary-item.js +23 -31
- package/dist/settings/widgets/select-line-type/index.js +10 -17
- package/dist/settings/widgets/select-table/index.js +9 -16
- package/dist/settings/widgets/select-view/index.js +20 -28
- package/dist/settings/widgets/stack.js +14 -22
- package/dist/settings/widgets/summary-method-setting.js +17 -25
- package/dist/settings/widgets/summary-settings.js +72 -80
- package/dist/settings/widgets/switch/index.js +8 -15
- package/dist/settings/widgets/text-horizontal-settings.js +15 -23
- package/dist/settings/widgets/time-picker.js +29 -37
- package/dist/settings/widgets/title-settings/index.js +29 -37
- package/dist/settings/widgets/title-settings/title-text.js +5 -12
- package/dist/settings/widgets/x-axios.js +0 -1
- package/dist/settings/widgets/y-axis-group-settings.js +63 -71
- package/dist/utils/cell-format-utils.js +18 -28
- package/dist/utils/cell-value-utils.js +5 -12
- package/dist/utils/chart-utils/base-utils.js +362 -334
- package/dist/utils/chart-utils/index.js +28 -41
- package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +80 -86
- package/dist/utils/chart-utils/original-data-utils/card-calculator.js +13 -20
- package/dist/utils/chart-utils/original-data-utils/combination-calculator.js +45 -52
- package/dist/utils/chart-utils/original-data-utils/compare-bar-chart-calculator.js +19 -26
- package/dist/utils/chart-utils/original-data-utils/completeness-calculator.js +32 -39
- package/dist/utils/chart-utils/original-data-utils/dashboard-calculator.js +16 -23
- package/dist/utils/chart-utils/original-data-utils/index.js +50 -57
- package/dist/utils/chart-utils/original-data-utils/mirror-calculator.js +21 -28
- package/dist/utils/chart-utils/original-data-utils/pivot-table-calculator.js +91 -97
- package/dist/utils/chart-utils/original-data-utils/scatter-calculator.js +19 -26
- package/dist/utils/chart-utils/original-data-utils/trend-calculator.js +31 -38
- package/dist/utils/chart-utils/sql-statistics-utils.js +284 -246
- package/dist/utils/chart.js +9 -17
- package/dist/utils/collaborator-manager.js +3 -9
- package/dist/utils/collaborator-utils.js +18 -30
- package/dist/utils/collaborator.js +4 -13
- package/dist/utils/color-utils.js +18 -29
- package/dist/utils/column-utils.js +65 -92
- package/dist/utils/common-utils.js +27 -52
- package/dist/utils/concurrency-manager.js +1 -7
- package/dist/utils/contexts.js +5 -12
- package/dist/utils/date-translate.js +11 -19
- package/dist/utils/digital-sign-utils.js +7 -14
- package/dist/utils/event-bus.js +1 -7
- package/dist/utils/hotkey.js +5 -11
- package/dist/utils/index.js +54 -221
- package/dist/utils/key-generator.js +2 -9
- package/dist/utils/map.js +22 -31
- package/dist/utils/object-utils.js +1 -7
- package/dist/utils/options-utils.js +8 -16
- package/dist/utils/row-record-utils.js +182 -178
- package/dist/utils/row-utils.js +27 -38
- package/dist/utils/search.js +24 -32
- package/dist/utils/sql/chart-data-sql.js +49 -55
- package/dist/utils/sql/column-2-sql-column.js +146 -154
- package/dist/utils/sql/index.js +3 -27
- package/dist/utils/trend-utils.js +39 -47
- package/dist/view/index.css +0 -17
- package/dist/view/index.js +89 -95
- package/dist/view/title/index.js +15 -23
- package/dist/view/wrapper/area-group.js +53 -72
- package/dist/view/wrapper/area.js +51 -72
- package/dist/view/wrapper/bar-compare.js +43 -56
- package/dist/view/wrapper/bar-custom-stack.js +50 -120
- package/dist/view/wrapper/bar-group.js +51 -94
- package/dist/view/wrapper/bar-stack.js +54 -90
- package/dist/view/wrapper/bar.js +45 -66
- package/dist/view/wrapper/basic-number-card.js +25 -26
- package/dist/view/wrapper/chart-component.js +539 -162
- package/dist/view/wrapper/combination.js +63 -83
- package/dist/view/wrapper/completeness-group.js +42 -96
- package/dist/view/wrapper/completeness.js +42 -96
- package/dist/view/wrapper/dashboard.js +33 -47
- package/dist/view/wrapper/funnel.js +36 -56
- package/dist/view/wrapper/heat-map.js +126 -104
- package/dist/view/wrapper/horizontal-bar-group.js +57 -76
- package/dist/view/wrapper/horizontal-bar-stack.js +56 -109
- package/dist/view/wrapper/horizontal-bar.js +45 -68
- package/dist/view/wrapper/index.js +110 -115
- package/dist/view/wrapper/line-group.js +48 -66
- package/dist/view/wrapper/line.js +47 -67
- package/dist/view/wrapper/map-bubble.js +46 -59
- package/dist/view/wrapper/map-world-bubble.js +45 -58
- package/dist/view/wrapper/map-world.js +47 -60
- package/dist/view/wrapper/map.js +48 -60
- package/dist/view/wrapper/mirror.js +40 -61
- package/dist/view/wrapper/pie.js +48 -59
- package/dist/view/wrapper/ring.js +52 -63
- package/dist/view/wrapper/scatter.js +49 -67
- package/dist/view/wrapper/table/index.js +13 -21
- package/dist/view/wrapper/table/one-dimension-table-no-numeric-columns.js +49 -57
- package/dist/view/wrapper/table/one-dimension-table-with-numeric-columns.js +50 -58
- package/dist/view/wrapper/table/pivot-table-display-name.js +83 -91
- package/dist/view/wrapper/table/two-dimension-table.js +76 -84
- package/dist/view/wrapper/table-element/components/dataset-utils.js +23 -36
- package/dist/view/wrapper/table-element/components/formatter.js +96 -105
- package/dist/view/wrapper/table-element/components/formatters/FileFormatter/index.js +22 -31
- package/dist/view/wrapper/table-element/components/formatters/formula-formatter.js +9 -16
- package/dist/view/wrapper/table-element/components/formatters/link-formatter.js +73 -80
- package/dist/view/wrapper/table-element/components/formula-formatter.js +9 -16
- package/dist/view/wrapper/table-element/components/link-formatter.js +73 -80
- package/dist/view/wrapper/table-element/components/record.js +10 -17
- package/dist/view/wrapper/table-element/components/records-body.js +17 -19
- package/dist/view/wrapper/table-element/components/records-header/index.js +7 -15
- package/dist/view/wrapper/table-element/components/records-header/records-header-cell.js +8 -16
- package/dist/view/wrapper/table-element/components/records.js +23 -33
- package/dist/view/wrapper/table-element/components/resize-column-handle/resize-column-handle.js +5 -12
- package/dist/view/wrapper/table-element/components/utils.js +5 -15
- package/dist/view/wrapper/table-element/components/value-display-utils.js +4 -11
- package/dist/view/wrapper/table-element/components/vertical-scrollbar/index.js +6 -13
- package/dist/view/wrapper/table-element/index.js +18 -26
- package/dist/view/wrapper/treemap.js +39 -57
- package/dist/view/wrapper/trend.js +41 -48
- package/package.json +1 -1
|
@@ -1,25 +1,18 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.default = void 0;
|
|
9
|
-
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
10
|
-
var _dtableUtils = require("dtable-utils");
|
|
11
|
-
var _lodash = require("lodash");
|
|
12
|
-
var _lodashEs = require("lodash-es");
|
|
13
|
-
var _constants = require("../../constants");
|
|
14
|
-
var _sql = require("../sql");
|
|
15
|
-
var _cellFormatUtils = require("../cell-format-utils");
|
|
16
|
-
var _column2SqlColumn = require("../sql/column-2-sql-column");
|
|
17
|
-
var _columnUtils = require("../column-utils");
|
|
18
|
-
var _trendUtils = require("../trend-utils");
|
|
19
|
-
var _intl = _interopRequireDefault(require("../../intl"));
|
|
20
|
-
var _dateTranslate = require("../date-translate");
|
|
21
|
-
var _baseUtils = _interopRequireWildcard(require("./base-utils"));
|
|
22
1
|
var _SQLStatisticsUtils;
|
|
2
|
+
import dayjs from 'dayjs';
|
|
3
|
+
import { CellType, MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP, getFormulaDisplayString, getGeolocationByGranularity, getGeolocationDisplayString, getPrecisionNumber, getTableById, getTableColumnByKey, GROUP_GEOLOCATION_GRANULARITY, isNumber, isEmpty } from 'dtable-utils';
|
|
4
|
+
import { isObject } from 'lodash';
|
|
5
|
+
import { cloneDeep } from 'lodash-es';
|
|
6
|
+
import { CHART_SUMMARY_TYPE, CHART_TYPE, SUPPORT_DATA_SORT_CHART_TYPES, TABLE_DIMENSIONS, Y_AXIS_TYPE_PREFIX, STYLE_COLORS, TREND_TYPES, CHART_STYLE_COLORS, MAP_CHART_TYPES } from '../../constants';
|
|
7
|
+
import { chartColumn2SqlColumn, summaryMethodColumn2SqlColumn } from '../sql';
|
|
8
|
+
import { getClientLinkDisplayString } from '../cell-format-utils';
|
|
9
|
+
import { column2SqlColumn } from '../sql/column-2-sql-column';
|
|
10
|
+
import { formatNumericValue, getFormattedValue, getSummaryResult } from '../column-utils';
|
|
11
|
+
import { getCompareDate } from '../trend-utils';
|
|
12
|
+
import { fixGeoGranularity } from '../map';
|
|
13
|
+
import intl from '../../intl';
|
|
14
|
+
import { convertQuarterToDate } from '../date-translate';
|
|
15
|
+
import BaseUtils, { findIfColumnDataIsArray } from './base-utils';
|
|
23
16
|
class SQLStatisticsUtils {}
|
|
24
17
|
_SQLStatisticsUtils = SQLStatisticsUtils;
|
|
25
18
|
SQLStatisticsUtils.DATA_SOURCE = 'sql_statistics';
|
|
@@ -29,56 +22,57 @@ SQLStatisticsUtils.getGroupLabelFromDB = async (cellValue, column, chart, isPivo
|
|
|
29
22
|
data
|
|
30
23
|
} = column;
|
|
31
24
|
switch (type) {
|
|
32
|
-
case
|
|
25
|
+
case CellType.TEXT:
|
|
33
26
|
{
|
|
34
27
|
return cellValue || null;
|
|
35
28
|
}
|
|
36
|
-
case
|
|
37
|
-
case
|
|
38
|
-
case
|
|
29
|
+
case CellType.DATE:
|
|
30
|
+
case CellType.CTIME:
|
|
31
|
+
case CellType.MTIME:
|
|
39
32
|
{
|
|
40
33
|
return cellValue;
|
|
41
34
|
}
|
|
42
|
-
case
|
|
35
|
+
case CellType.NUMBER:
|
|
43
36
|
{
|
|
44
37
|
if (!cellValue && cellValue !== 0) return null;
|
|
45
|
-
return
|
|
38
|
+
return getPrecisionNumber(cellValue, data);
|
|
46
39
|
}
|
|
47
|
-
case
|
|
40
|
+
case CellType.SINGLE_SELECT:
|
|
48
41
|
{
|
|
49
42
|
let isInvalidValue = data && data.options && data.options.findIndex(opt => opt.id === cellValue) < 0;
|
|
50
43
|
return isInvalidValue ? null : cellValue;
|
|
51
44
|
}
|
|
52
|
-
case
|
|
45
|
+
case CellType.MULTIPLE_SELECT:
|
|
53
46
|
{
|
|
54
47
|
let options = data && data.options;
|
|
55
48
|
if (!Array.isArray(options) || options.length === 0) return [];
|
|
56
49
|
if (!Array.isArray(cellValue) || cellValue.length === 0) return [];
|
|
57
50
|
return cellValue.filter(optionId => options.find(option => option.id === optionId));
|
|
58
51
|
}
|
|
59
|
-
case
|
|
52
|
+
case CellType.COLLABORATOR:
|
|
60
53
|
{
|
|
61
54
|
if (!Array.isArray(cellValue) || cellValue.length === 0) return [];
|
|
62
55
|
return cellValue;
|
|
63
56
|
}
|
|
64
|
-
case
|
|
65
|
-
case
|
|
57
|
+
case CellType.CREATOR:
|
|
58
|
+
case CellType.LAST_MODIFIER:
|
|
66
59
|
{
|
|
67
60
|
return cellValue ? cellValue : null;
|
|
68
61
|
}
|
|
69
|
-
case
|
|
62
|
+
case CellType.GEOLOCATION:
|
|
70
63
|
{
|
|
71
|
-
return cellValue || null;
|
|
64
|
+
if (typeof cellValue === 'string') return cellValue || null;
|
|
65
|
+
return getGeolocationDisplayString(cellValue, data) || null;
|
|
72
66
|
}
|
|
73
|
-
case
|
|
67
|
+
case CellType.FORMULA:
|
|
74
68
|
{
|
|
75
69
|
if (Array.isArray(cellValue)) {
|
|
76
|
-
const validValue =
|
|
70
|
+
const validValue = getFormulaDisplayString(cellValue, data) || [];
|
|
77
71
|
return validValue;
|
|
78
72
|
}
|
|
79
73
|
return cellValue || null;
|
|
80
74
|
}
|
|
81
|
-
case
|
|
75
|
+
case CellType.LINK_FORMULA:
|
|
82
76
|
{
|
|
83
77
|
const {
|
|
84
78
|
result_type
|
|
@@ -87,21 +81,21 @@ SQLStatisticsUtils.getGroupLabelFromDB = async (cellValue, column, chart, isPivo
|
|
|
87
81
|
if (result_type === 'array') {
|
|
88
82
|
return cellValue;
|
|
89
83
|
}
|
|
90
|
-
const validValue =
|
|
91
|
-
if (
|
|
84
|
+
const validValue = getFormulaDisplayString(cellValue, data) || [];
|
|
85
|
+
if (isEmpty(validValue)) {
|
|
92
86
|
return null;
|
|
93
87
|
}
|
|
94
88
|
return validValue;
|
|
95
89
|
}
|
|
96
|
-
case
|
|
90
|
+
case CellType.LINK:
|
|
97
91
|
{
|
|
98
|
-
return Array.isArray(cellValue) ? cellValue.map(linked =>
|
|
92
|
+
return Array.isArray(cellValue) ? cellValue.map(linked => getClientLinkDisplayString([linked], data, {})) : [];
|
|
99
93
|
}
|
|
100
|
-
case
|
|
94
|
+
case CellType.CHECKBOX:
|
|
101
95
|
{
|
|
102
96
|
return String(cellValue) === 'true' ? 'Checked' : 'Unchecked';
|
|
103
97
|
}
|
|
104
|
-
case
|
|
98
|
+
case CellType.RATE:
|
|
105
99
|
{
|
|
106
100
|
return cellValue ? String(cellValue) : null;
|
|
107
101
|
}
|
|
@@ -176,7 +170,7 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
|
|
|
176
170
|
const {
|
|
177
171
|
summary_type
|
|
178
172
|
} = chart.config;
|
|
179
|
-
const isCount = summary_type ===
|
|
173
|
+
const isCount = summary_type === CHART_SUMMARY_TYPE.COUNT;
|
|
180
174
|
const {
|
|
181
175
|
sqlSummaryColumnKey,
|
|
182
176
|
summarySQLColumnName2ColumnKey = {}
|
|
@@ -196,11 +190,11 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
|
|
|
196
190
|
let {
|
|
197
191
|
key
|
|
198
192
|
} = c;
|
|
199
|
-
if (
|
|
193
|
+
if (BaseUtils.isSameGroup(isColumnDataAsAnArray, cellValue, key)) {
|
|
200
194
|
if (cells[key]) {
|
|
201
195
|
cells[key].rows.push(row);
|
|
202
196
|
if (isCount) {
|
|
203
|
-
if (
|
|
197
|
+
if (BaseUtils.isCollaboratorColumnOrMultipleColumn(columnMap)) {
|
|
204
198
|
cells[key].total = total + row[sqlSummaryColumnKey];
|
|
205
199
|
} else {
|
|
206
200
|
cells[key].total = row[sqlSummaryColumnKey];
|
|
@@ -212,10 +206,10 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
|
|
|
212
206
|
const nextValue = row[currentSqlName];
|
|
213
207
|
// use columnKey to find current value
|
|
214
208
|
const currentValue = Object.values(cells[key].total).find(item => item[2] === columnKey)[1];
|
|
215
|
-
const computedValue =
|
|
209
|
+
const computedValue = BaseUtils.getSummaryValue({
|
|
216
210
|
summaryMethod: current.summary_method.toUpperCase(),
|
|
217
211
|
summaryColumn: current.column
|
|
218
|
-
}, currentValue, nextValue,
|
|
212
|
+
}, currentValue, nextValue, BaseUtils.isCollaboratorColumnOrMultipleColumn(columnMap));
|
|
219
213
|
const columnName = current.column.name;
|
|
220
214
|
|
|
221
215
|
// keep column key to find currentValue on updating
|
|
@@ -253,7 +247,7 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
|
|
|
253
247
|
} else {
|
|
254
248
|
updatedPivotRow.total = Object.values(cells).reduce((acc, item) => {
|
|
255
249
|
item.total.forEach(t => {
|
|
256
|
-
|
|
250
|
+
isNumber(t[1]) && (acc += t[1]);
|
|
257
251
|
});
|
|
258
252
|
return acc;
|
|
259
253
|
}, 0);
|
|
@@ -269,7 +263,7 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
|
|
|
269
263
|
let {
|
|
270
264
|
key
|
|
271
265
|
} = c;
|
|
272
|
-
if (
|
|
266
|
+
if (BaseUtils.isSameGroup(isColumnDataAsAnArray, cellValue, key)) {
|
|
273
267
|
let total;
|
|
274
268
|
if (isCount) {
|
|
275
269
|
total = row[sqlSummaryColumnKey];
|
|
@@ -294,9 +288,9 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
|
|
|
294
288
|
const cellList = Object.values(cells);
|
|
295
289
|
total = cellList.reduce((acc, item) => {
|
|
296
290
|
let num;
|
|
297
|
-
if (
|
|
291
|
+
if (isObject(item.total)) {
|
|
298
292
|
num = item.total.reduce((acc, item) => {
|
|
299
|
-
|
|
293
|
+
isNumber(item[1]) && (acc += item[1]);
|
|
300
294
|
return acc;
|
|
301
295
|
}, 0);
|
|
302
296
|
} else {
|
|
@@ -326,7 +320,7 @@ SQLStatisticsUtils.getAndUpdateTwoDimensionTotal = (pivot_columns_total, pivot_c
|
|
|
326
320
|
if (cell) {
|
|
327
321
|
let pivot_column_total = pivot_columns_total && pivot_columns_total[key] ? pivot_columns_total[key] : 0;
|
|
328
322
|
const currentCellTotal = Array.isArray(cell.total) ? cell.total.reduce((acc, item) => {
|
|
329
|
-
|
|
323
|
+
isNumber(item[1]) && (acc += item[1]);
|
|
330
324
|
return acc;
|
|
331
325
|
}, 0) : parseInt(cell.total);
|
|
332
326
|
pivot_columns_total[key] = pivot_column_total + currentCellTotal;
|
|
@@ -348,22 +342,22 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
348
342
|
} = chartSQLMap;
|
|
349
343
|
let pivot_columns = [];
|
|
350
344
|
let pivot_rows = [];
|
|
351
|
-
const isCount = summary_type ===
|
|
345
|
+
const isCount = summary_type === CHART_SUMMARY_TYPE.COUNT;
|
|
352
346
|
|
|
353
347
|
// if key is an array, handle it here ,currently only handle collaborator and multiple select
|
|
354
348
|
// MULTIPLE_CELL_VALUE_COLUMN_TYPE = [CellType.COLLABORATOR, CellType.MULTIPLE_SELECT, CellType.LINK]
|
|
355
|
-
const isGroupByColumnLinkFormula = groupbyColumn.type ===
|
|
349
|
+
const isGroupByColumnLinkFormula = groupbyColumn.type === CellType.LINK_FORMULA;
|
|
356
350
|
let newSqlRows = sqlRows;
|
|
357
351
|
if (isGroupByColumnLinkFormula) {
|
|
358
352
|
const {
|
|
359
353
|
array_type
|
|
360
354
|
} = groupbyColumn.data;
|
|
361
|
-
if ([
|
|
362
|
-
newSqlRows =
|
|
355
|
+
if ([CellType.COLLABORATOR, CellType.MULTIPLE_SELECT].includes(array_type)) {
|
|
356
|
+
newSqlRows = BaseUtils.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
|
|
363
357
|
}
|
|
364
358
|
}
|
|
365
|
-
if ([
|
|
366
|
-
newSqlRows =
|
|
359
|
+
if ([CellType.COLLABORATOR, CellType.MULTIPLE_SELECT].includes(groupbyColumn.type)) {
|
|
360
|
+
newSqlRows = BaseUtils.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
|
|
367
361
|
}
|
|
368
362
|
if (isCount) {
|
|
369
363
|
let allTotal = 0;
|
|
@@ -379,7 +373,7 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
379
373
|
}
|
|
380
374
|
});
|
|
381
375
|
}
|
|
382
|
-
if (groupbyColumn.type ===
|
|
376
|
+
if (groupbyColumn.type === CellType.LINK_FORMULA && groupbyColumn.data.array_type === 'date') {
|
|
383
377
|
pivot_rows = pivot_rows.reduce((acc, item) => {
|
|
384
378
|
const {
|
|
385
379
|
name,
|
|
@@ -396,7 +390,7 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
396
390
|
return acc;
|
|
397
391
|
}, []);
|
|
398
392
|
}
|
|
399
|
-
|
|
393
|
+
BaseUtils.sortCharts(pivot_rows, groupbyColumn, 'name', true);
|
|
400
394
|
return {
|
|
401
395
|
pivot_columns,
|
|
402
396
|
pivot_rows: pivot_rows,
|
|
@@ -415,7 +409,7 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
415
409
|
let totalTemplate = {};
|
|
416
410
|
Object.values(summaryColumnKeys).forEach(key => {
|
|
417
411
|
const summaryMethod = summaryTableColumnKey2Method[key];
|
|
418
|
-
totalTemplate[key] =
|
|
412
|
+
totalTemplate[key] = BaseUtils.initTotal(summaryMethod);
|
|
419
413
|
pivot_columns.push({
|
|
420
414
|
key
|
|
421
415
|
});
|
|
@@ -432,14 +426,14 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
432
426
|
let columnKey = summarySQLColumnName2ColumnKey[key];
|
|
433
427
|
let summaryColumn = summaryTableColumnKey2Column[columnKey];
|
|
434
428
|
const summaryMethod = summaryTableColumnKey2Method[columnKey];
|
|
435
|
-
let value = row[key] ||
|
|
436
|
-
allTotal[columnKey] =
|
|
429
|
+
let value = row[key] || BaseUtils.initTotal(summaryMethod);
|
|
430
|
+
allTotal[columnKey] = BaseUtils.getSummaryValue({
|
|
437
431
|
summaryColumn,
|
|
438
432
|
summaryMethod
|
|
439
433
|
}, allTotal[columnKey], value);
|
|
440
|
-
if (
|
|
434
|
+
if (BaseUtils.isDateSummaryColumn(summaryColumn)) {
|
|
441
435
|
rowTotal[columnKey] = value;
|
|
442
|
-
} else if (
|
|
436
|
+
} else if (BaseUtils.isNumericSummaryColumn(summaryColumn)) {
|
|
443
437
|
rowTotal[columnKey] = rowTotal[columnKey] + value;
|
|
444
438
|
}
|
|
445
439
|
});
|
|
@@ -449,7 +443,7 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
449
443
|
total: rowTotal
|
|
450
444
|
});
|
|
451
445
|
}
|
|
452
|
-
if (groupbyColumn.type ===
|
|
446
|
+
if (groupbyColumn.type === CellType.LINK_FORMULA && groupbyColumn.data.array_type === 'date') {
|
|
453
447
|
pivot_rows = pivot_rows.reduce((acc, item) => {
|
|
454
448
|
const {
|
|
455
449
|
name,
|
|
@@ -482,12 +476,12 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
482
476
|
total: allTotal[key]
|
|
483
477
|
};
|
|
484
478
|
}
|
|
485
|
-
|
|
479
|
+
BaseUtils.sortCharts(pivot_rows, groupbyColumn, 'name', true);
|
|
486
480
|
return {
|
|
487
481
|
pivot_columns,
|
|
488
482
|
pivot_rows,
|
|
489
483
|
pivot_columns_total: allTotal,
|
|
490
|
-
dimensions:
|
|
484
|
+
dimensions: TABLE_DIMENSIONS.ONE
|
|
491
485
|
};
|
|
492
486
|
};
|
|
493
487
|
SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
@@ -515,8 +509,8 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
515
509
|
let newSqlRows = sqlRows;
|
|
516
510
|
|
|
517
511
|
// handle LINK_FORMULA
|
|
518
|
-
const isGroupByColumnLinkFormula = groupbyColumn.type ===
|
|
519
|
-
const isColumnGroupByColumnLinkFormula = columnGroupbyColumn.type ===
|
|
512
|
+
const isGroupByColumnLinkFormula = groupbyColumn.type === CellType.LINK_FORMULA;
|
|
513
|
+
const isColumnGroupByColumnLinkFormula = columnGroupbyColumn.type === CellType.LINK_FORMULA;
|
|
520
514
|
let isRowGroupbyColumnDataAsAnArray, isGroupbyColumnDataAsAnArray;
|
|
521
515
|
|
|
522
516
|
// Group by column
|
|
@@ -524,14 +518,14 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
524
518
|
if (isGroupByColumnLinkFormula && groupbyColumn.data.array_type !== 'date') {
|
|
525
519
|
isGroupbyColumnDataAsAnArray = true;
|
|
526
520
|
} else {
|
|
527
|
-
isGroupbyColumnDataAsAnArray = !!
|
|
521
|
+
isGroupbyColumnDataAsAnArray = !!MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[groupbyColumn.type];
|
|
528
522
|
}
|
|
529
523
|
|
|
530
524
|
// column group by column
|
|
531
525
|
if (isColumnGroupByColumnLinkFormula && groupbyColumn.data.array_type !== 'date') {
|
|
532
526
|
isRowGroupbyColumnDataAsAnArray = true;
|
|
533
527
|
} else {
|
|
534
|
-
isRowGroupbyColumnDataAsAnArray = !!
|
|
528
|
+
isRowGroupbyColumnDataAsAnArray = !!MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[columnGroupbyColumn.type];
|
|
535
529
|
}
|
|
536
530
|
|
|
537
531
|
// if key is an array, handle it here ,currently only handle collaborator and multiple select
|
|
@@ -540,12 +534,12 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
540
534
|
const {
|
|
541
535
|
array_type
|
|
542
536
|
} = groupbyColumn.data;
|
|
543
|
-
if ([
|
|
544
|
-
newSqlRows =
|
|
537
|
+
if ([CellType.COLLABORATOR, CellType.MULTIPLE_SELECT].includes(array_type)) {
|
|
538
|
+
newSqlRows = BaseUtils.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
|
|
545
539
|
}
|
|
546
540
|
}
|
|
547
|
-
if ([
|
|
548
|
-
newSqlRows =
|
|
541
|
+
if ([CellType.COLLABORATOR, CellType.MULTIPLE_SELECT].includes(groupbyColumn.type)) {
|
|
542
|
+
newSqlRows = BaseUtils.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
|
|
549
543
|
}
|
|
550
544
|
let pivot_columns = [];
|
|
551
545
|
let pivot_rows = [];
|
|
@@ -556,12 +550,12 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
556
550
|
for (const row of newSqlRows) {
|
|
557
551
|
const columnGroupbyColumnCellValue = row[sqlColumnGroupbyColumnKey];
|
|
558
552
|
let columnGroupbyColumnCellValueKey;
|
|
559
|
-
if (
|
|
553
|
+
if (BaseUtils.isCollaborator(columnGroupbyColumn)) {
|
|
560
554
|
columnGroupbyColumnCellValueKey = columnGroupbyColumnCellValue || [];
|
|
561
555
|
} else {
|
|
562
556
|
columnGroupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(columnGroupbyColumnCellValue, columnGroupbyColumn, chart.config, true);
|
|
563
557
|
}
|
|
564
|
-
if (
|
|
558
|
+
if (BaseUtils.isValidCellValue(columnGroupbyColumnCellValue, groupby_include_empty_cells)) {
|
|
565
559
|
_SQLStatisticsUtils.updateTwoDimensionColumns(pivot_columns, columnGroupbyColumnCellValueKey, {
|
|
566
560
|
isIncludeEmpty: groupby_include_empty_cells,
|
|
567
561
|
isCellValueAsAnArray: isRowGroupbyColumnDataAsAnArray
|
|
@@ -571,19 +565,19 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
571
565
|
for (const row of newSqlRows) {
|
|
572
566
|
const groupbyColumnCellValue = row[sqlGroupbyColumnKey];
|
|
573
567
|
let groupbyColumnCellValueKey;
|
|
574
|
-
if (
|
|
568
|
+
if (BaseUtils.isCollaborator(groupbyColumn)) {
|
|
575
569
|
groupbyColumnCellValueKey = groupbyColumnCellValue || [];
|
|
576
570
|
} else {
|
|
577
571
|
groupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(groupbyColumnCellValue, groupbyColumn, chart.config, true);
|
|
578
572
|
}
|
|
579
573
|
const columnGroupbyColumnCellValue = row[sqlColumnGroupbyColumnKey];
|
|
580
574
|
let columnGroupbyColumnCellValueKey;
|
|
581
|
-
if (
|
|
575
|
+
if (BaseUtils.isCollaborator(columnGroupbyColumn)) {
|
|
582
576
|
columnGroupbyColumnCellValueKey = columnGroupbyColumnCellValue || [];
|
|
583
577
|
} else {
|
|
584
578
|
columnGroupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(columnGroupbyColumnCellValue, columnGroupbyColumn, chart.config, true);
|
|
585
579
|
}
|
|
586
|
-
if (
|
|
580
|
+
if (BaseUtils.isValidCellValue(groupbyColumnCellValue, groupby_include_empty_cells)) {
|
|
587
581
|
// data is an array is handled previously, but to keep capability, still use old code
|
|
588
582
|
if (isGroupbyColumnDataAsAnArray) {
|
|
589
583
|
if ((!Array.isArray(groupbyColumnCellValueKey) || groupbyColumnCellValueKey.length === 0) && groupby_include_empty_cells) {
|
|
@@ -620,15 +614,15 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
620
614
|
}
|
|
621
615
|
|
|
622
616
|
// update Collaborator and Multiple mean value
|
|
623
|
-
if (
|
|
624
|
-
const new_pivot_rows =
|
|
617
|
+
if (BaseUtils.isCollaboratorColumnOrMultipleColumn(columnMap)) {
|
|
618
|
+
const new_pivot_rows = BaseUtils.updateCollaboratorAndMultipleAvg(pivot_rows, [singleNumeriColumnWithMethod, ...multipleNumericColumnsWithMethod]);
|
|
625
619
|
pivot_rows = new_pivot_rows;
|
|
626
620
|
}
|
|
627
621
|
[pivot_columns_total, pivot_table_total] = _SQLStatisticsUtils.getAndUpdateTwoDimensionTotal(pivot_columns_total, pivot_columns, pivot_rows, pivot_table_total, chart);
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
if ((groupbyColumn === null || groupbyColumn === void 0 ? void 0 : groupbyColumn.type) ===
|
|
631
|
-
pivot_rows =
|
|
622
|
+
BaseUtils.sortCharts(pivot_rows, groupbyColumn, 'name', true);
|
|
623
|
+
BaseUtils.sortCharts(pivot_columns, columnGroupbyColumn, 'key', true);
|
|
624
|
+
if ((groupbyColumn === null || groupbyColumn === void 0 ? void 0 : groupbyColumn.type) === CellType.COLLABORATOR) {
|
|
625
|
+
pivot_rows = BaseUtils.mergePivotTableSameCollaborator(pivot_rows);
|
|
632
626
|
}
|
|
633
627
|
const summary_columns = [summaryColumn, ...summaryColumnsWithMethod.map(item => item.column)];
|
|
634
628
|
return {
|
|
@@ -637,7 +631,7 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
637
631
|
pivot_rows,
|
|
638
632
|
pivot_columns_total,
|
|
639
633
|
pivot_table_total,
|
|
640
|
-
dimensions:
|
|
634
|
+
dimensions: TABLE_DIMENSIONS.TWO,
|
|
641
635
|
isSingleNumericColumn
|
|
642
636
|
};
|
|
643
637
|
};
|
|
@@ -649,7 +643,6 @@ SQLStatisticsUtils.basicChartSQLResult2JavaScript = async (chart, sqlRows, chart
|
|
|
649
643
|
type,
|
|
650
644
|
sort_type,
|
|
651
645
|
y_axis_summary_type,
|
|
652
|
-
y_axis_summary_column_key,
|
|
653
646
|
y_axis_summary_method,
|
|
654
647
|
x_axis_include_empty_cells,
|
|
655
648
|
groupby_include_empty_cells
|
|
@@ -658,7 +651,7 @@ SQLStatisticsUtils.basicChartSQLResult2JavaScript = async (chart, sqlRows, chart
|
|
|
658
651
|
groupbyColumn,
|
|
659
652
|
summaryColumn
|
|
660
653
|
} = columnMap;
|
|
661
|
-
const isGroupbyColumnDataAsAnArray =
|
|
654
|
+
const isGroupbyColumnDataAsAnArray = findIfColumnDataIsArray(groupbyColumn);
|
|
662
655
|
const {
|
|
663
656
|
sqlGroupbyColumnKey,
|
|
664
657
|
sqlSummaryColumnKey
|
|
@@ -668,10 +661,10 @@ SQLStatisticsUtils.basicChartSQLResult2JavaScript = async (chart, sqlRows, chart
|
|
|
668
661
|
const cellValue = row[sqlGroupbyColumnKey];
|
|
669
662
|
const summaryValue = row[sqlSummaryColumnKey];
|
|
670
663
|
let formatted_value = cellValue;
|
|
671
|
-
if (y_axis_summary_type ===
|
|
672
|
-
formatted_value =
|
|
664
|
+
if (y_axis_summary_type === CHART_SUMMARY_TYPE.ADVANCED) {
|
|
665
|
+
formatted_value = getFormattedValue(summaryValue, summaryColumn, y_axis_summary_method);
|
|
673
666
|
}
|
|
674
|
-
if (
|
|
667
|
+
if (BaseUtils.isValidCellValue(cellValue, x_axis_include_empty_cells || groupby_include_empty_cells)) {
|
|
675
668
|
const key = await _SQLStatisticsUtils.getGroupLabelFromDB(cellValue, groupbyColumn, chart.config);
|
|
676
669
|
if (isGroupbyColumnDataAsAnArray) {
|
|
677
670
|
if (!Array.isArray(key) || key.length === 0) {
|
|
@@ -729,11 +722,11 @@ SQLStatisticsUtils.basicChartSQLResult2JavaScript = async (chart, sqlRows, chart
|
|
|
729
722
|
}
|
|
730
723
|
}
|
|
731
724
|
}
|
|
732
|
-
|
|
733
|
-
await
|
|
734
|
-
|
|
735
|
-
if (
|
|
736
|
-
|
|
725
|
+
BaseUtils.sortCharts(result, groupbyColumn, 'name');
|
|
726
|
+
await BaseUtils.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
|
|
727
|
+
BaseUtils.updateSummaryValuePrecision(result, summaryColumn, 'value');
|
|
728
|
+
if (SUPPORT_DATA_SORT_CHART_TYPES.includes(type) && sort_type) {
|
|
729
|
+
BaseUtils.sortChartData(result, sort_type);
|
|
737
730
|
return result;
|
|
738
731
|
}
|
|
739
732
|
return result;
|
|
@@ -762,28 +755,28 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
|
|
|
762
755
|
groupbyColumn,
|
|
763
756
|
summaryColumn
|
|
764
757
|
} = columnMap;
|
|
765
|
-
const table =
|
|
758
|
+
const table = getTableById(tables, table_id);
|
|
766
759
|
const stack = y_axises[index];
|
|
767
760
|
if (!stack) return [];
|
|
768
761
|
const {
|
|
769
762
|
column_groupby_numeric_columns
|
|
770
763
|
} = stack;
|
|
771
|
-
const y_axis_type = `${
|
|
764
|
+
const y_axis_type = `${Y_AXIS_TYPE_PREFIX}${index}`;
|
|
772
765
|
let summaryMethods = [];
|
|
773
766
|
let originalMethods = [];
|
|
774
767
|
let groupColumnNames = [];
|
|
775
768
|
let numericColumns = [];
|
|
776
769
|
column_groupby_numeric_columns.forEach(item => {
|
|
777
|
-
const numericColumn =
|
|
770
|
+
const numericColumn = getTableColumnByKey(table, item.column_key);
|
|
778
771
|
const groupColumnName = numericColumn.name;
|
|
779
772
|
numericColumns.push(numericColumn);
|
|
780
773
|
groupColumnNames.push(groupColumnName);
|
|
781
|
-
summaryMethods.push(
|
|
774
|
+
summaryMethods.push(summaryMethodColumn2SqlColumn(item.summary_method.toUpperCase(), numericColumn).key);
|
|
782
775
|
originalMethods.push(item.summary_method);
|
|
783
776
|
});
|
|
784
777
|
const {
|
|
785
778
|
key: sqlGroupbyColumnKey
|
|
786
|
-
} =
|
|
779
|
+
} = column2SqlColumn(groupbyColumn, {
|
|
787
780
|
dateGranularity: x_axis_date_granularity,
|
|
788
781
|
geolocationGranularity: x_axis_geolocation_granularity
|
|
789
782
|
});
|
|
@@ -791,14 +784,14 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
|
|
|
791
784
|
for (const row of sqlRows) {
|
|
792
785
|
const cellValue = row[sqlGroupbyColumnKey];
|
|
793
786
|
const label = await _SQLStatisticsUtils.getGroupLabelFromDB(cellValue, groupbyColumn, chart.config);
|
|
794
|
-
const
|
|
787
|
+
const isEmptyLabel = !label;
|
|
795
788
|
const groupItems = [];
|
|
796
789
|
summaryMethods.forEach((summaryMethod, index) => {
|
|
797
|
-
if (!(x_axis_include_empty_cells || x_axis_include_empty) &&
|
|
790
|
+
if (!(x_axis_include_empty_cells || x_axis_include_empty) && isEmptyLabel) return;
|
|
798
791
|
let value = row[summaryMethod] || 0;
|
|
799
792
|
let formatted_value = value;
|
|
800
|
-
value =
|
|
801
|
-
formatted_value =
|
|
793
|
+
value = formatNumericValue(value, numericColumns[index]);
|
|
794
|
+
formatted_value = getFormattedValue(value, numericColumns[index], originalMethods[index]);
|
|
802
795
|
groupItems.push({
|
|
803
796
|
name: label,
|
|
804
797
|
value,
|
|
@@ -810,7 +803,7 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
|
|
|
810
803
|
});
|
|
811
804
|
result = result.concat(groupItems);
|
|
812
805
|
}
|
|
813
|
-
const isCellValueAsAnArray =
|
|
806
|
+
const isCellValueAsAnArray = findIfColumnDataIsArray(groupbyColumn);
|
|
814
807
|
if (isCellValueAsAnArray) {
|
|
815
808
|
const takenApart = [];
|
|
816
809
|
const assembled = [];
|
|
@@ -820,7 +813,7 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
|
|
|
820
813
|
name: names
|
|
821
814
|
} = item;
|
|
822
815
|
if (!Array.isArray(names)) return;
|
|
823
|
-
if (!(names
|
|
816
|
+
if (!(names === null || names === void 0 ? void 0 : names.length)) {
|
|
824
817
|
takenApart.push({
|
|
825
818
|
...item,
|
|
826
819
|
name: null
|
|
@@ -851,9 +844,9 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
|
|
|
851
844
|
});
|
|
852
845
|
result = assembled;
|
|
853
846
|
}
|
|
854
|
-
|
|
855
|
-
await
|
|
856
|
-
|
|
847
|
+
BaseUtils.sortCharts(result, groupbyColumn, 'name');
|
|
848
|
+
await BaseUtils.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
|
|
849
|
+
BaseUtils.updateSummaryValuePrecision(result, summaryColumn, 'value');
|
|
857
850
|
return result;
|
|
858
851
|
};
|
|
859
852
|
SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
@@ -882,7 +875,7 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
882
875
|
const groupName2 = `${x_axis_compared_date_range_start} - ${x_axis_compared_date_range_end}`;
|
|
883
876
|
const dateRangeResult = new Map();
|
|
884
877
|
let dateComparedResult = new Map();
|
|
885
|
-
const isAdvanced = y_axis_summary_type ===
|
|
878
|
+
const isAdvanced = y_axis_summary_type === CHART_SUMMARY_TYPE.ADVANCED;
|
|
886
879
|
const startDate = new Date(x_axis_date_range_start);
|
|
887
880
|
const endDate = new Date(x_axis_date_range_end);
|
|
888
881
|
const comparedStartDate = new Date(x_axis_compared_date_range_start);
|
|
@@ -892,7 +885,7 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
892
885
|
if (!name) continue;
|
|
893
886
|
const label = await _SQLStatisticsUtils.getGroupLabelFromDB(name, groupbyColumn, chart.config);
|
|
894
887
|
if (x_axis_date_granularity === 'quarter') {
|
|
895
|
-
name =
|
|
888
|
+
name = convertQuarterToDate(name);
|
|
896
889
|
} else if (x_axis_date_granularity === 'year') {
|
|
897
890
|
// set the date to the first day of the year, and set the time to 8:05, cause the time zone is UTC+8,
|
|
898
891
|
// need to ensure time is at the range of user's slected time
|
|
@@ -972,8 +965,8 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
972
965
|
let value = rawValue;
|
|
973
966
|
let formatted_value = value;
|
|
974
967
|
if (isAdvanced) {
|
|
975
|
-
value =
|
|
976
|
-
formatted_value =
|
|
968
|
+
value = getSummaryResult(rawValue, y_axis_summary_method, data.precision);
|
|
969
|
+
formatted_value = getFormattedValue(value, summaryColumn, y_axis_summary_method);
|
|
977
970
|
}
|
|
978
971
|
rangeResult.push({
|
|
979
972
|
name: item[0],
|
|
@@ -994,8 +987,8 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
994
987
|
const rows = item[1].rows;
|
|
995
988
|
let formatted_value = value;
|
|
996
989
|
if (isAdvanced) {
|
|
997
|
-
value =
|
|
998
|
-
formatted_value =
|
|
990
|
+
value = getSummaryResult(item[1].value, y_axis_summary_method, data.precision);
|
|
991
|
+
formatted_value = getFormattedValue(value, summaryColumn, y_axis_summary_method);
|
|
999
992
|
}
|
|
1000
993
|
const newItem = {
|
|
1001
994
|
name: dateRangeItem.name,
|
|
@@ -1019,10 +1012,10 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
1019
1012
|
if (comparedResult.length > rangeResult.length) {
|
|
1020
1013
|
comparedResult = comparedResult.slice(0, rangeResult.length);
|
|
1021
1014
|
}
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1015
|
+
BaseUtils.updateSummaryValuePrecision(comparedResult, summaryColumn, 'value');
|
|
1016
|
+
BaseUtils.updateSummaryValuePrecision(rangeResult, summaryColumn, 'value');
|
|
1017
|
+
BaseUtils.sortCharts(rangeResult, groupbyColumn, 'name');
|
|
1018
|
+
BaseUtils.sortCharts(comparedResult, groupbyColumn, 'name');
|
|
1026
1019
|
return [...comparedResult, ...rangeResult];
|
|
1027
1020
|
};
|
|
1028
1021
|
SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
@@ -1039,7 +1032,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1039
1032
|
table_id,
|
|
1040
1033
|
y_axis_left_group_by_numeric_columns
|
|
1041
1034
|
} = config;
|
|
1042
|
-
const table =
|
|
1035
|
+
const table = getTableById(tables, table_id);
|
|
1043
1036
|
const {
|
|
1044
1037
|
groupbyColumn,
|
|
1045
1038
|
summaryColumn
|
|
@@ -1053,7 +1046,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1053
1046
|
sqlRightSummaryColumnKey,
|
|
1054
1047
|
sqlLeftSummaryColumnKey
|
|
1055
1048
|
} = chartSQLMap;
|
|
1056
|
-
const isGroupbyColumnDataAsAnArray =
|
|
1049
|
+
const isGroupbyColumnDataAsAnArray = findIfColumnDataIsArray(groupbyColumn);
|
|
1057
1050
|
let result = [];
|
|
1058
1051
|
if (!y_axis_left_group_by_multiple_numeric_column) {
|
|
1059
1052
|
// let leftSummaryColumn, rightSummaryColumn;
|
|
@@ -1080,7 +1073,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1080
1073
|
if (itemIdx < 0) {
|
|
1081
1074
|
result.push({
|
|
1082
1075
|
// color is defined by index of the name
|
|
1083
|
-
color:
|
|
1076
|
+
color: STYLE_COLORS[0].colors[index % 12],
|
|
1084
1077
|
name: null,
|
|
1085
1078
|
rows: [row],
|
|
1086
1079
|
value_left: valueLeft,
|
|
@@ -1097,7 +1090,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1097
1090
|
let itemIdx = result.findIndex(v => v.name === item);
|
|
1098
1091
|
if (itemIdx < 0) {
|
|
1099
1092
|
result.push({
|
|
1100
|
-
color:
|
|
1093
|
+
color: STYLE_COLORS[0].colors[index % 12],
|
|
1101
1094
|
name: item,
|
|
1102
1095
|
rows: [row],
|
|
1103
1096
|
value_left: valueLeft,
|
|
@@ -1115,7 +1108,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1115
1108
|
let itemIdx = result.findIndex(v => v.name === key);
|
|
1116
1109
|
if (itemIdx < 0) {
|
|
1117
1110
|
result.push({
|
|
1118
|
-
color:
|
|
1111
|
+
color: STYLE_COLORS[0].colors[index % 12],
|
|
1119
1112
|
name: key,
|
|
1120
1113
|
rows: [row],
|
|
1121
1114
|
value_left: valueLeft,
|
|
@@ -1135,11 +1128,11 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1135
1128
|
// rightSummaryColumn = getTableColumnByKey(table, y_axis_right_summary_column);
|
|
1136
1129
|
// }
|
|
1137
1130
|
const groupItems = [];
|
|
1138
|
-
let leftSummaryColumn =
|
|
1131
|
+
let leftSummaryColumn = getTableColumnByKey(table, y_axis_left_summary_column);
|
|
1139
1132
|
const summaryMethod = y_axis_left_summary_method.toUpperCase();
|
|
1140
1133
|
const {
|
|
1141
1134
|
key
|
|
1142
|
-
} =
|
|
1135
|
+
} = summaryMethodColumn2SqlColumn(summaryMethod, leftSummaryColumn || {});
|
|
1143
1136
|
const groupItem = {
|
|
1144
1137
|
sqlName: key,
|
|
1145
1138
|
column: leftSummaryColumn
|
|
@@ -1149,12 +1142,12 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1149
1142
|
groupItems.push(groupItem);
|
|
1150
1143
|
}
|
|
1151
1144
|
y_axis_left_group_by_numeric_columns.forEach((item, index) => {
|
|
1152
|
-
const column =
|
|
1145
|
+
const column = getTableColumnByKey(table, item.column_key);
|
|
1153
1146
|
if (column) {
|
|
1154
1147
|
const itemSummaryMethod = item.summary_method.toUpperCase();
|
|
1155
1148
|
const {
|
|
1156
1149
|
key
|
|
1157
|
-
} =
|
|
1150
|
+
} = summaryMethodColumn2SqlColumn(itemSummaryMethod, column || {});
|
|
1158
1151
|
const groupItem = {
|
|
1159
1152
|
sqlName: key,
|
|
1160
1153
|
column
|
|
@@ -1195,7 +1188,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1195
1188
|
rows: [item],
|
|
1196
1189
|
group_name: groupName,
|
|
1197
1190
|
// for multiple numeric_columns, color is defined by group_name
|
|
1198
|
-
color:
|
|
1191
|
+
color: STYLE_COLORS[0].colors[index % 12]
|
|
1199
1192
|
});
|
|
1200
1193
|
} else {
|
|
1201
1194
|
const itemRow = result[itemIdx];
|
|
@@ -1220,16 +1213,16 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1220
1213
|
value_right: valueRight,
|
|
1221
1214
|
rows: [item],
|
|
1222
1215
|
group_name: groupName,
|
|
1223
|
-
color:
|
|
1216
|
+
color: STYLE_COLORS[0].colors[index % 12]
|
|
1224
1217
|
});
|
|
1225
1218
|
});
|
|
1226
1219
|
}
|
|
1227
1220
|
}
|
|
1228
1221
|
}
|
|
1229
|
-
await
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1222
|
+
await BaseUtils.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
|
|
1223
|
+
BaseUtils.sortCharts(result, groupbyColumn, 'name');
|
|
1224
|
+
BaseUtils.updateSummaryValuePrecision(result, summaryColumnLeft, 'value_left');
|
|
1225
|
+
BaseUtils.updateSummaryValuePrecision(result, summaryColumnRight, 'value_right');
|
|
1233
1226
|
return result;
|
|
1234
1227
|
};
|
|
1235
1228
|
SQLStatisticsUtils.dashboardSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
@@ -1245,17 +1238,17 @@ SQLStatisticsUtils.dashboardSQLResult2JavaScript = (chart, sqlRows, chartSQLMap,
|
|
|
1245
1238
|
total_value_column_key,
|
|
1246
1239
|
table_id
|
|
1247
1240
|
} = config;
|
|
1248
|
-
const table =
|
|
1249
|
-
const targetColumn =
|
|
1250
|
-
const totalColumn =
|
|
1241
|
+
const table = getTableById(tables, table_id);
|
|
1242
|
+
const targetColumn = getTableColumnByKey(table, target_value_column_key);
|
|
1243
|
+
const totalColumn = getTableColumnByKey(table, total_value_column_key);
|
|
1251
1244
|
const targetSummaryMethod = target_value_column_summary_method.toUpperCase();
|
|
1252
1245
|
const totalSummaryMethod = total_value_column_summary_method.toUpperCase();
|
|
1253
1246
|
const {
|
|
1254
1247
|
key: targetResultKey
|
|
1255
|
-
} =
|
|
1248
|
+
} = summaryMethodColumn2SqlColumn(targetSummaryMethod, targetColumn);
|
|
1256
1249
|
const {
|
|
1257
1250
|
key: totalResultKey
|
|
1258
|
-
} =
|
|
1251
|
+
} = summaryMethodColumn2SqlColumn(totalSummaryMethod, totalColumn);
|
|
1259
1252
|
const targetResult = summaryResult[targetResultKey];
|
|
1260
1253
|
const totalResult = summaryResult[totalResultKey];
|
|
1261
1254
|
if (totalResult === 0) {
|
|
@@ -1310,12 +1303,12 @@ SQLStatisticsUtils.groupingTwoDimensionChartSQLResult2JavaScript = async (chart,
|
|
|
1310
1303
|
sqlSummaryColumnKey
|
|
1311
1304
|
} = chartSQLMap;
|
|
1312
1305
|
let result = [];
|
|
1313
|
-
const isGroupbyColumnDataAsAnArray =
|
|
1314
|
-
const isColumnGroupbyColumnDataAsAnArray =
|
|
1306
|
+
const isGroupbyColumnDataAsAnArray = findIfColumnDataIsArray(groupbyColumn);
|
|
1307
|
+
const isColumnGroupbyColumnDataAsAnArray = findIfColumnDataIsArray(columnGroupbyColumn);
|
|
1315
1308
|
for (const row of sqlRows) {
|
|
1316
1309
|
const groupbyColumnCellValue = row[sqlGroupbyColumnKey];
|
|
1317
1310
|
const groupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(groupbyColumnCellValue, groupbyColumn, chart.config);
|
|
1318
|
-
if (
|
|
1311
|
+
if (BaseUtils.isValidCellValue(groupbyColumnCellValueKey, includeEmpty)) {
|
|
1319
1312
|
const columnGroupbyColumnCellValue = row[sqlColumnGroupbyColumnKey];
|
|
1320
1313
|
const columnGroupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(columnGroupbyColumnCellValue, columnGroupbyColumn, chart.config);
|
|
1321
1314
|
const count = row[sqlSummaryColumnKey];
|
|
@@ -1336,6 +1329,8 @@ SQLStatisticsUtils.groupingTwoDimensionChartSQLResult2JavaScript = async (chart,
|
|
|
1336
1329
|
// fill empty group name with value 0
|
|
1337
1330
|
const allGroupNames = new Set();
|
|
1338
1331
|
const nameGroupMap = new Map();
|
|
1332
|
+
const nameRawValueMap = new Map();
|
|
1333
|
+
const groupNameRawValueMap = new Map();
|
|
1339
1334
|
result.forEach(item => {
|
|
1340
1335
|
const {
|
|
1341
1336
|
name,
|
|
@@ -1346,8 +1341,18 @@ SQLStatisticsUtils.groupingTwoDimensionChartSQLResult2JavaScript = async (chart,
|
|
|
1346
1341
|
nameGroupMap.set(name, new Set());
|
|
1347
1342
|
}
|
|
1348
1343
|
nameGroupMap.get(name).add(groupName);
|
|
1344
|
+
if (!nameRawValueMap.has(name)) {
|
|
1345
|
+
var _item$rows$;
|
|
1346
|
+
const rawName = (_item$rows$ = item.rows[0]) === null || _item$rows$ === void 0 ? void 0 : _item$rows$[sqlGroupbyColumnKey];
|
|
1347
|
+
nameRawValueMap.set(name, isGroupbyColumnDataAsAnArray ? name : rawName !== null && rawName !== void 0 ? rawName : name);
|
|
1348
|
+
}
|
|
1349
|
+
if (groupName && !groupNameRawValueMap.has(groupName)) {
|
|
1350
|
+
var _item$rows$2;
|
|
1351
|
+
const rawGroupName = (_item$rows$2 = item.rows[0]) === null || _item$rows$2 === void 0 ? void 0 : _item$rows$2[sqlColumnGroupbyColumnKey];
|
|
1352
|
+
groupNameRawValueMap.set(groupName, isColumnGroupbyColumnDataAsAnArray ? groupName : rawGroupName !== null && rawGroupName !== void 0 ? rawGroupName : groupName);
|
|
1353
|
+
}
|
|
1349
1354
|
});
|
|
1350
|
-
const isEmptyGroupName = groupName => groupName
|
|
1355
|
+
const isEmptyGroupName = groupName => isEmpty(groupName);
|
|
1351
1356
|
const groupNameList = Array.from(allGroupNames).sort((a, b) => {
|
|
1352
1357
|
const aEmpty = isEmptyGroupName(a);
|
|
1353
1358
|
const bEmpty = isEmptyGroupName(b);
|
|
@@ -1358,9 +1363,14 @@ SQLStatisticsUtils.groupingTwoDimensionChartSQLResult2JavaScript = async (chart,
|
|
|
1358
1363
|
nameGroupMap.forEach((groupSet, name) => {
|
|
1359
1364
|
groupNameList.forEach(groupName => {
|
|
1360
1365
|
if (!groupSet.has(groupName)) {
|
|
1366
|
+
var _nameRawValueMap$get, _groupNameRawValueMap;
|
|
1367
|
+
const rawName = (_nameRawValueMap$get = nameRawValueMap.get(name)) !== null && _nameRawValueMap$get !== void 0 ? _nameRawValueMap$get : name;
|
|
1368
|
+
const rawGroupName = (_groupNameRawValueMap = groupNameRawValueMap.get(groupName)) !== null && _groupNameRawValueMap !== void 0 ? _groupNameRawValueMap : groupName;
|
|
1361
1369
|
result.push({
|
|
1362
1370
|
name,
|
|
1363
1371
|
rows: [],
|
|
1372
|
+
original_name: rawName,
|
|
1373
|
+
original_group_name: rawGroupName,
|
|
1364
1374
|
group_name: groupName,
|
|
1365
1375
|
value: 0
|
|
1366
1376
|
});
|
|
@@ -1395,10 +1405,10 @@ SQLStatisticsUtils.groupingTwoDimensionChartSQLResult2JavaScript = async (chart,
|
|
|
1395
1405
|
orderedResult.push(...items);
|
|
1396
1406
|
});
|
|
1397
1407
|
result.splice(0, result.length, ...orderedResult);
|
|
1398
|
-
|
|
1399
|
-
await
|
|
1400
|
-
await
|
|
1401
|
-
|
|
1408
|
+
BaseUtils.sortCharts(result, groupbyColumn, 'name');
|
|
1409
|
+
await BaseUtils.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
|
|
1410
|
+
await BaseUtils.updateTableViewList(result, columnGroupbyColumn, 'group_name', 'group_color', false, false);
|
|
1411
|
+
BaseUtils.updateSummaryValuePrecision(result, summaryColumn, 'value');
|
|
1402
1412
|
return result;
|
|
1403
1413
|
};
|
|
1404
1414
|
SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
@@ -1417,7 +1427,7 @@ SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, ch
|
|
|
1417
1427
|
summaryColumn,
|
|
1418
1428
|
summaryColumnsWithMethod
|
|
1419
1429
|
} = columnMap;
|
|
1420
|
-
if (y_axis_summary_type ===
|
|
1430
|
+
if (y_axis_summary_type === CHART_SUMMARY_TYPE.COUNT) {
|
|
1421
1431
|
if (!columnGroupbyColumn) return await _SQLStatisticsUtils.basicChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables);
|
|
1422
1432
|
return await _SQLStatisticsUtils.groupingTwoDimensionChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables);
|
|
1423
1433
|
}
|
|
@@ -1429,11 +1439,11 @@ SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, ch
|
|
|
1429
1439
|
summaryColumns
|
|
1430
1440
|
} = chartSQLMap;
|
|
1431
1441
|
let result = [];
|
|
1432
|
-
const isGroupbyColumnDataAsAnArray =
|
|
1442
|
+
const isGroupbyColumnDataAsAnArray = findIfColumnDataIsArray(groupbyColumn);
|
|
1433
1443
|
for (const row of sqlRows) {
|
|
1434
1444
|
const groupbyColumnCellValue = row[sqlGroupbyColumnKey];
|
|
1435
1445
|
const groupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(groupbyColumnCellValue, groupbyColumn, chart.config);
|
|
1436
|
-
if (
|
|
1446
|
+
if (BaseUtils.isValidCellValue(groupbyColumnCellValueKey, includeEmpty)) {
|
|
1437
1447
|
Object.keys(summaryColumns).forEach(sqlSummaryColumnName => {
|
|
1438
1448
|
const {
|
|
1439
1449
|
sqlSummaryColumnKey,
|
|
@@ -1454,8 +1464,8 @@ SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, ch
|
|
|
1454
1464
|
});
|
|
1455
1465
|
}
|
|
1456
1466
|
}
|
|
1457
|
-
|
|
1458
|
-
await
|
|
1467
|
+
BaseUtils.sortCharts(result, groupbyColumn, 'name');
|
|
1468
|
+
await BaseUtils.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
|
|
1459
1469
|
const allSummaryColumns = [summaryColumn].concat(summaryColumnsWithMethod.map(item => item.column));
|
|
1460
1470
|
|
|
1461
1471
|
// format precision of enabled precision columns
|
|
@@ -1468,7 +1478,7 @@ SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, ch
|
|
|
1468
1478
|
});
|
|
1469
1479
|
Object.values(columnNameResultMap).forEach(items => {
|
|
1470
1480
|
const targetColumn = allSummaryColumns.find(column => column.name === items[0].group_name);
|
|
1471
|
-
|
|
1481
|
+
BaseUtils.updateSummaryValuePrecision(items, targetColumn, 'value');
|
|
1472
1482
|
});
|
|
1473
1483
|
return result;
|
|
1474
1484
|
}
|
|
@@ -1491,11 +1501,11 @@ SQLStatisticsUtils.heatMapChartSQLResult2JavaScript = (chart, sqlRows, chartSQLM
|
|
|
1491
1501
|
if (currentValue || currentValue === 0) {
|
|
1492
1502
|
let value = item[sqlSummaryColumnKey];
|
|
1493
1503
|
if (summaryColumn) {
|
|
1494
|
-
value =
|
|
1504
|
+
value = formatNumericValue(value, summaryColumn);
|
|
1495
1505
|
}
|
|
1496
1506
|
const name = typeof currentValue === 'string' ? currentValue : currentValue.country_region;
|
|
1497
1507
|
result.push({
|
|
1498
|
-
name: (
|
|
1508
|
+
name: dayjs(name).format('YYYY-MM-DD'),
|
|
1499
1509
|
value
|
|
1500
1510
|
});
|
|
1501
1511
|
}
|
|
@@ -1507,12 +1517,12 @@ SQLStatisticsUtils.heatMapChartSQLResult2JavaScript = (chart, sqlRows, chartSQLM
|
|
|
1507
1517
|
data.push(item);
|
|
1508
1518
|
return;
|
|
1509
1519
|
}
|
|
1510
|
-
const year = (
|
|
1520
|
+
const year = dayjs(item.name).year();
|
|
1511
1521
|
data.push({
|
|
1512
1522
|
...item,
|
|
1513
1523
|
year
|
|
1514
1524
|
});
|
|
1515
|
-
if (years.indexOf(year) < 0) {
|
|
1525
|
+
if (!isNaN(year) && years.indexOf(year) < 0) {
|
|
1516
1526
|
years.push(year);
|
|
1517
1527
|
}
|
|
1518
1528
|
});
|
|
@@ -1521,6 +1531,7 @@ SQLStatisticsUtils.heatMapChartSQLResult2JavaScript = (chart, sqlRows, chartSQLM
|
|
|
1521
1531
|
if (current.year < next.year) return 1;
|
|
1522
1532
|
return 0;
|
|
1523
1533
|
});
|
|
1534
|
+
years.sort((current, next) => next - current);
|
|
1524
1535
|
return {
|
|
1525
1536
|
data,
|
|
1526
1537
|
years
|
|
@@ -1545,7 +1556,7 @@ SQLStatisticsUtils.mirrorMapChartSQLResult2JavaScript = async (chart, sqlRows, c
|
|
|
1545
1556
|
const {
|
|
1546
1557
|
sqlSummaryColumnKey
|
|
1547
1558
|
} = chartSQLMap;
|
|
1548
|
-
const isAdvanced = summary_type ===
|
|
1559
|
+
const isAdvanced = summary_type === CHART_SUMMARY_TYPE.ADVANCED;
|
|
1549
1560
|
const newResult = [];
|
|
1550
1561
|
const groupData = _SQLStatisticsUtils.getGroupData(sqlRows, columnGroupbyColumn);
|
|
1551
1562
|
if (groupData.length > 0) {
|
|
@@ -1561,8 +1572,8 @@ SQLStatisticsUtils.mirrorMapChartSQLResult2JavaScript = async (chart, sqlRows, c
|
|
|
1561
1572
|
let value = item[sqlSummaryColumnKey];
|
|
1562
1573
|
let formattedValue = value;
|
|
1563
1574
|
if (isAdvanced) {
|
|
1564
|
-
value =
|
|
1565
|
-
formattedValue =
|
|
1575
|
+
value = formatNumericValue(value, summaryColumn);
|
|
1576
|
+
formattedValue = getFormattedValue(value, summary_column_key, summary_method);
|
|
1566
1577
|
}
|
|
1567
1578
|
newResult.push({
|
|
1568
1579
|
name: label,
|
|
@@ -1570,7 +1581,7 @@ SQLStatisticsUtils.mirrorMapChartSQLResult2JavaScript = async (chart, sqlRows, c
|
|
|
1570
1581
|
value: equal2GroupData0 ? value : 0,
|
|
1571
1582
|
formatted_value: equal2GroupData0 ? formattedValue : 0,
|
|
1572
1583
|
group_name: ((_groupData$ = groupData[0]) === null || _groupData$ === void 0 ? void 0 : _groupData$.name) || '',
|
|
1573
|
-
color: ((_groupData$2 = groupData[0]) === null || _groupData$2 === void 0 ? void 0 : _groupData$2.color) ||
|
|
1584
|
+
color: ((_groupData$2 = groupData[0]) === null || _groupData$2 === void 0 ? void 0 : _groupData$2.color) || STYLE_COLORS[0].colors[0],
|
|
1574
1585
|
rows: [item]
|
|
1575
1586
|
});
|
|
1576
1587
|
groupData[1] && newResult.push({
|
|
@@ -1579,7 +1590,7 @@ SQLStatisticsUtils.mirrorMapChartSQLResult2JavaScript = async (chart, sqlRows, c
|
|
|
1579
1590
|
value: equal2GroupData1 ? value : 0,
|
|
1580
1591
|
formatted_value: equal2GroupData1 ? formattedValue : 0,
|
|
1581
1592
|
group_name: ((_groupData$3 = groupData[1]) === null || _groupData$3 === void 0 ? void 0 : _groupData$3.name) || '',
|
|
1582
|
-
color: ((_groupData$4 = groupData[1]) === null || _groupData$4 === void 0 ? void 0 : _groupData$4.color) ||
|
|
1593
|
+
color: ((_groupData$4 = groupData[1]) === null || _groupData$4 === void 0 ? void 0 : _groupData$4.color) || STYLE_COLORS[0].colors[0],
|
|
1583
1594
|
rows: [item]
|
|
1584
1595
|
});
|
|
1585
1596
|
}
|
|
@@ -1610,14 +1621,14 @@ SQLStatisticsUtils.trendMapChartSQLResult2JavaScript = (chart, sqlRows, chartSQL
|
|
|
1610
1621
|
const {
|
|
1611
1622
|
compareValue: value1,
|
|
1612
1623
|
comparedValue: value2
|
|
1613
|
-
} =
|
|
1624
|
+
} = BaseUtils.summaryDurationResult(sqlRows, date_granularity, summary_type, summary_method, true, sqlGroupbyColumnKey, sqlSummaryColumnKey);
|
|
1614
1625
|
compareValue = value1;
|
|
1615
1626
|
comparedValue = value2;
|
|
1616
1627
|
} else {
|
|
1617
1628
|
const {
|
|
1618
1629
|
compareDate,
|
|
1619
1630
|
comparedDate
|
|
1620
|
-
} =
|
|
1631
|
+
} = getCompareDate(date_granularity, 'app');
|
|
1621
1632
|
for (const item of sqlRows) {
|
|
1622
1633
|
if (!item[sqlGroupbyColumnKey]) continue;
|
|
1623
1634
|
const currentDate = item[sqlGroupbyColumnKey] + '';
|
|
@@ -1647,11 +1658,11 @@ SQLStatisticsUtils.trendMapChartSQLResult2JavaScript = (chart, sqlRows, chartSQL
|
|
|
1647
1658
|
}
|
|
1648
1659
|
let type;
|
|
1649
1660
|
if (compareValue > comparedValue) {
|
|
1650
|
-
type =
|
|
1661
|
+
type = TREND_TYPES.UP;
|
|
1651
1662
|
} else if (compareValue < comparedValue) {
|
|
1652
|
-
type =
|
|
1663
|
+
type = TREND_TYPES.DOWN;
|
|
1653
1664
|
} else if (compareValue === comparedValue) {
|
|
1654
|
-
type =
|
|
1665
|
+
type = TREND_TYPES.EQUAL;
|
|
1655
1666
|
}
|
|
1656
1667
|
if (compareValue === 0 && comparedValue === 0) {
|
|
1657
1668
|
result = '0%';
|
|
@@ -1668,15 +1679,15 @@ SQLStatisticsUtils.sqlResult2JavaScript = async (chart, sqlRows, chartSQLMap, co
|
|
|
1668
1679
|
type
|
|
1669
1680
|
} = chart.config;
|
|
1670
1681
|
switch (type) {
|
|
1671
|
-
case
|
|
1682
|
+
case CHART_TYPE.TABLE_ELEMENT:
|
|
1672
1683
|
{
|
|
1673
1684
|
return {
|
|
1674
1685
|
result: sqlRows
|
|
1675
1686
|
};
|
|
1676
1687
|
}
|
|
1677
|
-
case
|
|
1688
|
+
case CHART_TYPE.TABLE:
|
|
1678
1689
|
{
|
|
1679
|
-
sqlRows =
|
|
1690
|
+
sqlRows = BaseUtils.recalculateAvg(sqlRows);
|
|
1680
1691
|
const {
|
|
1681
1692
|
column_groupby_column_key
|
|
1682
1693
|
} = chart.config;
|
|
@@ -1692,106 +1703,106 @@ SQLStatisticsUtils.sqlResult2JavaScript = async (chart, sqlRows, chartSQLMap, co
|
|
|
1692
1703
|
}
|
|
1693
1704
|
return result;
|
|
1694
1705
|
}
|
|
1695
|
-
case
|
|
1696
|
-
case
|
|
1697
|
-
case
|
|
1706
|
+
case CHART_TYPE.PIE:
|
|
1707
|
+
case CHART_TYPE.RING:
|
|
1708
|
+
case CHART_TYPE.TREE_MAP:
|
|
1698
1709
|
{
|
|
1699
1710
|
return {
|
|
1700
1711
|
result: await _SQLStatisticsUtils.basicChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1701
1712
|
};
|
|
1702
1713
|
}
|
|
1703
|
-
case
|
|
1714
|
+
case CHART_TYPE.BASIC_NUMBER_CARD:
|
|
1704
1715
|
{
|
|
1705
1716
|
return {
|
|
1706
1717
|
result: _SQLStatisticsUtils.basicNumberCardSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1707
1718
|
};
|
|
1708
1719
|
}
|
|
1709
|
-
case
|
|
1720
|
+
case CHART_TYPE.DASHBOARD:
|
|
1710
1721
|
{
|
|
1711
1722
|
return {
|
|
1712
1723
|
result: _SQLStatisticsUtils.dashboardSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1713
1724
|
};
|
|
1714
1725
|
}
|
|
1715
|
-
case
|
|
1716
|
-
case
|
|
1717
|
-
case
|
|
1718
|
-
case
|
|
1719
|
-
case
|
|
1726
|
+
case CHART_TYPE.BAR:
|
|
1727
|
+
case CHART_TYPE.LINE:
|
|
1728
|
+
case CHART_TYPE.HORIZONTAL_BAR:
|
|
1729
|
+
case CHART_TYPE.AREA:
|
|
1730
|
+
case CHART_TYPE.FUNNEL:
|
|
1720
1731
|
{
|
|
1721
1732
|
return {
|
|
1722
1733
|
result: await _SQLStatisticsUtils.basicChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1723
1734
|
};
|
|
1724
1735
|
}
|
|
1725
|
-
case
|
|
1726
|
-
case
|
|
1736
|
+
case CHART_TYPE.COMPLETENESS:
|
|
1737
|
+
case CHART_TYPE.COMPLETENESS_GROUP:
|
|
1727
1738
|
{
|
|
1728
1739
|
const result = await _SQLStatisticsUtils.completenessSQlResult(chart, sqlRows, chartSQLMap, tables);
|
|
1729
1740
|
return {
|
|
1730
1741
|
result
|
|
1731
1742
|
};
|
|
1732
1743
|
}
|
|
1733
|
-
case
|
|
1744
|
+
case CHART_TYPE.COMBINATION:
|
|
1734
1745
|
{
|
|
1735
1746
|
return {
|
|
1736
1747
|
result: await _SQLStatisticsUtils.combinationSQLResult2Javascript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1737
1748
|
};
|
|
1738
1749
|
}
|
|
1739
|
-
case
|
|
1750
|
+
case CHART_TYPE.COMPARE_BAR:
|
|
1740
1751
|
{
|
|
1741
1752
|
return {
|
|
1742
1753
|
result: await _SQLStatisticsUtils.compareSQLResult2Javascript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1743
1754
|
};
|
|
1744
1755
|
}
|
|
1745
|
-
case
|
|
1746
|
-
case
|
|
1747
|
-
case
|
|
1748
|
-
case
|
|
1749
|
-
case
|
|
1750
|
-
case
|
|
1756
|
+
case CHART_TYPE.BAR_GROUP:
|
|
1757
|
+
case CHART_TYPE.BAR_STACK:
|
|
1758
|
+
case CHART_TYPE.LINE_GROUP:
|
|
1759
|
+
case CHART_TYPE.AREA_GROUP:
|
|
1760
|
+
case CHART_TYPE.HORIZONTAL_GROUP_BAR:
|
|
1761
|
+
case CHART_TYPE.STACKED_HORIZONTAL_BAR:
|
|
1751
1762
|
{
|
|
1752
1763
|
return {
|
|
1753
1764
|
result: await _SQLStatisticsUtils.groupingChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1754
1765
|
};
|
|
1755
1766
|
}
|
|
1756
|
-
case
|
|
1767
|
+
case CHART_TYPE.SCATTER:
|
|
1757
1768
|
{
|
|
1758
1769
|
return {
|
|
1759
1770
|
result: await _SQLStatisticsUtils.scatterSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1760
1771
|
};
|
|
1761
1772
|
}
|
|
1762
|
-
case
|
|
1773
|
+
case CHART_TYPE.BAR_CUSTOM:
|
|
1763
1774
|
{
|
|
1764
1775
|
return {
|
|
1765
1776
|
result: await _SQLStatisticsUtils.customChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables, params)
|
|
1766
1777
|
};
|
|
1767
1778
|
}
|
|
1768
|
-
case
|
|
1769
|
-
case
|
|
1779
|
+
case CHART_TYPE.MAP:
|
|
1780
|
+
case CHART_TYPE.MAP_BUBBLE:
|
|
1770
1781
|
{
|
|
1771
1782
|
return {
|
|
1772
1783
|
result: _SQLStatisticsUtils.mapSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1773
1784
|
};
|
|
1774
1785
|
}
|
|
1775
|
-
case
|
|
1776
|
-
case
|
|
1786
|
+
case CHART_TYPE.WORLD_MAP:
|
|
1787
|
+
case CHART_TYPE.WORLD_MAP_BUBBLE:
|
|
1777
1788
|
{
|
|
1778
1789
|
return {
|
|
1779
1790
|
result: _SQLStatisticsUtils.worldMapSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1780
1791
|
};
|
|
1781
1792
|
}
|
|
1782
|
-
case
|
|
1793
|
+
case CHART_TYPE.HEAT_MAP:
|
|
1783
1794
|
{
|
|
1784
1795
|
return {
|
|
1785
1796
|
result: _SQLStatisticsUtils.heatMapChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1786
1797
|
};
|
|
1787
1798
|
}
|
|
1788
|
-
case
|
|
1799
|
+
case CHART_TYPE.MIRROR:
|
|
1789
1800
|
{
|
|
1790
1801
|
return {
|
|
1791
1802
|
result: await _SQLStatisticsUtils.mirrorMapChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1792
1803
|
};
|
|
1793
1804
|
}
|
|
1794
|
-
case
|
|
1805
|
+
case CHART_TYPE.TREND:
|
|
1795
1806
|
{
|
|
1796
1807
|
return {
|
|
1797
1808
|
result: _SQLStatisticsUtils.trendMapChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
@@ -1821,23 +1832,23 @@ SQLStatisticsUtils.completenessSQlResult = async (chart, sqlRows, chartSQLMap, t
|
|
|
1821
1832
|
target_column,
|
|
1822
1833
|
column_groupby_column
|
|
1823
1834
|
} = sqlColumns;
|
|
1824
|
-
const nameColumnDataAsAnArray =
|
|
1835
|
+
const nameColumnDataAsAnArray = findIfColumnDataIsArray(name_column);
|
|
1825
1836
|
// group by name_column, so it can only have one value
|
|
1826
|
-
let originalSqlRows =
|
|
1837
|
+
let originalSqlRows = cloneDeep(sqlRows);
|
|
1827
1838
|
if (nameColumnDataAsAnArray) {
|
|
1828
1839
|
sqlRows.forEach(row => {
|
|
1829
1840
|
var _row$name_column$key;
|
|
1830
1841
|
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
1842
|
});
|
|
1832
1843
|
}
|
|
1833
|
-
await
|
|
1834
|
-
if (sqlColumnGroupbyColumnKey) await
|
|
1844
|
+
await BaseUtils.updateTableViewList(sqlRows, name_column, name_column.key, 'color', false, true);
|
|
1845
|
+
if (sqlColumnGroupbyColumnKey) await BaseUtils.updateTableViewList(sqlRows, column_groupby_column, sqlColumnGroupbyColumnKey, 'color', false, false);
|
|
1835
1846
|
const res = [];
|
|
1836
1847
|
sqlRows.forEach((row, index) => {
|
|
1837
1848
|
const nameValue = row[name_column.key];
|
|
1838
1849
|
const targetValue = row[`SUM(${target_column.name})`];
|
|
1839
1850
|
const completedValue = row[`SUM(${completed_column.name})`];
|
|
1840
|
-
const groupby = row[sqlColumnGroupbyColumnKey] ||
|
|
1851
|
+
const groupby = row[sqlColumnGroupbyColumnKey] || intl.get('Empty');
|
|
1841
1852
|
let completedRate;
|
|
1842
1853
|
if (!targetValue && completedValue) {
|
|
1843
1854
|
completedRate = 100;
|
|
@@ -1854,7 +1865,7 @@ SQLStatisticsUtils.completenessSQlResult = async (chart, sqlRows, chartSQLMap, t
|
|
|
1854
1865
|
original_name,
|
|
1855
1866
|
group_name: 'completed',
|
|
1856
1867
|
groupby,
|
|
1857
|
-
color: row.color ||
|
|
1868
|
+
color: row.color || CHART_STYLE_COLORS[0],
|
|
1858
1869
|
value: completedValue,
|
|
1859
1870
|
rows: [originalSqlRows[index]]
|
|
1860
1871
|
});
|
|
@@ -1878,12 +1889,11 @@ SQLStatisticsUtils.completenessSQlResult = async (chart, sqlRows, chartSQLMap, t
|
|
|
1878
1889
|
return 1;
|
|
1879
1890
|
}
|
|
1880
1891
|
});
|
|
1881
|
-
|
|
1882
|
-
// deduplicate by (name, group_name)
|
|
1892
|
+
const isGroup = chart.config.type === CHART_TYPE.COMPLETENESS_GROUP;
|
|
1883
1893
|
const deduplicatedRes = [];
|
|
1884
1894
|
const keyMap = {};
|
|
1885
1895
|
res.forEach(item => {
|
|
1886
|
-
const key = `${item.name}_${item.group_name}`;
|
|
1896
|
+
const key = isGroup ? `${item.name}_${item.groupby}_${item.group_name}` : `${item.name}_${item.group_name}`;
|
|
1887
1897
|
if (!keyMap[key]) {
|
|
1888
1898
|
keyMap[key] = item;
|
|
1889
1899
|
deduplicatedRes.push(item);
|
|
@@ -1912,11 +1922,11 @@ SQLStatisticsUtils.scatterSQLResult2JavaScript = async (chart, sqlRows, chartSQL
|
|
|
1912
1922
|
summaryColumn
|
|
1913
1923
|
} = columnMap;
|
|
1914
1924
|
// format sql rows
|
|
1915
|
-
const originalSqlRows =
|
|
1925
|
+
const originalSqlRows = cloneDeep(sqlRows);
|
|
1916
1926
|
const isScatter = true;
|
|
1917
|
-
await
|
|
1918
|
-
await
|
|
1919
|
-
if (sqlColumnGroupbyColumnKey) await
|
|
1927
|
+
await BaseUtils.updateTableViewList(sqlRows, groupbyColumn, groupbyColumn.key, 'color', isScatter, true);
|
|
1928
|
+
await BaseUtils.updateTableViewList(sqlRows, summaryColumn, summaryColumn.key, 'color', isScatter, true);
|
|
1929
|
+
if (sqlColumnGroupbyColumnKey) await BaseUtils.updateTableViewList(sqlRows, columnGroupbyColumn, sqlColumnGroupbyColumnKey, 'color', isScatter, false);
|
|
1920
1930
|
const res = [];
|
|
1921
1931
|
sqlRows.forEach((row, index) => {
|
|
1922
1932
|
const xValue = row[sqlXColumnKey];
|
|
@@ -1938,9 +1948,24 @@ SQLStatisticsUtils.scatterSQLResult2JavaScript = async (chart, sqlRows, chartSQL
|
|
|
1938
1948
|
}
|
|
1939
1949
|
});
|
|
1940
1950
|
});
|
|
1941
|
-
|
|
1951
|
+
BaseUtils.sortCharts(res, groupbyColumn, 'name');
|
|
1942
1952
|
return res;
|
|
1943
1953
|
};
|
|
1954
|
+
SQLStatisticsUtils.formatMapGeolocationName = (cellValue, mapLevel, mapLocation) => {
|
|
1955
|
+
if (isEmpty(cellValue)) return '';
|
|
1956
|
+
if (typeof cellValue === 'object' && !Array.isArray(cellValue)) {
|
|
1957
|
+
const granularity = fixGeoGranularity(mapLevel, mapLocation);
|
|
1958
|
+
return getGeolocationByGranularity(cellValue, granularity) || '';
|
|
1959
|
+
}
|
|
1960
|
+
return cellValue;
|
|
1961
|
+
};
|
|
1962
|
+
SQLStatisticsUtils.formatWorldMapGeolocationName = cellValue => {
|
|
1963
|
+
if (isEmpty(cellValue)) return '';
|
|
1964
|
+
if (typeof cellValue === 'object' && !Array.isArray(cellValue)) {
|
|
1965
|
+
return getGeolocationByGranularity(cellValue, GROUP_GEOLOCATION_GRANULARITY.COUNTRY) || '';
|
|
1966
|
+
}
|
|
1967
|
+
return cellValue;
|
|
1968
|
+
};
|
|
1944
1969
|
SQLStatisticsUtils.mapSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
1945
1970
|
const {
|
|
1946
1971
|
sqlGeoColumnKey,
|
|
@@ -1949,6 +1974,10 @@ SQLStatisticsUtils.mapSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, colum
|
|
|
1949
1974
|
const {
|
|
1950
1975
|
groupbyColumn
|
|
1951
1976
|
} = columnMap;
|
|
1977
|
+
const {
|
|
1978
|
+
map_level,
|
|
1979
|
+
map_location
|
|
1980
|
+
} = (chart === null || chart === void 0 ? void 0 : chart.config) || {};
|
|
1952
1981
|
if (groupbyColumn.type === 'link-formula') {
|
|
1953
1982
|
const {
|
|
1954
1983
|
data,
|
|
@@ -1963,9 +1992,10 @@ SQLStatisticsUtils.mapSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, colum
|
|
|
1963
1992
|
return [];
|
|
1964
1993
|
}
|
|
1965
1994
|
const nameValueMap = sqlRows.reduce((acc, row) => {
|
|
1966
|
-
const geoList = row[key];
|
|
1995
|
+
const geoList = row[key] || [];
|
|
1967
1996
|
const value = row[sqlSummaryColumnKey];
|
|
1968
1997
|
geoList.forEach(geo => {
|
|
1998
|
+
if (!geo) return;
|
|
1969
1999
|
const name = geo[geo_format];
|
|
1970
2000
|
if (!acc[name]) {
|
|
1971
2001
|
acc[name] = value;
|
|
@@ -1984,8 +2014,9 @@ SQLStatisticsUtils.mapSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, colum
|
|
|
1984
2014
|
}, []);
|
|
1985
2015
|
} else {
|
|
1986
2016
|
return sqlRows.reduce((acc, row) => {
|
|
1987
|
-
const
|
|
2017
|
+
const rawName = row[sqlGeoColumnKey];
|
|
1988
2018
|
const value = row[sqlSummaryColumnKey];
|
|
2019
|
+
const name = _SQLStatisticsUtils.formatMapGeolocationName(rawName, map_level, map_location);
|
|
1989
2020
|
acc.push({
|
|
1990
2021
|
name,
|
|
1991
2022
|
value
|
|
@@ -2020,9 +2051,10 @@ SQLStatisticsUtils.worldMapSQLResult2JavaScript = (chart, sqlRows, chartSQLMap,
|
|
|
2020
2051
|
return [];
|
|
2021
2052
|
}
|
|
2022
2053
|
const nameValueMap = sqlRows.reduce((acc, row) => {
|
|
2023
|
-
const geoList = row[key];
|
|
2054
|
+
const geoList = row[key] || [];
|
|
2024
2055
|
const value = row[sqlSummaryColumnKey];
|
|
2025
2056
|
geoList.forEach(geo => {
|
|
2057
|
+
if (!geo) return;
|
|
2026
2058
|
const name = geo[geo_format];
|
|
2027
2059
|
if (!acc[name]) {
|
|
2028
2060
|
acc[name] = value;
|
|
@@ -2036,8 +2068,8 @@ SQLStatisticsUtils.worldMapSQLResult2JavaScript = (chart, sqlRows, chartSQLMap,
|
|
|
2036
2068
|
let value = nameValueMap[name];
|
|
2037
2069
|
let formatted_value = value;
|
|
2038
2070
|
if (summary_type === 'advanced') {
|
|
2039
|
-
value =
|
|
2040
|
-
formatted_value =
|
|
2071
|
+
value = formatNumericValue(value, summaryColumn);
|
|
2072
|
+
formatted_value = getFormattedValue(value, summaryColumn, summary_method);
|
|
2041
2073
|
}
|
|
2042
2074
|
acc.push({
|
|
2043
2075
|
name,
|
|
@@ -2053,11 +2085,11 @@ SQLStatisticsUtils.worldMapSQLResult2JavaScript = (chart, sqlRows, chartSQLMap,
|
|
|
2053
2085
|
let value = item[sqlSummaryColumnKey];
|
|
2054
2086
|
let formatted_value = value;
|
|
2055
2087
|
if (summary_type === 'advanced') {
|
|
2056
|
-
value =
|
|
2057
|
-
formatted_value =
|
|
2088
|
+
value = formatNumericValue(value, summaryColumn);
|
|
2089
|
+
formatted_value = getFormattedValue(value, summaryColumn, summary_method);
|
|
2058
2090
|
}
|
|
2059
|
-
|
|
2060
|
-
|
|
2091
|
+
const name = _SQLStatisticsUtils.formatWorldMapGeolocationName(currentValue);
|
|
2092
|
+
if (name) {
|
|
2061
2093
|
result.push({
|
|
2062
2094
|
name,
|
|
2063
2095
|
value,
|
|
@@ -2072,7 +2104,7 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
|
|
|
2072
2104
|
const {
|
|
2073
2105
|
tables
|
|
2074
2106
|
} = value;
|
|
2075
|
-
if (!
|
|
2107
|
+
if (!BaseUtils.isValidExistChart(tables, chart)) {
|
|
2076
2108
|
const tip_message = 'Please_complete_the_chart_configuration_first';
|
|
2077
2109
|
return callback && callback('', tip_message, null);
|
|
2078
2110
|
}
|
|
@@ -2082,7 +2114,7 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
|
|
|
2082
2114
|
type
|
|
2083
2115
|
} = chart;
|
|
2084
2116
|
const chartType = config.type;
|
|
2085
|
-
const newConfig =
|
|
2117
|
+
const newConfig = BaseUtils.convertConfig(config);
|
|
2086
2118
|
const newChart = {
|
|
2087
2119
|
id,
|
|
2088
2120
|
config: newConfig,
|
|
@@ -2091,11 +2123,11 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
|
|
|
2091
2123
|
const {
|
|
2092
2124
|
table_id
|
|
2093
2125
|
} = config;
|
|
2094
|
-
const table =
|
|
2095
|
-
const groupbyColumn =
|
|
2096
|
-
const columnGroupbyColumn =
|
|
2097
|
-
const summaryColumn =
|
|
2098
|
-
const summaryColumnsWithMethod =
|
|
2126
|
+
const table = getTableById(tables, table_id);
|
|
2127
|
+
const groupbyColumn = BaseUtils.getGroupColumn(table, newChart);
|
|
2128
|
+
const columnGroupbyColumn = BaseUtils.getColumnGroupColumn(table, newChart);
|
|
2129
|
+
const summaryColumn = BaseUtils.getSummaryColumn(table, newChart);
|
|
2130
|
+
const summaryColumnsWithMethod = BaseUtils.getSummaryColumnsWithMethod(table, newChart);
|
|
2099
2131
|
// summary column is referring to single_numeric_column, but summaryColumns is referring to multiple_numeric_column
|
|
2100
2132
|
// single_numeric_column is used as the first setting option when switched to multiple_numeric_column
|
|
2101
2133
|
const columnMap = {
|
|
@@ -2107,7 +2139,7 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
|
|
|
2107
2139
|
const chartTableColumns = table.columns;
|
|
2108
2140
|
let chartSQLMap = null;
|
|
2109
2141
|
try {
|
|
2110
|
-
chartSQLMap =
|
|
2142
|
+
chartSQLMap = chartColumn2SqlColumn(newChart, table);
|
|
2111
2143
|
} catch (error) {
|
|
2112
2144
|
let error_message = 'There_are_some_problems_with_the_filters';
|
|
2113
2145
|
if (error.message) error_message = error.message;
|
|
@@ -2116,7 +2148,7 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
|
|
|
2116
2148
|
const tipMessage = 'There_are_no_statistic_results_yet';
|
|
2117
2149
|
|
|
2118
2150
|
// Custom Bar
|
|
2119
|
-
if (chartType ===
|
|
2151
|
+
if (chartType === CHART_TYPE.BAR_CUSTOM) {
|
|
2120
2152
|
const result = [];
|
|
2121
2153
|
for (const [index, item] of sqlRows.entries()) {
|
|
2122
2154
|
if (item.length !== 0) {
|
|
@@ -2143,14 +2175,20 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
|
|
|
2143
2175
|
}
|
|
2144
2176
|
|
|
2145
2177
|
// map is special, still need to show map even data is empty
|
|
2146
|
-
if (!Array.isArray(sqlRows) || sqlRows.length === 0 && !
|
|
2178
|
+
if (!Array.isArray(sqlRows) || sqlRows.length === 0 && !MAP_CHART_TYPES.includes(chartType)) {
|
|
2147
2179
|
callback && callback('', tipMessage, null);
|
|
2148
2180
|
return;
|
|
2149
2181
|
}
|
|
2150
|
-
|
|
2182
|
+
let chartResult = null;
|
|
2183
|
+
try {
|
|
2184
|
+
chartResult = await _SQLStatisticsUtils.sqlResult2JavaScript(newChart, sqlRows, chartSQLMap, columnMap, tables);
|
|
2185
|
+
} catch (error) {
|
|
2186
|
+
const errorMessage = (error === null || error === void 0 ? void 0 : error.message) || error;
|
|
2187
|
+
return callback && callback(errorMessage, '', null);
|
|
2188
|
+
}
|
|
2151
2189
|
|
|
2152
2190
|
// map is special
|
|
2153
|
-
if (
|
|
2191
|
+
if (BaseUtils.imEmptyChartResult(chartResult) && !chartType.includes('map')) {
|
|
2154
2192
|
callback && callback('', tipMessage, null);
|
|
2155
2193
|
return;
|
|
2156
2194
|
}
|
|
@@ -2170,7 +2208,7 @@ SQLStatisticsUtils.calculateStaticChart = (chart, value, statisticalResult, call
|
|
|
2170
2208
|
config
|
|
2171
2209
|
} = chart;
|
|
2172
2210
|
const tables = value.tables;
|
|
2173
|
-
const newConfig =
|
|
2211
|
+
const newConfig = BaseUtils.convertConfig(config);
|
|
2174
2212
|
const newChart = {
|
|
2175
2213
|
id,
|
|
2176
2214
|
config: newConfig
|
|
@@ -2178,31 +2216,31 @@ SQLStatisticsUtils.calculateStaticChart = (chart, value, statisticalResult, call
|
|
|
2178
2216
|
const {
|
|
2179
2217
|
type
|
|
2180
2218
|
} = config;
|
|
2181
|
-
if ([
|
|
2219
|
+
if ([CHART_TYPE.TABLE, CHART_TYPE.TABLE_ELEMENT].includes(type)) return callback && callback('', '', statisticalResult);
|
|
2182
2220
|
const {
|
|
2183
2221
|
table_id,
|
|
2184
2222
|
sort_type
|
|
2185
2223
|
} = config;
|
|
2186
|
-
const table =
|
|
2187
|
-
const groupbyColumn =
|
|
2224
|
+
const table = getTableById(tables, table_id);
|
|
2225
|
+
const groupbyColumn = BaseUtils.getGroupColumn(table, newChart);
|
|
2188
2226
|
let result = statisticalResult.result;
|
|
2189
2227
|
if (!result) {
|
|
2190
2228
|
const tip_message = 'There_are_no_statistic_results_yet';
|
|
2191
2229
|
return callback && callback('', tip_message, null);
|
|
2192
2230
|
}
|
|
2193
|
-
if (
|
|
2194
|
-
|
|
2231
|
+
if (SUPPORT_DATA_SORT_CHART_TYPES.includes(type) && sort_type) {
|
|
2232
|
+
BaseUtils.sortChartData(result, sort_type);
|
|
2195
2233
|
const newStatisticalResult = {
|
|
2196
2234
|
...statisticalResult,
|
|
2197
2235
|
result
|
|
2198
2236
|
};
|
|
2199
2237
|
return callback && callback('', '', newStatisticalResult);
|
|
2200
2238
|
}
|
|
2201
|
-
|
|
2239
|
+
BaseUtils.sortCharts(result, groupbyColumn, 'name');
|
|
2202
2240
|
const newStatisticalResult = {
|
|
2203
2241
|
...statisticalResult,
|
|
2204
2242
|
result
|
|
2205
2243
|
};
|
|
2206
2244
|
return callback && callback('', '', newStatisticalResult);
|
|
2207
2245
|
};
|
|
2208
|
-
|
|
2246
|
+
export default SQLStatisticsUtils;
|