sea-chart 2.0.21 → 2.0.23

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.
@@ -70,13 +70,15 @@ class HorizontalBarGroup extends _chartComponent.default {
70
70
  globalTheme,
71
71
  chartColorTheme,
72
72
  tables,
73
- columnGroupbyColumn
73
+ columnGroupbyColumn,
74
+ summaryColumn
74
75
  } = this.props;
75
76
  const theme = _constants.CHART_THEME_COLOR[globalTheme];
76
77
  const {
77
78
  display_data,
78
79
  label_font_size,
79
80
  column_groupby_column_key,
81
+ horizontal_axis_summary_method,
80
82
  table_id,
81
83
  color_theme,
82
84
  horizontal_axis_auto_range,
@@ -95,7 +97,9 @@ class HorizontalBarGroup extends _chartComponent.default {
95
97
  const fy = d3.scaleBand().domain(new Set(data.map(d => d.name))).range([chartHeight - insertPadding, insertPadding]).paddingInner(0.5).paddingOuter(0.1);
96
98
  const sortedData = _utils.BaseUtils.sortDataByGroupName((0, _lodashEs.cloneDeep)(data), 'group_name', columnGroupbyColumn, chart);
97
99
  const y = d3.scaleBand().domain(new Set(sortedData.map(d => d.group_name))).range([0, fy.bandwidth()]).paddingInner(0).paddingOuter(0);
98
- const yAxis = this.chart.append('g').call(d3.axisLeft(fy).tickSizeOuter(0).tickPadding(0).tickSizeInner(5)).call(g => {
100
+
101
+ // Y axis
102
+ const yAxis = this.chart.append('g').attr('class', 'y-axis-wrapper').call(d3.axisLeft(fy).tickSizeOuter(0).tickPadding(0).tickSizeInner(5)).call(g => {
99
103
  g.selectAll('.domain').attr('stroke', theme.XAxisColor);
100
104
  g.selectAll('.tick line').attr('stroke', theme.XAxisColor);
101
105
  g.selectAll('text').attr('font-size', theme.fontSize);
@@ -109,7 +113,9 @@ class HorizontalBarGroup extends _chartComponent.default {
109
113
  });
110
114
  const niceEnd = d3.nice(0, d3.max(data, d => d.value), 5)[1];
111
115
  const x = d3.scaleLinear().domain(horizontal_axis_auto_range ? [0, niceEnd] : [horizontal_axis_min || 0, horizontal_axis_max || niceEnd]).range([Number(yAxis.node().getAttribute('data-axisWidth')), chartWidth - insertPadding - marginRight]);
112
- this.chart.append('g').attr('transform', "translate(0, ".concat(chartHeight - insertPadding, ")")).call(d3.axisBottom(x).tickSizeInner(0).ticks(5).tickFormat(d => d)).call(g => {
116
+
117
+ // X axis
118
+ this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform', "translate(0, ".concat(chartHeight - insertPadding, ")")).call(d3.axisBottom(x).tickSizeInner(0).ticks(5).tickFormat(d => _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, d, horizontal_axis_summary_method))).call(g => {
113
119
  g.selectAll('.domain').remove();
114
120
  g.selectAll('.tick line').node() && g.selectAll('.tick line').node().remove(); // delete the first line
115
121
  g.selectAll('.tick line').attr('y2', -(chartHeight - insertPadding * 2)).attr('stroke', theme.gridColor).attr('stroke-dasharray', '8,3');
@@ -118,8 +124,8 @@ class HorizontalBarGroup extends _chartComponent.default {
118
124
  });
119
125
 
120
126
  // Rect group
121
- const rectsWrapper = this.chart.append('g').attr('class', "rects-wrapper-".concat(chart === null || chart === void 0 ? void 0 : chart.id)).attr('transform', "translate(".concat(Number(yAxis.node().getAttribute('data-axisWidth')), ", 0)"));
122
- rectsWrapper.selectAll().data(d3.group(sortedData, d => d.name)).join('g').attr('transform', _ref => {
127
+ const contentWrapper = this.chart.append('g').attr('class', 'content-wrapper').attr('transform', "translate(".concat(Number(yAxis.node().getAttribute('data-axisWidth')), ", 0)"));
128
+ contentWrapper.selectAll().data(d3.group(sortedData, d => d.name)).join('g').attr('transform', _ref => {
123
129
  let [name, dum] = _ref;
124
130
  const offset = (fy.bandwidth() - dum.length * y.bandwidth()) / 2;
125
131
  return "translate(0, ".concat(fy(name) + offset, ")");
@@ -128,7 +134,7 @@ class HorizontalBarGroup extends _chartComponent.default {
128
134
  .selectAll().data(_ref2 => {
129
135
  let [_, d] = _ref2;
130
136
  return d;
131
- }).join('rect').attr('x', 0).attr('y', (d, index) => index * y.bandwidth()).attr('width', d => x(d.value) - x(0)).attr('height', y.bandwidth()).attr('fill', d => {
137
+ }).join('rect').attr('opacity', 1).attr('x', 0).attr('y', (d, index) => index * y.bandwidth()).attr('width', d => x(d.value) - x(0)).attr('height', y.bandwidth()).attr('fill', d => {
132
138
  return this.colorMap[d.group_name] || _constants.CHART_STYLE_COLORS[0];
133
139
  }).attr('value', d => d.value).attr('data-slugid', d => d.slugId).attr('data-groupName', d => d.name).call(g => {
134
140
  // add rect borderRadius
@@ -152,7 +158,7 @@ class HorizontalBarGroup extends _chartComponent.default {
152
158
  y: Number(rect.getAttribute('y')),
153
159
  theme,
154
160
  label_font_size,
155
- text: Number(rect.getAttribute('value'))
161
+ text: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(rect.getAttribute('value')), horizontal_axis_summary_method)
156
162
  });
157
163
  }
158
164
  });
@@ -182,6 +188,13 @@ class HorizontalBarGroup extends _chartComponent.default {
182
188
  this.setActiveAndInActiveState(state, allGroup, curGroupName);
183
189
  };
184
190
  this.showTooltip = event => {
191
+ const {
192
+ summaryColumn,
193
+ chart
194
+ } = this.props;
195
+ const {
196
+ horizontal_axis_summary_method
197
+ } = chart.config;
185
198
  const {
186
199
  offsetX,
187
200
  offsetY
@@ -195,7 +208,7 @@ class HorizontalBarGroup extends _chartComponent.default {
195
208
  return {
196
209
  color: this.colorMap[data.group_name] || _constants.CHART_STYLE_COLORS[0],
197
210
  name: data.group_name,
198
- value: data.value
211
+ value: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(data.value), horizontal_axis_summary_method)
199
212
  };
200
213
  })
201
214
  };
@@ -68,7 +68,9 @@ class HorizontalBarStack extends _chartComponent.default {
68
68
  globalTheme,
69
69
  chartColorTheme,
70
70
  tables,
71
- columnGroupbyColumn
71
+ columnGroupbyColumn,
72
+ summaryColumn,
73
+ horizontal_axis_summary_method
72
74
  } = this.props;
73
75
  const theme = _constants.CHART_THEME_COLOR[globalTheme];
74
76
  const {
@@ -99,7 +101,7 @@ class HorizontalBarStack extends _chartComponent.default {
99
101
  const y = d3.scaleBand().domain(new Set(data.map(d => d.name))).range([chartHeight - insertPadding, insertPadding]).paddingInner(0.5).paddingOuter(0.1);
100
102
 
101
103
  // Y axis
102
- const yAxis = this.chart.append('g').call(d3.axisLeft(y).tickSizeOuter(0).tickPadding(0).tickSizeInner(5)).call(g => {
104
+ const yAxis = this.chart.append('g').attr('class', 'y-axis-wrapper').call(d3.axisLeft(y).tickSizeOuter(0).tickPadding(0).tickSizeInner(5)).call(g => {
103
105
  g.selectAll('.domain').attr('stroke', theme.XAxisColor);
104
106
  g.selectAll('.tick line').attr('stroke', theme.XAxisColor);
105
107
  g.selectAll('text').attr('font-size', theme.fontSize);
@@ -115,7 +117,7 @@ class HorizontalBarStack extends _chartComponent.default {
115
117
  // X axis
116
118
  const niceEnd = d3.nice(0, d3.max(newSeries, d => d[1].sumValue), 5)[1];
117
119
  const x = d3.scaleLinear().domain(horizontal_axis_auto_range ? [0, niceEnd] : [horizontal_axis_min || 0, horizontal_axis_max || niceEnd]).range([Number(yAxis.node().getAttribute('data-axisWidth')), chartWidth - insertPadding]);
118
- this.chart.append('g').attr('transform', "translate(0, ".concat(chartHeight - insertPadding, ")")).call(d3.axisBottom(x).tickSizeInner(0).ticks(5).tickFormat(d => d)).call(g => {
120
+ this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform', "translate(0, ".concat(chartHeight - insertPadding, ")")).call(d3.axisBottom(x).tickSizeInner(0).ticks(5).tickFormat(d => _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, d, horizontal_axis_summary_method))).call(g => {
119
121
  g.selectAll('.domain').remove();
120
122
  g.selectAll('.tick line').node() && g.selectAll('.tick line').node().remove(); // delete the first line
121
123
  g.selectAll('.tick line').attr('y2', -(chartHeight - insertPadding * 2)).attr('stroke', theme.gridColor).attr('stroke-dasharray', '8,3');
@@ -124,20 +126,20 @@ class HorizontalBarStack extends _chartComponent.default {
124
126
  });
125
127
 
126
128
  // Rect group
127
- const rectsWrapper = this.chart.append('g').attr('class', "rects-wrapper-".concat(chart === null || chart === void 0 ? void 0 : chart.id)).attr('transform', "translate(".concat(Number(yAxis.node().getAttribute('data-axisWidth')), ", 0)"));
128
- rectsWrapper.selectAll().data(newSeries).join('g')
129
+ const contentWrapper = this.chart.append('g').attr('class', 'content-wrapper').attr('transform', "translate(".concat(Number(yAxis.node().getAttribute('data-axisWidth')), ", 0)"));
130
+ contentWrapper.selectAll().data(newSeries).join('g')
129
131
  // rect item
130
132
  .selectAll().data(_ref2 => {
131
133
  let [groupKey, d] = _ref2;
132
134
  d.forEach(item => item['groupKey'] = groupKey);
133
135
  return d;
134
- }).join('rect').attr('x', (d, index) => {
136
+ }).join('rect').attr('opacity', 1).attr('x', (d, index) => {
135
137
  return x(d[0]) - Number(yAxis.node().getAttribute('data-axisWidth'));
136
138
  }).attr('y', (d, index) => y(d.groupKey)).attr('width', d => x(d[1]) - x(d[0])).attr('height', y.bandwidth()).attr('fill', d => {
137
139
  return this.colorMap[d.data.group_name] || _constants.CHART_STYLE_COLORS[0];
138
140
  }).attr('data-value', d => d.data.value).attr('data-slugid', d => d.data.slugId).attr('data-groupName', d => d.data.name).attr('data-stackKey', d => d.key).call(g => {
139
141
  // add rect borderRadius
140
- const allGroup = this.getAllGroup(rectsWrapper);
142
+ const allGroup = this.getAllGroup(contentWrapper);
141
143
  allGroup.forEach(group => {
142
144
  const firstEl = group[0];
143
145
  firstEl && this.addMaskRect(firstEl === null || firstEl === void 0 ? void 0 : firstEl.parentNode, firstEl, yAxis);
@@ -145,7 +147,7 @@ class HorizontalBarStack extends _chartComponent.default {
145
147
 
146
148
  // Add label
147
149
  if (display_data) {
148
- const newAllGroup = this.getAllGroup(rectsWrapper);
150
+ const newAllGroup = this.getAllGroup(contentWrapper);
149
151
  newAllGroup.forEach(group => {
150
152
  group.forEach(rect => {
151
153
  this.addLabelToRectCenter({
@@ -156,7 +158,7 @@ class HorizontalBarStack extends _chartComponent.default {
156
158
  yheight: Number(rect.getAttribute('height')),
157
159
  theme,
158
160
  label_font_size,
159
- text: rect.getAttribute('data-value')
161
+ text: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(rect.getAttribute('data-value')), horizontal_axis_summary_method)
160
162
  });
161
163
  });
162
164
  });
@@ -187,6 +189,13 @@ class HorizontalBarStack extends _chartComponent.default {
187
189
  this.setActiveAndInActiveState(state, allGroup, curGroupName);
188
190
  };
189
191
  this.showTooltip = (event, isDiv) => {
192
+ const {
193
+ summaryColumn,
194
+ chart
195
+ } = this.props;
196
+ const {
197
+ horizontal_axis_summary_method
198
+ } = chart.config;
190
199
  let {
191
200
  offsetX,
192
201
  offsetY
@@ -205,7 +214,7 @@ class HorizontalBarStack extends _chartComponent.default {
205
214
  items: [{
206
215
  color: this.colorMap[stackName] || _constants.CHART_STYLE_COLORS[0],
207
216
  name: stackName,
208
- value: stackValue
217
+ value: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(stackValue), horizontal_axis_summary_method)
209
218
  }]
210
219
  };
211
220
  this.setState({
@@ -266,9 +275,9 @@ class HorizontalBarStack extends _chartComponent.default {
266
275
  });
267
276
  return newSeries;
268
277
  };
269
- this.getAllGroup = rectsWrapper => {
278
+ this.getAllGroup = contentWrapper => {
270
279
  const allGroup = [];
271
- Array.from(rectsWrapper.node().children).forEach(item => {
280
+ Array.from(contentWrapper.node().children).forEach(item => {
272
281
  const group = [];
273
282
  Array.from(item.children).forEach(child => {
274
283
  if (Number(child.getAttribute('width')) !== 0) {
@@ -286,7 +295,7 @@ class HorizontalBarStack extends _chartComponent.default {
286
295
  borderRadius
287
296
  } = this.chartBoundingClientRect;
288
297
  // Add mask rect
289
- d3.select(topG).append('foreignObject').attr('x', rect.getAttribute('x')).attr('y', rect.getAttribute('y')).attr('width', rect.getAttribute('width')).attr('height', rect.getAttribute('height')).attr('data-groupName', rect.getAttribute('data-groupName')).attr('data-value', rect.getAttribute('data-value')).attr('data-stackKey', rect.getAttribute('data-stackKey')).attr('data-x', () => {
298
+ d3.select(topG).append('foreignObject').attr('opacity', rect.getAttribute('opacity')).attr('x', rect.getAttribute('x')).attr('y', rect.getAttribute('y')).attr('width', rect.getAttribute('width')).attr('height', rect.getAttribute('height')).attr('data-groupName', rect.getAttribute('data-groupName')).attr('data-value', rect.getAttribute('data-value')).attr('data-stackKey', rect.getAttribute('data-stackKey')).attr('data-x', () => {
290
299
  const x = Number(rect.getAttribute('x'));
291
300
  return x + Number(yAxis.node().getAttribute('data-axisWidth'));
292
301
  }).on('click', (event, data) => {
@@ -59,13 +59,15 @@ class HorizontalBar extends _chartComponent.default {
59
59
  chart,
60
60
  globalTheme,
61
61
  chartColorTheme,
62
- tables
62
+ tables,
63
+ summaryColumn
63
64
  } = this.props;
64
65
  const theme = _constants.CHART_THEME_COLOR[globalTheme];
65
66
  const {
66
67
  table_id,
67
68
  horizontal_axis_summary_type,
68
69
  horizontal_axis_column_key,
70
+ horizontal_axis_summary_method,
69
71
  color_option,
70
72
  horizontal_axis_label_color_rules,
71
73
  horizontal_axis_label_color,
@@ -89,7 +91,9 @@ class HorizontalBar extends _chartComponent.default {
89
91
  const tooltipTitle = this.getTitle(tables, table_id, horizontal_axis_summary_type, horizontal_axis_column_key);
90
92
  data.reverse();
91
93
  const y = d3.scaleBand().domain(data.map(item => item.name)).range([chartHeight - insertPadding, insertPadding]).paddingInner(0.5).paddingOuter(0.1);
92
- const yAxis = this.chart.append('g').call(d3.axisLeft(y).tickSizeOuter(0).tickPadding(0).tickSizeInner(5)).call(g => {
94
+
95
+ // Y axis
96
+ const yAxis = this.chart.append('g').attr('class', 'y-axis-wrapper').call(d3.axisLeft(y).tickSizeOuter(0).tickPadding(0).tickSizeInner(5)).call(g => {
93
97
  g.selectAll('.domain').attr('stroke', theme.XAxisColor);
94
98
  g.selectAll('.tick line').attr('stroke', theme.XAxisColor);
95
99
  g.selectAll('text').attr('font-size', theme.fontSize);
@@ -103,15 +107,17 @@ class HorizontalBar extends _chartComponent.default {
103
107
  });
104
108
  const niceEnd = d3.nice(0, d3.max(data, d => d.value), 5)[1];
105
109
  const x = d3.scaleLinear().domain(horizontal_axis_auto_range ? [0, niceEnd] : [horizontal_axis_min || 0, horizontal_axis_max || niceEnd]).range([Number(yAxis.node().getAttribute('data-axisWidth')), chartWidth - insertPadding - marginRight]);
106
- this.chart.append('g').attr('transform', "translate(0, ".concat(chartHeight - insertPadding, ")")).call(d3.axisBottom(x).tickSizeInner(0).ticks(5)).call(g => {
110
+
111
+ // X axis
112
+ this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform', "translate(0, ".concat(chartHeight - insertPadding, ")")).call(d3.axisBottom(x).tickSizeInner(0).ticks(5).tickFormat(d => _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, d, horizontal_axis_summary_method))).call(g => {
107
113
  g.selectAll('.domain').remove();
108
114
  g.selectAll('.tick line').node() && g.selectAll('.tick line').node().remove(); // delete the first line
109
115
  g.selectAll('.tick line').attr('y2', -(chartHeight - insertPadding * 2)).attr('stroke', theme.gridColor).attr('stroke-dasharray', '8,3');
110
116
  g.selectAll('text').attr('font-size', theme.fontSize);
111
117
  g.selectAll('text').attr('fill', theme.textColor);
112
118
  });
113
- const rectsWrapper = this.chart.append('g').attr('class', "rects-wrapper-".concat(chart === null || chart === void 0 ? void 0 : chart.id)).attr('transform', "translate(".concat(Number(yAxis.node().getAttribute('data-axisWidth')), ", 0)"));
114
- rectsWrapper.selectAll().data(data).join('rect').attr('x', 0).attr('y', d => y(d.name)).attr('width', d => x(d.value) - x(0)).attr('height', y.bandwidth()).attr('fill', d => {
119
+ const contentWrapper = this.chart.append('g').attr('class', 'content-wrapper').attr('transform', "translate(".concat(Number(yAxis.node().getAttribute('data-axisWidth')), ", 0)"));
120
+ contentWrapper.selectAll().data(data).join('rect').attr('opacity', 1).attr('x', 0).attr('y', d => y(d.name)).attr('width', d => x(d.value) - x(0)).attr('height', y.bandwidth()).attr('fill', d => {
115
121
  const color = (0, _colorUtils.getLabelColor)({
116
122
  chart: chart.config,
117
123
  colorRules,
@@ -140,7 +146,7 @@ class HorizontalBar extends _chartComponent.default {
140
146
  y: Number(rect.getAttribute('y')),
141
147
  theme,
142
148
  label_font_size,
143
- text: Number(rect.getAttribute('value'))
149
+ text: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(rect.getAttribute('value')), horizontal_axis_summary_method)
144
150
  });
145
151
  }
146
152
  });
@@ -163,8 +169,12 @@ class HorizontalBar extends _chartComponent.default {
163
169
  };
164
170
  this.showTooltip = (event, data, title, colorRules, chartBarColor) => {
165
171
  const {
172
+ summaryColumn,
166
173
  chart
167
174
  } = this.props;
175
+ const {
176
+ horizontal_axis_summary_method
177
+ } = chart.config;
168
178
  const {
169
179
  offsetX,
170
180
  offsetY
@@ -178,7 +188,7 @@ class HorizontalBar extends _chartComponent.default {
178
188
  value: data.value
179
189
  }) || chartBarColor,
180
190
  name: data.name,
181
- value: data.value
191
+ value: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(data.value), horizontal_axis_summary_method)
182
192
  }]
183
193
  };
184
194
  this.setState({
@@ -29,6 +29,7 @@ var _pie = _interopRequireDefault(require("./pie"));
29
29
  var _ring = _interopRequireDefault(require("./ring"));
30
30
  var _scatter = _interopRequireDefault(require("./scatter"));
31
31
  var _basicNumberCard = _interopRequireDefault(require("./basic-number-card"));
32
+ var _combination = _interopRequireDefault(require("./combination"));
32
33
  var _trend = _interopRequireDefault(require("./trend"));
33
34
  var _tableElement = _interopRequireDefault(require("./table-element"));
34
35
  const Wrapper = _ref => {
@@ -244,6 +245,12 @@ const Wrapper = _ref => {
244
245
  canvasStyle: canvasStyle
245
246
  }));
246
247
  }
248
+ case _constants.CHART_TYPE.COMBINATION:
249
+ {
250
+ return /*#__PURE__*/_react.default.createElement(_combination.default, Object.assign({}, baseProps, {
251
+ canvasStyle: canvasStyle
252
+ }));
253
+ }
247
254
  case _constants.CHART_TYPE.BASIC_NUMBER_CARD:
248
255
  {
249
256
  return /*#__PURE__*/_react.default.createElement(_basicNumberCard.default, Object.assign({}, baseProps, {
@@ -268,7 +268,7 @@ class Scatter extends _chartComponent.default {
268
268
  this.setLegend({
269
269
  legendName: 'groupby',
270
270
  theme,
271
- legendPosition: 'top-right',
271
+ legendPosition: 'top-left',
272
272
  data,
273
273
  groupColumn: this.props.columnGroupbyColumn,
274
274
  chart,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sea-chart",
3
- "version": "2.0.21",
3
+ "version": "2.0.23",
4
4
  "main": "./dist/index.js",
5
5
  "dependencies": {
6
6
  "@dnd-kit/core": "^6.1.0",