sea-chart 2.0.36 → 2.0.38
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 +8 -15
- package/dist/components/cell-factory/FormatterConfig.js +55 -62
- package/dist/components/cell-factory/SimpleCellFormatter.js +5 -12
- 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 +30 -38
- 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 +12 -19
- package/dist/components/color-popover/color-rules/color-rule.js +26 -34
- package/dist/components/color-popover/color-rules/index.js +7 -15
- 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 +9 -17
- package/dist/components/color-popover/color-rules-popover.js +30 -38
- package/dist/components/color-popover/color-selector-popover.js +12 -20
- package/dist/components/color-setting/color-group-selector.js +13 -21
- package/dist/components/common-add-tool/index.js +8 -15
- package/dist/components/data-process-setter/data-setting-header.js +7 -14
- package/dist/components/data-process-setter/hide-column-setter.js +13 -20
- package/dist/components/data-process-setter/index.js +4 -27
- package/dist/components/data-process-setter/sort-setter.js +18 -26
- package/dist/components/draggable/Draggable.js +7 -13
- package/dist/components/drill-down-settings/drill-down-fields-popover/index.js +40 -48
- 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 +5 -12
- 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 +26 -34
- package/dist/components/popover/sort-popover/sort-popover-widgets/sort-utils.js +9 -18
- package/dist/components/popover/sort-popover/sort-popover.js +55 -65
- package/dist/components/resize-handle/ResizeHandle.js +6 -13
- package/dist/components/row-card/row-card-header-cell.js +17 -24
- package/dist/components/row-card/row-card-header.js +15 -22
- package/dist/components/row-card/row-card-item.js +35 -43
- package/dist/components/row-card/row-card.js +17 -25
- package/dist/components/statistic-record-dialog/index.js +56 -64
- package/dist/components/tooltip/index.js +14 -21
- package/dist/components/types-dialog/index.js +62 -70
- 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 +142 -271
- 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 +13 -20
- 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 +4 -11
- package/dist/model/basic-number-card.js +13 -20
- package/dist/model/chart.js +7 -13
- package/dist/model/combination.js +15 -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 +11 -18
- package/dist/model/horizontal-group-bar.js +10 -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 +11 -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 +11 -17
- 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 +63 -71
- 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 +49 -57
- 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 +19 -27
- 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 +65 -73
- 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 +27 -35
- 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 +65 -73
- 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 +112 -120
- 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 +42 -50
- 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 +19 -27
- 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 +26 -34
- 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 +25 -33
- 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 +74 -82
- package/dist/settings/widgets/switch/index.js +9 -16
- 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 +64 -72
- package/dist/utils/cell-format-utils.js +17 -27
- package/dist/utils/cell-value-utils.js +4 -11
- package/dist/utils/chart-utils/base-utils.js +324 -332
- package/dist/utils/chart-utils/index.js +28 -41
- package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +77 -84
- 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 +21 -28
- package/dist/utils/chart-utils/original-data-utils/completeness-calculator.js +33 -40
- 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 +19 -26
- package/dist/utils/chart-utils/original-data-utils/pivot-table-calculator.js +90 -96
- 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 +229 -237
- package/dist/utils/chart.js +9 -17
- package/dist/utils/collaborator-manager.js +3 -9
- package/dist/utils/collaborator-utils.js +19 -31
- package/dist/utils/collaborator.js +6 -15
- package/dist/utils/color-utils.js +18 -29
- package/dist/utils/column-utils.js +77 -104
- package/dist/utils/common-utils.js +28 -53
- package/dist/utils/concurrency-manager.js +1 -7
- package/dist/utils/contexts.js +5 -12
- package/dist/utils/date-translate.js +12 -20
- 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 +2 -8
- package/dist/utils/options-utils.js +10 -18
- package/dist/utils/row-record-utils.js +166 -178
- package/dist/utils/row-utils.js +27 -38
- package/dist/utils/search.js +24 -32
- package/dist/utils/sql/chart-data-sql.js +106 -112
- package/dist/utils/sql/column-2-sql-column.js +158 -168
- package/dist/utils/sql/index.js +3 -27
- package/dist/utils/trend-utils.js +39 -47
- package/dist/view/index.js +90 -96
- package/dist/view/title/index.js +16 -24
- package/dist/view/wrapper/area-group.js +45 -53
- package/dist/view/wrapper/area.js +43 -51
- package/dist/view/wrapper/bar-compare.js +38 -46
- package/dist/view/wrapper/bar-custom-stack.js +39 -47
- package/dist/view/wrapper/bar-group.js +45 -53
- package/dist/view/wrapper/bar-stack.js +48 -56
- package/dist/view/wrapper/bar.js +40 -48
- package/dist/view/wrapper/basic-number-card.js +26 -34
- package/dist/view/wrapper/chart-component.js +123 -131
- package/dist/view/wrapper/combination.js +55 -63
- package/dist/view/wrapper/completeness-group.js +40 -48
- package/dist/view/wrapper/completeness.js +36 -44
- package/dist/view/wrapper/dashboard.js +39 -44
- package/dist/view/wrapper/funnel.js +40 -43
- package/dist/view/wrapper/heat-map.js +62 -70
- package/dist/view/wrapper/horizontal-bar-group.js +52 -60
- package/dist/view/wrapper/horizontal-bar-stack.js +47 -55
- package/dist/view/wrapper/horizontal-bar.js +41 -49
- package/dist/view/wrapper/index.js +107 -115
- package/dist/view/wrapper/line-group.js +43 -51
- package/dist/view/wrapper/line.js +42 -50
- package/dist/view/wrapper/map-bubble.js +40 -48
- package/dist/view/wrapper/map-world-bubble.js +39 -47
- package/dist/view/wrapper/map-world.js +41 -49
- package/dist/view/wrapper/map.js +42 -50
- package/dist/view/wrapper/mirror.js +41 -49
- package/dist/view/wrapper/pie.js +44 -52
- package/dist/view/wrapper/ring.js +49 -57
- package/dist/view/wrapper/scatter.js +42 -50
- package/dist/view/wrapper/table/index.js +14 -22
- 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 +53 -61
- package/dist/view/wrapper/table/pivot-table-display-name.js +82 -90
- package/dist/view/wrapper/table/two-dimension-table.js +85 -93
- package/dist/view/wrapper/table-element/components/dataset-utils.js +23 -36
- package/dist/view/wrapper/table-element/components/formatter.js +90 -99
- package/dist/view/wrapper/table-element/components/formatters/FileFormatter/index.js +23 -32
- package/dist/view/wrapper/table-element/components/formatters/formula-formatter.js +9 -16
- package/dist/view/wrapper/table-element/components/formatters/link-formatter.js +90 -97
- package/dist/view/wrapper/table-element/components/formula-formatter.js +9 -16
- package/dist/view/wrapper/table-element/components/link-formatter.js +90 -97
- package/dist/view/wrapper/table-element/components/record.js +13 -20
- package/dist/view/wrapper/table-element/components/records-body.js +9 -17
- 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 +25 -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 +6 -16
- 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 +38 -46
- package/dist/view/wrapper/trend.js +58 -66
- package/package.json +5 -5
|
@@ -1,25 +1,17 @@
|
|
|
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, getPrecisionNumber, getTableById, getTableColumnByKey, isNumber } 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 intl from '../../intl';
|
|
13
|
+
import { convertQuarterToDate } from '../date-translate';
|
|
14
|
+
import BaseUtils, { findIfColumnDataIsArray } from './base-utils';
|
|
23
15
|
class SQLStatisticsUtils {}
|
|
24
16
|
_SQLStatisticsUtils = SQLStatisticsUtils;
|
|
25
17
|
SQLStatisticsUtils.DATA_SOURCE = 'sql_statistics';
|
|
@@ -29,56 +21,56 @@ SQLStatisticsUtils.getGroupLabelFromDB = async (cellValue, column, chart, isPivo
|
|
|
29
21
|
data
|
|
30
22
|
} = column;
|
|
31
23
|
switch (type) {
|
|
32
|
-
case
|
|
24
|
+
case CellType.TEXT:
|
|
33
25
|
{
|
|
34
26
|
return cellValue || null;
|
|
35
27
|
}
|
|
36
|
-
case
|
|
37
|
-
case
|
|
38
|
-
case
|
|
28
|
+
case CellType.DATE:
|
|
29
|
+
case CellType.CTIME:
|
|
30
|
+
case CellType.MTIME:
|
|
39
31
|
{
|
|
40
32
|
return cellValue;
|
|
41
33
|
}
|
|
42
|
-
case
|
|
34
|
+
case CellType.NUMBER:
|
|
43
35
|
{
|
|
44
36
|
if (!cellValue && cellValue !== 0) return null;
|
|
45
|
-
return
|
|
37
|
+
return getPrecisionNumber(cellValue, data);
|
|
46
38
|
}
|
|
47
|
-
case
|
|
39
|
+
case CellType.SINGLE_SELECT:
|
|
48
40
|
{
|
|
49
41
|
let isInvalidValue = data && data.options && data.options.findIndex(opt => opt.id === cellValue) < 0;
|
|
50
42
|
return isInvalidValue ? null : cellValue;
|
|
51
43
|
}
|
|
52
|
-
case
|
|
44
|
+
case CellType.MULTIPLE_SELECT:
|
|
53
45
|
{
|
|
54
46
|
let options = data && data.options;
|
|
55
47
|
if (!Array.isArray(options) || options.length === 0) return [];
|
|
56
48
|
if (!Array.isArray(cellValue) || cellValue.length === 0) return [];
|
|
57
49
|
return cellValue.filter(optionId => options.find(option => option.id === optionId));
|
|
58
50
|
}
|
|
59
|
-
case
|
|
51
|
+
case CellType.COLLABORATOR:
|
|
60
52
|
{
|
|
61
53
|
if (!Array.isArray(cellValue) || cellValue.length === 0) return [];
|
|
62
54
|
return cellValue;
|
|
63
55
|
}
|
|
64
|
-
case
|
|
65
|
-
case
|
|
56
|
+
case CellType.CREATOR:
|
|
57
|
+
case CellType.LAST_MODIFIER:
|
|
66
58
|
{
|
|
67
59
|
return cellValue ? cellValue : null;
|
|
68
60
|
}
|
|
69
|
-
case
|
|
61
|
+
case CellType.GEOLOCATION:
|
|
70
62
|
{
|
|
71
63
|
return cellValue || null;
|
|
72
64
|
}
|
|
73
|
-
case
|
|
65
|
+
case CellType.FORMULA:
|
|
74
66
|
{
|
|
75
67
|
if (Array.isArray(cellValue)) {
|
|
76
|
-
const validValue =
|
|
68
|
+
const validValue = getFormulaDisplayString(cellValue, data) || [];
|
|
77
69
|
return validValue;
|
|
78
70
|
}
|
|
79
71
|
return cellValue || null;
|
|
80
72
|
}
|
|
81
|
-
case
|
|
73
|
+
case CellType.LINK_FORMULA:
|
|
82
74
|
{
|
|
83
75
|
const {
|
|
84
76
|
result_type
|
|
@@ -87,21 +79,21 @@ SQLStatisticsUtils.getGroupLabelFromDB = async (cellValue, column, chart, isPivo
|
|
|
87
79
|
if (result_type === 'array') {
|
|
88
80
|
return cellValue;
|
|
89
81
|
}
|
|
90
|
-
const validValue =
|
|
82
|
+
const validValue = getFormulaDisplayString(cellValue, data) || [];
|
|
91
83
|
if (!validValue && validValue !== 0) {
|
|
92
84
|
return null;
|
|
93
85
|
}
|
|
94
86
|
return validValue;
|
|
95
87
|
}
|
|
96
|
-
case
|
|
88
|
+
case CellType.LINK:
|
|
97
89
|
{
|
|
98
|
-
return Array.isArray(cellValue) ? cellValue.map(linked =>
|
|
90
|
+
return Array.isArray(cellValue) ? cellValue.map(linked => getClientLinkDisplayString([linked], data, {})) : [];
|
|
99
91
|
}
|
|
100
|
-
case
|
|
92
|
+
case CellType.CHECKBOX:
|
|
101
93
|
{
|
|
102
94
|
return String(cellValue) === 'true' ? 'Checked' : 'Unchecked';
|
|
103
95
|
}
|
|
104
|
-
case
|
|
96
|
+
case CellType.RATE:
|
|
105
97
|
{
|
|
106
98
|
return cellValue ? String(cellValue) : null;
|
|
107
99
|
}
|
|
@@ -176,7 +168,7 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
|
|
|
176
168
|
const {
|
|
177
169
|
summary_type
|
|
178
170
|
} = chart.config;
|
|
179
|
-
const isCount = summary_type ===
|
|
171
|
+
const isCount = summary_type === CHART_SUMMARY_TYPE.COUNT;
|
|
180
172
|
const {
|
|
181
173
|
sqlSummaryColumnKey,
|
|
182
174
|
summarySQLColumnName2ColumnKey = {}
|
|
@@ -196,11 +188,11 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
|
|
|
196
188
|
let {
|
|
197
189
|
key
|
|
198
190
|
} = c;
|
|
199
|
-
if (
|
|
191
|
+
if (BaseUtils.isSameGroup(isColumnDataAsAnArray, cellValue, key)) {
|
|
200
192
|
if (cells[key]) {
|
|
201
193
|
cells[key].rows.push(row);
|
|
202
194
|
if (isCount) {
|
|
203
|
-
if (
|
|
195
|
+
if (BaseUtils.isCollaboratorColumnOrMultipleColumn(columnMap)) {
|
|
204
196
|
cells[key].total = total + row[sqlSummaryColumnKey];
|
|
205
197
|
} else {
|
|
206
198
|
cells[key].total = row[sqlSummaryColumnKey];
|
|
@@ -212,10 +204,10 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
|
|
|
212
204
|
const nextValue = row[currentSqlName];
|
|
213
205
|
// use columnKey to find current value
|
|
214
206
|
const currentValue = Object.values(cells[key].total).find(item => item[2] === columnKey)[1];
|
|
215
|
-
const computedValue =
|
|
207
|
+
const computedValue = BaseUtils.getSummaryValue({
|
|
216
208
|
summaryMethod: current.summary_method.toUpperCase(),
|
|
217
209
|
summaryColumn: current.column
|
|
218
|
-
}, currentValue, nextValue,
|
|
210
|
+
}, currentValue, nextValue, BaseUtils.isCollaboratorColumnOrMultipleColumn(columnMap));
|
|
219
211
|
const columnName = current.column.name;
|
|
220
212
|
|
|
221
213
|
// keep column key to find currentValue on updating
|
|
@@ -253,7 +245,7 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
|
|
|
253
245
|
} else {
|
|
254
246
|
updatedPivotRow.total = Object.values(cells).reduce((acc, item) => {
|
|
255
247
|
item.total.forEach(t => {
|
|
256
|
-
|
|
248
|
+
isNumber(t[1]) && (acc += t[1]);
|
|
257
249
|
});
|
|
258
250
|
return acc;
|
|
259
251
|
}, 0);
|
|
@@ -269,7 +261,7 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
|
|
|
269
261
|
let {
|
|
270
262
|
key
|
|
271
263
|
} = c;
|
|
272
|
-
if (
|
|
264
|
+
if (BaseUtils.isSameGroup(isColumnDataAsAnArray, cellValue, key)) {
|
|
273
265
|
let total;
|
|
274
266
|
if (isCount) {
|
|
275
267
|
total = row[sqlSummaryColumnKey];
|
|
@@ -294,9 +286,9 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
|
|
|
294
286
|
const cellList = Object.values(cells);
|
|
295
287
|
total = cellList.reduce((acc, item) => {
|
|
296
288
|
let num;
|
|
297
|
-
if (
|
|
289
|
+
if (isObject(item.total)) {
|
|
298
290
|
num = item.total.reduce((acc, item) => {
|
|
299
|
-
|
|
291
|
+
isNumber(item[1]) && (acc += item[1]);
|
|
300
292
|
return acc;
|
|
301
293
|
}, 0);
|
|
302
294
|
} else {
|
|
@@ -326,7 +318,7 @@ SQLStatisticsUtils.getAndUpdateTwoDimensionTotal = (pivot_columns_total, pivot_c
|
|
|
326
318
|
if (cell) {
|
|
327
319
|
let pivot_column_total = pivot_columns_total && pivot_columns_total[key] ? pivot_columns_total[key] : 0;
|
|
328
320
|
const currentCellTotal = Array.isArray(cell.total) ? cell.total.reduce((acc, item) => {
|
|
329
|
-
|
|
321
|
+
isNumber(item[1]) && (acc += item[1]);
|
|
330
322
|
return acc;
|
|
331
323
|
}, 0) : parseInt(cell.total);
|
|
332
324
|
pivot_columns_total[key] = pivot_column_total + currentCellTotal;
|
|
@@ -348,22 +340,22 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
348
340
|
} = chartSQLMap;
|
|
349
341
|
let pivot_columns = [];
|
|
350
342
|
let pivot_rows = [];
|
|
351
|
-
const isCount = summary_type ===
|
|
343
|
+
const isCount = summary_type === CHART_SUMMARY_TYPE.COUNT;
|
|
352
344
|
|
|
353
345
|
// if key is an array, handle it here ,currently only handle collaborator and multiple select
|
|
354
346
|
// MULTIPLE_CELL_VALUE_COLUMN_TYPE = [CellType.COLLABORATOR, CellType.MULTIPLE_SELECT, CellType.LINK]
|
|
355
|
-
const isGroupByColumnLinkFormula = groupbyColumn.type ===
|
|
347
|
+
const isGroupByColumnLinkFormula = groupbyColumn.type === CellType.LINK_FORMULA;
|
|
356
348
|
let newSqlRows = sqlRows;
|
|
357
349
|
if (isGroupByColumnLinkFormula) {
|
|
358
350
|
const {
|
|
359
351
|
array_type
|
|
360
352
|
} = groupbyColumn.data;
|
|
361
|
-
if ([
|
|
362
|
-
newSqlRows =
|
|
353
|
+
if ([CellType.COLLABORATOR, CellType.MULTIPLE_SELECT].includes(array_type)) {
|
|
354
|
+
newSqlRows = BaseUtils.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
|
|
363
355
|
}
|
|
364
356
|
}
|
|
365
|
-
if ([
|
|
366
|
-
newSqlRows =
|
|
357
|
+
if ([CellType.COLLABORATOR, CellType.MULTIPLE_SELECT].includes(groupbyColumn.type)) {
|
|
358
|
+
newSqlRows = BaseUtils.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
|
|
367
359
|
}
|
|
368
360
|
if (isCount) {
|
|
369
361
|
let allTotal = 0;
|
|
@@ -379,7 +371,7 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
379
371
|
}
|
|
380
372
|
});
|
|
381
373
|
}
|
|
382
|
-
if (groupbyColumn.type ===
|
|
374
|
+
if (groupbyColumn.type === CellType.LINK_FORMULA && groupbyColumn.data.array_type === 'date') {
|
|
383
375
|
pivot_rows = pivot_rows.reduce((acc, item) => {
|
|
384
376
|
const {
|
|
385
377
|
name,
|
|
@@ -396,7 +388,7 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
396
388
|
return acc;
|
|
397
389
|
}, []);
|
|
398
390
|
}
|
|
399
|
-
|
|
391
|
+
BaseUtils.sortCharts(pivot_rows, groupbyColumn, 'name', true);
|
|
400
392
|
return {
|
|
401
393
|
pivot_columns,
|
|
402
394
|
pivot_rows: pivot_rows,
|
|
@@ -415,7 +407,7 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
415
407
|
let totalTemplate = {};
|
|
416
408
|
Object.values(summaryColumnKeys).forEach(key => {
|
|
417
409
|
const summaryMethod = summaryTableColumnKey2Method[key];
|
|
418
|
-
totalTemplate[key] =
|
|
410
|
+
totalTemplate[key] = BaseUtils.initTotal(summaryMethod);
|
|
419
411
|
pivot_columns.push({
|
|
420
412
|
key
|
|
421
413
|
});
|
|
@@ -432,14 +424,14 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
432
424
|
let columnKey = summarySQLColumnName2ColumnKey[key];
|
|
433
425
|
let summaryColumn = summaryTableColumnKey2Column[columnKey];
|
|
434
426
|
const summaryMethod = summaryTableColumnKey2Method[columnKey];
|
|
435
|
-
let value = row[key] ||
|
|
436
|
-
allTotal[columnKey] =
|
|
427
|
+
let value = row[key] || BaseUtils.initTotal(summaryMethod);
|
|
428
|
+
allTotal[columnKey] = BaseUtils.getSummaryValue({
|
|
437
429
|
summaryColumn,
|
|
438
430
|
summaryMethod
|
|
439
431
|
}, allTotal[columnKey], value);
|
|
440
|
-
if (
|
|
432
|
+
if (BaseUtils.isDateSummaryColumn(summaryColumn)) {
|
|
441
433
|
rowTotal[columnKey] = value;
|
|
442
|
-
} else if (
|
|
434
|
+
} else if (BaseUtils.isNumericSummaryColumn(summaryColumn)) {
|
|
443
435
|
rowTotal[columnKey] = rowTotal[columnKey] + value;
|
|
444
436
|
}
|
|
445
437
|
});
|
|
@@ -449,7 +441,7 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
449
441
|
total: rowTotal
|
|
450
442
|
});
|
|
451
443
|
}
|
|
452
|
-
if (groupbyColumn.type ===
|
|
444
|
+
if (groupbyColumn.type === CellType.LINK_FORMULA && groupbyColumn.data.array_type === 'date') {
|
|
453
445
|
pivot_rows = pivot_rows.reduce((acc, item) => {
|
|
454
446
|
const {
|
|
455
447
|
name,
|
|
@@ -482,12 +474,12 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
482
474
|
total: allTotal[key]
|
|
483
475
|
};
|
|
484
476
|
}
|
|
485
|
-
|
|
477
|
+
BaseUtils.sortCharts(pivot_rows, groupbyColumn, 'name', true);
|
|
486
478
|
return {
|
|
487
479
|
pivot_columns,
|
|
488
480
|
pivot_rows,
|
|
489
481
|
pivot_columns_total: allTotal,
|
|
490
|
-
dimensions:
|
|
482
|
+
dimensions: TABLE_DIMENSIONS.ONE
|
|
491
483
|
};
|
|
492
484
|
};
|
|
493
485
|
SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
@@ -515,8 +507,8 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
515
507
|
let newSqlRows = sqlRows;
|
|
516
508
|
|
|
517
509
|
// handle LINK_FORMULA
|
|
518
|
-
const isGroupByColumnLinkFormula = groupbyColumn.type ===
|
|
519
|
-
const isColumnGroupByColumnLinkFormula = columnGroupbyColumn.type ===
|
|
510
|
+
const isGroupByColumnLinkFormula = groupbyColumn.type === CellType.LINK_FORMULA;
|
|
511
|
+
const isColumnGroupByColumnLinkFormula = columnGroupbyColumn.type === CellType.LINK_FORMULA;
|
|
520
512
|
let isRowGroupbyColumnDataAsAnArray, isGroupbyColumnDataAsAnArray;
|
|
521
513
|
|
|
522
514
|
// Group by column
|
|
@@ -524,14 +516,14 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
524
516
|
if (isGroupByColumnLinkFormula && groupbyColumn.data.array_type !== 'date') {
|
|
525
517
|
isGroupbyColumnDataAsAnArray = true;
|
|
526
518
|
} else {
|
|
527
|
-
isGroupbyColumnDataAsAnArray = !!
|
|
519
|
+
isGroupbyColumnDataAsAnArray = !!MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[groupbyColumn.type];
|
|
528
520
|
}
|
|
529
521
|
|
|
530
522
|
// column group by column
|
|
531
523
|
if (isColumnGroupByColumnLinkFormula && groupbyColumn.data.array_type !== 'date') {
|
|
532
524
|
isRowGroupbyColumnDataAsAnArray = true;
|
|
533
525
|
} else {
|
|
534
|
-
isRowGroupbyColumnDataAsAnArray = !!
|
|
526
|
+
isRowGroupbyColumnDataAsAnArray = !!MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[columnGroupbyColumn.type];
|
|
535
527
|
}
|
|
536
528
|
|
|
537
529
|
// if key is an array, handle it here ,currently only handle collaborator and multiple select
|
|
@@ -540,12 +532,12 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
540
532
|
const {
|
|
541
533
|
array_type
|
|
542
534
|
} = groupbyColumn.data;
|
|
543
|
-
if ([
|
|
544
|
-
newSqlRows =
|
|
535
|
+
if ([CellType.COLLABORATOR, CellType.MULTIPLE_SELECT].includes(array_type)) {
|
|
536
|
+
newSqlRows = BaseUtils.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
|
|
545
537
|
}
|
|
546
538
|
}
|
|
547
|
-
if ([
|
|
548
|
-
newSqlRows =
|
|
539
|
+
if ([CellType.COLLABORATOR, CellType.MULTIPLE_SELECT].includes(groupbyColumn.type)) {
|
|
540
|
+
newSqlRows = BaseUtils.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
|
|
549
541
|
}
|
|
550
542
|
let pivot_columns = [];
|
|
551
543
|
let pivot_rows = [];
|
|
@@ -556,12 +548,12 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
556
548
|
for (const row of newSqlRows) {
|
|
557
549
|
const columnGroupbyColumnCellValue = row[sqlColumnGroupbyColumnKey];
|
|
558
550
|
let columnGroupbyColumnCellValueKey;
|
|
559
|
-
if (
|
|
551
|
+
if (BaseUtils.isCollaborator(columnGroupbyColumn)) {
|
|
560
552
|
columnGroupbyColumnCellValueKey = columnGroupbyColumnCellValue || [];
|
|
561
553
|
} else {
|
|
562
554
|
columnGroupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(columnGroupbyColumnCellValue, columnGroupbyColumn, chart.config, true);
|
|
563
555
|
}
|
|
564
|
-
if (
|
|
556
|
+
if (BaseUtils.isValidCellValue(columnGroupbyColumnCellValue, groupby_include_empty_cells)) {
|
|
565
557
|
_SQLStatisticsUtils.updateTwoDimensionColumns(pivot_columns, columnGroupbyColumnCellValueKey, {
|
|
566
558
|
isIncludeEmpty: groupby_include_empty_cells,
|
|
567
559
|
isCellValueAsAnArray: isRowGroupbyColumnDataAsAnArray
|
|
@@ -571,19 +563,19 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
571
563
|
for (const row of newSqlRows) {
|
|
572
564
|
const groupbyColumnCellValue = row[sqlGroupbyColumnKey];
|
|
573
565
|
let groupbyColumnCellValueKey;
|
|
574
|
-
if (
|
|
566
|
+
if (BaseUtils.isCollaborator(groupbyColumn)) {
|
|
575
567
|
groupbyColumnCellValueKey = groupbyColumnCellValue || [];
|
|
576
568
|
} else {
|
|
577
569
|
groupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(groupbyColumnCellValue, groupbyColumn, chart.config, true);
|
|
578
570
|
}
|
|
579
571
|
const columnGroupbyColumnCellValue = row[sqlColumnGroupbyColumnKey];
|
|
580
572
|
let columnGroupbyColumnCellValueKey;
|
|
581
|
-
if (
|
|
573
|
+
if (BaseUtils.isCollaborator(columnGroupbyColumn)) {
|
|
582
574
|
columnGroupbyColumnCellValueKey = columnGroupbyColumnCellValue || [];
|
|
583
575
|
} else {
|
|
584
576
|
columnGroupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(columnGroupbyColumnCellValue, columnGroupbyColumn, chart.config, true);
|
|
585
577
|
}
|
|
586
|
-
if (
|
|
578
|
+
if (BaseUtils.isValidCellValue(groupbyColumnCellValue, groupby_include_empty_cells)) {
|
|
587
579
|
// data is an array is handled previously, but to keep capability, still use old code
|
|
588
580
|
if (isGroupbyColumnDataAsAnArray) {
|
|
589
581
|
if ((!Array.isArray(groupbyColumnCellValueKey) || groupbyColumnCellValueKey.length === 0) && groupby_include_empty_cells) {
|
|
@@ -620,15 +612,15 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
620
612
|
}
|
|
621
613
|
|
|
622
614
|
// update Collaborator and Multiple mean value
|
|
623
|
-
if (
|
|
624
|
-
const new_pivot_rows =
|
|
615
|
+
if (BaseUtils.isCollaboratorColumnOrMultipleColumn(columnMap)) {
|
|
616
|
+
const new_pivot_rows = BaseUtils.updateCollaboratorAndMultipleAvg(pivot_rows, [singleNumeriColumnWithMethod, ...multipleNumericColumnsWithMethod]);
|
|
625
617
|
pivot_rows = new_pivot_rows;
|
|
626
618
|
}
|
|
627
619
|
[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 =
|
|
620
|
+
BaseUtils.sortCharts(pivot_rows, groupbyColumn, 'name', true);
|
|
621
|
+
BaseUtils.sortCharts(pivot_columns, columnGroupbyColumn, 'key', true);
|
|
622
|
+
if ((groupbyColumn === null || groupbyColumn === void 0 ? void 0 : groupbyColumn.type) === CellType.COLLABORATOR) {
|
|
623
|
+
pivot_rows = BaseUtils.mergePivotTableSameCollaborator(pivot_rows);
|
|
632
624
|
}
|
|
633
625
|
const summary_columns = [summaryColumn, ...summaryColumnsWithMethod.map(item => item.column)];
|
|
634
626
|
return {
|
|
@@ -637,7 +629,7 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
|
|
|
637
629
|
pivot_rows,
|
|
638
630
|
pivot_columns_total,
|
|
639
631
|
pivot_table_total,
|
|
640
|
-
dimensions:
|
|
632
|
+
dimensions: TABLE_DIMENSIONS.TWO,
|
|
641
633
|
isSingleNumericColumn
|
|
642
634
|
};
|
|
643
635
|
};
|
|
@@ -658,7 +650,7 @@ SQLStatisticsUtils.basicChartSQLResult2JavaScript = async (chart, sqlRows, chart
|
|
|
658
650
|
groupbyColumn,
|
|
659
651
|
summaryColumn
|
|
660
652
|
} = columnMap;
|
|
661
|
-
const isGroupbyColumnDataAsAnArray =
|
|
653
|
+
const isGroupbyColumnDataAsAnArray = findIfColumnDataIsArray(groupbyColumn);
|
|
662
654
|
const {
|
|
663
655
|
sqlGroupbyColumnKey,
|
|
664
656
|
sqlSummaryColumnKey
|
|
@@ -668,10 +660,10 @@ SQLStatisticsUtils.basicChartSQLResult2JavaScript = async (chart, sqlRows, chart
|
|
|
668
660
|
const cellValue = row[sqlGroupbyColumnKey];
|
|
669
661
|
const summaryValue = row[sqlSummaryColumnKey];
|
|
670
662
|
let formatted_value = cellValue;
|
|
671
|
-
if (y_axis_summary_type ===
|
|
672
|
-
formatted_value =
|
|
663
|
+
if (y_axis_summary_type === CHART_SUMMARY_TYPE.ADVANCED) {
|
|
664
|
+
formatted_value = getFormattedValue(cellValue, y_axis_summary_column_key, y_axis_summary_method);
|
|
673
665
|
}
|
|
674
|
-
if (
|
|
666
|
+
if (BaseUtils.isValidCellValue(cellValue, x_axis_include_empty_cells || groupby_include_empty_cells)) {
|
|
675
667
|
const key = await _SQLStatisticsUtils.getGroupLabelFromDB(cellValue, groupbyColumn, chart.config);
|
|
676
668
|
if (isGroupbyColumnDataAsAnArray) {
|
|
677
669
|
if (!Array.isArray(key) || key.length === 0) {
|
|
@@ -729,11 +721,11 @@ SQLStatisticsUtils.basicChartSQLResult2JavaScript = async (chart, sqlRows, chart
|
|
|
729
721
|
}
|
|
730
722
|
}
|
|
731
723
|
}
|
|
732
|
-
|
|
733
|
-
await
|
|
734
|
-
|
|
735
|
-
if (
|
|
736
|
-
|
|
724
|
+
BaseUtils.sortCharts(result, groupbyColumn, 'name');
|
|
725
|
+
await BaseUtils.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
|
|
726
|
+
BaseUtils.updateSummaryValuePrecision(result, summaryColumn, 'value');
|
|
727
|
+
if (SUPPORT_DATA_SORT_CHART_TYPES.includes(type) && sort_type) {
|
|
728
|
+
BaseUtils.sortChartData(result, sort_type);
|
|
737
729
|
return result;
|
|
738
730
|
}
|
|
739
731
|
return result;
|
|
@@ -762,28 +754,28 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
|
|
|
762
754
|
groupbyColumn,
|
|
763
755
|
summaryColumn
|
|
764
756
|
} = columnMap;
|
|
765
|
-
const table =
|
|
757
|
+
const table = getTableById(tables, table_id);
|
|
766
758
|
const stack = y_axises[index];
|
|
767
759
|
if (!stack) return [];
|
|
768
760
|
const {
|
|
769
761
|
column_groupby_numeric_columns
|
|
770
762
|
} = stack;
|
|
771
|
-
const y_axis_type =
|
|
763
|
+
const y_axis_type = `${Y_AXIS_TYPE_PREFIX}${index}`;
|
|
772
764
|
let summaryMethods = [];
|
|
773
765
|
let originalMethods = [];
|
|
774
766
|
let groupColumnNames = [];
|
|
775
767
|
let numericColumns = [];
|
|
776
768
|
column_groupby_numeric_columns.forEach(item => {
|
|
777
|
-
const numericColumn =
|
|
769
|
+
const numericColumn = getTableColumnByKey(table, item.column_key);
|
|
778
770
|
const groupColumnName = numericColumn.name;
|
|
779
771
|
numericColumns.push(numericColumn);
|
|
780
772
|
groupColumnNames.push(groupColumnName);
|
|
781
|
-
summaryMethods.push(
|
|
773
|
+
summaryMethods.push(summaryMethodColumn2SqlColumn(item.summary_method.toUpperCase(), numericColumn).key);
|
|
782
774
|
originalMethods.push(item.summary_method);
|
|
783
775
|
});
|
|
784
776
|
const {
|
|
785
777
|
key: sqlGroupbyColumnKey
|
|
786
|
-
} =
|
|
778
|
+
} = column2SqlColumn(groupbyColumn, {
|
|
787
779
|
dateGranularity: x_axis_date_granularity,
|
|
788
780
|
geolocationGranularity: x_axis_geolocation_granularity
|
|
789
781
|
});
|
|
@@ -797,8 +789,8 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
|
|
|
797
789
|
if (!(x_axis_include_empty_cells || x_axis_include_empty) && isEmpty) return;
|
|
798
790
|
let value = row[summaryMethod] || 0;
|
|
799
791
|
let formatted_value = value;
|
|
800
|
-
value =
|
|
801
|
-
formatted_value =
|
|
792
|
+
value = formatNumericValue(value, numericColumns[index]);
|
|
793
|
+
formatted_value = getFormattedValue(value, numericColumns[index], originalMethods[index]);
|
|
802
794
|
groupItems.push({
|
|
803
795
|
name: label,
|
|
804
796
|
value,
|
|
@@ -810,7 +802,7 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
|
|
|
810
802
|
});
|
|
811
803
|
result = result.concat(groupItems);
|
|
812
804
|
}
|
|
813
|
-
const isCellValueAsAnArray =
|
|
805
|
+
const isCellValueAsAnArray = findIfColumnDataIsArray(groupbyColumn);
|
|
814
806
|
if (isCellValueAsAnArray) {
|
|
815
807
|
const takenApart = [];
|
|
816
808
|
const assembled = [];
|
|
@@ -820,7 +812,7 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
|
|
|
820
812
|
name: names
|
|
821
813
|
} = item;
|
|
822
814
|
if (!Array.isArray(names)) return;
|
|
823
|
-
if (!(names
|
|
815
|
+
if (!(names === null || names === void 0 ? void 0 : names.length)) {
|
|
824
816
|
takenApart.push({
|
|
825
817
|
...item,
|
|
826
818
|
name: null
|
|
@@ -851,9 +843,9 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
|
|
|
851
843
|
});
|
|
852
844
|
result = assembled;
|
|
853
845
|
}
|
|
854
|
-
|
|
855
|
-
await
|
|
856
|
-
|
|
846
|
+
BaseUtils.sortCharts(result, groupbyColumn, 'name');
|
|
847
|
+
await BaseUtils.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
|
|
848
|
+
BaseUtils.updateSummaryValuePrecision(result, summaryColumn, 'value');
|
|
857
849
|
return result;
|
|
858
850
|
};
|
|
859
851
|
SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
@@ -878,11 +870,11 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
878
870
|
y_axis_summary_method,
|
|
879
871
|
display_increase
|
|
880
872
|
} = config;
|
|
881
|
-
const groupName1 =
|
|
882
|
-
const groupName2 =
|
|
873
|
+
const groupName1 = `${x_axis_date_range_start} - ${x_axis_date_range_end}`;
|
|
874
|
+
const groupName2 = `${x_axis_compared_date_range_start} - ${x_axis_compared_date_range_end}`;
|
|
883
875
|
const dateRangeResult = new Map();
|
|
884
876
|
let dateComparedResult = new Map();
|
|
885
|
-
const isAdvanced = y_axis_summary_type ===
|
|
877
|
+
const isAdvanced = y_axis_summary_type === CHART_SUMMARY_TYPE.ADVANCED;
|
|
886
878
|
const startDate = new Date(x_axis_date_range_start);
|
|
887
879
|
const endDate = new Date(x_axis_date_range_end);
|
|
888
880
|
const comparedStartDate = new Date(x_axis_compared_date_range_start);
|
|
@@ -892,7 +884,7 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
892
884
|
if (!name) continue;
|
|
893
885
|
const label = await _SQLStatisticsUtils.getGroupLabelFromDB(name, groupbyColumn, chart.config);
|
|
894
886
|
if (x_axis_date_granularity === 'quarter') {
|
|
895
|
-
name =
|
|
887
|
+
name = convertQuarterToDate(name);
|
|
896
888
|
} else if (x_axis_date_granularity === 'year') {
|
|
897
889
|
// 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
890
|
// need to ensure time is at the range of user's slected time
|
|
@@ -972,8 +964,8 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
972
964
|
let value = rawValue;
|
|
973
965
|
let formatted_value = value;
|
|
974
966
|
if (isAdvanced) {
|
|
975
|
-
value =
|
|
976
|
-
formatted_value =
|
|
967
|
+
value = getSummaryResult(rawValue, y_axis_summary_method, data.precision);
|
|
968
|
+
formatted_value = getFormattedValue(value, summaryColumn, y_axis_summary_method);
|
|
977
969
|
}
|
|
978
970
|
rangeResult.push({
|
|
979
971
|
name: item[0],
|
|
@@ -994,8 +986,8 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
994
986
|
const rows = item[1].rows;
|
|
995
987
|
let formatted_value = value;
|
|
996
988
|
if (isAdvanced) {
|
|
997
|
-
value =
|
|
998
|
-
formatted_value =
|
|
989
|
+
value = getSummaryResult(item[1].value, y_axis_summary_method, data.precision);
|
|
990
|
+
formatted_value = getFormattedValue(value, summaryColumn, y_axis_summary_method);
|
|
999
991
|
}
|
|
1000
992
|
const newItem = {
|
|
1001
993
|
name: dateRangeItem.name,
|
|
@@ -1019,10 +1011,10 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
|
|
|
1019
1011
|
if (comparedResult.length > rangeResult.length) {
|
|
1020
1012
|
comparedResult = comparedResult.slice(0, rangeResult.length);
|
|
1021
1013
|
}
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1014
|
+
BaseUtils.updateSummaryValuePrecision(comparedResult, summaryColumn, 'value');
|
|
1015
|
+
BaseUtils.updateSummaryValuePrecision(rangeResult, summaryColumn, 'value');
|
|
1016
|
+
BaseUtils.sortCharts(rangeResult, groupbyColumn, 'name');
|
|
1017
|
+
BaseUtils.sortCharts(comparedResult, groupbyColumn, 'name');
|
|
1026
1018
|
return [...comparedResult, ...rangeResult];
|
|
1027
1019
|
};
|
|
1028
1020
|
SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
@@ -1039,7 +1031,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1039
1031
|
table_id,
|
|
1040
1032
|
y_axis_left_group_by_numeric_columns
|
|
1041
1033
|
} = config;
|
|
1042
|
-
const table =
|
|
1034
|
+
const table = getTableById(tables, table_id);
|
|
1043
1035
|
const {
|
|
1044
1036
|
groupbyColumn,
|
|
1045
1037
|
summaryColumn
|
|
@@ -1053,7 +1045,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1053
1045
|
sqlRightSummaryColumnKey,
|
|
1054
1046
|
sqlLeftSummaryColumnKey
|
|
1055
1047
|
} = chartSQLMap;
|
|
1056
|
-
const isGroupbyColumnDataAsAnArray =
|
|
1048
|
+
const isGroupbyColumnDataAsAnArray = findIfColumnDataIsArray(groupbyColumn);
|
|
1057
1049
|
let result = [];
|
|
1058
1050
|
if (!y_axis_left_group_by_multiple_numeric_column) {
|
|
1059
1051
|
// let leftSummaryColumn, rightSummaryColumn;
|
|
@@ -1080,7 +1072,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1080
1072
|
if (itemIdx < 0) {
|
|
1081
1073
|
result.push({
|
|
1082
1074
|
// color is defined by index of the name
|
|
1083
|
-
color:
|
|
1075
|
+
color: STYLE_COLORS[0].colors[index % 12],
|
|
1084
1076
|
name: null,
|
|
1085
1077
|
rows: [row],
|
|
1086
1078
|
value_left: valueLeft,
|
|
@@ -1097,7 +1089,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1097
1089
|
let itemIdx = result.findIndex(v => v.name === item);
|
|
1098
1090
|
if (itemIdx < 0) {
|
|
1099
1091
|
result.push({
|
|
1100
|
-
color:
|
|
1092
|
+
color: STYLE_COLORS[0].colors[index % 12],
|
|
1101
1093
|
name: item,
|
|
1102
1094
|
rows: [row],
|
|
1103
1095
|
value_left: valueLeft,
|
|
@@ -1115,7 +1107,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1115
1107
|
let itemIdx = result.findIndex(v => v.name === key);
|
|
1116
1108
|
if (itemIdx < 0) {
|
|
1117
1109
|
result.push({
|
|
1118
|
-
color:
|
|
1110
|
+
color: STYLE_COLORS[0].colors[index % 12],
|
|
1119
1111
|
name: key,
|
|
1120
1112
|
rows: [row],
|
|
1121
1113
|
value_left: valueLeft,
|
|
@@ -1135,11 +1127,11 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1135
1127
|
// rightSummaryColumn = getTableColumnByKey(table, y_axis_right_summary_column);
|
|
1136
1128
|
// }
|
|
1137
1129
|
const groupItems = [];
|
|
1138
|
-
let leftSummaryColumn =
|
|
1130
|
+
let leftSummaryColumn = getTableColumnByKey(table, y_axis_left_summary_column);
|
|
1139
1131
|
const summaryMethod = y_axis_left_summary_method.toUpperCase();
|
|
1140
1132
|
const {
|
|
1141
1133
|
key
|
|
1142
|
-
} =
|
|
1134
|
+
} = summaryMethodColumn2SqlColumn(summaryMethod, leftSummaryColumn || {});
|
|
1143
1135
|
const groupItem = {
|
|
1144
1136
|
sqlName: key,
|
|
1145
1137
|
column: leftSummaryColumn
|
|
@@ -1149,12 +1141,12 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1149
1141
|
groupItems.push(groupItem);
|
|
1150
1142
|
}
|
|
1151
1143
|
y_axis_left_group_by_numeric_columns.forEach((item, index) => {
|
|
1152
|
-
const column =
|
|
1144
|
+
const column = getTableColumnByKey(table, item.column_key);
|
|
1153
1145
|
if (column) {
|
|
1154
1146
|
const itemSummaryMethod = item.summary_method.toUpperCase();
|
|
1155
1147
|
const {
|
|
1156
1148
|
key
|
|
1157
|
-
} =
|
|
1149
|
+
} = summaryMethodColumn2SqlColumn(itemSummaryMethod, column || {});
|
|
1158
1150
|
const groupItem = {
|
|
1159
1151
|
sqlName: key,
|
|
1160
1152
|
column
|
|
@@ -1195,7 +1187,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1195
1187
|
rows: [item],
|
|
1196
1188
|
group_name: groupName,
|
|
1197
1189
|
// for multiple numeric_columns, color is defined by group_name
|
|
1198
|
-
color:
|
|
1190
|
+
color: STYLE_COLORS[0].colors[index % 12]
|
|
1199
1191
|
});
|
|
1200
1192
|
} else {
|
|
1201
1193
|
const itemRow = result[itemIdx];
|
|
@@ -1220,16 +1212,16 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
|
|
|
1220
1212
|
value_right: valueRight,
|
|
1221
1213
|
rows: [item],
|
|
1222
1214
|
group_name: groupName,
|
|
1223
|
-
color:
|
|
1215
|
+
color: STYLE_COLORS[0].colors[index % 12]
|
|
1224
1216
|
});
|
|
1225
1217
|
});
|
|
1226
1218
|
}
|
|
1227
1219
|
}
|
|
1228
1220
|
}
|
|
1229
|
-
await
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1221
|
+
await BaseUtils.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
|
|
1222
|
+
BaseUtils.sortCharts(result, groupbyColumn, 'name');
|
|
1223
|
+
BaseUtils.updateSummaryValuePrecision(result, summaryColumnLeft, 'value_left');
|
|
1224
|
+
BaseUtils.updateSummaryValuePrecision(result, summaryColumnRight, 'value_right');
|
|
1233
1225
|
return result;
|
|
1234
1226
|
};
|
|
1235
1227
|
SQLStatisticsUtils.dashboardSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
@@ -1245,17 +1237,17 @@ SQLStatisticsUtils.dashboardSQLResult2JavaScript = (chart, sqlRows, chartSQLMap,
|
|
|
1245
1237
|
total_value_column_key,
|
|
1246
1238
|
table_id
|
|
1247
1239
|
} = config;
|
|
1248
|
-
const table =
|
|
1249
|
-
const targetColumn =
|
|
1250
|
-
const totalColumn =
|
|
1240
|
+
const table = getTableById(tables, table_id);
|
|
1241
|
+
const targetColumn = getTableColumnByKey(table, target_value_column_key);
|
|
1242
|
+
const totalColumn = getTableColumnByKey(table, total_value_column_key);
|
|
1251
1243
|
const targetSummaryMethod = target_value_column_summary_method.toUpperCase();
|
|
1252
1244
|
const totalSummaryMethod = total_value_column_summary_method.toUpperCase();
|
|
1253
1245
|
const {
|
|
1254
1246
|
key: targetResultKey
|
|
1255
|
-
} =
|
|
1247
|
+
} = summaryMethodColumn2SqlColumn(targetSummaryMethod, targetColumn);
|
|
1256
1248
|
const {
|
|
1257
1249
|
key: totalResultKey
|
|
1258
|
-
} =
|
|
1250
|
+
} = summaryMethodColumn2SqlColumn(totalSummaryMethod, totalColumn);
|
|
1259
1251
|
const targetResult = summaryResult[targetResultKey];
|
|
1260
1252
|
const totalResult = summaryResult[totalResultKey];
|
|
1261
1253
|
if (totalResult === 0) {
|
|
@@ -1310,12 +1302,12 @@ SQLStatisticsUtils.groupingTwoDimensionChartSQLResult2JavaScript = async (chart,
|
|
|
1310
1302
|
sqlSummaryColumnKey
|
|
1311
1303
|
} = chartSQLMap;
|
|
1312
1304
|
let result = [];
|
|
1313
|
-
const isGroupbyColumnDataAsAnArray =
|
|
1314
|
-
const isColumnGroupbyColumnDataAsAnArray =
|
|
1305
|
+
const isGroupbyColumnDataAsAnArray = findIfColumnDataIsArray(groupbyColumn);
|
|
1306
|
+
const isColumnGroupbyColumnDataAsAnArray = findIfColumnDataIsArray(columnGroupbyColumn);
|
|
1315
1307
|
for (const row of sqlRows) {
|
|
1316
1308
|
const groupbyColumnCellValue = row[sqlGroupbyColumnKey];
|
|
1317
1309
|
const groupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(groupbyColumnCellValue, groupbyColumn, chart.config);
|
|
1318
|
-
if (
|
|
1310
|
+
if (BaseUtils.isValidCellValue(groupbyColumnCellValueKey, includeEmpty)) {
|
|
1319
1311
|
const columnGroupbyColumnCellValue = row[sqlColumnGroupbyColumnKey];
|
|
1320
1312
|
const columnGroupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(columnGroupbyColumnCellValue, columnGroupbyColumn, chart.config);
|
|
1321
1313
|
const count = row[sqlSummaryColumnKey];
|
|
@@ -1353,7 +1345,7 @@ SQLStatisticsUtils.groupingTwoDimensionChartSQLResult2JavaScript = async (chart,
|
|
|
1353
1345
|
const bEmpty = isEmptyGroupName(b);
|
|
1354
1346
|
if (aEmpty && !bEmpty) return 1;
|
|
1355
1347
|
if (!aEmpty && bEmpty) return -1;
|
|
1356
|
-
return
|
|
1348
|
+
return `${a !== null && a !== void 0 ? a : ''}`.localeCompare(`${b !== null && b !== void 0 ? b : ''}`);
|
|
1357
1349
|
});
|
|
1358
1350
|
nameGroupMap.forEach((groupSet, name) => {
|
|
1359
1351
|
groupNameList.forEach(groupName => {
|
|
@@ -1390,15 +1382,15 @@ SQLStatisticsUtils.groupingTwoDimensionChartSQLResult2JavaScript = async (chart,
|
|
|
1390
1382
|
const aOrder = groupOrder.has(a.group_name) ? groupOrder.get(a.group_name) : Number.MAX_SAFE_INTEGER;
|
|
1391
1383
|
const bOrder = groupOrder.has(b.group_name) ? groupOrder.get(b.group_name) : Number.MAX_SAFE_INTEGER;
|
|
1392
1384
|
if (aOrder !== bOrder) return aOrder - bOrder;
|
|
1393
|
-
return
|
|
1385
|
+
return `${(_a$group_name = a.group_name) !== null && _a$group_name !== void 0 ? _a$group_name : ''}`.localeCompare(`${(_b$group_name = b.group_name) !== null && _b$group_name !== void 0 ? _b$group_name : ''}`);
|
|
1394
1386
|
});
|
|
1395
1387
|
orderedResult.push(...items);
|
|
1396
1388
|
});
|
|
1397
1389
|
result.splice(0, result.length, ...orderedResult);
|
|
1398
|
-
|
|
1399
|
-
await
|
|
1400
|
-
await
|
|
1401
|
-
|
|
1390
|
+
BaseUtils.sortCharts(result, groupbyColumn, 'name');
|
|
1391
|
+
await BaseUtils.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
|
|
1392
|
+
await BaseUtils.updateTableViewList(result, columnGroupbyColumn, 'group_name', 'group_color', false, false);
|
|
1393
|
+
BaseUtils.updateSummaryValuePrecision(result, summaryColumn, 'value');
|
|
1402
1394
|
return result;
|
|
1403
1395
|
};
|
|
1404
1396
|
SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
@@ -1417,7 +1409,7 @@ SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, ch
|
|
|
1417
1409
|
summaryColumn,
|
|
1418
1410
|
summaryColumnsWithMethod
|
|
1419
1411
|
} = columnMap;
|
|
1420
|
-
if (y_axis_summary_type ===
|
|
1412
|
+
if (y_axis_summary_type === CHART_SUMMARY_TYPE.COUNT) {
|
|
1421
1413
|
if (!columnGroupbyColumn) return await _SQLStatisticsUtils.basicChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables);
|
|
1422
1414
|
return await _SQLStatisticsUtils.groupingTwoDimensionChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables);
|
|
1423
1415
|
}
|
|
@@ -1429,11 +1421,11 @@ SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, ch
|
|
|
1429
1421
|
summaryColumns
|
|
1430
1422
|
} = chartSQLMap;
|
|
1431
1423
|
let result = [];
|
|
1432
|
-
const isGroupbyColumnDataAsAnArray =
|
|
1424
|
+
const isGroupbyColumnDataAsAnArray = findIfColumnDataIsArray(groupbyColumn);
|
|
1433
1425
|
for (const row of sqlRows) {
|
|
1434
1426
|
const groupbyColumnCellValue = row[sqlGroupbyColumnKey];
|
|
1435
1427
|
const groupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(groupbyColumnCellValue, groupbyColumn, chart.config);
|
|
1436
|
-
if (
|
|
1428
|
+
if (BaseUtils.isValidCellValue(groupbyColumnCellValueKey, includeEmpty)) {
|
|
1437
1429
|
Object.keys(summaryColumns).forEach(sqlSummaryColumnName => {
|
|
1438
1430
|
const {
|
|
1439
1431
|
sqlSummaryColumnKey,
|
|
@@ -1454,8 +1446,8 @@ SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, ch
|
|
|
1454
1446
|
});
|
|
1455
1447
|
}
|
|
1456
1448
|
}
|
|
1457
|
-
|
|
1458
|
-
await
|
|
1449
|
+
BaseUtils.sortCharts(result, groupbyColumn, 'name');
|
|
1450
|
+
await BaseUtils.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
|
|
1459
1451
|
const allSummaryColumns = [summaryColumn].concat(summaryColumnsWithMethod.map(item => item.column));
|
|
1460
1452
|
|
|
1461
1453
|
// format precision of enabled precision columns
|
|
@@ -1468,7 +1460,7 @@ SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, ch
|
|
|
1468
1460
|
});
|
|
1469
1461
|
Object.values(columnNameResultMap).forEach(items => {
|
|
1470
1462
|
const targetColumn = allSummaryColumns.find(column => column.name === items[0].group_name);
|
|
1471
|
-
|
|
1463
|
+
BaseUtils.updateSummaryValuePrecision(items, targetColumn, 'value');
|
|
1472
1464
|
});
|
|
1473
1465
|
return result;
|
|
1474
1466
|
}
|
|
@@ -1491,11 +1483,11 @@ SQLStatisticsUtils.heatMapChartSQLResult2JavaScript = (chart, sqlRows, chartSQLM
|
|
|
1491
1483
|
if (currentValue || currentValue === 0) {
|
|
1492
1484
|
let value = item[sqlSummaryColumnKey];
|
|
1493
1485
|
if (summaryColumn) {
|
|
1494
|
-
value =
|
|
1486
|
+
value = formatNumericValue(value, summaryColumn);
|
|
1495
1487
|
}
|
|
1496
1488
|
const name = typeof currentValue === 'string' ? currentValue : currentValue.country_region;
|
|
1497
1489
|
result.push({
|
|
1498
|
-
name: (
|
|
1490
|
+
name: dayjs(name).format('YYYY-MM-DD'),
|
|
1499
1491
|
value
|
|
1500
1492
|
});
|
|
1501
1493
|
}
|
|
@@ -1507,7 +1499,7 @@ SQLStatisticsUtils.heatMapChartSQLResult2JavaScript = (chart, sqlRows, chartSQLM
|
|
|
1507
1499
|
data.push(item);
|
|
1508
1500
|
return;
|
|
1509
1501
|
}
|
|
1510
|
-
const year = (
|
|
1502
|
+
const year = dayjs(item.name).year();
|
|
1511
1503
|
data.push({
|
|
1512
1504
|
...item,
|
|
1513
1505
|
year
|
|
@@ -1545,7 +1537,7 @@ SQLStatisticsUtils.mirrorMapChartSQLResult2JavaScript = async (chart, sqlRows, c
|
|
|
1545
1537
|
const {
|
|
1546
1538
|
sqlSummaryColumnKey
|
|
1547
1539
|
} = chartSQLMap;
|
|
1548
|
-
const isAdvanced = summary_type ===
|
|
1540
|
+
const isAdvanced = summary_type === CHART_SUMMARY_TYPE.ADVANCED;
|
|
1549
1541
|
const newResult = [];
|
|
1550
1542
|
const groupData = _SQLStatisticsUtils.getGroupData(sqlRows, columnGroupbyColumn);
|
|
1551
1543
|
if (groupData.length > 0) {
|
|
@@ -1561,8 +1553,8 @@ SQLStatisticsUtils.mirrorMapChartSQLResult2JavaScript = async (chart, sqlRows, c
|
|
|
1561
1553
|
let value = item[sqlSummaryColumnKey];
|
|
1562
1554
|
let formattedValue = value;
|
|
1563
1555
|
if (isAdvanced) {
|
|
1564
|
-
value =
|
|
1565
|
-
formattedValue =
|
|
1556
|
+
value = formatNumericValue(value, summaryColumn);
|
|
1557
|
+
formattedValue = getFormattedValue(value, summary_column_key, summary_method);
|
|
1566
1558
|
}
|
|
1567
1559
|
newResult.push({
|
|
1568
1560
|
name: label,
|
|
@@ -1570,7 +1562,7 @@ SQLStatisticsUtils.mirrorMapChartSQLResult2JavaScript = async (chart, sqlRows, c
|
|
|
1570
1562
|
value: equal2GroupData0 ? value : 0,
|
|
1571
1563
|
formatted_value: equal2GroupData0 ? formattedValue : 0,
|
|
1572
1564
|
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) ||
|
|
1565
|
+
color: ((_groupData$2 = groupData[0]) === null || _groupData$2 === void 0 ? void 0 : _groupData$2.color) || STYLE_COLORS[0].colors[0],
|
|
1574
1566
|
rows: [item]
|
|
1575
1567
|
});
|
|
1576
1568
|
groupData[1] && newResult.push({
|
|
@@ -1579,7 +1571,7 @@ SQLStatisticsUtils.mirrorMapChartSQLResult2JavaScript = async (chart, sqlRows, c
|
|
|
1579
1571
|
value: equal2GroupData1 ? value : 0,
|
|
1580
1572
|
formatted_value: equal2GroupData1 ? formattedValue : 0,
|
|
1581
1573
|
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) ||
|
|
1574
|
+
color: ((_groupData$4 = groupData[1]) === null || _groupData$4 === void 0 ? void 0 : _groupData$4.color) || STYLE_COLORS[0].colors[0],
|
|
1583
1575
|
rows: [item]
|
|
1584
1576
|
});
|
|
1585
1577
|
}
|
|
@@ -1610,14 +1602,14 @@ SQLStatisticsUtils.trendMapChartSQLResult2JavaScript = (chart, sqlRows, chartSQL
|
|
|
1610
1602
|
const {
|
|
1611
1603
|
compareValue: value1,
|
|
1612
1604
|
comparedValue: value2
|
|
1613
|
-
} =
|
|
1605
|
+
} = BaseUtils.summaryDurationResult(sqlRows, date_granularity, summary_type, summary_method, true, sqlGroupbyColumnKey, sqlSummaryColumnKey);
|
|
1614
1606
|
compareValue = value1;
|
|
1615
1607
|
comparedValue = value2;
|
|
1616
1608
|
} else {
|
|
1617
1609
|
const {
|
|
1618
1610
|
compareDate,
|
|
1619
1611
|
comparedDate
|
|
1620
|
-
} =
|
|
1612
|
+
} = getCompareDate(date_granularity, 'app');
|
|
1621
1613
|
for (const item of sqlRows) {
|
|
1622
1614
|
if (!item[sqlGroupbyColumnKey]) continue;
|
|
1623
1615
|
const currentDate = item[sqlGroupbyColumnKey] + '';
|
|
@@ -1647,11 +1639,11 @@ SQLStatisticsUtils.trendMapChartSQLResult2JavaScript = (chart, sqlRows, chartSQL
|
|
|
1647
1639
|
}
|
|
1648
1640
|
let type;
|
|
1649
1641
|
if (compareValue > comparedValue) {
|
|
1650
|
-
type =
|
|
1642
|
+
type = TREND_TYPES.UP;
|
|
1651
1643
|
} else if (compareValue < comparedValue) {
|
|
1652
|
-
type =
|
|
1644
|
+
type = TREND_TYPES.DOWN;
|
|
1653
1645
|
} else if (compareValue === comparedValue) {
|
|
1654
|
-
type =
|
|
1646
|
+
type = TREND_TYPES.EQUAL;
|
|
1655
1647
|
}
|
|
1656
1648
|
if (compareValue === 0 && comparedValue === 0) {
|
|
1657
1649
|
result = '0%';
|
|
@@ -1668,15 +1660,15 @@ SQLStatisticsUtils.sqlResult2JavaScript = async (chart, sqlRows, chartSQLMap, co
|
|
|
1668
1660
|
type
|
|
1669
1661
|
} = chart.config;
|
|
1670
1662
|
switch (type) {
|
|
1671
|
-
case
|
|
1663
|
+
case CHART_TYPE.TABLE_ELEMENT:
|
|
1672
1664
|
{
|
|
1673
1665
|
return {
|
|
1674
1666
|
result: sqlRows
|
|
1675
1667
|
};
|
|
1676
1668
|
}
|
|
1677
|
-
case
|
|
1669
|
+
case CHART_TYPE.TABLE:
|
|
1678
1670
|
{
|
|
1679
|
-
sqlRows =
|
|
1671
|
+
sqlRows = BaseUtils.recalculateAvg(sqlRows);
|
|
1680
1672
|
const {
|
|
1681
1673
|
column_groupby_column_key
|
|
1682
1674
|
} = chart.config;
|
|
@@ -1692,106 +1684,106 @@ SQLStatisticsUtils.sqlResult2JavaScript = async (chart, sqlRows, chartSQLMap, co
|
|
|
1692
1684
|
}
|
|
1693
1685
|
return result;
|
|
1694
1686
|
}
|
|
1695
|
-
case
|
|
1696
|
-
case
|
|
1697
|
-
case
|
|
1687
|
+
case CHART_TYPE.PIE:
|
|
1688
|
+
case CHART_TYPE.RING:
|
|
1689
|
+
case CHART_TYPE.TREE_MAP:
|
|
1698
1690
|
{
|
|
1699
1691
|
return {
|
|
1700
1692
|
result: await _SQLStatisticsUtils.basicChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1701
1693
|
};
|
|
1702
1694
|
}
|
|
1703
|
-
case
|
|
1695
|
+
case CHART_TYPE.BASIC_NUMBER_CARD:
|
|
1704
1696
|
{
|
|
1705
1697
|
return {
|
|
1706
1698
|
result: _SQLStatisticsUtils.basicNumberCardSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1707
1699
|
};
|
|
1708
1700
|
}
|
|
1709
|
-
case
|
|
1701
|
+
case CHART_TYPE.DASHBOARD:
|
|
1710
1702
|
{
|
|
1711
1703
|
return {
|
|
1712
1704
|
result: _SQLStatisticsUtils.dashboardSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1713
1705
|
};
|
|
1714
1706
|
}
|
|
1715
|
-
case
|
|
1716
|
-
case
|
|
1717
|
-
case
|
|
1718
|
-
case
|
|
1719
|
-
case
|
|
1707
|
+
case CHART_TYPE.BAR:
|
|
1708
|
+
case CHART_TYPE.LINE:
|
|
1709
|
+
case CHART_TYPE.HORIZONTAL_BAR:
|
|
1710
|
+
case CHART_TYPE.AREA:
|
|
1711
|
+
case CHART_TYPE.FUNNEL:
|
|
1720
1712
|
{
|
|
1721
1713
|
return {
|
|
1722
1714
|
result: await _SQLStatisticsUtils.basicChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1723
1715
|
};
|
|
1724
1716
|
}
|
|
1725
|
-
case
|
|
1726
|
-
case
|
|
1717
|
+
case CHART_TYPE.COMPLETENESS:
|
|
1718
|
+
case CHART_TYPE.COMPLETENESS_GROUP:
|
|
1727
1719
|
{
|
|
1728
1720
|
const result = await _SQLStatisticsUtils.completenessSQlResult(chart, sqlRows, chartSQLMap, tables);
|
|
1729
1721
|
return {
|
|
1730
1722
|
result
|
|
1731
1723
|
};
|
|
1732
1724
|
}
|
|
1733
|
-
case
|
|
1725
|
+
case CHART_TYPE.COMBINATION:
|
|
1734
1726
|
{
|
|
1735
1727
|
return {
|
|
1736
1728
|
result: await _SQLStatisticsUtils.combinationSQLResult2Javascript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1737
1729
|
};
|
|
1738
1730
|
}
|
|
1739
|
-
case
|
|
1731
|
+
case CHART_TYPE.COMPARE_BAR:
|
|
1740
1732
|
{
|
|
1741
1733
|
return {
|
|
1742
1734
|
result: await _SQLStatisticsUtils.compareSQLResult2Javascript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1743
1735
|
};
|
|
1744
1736
|
}
|
|
1745
|
-
case
|
|
1746
|
-
case
|
|
1747
|
-
case
|
|
1748
|
-
case
|
|
1749
|
-
case
|
|
1750
|
-
case
|
|
1737
|
+
case CHART_TYPE.BAR_GROUP:
|
|
1738
|
+
case CHART_TYPE.BAR_STACK:
|
|
1739
|
+
case CHART_TYPE.LINE_GROUP:
|
|
1740
|
+
case CHART_TYPE.AREA_GROUP:
|
|
1741
|
+
case CHART_TYPE.HORIZONTAL_GROUP_BAR:
|
|
1742
|
+
case CHART_TYPE.STACKED_HORIZONTAL_BAR:
|
|
1751
1743
|
{
|
|
1752
1744
|
return {
|
|
1753
1745
|
result: await _SQLStatisticsUtils.groupingChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1754
1746
|
};
|
|
1755
1747
|
}
|
|
1756
|
-
case
|
|
1748
|
+
case CHART_TYPE.SCATTER:
|
|
1757
1749
|
{
|
|
1758
1750
|
return {
|
|
1759
1751
|
result: await _SQLStatisticsUtils.scatterSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1760
1752
|
};
|
|
1761
1753
|
}
|
|
1762
|
-
case
|
|
1754
|
+
case CHART_TYPE.BAR_CUSTOM:
|
|
1763
1755
|
{
|
|
1764
1756
|
return {
|
|
1765
1757
|
result: await _SQLStatisticsUtils.customChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables, params)
|
|
1766
1758
|
};
|
|
1767
1759
|
}
|
|
1768
|
-
case
|
|
1769
|
-
case
|
|
1760
|
+
case CHART_TYPE.MAP:
|
|
1761
|
+
case CHART_TYPE.MAP_BUBBLE:
|
|
1770
1762
|
{
|
|
1771
1763
|
return {
|
|
1772
1764
|
result: _SQLStatisticsUtils.mapSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1773
1765
|
};
|
|
1774
1766
|
}
|
|
1775
|
-
case
|
|
1776
|
-
case
|
|
1767
|
+
case CHART_TYPE.WORLD_MAP:
|
|
1768
|
+
case CHART_TYPE.WORLD_MAP_BUBBLE:
|
|
1777
1769
|
{
|
|
1778
1770
|
return {
|
|
1779
1771
|
result: _SQLStatisticsUtils.worldMapSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1780
1772
|
};
|
|
1781
1773
|
}
|
|
1782
|
-
case
|
|
1774
|
+
case CHART_TYPE.HEAT_MAP:
|
|
1783
1775
|
{
|
|
1784
1776
|
return {
|
|
1785
1777
|
result: _SQLStatisticsUtils.heatMapChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1786
1778
|
};
|
|
1787
1779
|
}
|
|
1788
|
-
case
|
|
1780
|
+
case CHART_TYPE.MIRROR:
|
|
1789
1781
|
{
|
|
1790
1782
|
return {
|
|
1791
1783
|
result: await _SQLStatisticsUtils.mirrorMapChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
1792
1784
|
};
|
|
1793
1785
|
}
|
|
1794
|
-
case
|
|
1786
|
+
case CHART_TYPE.TREND:
|
|
1795
1787
|
{
|
|
1796
1788
|
return {
|
|
1797
1789
|
result: _SQLStatisticsUtils.trendMapChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
|
|
@@ -1821,23 +1813,23 @@ SQLStatisticsUtils.completenessSQlResult = async (chart, sqlRows, chartSQLMap, t
|
|
|
1821
1813
|
target_column,
|
|
1822
1814
|
column_groupby_column
|
|
1823
1815
|
} = sqlColumns;
|
|
1824
|
-
const nameColumnDataAsAnArray =
|
|
1816
|
+
const nameColumnDataAsAnArray = findIfColumnDataIsArray(name_column);
|
|
1825
1817
|
// group by name_column, so it can only have one value
|
|
1826
|
-
let originalSqlRows =
|
|
1818
|
+
let originalSqlRows = cloneDeep(sqlRows);
|
|
1827
1819
|
if (nameColumnDataAsAnArray) {
|
|
1828
1820
|
sqlRows.forEach(row => {
|
|
1829
1821
|
var _row$name_column$key;
|
|
1830
1822
|
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
1823
|
});
|
|
1832
1824
|
}
|
|
1833
|
-
await
|
|
1834
|
-
if (sqlColumnGroupbyColumnKey) await
|
|
1825
|
+
await BaseUtils.updateTableViewList(sqlRows, name_column, name_column.key, 'color', false, true);
|
|
1826
|
+
if (sqlColumnGroupbyColumnKey) await BaseUtils.updateTableViewList(sqlRows, column_groupby_column, sqlColumnGroupbyColumnKey, 'color', false, false);
|
|
1835
1827
|
const res = [];
|
|
1836
1828
|
sqlRows.forEach((row, index) => {
|
|
1837
1829
|
const nameValue = row[name_column.key];
|
|
1838
|
-
const targetValue = row[
|
|
1839
|
-
const completedValue = row[
|
|
1840
|
-
const groupby = row[sqlColumnGroupbyColumnKey] ||
|
|
1830
|
+
const targetValue = row[`SUM(${target_column.name})`];
|
|
1831
|
+
const completedValue = row[`SUM(${completed_column.name})`];
|
|
1832
|
+
const groupby = row[sqlColumnGroupbyColumnKey] || intl.get('Empty');
|
|
1841
1833
|
let completedRate;
|
|
1842
1834
|
if (!targetValue && completedValue) {
|
|
1843
1835
|
completedRate = 100;
|
|
@@ -1854,7 +1846,7 @@ SQLStatisticsUtils.completenessSQlResult = async (chart, sqlRows, chartSQLMap, t
|
|
|
1854
1846
|
original_name,
|
|
1855
1847
|
group_name: 'completed',
|
|
1856
1848
|
groupby,
|
|
1857
|
-
color: row.color ||
|
|
1849
|
+
color: row.color || CHART_STYLE_COLORS[0],
|
|
1858
1850
|
value: completedValue,
|
|
1859
1851
|
rows: [originalSqlRows[index]]
|
|
1860
1852
|
});
|
|
@@ -1883,7 +1875,7 @@ SQLStatisticsUtils.completenessSQlResult = async (chart, sqlRows, chartSQLMap, t
|
|
|
1883
1875
|
const deduplicatedRes = [];
|
|
1884
1876
|
const keyMap = {};
|
|
1885
1877
|
res.forEach(item => {
|
|
1886
|
-
const key =
|
|
1878
|
+
const key = `${item.name}_${item.group_name}`;
|
|
1887
1879
|
if (!keyMap[key]) {
|
|
1888
1880
|
keyMap[key] = item;
|
|
1889
1881
|
deduplicatedRes.push(item);
|
|
@@ -1912,11 +1904,11 @@ SQLStatisticsUtils.scatterSQLResult2JavaScript = async (chart, sqlRows, chartSQL
|
|
|
1912
1904
|
summaryColumn
|
|
1913
1905
|
} = columnMap;
|
|
1914
1906
|
// format sql rows
|
|
1915
|
-
const originalSqlRows =
|
|
1907
|
+
const originalSqlRows = cloneDeep(sqlRows);
|
|
1916
1908
|
const isScatter = true;
|
|
1917
|
-
await
|
|
1918
|
-
await
|
|
1919
|
-
if (sqlColumnGroupbyColumnKey) await
|
|
1909
|
+
await BaseUtils.updateTableViewList(sqlRows, groupbyColumn, groupbyColumn.key, 'color', isScatter, true);
|
|
1910
|
+
await BaseUtils.updateTableViewList(sqlRows, summaryColumn, summaryColumn.key, 'color', isScatter, true);
|
|
1911
|
+
if (sqlColumnGroupbyColumnKey) await BaseUtils.updateTableViewList(sqlRows, columnGroupbyColumn, sqlColumnGroupbyColumnKey, 'color', isScatter, false);
|
|
1920
1912
|
const res = [];
|
|
1921
1913
|
sqlRows.forEach((row, index) => {
|
|
1922
1914
|
const xValue = row[sqlXColumnKey];
|
|
@@ -1938,7 +1930,7 @@ SQLStatisticsUtils.scatterSQLResult2JavaScript = async (chart, sqlRows, chartSQL
|
|
|
1938
1930
|
}
|
|
1939
1931
|
});
|
|
1940
1932
|
});
|
|
1941
|
-
|
|
1933
|
+
BaseUtils.sortCharts(res, groupbyColumn, 'name');
|
|
1942
1934
|
return res;
|
|
1943
1935
|
};
|
|
1944
1936
|
SQLStatisticsUtils.mapSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, columnMap, tables) => {
|
|
@@ -2036,8 +2028,8 @@ SQLStatisticsUtils.worldMapSQLResult2JavaScript = (chart, sqlRows, chartSQLMap,
|
|
|
2036
2028
|
let value = nameValueMap[name];
|
|
2037
2029
|
let formatted_value = value;
|
|
2038
2030
|
if (summary_type === 'advanced') {
|
|
2039
|
-
value =
|
|
2040
|
-
formatted_value =
|
|
2031
|
+
value = formatNumericValue(value, summaryColumn);
|
|
2032
|
+
formatted_value = getFormattedValue(value, summaryColumn, summary_method);
|
|
2041
2033
|
}
|
|
2042
2034
|
acc.push({
|
|
2043
2035
|
name,
|
|
@@ -2053,8 +2045,8 @@ SQLStatisticsUtils.worldMapSQLResult2JavaScript = (chart, sqlRows, chartSQLMap,
|
|
|
2053
2045
|
let value = item[sqlSummaryColumnKey];
|
|
2054
2046
|
let formatted_value = value;
|
|
2055
2047
|
if (summary_type === 'advanced') {
|
|
2056
|
-
value =
|
|
2057
|
-
formatted_value =
|
|
2048
|
+
value = formatNumericValue(value, summaryColumn);
|
|
2049
|
+
formatted_value = getFormattedValue(value, summaryColumn, summary_method);
|
|
2058
2050
|
}
|
|
2059
2051
|
if (currentValue) {
|
|
2060
2052
|
const name = typeof currentValue === 'string' ? currentValue : currentValue.country_region;
|
|
@@ -2072,7 +2064,7 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
|
|
|
2072
2064
|
const {
|
|
2073
2065
|
tables
|
|
2074
2066
|
} = value;
|
|
2075
|
-
if (!
|
|
2067
|
+
if (!BaseUtils.isValidExistChart(tables, chart)) {
|
|
2076
2068
|
const tip_message = 'Please_complete_the_chart_configuration_first';
|
|
2077
2069
|
return callback && callback('', tip_message, null);
|
|
2078
2070
|
}
|
|
@@ -2082,7 +2074,7 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
|
|
|
2082
2074
|
type
|
|
2083
2075
|
} = chart;
|
|
2084
2076
|
const chartType = config.type;
|
|
2085
|
-
const newConfig =
|
|
2077
|
+
const newConfig = BaseUtils.convertConfig(config);
|
|
2086
2078
|
const newChart = {
|
|
2087
2079
|
id,
|
|
2088
2080
|
config: newConfig,
|
|
@@ -2091,11 +2083,11 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
|
|
|
2091
2083
|
const {
|
|
2092
2084
|
table_id
|
|
2093
2085
|
} = config;
|
|
2094
|
-
const table =
|
|
2095
|
-
const groupbyColumn =
|
|
2096
|
-
const columnGroupbyColumn =
|
|
2097
|
-
const summaryColumn =
|
|
2098
|
-
const summaryColumnsWithMethod =
|
|
2086
|
+
const table = getTableById(tables, table_id);
|
|
2087
|
+
const groupbyColumn = BaseUtils.getGroupColumn(table, newChart);
|
|
2088
|
+
const columnGroupbyColumn = BaseUtils.getColumnGroupColumn(table, newChart);
|
|
2089
|
+
const summaryColumn = BaseUtils.getSummaryColumn(table, newChart);
|
|
2090
|
+
const summaryColumnsWithMethod = BaseUtils.getSummaryColumnsWithMethod(table, newChart);
|
|
2099
2091
|
// summary column is referring to single_numeric_column, but summaryColumns is referring to multiple_numeric_column
|
|
2100
2092
|
// single_numeric_column is used as the first setting option when switched to multiple_numeric_column
|
|
2101
2093
|
const columnMap = {
|
|
@@ -2107,7 +2099,7 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
|
|
|
2107
2099
|
const chartTableColumns = table.columns;
|
|
2108
2100
|
let chartSQLMap = null;
|
|
2109
2101
|
try {
|
|
2110
|
-
chartSQLMap =
|
|
2102
|
+
chartSQLMap = chartColumn2SqlColumn(newChart, table);
|
|
2111
2103
|
} catch (error) {
|
|
2112
2104
|
let error_message = 'There_are_some_problems_with_the_filters';
|
|
2113
2105
|
if (error.message) error_message = error.message;
|
|
@@ -2116,7 +2108,7 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
|
|
|
2116
2108
|
const tipMessage = 'There_are_no_statistic_results_yet';
|
|
2117
2109
|
|
|
2118
2110
|
// Custom Bar
|
|
2119
|
-
if (chartType ===
|
|
2111
|
+
if (chartType === CHART_TYPE.BAR_CUSTOM) {
|
|
2120
2112
|
const result = [];
|
|
2121
2113
|
for (const [index, item] of sqlRows.entries()) {
|
|
2122
2114
|
if (item.length !== 0) {
|
|
@@ -2143,14 +2135,14 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
|
|
|
2143
2135
|
}
|
|
2144
2136
|
|
|
2145
2137
|
// map is special, still need to show map even data is empty
|
|
2146
|
-
if (!Array.isArray(sqlRows) || sqlRows.length === 0 && !
|
|
2138
|
+
if (!Array.isArray(sqlRows) || sqlRows.length === 0 && !MAP_CHART_TYPES.includes(chartType)) {
|
|
2147
2139
|
callback && callback('', tipMessage, null);
|
|
2148
2140
|
return;
|
|
2149
2141
|
}
|
|
2150
2142
|
const chartResult = await _SQLStatisticsUtils.sqlResult2JavaScript(newChart, sqlRows, chartSQLMap, columnMap, tables);
|
|
2151
2143
|
|
|
2152
2144
|
// map is special
|
|
2153
|
-
if (
|
|
2145
|
+
if (BaseUtils.imEmptyChartResult(chartResult) && !chartType.includes('map')) {
|
|
2154
2146
|
callback && callback('', tipMessage, null);
|
|
2155
2147
|
return;
|
|
2156
2148
|
}
|
|
@@ -2170,7 +2162,7 @@ SQLStatisticsUtils.calculateStaticChart = (chart, value, statisticalResult, call
|
|
|
2170
2162
|
config
|
|
2171
2163
|
} = chart;
|
|
2172
2164
|
const tables = value.tables;
|
|
2173
|
-
const newConfig =
|
|
2165
|
+
const newConfig = BaseUtils.convertConfig(config);
|
|
2174
2166
|
const newChart = {
|
|
2175
2167
|
id,
|
|
2176
2168
|
config: newConfig
|
|
@@ -2178,31 +2170,31 @@ SQLStatisticsUtils.calculateStaticChart = (chart, value, statisticalResult, call
|
|
|
2178
2170
|
const {
|
|
2179
2171
|
type
|
|
2180
2172
|
} = config;
|
|
2181
|
-
if ([
|
|
2173
|
+
if ([CHART_TYPE.TABLE, CHART_TYPE.TABLE_ELEMENT].includes(type)) return callback && callback('', '', statisticalResult);
|
|
2182
2174
|
const {
|
|
2183
2175
|
table_id,
|
|
2184
2176
|
sort_type
|
|
2185
2177
|
} = config;
|
|
2186
|
-
const table =
|
|
2187
|
-
const groupbyColumn =
|
|
2178
|
+
const table = getTableById(tables, table_id);
|
|
2179
|
+
const groupbyColumn = BaseUtils.getGroupColumn(table, newChart);
|
|
2188
2180
|
let result = statisticalResult.result;
|
|
2189
2181
|
if (!result) {
|
|
2190
2182
|
const tip_message = 'There_are_no_statistic_results_yet';
|
|
2191
2183
|
return callback && callback('', tip_message, null);
|
|
2192
2184
|
}
|
|
2193
|
-
if (
|
|
2194
|
-
|
|
2185
|
+
if (SUPPORT_DATA_SORT_CHART_TYPES.includes(type) && sort_type) {
|
|
2186
|
+
BaseUtils.sortChartData(result, sort_type);
|
|
2195
2187
|
const newStatisticalResult = {
|
|
2196
2188
|
...statisticalResult,
|
|
2197
2189
|
result
|
|
2198
2190
|
};
|
|
2199
2191
|
return callback && callback('', '', newStatisticalResult);
|
|
2200
2192
|
}
|
|
2201
|
-
|
|
2193
|
+
BaseUtils.sortCharts(result, groupbyColumn, 'name');
|
|
2202
2194
|
const newStatisticalResult = {
|
|
2203
2195
|
...statisticalResult,
|
|
2204
2196
|
result
|
|
2205
2197
|
};
|
|
2206
2198
|
return callback && callback('', '', newStatisticalResult);
|
|
2207
2199
|
};
|
|
2208
|
-
|
|
2200
|
+
export default SQLStatisticsUtils;
|