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.
Files changed (84) hide show
  1. package/dist/api/index.js +59 -17
  2. package/dist/assets/css/sea-chart-d3-tooltip.css +1 -0
  3. package/dist/components/color-popover/color-rules-popover.js +2 -4
  4. package/dist/components/drill-down-settings/drill-down-fields-popover/index.js +4 -5
  5. package/dist/components/icon/index.js +13 -9
  6. package/dist/components/number-input/index.js +13 -7
  7. package/dist/components/popover/hide-column-popover/hide-column-popover-widgets/hide-column-item.js +3 -7
  8. package/dist/components/popover/hide-column-popover/hide-column-popover.css +1 -5
  9. package/dist/components/popover/hide-column-popover/hide-column-popover.js +4 -2
  10. package/dist/components/popover/sort-popover/sort-popover.js +7 -6
  11. package/dist/components/statistic-record-dialog/index.js +8 -9
  12. package/dist/components/tooltip/index.js +8 -26
  13. package/dist/editor/index.js +1 -5
  14. package/dist/locale/lang/de.js +0 -1
  15. package/dist/locale/lang/en.js +0 -1
  16. package/dist/locale/lang/es.js +0 -1
  17. package/dist/locale/lang/fr.js +0 -1
  18. package/dist/locale/lang/pt.js +0 -1
  19. package/dist/locale/lang/ru.js +0 -1
  20. package/dist/locale/lang/zh_CN.js +0 -1
  21. package/dist/model/funnel.js +2 -2
  22. package/dist/model/map-bubble.js +0 -4
  23. package/dist/services/map-json.js +0 -3
  24. package/dist/settings/advance-bar-settings/data-settings.js +1 -1
  25. package/dist/settings/advance-bar-settings/style-settings.js +3 -4
  26. package/dist/settings/bar-settings/data-settings.js +1 -1
  27. package/dist/settings/bar-settings/style-settings.js +2 -2
  28. package/dist/settings/basic-number-card/data-settings.js +2 -3
  29. package/dist/settings/combination-settings/data-settings.js +1 -0
  30. package/dist/settings/combination-settings/style-settings.js +2 -2
  31. package/dist/settings/dashboard-settings/data-settings.js +2 -3
  32. package/dist/settings/funnel-settings/components/funnel-layer-setting.js +7 -7
  33. package/dist/settings/index.js +3 -8
  34. package/dist/settings/table-element-settings/components/data-filter.js +25 -24
  35. package/dist/settings/table-element-settings/index.css +31 -1
  36. package/dist/settings/table-settings/data-settings.js +2 -3
  37. package/dist/settings/time-comparison-settings/style-settings.js +2 -2
  38. package/dist/settings/widgets/basic-summary/index.js +7 -8
  39. package/dist/settings/widgets/common-data-settings.js +6 -7
  40. package/dist/settings/widgets/data-filter/index.js +22 -30
  41. package/dist/settings/widgets/group-by.js +3 -4
  42. package/dist/settings/widgets/summary-settings.js +2 -3
  43. package/dist/settings/widgets/y-axis-group-settings.js +2 -3
  44. package/dist/utils/cell-format-utils.js +7 -9
  45. package/dist/utils/chart-utils/base-utils.js +86 -194
  46. package/dist/utils/chart-utils/index.js +3 -5
  47. package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +5 -5
  48. package/dist/utils/chart-utils/original-data-utils/card-calculator.js +2 -8
  49. package/dist/utils/chart-utils/original-data-utils/dashboard-calculator.js +3 -12
  50. package/dist/utils/chart-utils/original-data-utils/pivot-table-calculator.js +1 -4
  51. package/dist/utils/chart-utils/original-data-utils/scatter-calculator.js +0 -1
  52. package/dist/utils/chart-utils/original-data-utils/trend-calculator.js +3 -24
  53. package/dist/utils/chart-utils/sql-statistics-utils.js +177 -182
  54. package/dist/utils/column-utils.js +7 -20
  55. package/dist/utils/contexts.js +2 -5
  56. package/dist/utils/index.js +4 -25
  57. package/dist/utils/row-record-utils.js +20 -100
  58. package/dist/utils/sql/column-2-sql-column.js +10 -10
  59. package/dist/utils/trend-utils.js +2 -15
  60. package/dist/view/index.css +8 -2
  61. package/dist/view/index.js +9 -14
  62. package/dist/view/wrapper/area-group.js +7 -15
  63. package/dist/view/wrapper/bar-compare.js +2 -18
  64. package/dist/view/wrapper/bar-custom-stack.js +9 -35
  65. package/dist/view/wrapper/bar-group.js +26 -55
  66. package/dist/view/wrapper/bar-stack.js +2 -2
  67. package/dist/view/wrapper/basic-number-card.js +3 -27
  68. package/dist/view/wrapper/chart-component.js +440 -43
  69. package/dist/view/wrapper/completeness-group.js +49 -104
  70. package/dist/view/wrapper/dashboard.js +18 -68
  71. package/dist/view/wrapper/horizontal-bar-group.js +6 -26
  72. package/dist/view/wrapper/horizontal-bar-stack.js +2 -2
  73. package/dist/view/wrapper/line-group.js +3 -8
  74. package/dist/view/wrapper/map-world-bubble.js +0 -1
  75. package/dist/view/wrapper/map-world.js +0 -1
  76. package/dist/view/wrapper/pie.js +1 -1
  77. package/dist/view/wrapper/ring.js +1 -1
  78. package/dist/view/wrapper/scatter.js +6 -8
  79. package/dist/view/wrapper/table/two-dimension-table.js +2 -3
  80. package/dist/view/wrapper/table-element/components/records-header/index.js +1 -0
  81. package/dist/view/wrapper/table-element/components/resize-column-handle/resize-column-handle.js +1 -3
  82. package/dist/view/wrapper/table-element/index.js +21 -16
  83. package/dist/view/wrapper/trend.js +1 -24
  84. 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
- const {
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.25).paddingOuter(0.1);
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
- const contentWrapper = this.chart.append('g').attr('class', 'content-wrapper');
119
- const groupedData = d3.group(sortedData, d => d.name);
120
- const group = contentWrapper.selectAll().data(groupedData).join('g').attr('transform', _ref => {
121
- let [name] = _ref;
122
- return "translate(".concat(fx(name), ",0)");
123
- });
124
- group.each((_ref2, groupIndex, groupNodes) => {
125
- let [, dum] = _ref2;
126
- const groupNode = groupNodes[groupIndex];
127
- const localX = d3.scaleBand().domain(dum.map(d => d.group_name)).range([0, fx.bandwidth()]).paddingInner(0).paddingOuter(0);
128
- const rectSelection = d3.select(groupNode).selectAll('rect').data(dum).join('rect').attr('opacity', 1).attr('x', d => localX(d.group_name)).attr('y', d => y(d.value)).attr('width', localX.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);
129
- const {
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(localX.bandwidth()),
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
- let [curGroupName, data] = curGroup.__data__;
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[groupName],
218
- name: groupName,
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, chart.config.column_groupby_column_key, _intl.default.get('Empty'));
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 ((_group$get = group.get(key)) === null || _group$get === void 0 ? void 0 : _group$get.value) || 0;
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)(numericValue) ? numericValue : 0;
111
+ content = (0, _dtableUtils.isNumber)(result) ? result : 0;
131
112
  } else {
132
- content = this.formatData(numericValue);
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("span", {
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',