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
|
@@ -1,29 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
-
var _lodashEs = require("lodash-es");
|
|
12
|
-
var d3 = _interopRequireWildcard(require("d3"));
|
|
13
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
14
|
-
var _constants = require("../../constants");
|
|
15
|
-
var _utils = require("../../utils");
|
|
16
|
-
var _intl = _interopRequireDefault(require("../../intl"));
|
|
17
|
-
var _tooltip = _interopRequireDefault(require("../../components/tooltip"));
|
|
18
|
-
var _chartComponent = _interopRequireDefault(require("./chart-component"));
|
|
19
|
-
class Completeness extends _chartComponent.default {
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import * as d3 from 'd3';
|
|
4
|
+
import { CHART_THEME_COLOR } from '../../constants';
|
|
5
|
+
import { BaseUtils } from '../../utils';
|
|
6
|
+
import intl from '../../intl';
|
|
7
|
+
import ToolTip from '../../components/tooltip';
|
|
8
|
+
import ChartComponent from './chart-component';
|
|
9
|
+
class Completeness extends ChartComponent {
|
|
20
10
|
constructor(props) {
|
|
21
11
|
super(props);
|
|
22
|
-
this.handleResize = () => {
|
|
23
|
-
this.destroyChart();
|
|
24
|
-
this.createChart();
|
|
25
|
-
this.drawChart();
|
|
26
|
-
};
|
|
27
12
|
this.createChart = () => {
|
|
28
13
|
const {
|
|
29
14
|
chart
|
|
@@ -42,17 +27,19 @@ class Completeness extends _chartComponent.default {
|
|
|
42
27
|
let {
|
|
43
28
|
result: data
|
|
44
29
|
} = this.props;
|
|
45
|
-
data =
|
|
30
|
+
data = BaseUtils.formatEmptyName(data, '', intl.get('Empty'));
|
|
46
31
|
if (!Array.isArray(data)) return;
|
|
47
32
|
this.draw(data);
|
|
48
33
|
};
|
|
49
34
|
this.draw = data => {
|
|
35
|
+
const fullData = data;
|
|
36
|
+
data = this.getVisibleLegendData(data, 'group_name');
|
|
50
37
|
const {
|
|
51
38
|
chart,
|
|
52
39
|
globalTheme,
|
|
53
40
|
chartColorTheme
|
|
54
41
|
} = this.props;
|
|
55
|
-
const theme =
|
|
42
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
56
43
|
const {
|
|
57
44
|
y_axis_auto_range,
|
|
58
45
|
y_axis_min,
|
|
@@ -66,7 +53,7 @@ class Completeness extends _chartComponent.default {
|
|
|
66
53
|
insertPadding,
|
|
67
54
|
marginRight
|
|
68
55
|
} = this.chartBoundingClientRect;
|
|
69
|
-
const colors =
|
|
56
|
+
const colors = BaseUtils.getCurrentTheme(chartColorTheme).colors;
|
|
70
57
|
this.markFirstOrLast(data, 'last');
|
|
71
58
|
const series = d3.stack().keys(d3.union(data.map(d => d.group_name))).value((_ref, key) => {
|
|
72
59
|
var _group$get;
|
|
@@ -91,7 +78,7 @@ class Completeness extends _chartComponent.default {
|
|
|
91
78
|
});
|
|
92
79
|
|
|
93
80
|
// X axis
|
|
94
|
-
const niceEnd = d3.nice(0, d3.max(newSeries, d => d[1].sumValue), 5)[1];
|
|
81
|
+
const niceEnd = d3.nice(0, d3.max(newSeries, d => d[1].sumValue) || 0, 5)[1];
|
|
95
82
|
const x = d3.scaleLinear().domain(y_axis_auto_range ? [0, niceEnd] : [y_axis_min || 0, y_axis_max || niceEnd]).range([Number(yAxis.node().getAttribute('data-axisWidth')), chartWidth - insertPadding - marginRight]);
|
|
96
83
|
this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform', `translate(0, ${chartHeight - insertPadding})`).call(d3.axisBottom(x).tickSizeInner(0).ticks(5)).call(g => {
|
|
97
84
|
g.selectAll('.domain').remove();
|
|
@@ -142,7 +129,7 @@ class Completeness extends _chartComponent.default {
|
|
|
142
129
|
});
|
|
143
130
|
}
|
|
144
131
|
}).on('click', (event, data) => {
|
|
145
|
-
this.
|
|
132
|
+
this.toggleRecords(data.data);
|
|
146
133
|
}).on('mouseover', event => {
|
|
147
134
|
this.showTooltip(event);
|
|
148
135
|
this.handleAcitveAndInActiveState('inActive', event);
|
|
@@ -151,12 +138,15 @@ class Completeness extends _chartComponent.default {
|
|
|
151
138
|
}).on('mouseleave', (event, data) => {
|
|
152
139
|
this.hiddenTooltip();
|
|
153
140
|
this.handleAcitveAndInActiveState('active', event);
|
|
141
|
+
}).call(g => {
|
|
142
|
+
this.animateStackGrowInX(g);
|
|
143
|
+
this.animateFadeIn(contentWrapper.selectAll('text'), this.transitionDuration, this.transitionDuration * 0.5);
|
|
154
144
|
});
|
|
155
145
|
this.setLegend({
|
|
156
146
|
legendName: 'group_name',
|
|
157
147
|
theme,
|
|
158
148
|
legendPosition: 'top-right',
|
|
159
|
-
data,
|
|
149
|
+
data: fullData,
|
|
160
150
|
colorScale: group_name => group_name === 'rest' ? '#bdbdbd' : colors[0]
|
|
161
151
|
});
|
|
162
152
|
};
|
|
@@ -165,26 +155,20 @@ class Completeness extends _chartComponent.default {
|
|
|
165
155
|
const curGroupName = event.currentTarget.getAttribute('data-groupName');
|
|
166
156
|
this.setActiveAndInActiveState(state, allGroup, curGroupName);
|
|
167
157
|
};
|
|
168
|
-
this.showTooltip =
|
|
169
|
-
|
|
158
|
+
this.showTooltip = event => {
|
|
159
|
+
const {
|
|
170
160
|
offsetX,
|
|
171
161
|
offsetY
|
|
172
162
|
} = event;
|
|
173
|
-
if (isDiv) {
|
|
174
|
-
const initX = Number(event.currentTarget.getAttribute('data-x'));
|
|
175
|
-
const initY = Number(event.currentTarget.getAttribute('y'));
|
|
176
|
-
offsetX = offsetX + initX;
|
|
177
|
-
offsetY = offsetY + initY;
|
|
178
|
-
}
|
|
179
163
|
const {
|
|
180
164
|
chartColorTheme
|
|
181
165
|
} = this.props;
|
|
182
|
-
const colors =
|
|
166
|
+
const colors = BaseUtils.getCurrentTheme(chartColorTheme).colors;
|
|
183
167
|
const newTooltipData = {
|
|
184
168
|
title: event.currentTarget.getAttribute('data-tooltipTitle'),
|
|
185
169
|
items: [{
|
|
186
|
-
color: event.currentTarget.getAttribute('data-
|
|
187
|
-
name:
|
|
170
|
+
color: event.currentTarget.getAttribute('data-tooltipName') === 'rest' ? '#bdbdbd' : colors[0],
|
|
171
|
+
name: intl.get(event.currentTarget.getAttribute('data-tooltipName')),
|
|
188
172
|
value: event.currentTarget.getAttribute('data-value')
|
|
189
173
|
}]
|
|
190
174
|
};
|
|
@@ -198,17 +182,11 @@ class Completeness extends _chartComponent.default {
|
|
|
198
182
|
}
|
|
199
183
|
});
|
|
200
184
|
};
|
|
201
|
-
this.moveTooltip =
|
|
202
|
-
|
|
185
|
+
this.moveTooltip = event => {
|
|
186
|
+
const {
|
|
203
187
|
offsetX,
|
|
204
188
|
offsetY
|
|
205
189
|
} = event;
|
|
206
|
-
if (isDiv) {
|
|
207
|
-
const initX = Number(event.currentTarget.getAttribute('data-x'));
|
|
208
|
-
const initY = Number(event.currentTarget.getAttribute('y'));
|
|
209
|
-
offsetX = offsetX + initX;
|
|
210
|
-
offsetY = offsetY + initY;
|
|
211
|
-
}
|
|
212
190
|
this.setState({
|
|
213
191
|
toolTipPosition: {
|
|
214
192
|
offsetX,
|
|
@@ -261,28 +239,7 @@ class Completeness extends _chartComponent.default {
|
|
|
261
239
|
return allGroup;
|
|
262
240
|
};
|
|
263
241
|
this.addMaskRect = (topG, rect, yAxis) => {
|
|
264
|
-
|
|
265
|
-
const {
|
|
266
|
-
borderRadius
|
|
267
|
-
} = this.chartBoundingClientRect;
|
|
268
|
-
// Add mask rect
|
|
269
|
-
d3.select(topG).append('foreignObject').attr('opacity', rect.getAttribute('opacity')).attr('x', rect.getAttribute('x')).attr('y', rect.getAttribute('y')).attr('width', rect.getAttribute('width')).attr('height', rect.getAttribute('height')).attr('data-groupName', rect.getAttribute('data-groupName')).attr('data-value', rect.getAttribute('data-value')).attr('data-tooltipTitle', rect.getAttribute('data-tooltipTitle')).attr('data-tooltipName', rect.getAttribute('data-tooltipName')).attr('data-x', () => {
|
|
270
|
-
const x = Number(rect.getAttribute('x'));
|
|
271
|
-
return x + Number(yAxis.node().getAttribute('data-axisWidth'));
|
|
272
|
-
}).on('click', (event, data) => {
|
|
273
|
-
this.props.toggleRecords(data);
|
|
274
|
-
}).on('mouseover', event => {
|
|
275
|
-
this.showTooltip(event, true);
|
|
276
|
-
this.handleAcitveAndInActiveState('inActive', event);
|
|
277
|
-
}).on('mousemove', event => {
|
|
278
|
-
this.moveTooltip(event, true);
|
|
279
|
-
}).on('mouseleave', event => {
|
|
280
|
-
this.hiddenTooltip();
|
|
281
|
-
this.handleAcitveAndInActiveState('active', event);
|
|
282
|
-
}).append('xhtml:div').attr('style', `width: 100%; height: 100%; background-color: ${rect.getAttribute('fill')}; border-radius: 0px ${xWidth * borderRadius}px ${xWidth * borderRadius}px 0px`);
|
|
283
|
-
|
|
284
|
-
// Remove old rect
|
|
285
|
-
d3.select(rect).remove();
|
|
242
|
+
return this.addRoundedClip(rect, 'x');
|
|
286
243
|
};
|
|
287
244
|
this.chart = null;
|
|
288
245
|
this.state = {
|
|
@@ -291,40 +248,31 @@ class Completeness extends _chartComponent.default {
|
|
|
291
248
|
};
|
|
292
249
|
}
|
|
293
250
|
componentDidMount() {
|
|
294
|
-
super.componentDidMount();
|
|
295
251
|
this.createChart();
|
|
296
252
|
this.drawChart();
|
|
297
|
-
|
|
298
|
-
window.addEventListener('resize', this.debouncedHandleResize);
|
|
253
|
+
super.componentDidMount();
|
|
299
254
|
}
|
|
300
255
|
componentDidUpdate(prevProps) {
|
|
301
256
|
super.componentDidUpdate(prevProps);
|
|
302
|
-
if (
|
|
257
|
+
if (BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
|
|
303
258
|
this.destroyChart();
|
|
304
259
|
this.createChart();
|
|
305
260
|
this.drawChart();
|
|
306
261
|
}
|
|
307
262
|
}
|
|
308
263
|
componentWillUnmount() {
|
|
309
|
-
super.componentWillUnmount();
|
|
310
264
|
this.destroyChart();
|
|
311
|
-
|
|
265
|
+
super.componentWillUnmount();
|
|
312
266
|
}
|
|
313
267
|
render() {
|
|
314
|
-
const {
|
|
315
|
-
chart
|
|
316
|
-
} = this.props;
|
|
317
268
|
const {
|
|
318
269
|
tooltipData,
|
|
319
270
|
toolTipPosition
|
|
320
271
|
} = this.state;
|
|
321
|
-
return /*#__PURE__*/
|
|
272
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
322
273
|
ref: ref => this.container = ref,
|
|
323
|
-
className:
|
|
324
|
-
|
|
325
|
-
'show-y-axis-label': this.isShowVerticalAxisLabel(chart)
|
|
326
|
-
})
|
|
327
|
-
}, /*#__PURE__*/_react.default.createElement(_tooltip.default, {
|
|
274
|
+
className: "sea-chart-container"
|
|
275
|
+
}, /*#__PURE__*/React.createElement(ToolTip, {
|
|
328
276
|
tooltipData: tooltipData,
|
|
329
277
|
toolTipPosition: toolTipPosition,
|
|
330
278
|
chart: this.chart
|
|
@@ -332,15 +280,15 @@ class Completeness extends _chartComponent.default {
|
|
|
332
280
|
}
|
|
333
281
|
}
|
|
334
282
|
Completeness.propTypes = {
|
|
335
|
-
canvasStyle:
|
|
336
|
-
chart:
|
|
337
|
-
groupbyColumn:
|
|
338
|
-
columnGroupbyColumn:
|
|
339
|
-
summaryColumn:
|
|
340
|
-
result:
|
|
341
|
-
tables:
|
|
342
|
-
globalTheme:
|
|
343
|
-
chartColorTheme:
|
|
344
|
-
toggleRecords:
|
|
283
|
+
canvasStyle: PropTypes.object,
|
|
284
|
+
chart: PropTypes.object,
|
|
285
|
+
groupbyColumn: PropTypes.object,
|
|
286
|
+
columnGroupbyColumn: PropTypes.object,
|
|
287
|
+
summaryColumn: PropTypes.object,
|
|
288
|
+
result: PropTypes.array,
|
|
289
|
+
tables: PropTypes.array,
|
|
290
|
+
globalTheme: PropTypes.string,
|
|
291
|
+
chartColorTheme: PropTypes.string,
|
|
292
|
+
toggleRecords: PropTypes.func
|
|
345
293
|
};
|
|
346
|
-
|
|
294
|
+
export default Completeness;
|
|
@@ -1,20 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var _react = _interopRequireDefault(require("react"));
|
|
10
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
-
var _lodashEs = require("lodash-es");
|
|
12
|
-
var d3 = _interopRequireWildcard(require("d3"));
|
|
13
|
-
var _constants = require("../../constants");
|
|
14
|
-
var _utils = require("../../utils");
|
|
15
|
-
var _tooltip = _interopRequireDefault(require("../../components/tooltip"));
|
|
16
|
-
var _chartComponent = _interopRequireDefault(require("./chart-component"));
|
|
17
|
-
class Dashboard extends _chartComponent.default {
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import * as d3 from 'd3';
|
|
4
|
+
import { CHART_THEME_COLOR } from '../../constants';
|
|
5
|
+
import { BaseUtils, isFunction } from '../../utils';
|
|
6
|
+
import ToolTip from '../../components/tooltip';
|
|
7
|
+
import ChartComponent from './chart-component';
|
|
8
|
+
class Dashboard extends ChartComponent {
|
|
18
9
|
constructor(props) {
|
|
19
10
|
super(props);
|
|
20
11
|
this.handleClickNumber = () => {
|
|
@@ -33,17 +24,6 @@ class Dashboard extends _chartComponent.default {
|
|
|
33
24
|
});
|
|
34
25
|
}
|
|
35
26
|
};
|
|
36
|
-
this.componentDidMount = () => {
|
|
37
|
-
this.createChart();
|
|
38
|
-
this.drawChart();
|
|
39
|
-
this.debouncedHandleResize = (0, _lodashEs.debounce)(this.handleResize, 300);
|
|
40
|
-
window.addEventListener('resize', this.debouncedHandleResize);
|
|
41
|
-
};
|
|
42
|
-
this.handleResize = () => {
|
|
43
|
-
this.destroyChart();
|
|
44
|
-
this.createChart();
|
|
45
|
-
this.drawChart();
|
|
46
|
-
};
|
|
47
27
|
this.createChart = () => {
|
|
48
28
|
const {
|
|
49
29
|
chart
|
|
@@ -59,7 +39,7 @@ class Dashboard extends _chartComponent.default {
|
|
|
59
39
|
customRender
|
|
60
40
|
} = this.props;
|
|
61
41
|
this.draw(data);
|
|
62
|
-
|
|
42
|
+
isFunction(customRender) && customRender(this.chart);
|
|
63
43
|
};
|
|
64
44
|
this.draw = data => {
|
|
65
45
|
const {
|
|
@@ -67,7 +47,7 @@ class Dashboard extends _chartComponent.default {
|
|
|
67
47
|
height: chartHeight,
|
|
68
48
|
insertPadding
|
|
69
49
|
} = this.chartBoundingClientRect;
|
|
70
|
-
const value = Number(data) * 100;
|
|
50
|
+
const value = (Number(data) || 0) * 100;
|
|
71
51
|
const formatValue = value >= 100 ? 100 : value.toFixed(1);
|
|
72
52
|
const innerRadius = Math.min(chartWidth, chartHeight) / 2 * 0.7;
|
|
73
53
|
const outerRadius = Math.min(chartWidth, chartHeight) / 2 * 0.75;
|
|
@@ -106,12 +86,13 @@ class Dashboard extends _chartComponent.default {
|
|
|
106
86
|
// Draw total
|
|
107
87
|
this.drawTotal(g.node().parentNode, formatValue);
|
|
108
88
|
});
|
|
89
|
+
this.animateFadeIn(this.chart.selectAll('path, circle, rect, line, text'));
|
|
109
90
|
};
|
|
110
91
|
this.drawTicks = (left, offsetX, top, offsetY, startAngle, endAngle, arc) => {
|
|
111
92
|
const {
|
|
112
93
|
globalTheme
|
|
113
94
|
} = this.props;
|
|
114
|
-
const theme =
|
|
95
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
115
96
|
const ticks = Array.from({
|
|
116
97
|
length: 51
|
|
117
98
|
}, (_, i) => i);
|
|
@@ -173,7 +154,7 @@ class Dashboard extends _chartComponent.default {
|
|
|
173
154
|
const {
|
|
174
155
|
name
|
|
175
156
|
} = chart.config;
|
|
176
|
-
const theme =
|
|
157
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
177
158
|
const {
|
|
178
159
|
height: chartHeight
|
|
179
160
|
} = this.chartBoundingClientRect;
|
|
@@ -234,9 +215,14 @@ class Dashboard extends _chartComponent.default {
|
|
|
234
215
|
toolTipPosition: null
|
|
235
216
|
};
|
|
236
217
|
}
|
|
218
|
+
componentDidMount() {
|
|
219
|
+
this.createChart();
|
|
220
|
+
this.drawChart();
|
|
221
|
+
super.componentDidMount();
|
|
222
|
+
}
|
|
237
223
|
componentDidUpdate(prevProps) {
|
|
238
224
|
super.componentDidUpdate(prevProps);
|
|
239
|
-
if (
|
|
225
|
+
if (BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
|
|
240
226
|
this.destroyChart();
|
|
241
227
|
this.createChart();
|
|
242
228
|
this.drawChart();
|
|
@@ -244,17 +230,17 @@ class Dashboard extends _chartComponent.default {
|
|
|
244
230
|
}
|
|
245
231
|
componentWillUnmount() {
|
|
246
232
|
this.destroyChart();
|
|
247
|
-
|
|
233
|
+
super.componentWillUnmount();
|
|
248
234
|
}
|
|
249
235
|
render() {
|
|
250
236
|
const {
|
|
251
237
|
tooltipData,
|
|
252
238
|
toolTipPosition
|
|
253
239
|
} = this.state;
|
|
254
|
-
return /*#__PURE__*/
|
|
240
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
255
241
|
ref: ref => this.container = ref,
|
|
256
242
|
className: "sea-chart-container"
|
|
257
|
-
}, /*#__PURE__*/
|
|
243
|
+
}, /*#__PURE__*/React.createElement(ToolTip, {
|
|
258
244
|
tooltipData: tooltipData,
|
|
259
245
|
toolTipPosition: toolTipPosition,
|
|
260
246
|
chart: this.chart
|
|
@@ -262,15 +248,15 @@ class Dashboard extends _chartComponent.default {
|
|
|
262
248
|
}
|
|
263
249
|
}
|
|
264
250
|
Dashboard.propTypes = {
|
|
265
|
-
canvasStyle:
|
|
266
|
-
chart:
|
|
267
|
-
groupbyColumn:
|
|
268
|
-
summaryColumn:
|
|
269
|
-
result:
|
|
270
|
-
tables:
|
|
271
|
-
globalTheme:
|
|
272
|
-
chartColorTheme:
|
|
273
|
-
toggleRecords:
|
|
274
|
-
customRender:
|
|
251
|
+
canvasStyle: PropTypes.object,
|
|
252
|
+
chart: PropTypes.object,
|
|
253
|
+
groupbyColumn: PropTypes.object,
|
|
254
|
+
summaryColumn: PropTypes.object,
|
|
255
|
+
result: PropTypes.oneOfType([PropTypes.number, PropTypes.object]),
|
|
256
|
+
tables: PropTypes.array,
|
|
257
|
+
globalTheme: PropTypes.string,
|
|
258
|
+
chartColorTheme: PropTypes.string,
|
|
259
|
+
toggleRecords: PropTypes.func,
|
|
260
|
+
customRender: PropTypes.func
|
|
275
261
|
};
|
|
276
|
-
|
|
262
|
+
export default Dashboard;
|
|
@@ -1,28 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var _react = _interopRequireDefault(require("react"));
|
|
10
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
-
var _lodashEs = require("lodash-es");
|
|
12
|
-
var d3 = _interopRequireWildcard(require("d3"));
|
|
13
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
14
|
-
var _constants = require("../../constants");
|
|
15
|
-
var _utils = require("../../utils");
|
|
16
|
-
var _tooltip = _interopRequireDefault(require("../../components/tooltip"));
|
|
17
|
-
var _chartComponent = _interopRequireDefault(require("./chart-component"));
|
|
18
|
-
class Funnel extends _chartComponent.default {
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import * as d3 from 'd3';
|
|
4
|
+
import { FUNNEL_LABEL_FORMAT, FUNNEL_LABEL_POSITIONS, CHART_THEME_COLOR } from '../../constants';
|
|
5
|
+
import { BaseUtils, getSortedDataByGivenOrder } from '../../utils';
|
|
6
|
+
import ToolTip from '../../components/tooltip';
|
|
7
|
+
import ChartComponent from './chart-component';
|
|
8
|
+
class Funnel extends ChartComponent {
|
|
19
9
|
constructor(props) {
|
|
20
10
|
super(props);
|
|
21
|
-
this.handleResize = () => {
|
|
22
|
-
this.destroyChart();
|
|
23
|
-
this.createChart();
|
|
24
|
-
this.drawChart();
|
|
25
|
-
};
|
|
26
11
|
this.createChart = () => {
|
|
27
12
|
const {
|
|
28
13
|
chart
|
|
@@ -42,7 +27,7 @@ class Funnel extends _chartComponent.default {
|
|
|
42
27
|
funnel_accumulate_values
|
|
43
28
|
} = chart.config;
|
|
44
29
|
if (!x_axis_option_list.length) return;
|
|
45
|
-
const sortedData =
|
|
30
|
+
const sortedData = getSortedDataByGivenOrder(data, x_axis_option_list);
|
|
46
31
|
const formatSortedData = this.formatSortedData(sortedData, funnel_accumulate_values);
|
|
47
32
|
this.draw(formatSortedData);
|
|
48
33
|
};
|
|
@@ -63,7 +48,7 @@ class Funnel extends _chartComponent.default {
|
|
|
63
48
|
items: [{
|
|
64
49
|
color: colorScale(data === null || data === void 0 ? void 0 : data.name),
|
|
65
50
|
name: data === null || data === void 0 ? void 0 : data.name,
|
|
66
|
-
value:
|
|
51
|
+
value: BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(data === null || data === void 0 ? void 0 : data.value), y_axis_summary_method)
|
|
67
52
|
}]
|
|
68
53
|
};
|
|
69
54
|
this.setState({
|
|
@@ -116,33 +101,54 @@ class Funnel extends _chartComponent.default {
|
|
|
116
101
|
height: chartHeight,
|
|
117
102
|
insertPadding
|
|
118
103
|
} = this.chartBoundingClientRect;
|
|
119
|
-
const theme =
|
|
120
|
-
const isInside = funnel_label_position ===
|
|
104
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
105
|
+
const isInside = funnel_label_position === FUNNEL_LABEL_POSITIONS.INSIDE;
|
|
121
106
|
const title = this.getTitle(tables, table_id, y_axis_summary_type, y_axis_column_key || y_axis_summary_column_key);
|
|
107
|
+
|
|
108
|
+
// Only the visible stages are laid out; the legend still shows every stage.
|
|
109
|
+
const fullData = data;
|
|
110
|
+
data = this.getVisibleLegendData(data, 'name');
|
|
122
111
|
const nameDomain = new Set(data.map(item => item.name));
|
|
123
112
|
|
|
124
|
-
// Color scale
|
|
125
|
-
const colorScale = d3.scaleOrdinal().domain(
|
|
113
|
+
// Color scale keeps the full domain so stage colors stay stable when toggling.
|
|
114
|
+
const colorScale = d3.scaleOrdinal().domain(new Set(fullData.map(item => item.name))).range(['#0050B3', '#1890FF', '#40A9FF', '#69C0FF', '#BAE7FF']);
|
|
126
115
|
|
|
127
116
|
// Y scale
|
|
128
117
|
const y = d3.scaleBand().domain(nameDomain).range([insertPadding, chartHeight - insertPadding]).paddingInner(0).paddingOuter(0);
|
|
129
118
|
|
|
119
|
+
// Reserve horizontal space on both sides for outside labels, otherwise the
|
|
120
|
+
// widest (top) layer spans nearly the full width and its label is clipped off
|
|
121
|
+
// the left edge.
|
|
122
|
+
let labelSpace = 0;
|
|
123
|
+
if (funnel_show_labels && !isInside) {
|
|
124
|
+
const measureWrapper = this.chart.append('g').attr('opacity', 0);
|
|
125
|
+
data.forEach(_ref => {
|
|
126
|
+
let {
|
|
127
|
+
name
|
|
128
|
+
} = _ref;
|
|
129
|
+
measureWrapper.append('text').attr('font-size', funnel_label_font_size).text(name);
|
|
130
|
+
});
|
|
131
|
+
const maxNameWidth = d3.max(measureWrapper.selectAll('text').nodes(), node => node.getBoundingClientRect().width) || 0;
|
|
132
|
+
measureWrapper.remove();
|
|
133
|
+
labelSpace = Math.min(maxNameWidth + 10, (chartWidth - insertPadding * 2) * 0.35);
|
|
134
|
+
}
|
|
135
|
+
|
|
130
136
|
// X scale
|
|
131
|
-
const x = d3.scaleLinear().domain([0, d3.max(data, d => d.value)]).range([insertPadding, chartWidth - insertPadding]);
|
|
137
|
+
const x = d3.scaleLinear().domain([0, d3.max(data, d => d.value)]).range([insertPadding + labelSpace, chartWidth - insertPadding - labelSpace]);
|
|
132
138
|
|
|
133
139
|
// Content
|
|
134
140
|
const contentWrapper = this.chart.append('g').attr('class', 'content-wrapper');
|
|
135
|
-
const allWidth = chartWidth - insertPadding * 2;
|
|
136
|
-
data.forEach((
|
|
141
|
+
const allWidth = chartWidth - insertPadding * 2 - labelSpace * 2;
|
|
142
|
+
data.forEach((_ref2, index) => {
|
|
137
143
|
let {
|
|
138
144
|
name: curName,
|
|
139
145
|
value: curValue
|
|
140
|
-
} =
|
|
146
|
+
} = _ref2;
|
|
141
147
|
const curOffsetX = (allWidth - (x(curValue) - x(0))) / 2;
|
|
142
148
|
let points3X = x(curValue) + curOffsetX;
|
|
143
149
|
let points3Y = y(curName) + y.bandwidth();
|
|
144
150
|
let points4X = x(0) + curOffsetX;
|
|
145
|
-
let points4Y = y(curName) +
|
|
151
|
+
let points4Y = y(curName) + y.bandwidth();
|
|
146
152
|
const nextD = data[index + 1];
|
|
147
153
|
if (nextD) {
|
|
148
154
|
const {
|
|
@@ -178,7 +184,7 @@ class Funnel extends _chartComponent.default {
|
|
|
178
184
|
width,
|
|
179
185
|
height
|
|
180
186
|
} = g.node().getBoundingClientRect();
|
|
181
|
-
const x = isInside ? left + gWidth / 2 - width / 2 : left - width - 5; // add offsetX is 5
|
|
187
|
+
const x = isInside ? left + gWidth / 2 - width / 2 : Math.max(left - width - 5, 2); // add offsetX is 5
|
|
182
188
|
const y = isInside ? top + height + 10 : top + gHeight / 2 + height / 2; // add offsetY is 10
|
|
183
189
|
g.attr('x', x);
|
|
184
190
|
g.attr('y', y);
|
|
@@ -218,12 +224,14 @@ class Funnel extends _chartComponent.default {
|
|
|
218
224
|
this.hiddenTooltip(event);
|
|
219
225
|
});
|
|
220
226
|
});
|
|
227
|
+
this.animateFadeIn(contentWrapper.selectAll('polygon'));
|
|
228
|
+
this.animateFadeIn(contentWrapper.selectAll('text'), this.transitionDuration, this.transitionDuration * 0.5);
|
|
221
229
|
if (funnel_show_legend) {
|
|
222
230
|
this.setLegend({
|
|
223
231
|
legendName: 'name',
|
|
224
232
|
theme,
|
|
225
233
|
legendPosition: 'top-right',
|
|
226
|
-
data,
|
|
234
|
+
data: fullData,
|
|
227
235
|
chart,
|
|
228
236
|
colorScale
|
|
229
237
|
});
|
|
@@ -250,20 +258,19 @@ class Funnel extends _chartComponent.default {
|
|
|
250
258
|
toolTipPosition: null
|
|
251
259
|
};
|
|
252
260
|
this.contentFormatterMap = {
|
|
253
|
-
[
|
|
254
|
-
[
|
|
255
|
-
[
|
|
261
|
+
[FUNNEL_LABEL_FORMAT.NUMBER]: obj => obj === null || obj === void 0 ? void 0 : obj.value,
|
|
262
|
+
[FUNNEL_LABEL_FORMAT.PERCENTAGE]: obj => ((obj === null || obj === void 0 ? void 0 : obj.percent) || 0) + '%',
|
|
263
|
+
[FUNNEL_LABEL_FORMAT.NUMBER_AND_PERCENTAGE]: obj => `${obj === null || obj === void 0 ? void 0 : obj.value} (${(obj === null || obj === void 0 ? void 0 : obj.percent) || 0}%)`
|
|
256
264
|
};
|
|
257
265
|
}
|
|
258
266
|
componentDidMount() {
|
|
259
267
|
this.createChart();
|
|
260
268
|
this.drawChart();
|
|
261
|
-
|
|
262
|
-
window.addEventListener('resize', this.debouncedHandleResize);
|
|
269
|
+
super.componentDidMount();
|
|
263
270
|
}
|
|
264
271
|
componentDidUpdate(prevProps) {
|
|
265
272
|
super.componentDidUpdate(prevProps);
|
|
266
|
-
if (
|
|
273
|
+
if (BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
|
|
267
274
|
this.destroyChart();
|
|
268
275
|
this.createChart();
|
|
269
276
|
this.drawChart();
|
|
@@ -271,23 +278,17 @@ class Funnel extends _chartComponent.default {
|
|
|
271
278
|
}
|
|
272
279
|
componentWillUnmount() {
|
|
273
280
|
this.destroyChart();
|
|
274
|
-
|
|
281
|
+
super.componentWillUnmount();
|
|
275
282
|
}
|
|
276
283
|
render() {
|
|
277
|
-
const {
|
|
278
|
-
chart
|
|
279
|
-
} = this.props;
|
|
280
284
|
const {
|
|
281
285
|
tooltipData,
|
|
282
286
|
toolTipPosition
|
|
283
287
|
} = this.state;
|
|
284
|
-
return /*#__PURE__*/
|
|
288
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
285
289
|
ref: ref => this.container = ref,
|
|
286
|
-
className:
|
|
287
|
-
|
|
288
|
-
'show-y-axis-label': this.isShowYAxisLabel(chart)
|
|
289
|
-
})
|
|
290
|
-
}, /*#__PURE__*/_react.default.createElement(_tooltip.default, {
|
|
290
|
+
className: "sea-chart-container"
|
|
291
|
+
}, /*#__PURE__*/React.createElement(ToolTip, {
|
|
291
292
|
tooltipData: tooltipData,
|
|
292
293
|
toolTipPosition: toolTipPosition,
|
|
293
294
|
chart: this.chart
|
|
@@ -295,16 +296,16 @@ class Funnel extends _chartComponent.default {
|
|
|
295
296
|
}
|
|
296
297
|
}
|
|
297
298
|
Funnel.propTypes = {
|
|
298
|
-
canvasStyle:
|
|
299
|
-
chart:
|
|
300
|
-
groupbyColumn:
|
|
301
|
-
columnGroupbyColumn:
|
|
302
|
-
summaryColumn:
|
|
303
|
-
result:
|
|
304
|
-
tables:
|
|
305
|
-
globalTheme:
|
|
306
|
-
chartColorTheme:
|
|
307
|
-
toggleRecords:
|
|
308
|
-
customRender:
|
|
299
|
+
canvasStyle: PropTypes.object,
|
|
300
|
+
chart: PropTypes.object,
|
|
301
|
+
groupbyColumn: PropTypes.object,
|
|
302
|
+
columnGroupbyColumn: PropTypes.object,
|
|
303
|
+
summaryColumn: PropTypes.object,
|
|
304
|
+
result: PropTypes.array,
|
|
305
|
+
tables: PropTypes.array,
|
|
306
|
+
globalTheme: PropTypes.string,
|
|
307
|
+
chartColorTheme: PropTypes.string,
|
|
308
|
+
toggleRecords: PropTypes.func,
|
|
309
|
+
customRender: PropTypes.func
|
|
309
310
|
};
|
|
310
|
-
|
|
311
|
+
export default Funnel;
|