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,22 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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 Ring 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 { CHART_LABEL_POSITIONS, CHART_LABEL_FORMATS, CHART_THEME_COLOR, CHART_TYPE } from '../../constants';
|
|
6
|
+
import { BaseUtils, isFunction } from '../../utils';
|
|
7
|
+
import intl from '../../intl';
|
|
8
|
+
import { SUPPORT_SINGLE_SELECT_THEMES_OPTIONS } from '../../constants/color-rules';
|
|
9
|
+
import ToolTip from '../../components/tooltip';
|
|
10
|
+
import ChartComponent from './chart-component';
|
|
11
|
+
class Ring extends ChartComponent {
|
|
20
12
|
constructor(props) {
|
|
21
13
|
super(props);
|
|
22
14
|
this.handleResize = () => {
|
|
@@ -43,7 +35,7 @@ class Ring extends _chartComponent.default {
|
|
|
43
35
|
customRender
|
|
44
36
|
} = this.props;
|
|
45
37
|
this.draw(data);
|
|
46
|
-
|
|
38
|
+
isFunction(customRender) && customRender(this.chart);
|
|
47
39
|
};
|
|
48
40
|
this.draw = data => {
|
|
49
41
|
const {
|
|
@@ -52,7 +44,7 @@ class Ring extends _chartComponent.default {
|
|
|
52
44
|
globalTheme,
|
|
53
45
|
chartColorTheme
|
|
54
46
|
} = this.props;
|
|
55
|
-
const theme =
|
|
47
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
56
48
|
const {
|
|
57
49
|
show_legend,
|
|
58
50
|
display_label,
|
|
@@ -66,14 +58,14 @@ class Ring extends _chartComponent.default {
|
|
|
66
58
|
insertPadding,
|
|
67
59
|
rightLegendSpace
|
|
68
60
|
} = this.chartBoundingClientRect;
|
|
69
|
-
this.isInnerLabel = !label_position || label_position ===
|
|
70
|
-
const currentTheme =
|
|
71
|
-
const useSingleSelectColumnColor = color_theme ===
|
|
61
|
+
this.isInnerLabel = !label_position || label_position === CHART_LABEL_POSITIONS[0];
|
|
62
|
+
const currentTheme = BaseUtils.getCurrentTheme(chartColorTheme);
|
|
63
|
+
const useSingleSelectColumnColor = color_theme === SUPPORT_SINGLE_SELECT_THEMES_OPTIONS.SINGLE_SELECT_COLUMN_COLORS;
|
|
72
64
|
const {
|
|
73
65
|
data: newData,
|
|
74
66
|
colorMap,
|
|
75
67
|
total
|
|
76
|
-
} =
|
|
68
|
+
} = BaseUtils.formatPieChartData(data, chart, tables, currentTheme, useSingleSelectColumnColor);
|
|
77
69
|
if (!Array.isArray(newData) || newData.length === 0) return;
|
|
78
70
|
|
|
79
71
|
// Color
|
|
@@ -97,7 +89,7 @@ class Ring extends _chartComponent.default {
|
|
|
97
89
|
const top = height / 2 + insertPadding;
|
|
98
90
|
const offsetX = (chartWidth - (insertPadding + rightLegendSpace) - insertPadding - width) / 2;
|
|
99
91
|
const offsetY = (chartHeight - insertPadding - insertPadding - height) / 2;
|
|
100
|
-
d3.select(g.node().parentNode).attr('transform',
|
|
92
|
+
d3.select(g.node().parentNode).attr('transform', `translate(${left + offsetX}, ${top + offsetY})`);
|
|
101
93
|
|
|
102
94
|
// Draw total
|
|
103
95
|
this.setAnnotationTotal(g.node().parentNode, {
|
|
@@ -108,19 +100,19 @@ class Ring extends _chartComponent.default {
|
|
|
108
100
|
if (display_label) {
|
|
109
101
|
const labelRadius = this.isInnerLabel ? arc.outerRadius()() * 1.2 : arc.outerRadius()() * 1.65;
|
|
110
102
|
const arcLabel = d3.arc().innerRadius(labelRadius).outerRadius(labelRadius);
|
|
111
|
-
this.chart.append('g').attr('class', 'label-wrapper').attr('transform',
|
|
103
|
+
this.chart.append('g').attr('class', 'label-wrapper').attr('transform', `translate(${left + offsetX}, ${top + offsetY})`).attr('text-anchor', 'middle').selectAll().data(arcs).join('text').attr('class', 'label').attr('stroke', '#fff').attr('stroke-width', 1).attr('paint-order', 'stroke').attr('transform', d => `translate(${arcLabel.centroid(d)})`).text(d => {
|
|
112
104
|
const {
|
|
113
105
|
value,
|
|
114
106
|
percent
|
|
115
107
|
} = d.data;
|
|
116
108
|
return this.getLabel(value, percent);
|
|
117
|
-
}).attr('fill', theme.labelColor).attr('font-size',
|
|
109
|
+
}).attr('fill', theme.labelColor).attr('font-size', BaseUtils.getLabelFontSize(label_font_size));
|
|
118
110
|
|
|
119
111
|
// Line
|
|
120
112
|
if (!this.isInnerLabel) {
|
|
121
113
|
const lineRadius = arc.outerRadius()() * 0.7;
|
|
122
114
|
const arcLine = d3.arc().innerRadius(lineRadius).outerRadius(lineRadius);
|
|
123
|
-
this.chart.append('g').attr('transform',
|
|
115
|
+
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));
|
|
124
116
|
}
|
|
125
117
|
}
|
|
126
118
|
}).on('click', (event, rowData) => {
|
|
@@ -199,7 +191,7 @@ class Ring extends _chartComponent.default {
|
|
|
199
191
|
this.handleAcitveAndInActiveState = (state, event) => {
|
|
200
192
|
const allGroup = [event.currentTarget.parentNode];
|
|
201
193
|
const curGroupName = event.currentTarget.getAttribute('data-groupName');
|
|
202
|
-
this.setActiveAndInActiveState(state, allGroup, curGroupName,
|
|
194
|
+
this.setActiveAndInActiveState(state, allGroup, curGroupName, CHART_TYPE.RING);
|
|
203
195
|
};
|
|
204
196
|
this.getLabel = (val, percent) => {
|
|
205
197
|
const {
|
|
@@ -211,17 +203,17 @@ class Ring extends _chartComponent.default {
|
|
|
211
203
|
display_label,
|
|
212
204
|
label_format
|
|
213
205
|
} = chart.config;
|
|
214
|
-
const value =
|
|
206
|
+
const value = BaseUtils.getSummaryValueDisplayString(summaryColumn, val, summary_method);
|
|
215
207
|
if (!display_label || !value || !percent) {
|
|
216
208
|
return '';
|
|
217
209
|
}
|
|
218
210
|
switch (label_format) {
|
|
219
|
-
case
|
|
211
|
+
case CHART_LABEL_FORMATS[0]:
|
|
220
212
|
return percent;
|
|
221
|
-
case
|
|
213
|
+
case CHART_LABEL_FORMATS[1]:
|
|
222
214
|
return value;
|
|
223
|
-
case
|
|
224
|
-
return
|
|
215
|
+
case CHART_LABEL_FORMATS[2]:
|
|
216
|
+
return `${value} (${percent})`;
|
|
225
217
|
default:
|
|
226
218
|
return percent;
|
|
227
219
|
}
|
|
@@ -229,9 +221,9 @@ class Ring extends _chartComponent.default {
|
|
|
229
221
|
this.getTooltipName = name => {
|
|
230
222
|
let title = name;
|
|
231
223
|
if (!name || name.trim() === 'undefined' || name.trim() === 'null') {
|
|
232
|
-
title =
|
|
224
|
+
title = intl.get('Empty');
|
|
233
225
|
} else if (name === '_Others') {
|
|
234
|
-
title =
|
|
226
|
+
title = intl.get('Others');
|
|
235
227
|
}
|
|
236
228
|
return title;
|
|
237
229
|
};
|
|
@@ -249,7 +241,7 @@ class Ring extends _chartComponent.default {
|
|
|
249
241
|
const {
|
|
250
242
|
summary_method
|
|
251
243
|
} = chart.config;
|
|
252
|
-
const theme =
|
|
244
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
253
245
|
// Clear old annotation
|
|
254
246
|
const oldTitle = (_d3$select$select = d3.select(wrapper).select('.title')) === null || _d3$select$select === void 0 ? void 0 : _d3$select$select.node();
|
|
255
247
|
const oldText = (_d3$select$select2 = d3.select(wrapper).select('.text')) === null || _d3$select$select2 === void 0 ? void 0 : _d3$select$select2.node();
|
|
@@ -257,21 +249,21 @@ class Ring extends _chartComponent.default {
|
|
|
257
249
|
oldText && oldText.remove();
|
|
258
250
|
|
|
259
251
|
// Title
|
|
260
|
-
d3.select(wrapper).append('text').attr('class', 'title').text(name ? name :
|
|
252
|
+
d3.select(wrapper).append('text').attr('class', 'title').text(name ? name : intl.get('Total')).attr('fill', theme.annotationTitleFontColor).attr('font-size', theme.annotationFontSize).attr('font-weight', 300).attr('pointer-events', 'none').call(g => {
|
|
261
253
|
var _g$node;
|
|
262
254
|
const {
|
|
263
255
|
width
|
|
264
256
|
} = (_g$node = g.node()) === null || _g$node === void 0 ? void 0 : _g$node.getBoundingClientRect();
|
|
265
|
-
g.attr('transform',
|
|
257
|
+
g.attr('transform', `translate(${-(width / 2)}, ${-20})`);
|
|
266
258
|
});
|
|
267
259
|
|
|
268
260
|
// Text this.getLabel(value, percent)
|
|
269
|
-
d3.select(wrapper).append('text').attr('class', 'text').text(summaryColumn ?
|
|
261
|
+
d3.select(wrapper).append('text').attr('class', 'text').text(summaryColumn ? BaseUtils.getSummaryValueDisplayString(summaryColumn, value, summary_method) : value).attr('fill', theme.annotationValueFontColor).attr('font-size', theme.annotationFontSize).call(g => {
|
|
270
262
|
var _g$node2;
|
|
271
263
|
const {
|
|
272
264
|
width
|
|
273
265
|
} = (_g$node2 = g.node()) === null || _g$node2 === void 0 ? void 0 : _g$node2.getBoundingClientRect();
|
|
274
|
-
g.attr('transform',
|
|
266
|
+
g.attr('transform', `translate(${-(width / 2)}, ${10})`);
|
|
275
267
|
});
|
|
276
268
|
};
|
|
277
269
|
this.chart = null;
|
|
@@ -283,12 +275,12 @@ class Ring extends _chartComponent.default {
|
|
|
283
275
|
componentDidMount() {
|
|
284
276
|
this.createChart();
|
|
285
277
|
this.drawChart();
|
|
286
|
-
this.debouncedHandleResize =
|
|
278
|
+
this.debouncedHandleResize = debounce(this.handleResize, 300);
|
|
287
279
|
window.addEventListener('resize', this.debouncedHandleResize);
|
|
288
280
|
}
|
|
289
281
|
componentDidUpdate(prevProps) {
|
|
290
282
|
super.componentDidUpdate(prevProps);
|
|
291
|
-
if (
|
|
283
|
+
if (BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
|
|
292
284
|
this.destroyChart();
|
|
293
285
|
this.createChart();
|
|
294
286
|
this.drawChart();
|
|
@@ -303,10 +295,10 @@ class Ring extends _chartComponent.default {
|
|
|
303
295
|
tooltipData,
|
|
304
296
|
toolTipPosition
|
|
305
297
|
} = this.state;
|
|
306
|
-
return /*#__PURE__*/
|
|
298
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
307
299
|
ref: ref => this.container = ref,
|
|
308
300
|
className: "sea-chart-container"
|
|
309
|
-
}, /*#__PURE__*/
|
|
301
|
+
}, /*#__PURE__*/React.createElement(ToolTip, {
|
|
310
302
|
tooltipData: tooltipData,
|
|
311
303
|
toolTipPosition: toolTipPosition,
|
|
312
304
|
chart: this.chart
|
|
@@ -314,15 +306,15 @@ class Ring extends _chartComponent.default {
|
|
|
314
306
|
}
|
|
315
307
|
}
|
|
316
308
|
Ring.propTypes = {
|
|
317
|
-
canvasStyle:
|
|
318
|
-
chart:
|
|
319
|
-
groupbyColumn:
|
|
320
|
-
summaryColumn:
|
|
321
|
-
result:
|
|
322
|
-
tables:
|
|
323
|
-
globalTheme:
|
|
324
|
-
chartColorTheme:
|
|
325
|
-
toggleRecords:
|
|
326
|
-
customRender:
|
|
309
|
+
canvasStyle: PropTypes.object,
|
|
310
|
+
chart: PropTypes.object,
|
|
311
|
+
groupbyColumn: PropTypes.object,
|
|
312
|
+
summaryColumn: PropTypes.object,
|
|
313
|
+
result: PropTypes.array,
|
|
314
|
+
tables: PropTypes.array,
|
|
315
|
+
globalTheme: PropTypes.string,
|
|
316
|
+
chartColorTheme: PropTypes.string,
|
|
317
|
+
toggleRecords: PropTypes.func,
|
|
318
|
+
customRender: PropTypes.func
|
|
327
319
|
};
|
|
328
|
-
|
|
320
|
+
export default Ring;
|
|
@@ -1,23 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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 Scatter extends _chartComponent.default {
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { cloneDeep, debounce } from 'lodash-es';
|
|
4
|
+
import * as d3 from 'd3';
|
|
5
|
+
import classNames from 'classnames';
|
|
6
|
+
import { getTableById, getTableColumnByKey } from 'dtable-utils';
|
|
7
|
+
import { CHART_THEME_COLOR } from '../../constants';
|
|
8
|
+
import { BaseUtils, isFunction } from '../../utils';
|
|
9
|
+
import intl from '../../intl';
|
|
10
|
+
import ToolTip from '../../components/tooltip';
|
|
11
|
+
import ChartComponent from './chart-component';
|
|
12
|
+
class Scatter extends ChartComponent {
|
|
21
13
|
constructor(props) {
|
|
22
14
|
super(props);
|
|
23
15
|
this.handleResize = () => {
|
|
@@ -50,15 +42,15 @@ class Scatter extends _chartComponent.default {
|
|
|
50
42
|
let {
|
|
51
43
|
result: data
|
|
52
44
|
} = this.props;
|
|
53
|
-
data =
|
|
45
|
+
data = BaseUtils.formatEmptyName(data, '', intl.get('Empty'));
|
|
54
46
|
if (!Array.isArray(data)) return;
|
|
55
47
|
data = this.transformStringToNumber(data);
|
|
56
48
|
this.draw(data);
|
|
57
49
|
this.renderAxisLabel(this.props.chart, this.props.tables, this.container);
|
|
58
|
-
|
|
50
|
+
isFunction(customRender) && customRender(this.chart);
|
|
59
51
|
};
|
|
60
52
|
this.transformStringToNumber = data => {
|
|
61
|
-
const newData =
|
|
53
|
+
const newData = cloneDeep(data);
|
|
62
54
|
newData.forEach(item => {
|
|
63
55
|
if (item.original_value) {
|
|
64
56
|
var _item$original_value, _item$original_value2;
|
|
@@ -73,7 +65,7 @@ class Scatter extends _chartComponent.default {
|
|
|
73
65
|
chartColorTheme
|
|
74
66
|
} = this.props;
|
|
75
67
|
let currentIdx = 0;
|
|
76
|
-
let colors =
|
|
68
|
+
let colors = BaseUtils.getCurrentTheme(chartColorTheme).colors;
|
|
77
69
|
const colorMap = data.reduce((acc, cur) => {
|
|
78
70
|
if (cur.groupby && !acc[cur.groupby]) {
|
|
79
71
|
acc[cur.groupby] = colors[currentIdx++ % colors.length];
|
|
@@ -94,7 +86,7 @@ class Scatter extends _chartComponent.default {
|
|
|
94
86
|
} = event;
|
|
95
87
|
const newTooltipData = {
|
|
96
88
|
titleMarkColor: event.currentTarget.getAttribute('fill'),
|
|
97
|
-
title: groupby || groupby === 0 ? groupby :
|
|
89
|
+
title: groupby || groupby === 0 ? groupby : intl.get('Empty'),
|
|
98
90
|
items: [{
|
|
99
91
|
name: selectedXAxisColumn.name,
|
|
100
92
|
value: name
|
|
@@ -134,7 +126,7 @@ class Scatter extends _chartComponent.default {
|
|
|
134
126
|
const {
|
|
135
127
|
globalTheme
|
|
136
128
|
} = this.props;
|
|
137
|
-
const theme =
|
|
129
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
138
130
|
const contentWrapper = event.currentTarget.parentNode;
|
|
139
131
|
|
|
140
132
|
// Remove old mark line wrapper
|
|
@@ -187,7 +179,7 @@ class Scatter extends _chartComponent.default {
|
|
|
187
179
|
tables,
|
|
188
180
|
chartColorTheme
|
|
189
181
|
} = this.props;
|
|
190
|
-
const theme =
|
|
182
|
+
const theme = CHART_THEME_COLOR[globalTheme];
|
|
191
183
|
const {
|
|
192
184
|
label_font_size,
|
|
193
185
|
x_axis_column_key,
|
|
@@ -206,18 +198,18 @@ class Scatter extends _chartComponent.default {
|
|
|
206
198
|
bottomLegendSpace
|
|
207
199
|
} = this.chartBoundingClientRect;
|
|
208
200
|
const colorMap = this.getFillColor(data);
|
|
209
|
-
const selectedTable =
|
|
210
|
-
const selectedXAxisColumn =
|
|
211
|
-
const selectedYAxisColumn =
|
|
201
|
+
const selectedTable = getTableById(tables, table_id);
|
|
202
|
+
const selectedXAxisColumn = getTableColumnByKey(selectedTable, x_axis_column_key);
|
|
203
|
+
const selectedYAxisColumn = getTableColumnByKey(selectedTable, y_axis_column_key);
|
|
212
204
|
|
|
213
205
|
// Y axis
|
|
214
206
|
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 - bottomLegendSpace, insertPadding + marginTop]);
|
|
215
|
-
this.chart.append('g').attr('class', 'y-axis-wrapper').attr('transform',
|
|
207
|
+
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));
|
|
216
208
|
|
|
217
209
|
// X axis
|
|
218
210
|
const niceEnd = d3.nice(0, d3.max(data, d => d.name), 5)[1];
|
|
219
211
|
const x = d3.scaleLinear().domain([0, niceEnd]).range([insertPadding + this.horizontalOverflowOffset, chartWidth - insertPadding]);
|
|
220
|
-
this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform',
|
|
212
|
+
this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform', `translate(0, ${chartHeight - insertPadding - bottomLegendSpace})`).call(d3.axisBottom(x).tickSizeOuter(0).tickSizeInner(5).ticks(5).tickFormat(d => d)).call(g => {
|
|
221
213
|
g.selectAll('.domain').attr('stroke', theme.XAxisColor);
|
|
222
214
|
g.selectAll('.tick line').attr('stroke', theme.XAxisColor);
|
|
223
215
|
g.selectAll('text').attr('font-size', theme.fontSize);
|
|
@@ -238,7 +230,7 @@ class Scatter extends _chartComponent.default {
|
|
|
238
230
|
groupby
|
|
239
231
|
} = d;
|
|
240
232
|
if (groupby && groupby[0] === 'groupby') {
|
|
241
|
-
return
|
|
233
|
+
return BaseUtils.getCurrentTheme(chartColorTheme).colors[0];
|
|
242
234
|
}
|
|
243
235
|
return colorMap[d.groupby];
|
|
244
236
|
}).attr('data-x', d => x(d.name)).attr('data-y', d => y(d.value)).attr('data-value', d => d.value).attr('data-width', 3.5).attr('data-groupName', d => d.name).attr('cx', d => x(d.name)).attr('cy', d => y(d.value)).attr('r', 3.5).attr('opacity', 0.85).call(g => {
|
|
@@ -286,12 +278,12 @@ class Scatter extends _chartComponent.default {
|
|
|
286
278
|
componentDidMount() {
|
|
287
279
|
this.createChart();
|
|
288
280
|
this.drawChart();
|
|
289
|
-
this.debouncedHandleResize =
|
|
281
|
+
this.debouncedHandleResize = debounce(this.handleResize, 300);
|
|
290
282
|
window.addEventListener('resize', this.debouncedHandleResize);
|
|
291
283
|
}
|
|
292
284
|
componentDidUpdate(prevProps) {
|
|
293
285
|
super.componentDidUpdate(prevProps);
|
|
294
|
-
if (
|
|
286
|
+
if (BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
|
|
295
287
|
this.destroyChart();
|
|
296
288
|
this.createChart();
|
|
297
289
|
this.drawChart();
|
|
@@ -309,13 +301,13 @@ class Scatter extends _chartComponent.default {
|
|
|
309
301
|
tooltipData,
|
|
310
302
|
toolTipPosition
|
|
311
303
|
} = this.state;
|
|
312
|
-
return /*#__PURE__*/
|
|
304
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
313
305
|
ref: ref => this.container = ref,
|
|
314
|
-
className: (
|
|
306
|
+
className: classNames('sea-chart-container', {
|
|
315
307
|
'show-x-axis-label': this.isShowXAxisLabel(chart),
|
|
316
308
|
'show-y-axis-label': this.isShowYAxisLabel(chart)
|
|
317
309
|
})
|
|
318
|
-
}, /*#__PURE__*/
|
|
310
|
+
}, /*#__PURE__*/React.createElement(ToolTip, {
|
|
319
311
|
tooltipData: tooltipData,
|
|
320
312
|
toolTipPosition: toolTipPosition,
|
|
321
313
|
chart: this.chart
|
|
@@ -323,16 +315,16 @@ class Scatter extends _chartComponent.default {
|
|
|
323
315
|
}
|
|
324
316
|
}
|
|
325
317
|
Scatter.propTypes = {
|
|
326
|
-
canvasStyle:
|
|
327
|
-
chart:
|
|
328
|
-
groupbyColumn:
|
|
329
|
-
columnGroupbyColumn:
|
|
330
|
-
summaryColumn:
|
|
331
|
-
result:
|
|
332
|
-
tables:
|
|
333
|
-
globalTheme:
|
|
334
|
-
chartColorTheme:
|
|
335
|
-
toggleRecords:
|
|
336
|
-
customRender:
|
|
318
|
+
canvasStyle: PropTypes.object,
|
|
319
|
+
chart: PropTypes.object,
|
|
320
|
+
groupbyColumn: PropTypes.object,
|
|
321
|
+
columnGroupbyColumn: PropTypes.object,
|
|
322
|
+
summaryColumn: PropTypes.object,
|
|
323
|
+
result: PropTypes.array,
|
|
324
|
+
tables: PropTypes.array,
|
|
325
|
+
globalTheme: PropTypes.string,
|
|
326
|
+
chartColorTheme: PropTypes.string,
|
|
327
|
+
toggleRecords: PropTypes.func,
|
|
328
|
+
customRender: PropTypes.func
|
|
337
329
|
};
|
|
338
|
-
|
|
330
|
+
export default Scatter;
|
|
@@ -1,18 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.default = void 0;
|
|
9
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
-
var _intl = _interopRequireDefault(require("../../../intl"));
|
|
11
|
-
var _twoDimensionTable = _interopRequireDefault(require("./two-dimension-table"));
|
|
12
|
-
var _oneDimensionTableNoNumericColumns = _interopRequireDefault(require("./one-dimension-table-no-numeric-columns"));
|
|
13
|
-
var _oneDimensionTableWithNumericColumns = _interopRequireDefault(require("./one-dimension-table-with-numeric-columns"));
|
|
14
|
-
require("./index.css");
|
|
15
|
-
class Table extends _react.PureComponent {
|
|
1
|
+
import React, { PureComponent } from 'react';
|
|
2
|
+
import intl from '../../../intl';
|
|
3
|
+
import TwoDimensionTable from './two-dimension-table';
|
|
4
|
+
import OneDimensionTableNoNumericColumns from './one-dimension-table-no-numeric-columns';
|
|
5
|
+
import OneDimensionTableWithNumericColumns from './one-dimension-table-with-numeric-columns';
|
|
6
|
+
import './index.css';
|
|
7
|
+
class Table extends PureComponent {
|
|
16
8
|
constructor() {
|
|
17
9
|
super(...arguments);
|
|
18
10
|
this.toggleRecords = (cell, selectedCell) => {
|
|
@@ -31,20 +23,20 @@ class Table extends _react.PureComponent {
|
|
|
31
23
|
} = result;
|
|
32
24
|
if (!groupbyColumn) return null;
|
|
33
25
|
if (Array.isArray(pivot_columns) && pivot_columns.length > 100) {
|
|
34
|
-
return /*#__PURE__*/
|
|
26
|
+
return /*#__PURE__*/React.createElement("div", null, intl.get('There_are_too_many_statistics_entries_to_display'));
|
|
35
27
|
}
|
|
36
28
|
if (columnGroupbyColumn) {
|
|
37
|
-
return /*#__PURE__*/
|
|
29
|
+
return /*#__PURE__*/React.createElement(TwoDimensionTable, Object.assign({}, this.props, {
|
|
38
30
|
toggleRecords: this.toggleRecords
|
|
39
31
|
}));
|
|
40
32
|
}
|
|
41
33
|
if (!Array.isArray(pivot_columns)) return null;
|
|
42
34
|
if (pivot_columns.length < 2) {
|
|
43
|
-
return /*#__PURE__*/
|
|
35
|
+
return /*#__PURE__*/React.createElement(OneDimensionTableNoNumericColumns, Object.assign({}, this.props, {
|
|
44
36
|
toggleRecords: this.toggleRecords
|
|
45
37
|
}));
|
|
46
38
|
}
|
|
47
|
-
return /*#__PURE__*/
|
|
39
|
+
return /*#__PURE__*/React.createElement(OneDimensionTableWithNumericColumns, Object.assign({}, this.props, {
|
|
48
40
|
toggleRecords: this.toggleRecords
|
|
49
41
|
}));
|
|
50
42
|
};
|
|
@@ -53,9 +45,9 @@ class Table extends _react.PureComponent {
|
|
|
53
45
|
const {
|
|
54
46
|
result
|
|
55
47
|
} = this.props;
|
|
56
|
-
return /*#__PURE__*/
|
|
57
|
-
className:
|
|
48
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
49
|
+
className: `sea-chart-table-wrapper sea-chart-${result.dimensions}-table-wrapper`
|
|
58
50
|
}, this.renderContainer());
|
|
59
51
|
}
|
|
60
52
|
}
|
|
61
|
-
|
|
53
|
+
export default Table;
|