sea-chart 2.0.36 → 2.0.37
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 +59 -17
- package/dist/assets/css/sea-chart-d3-tooltip.css +1 -0
- package/dist/components/color-popover/color-rules-popover.js +2 -4
- package/dist/components/drill-down-settings/drill-down-fields-popover/index.js +4 -5
- package/dist/components/icon/index.js +13 -9
- package/dist/components/number-input/index.js +13 -7
- package/dist/components/popover/hide-column-popover/hide-column-popover-widgets/hide-column-item.js +3 -7
- package/dist/components/popover/hide-column-popover/hide-column-popover.css +1 -5
- package/dist/components/popover/hide-column-popover/hide-column-popover.js +4 -2
- package/dist/components/popover/sort-popover/sort-popover.js +7 -6
- package/dist/components/statistic-record-dialog/index.js +8 -9
- package/dist/components/tooltip/index.js +8 -26
- package/dist/editor/index.js +1 -5
- package/dist/locale/lang/de.js +0 -1
- package/dist/locale/lang/en.js +0 -1
- package/dist/locale/lang/es.js +0 -1
- package/dist/locale/lang/fr.js +0 -1
- package/dist/locale/lang/pt.js +0 -1
- package/dist/locale/lang/ru.js +0 -1
- package/dist/locale/lang/zh_CN.js +0 -1
- package/dist/model/funnel.js +2 -2
- package/dist/model/map-bubble.js +0 -4
- package/dist/services/map-json.js +0 -3
- package/dist/settings/advance-bar-settings/data-settings.js +1 -1
- package/dist/settings/advance-bar-settings/style-settings.js +3 -4
- package/dist/settings/bar-settings/data-settings.js +1 -1
- package/dist/settings/bar-settings/style-settings.js +2 -2
- package/dist/settings/basic-number-card/data-settings.js +2 -3
- package/dist/settings/combination-settings/data-settings.js +1 -0
- package/dist/settings/combination-settings/style-settings.js +2 -2
- package/dist/settings/dashboard-settings/data-settings.js +2 -3
- package/dist/settings/funnel-settings/components/funnel-layer-setting.js +7 -7
- package/dist/settings/index.js +3 -8
- package/dist/settings/table-element-settings/components/data-filter.js +25 -24
- package/dist/settings/table-element-settings/index.css +31 -1
- package/dist/settings/table-settings/data-settings.js +2 -3
- package/dist/settings/time-comparison-settings/style-settings.js +2 -2
- package/dist/settings/widgets/basic-summary/index.js +7 -8
- package/dist/settings/widgets/common-data-settings.js +6 -7
- package/dist/settings/widgets/data-filter/index.js +22 -30
- package/dist/settings/widgets/group-by.js +3 -4
- package/dist/settings/widgets/summary-settings.js +2 -3
- package/dist/settings/widgets/y-axis-group-settings.js +2 -3
- package/dist/utils/cell-format-utils.js +7 -9
- package/dist/utils/chart-utils/base-utils.js +86 -194
- package/dist/utils/chart-utils/index.js +3 -5
- package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +5 -5
- package/dist/utils/chart-utils/original-data-utils/card-calculator.js +2 -8
- package/dist/utils/chart-utils/original-data-utils/dashboard-calculator.js +3 -12
- package/dist/utils/chart-utils/original-data-utils/pivot-table-calculator.js +1 -4
- package/dist/utils/chart-utils/original-data-utils/scatter-calculator.js +0 -1
- package/dist/utils/chart-utils/original-data-utils/trend-calculator.js +3 -24
- package/dist/utils/chart-utils/sql-statistics-utils.js +177 -182
- package/dist/utils/column-utils.js +7 -20
- package/dist/utils/contexts.js +2 -5
- package/dist/utils/index.js +4 -25
- package/dist/utils/row-record-utils.js +20 -100
- package/dist/utils/sql/column-2-sql-column.js +10 -10
- package/dist/utils/trend-utils.js +2 -15
- package/dist/view/index.css +8 -2
- package/dist/view/index.js +9 -14
- package/dist/view/wrapper/area-group.js +7 -15
- package/dist/view/wrapper/bar-compare.js +2 -18
- package/dist/view/wrapper/bar-custom-stack.js +9 -35
- package/dist/view/wrapper/bar-group.js +26 -55
- package/dist/view/wrapper/bar-stack.js +2 -2
- package/dist/view/wrapper/basic-number-card.js +3 -27
- package/dist/view/wrapper/chart-component.js +440 -43
- package/dist/view/wrapper/completeness-group.js +49 -104
- package/dist/view/wrapper/dashboard.js +18 -68
- package/dist/view/wrapper/horizontal-bar-group.js +6 -26
- package/dist/view/wrapper/horizontal-bar-stack.js +2 -2
- package/dist/view/wrapper/line-group.js +3 -8
- package/dist/view/wrapper/map-world-bubble.js +0 -1
- package/dist/view/wrapper/map-world.js +0 -1
- package/dist/view/wrapper/pie.js +1 -1
- package/dist/view/wrapper/ring.js +1 -1
- package/dist/view/wrapper/scatter.js +6 -8
- package/dist/view/wrapper/table/two-dimension-table.js +2 -3
- package/dist/view/wrapper/table-element/components/records-header/index.js +1 -0
- package/dist/view/wrapper/table-element/components/resize-column-handle/resize-column-handle.js +1 -3
- package/dist/view/wrapper/table-element/index.js +21 -16
- package/dist/view/wrapper/trend.js +1 -24
- package/package.json +14 -17
|
@@ -12,7 +12,6 @@ var _dtableUtils = require("dtable-utils");
|
|
|
12
12
|
var _lodashEs = require("lodash-es");
|
|
13
13
|
var d3 = _interopRequireWildcard(require("d3"));
|
|
14
14
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
15
|
-
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
16
15
|
var _intl = _interopRequireDefault(require("../../intl"));
|
|
17
16
|
var _constants = require("../../constants");
|
|
18
17
|
var _utils = require("../../utils");
|
|
@@ -47,16 +46,12 @@ class BarGroup extends _chartComponent.default {
|
|
|
47
46
|
};
|
|
48
47
|
this.drawChart = () => {
|
|
49
48
|
const {
|
|
50
|
-
customRender
|
|
51
|
-
chart
|
|
49
|
+
customRender
|
|
52
50
|
} = this.props;
|
|
53
51
|
let {
|
|
54
52
|
result: data
|
|
55
53
|
} = this.props;
|
|
56
|
-
|
|
57
|
-
column_groupby_column_key
|
|
58
|
-
} = chart.config || {};
|
|
59
|
-
data = _utils.BaseUtils.formatEmptyName(data, column_groupby_column_key, _intl.default.get(_constants.EMPTY_NAME));
|
|
54
|
+
data = _utils.BaseUtils.formatEmptyName(data, '', _intl.default.get('Empty'));
|
|
60
55
|
if (!Array.isArray(data)) return;
|
|
61
56
|
this.draw(data);
|
|
62
57
|
this.renderAxisLabel(this.props.chart, this.props.tables, this.container);
|
|
@@ -102,8 +97,9 @@ class BarGroup extends _chartComponent.default {
|
|
|
102
97
|
|
|
103
98
|
// Y axis
|
|
104
99
|
this.chart.append('g').attr('class', 'y-axis-wrapper').attr('transform', "translate(".concat(insertPadding, ",0)")).call(d3.axisLeft(y).tickSizeInner(0).ticks(5).tickFormat(d => _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, d, y_axis_summary_method))).call(g => this.drawYaxis(g, theme));
|
|
105
|
-
const fx = d3.scaleBand().domain(new Set(data.map(d => d.name))).range([insertPadding + this.horizontalOverflowOffset, chartWidth - insertPadding]).paddingInner(0.
|
|
100
|
+
const fx = d3.scaleBand().domain(new Set(data.map(d => d.name))).range([insertPadding + this.horizontalOverflowOffset, chartWidth - insertPadding]).paddingInner(0.5).paddingOuter(0.1);
|
|
106
101
|
const sortedData = _utils.BaseUtils.sortDataByGroupName((0, _lodashEs.cloneDeep)(data), 'group_name', columnGroupbyColumn, chart);
|
|
102
|
+
const x = d3.scaleBand().domain(new Set(sortedData.map(d => d.group_name))).range([0, fx.bandwidth()]).paddingInner(0).paddingOuter(0);
|
|
107
103
|
|
|
108
104
|
// X axis
|
|
109
105
|
this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform', "translate(0,".concat(chartHeight - insertPadding, ")")).call(d3.axisBottom(fx).tickSizeOuter(0).tickSizeInner(5)).call(g => {
|
|
@@ -115,51 +111,31 @@ class BarGroup extends _chartComponent.default {
|
|
|
115
111
|
});
|
|
116
112
|
|
|
117
113
|
// Rect group
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
return "translate(".concat(fx(name), ",0)");
|
|
123
|
-
})
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
borderRadius
|
|
131
|
-
} = this.chartBoundingClientRect;
|
|
132
|
-
const rectNodes = rectSelection.nodes();
|
|
133
|
-
const validRectNodes = rectNodes.filter(rect => {
|
|
134
|
-
const rectWidth = Number(rect.getAttribute('width'));
|
|
135
|
-
const rectHeight = Number(rect.getAttribute('height'));
|
|
136
|
-
return rectWidth > 0 && rectHeight > 0;
|
|
137
|
-
});
|
|
138
|
-
let groupBorderRadius;
|
|
139
|
-
if (validRectNodes.length > 0) {
|
|
140
|
-
groupBorderRadius = Infinity;
|
|
141
|
-
validRectNodes.forEach(rect => {
|
|
142
|
-
const rectWidth = Number(rect.getAttribute('width'));
|
|
143
|
-
const rectHeight = Number(rect.getAttribute('height'));
|
|
144
|
-
const computedBorderRadius = Math.min(rectWidth * borderRadius, rectHeight / 2, rectWidth / 2);
|
|
145
|
-
groupBorderRadius = Math.min(groupBorderRadius, computedBorderRadius);
|
|
146
|
-
});
|
|
147
|
-
if (!Number.isFinite(groupBorderRadius)) {
|
|
148
|
-
groupBorderRadius = 0;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
rectNodes.forEach(rect => {
|
|
114
|
+
this.chart.append('g').attr('class', 'content-wrapper').selectAll().data(d3.group(sortedData, d => d.name)).join('g').attr('transform', _ref => {
|
|
115
|
+
let [name, dum] = _ref;
|
|
116
|
+
// Each group is horizontally centered
|
|
117
|
+
const offset = (fx.bandwidth() - dum.length * x.bandwidth()) / 2;
|
|
118
|
+
return "translate(".concat(fx(name) + offset, ",0)");
|
|
119
|
+
})
|
|
120
|
+
// rect item
|
|
121
|
+
.selectAll().data(_ref2 => {
|
|
122
|
+
let [_, d] = _ref2;
|
|
123
|
+
return d;
|
|
124
|
+
}).join('rect').attr('opacity', 1).attr('x', (d, index) => index * x.bandwidth()).attr('y', d => y(d.value)).attr('width', x.bandwidth()).attr('height', d => y(0) - y(d.value)).attr('fill', d => this.colorMap[d.group_name] || _constants.CHART_STYLE_COLORS[0]).attr('data-value', d => d.value).attr('data-groupName', d => d.name).attr('data-slugid', d => d.slugId).call(g => {
|
|
125
|
+
g.nodes().forEach(rect => {
|
|
152
126
|
const parentNode = rect.parentNode;
|
|
127
|
+
// add rect borderRadius
|
|
153
128
|
this.addClipPath({
|
|
154
129
|
rect,
|
|
155
130
|
parentNode,
|
|
156
|
-
rectId: rect.getAttribute('data-slugid')
|
|
157
|
-
borderRadiusVal: Number.isFinite(groupBorderRadius) ? groupBorderRadius : undefined
|
|
131
|
+
rectId: rect.getAttribute('data-slugid')
|
|
158
132
|
});
|
|
133
|
+
|
|
134
|
+
// Add label
|
|
159
135
|
if (y_axis_show_value) {
|
|
160
136
|
this.addLabelToRectTop({
|
|
161
137
|
container: parentNode,
|
|
162
|
-
xWidth: Number(
|
|
138
|
+
xWidth: Number(x.bandwidth()),
|
|
163
139
|
x: Number(rect.getAttribute('x')),
|
|
164
140
|
y: Number(rect.getAttribute('y')),
|
|
165
141
|
theme,
|
|
@@ -168,15 +144,14 @@ class BarGroup extends _chartComponent.default {
|
|
|
168
144
|
});
|
|
169
145
|
}
|
|
170
146
|
});
|
|
171
|
-
})
|
|
172
|
-
contentWrapper.selectAll('rect').on('click', (event, data) => {
|
|
147
|
+
}).on('click', (event, data) => {
|
|
173
148
|
this.props.toggleRecords(data);
|
|
174
149
|
}).on('mouseover', event => {
|
|
175
150
|
this.showTooltip(event);
|
|
176
151
|
this.handleAcitveAndInActiveState('inActive', event);
|
|
177
152
|
}).on('mousemove', event => {
|
|
178
153
|
this.moveTooltip(event);
|
|
179
|
-
}).on('mouseleave', event => {
|
|
154
|
+
}).on('mouseleave', (event, data) => {
|
|
180
155
|
this.hiddenTooltip();
|
|
181
156
|
this.handleAcitveAndInActiveState('active', event);
|
|
182
157
|
});
|
|
@@ -193,7 +168,6 @@ class BarGroup extends _chartComponent.default {
|
|
|
193
168
|
});
|
|
194
169
|
};
|
|
195
170
|
this.showTooltip = event => {
|
|
196
|
-
var _this$props$columnGro;
|
|
197
171
|
const {
|
|
198
172
|
summaryColumn,
|
|
199
173
|
chart
|
|
@@ -201,21 +175,18 @@ class BarGroup extends _chartComponent.default {
|
|
|
201
175
|
const {
|
|
202
176
|
y_axis_summary_method
|
|
203
177
|
} = chart.config;
|
|
204
|
-
const isGroupByDate = [_dtableUtils.CellType.DATE, _dtableUtils.CellType.CTIME, _dtableUtils.CellType.MTIME].includes((_this$props$columnGro = this.props.columnGroupbyColumn) === null || _this$props$columnGro === void 0 ? void 0 : _this$props$columnGro.type);
|
|
205
178
|
const {
|
|
206
179
|
offsetX,
|
|
207
180
|
offsetY
|
|
208
181
|
} = event;
|
|
209
182
|
const curGroup = event.target.parentNode;
|
|
210
|
-
|
|
183
|
+
const [curGroupName, data] = curGroup.__data__;
|
|
211
184
|
const newTooltipData = {
|
|
212
185
|
title: !curGroupName && typeof curGroupName !== 'number' ? _intl.default.get(_constants.EMPTY_NAME) : curGroupName,
|
|
213
186
|
items: data.map(item => {
|
|
214
|
-
const rawGroupName = item.group_name;
|
|
215
|
-
const groupName = rawGroupName === null || rawGroupName === undefined || rawGroupName === '' ? _intl.default.get(_constants.EMPTY_NAME) : isGroupByDate ? (0, _dayjs.default)(rawGroupName).format('YYYY-MM-DD') : rawGroupName;
|
|
216
187
|
return {
|
|
217
|
-
color: this.colorMap[
|
|
218
|
-
name:
|
|
188
|
+
color: this.colorMap[item.group_name],
|
|
189
|
+
name: item.group_name,
|
|
219
190
|
value: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(item.value), y_axis_summary_method)
|
|
220
191
|
};
|
|
221
192
|
})
|
|
@@ -56,7 +56,7 @@ class BarStack extends _chartComponent.default {
|
|
|
56
56
|
let {
|
|
57
57
|
result: data
|
|
58
58
|
} = this.props;
|
|
59
|
-
data = _utils.BaseUtils.formatEmptyName(data,
|
|
59
|
+
data = _utils.BaseUtils.formatEmptyName(data, '', _intl.default.get('Empty'));
|
|
60
60
|
if (!Array.isArray(data)) return;
|
|
61
61
|
sort_type && (data = (0, _columnUtils.sortDataByGroupSum)(data, sort_type));
|
|
62
62
|
this.draw(data);
|
|
@@ -103,7 +103,7 @@ class BarStack extends _chartComponent.default {
|
|
|
103
103
|
const series = d3.stack().keys(d3.union(sortedData.map(d => d.group_name))).value((_ref, key) => {
|
|
104
104
|
var _group$get;
|
|
105
105
|
let [_, group] = _ref;
|
|
106
|
-
return (
|
|
106
|
+
return (_group$get = group.get(String(key))) === null || _group$get === void 0 ? void 0 : _group$get.value;
|
|
107
107
|
})(d3.index(sortedData, d => d.name, d => d.group_name));
|
|
108
108
|
const niceEnd = d3.nice(0, d3.max(series, d => d3.max(d, d => d[1])), 5)[1];
|
|
109
109
|
const y = d3.scaleLinear().domain(y_axis_auto_range ? [0, niceEnd] : [y_axis_min, y_axis_max]).range([chartHeight - insertPadding, insertPadding + marginTop]);
|
|
@@ -32,24 +32,6 @@ class BasicNumericCard extends _react.Component {
|
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
};
|
|
35
|
-
this.handleClickNumber = () => {
|
|
36
|
-
const {
|
|
37
|
-
toggleRecords,
|
|
38
|
-
result
|
|
39
|
-
} = this.props;
|
|
40
|
-
if (!toggleRecords) return;
|
|
41
|
-
if (typeof result === 'object' && result !== null && result.rows) {
|
|
42
|
-
// isCalculateByView = true: use rows of base
|
|
43
|
-
toggleRecords({
|
|
44
|
-
rows: result.rows
|
|
45
|
-
});
|
|
46
|
-
} else {
|
|
47
|
-
// isCalculateByView = false: use rows of sql query
|
|
48
|
-
toggleRecords({
|
|
49
|
-
isQueryBySql: true
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
35
|
this.formatData = data => {
|
|
54
36
|
if (!data && data !== 0) return _intl.default.get(_constants.EMPTY_NAME);
|
|
55
37
|
const {
|
|
@@ -124,12 +106,11 @@ class BasicNumericCard extends _react.Component {
|
|
|
124
106
|
label_text_align,
|
|
125
107
|
label_font_weight
|
|
126
108
|
} = config;
|
|
127
|
-
const numericValue = typeof result === 'object' && result !== null ? result.value : result;
|
|
128
109
|
let content = null;
|
|
129
110
|
if (summary_method === 'Distinct_values') {
|
|
130
|
-
content = (0, _dtableUtils.isNumber)(
|
|
111
|
+
content = (0, _dtableUtils.isNumber)(result) ? result : 0;
|
|
131
112
|
} else {
|
|
132
|
-
content = this.formatData(
|
|
113
|
+
content = this.formatData(result);
|
|
133
114
|
}
|
|
134
115
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
135
116
|
className: "sea-chart-container plugin-number-card"
|
|
@@ -152,12 +133,7 @@ class BasicNumericCard extends _react.Component {
|
|
|
152
133
|
fontWeight: "".concat(font_weight),
|
|
153
134
|
color: "".concat(font_color)
|
|
154
135
|
}
|
|
155
|
-
}, /*#__PURE__*/_react.default.createElement("
|
|
156
|
-
onClick: this.handleClickNumber,
|
|
157
|
-
style: {
|
|
158
|
-
cursor: 'pointer'
|
|
159
|
-
}
|
|
160
|
-
}, content)), /*#__PURE__*/_react.default.createElement("p", {
|
|
136
|
+
}, content), /*#__PURE__*/_react.default.createElement("p", {
|
|
161
137
|
ref: ref => this.labelRef = ref,
|
|
162
138
|
style: {
|
|
163
139
|
position: 'absolute',
|