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,26 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var _slugid = _interopRequireDefault(require("slugid"));
|
|
14
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
15
|
-
var _intl = _interopRequireDefault(require("../../intl"));
|
|
16
|
-
var _chartUtils = require("../../utils/chart-utils");
|
|
17
|
-
var _constants = require("../../constants");
|
|
18
|
-
var _tooltip = _interopRequireDefault(require("../../components/tooltip"));
|
|
19
|
-
var _chartComponent = _interopRequireDefault(require("./chart-component"));
|
|
20
|
-
class BarCustom extends _chartComponent.default {
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { debounce } from 'lodash-es';
|
|
4
|
+
import * as d3 from 'd3';
|
|
5
|
+
import slugid from 'slugid';
|
|
6
|
+
import classNames from 'classnames';
|
|
7
|
+
import intl from '../../intl';
|
|
8
|
+
import { BaseUtils } from '../../utils/chart-utils';
|
|
9
|
+
import { EMPTY_NAME, CHART_THEME_COLOR } from '../../constants';
|
|
10
|
+
import ToolTip from '../../components/tooltip';
|
|
11
|
+
import ChartComponent from './chart-component';
|
|
12
|
+
class BarCustom extends ChartComponent {
|
|
21
13
|
constructor(props) {
|
|
22
14
|
super(props);
|
|
23
|
-
this.handleResize =
|
|
15
|
+
this.handleResize = debounce(() => {
|
|
24
16
|
this.destroyChart();
|
|
25
17
|
this.createChart();
|
|
26
18
|
this.drawChart();
|
|
@@ -45,7 +37,7 @@ class BarCustom extends _chartComponent.default {
|
|
|
45
37
|
let {
|
|
46
38
|
result: data
|
|
47
39
|
} = this.props;
|
|
48
|
-
data =
|
|
40
|
+
data = BaseUtils.formatEmptyName(data, '', intl.get('Empty'));
|
|
49
41
|
if (!Array.isArray(data)) return;
|
|
50
42
|
this.draw(data);
|
|
51
43
|
this.renderAxisLabel(this.props.chart, this.props.tables, this.container);
|
|
@@ -106,7 +98,7 @@ class BarCustom extends _chartComponent.default {
|
|
|
106
98
|
key: itemKey,
|
|
107
99
|
value,
|
|
108
100
|
series,
|
|
109
|
-
slugid:
|
|
101
|
+
slugid: slugid.nice()
|
|
110
102
|
});
|
|
111
103
|
});
|
|
112
104
|
stacksData.push({
|
|
@@ -133,7 +125,7 @@ class BarCustom extends _chartComponent.default {
|
|
|
133
125
|
globalTheme,
|
|
134
126
|
chartColorTheme
|
|
135
127
|
} = this.props;
|
|
136
|
-
const theme =
|
|
128
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
137
129
|
const {
|
|
138
130
|
display_each_block_data
|
|
139
131
|
} = chart.config;
|
|
@@ -148,18 +140,18 @@ class BarCustom extends _chartComponent.default {
|
|
|
148
140
|
insertPadding
|
|
149
141
|
} = this.chartBoundingClientRect;
|
|
150
142
|
const organizedData = this.organizeData(data);
|
|
151
|
-
const color = d3.scaleOrdinal().domain(d3.group(data, d => d.group_name).keys()).range(
|
|
143
|
+
const color = d3.scaleOrdinal().domain(d3.group(data, d => d.group_name).keys()).range(BaseUtils.getCurrentTheme(chartColorTheme).colors).unknown('#ccc');
|
|
152
144
|
const allSeries = this.getAllSeries(organizedData);
|
|
153
145
|
const niceEnd = d3.nice(0, d3.max(allSeries, d => d[1]), 5)[1];
|
|
154
146
|
const y = d3.scaleLinear().domain([0, niceEnd]).range([chartHeight - insertPadding, insertPadding]);
|
|
155
147
|
|
|
156
148
|
// Y axis
|
|
157
|
-
this.chart.append('g').attr('class', 'y-axis-wrapper').attr('transform',
|
|
149
|
+
this.chart.append('g').attr('class', 'y-axis-wrapper').attr('transform', `translate(${insertPadding},0)`).call(d3.axisLeft(y).tickSizeInner(0).ticks(5).tickFormat(d => d)).call(g => this.drawYaxis(g, theme));
|
|
158
150
|
const fx = d3.scaleBand().domain(new Set(organizedData.map(d => d.name))).range([insertPadding + this.horizontalOverflowOffset, chartWidth - insertPadding]).paddingInner(0.5).paddingOuter(0.1);
|
|
159
151
|
const x = d3.scaleBand().domain(new Set(data.map(d => d.y_axis_type))).range([0, fx.bandwidth()]).paddingInner(0).paddingOuter(0);
|
|
160
152
|
|
|
161
153
|
// X axis
|
|
162
|
-
this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform',
|
|
154
|
+
this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform', `translate(0,${chartHeight - insertPadding})`).call(d3.axisBottom(fx).tickSizeOuter(0).tickSizeInner(5)).call(g => {
|
|
163
155
|
g.selectAll('.domain').attr('stroke', theme.XAxisColor);
|
|
164
156
|
g.selectAll('.tick line').attr('stroke', theme.XAxisColor);
|
|
165
157
|
g.selectAll('text').attr('font-size', theme.fontSize);
|
|
@@ -172,7 +164,7 @@ class BarCustom extends _chartComponent.default {
|
|
|
172
164
|
const {
|
|
173
165
|
name
|
|
174
166
|
} = d;
|
|
175
|
-
return
|
|
167
|
+
return `translate(${fx(name)},0)`;
|
|
176
168
|
}).attr('data-transform', d => {
|
|
177
169
|
const {
|
|
178
170
|
name
|
|
@@ -246,7 +238,7 @@ class BarCustom extends _chartComponent.default {
|
|
|
246
238
|
const {
|
|
247
239
|
label_font_size
|
|
248
240
|
} = chart.config;
|
|
249
|
-
const theme =
|
|
241
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
250
242
|
Array.from(g._parents).forEach(group => {
|
|
251
243
|
Array.from(group.children).forEach(rect => {
|
|
252
244
|
// The height is 0, and the label is not displayed.
|
|
@@ -282,7 +274,7 @@ class BarCustom extends _chartComponent.default {
|
|
|
282
274
|
}).on('mouseleave', (event, data) => {
|
|
283
275
|
this.hiddenTooltip();
|
|
284
276
|
this.handleStacksAcitveAndInActiveState('active', event);
|
|
285
|
-
}).append('xhtml:div').attr('class', 'stack').attr('data-rectId', rect.getAttribute('data-rectId')).attr('style',
|
|
277
|
+
}).append('xhtml:div').attr('class', 'stack').attr('data-rectId', rect.getAttribute('data-rectId')).attr('style', `width: 100%; height: 100%; background-color: ${rect.getAttribute('fill')}; border-radius: ${safeBorderRadius}px ${safeBorderRadius}px 0px 0px`);
|
|
286
278
|
|
|
287
279
|
// Remove old rect
|
|
288
280
|
d3.select(rect).remove();
|
|
@@ -333,10 +325,10 @@ class BarCustom extends _chartComponent.default {
|
|
|
333
325
|
const name = event.currentTarget.getAttribute('data-groupName');
|
|
334
326
|
const value = event.currentTarget.getAttribute('data-value');
|
|
335
327
|
const newTooltipData = {
|
|
336
|
-
title: !title && typeof title !== 'number' ?
|
|
328
|
+
title: !title && typeof title !== 'number' ? intl.get(EMPTY_NAME) : title,
|
|
337
329
|
items: [{
|
|
338
330
|
color: colorScale(name),
|
|
339
|
-
name: !name && typeof name !== 'number' ?
|
|
331
|
+
name: !name && typeof name !== 'number' ? intl.get(EMPTY_NAME) : name,
|
|
340
332
|
value
|
|
341
333
|
}]
|
|
342
334
|
};
|
|
@@ -386,7 +378,7 @@ class BarCustom extends _chartComponent.default {
|
|
|
386
378
|
}
|
|
387
379
|
componentDidUpdate(prevProps) {
|
|
388
380
|
super.componentDidUpdate(prevProps);
|
|
389
|
-
if (
|
|
381
|
+
if (BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
|
|
390
382
|
this.destroyChart();
|
|
391
383
|
this.createChart();
|
|
392
384
|
this.drawChart();
|
|
@@ -404,13 +396,13 @@ class BarCustom extends _chartComponent.default {
|
|
|
404
396
|
tooltipData,
|
|
405
397
|
toolTipPosition
|
|
406
398
|
} = this.state;
|
|
407
|
-
return /*#__PURE__*/
|
|
399
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
408
400
|
ref: ref => this.container = ref,
|
|
409
|
-
className: (
|
|
401
|
+
className: classNames('sea-chart-container', {
|
|
410
402
|
'show-x-axis-label': this.isShowXAxisLabel(chart),
|
|
411
403
|
'show-y-axis-label': this.isShowYAxisLabel(chart)
|
|
412
404
|
})
|
|
413
|
-
}, /*#__PURE__*/
|
|
405
|
+
}, /*#__PURE__*/React.createElement(ToolTip, {
|
|
414
406
|
tooltipData: tooltipData,
|
|
415
407
|
toolTipPosition: toolTipPosition,
|
|
416
408
|
chart: this.chart
|
|
@@ -418,15 +410,15 @@ class BarCustom extends _chartComponent.default {
|
|
|
418
410
|
}
|
|
419
411
|
}
|
|
420
412
|
BarCustom.propTypes = {
|
|
421
|
-
canvasStyle:
|
|
422
|
-
chart:
|
|
423
|
-
groupbyColumn:
|
|
424
|
-
columnGroupbyColumn:
|
|
425
|
-
summaryColumn:
|
|
426
|
-
result:
|
|
427
|
-
tables:
|
|
428
|
-
globalTheme:
|
|
429
|
-
chartColorTheme:
|
|
430
|
-
toggleRecords:
|
|
413
|
+
canvasStyle: PropTypes.object,
|
|
414
|
+
chart: PropTypes.object,
|
|
415
|
+
groupbyColumn: PropTypes.object,
|
|
416
|
+
columnGroupbyColumn: PropTypes.object,
|
|
417
|
+
summaryColumn: PropTypes.object,
|
|
418
|
+
result: PropTypes.array,
|
|
419
|
+
tables: PropTypes.array,
|
|
420
|
+
globalTheme: PropTypes.string,
|
|
421
|
+
chartColorTheme: PropTypes.string,
|
|
422
|
+
toggleRecords: PropTypes.func
|
|
431
423
|
};
|
|
432
|
-
|
|
424
|
+
export default BarCustom;
|
|
@@ -1,25 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
16
|
-
var _intl = _interopRequireDefault(require("../../intl"));
|
|
17
|
-
var _constants = require("../../constants");
|
|
18
|
-
var _utils = require("../../utils");
|
|
19
|
-
var _colorRules = require("../../constants/color-rules");
|
|
20
|
-
var _tooltip = _interopRequireDefault(require("../../components/tooltip"));
|
|
21
|
-
var _chartComponent = _interopRequireDefault(require("./chart-component"));
|
|
22
|
-
class BarGroup extends _chartComponent.default {
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { CellType } from 'dtable-utils';
|
|
4
|
+
import { debounce, cloneDeep } from 'lodash-es';
|
|
5
|
+
import * as d3 from 'd3';
|
|
6
|
+
import classNames from 'classnames';
|
|
7
|
+
import dayjs from 'dayjs';
|
|
8
|
+
import intl from '../../intl';
|
|
9
|
+
import { EMPTY_NAME, CHART_THEME_COLOR, CHART_STYLE_COLORS } from '../../constants';
|
|
10
|
+
import { BaseUtils, isFunction } from '../../utils';
|
|
11
|
+
import { SUPPORT_SINGLE_SELECT_THEMES_OPTIONS } from '../../constants/color-rules';
|
|
12
|
+
import ToolTip from '../../components/tooltip';
|
|
13
|
+
import ChartComponent from './chart-component';
|
|
14
|
+
class BarGroup extends ChartComponent {
|
|
23
15
|
constructor(props) {
|
|
24
16
|
super(props);
|
|
25
17
|
this.handleResize = () => {
|
|
@@ -56,11 +48,11 @@ class BarGroup extends _chartComponent.default {
|
|
|
56
48
|
const {
|
|
57
49
|
column_groupby_column_key
|
|
58
50
|
} = chart.config || {};
|
|
59
|
-
data =
|
|
51
|
+
data = BaseUtils.formatEmptyName(data, column_groupby_column_key, intl.get(EMPTY_NAME));
|
|
60
52
|
if (!Array.isArray(data)) return;
|
|
61
53
|
this.draw(data);
|
|
62
54
|
this.renderAxisLabel(this.props.chart, this.props.tables, this.container);
|
|
63
|
-
|
|
55
|
+
isFunction(customRender) && customRender(this.chart);
|
|
64
56
|
};
|
|
65
57
|
this.draw = data => {
|
|
66
58
|
const {
|
|
@@ -93,20 +85,20 @@ class BarGroup extends _chartComponent.default {
|
|
|
93
85
|
y_axis_min,
|
|
94
86
|
y_axis_auto_range
|
|
95
87
|
} = chart.config;
|
|
96
|
-
const theme =
|
|
88
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
97
89
|
const column_groupby_column = this.getColumn(tables, table_id, column_groupby_column_key);
|
|
98
|
-
const useSingleSelectColumnColor = (column_groupby_column === null || column_groupby_column === void 0 ? void 0 : column_groupby_column.type) ===
|
|
90
|
+
const useSingleSelectColumnColor = (column_groupby_column === null || column_groupby_column === void 0 ? void 0 : column_groupby_column.type) === CellType.SINGLE_SELECT && color_theme === SUPPORT_SINGLE_SELECT_THEMES_OPTIONS.SINGLE_SELECT_COLUMN_COLORS;
|
|
99
91
|
useSingleSelectColumnColor ? this.setSingleSelectColorMap(data) : this.setColorMap(data, chartColorTheme, 'group_name', columnGroupbyColumn, chart); // use single select column color
|
|
100
92
|
|
|
101
93
|
const y = d3.scaleLinear().domain(y_axis_auto_range ? [0, d3.max(data, d => d.value)] : [y_axis_min, y_axis_max]).range([chartHeight - insertPadding, insertPadding + marginTop]);
|
|
102
94
|
|
|
103
95
|
// Y axis
|
|
104
|
-
this.chart.append('g').attr('class', 'y-axis-wrapper').attr('transform',
|
|
96
|
+
this.chart.append('g').attr('class', 'y-axis-wrapper').attr('transform', `translate(${insertPadding},0)`).call(d3.axisLeft(y).tickSizeInner(0).ticks(5).tickFormat(d => BaseUtils.getSummaryValueDisplayString(summaryColumn, d, y_axis_summary_method))).call(g => this.drawYaxis(g, theme));
|
|
105
97
|
const fx = d3.scaleBand().domain(new Set(data.map(d => d.name))).range([insertPadding + this.horizontalOverflowOffset, chartWidth - insertPadding]).paddingInner(0.25).paddingOuter(0.1);
|
|
106
|
-
const sortedData =
|
|
98
|
+
const sortedData = BaseUtils.sortDataByGroupName(cloneDeep(data), 'group_name', columnGroupbyColumn, chart);
|
|
107
99
|
|
|
108
100
|
// X axis
|
|
109
|
-
this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform',
|
|
101
|
+
this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform', `translate(0,${chartHeight - insertPadding})`).call(d3.axisBottom(fx).tickSizeOuter(0).tickSizeInner(5)).call(g => {
|
|
110
102
|
g.selectAll('.domain').attr('stroke', theme.XAxisColor);
|
|
111
103
|
g.selectAll('.tick line').attr('stroke', theme.XAxisColor);
|
|
112
104
|
g.selectAll('text').attr('font-size', theme.fontSize);
|
|
@@ -119,13 +111,13 @@ class BarGroup extends _chartComponent.default {
|
|
|
119
111
|
const groupedData = d3.group(sortedData, d => d.name);
|
|
120
112
|
const group = contentWrapper.selectAll().data(groupedData).join('g').attr('transform', _ref => {
|
|
121
113
|
let [name] = _ref;
|
|
122
|
-
return
|
|
114
|
+
return `translate(${fx(name)},0)`;
|
|
123
115
|
});
|
|
124
116
|
group.each((_ref2, groupIndex, groupNodes) => {
|
|
125
117
|
let [, dum] = _ref2;
|
|
126
118
|
const groupNode = groupNodes[groupIndex];
|
|
127
119
|
const localX = d3.scaleBand().domain(dum.map(d => d.group_name)).range([0, fx.bandwidth()]).paddingInner(0).paddingOuter(0);
|
|
128
|
-
const rectSelection = d3.select(groupNode).selectAll('rect').data(dum).join('rect').attr('opacity', 1).attr('x', d => localX(d.group_name)).attr('y', d => y(d.value)).attr('width', localX.bandwidth()).attr('height', d => y(0) - y(d.value)).attr('fill', d => this.colorMap[d.group_name] ||
|
|
120
|
+
const rectSelection = d3.select(groupNode).selectAll('rect').data(dum).join('rect').attr('opacity', 1).attr('x', d => localX(d.group_name)).attr('y', d => y(d.value)).attr('width', localX.bandwidth()).attr('height', d => y(0) - y(d.value)).attr('fill', d => this.colorMap[d.group_name] || CHART_STYLE_COLORS[0]).attr('data-value', d => d.value).attr('data-groupName', d => d.name).attr('data-slugid', d => d.slugId);
|
|
129
121
|
const {
|
|
130
122
|
borderRadius
|
|
131
123
|
} = this.chartBoundingClientRect;
|
|
@@ -164,7 +156,7 @@ class BarGroup extends _chartComponent.default {
|
|
|
164
156
|
y: Number(rect.getAttribute('y')),
|
|
165
157
|
theme,
|
|
166
158
|
label_font_size,
|
|
167
|
-
text:
|
|
159
|
+
text: BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(rect.dataset.value), y_axis_summary_method)
|
|
168
160
|
});
|
|
169
161
|
}
|
|
170
162
|
});
|
|
@@ -201,7 +193,7 @@ class BarGroup extends _chartComponent.default {
|
|
|
201
193
|
const {
|
|
202
194
|
y_axis_summary_method
|
|
203
195
|
} = chart.config;
|
|
204
|
-
const isGroupByDate = [
|
|
196
|
+
const isGroupByDate = [CellType.DATE, CellType.CTIME, CellType.MTIME].includes((_this$props$columnGro = this.props.columnGroupbyColumn) === null || _this$props$columnGro === void 0 ? void 0 : _this$props$columnGro.type);
|
|
205
197
|
const {
|
|
206
198
|
offsetX,
|
|
207
199
|
offsetY
|
|
@@ -209,14 +201,14 @@ class BarGroup extends _chartComponent.default {
|
|
|
209
201
|
const curGroup = event.target.parentNode;
|
|
210
202
|
let [curGroupName, data] = curGroup.__data__;
|
|
211
203
|
const newTooltipData = {
|
|
212
|
-
title: !curGroupName && typeof curGroupName !== 'number' ?
|
|
204
|
+
title: !curGroupName && typeof curGroupName !== 'number' ? intl.get(EMPTY_NAME) : curGroupName,
|
|
213
205
|
items: data.map(item => {
|
|
214
206
|
const rawGroupName = item.group_name;
|
|
215
|
-
const groupName = rawGroupName === null || rawGroupName === undefined || rawGroupName === '' ?
|
|
207
|
+
const groupName = rawGroupName === null || rawGroupName === undefined || rawGroupName === '' ? intl.get(EMPTY_NAME) : isGroupByDate ? dayjs(rawGroupName).format('YYYY-MM-DD') : rawGroupName;
|
|
216
208
|
return {
|
|
217
209
|
color: this.colorMap[groupName],
|
|
218
210
|
name: groupName,
|
|
219
|
-
value:
|
|
211
|
+
value: BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(item.value), y_axis_summary_method)
|
|
220
212
|
};
|
|
221
213
|
})
|
|
222
214
|
};
|
|
@@ -262,12 +254,12 @@ class BarGroup extends _chartComponent.default {
|
|
|
262
254
|
componentDidMount() {
|
|
263
255
|
this.createChart();
|
|
264
256
|
this.drawChart();
|
|
265
|
-
this.debouncedHandleResize =
|
|
257
|
+
this.debouncedHandleResize = debounce(this.handleResize, 300);
|
|
266
258
|
window.addEventListener('resize', this.debouncedHandleResize);
|
|
267
259
|
}
|
|
268
260
|
componentDidUpdate(prevProps) {
|
|
269
261
|
super.componentDidUpdate(prevProps);
|
|
270
|
-
if (
|
|
262
|
+
if (BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
|
|
271
263
|
this.destroyChart();
|
|
272
264
|
this.createChart();
|
|
273
265
|
this.drawChart();
|
|
@@ -285,13 +277,13 @@ class BarGroup extends _chartComponent.default {
|
|
|
285
277
|
tooltipData,
|
|
286
278
|
toolTipPosition
|
|
287
279
|
} = this.state;
|
|
288
|
-
return /*#__PURE__*/
|
|
280
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
289
281
|
ref: ref => this.container = ref,
|
|
290
|
-
className: (
|
|
282
|
+
className: classNames('sea-chart-container', {
|
|
291
283
|
'show-x-axis-label': this.isShowXAxisLabel(chart),
|
|
292
284
|
'show-y-axis-label': this.isShowYAxisLabel(chart)
|
|
293
285
|
})
|
|
294
|
-
}, /*#__PURE__*/
|
|
286
|
+
}, /*#__PURE__*/React.createElement(ToolTip, {
|
|
295
287
|
tooltipData: tooltipData,
|
|
296
288
|
toolTipPosition: toolTipPosition,
|
|
297
289
|
chart: this.chart
|
|
@@ -299,16 +291,16 @@ class BarGroup extends _chartComponent.default {
|
|
|
299
291
|
}
|
|
300
292
|
}
|
|
301
293
|
BarGroup.propTypes = {
|
|
302
|
-
canvasStyle:
|
|
303
|
-
chart:
|
|
304
|
-
groupbyColumn:
|
|
305
|
-
columnGroupbyColumn:
|
|
306
|
-
summaryColumn:
|
|
307
|
-
result:
|
|
308
|
-
tables:
|
|
309
|
-
globalTheme:
|
|
310
|
-
chartColorTheme:
|
|
311
|
-
toggleRecords:
|
|
312
|
-
customRender:
|
|
294
|
+
canvasStyle: PropTypes.object,
|
|
295
|
+
chart: PropTypes.object,
|
|
296
|
+
groupbyColumn: PropTypes.object,
|
|
297
|
+
columnGroupbyColumn: PropTypes.object,
|
|
298
|
+
summaryColumn: PropTypes.object,
|
|
299
|
+
result: PropTypes.array,
|
|
300
|
+
tables: PropTypes.array,
|
|
301
|
+
globalTheme: PropTypes.string,
|
|
302
|
+
chartColorTheme: PropTypes.string,
|
|
303
|
+
toggleRecords: PropTypes.func,
|
|
304
|
+
customRender: PropTypes.func
|
|
313
305
|
};
|
|
314
|
-
|
|
306
|
+
export default BarGroup;
|
|
@@ -1,25 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var _intl = _interopRequireDefault(require("../../intl"));
|
|
16
|
-
var _columnUtils = require("../../utils/column-utils");
|
|
17
|
-
var _constants = require("../../constants");
|
|
18
|
-
var _utils = require("../../utils");
|
|
19
|
-
var _colorRules = require("../../constants/color-rules");
|
|
20
|
-
var _tooltip = _interopRequireDefault(require("../../components/tooltip"));
|
|
21
|
-
var _chartComponent = _interopRequireDefault(require("./chart-component"));
|
|
22
|
-
class BarStack extends _chartComponent.default {
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { CellType } from 'dtable-utils';
|
|
4
|
+
import { debounce, isNaN, cloneDeep } from 'lodash-es';
|
|
5
|
+
import * as d3 from 'd3';
|
|
6
|
+
import classNames from 'classnames';
|
|
7
|
+
import intl from '../../intl';
|
|
8
|
+
import { sortDataByGroupSum } from '../../utils/column-utils';
|
|
9
|
+
import { EMPTY_NAME, CHART_THEME_COLOR, CHART_STYLE_COLORS } from '../../constants';
|
|
10
|
+
import { BaseUtils, isFunction } from '../../utils';
|
|
11
|
+
import { SUPPORT_SINGLE_SELECT_THEMES_OPTIONS } from '../../constants/color-rules';
|
|
12
|
+
import ToolTip from '../../components/tooltip';
|
|
13
|
+
import ChartComponent from './chart-component';
|
|
14
|
+
class BarStack extends ChartComponent {
|
|
23
15
|
constructor(props) {
|
|
24
16
|
super(props);
|
|
25
17
|
this.handleResize = () => {
|
|
@@ -56,12 +48,12 @@ class BarStack extends _chartComponent.default {
|
|
|
56
48
|
let {
|
|
57
49
|
result: data
|
|
58
50
|
} = this.props;
|
|
59
|
-
data =
|
|
51
|
+
data = BaseUtils.formatEmptyName(data, chart.config.column_groupby_column_key, intl.get('Empty'));
|
|
60
52
|
if (!Array.isArray(data)) return;
|
|
61
|
-
sort_type && (data =
|
|
53
|
+
sort_type && (data = sortDataByGroupSum(data, sort_type));
|
|
62
54
|
this.draw(data);
|
|
63
55
|
this.renderAxisLabel(this.props.chart, this.props.tables, this.container);
|
|
64
|
-
|
|
56
|
+
isFunction(customRender) && customRender(this.chart);
|
|
65
57
|
};
|
|
66
58
|
this.draw = data => {
|
|
67
59
|
const {
|
|
@@ -88,9 +80,9 @@ class BarStack extends _chartComponent.default {
|
|
|
88
80
|
y_axis_min,
|
|
89
81
|
y_axis_auto_range
|
|
90
82
|
} = chart.config;
|
|
91
|
-
const theme =
|
|
83
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
92
84
|
const column_groupby_column = this.getColumn(tables, table_id, column_groupby_column_key);
|
|
93
|
-
const useSingleSelectColumnColor = (column_groupby_column === null || column_groupby_column === void 0 ? void 0 : column_groupby_column.type) ===
|
|
85
|
+
const useSingleSelectColumnColor = (column_groupby_column === null || column_groupby_column === void 0 ? void 0 : column_groupby_column.type) === CellType.SINGLE_SELECT && color_theme === SUPPORT_SINGLE_SELECT_THEMES_OPTIONS.SINGLE_SELECT_COLUMN_COLORS;
|
|
94
86
|
// use single select column color
|
|
95
87
|
useSingleSelectColumnColor ? this.setSingleSelectColorMap(data) : this.setColorMap(data, chartColorTheme, 'group_name', columnGroupbyColumn, chart);
|
|
96
88
|
const {
|
|
@@ -99,7 +91,7 @@ class BarStack extends _chartComponent.default {
|
|
|
99
91
|
insertPadding,
|
|
100
92
|
marginTop
|
|
101
93
|
} = this.chartBoundingClientRect;
|
|
102
|
-
const sortedData =
|
|
94
|
+
const sortedData = BaseUtils.sortDataByGroupName(cloneDeep(data), 'group_name', columnGroupbyColumn, chart).reverse();
|
|
103
95
|
const series = d3.stack().keys(d3.union(sortedData.map(d => d.group_name))).value((_ref, key) => {
|
|
104
96
|
var _group$get;
|
|
105
97
|
let [_, group] = _ref;
|
|
@@ -109,11 +101,11 @@ class BarStack extends _chartComponent.default {
|
|
|
109
101
|
const y = d3.scaleLinear().domain(y_axis_auto_range ? [0, niceEnd] : [y_axis_min, y_axis_max]).range([chartHeight - insertPadding, insertPadding + marginTop]);
|
|
110
102
|
|
|
111
103
|
// Y axis
|
|
112
|
-
this.chart.append('g').attr('class', 'y-axis-wrapper').attr('transform',
|
|
104
|
+
this.chart.append('g').attr('class', 'y-axis-wrapper').attr('transform', `translate(${insertPadding},0)`).call(d3.axisLeft(y).tickSizeInner(0).ticks(5).tickFormat(d => BaseUtils.getSummaryValueDisplayString(summaryColumn, d, y_axis_summary_method))).call(g => this.drawYaxis(g, theme));
|
|
113
105
|
const x = d3.scaleBand().domain(d3.group(data, d => d.name).keys()).range([insertPadding + this.horizontalOverflowOffset, chartWidth - insertPadding]).paddingInner(0.5).paddingOuter(0.1);
|
|
114
106
|
|
|
115
107
|
// X axis
|
|
116
|
-
this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform',
|
|
108
|
+
this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform', `translate(0,${chartHeight - insertPadding})`).call(d3.axisBottom(x).tickSizeOuter(0).tickSizeInner(5)).call(g => {
|
|
117
109
|
g.selectAll('.domain').attr('stroke', theme.XAxisColor);
|
|
118
110
|
g.selectAll('.tick line').attr('stroke', theme.XAxisColor);
|
|
119
111
|
g.selectAll('text').attr('font-size', theme.fontSize);
|
|
@@ -131,8 +123,8 @@ class BarStack extends _chartComponent.default {
|
|
|
131
123
|
return data;
|
|
132
124
|
}).join('rect').attr('opacity', 1).attr('x', d => x(d.data[0])).attr('y', d => y(d[1])).attr('height', d => {
|
|
133
125
|
const height = y(d[0]) - y(d[1]);
|
|
134
|
-
return
|
|
135
|
-
}).attr('width', x.bandwidth()).attr('fill', d => this.colorMap[d.key] ||
|
|
126
|
+
return isNaN(height) ? 0 : height;
|
|
127
|
+
}).attr('width', x.bandwidth()).attr('fill', d => this.colorMap[d.key] || CHART_STYLE_COLORS[0]).attr('data-value', d => {
|
|
136
128
|
const {
|
|
137
129
|
data,
|
|
138
130
|
key
|
|
@@ -217,11 +209,11 @@ class BarStack extends _chartComponent.default {
|
|
|
217
209
|
const curGroup = curRect.parentNode;
|
|
218
210
|
const curGroupName = event.currentTarget.getAttribute('data-groupName');
|
|
219
211
|
const newTooltipData = {
|
|
220
|
-
title: !curGroupName && typeof curGroupName !== 'number' ?
|
|
212
|
+
title: !curGroupName && typeof curGroupName !== 'number' ? intl.get(EMPTY_NAME) : curGroupName,
|
|
221
213
|
items: [{
|
|
222
214
|
color: this.colorMap[curGroup.getAttribute('data-key')],
|
|
223
215
|
name: curGroup.getAttribute('data-key'),
|
|
224
|
-
value:
|
|
216
|
+
value: BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(curRect.getAttribute('data-value')), y_axis_summary_method)
|
|
225
217
|
}]
|
|
226
218
|
};
|
|
227
219
|
this.setState({
|
|
@@ -269,7 +261,7 @@ class BarStack extends _chartComponent.default {
|
|
|
269
261
|
}).on('mouseleave', (event, data) => {
|
|
270
262
|
this.hiddenTooltip();
|
|
271
263
|
this.handleAcitveAndInActiveState('active', event);
|
|
272
|
-
}).append('xhtml:div').attr('style',
|
|
264
|
+
}).append('xhtml:div').attr('style', `width: 100%; height: 100%; background-color: ${rect.getAttribute('fill')}; border-radius: ${xWidth * borderRadius}px ${xWidth * borderRadius}px 0px 0px`);
|
|
273
265
|
|
|
274
266
|
// Remove old rect
|
|
275
267
|
d3.select(rect).remove();
|
|
@@ -284,7 +276,7 @@ class BarStack extends _chartComponent.default {
|
|
|
284
276
|
label_font_size,
|
|
285
277
|
y_axis_summary_method
|
|
286
278
|
} = chart.config;
|
|
287
|
-
const theme =
|
|
279
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
288
280
|
const groupData = d3.group(data, d => d.name);
|
|
289
281
|
const group_name = rect.getAttribute('data-groupName');
|
|
290
282
|
let stackSum = 0;
|
|
@@ -296,7 +288,7 @@ class BarStack extends _chartComponent.default {
|
|
|
296
288
|
y: Number(rect.getAttribute('y')),
|
|
297
289
|
theme,
|
|
298
290
|
label_font_size,
|
|
299
|
-
text:
|
|
291
|
+
text: BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(stackSum), y_axis_summary_method)
|
|
300
292
|
});
|
|
301
293
|
};
|
|
302
294
|
this.handleLabelToRectCenter = (g, xWidth) => {
|
|
@@ -309,7 +301,7 @@ class BarStack extends _chartComponent.default {
|
|
|
309
301
|
label_font_size,
|
|
310
302
|
y_axis_summary_method
|
|
311
303
|
} = chart.config;
|
|
312
|
-
const theme =
|
|
304
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
313
305
|
g._parents.forEach(group => {
|
|
314
306
|
Array.from(group.children).forEach(rect => {
|
|
315
307
|
// The height is 0, and the label is not displayed.
|
|
@@ -322,7 +314,7 @@ class BarStack extends _chartComponent.default {
|
|
|
322
314
|
yheight: Number(rect.getAttribute('height')),
|
|
323
315
|
theme,
|
|
324
316
|
label_font_size,
|
|
325
|
-
text:
|
|
317
|
+
text: BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(rect.getAttribute('data-value')), y_axis_summary_method)
|
|
326
318
|
});
|
|
327
319
|
});
|
|
328
320
|
});
|
|
@@ -336,12 +328,12 @@ class BarStack extends _chartComponent.default {
|
|
|
336
328
|
componentDidMount() {
|
|
337
329
|
this.createChart();
|
|
338
330
|
this.drawChart();
|
|
339
|
-
this.debouncedHandleResize =
|
|
331
|
+
this.debouncedHandleResize = debounce(this.handleResize, 300);
|
|
340
332
|
window.addEventListener('resize', this.debouncedHandleResize);
|
|
341
333
|
}
|
|
342
334
|
componentDidUpdate(prevProps) {
|
|
343
335
|
super.componentDidUpdate(prevProps);
|
|
344
|
-
if (
|
|
336
|
+
if (BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
|
|
345
337
|
this.destroyChart();
|
|
346
338
|
this.createChart();
|
|
347
339
|
this.drawChart();
|
|
@@ -359,13 +351,13 @@ class BarStack extends _chartComponent.default {
|
|
|
359
351
|
tooltipData,
|
|
360
352
|
toolTipPosition
|
|
361
353
|
} = this.state;
|
|
362
|
-
return /*#__PURE__*/
|
|
354
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
363
355
|
ref: ref => this.container = ref,
|
|
364
|
-
className: (
|
|
356
|
+
className: classNames('sea-chart-container', {
|
|
365
357
|
'show-x-axis-label': this.isShowXAxisLabel(chart),
|
|
366
358
|
'show-y-axis-label': this.isShowYAxisLabel(chart)
|
|
367
359
|
})
|
|
368
|
-
}, /*#__PURE__*/
|
|
360
|
+
}, /*#__PURE__*/React.createElement(ToolTip, {
|
|
369
361
|
tooltipData: tooltipData,
|
|
370
362
|
toolTipPosition: toolTipPosition,
|
|
371
363
|
chart: this.chart
|
|
@@ -373,16 +365,16 @@ class BarStack extends _chartComponent.default {
|
|
|
373
365
|
}
|
|
374
366
|
}
|
|
375
367
|
BarStack.propTypes = {
|
|
376
|
-
canvasStyle:
|
|
377
|
-
chart:
|
|
378
|
-
groupbyColumn:
|
|
379
|
-
columnGroupbyColumn:
|
|
380
|
-
summaryColumn:
|
|
381
|
-
result:
|
|
382
|
-
tables:
|
|
383
|
-
globalTheme:
|
|
384
|
-
chartColorTheme:
|
|
385
|
-
toggleRecords:
|
|
386
|
-
customRender:
|
|
368
|
+
canvasStyle: PropTypes.object,
|
|
369
|
+
chart: PropTypes.object,
|
|
370
|
+
groupbyColumn: PropTypes.object,
|
|
371
|
+
columnGroupbyColumn: PropTypes.object,
|
|
372
|
+
summaryColumn: PropTypes.object,
|
|
373
|
+
result: PropTypes.array,
|
|
374
|
+
tables: PropTypes.array,
|
|
375
|
+
globalTheme: PropTypes.string,
|
|
376
|
+
chartColorTheme: PropTypes.string,
|
|
377
|
+
toggleRecords: PropTypes.func,
|
|
378
|
+
customRender: PropTypes.func
|
|
387
379
|
};
|
|
388
|
-
|
|
380
|
+
export default BarStack;
|