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
|
@@ -39,11 +39,10 @@ class Completeness extends _chartComponent.default {
|
|
|
39
39
|
this.initChart(this.container, chart === null || chart === void 0 ? void 0 : chart.id, initConfig);
|
|
40
40
|
};
|
|
41
41
|
this.drawChart = () => {
|
|
42
|
-
var _this$props$chart, _this$props$chart$con;
|
|
43
42
|
let {
|
|
44
43
|
result: data
|
|
45
44
|
} = this.props;
|
|
46
|
-
data = _utils.BaseUtils.formatEmptyName(data,
|
|
45
|
+
data = _utils.BaseUtils.formatEmptyName(data, '', _intl.default.get('Empty'));
|
|
47
46
|
if (!Array.isArray(data)) return;
|
|
48
47
|
this.draw(data);
|
|
49
48
|
};
|
|
@@ -71,20 +70,12 @@ class Completeness extends _chartComponent.default {
|
|
|
71
70
|
} = this.chartBoundingClientRect;
|
|
72
71
|
this.markLastForCompleteness(data);
|
|
73
72
|
const colors = _utils.BaseUtils.getCurrentTheme(chartColorTheme).colors;
|
|
74
|
-
// Normalize groupby to string before setColorMap to ensure consistent keys
|
|
75
|
-
data.forEach(item => {
|
|
76
|
-
if (Array.isArray(item.groupby)) {
|
|
77
|
-
item.groupby = item.groupby.join(', ');
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
73
|
this.setColorMap(data, chartColorTheme, 'groupby', columnGroupbyColumn, chart);
|
|
81
74
|
const newSeries = this.getGroupSeries(data, columnGroupbyColumn, chart);
|
|
82
75
|
|
|
83
76
|
// Y axis
|
|
84
77
|
const fy = d3.scaleBand().domain(newSeries.map(item => item[0])).range([chartHeight - insertPadding, insertPadding]).paddingInner(0.5).paddingOuter(0.1);
|
|
85
|
-
|
|
86
|
-
// y scale will be created per main group (local) to avoid overlap
|
|
87
|
-
|
|
78
|
+
const y = d3.scaleBand().domain(new Set(data.map(d => d.groupby))).range([0, fy.bandwidth()]).paddingInner(0).paddingOuter(0);
|
|
88
79
|
const yAxis = this.chart.append('g').attr('class', 'y-axis-wrapper').call(d3.axisLeft(fy).tickSizeOuter(0).tickPadding(0).tickSizeInner(5)).call(g => {
|
|
89
80
|
g.selectAll('.domain').attr('stroke', theme.XAxisColor);
|
|
90
81
|
g.selectAll('.tick line').attr('stroke', theme.XAxisColor);
|
|
@@ -112,64 +103,38 @@ class Completeness extends _chartComponent.default {
|
|
|
112
103
|
|
|
113
104
|
// Rect group
|
|
114
105
|
const contentWrapper = this.chart.append('g').attr('class', 'content-wrapper').attr('transform', "translate(".concat(Number(yAxis.node().getAttribute('data-axisWidth')), ", 0)"));
|
|
115
|
-
|
|
116
|
-
let [name] = _ref;
|
|
117
|
-
|
|
106
|
+
contentWrapper.selectAll().data(newSeries).join('g').attr('transform', _ref => {
|
|
107
|
+
let [name, dum] = _ref;
|
|
108
|
+
const offset = (fy.bandwidth() - dum.length * y.bandwidth()) / 2;
|
|
109
|
+
return "translate(0, ".concat(fy(name) + offset, ")");
|
|
118
110
|
}).attr('data-transform', _ref2 => {
|
|
119
|
-
let [name] = _ref2;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
let [_,
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
return "".concat(Math.round(completedValue / targetValue * 100), "%");
|
|
147
|
-
}).selectAll().data(_ref6 => {
|
|
148
|
-
let [_, d] = _ref6;
|
|
149
|
-
return d;
|
|
150
|
-
}).join('rect').attr('class', 'rect').attr('opacity', 1).attr('x', d => x(d[0]) - Number(yAxis.node().getAttribute('data-axisWidth'))).attr('y', d => localY(d.groupby)).attr('data-y', d => localY(d.groupby)).attr('width', d => x(d[1]) - x(d[0])).attr('height', localY.bandwidth()).attr('fill', d => {
|
|
151
|
-
const key = d.key;
|
|
152
|
-
const groupby = d.groupby;
|
|
153
|
-
if (key === 'rest') {
|
|
154
|
-
return '#bdbdbd';
|
|
155
|
-
}
|
|
156
|
-
if (column_groupby_column_key) {
|
|
157
|
-
return colorMap[groupby];
|
|
158
|
-
}
|
|
159
|
-
return colors[0];
|
|
160
|
-
}).attr('data-value', d => d.rawData.value).attr('data-groupName', d => d.rawData.slugId).attr('data-tooltipTitle', d => d.rawData.name).attr('data-tooltipName', d => d.key).attr('data-groupBy', d => d.groupby).on('click', (event, data) => {
|
|
161
|
-
self.props.toggleRecords(data);
|
|
162
|
-
}).on('mouseover', event => {
|
|
163
|
-
self.showTooltip(event);
|
|
164
|
-
self.handleAcitveAndInActiveState('inActive', event);
|
|
165
|
-
}).on('mousemove', event => {
|
|
166
|
-
self.moveTooltip(event);
|
|
167
|
-
}).on('mouseleave', event => {
|
|
168
|
-
self.hiddenTooltip();
|
|
169
|
-
self.handleAcitveAndInActiveState('active', event);
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
mainGroups.call(g => {
|
|
111
|
+
let [name, dum] = _ref2;
|
|
112
|
+
const offset = (fy.bandwidth() - dum.length * y.bandwidth()) / 2;
|
|
113
|
+
return "".concat(fy(name) + offset);
|
|
114
|
+
}).selectAll().data(_ref3 => {
|
|
115
|
+
let [groupKey] = _ref3;
|
|
116
|
+
const curSeriesData = newSeries.find(item => item[0] === groupKey);
|
|
117
|
+
return curSeriesData[1];
|
|
118
|
+
}).join('g').attr('data-completedRate', _ref4 => {
|
|
119
|
+
let [_, d] = _ref4;
|
|
120
|
+
const restData = d.find(item => item.rawData.group_name === 'rest');
|
|
121
|
+
const completedRate = restData.rawData.completedRate;
|
|
122
|
+
if (completedRate === 'empty') return '';
|
|
123
|
+
return completedRate + '%';
|
|
124
|
+
}).selectAll().data(_ref5 => {
|
|
125
|
+
let [_, d] = _ref5;
|
|
126
|
+
return d;
|
|
127
|
+
}).join('rect').attr('class', 'rect').attr('opacity', 1).attr('x', d => x(d[0]) - Number(yAxis.node().getAttribute('data-axisWidth'))).attr('y', d => y.bandwidth() * d.serieIndex).attr('data-y', d => y.bandwidth() * d.serieIndex).attr('width', d => x(d[1]) - x(d[0])).attr('height', y.bandwidth()).attr('fill', d => {
|
|
128
|
+
const key = d.key;
|
|
129
|
+
const groupby = d.rawData.groupby;
|
|
130
|
+
if (key === 'rest') {
|
|
131
|
+
return '#bdbdbd';
|
|
132
|
+
}
|
|
133
|
+
if (column_groupby_column_key) {
|
|
134
|
+
return this.colorMap[groupby];
|
|
135
|
+
}
|
|
136
|
+
return colors[0];
|
|
137
|
+
}).attr('data-value', d => d.rawData.value).attr('data-groupName', d => d.rawData.slugId).attr('data-tooltipTitle', d => d.rawData.name).attr('data-tooltipName', d => d.key).attr('data-groupBy', d => d.rawData.groupby).call(g => {
|
|
173
138
|
// add rect borderRadius
|
|
174
139
|
const allGroup = this.getAllGroup(contentWrapper);
|
|
175
140
|
allGroup.forEach(group => {
|
|
@@ -198,6 +163,16 @@ class Completeness extends _chartComponent.default {
|
|
|
198
163
|
});
|
|
199
164
|
});
|
|
200
165
|
}
|
|
166
|
+
}).on('click', (event, data) => {
|
|
167
|
+
this.props.toggleRecords(data);
|
|
168
|
+
}).on('mouseover', event => {
|
|
169
|
+
this.showTooltip(event);
|
|
170
|
+
this.handleAcitveAndInActiveState('inActive', event);
|
|
171
|
+
}).on('mousemove', event => {
|
|
172
|
+
this.moveTooltip(event);
|
|
173
|
+
}).on('mouseleave', (event, data) => {
|
|
174
|
+
this.hiddenTooltip();
|
|
175
|
+
this.handleAcitveAndInActiveState('active', event);
|
|
201
176
|
});
|
|
202
177
|
this.setLegend({
|
|
203
178
|
legendName: 'groupby',
|
|
@@ -280,64 +255,34 @@ class Completeness extends _chartComponent.default {
|
|
|
280
255
|
};
|
|
281
256
|
this.getGroupSeries = (data, columnGroupbyColumn, chart) => {
|
|
282
257
|
const sortedData = _utils.BaseUtils.sortDataByGroupName((0, _lodashEs.cloneDeep)(data), 'groupby', columnGroupbyColumn, chart);
|
|
283
|
-
sortedData.forEach(item => {
|
|
284
|
-
if (Array.isArray(item.groupby)) {
|
|
285
|
-
item.groupby = item.groupby.join(', ');
|
|
286
|
-
}
|
|
287
|
-
});
|
|
288
258
|
const groups = d3.groups(sortedData, d => d.name);
|
|
289
|
-
// Sort main groups by name for stable order
|
|
290
|
-
groups.sort((a, b) => String(a[0]).localeCompare(String(b[0])));
|
|
291
259
|
groups.forEach((item, index) => {
|
|
292
260
|
const itemData = (0, _lodashEs.cloneDeep)(item[1]);
|
|
293
|
-
const valueMap = d3.rollup(itemData, v => d3.sum(v, d => d.value), d => d.groupby, d => d.group_name);
|
|
294
|
-
const rawDataMap = d3.rollup(itemData, v => v[0], d => d.groupby, d => d.group_name);
|
|
295
261
|
|
|
296
262
|
// get series
|
|
297
|
-
const series = d3.stack().keys(d3.union(itemData.map(d => d.group_name))).value((
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
263
|
+
const series = d3.stack().keys(d3.union(itemData.map(d => d.group_name))).value((_ref6, key) => {
|
|
264
|
+
var _group$get;
|
|
265
|
+
let [_, group] = _ref6;
|
|
266
|
+
return ((_group$get = group.get(String(key))) === null || _group$get === void 0 ? void 0 : _group$get.value) || 0;
|
|
267
|
+
})(d3.index(itemData, d => d.groupby, d => d.group_name));
|
|
301
268
|
item[1] = d3.groups(itemData, d => d.groupby);
|
|
302
|
-
// Sort sub groups by groupby for stable order
|
|
303
|
-
item[1].sort((a, b) => String(a[0]).localeCompare(String(b[0])));
|
|
304
269
|
item[1].forEach((group, index) => {
|
|
305
|
-
var _completedItem$rawDat2, _restItem$rawData2;
|
|
306
270
|
const groupKey = group[0];
|
|
307
271
|
group[1] = [];
|
|
308
272
|
series.forEach(serie => {
|
|
309
273
|
const serieKey = serie.key;
|
|
310
274
|
serie.forEach(item => {
|
|
311
275
|
if (item.data[0] === groupKey) {
|
|
312
|
-
var _valueMap$get, _rawDataMap$get;
|
|
313
|
-
const aggregatedValue = ((_valueMap$get = valueMap.get(groupKey)) === null || _valueMap$get === void 0 ? void 0 : _valueMap$get.get(serieKey)) || 0;
|
|
314
|
-
const rawData = (_rawDataMap$get = rawDataMap.get(groupKey)) === null || _rawDataMap$get === void 0 ? void 0 : _rawDataMap$get.get(serieKey);
|
|
315
276
|
const newItem = {
|
|
316
277
|
...item,
|
|
317
278
|
key: serieKey,
|
|
318
279
|
serieIndex: index,
|
|
319
|
-
|
|
320
|
-
rawData: {
|
|
321
|
-
...(rawData || {}),
|
|
322
|
-
value: aggregatedValue,
|
|
323
|
-
groupby: groupKey,
|
|
324
|
-
group_name: serieKey
|
|
325
|
-
}
|
|
280
|
+
rawData: item.data[1].get(serieKey)
|
|
326
281
|
};
|
|
327
282
|
group[1].push(newItem);
|
|
328
283
|
}
|
|
329
284
|
});
|
|
330
285
|
});
|
|
331
|
-
const completedItem = group[1].find(d => d.key === 'completed');
|
|
332
|
-
const restItem = group[1].find(d => d.key === 'rest');
|
|
333
|
-
const completedValue = completedItem ? Number(((_completedItem$rawDat2 = completedItem.rawData) === null || _completedItem$rawDat2 === void 0 ? void 0 : _completedItem$rawDat2.value) || 0) : 0;
|
|
334
|
-
const restValue = restItem ? Number(((_restItem$rawData2 = restItem.rawData) === null || _restItem$rawData2 === void 0 ? void 0 : _restItem$rawData2.value) || 0) : 0;
|
|
335
|
-
const targetValue = completedValue + restValue;
|
|
336
|
-
if (!targetValue) {
|
|
337
|
-
restItem && (restItem.rawData.completedRate = 'empty');
|
|
338
|
-
} else {
|
|
339
|
-
restItem && (restItem.rawData.completedRate = Math.round(completedValue / targetValue * 100));
|
|
340
|
-
}
|
|
341
286
|
let sumValue = 0;
|
|
342
287
|
group[1].forEach(g => {
|
|
343
288
|
sumValue = sumValue + g[1];
|
|
@@ -17,28 +17,6 @@ var _chartComponent = _interopRequireDefault(require("./chart-component"));
|
|
|
17
17
|
class Dashboard extends _chartComponent.default {
|
|
18
18
|
constructor(props) {
|
|
19
19
|
super(props);
|
|
20
|
-
this.handleClickNumber = () => {
|
|
21
|
-
const {
|
|
22
|
-
toggleRecords,
|
|
23
|
-
result
|
|
24
|
-
} = this.props;
|
|
25
|
-
if (!toggleRecords) return;
|
|
26
|
-
if (typeof result === 'object' && result !== null && result.rows) {
|
|
27
|
-
toggleRecords({
|
|
28
|
-
rows: result.rows
|
|
29
|
-
});
|
|
30
|
-
} else {
|
|
31
|
-
toggleRecords({
|
|
32
|
-
isQueryBySql: true
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
};
|
|
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
20
|
this.handleResize = () => {
|
|
43
21
|
this.destroyChart();
|
|
44
22
|
this.createChart();
|
|
@@ -174,55 +152,21 @@ class Dashboard extends _chartComponent.default {
|
|
|
174
152
|
const {
|
|
175
153
|
height: chartHeight
|
|
176
154
|
} = this.chartBoundingClientRect;
|
|
177
|
-
const {
|
|
178
|
-
toggleRecords
|
|
179
|
-
} = this.props;
|
|
180
|
-
const {
|
|
181
|
-
font_size,
|
|
182
|
-
font_color,
|
|
183
|
-
font_weight,
|
|
184
|
-
text_align,
|
|
185
|
-
card_label_font_size,
|
|
186
|
-
label_font_color,
|
|
187
|
-
label_text_align,
|
|
188
|
-
label_font_weight
|
|
189
|
-
} = chart.config;
|
|
190
|
-
const {
|
|
191
|
-
width: chartWidth,
|
|
192
|
-
height: fullChartHeight
|
|
193
|
-
} = this.chartBoundingClientRect;
|
|
194
|
-
const radius = Math.min(chartWidth, fullChartHeight) / 2 * 0.75;
|
|
195
|
-
const alignOffset = radius * 0.25;
|
|
196
|
-
const getTextAnchorAndX = align => {
|
|
197
|
-
const v = (align || '').toLowerCase();
|
|
198
|
-
if (v === 'left') {
|
|
199
|
-
return {
|
|
200
|
-
textAnchor: 'end',
|
|
201
|
-
x: -alignOffset
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
if (v === 'right') {
|
|
205
|
-
return {
|
|
206
|
-
textAnchor: 'start',
|
|
207
|
-
x: alignOffset
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
return {
|
|
211
|
-
textAnchor: 'middle',
|
|
212
|
-
x: 0
|
|
213
|
-
};
|
|
214
|
-
};
|
|
215
|
-
const titleAlign = getTextAnchorAndX(label_text_align);
|
|
216
|
-
const numberAlign = getTextAnchorAndX(text_align);
|
|
217
155
|
const totalWrapper = d3.select(wrapper).append('g').attr('class', 'total-wrapper');
|
|
218
156
|
// title
|
|
219
|
-
totalWrapper.append('text').attr('fill',
|
|
157
|
+
totalWrapper.append('text').attr('fill', '#545454').attr('font-size', chartHeight > 240 ? 20 : 12).text(name).attr('dy', 50).call(g => {
|
|
158
|
+
const {
|
|
159
|
+
width
|
|
160
|
+
} = g.node().getBoundingClientRect();
|
|
161
|
+
g.attr('dx', "".concat(-(width / 2)));
|
|
162
|
+
});
|
|
220
163
|
|
|
221
164
|
// total
|
|
222
|
-
totalWrapper.append('text').attr('fill',
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
}
|
|
165
|
+
totalWrapper.append('text').attr('fill', theme.textColor).attr('font-size', chartHeight > 240 ? 36 : 16).text("".concat(formatValue, "%")).attr('dx', -10).attr('dy', 90).call(g => {
|
|
166
|
+
const {
|
|
167
|
+
width
|
|
168
|
+
} = g.node().getBoundingClientRect();
|
|
169
|
+
g.attr('dx', "".concat(-(width / 2)));
|
|
226
170
|
});
|
|
227
171
|
};
|
|
228
172
|
this.chart = null;
|
|
@@ -231,6 +175,12 @@ class Dashboard extends _chartComponent.default {
|
|
|
231
175
|
toolTipPosition: null
|
|
232
176
|
};
|
|
233
177
|
}
|
|
178
|
+
componentDidMount() {
|
|
179
|
+
this.createChart();
|
|
180
|
+
this.drawChart();
|
|
181
|
+
this.debouncedHandleResize = (0, _lodashEs.debounce)(this.handleResize, 300);
|
|
182
|
+
window.addEventListener('resize', this.debouncedHandleResize);
|
|
183
|
+
}
|
|
234
184
|
componentDidUpdate(prevProps) {
|
|
235
185
|
super.componentDidUpdate(prevProps);
|
|
236
186
|
if (_utils.BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
|
|
@@ -263,7 +213,7 @@ Dashboard.propTypes = {
|
|
|
263
213
|
chart: _propTypes.default.object,
|
|
264
214
|
groupbyColumn: _propTypes.default.object,
|
|
265
215
|
summaryColumn: _propTypes.default.object,
|
|
266
|
-
result: _propTypes.default.
|
|
216
|
+
result: _propTypes.default.number,
|
|
267
217
|
tables: _propTypes.default.array,
|
|
268
218
|
globalTheme: _propTypes.default.string,
|
|
269
219
|
chartColorTheme: _propTypes.default.string,
|
|
@@ -12,7 +12,6 @@ var _lodashEs = require("lodash-es");
|
|
|
12
12
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
13
|
var d3 = _interopRequireWildcard(require("d3"));
|
|
14
14
|
var _dtableUtils = require("dtable-utils");
|
|
15
|
-
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
16
15
|
var _constants = require("../../constants");
|
|
17
16
|
var _utils = require("../../utils");
|
|
18
17
|
var _intl = _interopRequireDefault(require("../../intl"));
|
|
@@ -52,10 +51,7 @@ class HorizontalBarGroup extends _chartComponent.default {
|
|
|
52
51
|
customRender,
|
|
53
52
|
chart
|
|
54
53
|
} = this.props;
|
|
55
|
-
|
|
56
|
-
column_groupby_column_key
|
|
57
|
-
} = chart.config || {};
|
|
58
|
-
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'));
|
|
59
55
|
if (!Array.isArray(data)) return;
|
|
60
56
|
const {
|
|
61
57
|
sort_type,
|
|
@@ -96,24 +92,9 @@ class HorizontalBarGroup extends _chartComponent.default {
|
|
|
96
92
|
marginRight
|
|
97
93
|
} = this.chartBoundingClientRect;
|
|
98
94
|
const groupByColumn = this.getColumn(tables, table_id, column_groupby_column_key);
|
|
99
|
-
const isGroupByDate = [_dtableUtils.CellType.DATE, _dtableUtils.CellType.CTIME, _dtableUtils.CellType.MTIME].includes(groupByColumn === null || groupByColumn === void 0 ? void 0 : groupByColumn.type);
|
|
100
|
-
if (isGroupByDate) {
|
|
101
|
-
const emptyName = _intl.default.get(_constants.EMPTY_NAME);
|
|
102
|
-
data = data.map(item => {
|
|
103
|
-
const rawGroupName = item.group_name;
|
|
104
|
-
if (rawGroupName === null || rawGroupName === undefined || rawGroupName === '') return item;
|
|
105
|
-
if (rawGroupName === emptyName) return item;
|
|
106
|
-
const dateValue = (0, _dayjs.default)(rawGroupName);
|
|
107
|
-
if (!dateValue.isValid()) return item;
|
|
108
|
-
return {
|
|
109
|
-
...item,
|
|
110
|
-
group_name: dateValue.format('YYYY-MM-DD')
|
|
111
|
-
};
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
95
|
const useSingleSelectColumnColor = (groupByColumn === null || groupByColumn === void 0 ? void 0 : groupByColumn.type) === _dtableUtils.CellType.SINGLE_SELECT && color_theme === _colorRules.SUPPORT_SINGLE_SELECT_THEMES_OPTIONS.SINGLE_SELECT_COLUMN_COLORS;
|
|
115
96
|
useSingleSelectColumnColor ? this.setSingleSelectColorMap(data) : this.setColorMap(data, chartColorTheme);
|
|
116
|
-
const fy = d3.scaleBand().domain(new Set(data.map(d => d.name))).range([chartHeight - insertPadding, insertPadding]).paddingInner(0.
|
|
97
|
+
const fy = d3.scaleBand().domain(new Set(data.map(d => d.name))).range([chartHeight - insertPadding, insertPadding]).paddingInner(0.5).paddingOuter(0.1);
|
|
117
98
|
const sortedData = _utils.BaseUtils.sortDataByGroupName((0, _lodashEs.cloneDeep)(data), 'group_name', columnGroupbyColumn, chart);
|
|
118
99
|
const y = d3.scaleBand().domain(new Set(sortedData.map(d => d.group_name))).range([0, fy.bandwidth()]).paddingInner(0).paddingOuter(0);
|
|
119
100
|
|
|
@@ -195,7 +176,7 @@ class HorizontalBarGroup extends _chartComponent.default {
|
|
|
195
176
|
this.setLegend({
|
|
196
177
|
legendName: 'group_name',
|
|
197
178
|
theme,
|
|
198
|
-
legendPosition: 'top-
|
|
179
|
+
legendPosition: 'top-left',
|
|
199
180
|
data,
|
|
200
181
|
groupColumn: this.props.columnGroupbyColumn,
|
|
201
182
|
chart
|
|
@@ -224,11 +205,10 @@ class HorizontalBarGroup extends _chartComponent.default {
|
|
|
224
205
|
title: !title && typeof title !== 'number' ? _intl.default.get(_constants.EMPTY_NAME) : title,
|
|
225
206
|
items: children.map(child => {
|
|
226
207
|
const data = child.__data__;
|
|
227
|
-
const groupName = data.group_name === null || data.group_name === undefined || data.group_name === '' ? _intl.default.get(_constants.EMPTY_NAME) : data.group_name;
|
|
228
208
|
return {
|
|
229
|
-
color: this.colorMap[
|
|
230
|
-
name:
|
|
231
|
-
value: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(
|
|
209
|
+
color: this.colorMap[data.group_name] || _constants.CHART_STYLE_COLORS[0],
|
|
210
|
+
name: data.group_name,
|
|
211
|
+
value: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(data.value), horizontal_axis_summary_method)
|
|
232
212
|
};
|
|
233
213
|
})
|
|
234
214
|
};
|
|
@@ -49,7 +49,7 @@ class HorizontalBarStack extends _chartComponent.default {
|
|
|
49
49
|
customRender,
|
|
50
50
|
chart
|
|
51
51
|
} = this.props;
|
|
52
|
-
data = _utils.BaseUtils.formatEmptyName(data,
|
|
52
|
+
data = _utils.BaseUtils.formatEmptyName(data, '', _intl.default.get('Empty'));
|
|
53
53
|
if (!Array.isArray(data)) return;
|
|
54
54
|
const {
|
|
55
55
|
sort_type,
|
|
@@ -95,7 +95,7 @@ class HorizontalBarStack extends _chartComponent.default {
|
|
|
95
95
|
const series = d3.stack().keys(d3.union(sortedData.map(d => d.group_name))).value((_ref, key) => {
|
|
96
96
|
var _group$get;
|
|
97
97
|
let [_, group] = _ref;
|
|
98
|
-
return ((_group$get = group.get(key)) === null || _group$get === void 0 ? void 0 : _group$get.value) || 0;
|
|
98
|
+
return ((_group$get = group.get(String(key))) === null || _group$get === void 0 ? void 0 : _group$get.value) || 0;
|
|
99
99
|
})(d3.index(sortedData, d => d.name, d => d.group_name));
|
|
100
100
|
const newSeries = this.handleSeries(series, sortedData);
|
|
101
101
|
const y = d3.scaleBand().domain(new Set(data.map(d => d.name))).range([chartHeight - insertPadding, insertPadding]).paddingInner(0.5).paddingOuter(0.1);
|
|
@@ -50,7 +50,7 @@ class LineGroup extends _chartComponent.default {
|
|
|
50
50
|
let {
|
|
51
51
|
result: data
|
|
52
52
|
} = this.props;
|
|
53
|
-
data = _utils.BaseUtils.formatEmptyName(data, '
|
|
53
|
+
data = _utils.BaseUtils.formatEmptyName(data, '', _intl.default.get('Empty'));
|
|
54
54
|
if (!Array.isArray(data)) return;
|
|
55
55
|
this.draw(data);
|
|
56
56
|
this.renderAxisLabel(this.props.chart, this.props.tables, this.container);
|
|
@@ -119,17 +119,12 @@ class LineGroup extends _chartComponent.default {
|
|
|
119
119
|
const title = !data.name && typeof data.name !== 'number' ? _intl.default.get(_constants.EMPTY_NAME) : data.name;
|
|
120
120
|
const circleList = (_contentWrapper$selec = contentWrapper.selectAll('circle')) === null || _contentWrapper$selec === void 0 ? void 0 : _contentWrapper$selec.nodes();
|
|
121
121
|
const items = circleList.filter(circle => circle.getAttribute('data-name') === title).map(circle => {
|
|
122
|
-
const groupName = circle.getAttribute('data-groupName') || _intl.default.get(_constants.EMPTY_NAME);
|
|
123
122
|
return {
|
|
124
|
-
color: this.colorMap[groupName],
|
|
125
|
-
name: groupName,
|
|
123
|
+
color: this.colorMap[circle.getAttribute('data-groupName')],
|
|
124
|
+
name: circle.getAttribute('data-groupName'),
|
|
126
125
|
value: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(circle.getAttribute('data-text')), y_axis_summary_method)
|
|
127
126
|
};
|
|
128
127
|
});
|
|
129
|
-
items.sort((a, b) => String(a.name).localeCompare(String(b.name), undefined, {
|
|
130
|
-
numeric: true,
|
|
131
|
-
sensitivity: 'base'
|
|
132
|
-
}));
|
|
133
128
|
return {
|
|
134
129
|
title,
|
|
135
130
|
items
|
|
@@ -53,7 +53,6 @@ class MapBubble extends _chartComponent.default {
|
|
|
53
53
|
};
|
|
54
54
|
this.showTooltip = (event, data) => {
|
|
55
55
|
const curData = data.find(item => item.name.includes(event.currentTarget.getAttribute('data-name')));
|
|
56
|
-
if (!curData) return;
|
|
57
56
|
const title = curData.nameType === 'en' ? curData.name : curData.name_cn;
|
|
58
57
|
const value = Number(event.currentTarget.getAttribute('data-value'));
|
|
59
58
|
const {
|
|
@@ -54,7 +54,6 @@ class Map extends _chartComponent.default {
|
|
|
54
54
|
};
|
|
55
55
|
this.showTooltip = (event, data) => {
|
|
56
56
|
const curData = data.find(item => item.name.includes(event.target.parentNode.getAttribute('data-name')));
|
|
57
|
-
if (!curData) return;
|
|
58
57
|
const title = curData.nameType === 'en' ? curData.name : curData.name_cn;
|
|
59
58
|
const value = Number(event.target.parentNode.getAttribute('data-value'));
|
|
60
59
|
const {
|
package/dist/view/wrapper/pie.js
CHANGED
|
@@ -33,7 +33,7 @@ class Pie extends _chartComponent.default {
|
|
|
33
33
|
} = chart.config;
|
|
34
34
|
const initConfig = {
|
|
35
35
|
insertPadding: 30,
|
|
36
|
-
rightLegendSpace: show_legend ?
|
|
36
|
+
rightLegendSpace: show_legend ? 150 : 0
|
|
37
37
|
};
|
|
38
38
|
this.initChart(this.container, chart === null || chart === void 0 ? void 0 : chart.id, initConfig);
|
|
39
39
|
};
|
|
@@ -33,7 +33,7 @@ class Ring extends _chartComponent.default {
|
|
|
33
33
|
} = chart.config;
|
|
34
34
|
const initConfig = {
|
|
35
35
|
insertPadding: 30,
|
|
36
|
-
rightLegendSpace: show_legend ?
|
|
36
|
+
rightLegendSpace: show_legend ? 150 : 0
|
|
37
37
|
};
|
|
38
38
|
this.initChart(this.container, chart === null || chart === void 0 ? void 0 : chart.id, initConfig);
|
|
39
39
|
};
|
|
@@ -27,7 +27,8 @@ class Scatter extends _chartComponent.default {
|
|
|
27
27
|
};
|
|
28
28
|
this.createChart = () => {
|
|
29
29
|
const {
|
|
30
|
-
chart
|
|
30
|
+
chart,
|
|
31
|
+
columnGroupbyColumn
|
|
31
32
|
} = this.props;
|
|
32
33
|
const {
|
|
33
34
|
y_axis_show_label,
|
|
@@ -39,7 +40,7 @@ class Scatter extends _chartComponent.default {
|
|
|
39
40
|
marginLeft: y_axis_show_label ? 20 : 0,
|
|
40
41
|
marginBottom: x_axis_show_label ? 20 : 0,
|
|
41
42
|
marginTop: y_axis_show_value ? 15 : 0,
|
|
42
|
-
bottomLegendSpace: 0
|
|
43
|
+
bottomLegendSpace: columnGroupbyColumn ? 20 : 0
|
|
43
44
|
};
|
|
44
45
|
this.initChart(this.container, chart === null || chart === void 0 ? void 0 : chart.id, initConfig);
|
|
45
46
|
};
|
|
@@ -60,11 +61,8 @@ class Scatter extends _chartComponent.default {
|
|
|
60
61
|
this.transformStringToNumber = data => {
|
|
61
62
|
const newData = (0, _lodashEs.cloneDeep)(data);
|
|
62
63
|
newData.forEach(item => {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
item.name = ((_item$original_value = item.original_value) === null || _item$original_value === void 0 ? void 0 : _item$original_value.name) || '';
|
|
66
|
-
item.value = ((_item$original_value2 = item.original_value) === null || _item$original_value2 === void 0 ? void 0 : _item$original_value2.value) || 0;
|
|
67
|
-
}
|
|
64
|
+
item.name = item.original_value.name;
|
|
65
|
+
item.value = item.original_value.value;
|
|
68
66
|
});
|
|
69
67
|
return newData;
|
|
70
68
|
};
|
|
@@ -270,7 +268,7 @@ class Scatter extends _chartComponent.default {
|
|
|
270
268
|
this.setLegend({
|
|
271
269
|
legendName: 'groupby',
|
|
272
270
|
theme,
|
|
273
|
-
legendPosition: 'top-
|
|
271
|
+
legendPosition: 'top-left',
|
|
274
272
|
data,
|
|
275
273
|
groupColumn: this.props.columnGroupbyColumn,
|
|
276
274
|
chart,
|
|
@@ -98,14 +98,13 @@ class TwoDimensionTable extends _react.PureComponent {
|
|
|
98
98
|
className: "pivot-table-header"
|
|
99
99
|
}), Array.isArray(pivot_columns) && pivot_columns.map((item, index) => {
|
|
100
100
|
return /*#__PURE__*/_react.default.createElement("th", {
|
|
101
|
-
key: "pivot-column-".concat(index),
|
|
102
101
|
className: "pivot-table-header summary-columns-header"
|
|
103
102
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
104
103
|
className: "pivot-table-header-summary-columns-container"
|
|
105
104
|
}, summary_columns.map((column, idx) => {
|
|
106
105
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
107
106
|
className: (0, _classnames.default)('pivot-table-header'),
|
|
108
|
-
key: "pivot-
|
|
107
|
+
key: "pivot-column-".concat(idx)
|
|
109
108
|
}, /*#__PURE__*/_react.default.createElement(_pivotTableDisplayName.default, {
|
|
110
109
|
value: column.name,
|
|
111
110
|
column: column || {},
|
|
@@ -307,7 +306,7 @@ class TwoDimensionTable extends _react.PureComponent {
|
|
|
307
306
|
cellIdx: cells.length
|
|
308
307
|
}),
|
|
309
308
|
title: rowTotal
|
|
310
|
-
}, _utils.BaseUtils.isValidValue(rowTotal, display_empty) ? _utils.
|
|
309
|
+
}, _utils.BaseUtils.isValidValue(rowTotal, display_empty) ? (0, _utils.formatRowTotal)(rowTotal) : /*#__PURE__*/_react.default.createElement("i", null), /*#__PURE__*/_react.default.createElement("span", {
|
|
311
310
|
className: (0, _classnames.default)({
|
|
312
311
|
'selected-pivot-cell-border': isSelectedTotalCell
|
|
313
312
|
})
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _contexts = require("../../../../../utils/contexts");
|
|
10
11
|
var _recordsHeaderCell = _interopRequireDefault(require("./records-header-cell"));
|
|
11
12
|
class RecordsHeader extends _react.Component {
|
|
12
13
|
constructor() {
|
package/dist/view/wrapper/table-element/components/resize-column-handle/resize-column-handle.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _lodashEs = require("lodash-es");
|
|
9
10
|
require("./index.css");
|
|
10
11
|
class ResizeColumnHandle extends _react.Component {
|
|
11
12
|
constructor() {
|
|
@@ -17,7 +18,6 @@ class ResizeColumnHandle extends _react.Component {
|
|
|
17
18
|
window.removeEventListener('touchmove', this.onMouseMove);
|
|
18
19
|
};
|
|
19
20
|
this.onMouseDown = e => {
|
|
20
|
-
e.stopPropagation();
|
|
21
21
|
if (e.preventDefault) {
|
|
22
22
|
e.preventDefault();
|
|
23
23
|
}
|
|
@@ -27,14 +27,12 @@ class ResizeColumnHandle extends _react.Component {
|
|
|
27
27
|
window.addEventListener('touchmove', this.onMouseMove);
|
|
28
28
|
};
|
|
29
29
|
this.onMouseUp = e => {
|
|
30
|
-
e.stopPropagation();
|
|
31
30
|
if (this.props.onDragEnd) {
|
|
32
31
|
this.props.onDragEnd(e);
|
|
33
32
|
}
|
|
34
33
|
this.cleanUp();
|
|
35
34
|
};
|
|
36
35
|
this.onMouseMove = e => {
|
|
37
|
-
e.stopPropagation();
|
|
38
36
|
if (e.preventDefault) {
|
|
39
37
|
e.preventDefault();
|
|
40
38
|
}
|