sea-chart 2.0.43 → 2.0.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/index.js +4 -11
- package/dist/components/cell-factory/FormatterConfig.js +55 -62
- package/dist/components/cell-factory/SimpleCellFormatter.js +4 -11
- package/dist/components/cell-factory/SingleSelectOption.js +11 -18
- package/dist/components/cell-factory/cell-editor-factory.js +5 -12
- package/dist/components/cell-factory/cell-formatter-factory.js +4 -11
- package/dist/components/cell-factory/link-content.js +27 -35
- package/dist/components/chart-color-selector/color-selector.js +11 -18
- package/dist/components/collaborator/index.js +7 -14
- package/dist/components/color-picker/index.js +11 -18
- package/dist/components/color-popover/color-rules/color-rule.js +25 -33
- package/dist/components/color-popover/color-rules/index.js +6 -14
- package/dist/components/color-popover/color-rules/rule-filters/filter.js +27 -34
- package/dist/components/color-popover/color-rules/rule-filters/index.js +17 -25
- package/dist/components/color-popover/color-rules/rule-filters/number-input.js +10 -18
- package/dist/components/color-popover/color-rules-popover.js +26 -34
- package/dist/components/color-popover/color-selector-popover.js +10 -18
- package/dist/components/color-setting/color-group-selector.js +12 -20
- package/dist/components/common-add-tool/index.js +6 -13
- package/dist/components/data-process-setter/data-setting-header.js +7 -14
- package/dist/components/data-process-setter/hide-column-setter.js +12 -19
- package/dist/components/data-process-setter/index.js +4 -27
- package/dist/components/data-process-setter/sort-setter.js +16 -24
- package/dist/components/draggable/Draggable.js +7 -13
- package/dist/components/drill-down-settings/drill-down-fields-popover/index.js +42 -50
- package/dist/components/drill-down-settings/drill-down-fields-settings/index.js +10 -18
- package/dist/components/drill-down-settings/index.js +11 -18
- package/dist/components/dtable-popover/index.js +13 -20
- package/dist/components/dtable-search-input/index.js +13 -21
- package/dist/components/font-settings/index.js +14 -22
- package/dist/components/goal-line-setting/goal-setting-item.js +6 -14
- package/dist/components/goal-line-setting/index.js +12 -19
- package/dist/components/highlighter/highlighter.js +7 -14
- package/dist/components/icon/index.js +4 -11
- package/dist/components/index.js +7 -48
- package/dist/components/loading/index.js +6 -13
- package/dist/components/number-input/index.js +4 -11
- package/dist/components/pixel-editor/index.js +15 -23
- package/dist/components/popover/hide-column-popover/hide-column-popover-widgets/hide-column-item.js +8 -15
- package/dist/components/popover/hide-column-popover/hide-column-popover.js +25 -33
- package/dist/components/popover/sort-popover/sort-popover-widgets/sort-utils.js +9 -18
- package/dist/components/popover/sort-popover/sort-popover.js +54 -64
- package/dist/components/resize-handle/ResizeHandle.js +6 -13
- package/dist/components/row-card/row-card-header-cell.js +15 -22
- package/dist/components/row-card/row-card-header.js +14 -21
- package/dist/components/row-card/row-card-item.js +33 -41
- package/dist/components/row-card/row-card.js +15 -23
- package/dist/components/statistic-record-dialog/index.js +56 -64
- package/dist/components/tooltip/index.js +21 -21
- package/dist/components/types-dialog/index.js +56 -64
- package/dist/components/types-dialog/use-force-update.js +4 -10
- package/dist/constants/color-rules.js +8 -14
- package/dist/constants/common-constants.js +8 -14
- package/dist/constants/error.js +2 -8
- package/dist/constants/geolocation.js +9 -15
- package/dist/constants/index.js +149 -273
- package/dist/constants/key-codes.js +0 -2
- package/dist/constants/model.js +3 -9
- package/dist/constants/regions.js +3 -8
- package/dist/constants/style.js +6 -12
- package/dist/constants/table.js +1 -7
- package/dist/constants/type-image.js +33 -39
- package/dist/constants/type.js +3 -9
- package/dist/context.js +20 -24
- package/dist/editor/index.js +8 -15
- package/dist/index.js +13 -104
- package/dist/intl.js +10 -17
- package/dist/locale/index.js +16 -23
- package/dist/locale/lang/de.js +1 -7
- package/dist/locale/lang/en.js +1 -7
- package/dist/locale/lang/es.js +1 -7
- package/dist/locale/lang/fr.js +1 -7
- package/dist/locale/lang/pt.js +1 -7
- package/dist/locale/lang/ru.js +1 -7
- package/dist/locale/lang/zh_CN.js +1 -7
- package/dist/model/area-group.js +12 -19
- package/dist/model/area.js +12 -19
- package/dist/model/bar-custom.js +11 -18
- package/dist/model/bar-group.js +12 -19
- package/dist/model/bar-stack.js +10 -17
- package/dist/model/bar.js +11 -18
- package/dist/model/base-model.js +8 -11
- package/dist/model/basic-number-card.js +13 -20
- package/dist/model/chart.js +7 -13
- package/dist/model/combination.js +19 -22
- package/dist/model/compare-bar.js +14 -21
- package/dist/model/completeness-group.js +11 -18
- package/dist/model/completeness.js +10 -17
- package/dist/model/dashboard.js +7 -14
- package/dist/model/funnel.js +14 -21
- package/dist/model/generic-model.js +135 -143
- package/dist/model/heat-map.js +9 -16
- package/dist/model/horizontal-bar.js +15 -18
- package/dist/model/horizontal-group-bar.js +14 -17
- package/dist/model/index.js +69 -93
- package/dist/model/line-group.js +13 -20
- package/dist/model/line.js +12 -19
- package/dist/model/map-bubble.js +12 -19
- package/dist/model/map.js +12 -19
- package/dist/model/mirror.js +13 -20
- package/dist/model/pie.js +12 -19
- package/dist/model/ring.js +12 -19
- package/dist/model/scatter.js +10 -17
- package/dist/model/stacked-horizontal-bar.js +15 -18
- package/dist/model/table-element.js +5 -12
- package/dist/model/table.js +7 -14
- package/dist/model/tree-map.js +7 -14
- package/dist/model/trend.js +11 -18
- package/dist/model/user.js +1 -7
- package/dist/model/world-map-bubble.js +12 -19
- package/dist/model/world-map.js +12 -19
- package/dist/services/map-json.js +7 -13
- package/dist/settings/advance-bar-settings/data-settings.js +36 -44
- package/dist/settings/advance-bar-settings/index.js +3 -20
- package/dist/settings/advance-bar-settings/style-settings.js +83 -74
- package/dist/settings/bar-settings/data-settings.js +39 -47
- package/dist/settings/bar-settings/index.js +3 -20
- package/dist/settings/bar-settings/style-settings.js +69 -60
- package/dist/settings/basic-number-card/data-settings.js +49 -57
- package/dist/settings/basic-number-card/index.js +3 -20
- package/dist/settings/basic-number-card/style-settings.js +18 -26
- package/dist/settings/combination-settings/data-settings.js +55 -63
- package/dist/settings/combination-settings/index.js +3 -20
- package/dist/settings/combination-settings/style-settings.js +94 -77
- package/dist/settings/completeness-settings/callbacks/callbacks.js +16 -27
- package/dist/settings/completeness-settings/data-settings/completion-settings.js +21 -28
- package/dist/settings/completeness-settings/data-settings/data-settings.js +25 -32
- package/dist/settings/completeness-settings/index.js +3 -20
- package/dist/settings/completeness-settings/style-settings.js +19 -26
- package/dist/settings/dashboard-settings/data-settings.js +43 -51
- package/dist/settings/dashboard-settings/index.js +2 -13
- package/dist/settings/data-settings.js +72 -79
- package/dist/settings/funnel-settings/components/dnd-item/dnd-item.js +12 -19
- package/dist/settings/funnel-settings/components/dnd-list.js +15 -23
- package/dist/settings/funnel-settings/components/funnel-label-setting.js +32 -40
- package/dist/settings/funnel-settings/components/funnel-layer-setting.js +20 -28
- package/dist/settings/funnel-settings/data-settings.js +23 -31
- package/dist/settings/funnel-settings/index.js +3 -20
- package/dist/settings/funnel-settings/style-settings.js +11 -19
- package/dist/settings/heat-map-settings/data-settings.js +18 -26
- package/dist/settings/heat-map-settings/index.js +3 -20
- package/dist/settings/heat-map-settings/style-settings.js +18 -26
- package/dist/settings/horizontal-bar-settings/data-settings.js +12 -19
- package/dist/settings/horizontal-bar-settings/index.js +3 -20
- package/dist/settings/horizontal-bar-settings/style-settings.js +12 -19
- package/dist/settings/index.js +52 -70
- package/dist/settings/map-settings/components/location-field-selector.js +10 -17
- package/dist/settings/map-settings/components/map-level-selector.js +11 -18
- package/dist/settings/map-settings/components/map-province-city-selector.js +19 -26
- package/dist/settings/map-settings/index.js +3 -20
- package/dist/settings/map-settings/map-data-settings.js +23 -30
- package/dist/settings/map-settings/map-style-settings.js +26 -34
- package/dist/settings/mirror-settings/data-settings.js +26 -34
- package/dist/settings/mirror-settings/index.js +2 -13
- package/dist/settings/pie-settings/data-settings.js +33 -41
- package/dist/settings/pie-settings/index.js +3 -20
- package/dist/settings/pie-settings/style-settings.js +47 -55
- package/dist/settings/scatter/data-settings.js +27 -34
- package/dist/settings/scatter/index.js +3 -12
- package/dist/settings/stacks-settings/index.js +19 -27
- package/dist/settings/stacks-settings/stack-item-settings.js +19 -27
- package/dist/settings/style-settings.js +64 -72
- package/dist/settings/table-element-settings/components/data-filter.js +30 -38
- package/dist/settings/table-element-settings/data-settings.js +21 -29
- package/dist/settings/table-element-settings/index.js +2 -13
- package/dist/settings/table-settings/data-settings.js +111 -119
- package/dist/settings/table-settings/index.js +2 -13
- package/dist/settings/time-comparison-settings/data-settings.js +43 -51
- package/dist/settings/time-comparison-settings/index.js +3 -20
- package/dist/settings/time-comparison-settings/style-settings.js +62 -53
- package/dist/settings/trend-settings/data-settings.js +24 -32
- package/dist/settings/trend-settings/index.js +3 -20
- package/dist/settings/trend-settings/style-setting.js +17 -25
- package/dist/settings/widgets/axis-title-font-settings/index.js +39 -0
- package/dist/settings/widgets/basic-summary/index.js +55 -63
- package/dist/settings/widgets/chart-type/index.js +18 -26
- package/dist/settings/widgets/color-settings/index.js +72 -80
- package/dist/settings/widgets/common-data-settings.js +21 -29
- package/dist/settings/widgets/data-filter/index.js +35 -43
- package/dist/settings/widgets/data-sort.js +16 -24
- package/dist/settings/widgets/date-summary-item.js +24 -32
- package/dist/settings/widgets/display-values-settings/index.js +14 -22
- package/dist/settings/widgets/divider/index.js +8 -16
- package/dist/settings/widgets/font-settings/font-color-settings.js +11 -19
- package/dist/settings/widgets/font-settings/font-size-settings.js +14 -22
- package/dist/settings/widgets/font-settings/font-weight-settings.js +17 -25
- package/dist/settings/widgets/font-settings/index.js +4 -27
- package/dist/settings/widgets/group-by.js +51 -59
- package/dist/settings/widgets/min-max-setting.js +10 -18
- package/dist/settings/widgets/mininum-slice-percent.js +10 -18
- package/dist/settings/widgets/numeric-summary-item.js +23 -31
- package/dist/settings/widgets/select-line-type/index.js +10 -17
- package/dist/settings/widgets/select-table/index.js +9 -16
- package/dist/settings/widgets/select-view/index.js +20 -28
- package/dist/settings/widgets/stack.js +14 -22
- package/dist/settings/widgets/summary-method-setting.js +17 -25
- package/dist/settings/widgets/summary-settings.js +72 -80
- package/dist/settings/widgets/switch/index.js +8 -15
- package/dist/settings/widgets/text-horizontal-settings.js +15 -23
- package/dist/settings/widgets/time-picker.js +29 -37
- package/dist/settings/widgets/title-settings/index.js +29 -37
- package/dist/settings/widgets/title-settings/title-text.js +5 -12
- package/dist/settings/widgets/x-axios.js +0 -1
- package/dist/settings/widgets/y-axis-group-settings.js +63 -71
- package/dist/utils/cell-format-utils.js +18 -28
- package/dist/utils/cell-value-utils.js +5 -12
- package/dist/utils/chart-utils/base-utils.js +362 -334
- package/dist/utils/chart-utils/index.js +28 -41
- package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +80 -86
- package/dist/utils/chart-utils/original-data-utils/card-calculator.js +13 -20
- package/dist/utils/chart-utils/original-data-utils/combination-calculator.js +45 -52
- package/dist/utils/chart-utils/original-data-utils/compare-bar-chart-calculator.js +19 -26
- package/dist/utils/chart-utils/original-data-utils/completeness-calculator.js +32 -39
- package/dist/utils/chart-utils/original-data-utils/dashboard-calculator.js +16 -23
- package/dist/utils/chart-utils/original-data-utils/index.js +50 -57
- package/dist/utils/chart-utils/original-data-utils/mirror-calculator.js +21 -28
- package/dist/utils/chart-utils/original-data-utils/pivot-table-calculator.js +91 -97
- package/dist/utils/chart-utils/original-data-utils/scatter-calculator.js +19 -26
- package/dist/utils/chart-utils/original-data-utils/trend-calculator.js +31 -38
- package/dist/utils/chart-utils/sql-statistics-utils.js +284 -246
- package/dist/utils/chart.js +9 -17
- package/dist/utils/collaborator-manager.js +3 -9
- package/dist/utils/collaborator-utils.js +18 -30
- package/dist/utils/collaborator.js +4 -13
- package/dist/utils/color-utils.js +18 -29
- package/dist/utils/column-utils.js +65 -92
- package/dist/utils/common-utils.js +27 -52
- package/dist/utils/concurrency-manager.js +1 -7
- package/dist/utils/contexts.js +5 -12
- package/dist/utils/date-translate.js +11 -19
- package/dist/utils/digital-sign-utils.js +7 -14
- package/dist/utils/event-bus.js +1 -7
- package/dist/utils/hotkey.js +5 -11
- package/dist/utils/index.js +54 -221
- package/dist/utils/key-generator.js +2 -9
- package/dist/utils/map.js +22 -31
- package/dist/utils/object-utils.js +1 -7
- package/dist/utils/options-utils.js +8 -16
- package/dist/utils/row-record-utils.js +182 -178
- package/dist/utils/row-utils.js +27 -38
- package/dist/utils/search.js +24 -32
- package/dist/utils/sql/chart-data-sql.js +49 -55
- package/dist/utils/sql/column-2-sql-column.js +146 -154
- package/dist/utils/sql/index.js +3 -27
- package/dist/utils/trend-utils.js +39 -47
- package/dist/view/index.css +0 -17
- package/dist/view/index.js +89 -95
- package/dist/view/title/index.js +15 -23
- package/dist/view/wrapper/area-group.js +57 -74
- package/dist/view/wrapper/area.js +51 -72
- package/dist/view/wrapper/bar-compare.js +47 -58
- package/dist/view/wrapper/bar-custom-stack.js +53 -121
- package/dist/view/wrapper/bar-group.js +55 -96
- package/dist/view/wrapper/bar-stack.js +58 -92
- package/dist/view/wrapper/bar.js +45 -66
- package/dist/view/wrapper/basic-number-card.js +25 -26
- package/dist/view/wrapper/chart-component.js +600 -166
- package/dist/view/wrapper/combination.js +79 -87
- package/dist/view/wrapper/completeness-group.js +46 -98
- package/dist/view/wrapper/completeness.js +45 -97
- package/dist/view/wrapper/dashboard.js +33 -47
- package/dist/view/wrapper/funnel.js +65 -64
- package/dist/view/wrapper/heat-map.js +126 -104
- package/dist/view/wrapper/horizontal-bar-group.js +61 -78
- package/dist/view/wrapper/horizontal-bar-stack.js +60 -111
- package/dist/view/wrapper/horizontal-bar.js +45 -68
- package/dist/view/wrapper/index.js +110 -115
- package/dist/view/wrapper/line-group.js +52 -68
- package/dist/view/wrapper/line.js +47 -67
- package/dist/view/wrapper/map-bubble.js +46 -59
- package/dist/view/wrapper/map-world-bubble.js +45 -58
- package/dist/view/wrapper/map-world.js +47 -60
- package/dist/view/wrapper/map.js +48 -60
- package/dist/view/wrapper/mirror.js +45 -64
- package/dist/view/wrapper/pie.js +51 -59
- package/dist/view/wrapper/ring.js +57 -64
- package/dist/view/wrapper/scatter.js +53 -69
- package/dist/view/wrapper/table/index.js +13 -21
- package/dist/view/wrapper/table/one-dimension-table-no-numeric-columns.js +49 -57
- package/dist/view/wrapper/table/one-dimension-table-with-numeric-columns.js +50 -58
- package/dist/view/wrapper/table/pivot-table-display-name.js +83 -91
- package/dist/view/wrapper/table/two-dimension-table.js +76 -84
- package/dist/view/wrapper/table-element/components/dataset-utils.js +23 -36
- package/dist/view/wrapper/table-element/components/formatter.js +96 -105
- package/dist/view/wrapper/table-element/components/formatters/FileFormatter/index.js +22 -31
- package/dist/view/wrapper/table-element/components/formatters/formula-formatter.js +9 -16
- package/dist/view/wrapper/table-element/components/formatters/link-formatter.js +73 -80
- package/dist/view/wrapper/table-element/components/formula-formatter.js +9 -16
- package/dist/view/wrapper/table-element/components/link-formatter.js +73 -80
- package/dist/view/wrapper/table-element/components/record.js +10 -17
- package/dist/view/wrapper/table-element/components/records-body.js +17 -19
- package/dist/view/wrapper/table-element/components/records-header/index.js +7 -15
- package/dist/view/wrapper/table-element/components/records-header/records-header-cell.js +8 -16
- package/dist/view/wrapper/table-element/components/records.js +23 -33
- package/dist/view/wrapper/table-element/components/resize-column-handle/resize-column-handle.js +5 -12
- package/dist/view/wrapper/table-element/components/utils.js +5 -15
- package/dist/view/wrapper/table-element/components/value-display-utils.js +4 -11
- package/dist/view/wrapper/table-element/components/vertical-scrollbar/index.js +6 -13
- package/dist/view/wrapper/table-element/index.js +18 -26
- package/dist/view/wrapper/treemap.js +39 -57
- package/dist/view/wrapper/trend.js +41 -48
- package/package.json +1 -1
package/dist/view/wrapper/map.js
CHANGED
|
@@ -1,32 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var _dtableUtils = require("dtable-utils");
|
|
15
|
-
var _constants = require("../../constants");
|
|
16
|
-
var _utils = require("../../utils");
|
|
17
|
-
var _colorRules = require("../../constants/color-rules");
|
|
18
|
-
var _context = _interopRequireDefault(require("../../context"));
|
|
19
|
-
var _mapJson = _interopRequireDefault(require("../../services/map-json"));
|
|
20
|
-
var _tooltip = _interopRequireDefault(require("../../components/tooltip"));
|
|
21
|
-
var _chartComponent = _interopRequireDefault(require("./chart-component"));
|
|
22
|
-
class Map extends _chartComponent.default {
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import * as d3 from 'd3';
|
|
4
|
+
import { feature } from 'topojson';
|
|
5
|
+
import { getTableById, getTableColumnByKey } from 'dtable-utils';
|
|
6
|
+
import { CHART_SUMMARY_TYPE, MAP_LEVEL, DEFAULT_NUMBER_FORMAT_OBJECT, CHART_THEME_COLOR } from '../../constants';
|
|
7
|
+
import { BaseUtils } from '../../utils';
|
|
8
|
+
import { COLOR_OPTIONS } from '../../constants/color-rules';
|
|
9
|
+
import context from '../../context';
|
|
10
|
+
import fetchMapJson from '../../services/map-json';
|
|
11
|
+
import ToolTip from '../../components/tooltip';
|
|
12
|
+
import ChartComponent from './chart-component';
|
|
13
|
+
class Map extends ChartComponent {
|
|
23
14
|
constructor(props) {
|
|
24
15
|
super(props);
|
|
25
|
-
this.handleResize = () => {
|
|
26
|
-
this.destroyChart();
|
|
27
|
-
this.createChart();
|
|
28
|
-
this.drawChart();
|
|
29
|
-
};
|
|
30
16
|
this.createChart = () => {
|
|
31
17
|
const {
|
|
32
18
|
chart
|
|
@@ -44,13 +30,13 @@ class Map extends _chartComponent.default {
|
|
|
44
30
|
if (!Array.isArray(data)) return;
|
|
45
31
|
const {
|
|
46
32
|
map_location,
|
|
47
|
-
map_level =
|
|
33
|
+
map_level = MAP_LEVEL.COUNTRY,
|
|
48
34
|
type
|
|
49
35
|
} = chart.config;
|
|
50
|
-
const mediaUrl =
|
|
51
|
-
const mapJson = await (
|
|
36
|
+
const mediaUrl = context.getSetting('mediaUrl');
|
|
37
|
+
const mapJson = await fetchMapJson(map_level, map_location, mediaUrl);
|
|
52
38
|
if (!mapJson) return;
|
|
53
|
-
const newMapJson = map_level ===
|
|
39
|
+
const newMapJson = map_level === MAP_LEVEL.COUNTRY ? feature(mapJson, mapJson.objects) : mapJson;
|
|
54
40
|
const statisticNewData = this.formatMapStatisticData(data, newMapJson, type);
|
|
55
41
|
this.draw(statisticNewData, newMapJson);
|
|
56
42
|
};
|
|
@@ -102,7 +88,7 @@ class Map extends _chartComponent.default {
|
|
|
102
88
|
globalTheme,
|
|
103
89
|
canvasStyle
|
|
104
90
|
} = this.props;
|
|
105
|
-
const theme =
|
|
91
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
106
92
|
const {
|
|
107
93
|
data_color,
|
|
108
94
|
legend_size,
|
|
@@ -114,7 +100,7 @@ class Map extends _chartComponent.default {
|
|
|
114
100
|
height: chartHeight,
|
|
115
101
|
insertPadding
|
|
116
102
|
} = this.chartBoundingClientRect;
|
|
117
|
-
const currentColorOption =
|
|
103
|
+
const currentColorOption = COLOR_OPTIONS.filter(item => item.name === data_color)[0] || COLOR_OPTIONS[0];
|
|
118
104
|
const {
|
|
119
105
|
exampleColors,
|
|
120
106
|
highlightedBorderColor
|
|
@@ -171,7 +157,7 @@ class Map extends _chartComponent.default {
|
|
|
171
157
|
d3.select(item).attr('fill', color());
|
|
172
158
|
}
|
|
173
159
|
});
|
|
174
|
-
});
|
|
160
|
+
}).call(g => this.animateFadeIn(g));
|
|
175
161
|
const columnData = this.getColumnData();
|
|
176
162
|
this.setContinuousLegend({
|
|
177
163
|
previewType: canvasStyle.previewType,
|
|
@@ -179,7 +165,7 @@ class Map extends _chartComponent.default {
|
|
|
179
165
|
colorRange: exampleColors,
|
|
180
166
|
legendDirection: legend_direction,
|
|
181
167
|
legendSize: legend_size,
|
|
182
|
-
legendTextRange: [
|
|
168
|
+
legendTextRange: [BaseUtils.getSummaryValueDisplayString(columnData, minVal, summary_method), BaseUtils.getSummaryValueDisplayString(columnData, maxVal, summary_method)]
|
|
183
169
|
});
|
|
184
170
|
};
|
|
185
171
|
this.handleAcitveAndInActiveState = (state, event, highlightedBorderColor) => {
|
|
@@ -187,12 +173,12 @@ class Map extends _chartComponent.default {
|
|
|
187
173
|
const lastElement = Array.from(event.target.parentNode.parentNode.children).at(-1);
|
|
188
174
|
|
|
189
175
|
// Add element to the end
|
|
190
|
-
d3.select(this.curElement).select('path').transition().duration(this.
|
|
176
|
+
d3.select(this.curElement).select('path').transition().duration(this.interactionDuration).attr('stroke-opacity', 0.7).attr('stroke-width', 0.5).attr('stroke', highlightedBorderColor);
|
|
191
177
|
lastElement.after(this.curElement);
|
|
192
178
|
return;
|
|
193
179
|
}
|
|
194
180
|
if (this.curElement) {
|
|
195
|
-
d3.select(this.curElement).select('path').transition().duration(this.
|
|
181
|
+
d3.select(this.curElement).select('path').transition().duration(this.interactionDuration).attr('stroke-opacity', 1).attr('stroke-width', 1).attr('stroke', '#bdbdbd');
|
|
196
182
|
}
|
|
197
183
|
};
|
|
198
184
|
this.getColumnData = () => {
|
|
@@ -204,11 +190,14 @@ class Map extends _chartComponent.default {
|
|
|
204
190
|
summary_column_key,
|
|
205
191
|
table_id
|
|
206
192
|
} = chart.config;
|
|
207
|
-
let columnData =
|
|
208
|
-
if (summary_type ===
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
|
|
193
|
+
let columnData = DEFAULT_NUMBER_FORMAT_OBJECT;
|
|
194
|
+
if (summary_type === CHART_SUMMARY_TYPE.ADVANCED) {
|
|
195
|
+
const {
|
|
196
|
+
tables
|
|
197
|
+
} = this.props;
|
|
198
|
+
const table = getTableById(tables, table_id);
|
|
199
|
+
const summaryColumn = getTableColumnByKey(table, summary_column_key) || {};
|
|
200
|
+
columnData = summaryColumn.data || DEFAULT_NUMBER_FORMAT_OBJECT;
|
|
212
201
|
}
|
|
213
202
|
return columnData;
|
|
214
203
|
};
|
|
@@ -222,12 +211,11 @@ class Map extends _chartComponent.default {
|
|
|
222
211
|
componentDidMount() {
|
|
223
212
|
this.createChart();
|
|
224
213
|
this.drawChart();
|
|
225
|
-
|
|
226
|
-
window.addEventListener('resize', this.debouncedHandleResize);
|
|
214
|
+
super.componentDidMount();
|
|
227
215
|
}
|
|
228
216
|
componentDidUpdate(prevProps) {
|
|
229
217
|
super.componentDidUpdate(prevProps);
|
|
230
|
-
if (
|
|
218
|
+
if (BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
|
|
231
219
|
this.destroyChart();
|
|
232
220
|
this.createChart();
|
|
233
221
|
this.drawChart();
|
|
@@ -235,17 +223,17 @@ class Map extends _chartComponent.default {
|
|
|
235
223
|
}
|
|
236
224
|
componentWillUnmount() {
|
|
237
225
|
this.destroyChart();
|
|
238
|
-
|
|
226
|
+
super.componentWillUnmount();
|
|
239
227
|
}
|
|
240
228
|
render() {
|
|
241
229
|
const {
|
|
242
230
|
tooltipData,
|
|
243
231
|
toolTipPosition
|
|
244
232
|
} = this.state;
|
|
245
|
-
return /*#__PURE__*/
|
|
233
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
246
234
|
ref: ref => this.container = ref,
|
|
247
235
|
className: "sea-chart-container"
|
|
248
|
-
}, /*#__PURE__*/
|
|
236
|
+
}, /*#__PURE__*/React.createElement(ToolTip, {
|
|
249
237
|
tooltipData: tooltipData,
|
|
250
238
|
toolTipPosition: toolTipPosition,
|
|
251
239
|
chart: this.chart
|
|
@@ -253,16 +241,16 @@ class Map extends _chartComponent.default {
|
|
|
253
241
|
}
|
|
254
242
|
}
|
|
255
243
|
Map.propTypes = {
|
|
256
|
-
canvasStyle:
|
|
257
|
-
chart:
|
|
258
|
-
groupbyColumn:
|
|
259
|
-
columnGroupbyColumn:
|
|
260
|
-
summaryColumn:
|
|
261
|
-
result:
|
|
262
|
-
tables:
|
|
263
|
-
globalTheme:
|
|
264
|
-
chartColorTheme:
|
|
265
|
-
toggleRecords:
|
|
266
|
-
customRender:
|
|
244
|
+
canvasStyle: PropTypes.object,
|
|
245
|
+
chart: PropTypes.object,
|
|
246
|
+
groupbyColumn: PropTypes.object,
|
|
247
|
+
columnGroupbyColumn: PropTypes.object,
|
|
248
|
+
summaryColumn: PropTypes.object,
|
|
249
|
+
result: PropTypes.array,
|
|
250
|
+
tables: PropTypes.array,
|
|
251
|
+
globalTheme: PropTypes.string,
|
|
252
|
+
chartColorTheme: PropTypes.string,
|
|
253
|
+
toggleRecords: PropTypes.func,
|
|
254
|
+
customRender: PropTypes.func
|
|
267
255
|
};
|
|
268
|
-
|
|
256
|
+
export default Map;
|
|
@@ -1,30 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var _lodashEs = require("lodash-es");
|
|
12
|
-
var d3 = _interopRequireWildcard(require("d3"));
|
|
13
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
14
|
-
var _dtableUtils = require("dtable-utils");
|
|
15
|
-
var _constants = require("../../constants");
|
|
16
|
-
var _utils = require("../../utils");
|
|
17
|
-
var _intl = _interopRequireDefault(require("../../intl"));
|
|
18
|
-
var _tooltip = _interopRequireDefault(require("../../components/tooltip"));
|
|
19
|
-
var _chartComponent = _interopRequireDefault(require("./chart-component"));
|
|
20
|
-
class Mirror extends _chartComponent.default {
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import * as d3 from 'd3';
|
|
4
|
+
import { getTableById, getTableColumnByKey, getNumberDisplayString } from 'dtable-utils';
|
|
5
|
+
import { CHART_SUMMARY_SHOW, DEFAULT_NUMBER_FORMAT_OBJECT, CHART_SUMMARY_TYPE, TITLE_AMOUNT } from '../../constants';
|
|
6
|
+
import { BaseUtils } from '../../utils';
|
|
7
|
+
import intl from '../../intl';
|
|
8
|
+
import ToolTip from '../../components/tooltip';
|
|
9
|
+
import ChartComponent from './chart-component';
|
|
10
|
+
class Mirror extends ChartComponent {
|
|
21
11
|
constructor(props) {
|
|
22
12
|
super(props);
|
|
23
|
-
this.handleResize = () => {
|
|
24
|
-
this.destroyChart();
|
|
25
|
-
this.createChart();
|
|
26
|
-
this.drawChart();
|
|
27
|
-
};
|
|
28
13
|
this.createChart = () => {
|
|
29
14
|
const {
|
|
30
15
|
chart
|
|
@@ -39,7 +24,7 @@ class Mirror extends _chartComponent.default {
|
|
|
39
24
|
let {
|
|
40
25
|
result
|
|
41
26
|
} = this.props;
|
|
42
|
-
const data =
|
|
27
|
+
const data = BaseUtils.formatEmptyName(result.data, '', intl.get('Empty'));
|
|
43
28
|
if (!Array.isArray(data)) return;
|
|
44
29
|
this.draw({
|
|
45
30
|
data,
|
|
@@ -60,7 +45,7 @@ class Mirror extends _chartComponent.default {
|
|
|
60
45
|
offsetY
|
|
61
46
|
} = event;
|
|
62
47
|
const newTooltipData = {
|
|
63
|
-
title: summary_type === 'count' ?
|
|
48
|
+
title: summary_type === 'count' ? intl.get(TITLE_AMOUNT) : intl.get(CHART_SUMMARY_SHOW[summary_method]),
|
|
64
49
|
items: [{
|
|
65
50
|
color: '',
|
|
66
51
|
name: data.name,
|
|
@@ -99,6 +84,8 @@ class Mirror extends _chartComponent.default {
|
|
|
99
84
|
data,
|
|
100
85
|
colorSet
|
|
101
86
|
} = _ref;
|
|
87
|
+
const fullData = data;
|
|
88
|
+
data = this.getVisibleLegendData(data, 'group_name');
|
|
102
89
|
const {
|
|
103
90
|
chart,
|
|
104
91
|
tables
|
|
@@ -116,19 +103,20 @@ class Mirror extends _chartComponent.default {
|
|
|
116
103
|
bottomLegendSpace
|
|
117
104
|
} = this.chartBoundingClientRect;
|
|
118
105
|
const themeColors = this.getThemeColors();
|
|
119
|
-
let columnData =
|
|
120
|
-
if (summary_type ===
|
|
121
|
-
const table =
|
|
122
|
-
const summaryColumn =
|
|
123
|
-
columnData = summaryColumn.data ||
|
|
106
|
+
let columnData = DEFAULT_NUMBER_FORMAT_OBJECT;
|
|
107
|
+
if (summary_type === CHART_SUMMARY_TYPE.ADVANCED) {
|
|
108
|
+
const table = getTableById(tables, table_id);
|
|
109
|
+
const summaryColumn = getTableColumnByKey(table, summary_column) || {};
|
|
110
|
+
columnData = summaryColumn.data || DEFAULT_NUMBER_FORMAT_OBJECT;
|
|
124
111
|
}
|
|
125
112
|
const scaleBandDomain = Array.from(new Set(data.map(d => d.group_name)));
|
|
126
113
|
const scaleBand = d3.scaleBand().domain(scaleBandDomain).range(is_transpose ? [insertPadding, chartWidth - insertPadding] : [insertPadding, chartHeight - insertPadding - bottomLegendSpace]).paddingInner(0.1).paddingOuter(0);
|
|
127
114
|
|
|
128
115
|
// ScaleLinear axis
|
|
129
|
-
const maxDomain = d3.max(data, d => d.value);
|
|
116
|
+
const maxDomain = d3.max(data, d => d.value) || 0;
|
|
130
117
|
const scaleLinear1 = d3.scaleLinear().domain([maxDomain, 0]).range([scaleBand(scaleBandDomain[0]), scaleBand.bandwidth()]);
|
|
131
|
-
const
|
|
118
|
+
const secondDomainKey = scaleBandDomain[1] !== undefined ? scaleBandDomain[1] : scaleBandDomain[0];
|
|
119
|
+
const scaleLinear2 = d3.scaleLinear().domain([0, maxDomain]).range([scaleBand(secondDomainKey), scaleBand(secondDomainKey) + scaleBand.bandwidth()]);
|
|
132
120
|
const scaleLinearWrapper = this.chart.append('g').attr('class', 'scale-linear-axis-wrapper');
|
|
133
121
|
scaleLinearWrapper.append('g').attr('class', 'scale-linear-1').attr('transform', is_transpose ? `translate(0, ${chartHeight - insertPadding - bottomLegendSpace})` : `translate(${insertPadding}, 0)`).call(is_transpose ? d3.axisBottom(scaleLinear1).tickSizeInner(0).tickSizeOuter(0).ticks(5) : d3.axisLeft(scaleLinear1).tickSizeInner(0).tickSizeOuter(0).ticks(5)).call(g => {
|
|
134
122
|
g.select('.domain').remove();
|
|
@@ -136,7 +124,7 @@ class Mirror extends _chartComponent.default {
|
|
|
136
124
|
g.selectAll('.tick line').attr('stroke', themeColors.gridColor);
|
|
137
125
|
is_transpose ? g.selectAll('.tick line').attr('y2', -(chartHeight - insertPadding - insertPadding - bottomLegendSpace)) : g.selectAll('.tick line').attr('x2', chartWidth - insertPadding - insertPadding);
|
|
138
126
|
});
|
|
139
|
-
scaleLinearWrapper.append('g').attr('class', 'scale-linear-2').attr('transform', is_transpose ? `translate(0, ${chartHeight - insertPadding - bottomLegendSpace})` : `translate(${insertPadding}, 0)`).call(is_transpose ? d3.axisBottom(scaleLinear2).tickSizeInner(0).tickSizeOuter(0).ticks(5).tickFormat(t =>
|
|
127
|
+
scaleLinearWrapper.append('g').attr('class', 'scale-linear-2').attr('transform', is_transpose ? `translate(0, ${chartHeight - insertPadding - bottomLegendSpace})` : `translate(${insertPadding}, 0)`).call(is_transpose ? d3.axisBottom(scaleLinear2).tickSizeInner(0).tickSizeOuter(0).ticks(5).tickFormat(t => getNumberDisplayString(t, columnData)) : d3.axisLeft(scaleLinear2).tickSizeInner(0).tickSizeOuter(0).ticks(5).tickFormat(t => getNumberDisplayString(t, columnData))).call(g => {
|
|
140
128
|
g.select('.domain').remove();
|
|
141
129
|
g.selectAll('text').attr('font-size', themeColors.fontSize).attr('fill', themeColors.textColor);
|
|
142
130
|
g.selectAll('.tick line').attr('stroke', themeColors.gridColor);
|
|
@@ -245,17 +233,17 @@ class Mirror extends _chartComponent.default {
|
|
|
245
233
|
this.moveTooltip(event);
|
|
246
234
|
}).on('mouseleave', event => {
|
|
247
235
|
this.hiddenTooltip(event);
|
|
248
|
-
});
|
|
236
|
+
}).call(g => this.animateFadeIn(g));
|
|
249
237
|
this.setLegend({
|
|
250
238
|
legendName: 'group_name',
|
|
251
239
|
theme: themeColors,
|
|
252
240
|
legendPosition: 'top-left',
|
|
253
|
-
data,
|
|
241
|
+
data: fullData,
|
|
254
242
|
groupColumn: this.props.columnGroupbyColumn,
|
|
255
243
|
chart,
|
|
256
244
|
colorScale: key => {
|
|
257
|
-
const curD =
|
|
258
|
-
return curD.color || '';
|
|
245
|
+
const curD = fullData.find(item => item.group_name === key);
|
|
246
|
+
return (curD === null || curD === void 0 ? void 0 : curD.color) || '';
|
|
259
247
|
}
|
|
260
248
|
});
|
|
261
249
|
};
|
|
@@ -268,12 +256,11 @@ class Mirror extends _chartComponent.default {
|
|
|
268
256
|
componentDidMount() {
|
|
269
257
|
this.createChart();
|
|
270
258
|
this.drawChart();
|
|
271
|
-
|
|
272
|
-
window.addEventListener('resize', this.debouncedHandleResize);
|
|
259
|
+
super.componentDidMount();
|
|
273
260
|
}
|
|
274
261
|
componentDidUpdate(prevProps) {
|
|
275
262
|
super.componentDidUpdate(prevProps);
|
|
276
|
-
if (
|
|
263
|
+
if (BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
|
|
277
264
|
this.destroyChart();
|
|
278
265
|
this.createChart();
|
|
279
266
|
this.drawChart();
|
|
@@ -281,23 +268,17 @@ class Mirror extends _chartComponent.default {
|
|
|
281
268
|
}
|
|
282
269
|
componentWillUnmount() {
|
|
283
270
|
this.destroyChart();
|
|
284
|
-
|
|
271
|
+
super.componentWillUnmount();
|
|
285
272
|
}
|
|
286
273
|
render() {
|
|
287
|
-
const {
|
|
288
|
-
chart
|
|
289
|
-
} = this.props;
|
|
290
274
|
const {
|
|
291
275
|
tooltipData,
|
|
292
276
|
toolTipPosition
|
|
293
277
|
} = this.state;
|
|
294
|
-
return /*#__PURE__*/
|
|
278
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
295
279
|
ref: ref => this.container = ref,
|
|
296
|
-
className:
|
|
297
|
-
|
|
298
|
-
'show-y-axis-label': this.isShowYAxisLabel(chart)
|
|
299
|
-
})
|
|
300
|
-
}, /*#__PURE__*/_react.default.createElement(_tooltip.default, {
|
|
280
|
+
className: "sea-chart-container"
|
|
281
|
+
}, /*#__PURE__*/React.createElement(ToolTip, {
|
|
301
282
|
tooltipData: tooltipData,
|
|
302
283
|
toolTipPosition: toolTipPosition,
|
|
303
284
|
chart: this.chart
|
|
@@ -305,16 +286,16 @@ class Mirror extends _chartComponent.default {
|
|
|
305
286
|
}
|
|
306
287
|
}
|
|
307
288
|
Mirror.propTypes = {
|
|
308
|
-
canvasStyle:
|
|
309
|
-
chart:
|
|
310
|
-
groupbyColumn:
|
|
311
|
-
columnGroupbyColumn:
|
|
312
|
-
summaryColumn:
|
|
313
|
-
result:
|
|
314
|
-
tables:
|
|
315
|
-
globalTheme:
|
|
316
|
-
chartColorTheme:
|
|
317
|
-
toggleRecords:
|
|
318
|
-
customRender:
|
|
289
|
+
canvasStyle: PropTypes.object,
|
|
290
|
+
chart: PropTypes.object,
|
|
291
|
+
groupbyColumn: PropTypes.object,
|
|
292
|
+
columnGroupbyColumn: PropTypes.object,
|
|
293
|
+
summaryColumn: PropTypes.object,
|
|
294
|
+
result: PropTypes.object,
|
|
295
|
+
tables: PropTypes.array,
|
|
296
|
+
globalTheme: PropTypes.string,
|
|
297
|
+
chartColorTheme: PropTypes.string,
|
|
298
|
+
toggleRecords: PropTypes.func,
|
|
299
|
+
customRender: PropTypes.func
|
|
319
300
|
};
|
|
320
|
-
|
|
301
|
+
export default Mirror;
|
package/dist/view/wrapper/pie.js
CHANGED
|
@@ -1,29 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var _lodashEs = require("lodash-es");
|
|
12
|
-
var d3 = _interopRequireWildcard(require("d3"));
|
|
13
|
-
var _constants = require("../../constants");
|
|
14
|
-
var _utils = require("../../utils");
|
|
15
|
-
var _intl = _interopRequireDefault(require("../../intl"));
|
|
16
|
-
var _colorRules = require("../../constants/color-rules");
|
|
17
|
-
var _tooltip = _interopRequireDefault(require("../../components/tooltip"));
|
|
18
|
-
var _chartComponent = _interopRequireDefault(require("./chart-component"));
|
|
19
|
-
class Pie extends _chartComponent.default {
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import * as d3 from 'd3';
|
|
4
|
+
import { CHART_LABEL_POSITIONS, CHART_LABEL_FORMATS, CHART_THEME_COLOR, CHART_TYPE } from '../../constants';
|
|
5
|
+
import { BaseUtils, isFunction } from '../../utils';
|
|
6
|
+
import intl from '../../intl';
|
|
7
|
+
import { SUPPORT_SINGLE_SELECT_THEMES_OPTIONS } from '../../constants/color-rules';
|
|
8
|
+
import ToolTip from '../../components/tooltip';
|
|
9
|
+
import ChartComponent from './chart-component';
|
|
10
|
+
class Pie extends ChartComponent {
|
|
20
11
|
constructor(props) {
|
|
21
12
|
super(props);
|
|
22
|
-
this.handleResize = () => {
|
|
23
|
-
this.destroyChart();
|
|
24
|
-
this.createChart();
|
|
25
|
-
this.drawChart();
|
|
26
|
-
};
|
|
27
13
|
this.createChart = () => {
|
|
28
14
|
const {
|
|
29
15
|
chart
|
|
@@ -43,7 +29,7 @@ class Pie extends _chartComponent.default {
|
|
|
43
29
|
customRender
|
|
44
30
|
} = this.props;
|
|
45
31
|
this.draw(data);
|
|
46
|
-
|
|
32
|
+
isFunction(customRender) && customRender(this.chart);
|
|
47
33
|
};
|
|
48
34
|
this.draw = data => {
|
|
49
35
|
const {
|
|
@@ -52,7 +38,7 @@ class Pie extends _chartComponent.default {
|
|
|
52
38
|
globalTheme,
|
|
53
39
|
chartColorTheme
|
|
54
40
|
} = this.props;
|
|
55
|
-
const theme =
|
|
41
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
56
42
|
const {
|
|
57
43
|
show_legend,
|
|
58
44
|
display_label,
|
|
@@ -66,23 +52,26 @@ class Pie extends _chartComponent.default {
|
|
|
66
52
|
insertPadding,
|
|
67
53
|
rightLegendSpace
|
|
68
54
|
} = this.chartBoundingClientRect;
|
|
69
|
-
this.isInnerLabel = !label_position || label_position ===
|
|
70
|
-
const currentTheme =
|
|
71
|
-
const useSingleSelectColumnColor = color_theme ===
|
|
55
|
+
this.isInnerLabel = !label_position || label_position === CHART_LABEL_POSITIONS[0];
|
|
56
|
+
const currentTheme = BaseUtils.getCurrentTheme(chartColorTheme);
|
|
57
|
+
const useSingleSelectColumnColor = color_theme === SUPPORT_SINGLE_SELECT_THEMES_OPTIONS.SINGLE_SELECT_COLUMN_COLORS;
|
|
72
58
|
const {
|
|
73
59
|
data: newData,
|
|
74
60
|
colorMap
|
|
75
|
-
} =
|
|
61
|
+
} = BaseUtils.formatPieChartData(data, chart, tables, currentTheme, useSingleSelectColumnColor);
|
|
76
62
|
if (!Array.isArray(newData) || newData.length === 0) return;
|
|
77
63
|
|
|
64
|
+
// Only the visible categories are laid out; the legend still shows every category.
|
|
65
|
+
const visibleData = this.getVisibleLegendData(newData, 'name');
|
|
66
|
+
|
|
78
67
|
// Color
|
|
79
|
-
const colorDomain = new Set(
|
|
68
|
+
const colorDomain = new Set(newData.map(d => d.name));
|
|
80
69
|
const colorRange = Array.from(colorDomain).map(name => colorMap[name === null || name === void 0 ? void 0 : name.trim()]);
|
|
81
70
|
const color = d3.scaleOrdinal().domain(colorDomain).range(colorRange);
|
|
82
71
|
|
|
83
72
|
// Pie and Arc
|
|
84
73
|
const pie = d3.pie().sort(null).value(d => d.value);
|
|
85
|
-
const arcs = pie(
|
|
74
|
+
const arcs = pie(visibleData);
|
|
86
75
|
const arc = d3.arc().innerRadius(0).outerRadius(Math.min(chartWidth, chartHeight) / 2 * 0.7);
|
|
87
76
|
|
|
88
77
|
// Draw Pie
|
|
@@ -108,13 +97,13 @@ class Pie extends _chartComponent.default {
|
|
|
108
97
|
percent
|
|
109
98
|
} = d.data;
|
|
110
99
|
return this.getLabel(value, percent);
|
|
111
|
-
}).attr('fill', theme.labelColor).attr('font-size',
|
|
100
|
+
}).attr('fill', theme.labelColor).attr('font-size', BaseUtils.getLabelFontSize(label_font_size));
|
|
112
101
|
|
|
113
102
|
// Line
|
|
114
103
|
if (!this.isInnerLabel) {
|
|
115
104
|
const lineRadius = arc.outerRadius()() * 0.5;
|
|
116
105
|
const arcLine = d3.arc().innerRadius(lineRadius).outerRadius(lineRadius);
|
|
117
|
-
this.chart.append('g').attr('transform', `translate(${left + offsetX}, ${top + offsetY})`).selectAll().data(arcs).join('line').attr('transform', d => `translate(${arcLine.centroid(d)})`).attr('x1', d => arcLine.centroid(d)[0]).attr('y1', d => arcLine.centroid(d)[1]).attr('x2', d => arcLine.centroid(d)[0] * 1.2).attr('y2', d => arcLine.centroid(d)[1] * 1.2).attr('stroke', d => color(d.data.name)).attr('font-size',
|
|
106
|
+
this.chart.append('g').attr('transform', `translate(${left + offsetX}, ${top + offsetY})`).selectAll().data(arcs).join('line').attr('transform', d => `translate(${arcLine.centroid(d)})`).attr('x1', d => arcLine.centroid(d)[0]).attr('y1', d => arcLine.centroid(d)[1]).attr('x2', d => arcLine.centroid(d)[0] * 1.2).attr('y2', d => arcLine.centroid(d)[1] * 1.2).attr('stroke', d => color(d.data.name)).attr('font-size', BaseUtils.getLabelFontSize(label_font_size));
|
|
118
107
|
}
|
|
119
108
|
}
|
|
120
109
|
}).on('click', (event, rowData) => {
|
|
@@ -127,13 +116,17 @@ class Pie extends _chartComponent.default {
|
|
|
127
116
|
}).on('mouseleave', (event, data) => {
|
|
128
117
|
this.hiddenTooltip();
|
|
129
118
|
this.handleAcitveAndInActiveState('active', event);
|
|
119
|
+
}).call(g => {
|
|
120
|
+
this.animateArcGrowIn(g, arc);
|
|
121
|
+
this.animateFadeIn(this.chart.selectAll('text'), this.transitionDuration, this.transitionDuration * 0.5);
|
|
122
|
+
this.animateFadeIn(this.chart.selectAll('line'), this.transitionDuration, this.transitionDuration * 0.5);
|
|
130
123
|
});
|
|
131
124
|
if (show_legend) {
|
|
132
125
|
this.setLegend({
|
|
133
126
|
legendName: 'name',
|
|
134
127
|
theme,
|
|
135
128
|
legendPosition: 'center-right',
|
|
136
|
-
data,
|
|
129
|
+
data: newData,
|
|
137
130
|
colorScale: color
|
|
138
131
|
});
|
|
139
132
|
}
|
|
@@ -185,7 +178,7 @@ class Pie extends _chartComponent.default {
|
|
|
185
178
|
this.handleAcitveAndInActiveState = (state, event) => {
|
|
186
179
|
const allGroup = [event.currentTarget.parentNode];
|
|
187
180
|
const curGroupName = event.currentTarget.getAttribute('data-groupName');
|
|
188
|
-
this.setActiveAndInActiveState(state, allGroup, curGroupName,
|
|
181
|
+
this.setActiveAndInActiveState(state, allGroup, curGroupName, CHART_TYPE.PIE);
|
|
189
182
|
};
|
|
190
183
|
this.getLabel = (val, percent) => {
|
|
191
184
|
const {
|
|
@@ -197,16 +190,16 @@ class Pie extends _chartComponent.default {
|
|
|
197
190
|
display_label,
|
|
198
191
|
label_format
|
|
199
192
|
} = chart.config;
|
|
200
|
-
const value =
|
|
193
|
+
const value = BaseUtils.getSummaryValueDisplayString(summaryColumn, val, summary_method);
|
|
201
194
|
if (!display_label || !value || !percent) {
|
|
202
195
|
return '';
|
|
203
196
|
}
|
|
204
197
|
switch (label_format) {
|
|
205
|
-
case
|
|
198
|
+
case CHART_LABEL_FORMATS[0]:
|
|
206
199
|
return percent;
|
|
207
|
-
case
|
|
200
|
+
case CHART_LABEL_FORMATS[1]:
|
|
208
201
|
return value;
|
|
209
|
-
case
|
|
202
|
+
case CHART_LABEL_FORMATS[2]:
|
|
210
203
|
return `${value} (${percent})`;
|
|
211
204
|
default:
|
|
212
205
|
return percent;
|
|
@@ -215,9 +208,9 @@ class Pie extends _chartComponent.default {
|
|
|
215
208
|
this.getTooltipName = name => {
|
|
216
209
|
let title = name;
|
|
217
210
|
if (!name || name.trim() === 'undefined' || name.trim() === 'null') {
|
|
218
|
-
title =
|
|
211
|
+
title = intl.get('Empty');
|
|
219
212
|
} else if (name === '_Others') {
|
|
220
|
-
title =
|
|
213
|
+
title = intl.get('Others');
|
|
221
214
|
}
|
|
222
215
|
return title;
|
|
223
216
|
};
|
|
@@ -230,12 +223,11 @@ class Pie extends _chartComponent.default {
|
|
|
230
223
|
componentDidMount() {
|
|
231
224
|
this.createChart();
|
|
232
225
|
this.drawChart();
|
|
233
|
-
|
|
234
|
-
window.addEventListener('resize', this.debouncedHandleResize);
|
|
226
|
+
super.componentDidMount();
|
|
235
227
|
}
|
|
236
228
|
componentDidUpdate(prevProps) {
|
|
237
229
|
super.componentDidUpdate(prevProps);
|
|
238
|
-
if (
|
|
230
|
+
if (BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
|
|
239
231
|
this.destroyChart();
|
|
240
232
|
this.createChart();
|
|
241
233
|
this.drawChart();
|
|
@@ -243,17 +235,17 @@ class Pie extends _chartComponent.default {
|
|
|
243
235
|
}
|
|
244
236
|
componentWillUnmount() {
|
|
245
237
|
this.destroyChart();
|
|
246
|
-
|
|
238
|
+
super.componentWillUnmount();
|
|
247
239
|
}
|
|
248
240
|
render() {
|
|
249
241
|
const {
|
|
250
242
|
tooltipData,
|
|
251
243
|
toolTipPosition
|
|
252
244
|
} = this.state;
|
|
253
|
-
return /*#__PURE__*/
|
|
245
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
254
246
|
ref: ref => this.container = ref,
|
|
255
247
|
className: "sea-chart-container"
|
|
256
|
-
}, /*#__PURE__*/
|
|
248
|
+
}, /*#__PURE__*/React.createElement(ToolTip, {
|
|
257
249
|
tooltipData: tooltipData,
|
|
258
250
|
toolTipPosition: toolTipPosition,
|
|
259
251
|
chart: this.chart
|
|
@@ -261,15 +253,15 @@ class Pie extends _chartComponent.default {
|
|
|
261
253
|
}
|
|
262
254
|
}
|
|
263
255
|
Pie.propTypes = {
|
|
264
|
-
canvasStyle:
|
|
265
|
-
chart:
|
|
266
|
-
groupbyColumn:
|
|
267
|
-
summaryColumn:
|
|
268
|
-
result:
|
|
269
|
-
tables:
|
|
270
|
-
globalTheme:
|
|
271
|
-
chartColorTheme:
|
|
272
|
-
toggleRecords:
|
|
273
|
-
customRender:
|
|
256
|
+
canvasStyle: PropTypes.object,
|
|
257
|
+
chart: PropTypes.object,
|
|
258
|
+
groupbyColumn: PropTypes.object,
|
|
259
|
+
summaryColumn: PropTypes.object,
|
|
260
|
+
result: PropTypes.array,
|
|
261
|
+
tables: PropTypes.array,
|
|
262
|
+
globalTheme: PropTypes.string,
|
|
263
|
+
chartColorTheme: PropTypes.string,
|
|
264
|
+
toggleRecords: PropTypes.func,
|
|
265
|
+
customRender: PropTypes.func
|
|
274
266
|
};
|
|
275
|
-
|
|
267
|
+
export default Pie;
|