sea-chart 2.0.37 → 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 +20 -69
- package/dist/assets/css/sea-chart-d3-tooltip.css +0 -1
- 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 +31 -37
- 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 +41 -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 +12 -23
- package/dist/components/index.js +7 -48
- package/dist/components/loading/index.js +6 -13
- package/dist/components/number-input/index.js +11 -24
- package/dist/components/pixel-editor/index.js +15 -23
- package/dist/components/popover/hide-column-popover/hide-column-popover-widgets/hide-column-item.js +13 -16
- package/dist/components/popover/hide-column-popover/hide-column-popover.css +5 -1
- package/dist/components/popover/hide-column-popover/hide-column-popover.js +28 -38
- package/dist/components/popover/sort-popover/sort-popover-widgets/sort-utils.js +9 -18
- package/dist/components/popover/sort-popover/sort-popover.js +58 -69
- 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 +61 -68
- package/dist/components/tooltip/index.js +39 -28
- 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 +13 -16
- 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 +2 -7
- package/dist/locale/lang/en.js +2 -7
- package/dist/locale/lang/es.js +2 -7
- package/dist/locale/lang/fr.js +2 -7
- package/dist/locale/lang/pt.js +2 -7
- package/dist/locale/lang/ru.js +2 -7
- package/dist/locale/lang/zh_CN.js +2 -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 +14 -17
- 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 +14 -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 +66 -73
- 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 +51 -59
- package/dist/settings/basic-number-card/data-settings.js +50 -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 -64
- package/dist/settings/combination-settings/index.js +3 -20
- package/dist/settings/combination-settings/style-settings.js +67 -75
- 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 +44 -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 +22 -30
- 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 +57 -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 +49 -58
- package/dist/settings/table-element-settings/data-settings.js +21 -29
- package/dist/settings/table-element-settings/index.css +1 -31
- package/dist/settings/table-element-settings/index.js +2 -13
- package/dist/settings/table-settings/data-settings.js +113 -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 +44 -52
- 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 +59 -66
- 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 +27 -34
- package/dist/settings/widgets/data-filter/index.js +59 -59
- 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 +52 -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 +75 -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 +65 -72
- package/dist/utils/cell-format-utils.js +25 -33
- package/dist/utils/cell-value-utils.js +4 -11
- package/dist/utils/chart-utils/base-utils.js +467 -367
- package/dist/utils/chart-utils/index.js +29 -40
- package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +78 -85
- package/dist/utils/chart-utils/original-data-utils/card-calculator.js +20 -21
- 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 +28 -26
- 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 +94 -97
- package/dist/utils/chart-utils/original-data-utils/scatter-calculator.js +19 -25
- package/dist/utils/chart-utils/original-data-utils/trend-calculator.js +50 -36
- package/dist/utils/chart-utils/sql-statistics-utils.js +385 -388
- 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 +88 -102
- package/dist/utils/common-utils.js +28 -53
- package/dist/utils/concurrency-manager.js +1 -7
- package/dist/utils/contexts.js +7 -11
- 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 +73 -219
- 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 +251 -183
- 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 +162 -172
- package/dist/utils/sql/index.js +3 -27
- package/dist/utils/trend-utils.js +50 -45
- package/dist/view/index.css +2 -8
- package/dist/view/index.js +102 -103
- package/dist/view/title/index.js +16 -24
- package/dist/view/wrapper/area-group.js +57 -57
- package/dist/view/wrapper/area.js +43 -51
- package/dist/view/wrapper/bar-compare.js +56 -48
- package/dist/view/wrapper/bar-custom-stack.js +73 -55
- package/dist/view/wrapper/bar-group.js +94 -73
- package/dist/view/wrapper/bar-stack.js +49 -57
- package/dist/view/wrapper/bar.js +40 -48
- package/dist/view/wrapper/basic-number-card.js +50 -34
- package/dist/view/wrapper/chart-component.js +164 -569
- package/dist/view/wrapper/combination.js +55 -63
- package/dist/view/wrapper/completeness-group.js +140 -93
- package/dist/view/wrapper/completeness.js +36 -44
- package/dist/view/wrapper/dashboard.js +104 -59
- 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 +70 -58
- package/dist/view/wrapper/horizontal-bar-stack.js +48 -56
- package/dist/view/wrapper/horizontal-bar.js +41 -49
- package/dist/view/wrapper/index.js +107 -115
- package/dist/view/wrapper/line-group.js +49 -52
- 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 +40 -47
- package/dist/view/wrapper/map-world.js +42 -49
- package/dist/view/wrapper/map.js +42 -50
- package/dist/view/wrapper/mirror.js +41 -49
- package/dist/view/wrapper/pie.js +45 -53
- package/dist/view/wrapper/ring.js +50 -58
- package/dist/view/wrapper/scatter.js +50 -56
- 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 -92
- 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 -16
- 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 +8 -13
- 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 +30 -43
- package/dist/view/wrapper/treemap.js +38 -46
- package/dist/view/wrapper/trend.js +80 -65
- package/package.json +15 -12
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
import { CellType, filter2SqlCondition, isNumericColumn, isDateColumn } from 'dtable-utils';
|
|
2
|
+
import dayjs from 'dayjs';
|
|
3
|
+
import { getSqlGroup } from '../column-utils';
|
|
4
|
+
import { CHART_TYPE, DTABLE_DB_SUMMARY_METHOD, CHART_SUMMARY_TYPE, CHART_Y_GROUP_TYPE } from '../../constants';
|
|
5
|
+
import { fixGeoGranularity } from '../map';
|
|
6
|
+
import { getDatabaseGroupName } from './column-2-sql-column';
|
|
2
7
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _dtableUtils = require("dtable-utils");
|
|
9
|
-
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
10
|
-
var _columnUtils = require("../column-utils");
|
|
11
|
-
var _constants = require("../../constants");
|
|
12
|
-
var _map = require("../map");
|
|
13
|
-
var _column2SqlColumn = require("./column-2-sql-column");
|
|
14
8
|
/*
|
|
15
9
|
query chart data by dtable-db
|
|
16
10
|
**/
|
|
@@ -26,42 +20,42 @@ class ChartDataSQL {
|
|
|
26
20
|
userDepartmentIdsMap
|
|
27
21
|
} = _ref;
|
|
28
22
|
this._chart_column_name_to_sql = (column, groupBy) => {
|
|
29
|
-
return
|
|
23
|
+
return getSqlGroup(column, groupBy);
|
|
30
24
|
};
|
|
31
25
|
this._get_column_by_key = key => {
|
|
32
26
|
return this.column_key_map[key];
|
|
33
27
|
};
|
|
34
28
|
this._get_sql_order_by = (sortType, groupName) => {
|
|
35
29
|
if (!sortType) {
|
|
36
|
-
return
|
|
30
|
+
return `ORDER BY ${groupName}`;
|
|
37
31
|
}
|
|
38
32
|
return '';
|
|
39
33
|
};
|
|
40
34
|
this._update_filter_sql = (include_empty, column, method) => {
|
|
41
35
|
const column_name = (column === null || column === void 0 ? void 0 : column.name) || '';
|
|
42
36
|
if (!include_empty) {
|
|
43
|
-
const sql_column_name = method ?
|
|
44
|
-
const not_include_empty_sql =
|
|
37
|
+
const sql_column_name = method ? `${method}(\`${column_name}\`)` : `\`${column_name}\``;
|
|
38
|
+
const not_include_empty_sql = `${sql_column_name} IS NOT NULL`;
|
|
45
39
|
if (this.filter_sql) {
|
|
46
40
|
if (this.filter_sql.startsWith('WHERE')) {
|
|
47
41
|
this.filter_sql = this.filter_sql.slice(5);
|
|
48
42
|
}
|
|
49
|
-
this.filter_sql =
|
|
43
|
+
this.filter_sql = `WHERE ${not_include_empty_sql} AND ${this.filter_sql}`;
|
|
50
44
|
} else {
|
|
51
|
-
this.filter_sql =
|
|
45
|
+
this.filter_sql = `WHERE ${not_include_empty_sql}`;
|
|
52
46
|
}
|
|
53
47
|
}
|
|
54
48
|
};
|
|
55
49
|
this._summary_column_2_sql = (summary_method, column) => {
|
|
56
50
|
const column_name = (column === null || column === void 0 ? void 0 : column.name) || '';
|
|
57
|
-
const valid_column_name =
|
|
58
|
-
if (summary_method === 'DISTINCT_VALUES') return
|
|
59
|
-
if (summary_method === 'ROW_COUNT') return
|
|
60
|
-
return
|
|
51
|
+
const valid_column_name = `\`${column_name}\``;
|
|
52
|
+
if (summary_method === 'DISTINCT_VALUES') return `COUNT(DISTINCT ${valid_column_name})`;
|
|
53
|
+
if (summary_method === 'ROW_COUNT') return `COUNT(${valid_column_name})`;
|
|
54
|
+
return `${DTABLE_DB_SUMMARY_METHOD[summary_method]}(${valid_column_name})`;
|
|
61
55
|
};
|
|
62
56
|
this._basic_statistic_2_sql = () => {
|
|
63
57
|
let x_axis_column_key, x_axis_date_granularity, x_axis_geolocation_granularity, x_axis_include_empty_cells, y_axis_summary_type, y_axis_summary_method, y_axis_summary_column_key;
|
|
64
|
-
if ([
|
|
58
|
+
if ([CHART_TYPE.HORIZONTAL_BAR, CHART_TYPE.STACKED_HORIZONTAL_BAR, CHART_TYPE.HORIZONTAL_GROUP_BAR].includes(this.chart_type)) {
|
|
65
59
|
x_axis_column_key = this.chart['vertical_axis_column_key'] || '';
|
|
66
60
|
x_axis_date_granularity = this.chart['vertical_axis_date_granularity'] || '';
|
|
67
61
|
x_axis_geolocation_granularity = this.chart['vertical_axis_geolocation_granularity'] || '';
|
|
@@ -102,9 +96,9 @@ class ChartDataSQL {
|
|
|
102
96
|
}
|
|
103
97
|
}
|
|
104
98
|
if (summary_column_name) {
|
|
105
|
-
return
|
|
99
|
+
return `SELECT ${groupby_column_name}, ${summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
106
100
|
}
|
|
107
|
-
return
|
|
101
|
+
return `SELECT ${groupby_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
108
102
|
};
|
|
109
103
|
this._heat_map_statistic_2_sql = () => {
|
|
110
104
|
const {
|
|
@@ -123,7 +117,7 @@ class ChartDataSQL {
|
|
|
123
117
|
date_granularity: 'day'
|
|
124
118
|
});
|
|
125
119
|
let summary_column_name = this._summary_column_2_sql('COUNT', groupby_column);
|
|
126
|
-
if (summary_type ===
|
|
120
|
+
if (summary_type === CHART_SUMMARY_TYPE.ADVANCED) {
|
|
127
121
|
const summary_column = this._get_column_by_key(summary_column_key);
|
|
128
122
|
if (!summary_column) {
|
|
129
123
|
this.error = 'Summary_column_not_found';
|
|
@@ -131,7 +125,7 @@ class ChartDataSQL {
|
|
|
131
125
|
}
|
|
132
126
|
summary_column_name = this._summary_column_2_sql(summary_method.toUpperCase(), summary_column);
|
|
133
127
|
}
|
|
134
|
-
return
|
|
128
|
+
return `SELECT ${column_name}, ${summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${column_name} LIMIT 0, 5000`;
|
|
135
129
|
};
|
|
136
130
|
this._mirror_map_statistic_2_sql = () => {
|
|
137
131
|
const {
|
|
@@ -155,7 +149,7 @@ class ChartDataSQL {
|
|
|
155
149
|
const column_name = this._chart_column_name_to_sql(groupby_column, {});
|
|
156
150
|
const column_groupby_column_name = this._chart_column_name_to_sql(column_groupby_column, {});
|
|
157
151
|
let summary_column_name = this._summary_column_2_sql('COUNT', groupby_column);
|
|
158
|
-
if (summary_type ===
|
|
152
|
+
if (summary_type === CHART_SUMMARY_TYPE.ADVANCED) {
|
|
159
153
|
const summary_column = this._get_column_by_key(summary_column_key);
|
|
160
154
|
if (!summary_column) {
|
|
161
155
|
this.error = 'Summary_column_not_found';
|
|
@@ -163,7 +157,7 @@ class ChartDataSQL {
|
|
|
163
157
|
}
|
|
164
158
|
summary_column_name = this._summary_column_2_sql(summary_method.toUpperCase(), summary_column);
|
|
165
159
|
}
|
|
166
|
-
return
|
|
160
|
+
return `SELECT ${column_name}, ${column_groupby_column_name}, ${summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${column_name}, ${column_groupby_column_name} LIMIT 0, 5000`;
|
|
167
161
|
};
|
|
168
162
|
this._trend_map_statistic_2_sql = () => {
|
|
169
163
|
const {
|
|
@@ -183,7 +177,7 @@ class ChartDataSQL {
|
|
|
183
177
|
'date_granularity': date_granularity
|
|
184
178
|
});
|
|
185
179
|
let summary_column_name = this._summary_column_2_sql('COUNT', groupby_column);
|
|
186
|
-
if (summary_type ===
|
|
180
|
+
if (summary_type === CHART_SUMMARY_TYPE.ADVANCED) {
|
|
187
181
|
const summary_column = this._get_column_by_key(summary_column_key);
|
|
188
182
|
if (!summary_column) {
|
|
189
183
|
this.error = 'Summary_column_not_found';
|
|
@@ -191,11 +185,11 @@ class ChartDataSQL {
|
|
|
191
185
|
}
|
|
192
186
|
summary_column_name = this._summary_column_2_sql(summary_method.toUpperCase(), summary_column);
|
|
193
187
|
}
|
|
194
|
-
return
|
|
188
|
+
return `SELECT ${groupby_column_name}, ${summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
195
189
|
};
|
|
196
190
|
this._grouping_statistic_2_sql = () => {
|
|
197
191
|
let x_axis_column_key, x_axis_date_granularity, x_axis_geolocation_granularity, x_axis_include_empty_cells, y_axis_summary_type, y_axis_summary_method, y_axis_summary_column_key;
|
|
198
|
-
if ([
|
|
192
|
+
if ([CHART_TYPE.HORIZONTAL_GROUP_BAR, CHART_TYPE.STACKED_HORIZONTAL_BAR].includes(this.chart_type)) {
|
|
199
193
|
x_axis_column_key = this.chart['vertical_axis_column_key'] || '';
|
|
200
194
|
x_axis_date_granularity = this.chart['vertical_axis_date_granularity'] || '';
|
|
201
195
|
x_axis_geolocation_granularity = this.chart['vertical_axis_geolocation_granularity'] || '';
|
|
@@ -236,7 +230,7 @@ class ChartDataSQL {
|
|
|
236
230
|
'geolocation_granularity': column_groupby_geolocation_granularity
|
|
237
231
|
});
|
|
238
232
|
const summary_column_name = this._summary_column_2_sql('COUNT', groupby_column);
|
|
239
|
-
return
|
|
233
|
+
return `SELECT ${groupby_column_name}, ${column_groupby_column_name}, ${summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name}, ${column_groupby_column_name} LIMIT 0, 5000`;
|
|
240
234
|
}
|
|
241
235
|
if (column_groupby_multiple_numeric_column) {
|
|
242
236
|
let column_groupby_numeric_columns = summary_columns.slice(0);
|
|
@@ -257,7 +251,7 @@ class ChartDataSQL {
|
|
|
257
251
|
column_groupby_numeric_column_names.push(summary_column_name);
|
|
258
252
|
}
|
|
259
253
|
const column_groupby_numeric_column_names_string = column_groupby_numeric_column_names.join(', ');
|
|
260
|
-
return
|
|
254
|
+
return `SELECT ${groupby_column_name}, ${column_groupby_numeric_column_names_string} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
261
255
|
}
|
|
262
256
|
const summary_column = this._get_column_by_key(y_axis_summary_column_key);
|
|
263
257
|
if (!summary_column) return this._basic_statistic_2_sql();
|
|
@@ -265,13 +259,13 @@ class ChartDataSQL {
|
|
|
265
259
|
const column_groupby_column = this._get_column_by_key(column_groupby_column_key);
|
|
266
260
|
const summary_column_name = this._summary_column_2_sql(summary_method, summary_column);
|
|
267
261
|
if (!column_groupby_column) {
|
|
268
|
-
return
|
|
262
|
+
return `SELECT ${groupby_column_name}, ${summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
269
263
|
}
|
|
270
264
|
const column_groupby_column_name = this._chart_column_name_to_sql(column_groupby_column, {
|
|
271
265
|
'date_granularity': column_groupby_date_granularity,
|
|
272
266
|
'geolocation_granularity': column_groupby_geolocation_granularity
|
|
273
267
|
});
|
|
274
|
-
return
|
|
268
|
+
return `SELECT ${groupby_column_name}, ${column_groupby_column_name}, ${summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name}, ${column_groupby_column_name} LIMIT 0, 5000`;
|
|
275
269
|
};
|
|
276
270
|
this._custom_statistic_2_sql = () => {
|
|
277
271
|
const {
|
|
@@ -303,14 +297,14 @@ class ChartDataSQL {
|
|
|
303
297
|
column_groupby_numeric_columns
|
|
304
298
|
} = stack;
|
|
305
299
|
let sql = '';
|
|
306
|
-
if (y_axis_type ===
|
|
300
|
+
if (y_axis_type === CHART_TYPE.BAR_STACK && column_groupby_numeric_columns && Array.isArray(column_groupby_numeric_columns) && column_groupby_numeric_columns.length !== 0) {
|
|
307
301
|
// just support summary numeric columns.
|
|
308
302
|
let group_methods = [];
|
|
309
303
|
column_groupby_numeric_columns.forEach(item => {
|
|
310
304
|
const numeric_column = this._get_column_by_key(item.column_key);
|
|
311
|
-
group_methods.push(this._summary_column_2_sql(
|
|
305
|
+
group_methods.push(this._summary_column_2_sql(DTABLE_DB_SUMMARY_METHOD[item.summary_method.toUpperCase()], numeric_column));
|
|
312
306
|
});
|
|
313
|
-
sql =
|
|
307
|
+
sql = `SELECT ${groupby_column_name}, ${group_methods.join(',')} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 5000`;
|
|
314
308
|
}
|
|
315
309
|
SQLs.push(sql);
|
|
316
310
|
}
|
|
@@ -344,7 +338,7 @@ class ChartDataSQL {
|
|
|
344
338
|
'geolocation_granularity': x_axis_geolocation_granularity
|
|
345
339
|
});
|
|
346
340
|
let summary_column_name = this._summary_column_2_sql('COUNT', groupby_column);
|
|
347
|
-
if (y_axis_summary_type ===
|
|
341
|
+
if (y_axis_summary_type === CHART_SUMMARY_TYPE.ADVANCED) {
|
|
348
342
|
const summary_column = this._get_column_by_key(y_axis_summary_column_key);
|
|
349
343
|
if (!summary_column) {
|
|
350
344
|
this.error = 'Summary_column_not_found';
|
|
@@ -357,11 +351,11 @@ class ChartDataSQL {
|
|
|
357
351
|
let filter_sql = this.filter_sql;
|
|
358
352
|
if (x_axis_date_range_start && x_axis_date_range_end && x_axis_compared_date_range_start && x_axis_compared_date_range_end) {
|
|
359
353
|
filter_sql = this.filter_sql.length === 0 ? 'where ' : this.filter_sql + ' AND';
|
|
360
|
-
const formattedXAxisDateRangeEnd = (
|
|
361
|
-
const formattedXAxisComparedDateRangeEnd = (
|
|
362
|
-
filter_sql = filter_sql +
|
|
354
|
+
const formattedXAxisDateRangeEnd = dayjs(x_axis_date_range_end).add(1, 'days').format('YYYY-MM-DD');
|
|
355
|
+
const formattedXAxisComparedDateRangeEnd = dayjs(x_axis_compared_date_range_end).add(1, 'days').format('YYYY-MM-DD');
|
|
356
|
+
filter_sql = filter_sql + ` ((${groupby_column.name} >= '${x_axis_date_range_start}' AND ${groupby_column.name} < '${formattedXAxisDateRangeEnd}') Or (${groupby_column.name} >= '${x_axis_compared_date_range_start}' AND ${groupby_column.name} < '${formattedXAxisComparedDateRangeEnd}'))`;
|
|
363
357
|
}
|
|
364
|
-
return
|
|
358
|
+
return `SELECT ${groupby_column_name}, ${summary_column_name} FROM ${this.table_name} ${filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
365
359
|
};
|
|
366
360
|
this._combination_chart_statistic_2_sql = () => {
|
|
367
361
|
const x_axis_column_key = this.chart['x_axis_column_key'] || '';
|
|
@@ -392,13 +386,13 @@ class ChartDataSQL {
|
|
|
392
386
|
let summary_column_name = '';
|
|
393
387
|
if (right_summary_type === 'COUNT') {
|
|
394
388
|
summary_column_name = this._summary_column_2_sql('COUNT', groupby_column);
|
|
395
|
-
return
|
|
389
|
+
return `SELECT ${groupby_column_name}, ${summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
396
390
|
} else {
|
|
397
391
|
const right_summary_column = this._get_column_by_key(y_axis_right_summary_column);
|
|
398
392
|
if (right_summary_column) {
|
|
399
393
|
const right_summary_method = y_axis_right_summary_method.toUpperCase();
|
|
400
394
|
summary_column_name = this._summary_column_2_sql(right_summary_method, right_summary_column);
|
|
401
|
-
return
|
|
395
|
+
return `SELECT ${groupby_column_name}, COUNT(${groupby_column_name}), ${summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
402
396
|
}
|
|
403
397
|
}
|
|
404
398
|
}
|
|
@@ -438,7 +432,7 @@ class ChartDataSQL {
|
|
|
438
432
|
}
|
|
439
433
|
}
|
|
440
434
|
const column_groupby_numeric_column_names_string = column_groupby_numeric_column_names.join(', ');
|
|
441
|
-
return
|
|
435
|
+
return `SELECT ${groupby_column_name}, ${column_groupby_numeric_column_names_string} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
442
436
|
}
|
|
443
437
|
const summary_column = this._get_column_by_key(y_axis_left_summary_column);
|
|
444
438
|
const summary_method = y_axis_left_summary_method.toUpperCase();
|
|
@@ -455,17 +449,17 @@ class ChartDataSQL {
|
|
|
455
449
|
}
|
|
456
450
|
if (right_summary_column_name) {
|
|
457
451
|
if (left_summary_column_name === right_summary_column_name) {
|
|
458
|
-
return
|
|
452
|
+
return `SELECT ${groupby_column_name}, ${left_summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
459
453
|
}
|
|
460
|
-
return
|
|
454
|
+
return `SELECT ${groupby_column_name}, ${right_summary_column_name}, ${left_summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
461
455
|
}
|
|
462
|
-
return
|
|
456
|
+
return `SELECT ${groupby_column_name}, ${left_summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
463
457
|
};
|
|
464
458
|
this._summary_columns_2_sql = (summary_columns, summary_column_key, groupby_column, summary_method) => {
|
|
465
459
|
const summary_column = this._get_column_by_key(summary_column_key);
|
|
466
460
|
summary_method = summary_method.toUpperCase();
|
|
467
461
|
let summary_column_names = [];
|
|
468
|
-
if (summary_column && (
|
|
462
|
+
if (summary_column && (isNumericColumn(summary_column) || isDateColumn(summary_column))) {
|
|
469
463
|
const summary_column_name = this._summary_column_2_sql(summary_method, summary_column);
|
|
470
464
|
summary_column_names.push(summary_column_name);
|
|
471
465
|
}
|
|
@@ -476,14 +470,14 @@ class ChartDataSQL {
|
|
|
476
470
|
} = column_option;
|
|
477
471
|
const method = summary_method === null || summary_method === void 0 ? void 0 : summary_method.toUpperCase();
|
|
478
472
|
const column = this._get_column_by_key(column_key);
|
|
479
|
-
if (column && (
|
|
473
|
+
if (column && (isNumericColumn(column) || isDateColumn(column))) {
|
|
480
474
|
const column_name = this._summary_column_2_sql(method, column);
|
|
481
475
|
summary_column_names.push(column_name);
|
|
482
476
|
}
|
|
483
477
|
});
|
|
484
478
|
|
|
485
479
|
// groupby_column is COLLABORATOR or MULTIPLE_SELECT, replace AVG with SUM, and add 'COUNT(*)'
|
|
486
|
-
if (groupby_column.type ===
|
|
480
|
+
if (groupby_column.type === CellType.COLLABORATOR || groupby_column.type === CellType.MULTIPLE_SELECT) {
|
|
487
481
|
summary_column_names.forEach((item, index) => {
|
|
488
482
|
if (item.startsWith('AVG')) {
|
|
489
483
|
summary_column_names[index] = 'SUM' + item.slice(3);
|
|
@@ -516,26 +510,26 @@ class ChartDataSQL {
|
|
|
516
510
|
summary_type = summary_type.toUpperCase();
|
|
517
511
|
if (summary_type === 'COUNT') {
|
|
518
512
|
const summary_column_name = this._summary_column_2_sql('COUNT', groupby_column);
|
|
519
|
-
return
|
|
513
|
+
return `SELECT ${groupby_column_name}, ${summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
520
514
|
}
|
|
521
515
|
if (summary_columns) {
|
|
522
516
|
const summary_column_names_str = this._summary_columns_2_sql(summary_columns, summary_column_key, groupby_column, summary_method);
|
|
523
|
-
return
|
|
517
|
+
return `SELECT ${groupby_column_name}, ${summary_column_names_str} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
524
518
|
}
|
|
525
519
|
summary_method = summary_method.toUpperCase();
|
|
526
520
|
let new_numeric_column_keys = [summary_column_key];
|
|
527
521
|
let numeric_column_names = [];
|
|
528
522
|
new_numeric_column_keys.forEach(column_key => {
|
|
529
523
|
const column = this._get_column_by_key(column_key);
|
|
530
|
-
if (column && (
|
|
524
|
+
if (column && (isNumericColumn(column) || isDateColumn(column))) {
|
|
531
525
|
const column_name = this._summary_column_2_sql(summary_method, column);
|
|
532
526
|
numeric_column_names.append(column_name);
|
|
533
527
|
}
|
|
534
528
|
});
|
|
535
529
|
if (numeric_column_names.length > 0) {
|
|
536
|
-
return
|
|
530
|
+
return `SELECT ${groupby_column_name}, ${numeric_column_names.join(', ')} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
537
531
|
}
|
|
538
|
-
return
|
|
532
|
+
return `SELECT ${groupby_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
539
533
|
};
|
|
540
534
|
this._two_dimension_statistic_table_2_sql = () => {
|
|
541
535
|
const groupby_column_key = this.chart['groupby_column_key'] || '';
|
|
@@ -584,7 +578,7 @@ class ChartDataSQL {
|
|
|
584
578
|
summary_column_names_str = this._summary_columns_2_sql(summary_columns, summary_column_key, groupby_column, summary_method);
|
|
585
579
|
}
|
|
586
580
|
}
|
|
587
|
-
return
|
|
581
|
+
return `SELECT ${groupby_column_name}, ${column_groupby_column_name}, ${summary_column_names_str} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name}, ${column_groupby_column_name} LIMIT 0, 5000`;
|
|
588
582
|
};
|
|
589
583
|
this._pie_chart_statistic_2_sql = () => {
|
|
590
584
|
const groupby_column_key = this.chart['groupby_column_key'] || '';
|
|
@@ -620,14 +614,14 @@ class ChartDataSQL {
|
|
|
620
614
|
}
|
|
621
615
|
}
|
|
622
616
|
if (summary_column_name) {
|
|
623
|
-
return
|
|
617
|
+
return `SELECT ${groupby_column_name}, ${summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
624
618
|
}
|
|
625
|
-
return
|
|
619
|
+
return `SELECT ${groupby_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
626
620
|
};
|
|
627
621
|
this._basic_number_card_chart_statistic_2_sql = () => {
|
|
628
622
|
const summary_type = this.chart['summary_type'];
|
|
629
|
-
if (summary_type ===
|
|
630
|
-
return
|
|
623
|
+
if (summary_type === CHART_Y_GROUP_TYPE.COUNT) {
|
|
624
|
+
return `SELECT COUNT(*) FROM ${this.table_name} ${this.filter_sql} LIMIT 0, 5000`;
|
|
631
625
|
}
|
|
632
626
|
const numeric_column_key = this.chart['numeric_column_key'] || '';
|
|
633
627
|
let summary_method = this.chart['summary_method'] || '';
|
|
@@ -643,7 +637,7 @@ class ChartDataSQL {
|
|
|
643
637
|
this._update_filter_sql(true, numeric_column);
|
|
644
638
|
summary_method = summary_method.toUpperCase();
|
|
645
639
|
const summary_column_name = this._summary_column_2_sql(summary_method, numeric_column);
|
|
646
|
-
return
|
|
640
|
+
return `SELECT ${summary_column_name} FROM ${this.table_name} ${this.filter_sql} LIMIT 0, 5000`;
|
|
647
641
|
};
|
|
648
642
|
this._dashboard_chart_statistic_2_sql = () => {
|
|
649
643
|
const target_column_key = this.chart['target_value_column_key'] || '';
|
|
@@ -673,7 +667,7 @@ class ChartDataSQL {
|
|
|
673
667
|
this._update_filter_sql(true, target_column);
|
|
674
668
|
total_summary_method = total_summary_method.toUpperCase();
|
|
675
669
|
const total_summary_column_name = this._summary_column_2_sql(total_summary_method, total_column);
|
|
676
|
-
return
|
|
670
|
+
return `SELECT ${target_summary_column_name}, ${total_summary_column_name} FROM ${this.table_name} ${this.filter_sql} LIMIT 0, 5000`;
|
|
677
671
|
};
|
|
678
672
|
this._completeness_chart_statistic_2_sql = () => {
|
|
679
673
|
const groupby_column_key = this.chart['groupby_column_key'];
|
|
@@ -712,9 +706,9 @@ class ChartDataSQL {
|
|
|
712
706
|
'date_granularity': date_granularity,
|
|
713
707
|
'geolocation_granularity': geolocation_granularity
|
|
714
708
|
});
|
|
715
|
-
return
|
|
709
|
+
return `SELECT \`${groupby_column_name}\`, ${column_groupby_column_name}, SUM(\`${target_column_name}\`), SUM(\`${completed_column_name}\`) FROM ${this.table_name} ${this.filter_sql} GROUP BY \`${groupby_column_name}\`, ${column_groupby_column_name} LIMIT 0, 5000`;
|
|
716
710
|
}
|
|
717
|
-
return
|
|
711
|
+
return `SELECT \`${groupby_column_name}\`, \`${target_column_name}\`, \`${completed_column_name}\` FROM ${this.table_name} ${this.filter_sql} GROUP BY \`${groupby_column_name}\`, \`${target_column_name}\`, \`${completed_column_name}\` LIMIT 0, 5000`;
|
|
718
712
|
};
|
|
719
713
|
this._scatter_statistic_2_sql = () => {
|
|
720
714
|
const x_axis_column_key = this.chart['x_axis_column_key'];
|
|
@@ -754,9 +748,9 @@ class ChartDataSQL {
|
|
|
754
748
|
'date_granularity': date_granularity,
|
|
755
749
|
'geolocation_granularity': geolocation_granularity
|
|
756
750
|
});
|
|
757
|
-
return
|
|
751
|
+
return `SELECT \`${xAxisColumnName}\`, \`${yAxisColumnName}\`, ${column_groupby_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY \`${xAxisColumnName}\`, \`${yAxisColumnName}\`, ${column_groupby_column_name} LIMIT 0, 5000`;
|
|
758
752
|
}
|
|
759
|
-
return
|
|
753
|
+
return `SELECT \`${xAxisColumnName}\`, \`${yAxisColumnName}\` FROM ${this.table_name} ${this.filter_sql} GROUP BY \`${xAxisColumnName}\`, \`${yAxisColumnName}\` LIMIT 0, 5000`;
|
|
760
754
|
};
|
|
761
755
|
this._map_statistic_2_sql = () => {
|
|
762
756
|
const {
|
|
@@ -772,7 +766,7 @@ class ChartDataSQL {
|
|
|
772
766
|
this.error = 'Geo_column_not_found';
|
|
773
767
|
return '';
|
|
774
768
|
}
|
|
775
|
-
const geolocation_granularity =
|
|
769
|
+
const geolocation_granularity = fixGeoGranularity(map_level, map_location);
|
|
776
770
|
this._update_filter_sql(false, groupby_column);
|
|
777
771
|
|
|
778
772
|
// map do not have date column ,so date_granularity is not needed
|
|
@@ -792,9 +786,9 @@ class ChartDataSQL {
|
|
|
792
786
|
}
|
|
793
787
|
}
|
|
794
788
|
if (summary_column_name) {
|
|
795
|
-
return
|
|
789
|
+
return `SELECT ${groupby_column_name}, ${summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
796
790
|
}
|
|
797
|
-
return
|
|
791
|
+
return `SELECT ${groupby_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${groupby_column_name} LIMIT 0, 5000`;
|
|
798
792
|
};
|
|
799
793
|
this._world_map_basic_statistic_2_sql = () => {
|
|
800
794
|
const {
|
|
@@ -814,7 +808,7 @@ class ChartDataSQL {
|
|
|
814
808
|
'geolocation_granularity': ''
|
|
815
809
|
});
|
|
816
810
|
let summary_column_name = this._summary_column_2_sql('COUNT', groupby_column);
|
|
817
|
-
if (summary_type ===
|
|
811
|
+
if (summary_type === CHART_SUMMARY_TYPE.ADVANCED) {
|
|
818
812
|
const summary_column = this._get_column_by_key(summary_column_key);
|
|
819
813
|
if (!summary_column) {
|
|
820
814
|
this.error = 'Summary_column_not_found';
|
|
@@ -822,7 +816,7 @@ class ChartDataSQL {
|
|
|
822
816
|
}
|
|
823
817
|
summary_column_name = this._summary_column_2_sql(summary_method.toUpperCase(), summary_column);
|
|
824
818
|
}
|
|
825
|
-
return
|
|
819
|
+
return `SELECT ${column_name}, ${summary_column_name} FROM ${this.table_name} ${this.filter_sql} GROUP BY ${column_name} LIMIT 0, 5000`;
|
|
826
820
|
};
|
|
827
821
|
this.to_sql = () => {
|
|
828
822
|
if (this.error) {
|
|
@@ -831,14 +825,14 @@ class ChartDataSQL {
|
|
|
831
825
|
error: this.error
|
|
832
826
|
};
|
|
833
827
|
}
|
|
834
|
-
if ([
|
|
828
|
+
if ([CHART_TYPE.BAR, CHART_TYPE.LINE, CHART_TYPE.HORIZONTAL_BAR, CHART_TYPE.AREA, CHART_TYPE.FUNNEL].includes(this.chart_type)) {
|
|
835
829
|
const sql = this._basic_statistic_2_sql();
|
|
836
830
|
return {
|
|
837
831
|
sql,
|
|
838
832
|
error: this.error
|
|
839
833
|
};
|
|
840
834
|
}
|
|
841
|
-
if ([
|
|
835
|
+
if ([CHART_TYPE.BAR_GROUP, CHART_TYPE.LINE_GROUP, CHART_TYPE.AREA_GROUP, CHART_TYPE.HORIZONTAL_GROUP_BAR, CHART_TYPE.STACKED_HORIZONTAL_BAR, CHART_TYPE.BAR_STACK].includes(this.chart_type)) {
|
|
842
836
|
const column_groupby_column_key = this.chart['column_groupby_column_key'] || '';
|
|
843
837
|
const column_groupby_multiple_numeric_column = this.chart['column_groupby_multiple_numeric_column'] || false;
|
|
844
838
|
if (!(column_groupby_column_key || column_groupby_multiple_numeric_column)) {
|
|
@@ -854,63 +848,63 @@ class ChartDataSQL {
|
|
|
854
848
|
error: this.error
|
|
855
849
|
};
|
|
856
850
|
}
|
|
857
|
-
if (this.chart_type ===
|
|
851
|
+
if (this.chart_type === CHART_TYPE.COMPLETENESS || this.chart_type === CHART_TYPE.COMPLETENESS_GROUP) {
|
|
858
852
|
const sql = this._completeness_chart_statistic_2_sql();
|
|
859
853
|
return {
|
|
860
854
|
sql,
|
|
861
855
|
error: this.error
|
|
862
856
|
};
|
|
863
857
|
}
|
|
864
|
-
if (this.chart_type ===
|
|
858
|
+
if (this.chart_type === CHART_TYPE.SCATTER) {
|
|
865
859
|
const sql = this._scatter_statistic_2_sql();
|
|
866
860
|
return {
|
|
867
861
|
sql,
|
|
868
862
|
error: this.error
|
|
869
863
|
};
|
|
870
864
|
}
|
|
871
|
-
if (this.chart_type ===
|
|
865
|
+
if (this.chart_type === CHART_TYPE.BAR_CUSTOM) {
|
|
872
866
|
const sql = this._custom_statistic_2_sql();
|
|
873
867
|
return {
|
|
874
868
|
sql,
|
|
875
869
|
error: this.error
|
|
876
870
|
};
|
|
877
871
|
}
|
|
878
|
-
if (this.chart_type ===
|
|
872
|
+
if (this.chart_type === CHART_TYPE.COMPARE_BAR) {
|
|
879
873
|
const sql = this._compare_chart_statistic_2_sql();
|
|
880
874
|
return {
|
|
881
875
|
sql,
|
|
882
876
|
error: this.error
|
|
883
877
|
};
|
|
884
878
|
}
|
|
885
|
-
if (this.chart_type ===
|
|
879
|
+
if (this.chart_type === CHART_TYPE.COMBINATION) {
|
|
886
880
|
const sql = this._combination_chart_statistic_2_sql();
|
|
887
881
|
return {
|
|
888
882
|
sql,
|
|
889
883
|
error: this.error
|
|
890
884
|
};
|
|
891
885
|
}
|
|
892
|
-
if ([
|
|
886
|
+
if ([CHART_TYPE.PIE, CHART_TYPE.RING, CHART_TYPE.TREE_MAP].includes(this.chart_type)) {
|
|
893
887
|
const sql = this._pie_chart_statistic_2_sql();
|
|
894
888
|
return {
|
|
895
889
|
sql,
|
|
896
890
|
error: this.error
|
|
897
891
|
};
|
|
898
892
|
}
|
|
899
|
-
if (this.chart_type ===
|
|
893
|
+
if (this.chart_type === CHART_TYPE.BASIC_NUMBER_CARD) {
|
|
900
894
|
const sql = this._basic_number_card_chart_statistic_2_sql();
|
|
901
895
|
return {
|
|
902
896
|
sql,
|
|
903
897
|
error: this.error
|
|
904
898
|
};
|
|
905
899
|
}
|
|
906
|
-
if (this.chart_type ===
|
|
900
|
+
if (this.chart_type === CHART_TYPE.DASHBOARD) {
|
|
907
901
|
const sql = this._dashboard_chart_statistic_2_sql();
|
|
908
902
|
return {
|
|
909
903
|
sql,
|
|
910
904
|
error: this.error
|
|
911
905
|
};
|
|
912
906
|
}
|
|
913
|
-
const mapChart = [
|
|
907
|
+
const mapChart = [CHART_TYPE.MAP, CHART_TYPE.MAP_BUBBLE];
|
|
914
908
|
if (mapChart.includes(this.chart_type)) {
|
|
915
909
|
const sql = this._map_statistic_2_sql();
|
|
916
910
|
return {
|
|
@@ -918,7 +912,7 @@ class ChartDataSQL {
|
|
|
918
912
|
error: this.error
|
|
919
913
|
};
|
|
920
914
|
}
|
|
921
|
-
if (this.chart_type ===
|
|
915
|
+
if (this.chart_type === CHART_TYPE.TABLE) {
|
|
922
916
|
const column_groupby_column_key = this.chart['column_groupby_column_key'] || '';
|
|
923
917
|
const groupby_column_key = this.chart['groupby_column_key'] || '';
|
|
924
918
|
if (!groupby_column_key) {
|
|
@@ -940,28 +934,28 @@ class ChartDataSQL {
|
|
|
940
934
|
error: this.error
|
|
941
935
|
};
|
|
942
936
|
}
|
|
943
|
-
if ([
|
|
937
|
+
if ([CHART_TYPE.WORLD_MAP, CHART_TYPE.WORLD_MAP_BUBBLE].includes(this.chart_type)) {
|
|
944
938
|
const sql = this._world_map_basic_statistic_2_sql();
|
|
945
939
|
return {
|
|
946
940
|
sql,
|
|
947
941
|
error: this.error
|
|
948
942
|
};
|
|
949
943
|
}
|
|
950
|
-
if (this.chart_type ===
|
|
944
|
+
if (this.chart_type === CHART_TYPE.HEAT_MAP) {
|
|
951
945
|
const sql = this._heat_map_statistic_2_sql();
|
|
952
946
|
return {
|
|
953
947
|
sql,
|
|
954
948
|
error: this.error
|
|
955
949
|
};
|
|
956
950
|
}
|
|
957
|
-
if (this.chart_type ===
|
|
951
|
+
if (this.chart_type === CHART_TYPE.MIRROR) {
|
|
958
952
|
const sql = this._mirror_map_statistic_2_sql();
|
|
959
953
|
return {
|
|
960
954
|
sql,
|
|
961
955
|
error: this.error
|
|
962
956
|
};
|
|
963
957
|
}
|
|
964
|
-
if (this.chart_type ===
|
|
958
|
+
if (this.chart_type === CHART_TYPE.TREND) {
|
|
965
959
|
const sql = this._trend_map_statistic_2_sql();
|
|
966
960
|
return {
|
|
967
961
|
sql,
|
|
@@ -978,10 +972,10 @@ class ChartDataSQL {
|
|
|
978
972
|
const {
|
|
979
973
|
type
|
|
980
974
|
} = column || {};
|
|
981
|
-
if (type ===
|
|
982
|
-
return
|
|
975
|
+
if (type === CellType.SINGLE_SELECT || type === CellType.MULTIPLE_SELECT) {
|
|
976
|
+
return `'${name}'`;
|
|
983
977
|
}
|
|
984
|
-
if (type ===
|
|
978
|
+
if (type === CellType.NUMBER) {
|
|
985
979
|
const newName = Number(name);
|
|
986
980
|
if (!Number.isNaN(newName)) {
|
|
987
981
|
return newName;
|
|
@@ -992,7 +986,7 @@ class ChartDataSQL {
|
|
|
992
986
|
if (typeof newName === 'number') {
|
|
993
987
|
return newName;
|
|
994
988
|
}
|
|
995
|
-
return
|
|
989
|
+
return `'${newName}'`;
|
|
996
990
|
};
|
|
997
991
|
this.get_statistic_record_sql = (statItem, statisticRecord, _ref2) => {
|
|
998
992
|
let {
|
|
@@ -1009,7 +1003,7 @@ class ChartDataSQL {
|
|
|
1009
1003
|
groupName,
|
|
1010
1004
|
selectedColumn,
|
|
1011
1005
|
columnSelectedColumn
|
|
1012
|
-
} =
|
|
1006
|
+
} = getDatabaseGroupName(statItem.config, this.table);
|
|
1013
1007
|
let isGroup = column_groupby_column_key && !column_groupby_multiple_numeric_column;
|
|
1014
1008
|
let {
|
|
1015
1009
|
name,
|
|
@@ -1019,10 +1013,10 @@ class ChartDataSQL {
|
|
|
1019
1013
|
} = statisticRecord;
|
|
1020
1014
|
|
|
1021
1015
|
// No grouping required type
|
|
1022
|
-
if ([
|
|
1016
|
+
if ([CHART_TYPE.COMPLETENESS_GROUP].includes(type)) {
|
|
1023
1017
|
isGroup = false;
|
|
1024
1018
|
}
|
|
1025
|
-
if ([
|
|
1019
|
+
if ([CHART_TYPE.PIE, CHART_TYPE.RING, CHART_TYPE.TREE_MAP].includes(type)) {
|
|
1026
1020
|
name = name.trim();
|
|
1027
1021
|
}
|
|
1028
1022
|
let sqlName = this.get_sql_group_name(name, original_name, selectedColumn);
|
|
@@ -1031,37 +1025,37 @@ class ChartDataSQL {
|
|
|
1031
1025
|
sqlGroupName = this.get_sql_group_name(group_name, group_original_name, columnSelectedColumn);
|
|
1032
1026
|
}
|
|
1033
1027
|
let sqlString;
|
|
1034
|
-
if (type ===
|
|
1035
|
-
let pivotGroupName =
|
|
1028
|
+
if (type === CHART_TYPE.TABLE) {
|
|
1029
|
+
let pivotGroupName = `${isGroup ? `${columnGroupName}=${sqlGroupName}` : ''}`;
|
|
1036
1030
|
if (isColumn) {
|
|
1037
1031
|
if (this.filter_sql && pivotGroupName) {
|
|
1038
|
-
sqlString =
|
|
1032
|
+
sqlString = `select * from ${this.table_name} ${this.filter_sql} and ${pivotGroupName} limit 5000`;
|
|
1039
1033
|
} else if (groupName && !this.filter_sql) {
|
|
1040
|
-
sqlString =
|
|
1034
|
+
sqlString = `select * from ${this.table_name} where ${pivotGroupName} limit 5000`;
|
|
1041
1035
|
} else {
|
|
1042
|
-
sqlString =
|
|
1036
|
+
sqlString = `select * from ${this.table_name} ${this.filter_sql} limit 5000`;
|
|
1043
1037
|
}
|
|
1044
1038
|
return sqlString;
|
|
1045
1039
|
}
|
|
1046
1040
|
if (isRow) {
|
|
1047
1041
|
if (groupName && this.filter_sql) {
|
|
1048
|
-
sqlString =
|
|
1042
|
+
sqlString = `select * from ${this.table_name} ${this.filter_sql} and ${groupName}=${sqlName} limit 5000`;
|
|
1049
1043
|
} else if (groupName && !this.filter_sql) {
|
|
1050
|
-
sqlString =
|
|
1044
|
+
sqlString = `select * from ${this.table_name} where ${groupName}=${sqlName} limit 5000`;
|
|
1051
1045
|
} else {
|
|
1052
|
-
sqlString =
|
|
1046
|
+
sqlString = `select * from ${this.table_name} ${this.filter_sql} limit 5000`;
|
|
1053
1047
|
}
|
|
1054
1048
|
return sqlString;
|
|
1055
1049
|
}
|
|
1056
|
-
sqlString =
|
|
1050
|
+
sqlString = `select * from ${this.table_name} limit 5000`;
|
|
1057
1051
|
return sqlString;
|
|
1058
1052
|
}
|
|
1059
1053
|
if (groupName && this.filter_sql) {
|
|
1060
|
-
sqlString =
|
|
1054
|
+
sqlString = `select * from ${this.table_name} ${this.filter_sql} and ${groupName}=${sqlName} ${isGroup ? `and ${columnGroupName}=${sqlGroupName}` : ''} limit 5000`;
|
|
1061
1055
|
} else if (groupName && !this.filter_sql) {
|
|
1062
|
-
sqlString =
|
|
1056
|
+
sqlString = `select * from ${this.table_name} where ${groupName}=${sqlName} ${isGroup ? `and ${columnGroupName}=${sqlGroupName}` : ''} limit 5000`;
|
|
1063
1057
|
} else {
|
|
1064
|
-
sqlString =
|
|
1058
|
+
sqlString = `select * from ${this.table_name} ${this.filter_sql} limit 5000`;
|
|
1065
1059
|
}
|
|
1066
1060
|
return sqlString;
|
|
1067
1061
|
};
|
|
@@ -1071,7 +1065,7 @@ class ChartDataSQL {
|
|
|
1071
1065
|
this.chart = (chart === null || chart === void 0 ? void 0 : chart.config) || {};
|
|
1072
1066
|
this.username = username;
|
|
1073
1067
|
const table_name = (table === null || table === void 0 ? void 0 : table.name) || '';
|
|
1074
|
-
this.table_name =
|
|
1068
|
+
this.table_name = `\`${table_name}\``;
|
|
1075
1069
|
this.userId = userId;
|
|
1076
1070
|
this.userDepartmentIdsMap = userDepartmentIdsMap;
|
|
1077
1071
|
this.chart_type = (chart === null || chart === void 0 ? void 0 : (_chart$config = chart.config) === null || _chart$config === void 0 ? void 0 : _chart$config.type) || '';
|
|
@@ -1081,7 +1075,7 @@ class ChartDataSQL {
|
|
|
1081
1075
|
Array.isArray(table.columns) && table.columns.forEach(column => {
|
|
1082
1076
|
this.column_key_map[column.key] = column;
|
|
1083
1077
|
});
|
|
1084
|
-
this.filter_sql =
|
|
1078
|
+
this.filter_sql = filter2SqlCondition(table, view, username, userId, userDepartmentIdsMap);
|
|
1085
1079
|
}
|
|
1086
1080
|
}
|
|
1087
|
-
|
|
1081
|
+
export default ChartDataSQL;
|