sea-chart 2.0.37 → 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.
Files changed (304) hide show
  1. package/dist/api/index.js +20 -69
  2. package/dist/assets/css/sea-chart-d3-tooltip.css +0 -1
  3. package/dist/components/cell-factory/FormatterConfig.js +55 -62
  4. package/dist/components/cell-factory/SimpleCellFormatter.js +5 -12
  5. package/dist/components/cell-factory/SingleSelectOption.js +11 -18
  6. package/dist/components/cell-factory/cell-editor-factory.js +5 -12
  7. package/dist/components/cell-factory/cell-formatter-factory.js +4 -11
  8. package/dist/components/cell-factory/link-content.js +30 -38
  9. package/dist/components/chart-color-selector/color-selector.js +11 -18
  10. package/dist/components/collaborator/index.js +7 -14
  11. package/dist/components/color-picker/index.js +12 -19
  12. package/dist/components/color-popover/color-rules/color-rule.js +26 -34
  13. package/dist/components/color-popover/color-rules/index.js +7 -15
  14. package/dist/components/color-popover/color-rules/rule-filters/filter.js +27 -34
  15. package/dist/components/color-popover/color-rules/rule-filters/index.js +17 -25
  16. package/dist/components/color-popover/color-rules/rule-filters/number-input.js +9 -17
  17. package/dist/components/color-popover/color-rules-popover.js +31 -37
  18. package/dist/components/color-popover/color-selector-popover.js +12 -20
  19. package/dist/components/color-setting/color-group-selector.js +13 -21
  20. package/dist/components/common-add-tool/index.js +8 -15
  21. package/dist/components/data-process-setter/data-setting-header.js +7 -14
  22. package/dist/components/data-process-setter/hide-column-setter.js +13 -20
  23. package/dist/components/data-process-setter/index.js +4 -27
  24. package/dist/components/data-process-setter/sort-setter.js +18 -26
  25. package/dist/components/draggable/Draggable.js +7 -13
  26. package/dist/components/drill-down-settings/drill-down-fields-popover/index.js +41 -48
  27. package/dist/components/drill-down-settings/drill-down-fields-settings/index.js +10 -18
  28. package/dist/components/drill-down-settings/index.js +11 -18
  29. package/dist/components/dtable-popover/index.js +13 -20
  30. package/dist/components/dtable-search-input/index.js +13 -21
  31. package/dist/components/font-settings/index.js +14 -22
  32. package/dist/components/goal-line-setting/goal-setting-item.js +6 -14
  33. package/dist/components/goal-line-setting/index.js +12 -19
  34. package/dist/components/highlighter/highlighter.js +7 -14
  35. package/dist/components/icon/index.js +12 -23
  36. package/dist/components/index.js +7 -48
  37. package/dist/components/loading/index.js +6 -13
  38. package/dist/components/number-input/index.js +11 -24
  39. package/dist/components/pixel-editor/index.js +15 -23
  40. package/dist/components/popover/hide-column-popover/hide-column-popover-widgets/hide-column-item.js +13 -16
  41. package/dist/components/popover/hide-column-popover/hide-column-popover.css +5 -1
  42. package/dist/components/popover/hide-column-popover/hide-column-popover.js +28 -38
  43. package/dist/components/popover/sort-popover/sort-popover-widgets/sort-utils.js +9 -18
  44. package/dist/components/popover/sort-popover/sort-popover.js +58 -69
  45. package/dist/components/resize-handle/ResizeHandle.js +6 -13
  46. package/dist/components/row-card/row-card-header-cell.js +17 -24
  47. package/dist/components/row-card/row-card-header.js +15 -22
  48. package/dist/components/row-card/row-card-item.js +35 -43
  49. package/dist/components/row-card/row-card.js +17 -25
  50. package/dist/components/statistic-record-dialog/index.js +61 -68
  51. package/dist/components/tooltip/index.js +39 -28
  52. package/dist/components/types-dialog/index.js +62 -70
  53. package/dist/components/types-dialog/use-force-update.js +4 -10
  54. package/dist/constants/color-rules.js +8 -14
  55. package/dist/constants/common-constants.js +8 -14
  56. package/dist/constants/error.js +2 -8
  57. package/dist/constants/geolocation.js +9 -15
  58. package/dist/constants/index.js +142 -271
  59. package/dist/constants/key-codes.js +0 -2
  60. package/dist/constants/model.js +3 -9
  61. package/dist/constants/regions.js +3 -8
  62. package/dist/constants/style.js +6 -12
  63. package/dist/constants/table.js +1 -7
  64. package/dist/constants/type-image.js +33 -39
  65. package/dist/constants/type.js +3 -9
  66. package/dist/context.js +13 -20
  67. package/dist/editor/index.js +13 -16
  68. package/dist/index.js +13 -104
  69. package/dist/intl.js +10 -17
  70. package/dist/locale/index.js +16 -23
  71. package/dist/locale/lang/de.js +2 -7
  72. package/dist/locale/lang/en.js +2 -7
  73. package/dist/locale/lang/es.js +2 -7
  74. package/dist/locale/lang/fr.js +2 -7
  75. package/dist/locale/lang/pt.js +2 -7
  76. package/dist/locale/lang/ru.js +2 -7
  77. package/dist/locale/lang/zh_CN.js +2 -7
  78. package/dist/model/area-group.js +12 -19
  79. package/dist/model/area.js +12 -19
  80. package/dist/model/bar-custom.js +11 -18
  81. package/dist/model/bar-group.js +12 -19
  82. package/dist/model/bar-stack.js +10 -17
  83. package/dist/model/bar.js +11 -18
  84. package/dist/model/base-model.js +4 -11
  85. package/dist/model/basic-number-card.js +13 -20
  86. package/dist/model/chart.js +7 -13
  87. package/dist/model/combination.js +15 -22
  88. package/dist/model/compare-bar.js +14 -21
  89. package/dist/model/completeness-group.js +11 -18
  90. package/dist/model/completeness.js +10 -17
  91. package/dist/model/dashboard.js +7 -14
  92. package/dist/model/funnel.js +14 -21
  93. package/dist/model/generic-model.js +135 -143
  94. package/dist/model/heat-map.js +9 -16
  95. package/dist/model/horizontal-bar.js +11 -18
  96. package/dist/model/horizontal-group-bar.js +10 -17
  97. package/dist/model/index.js +69 -93
  98. package/dist/model/line-group.js +13 -20
  99. package/dist/model/line.js +12 -19
  100. package/dist/model/map-bubble.js +14 -17
  101. package/dist/model/map.js +12 -19
  102. package/dist/model/mirror.js +13 -20
  103. package/dist/model/pie.js +12 -19
  104. package/dist/model/ring.js +12 -19
  105. package/dist/model/scatter.js +10 -17
  106. package/dist/model/stacked-horizontal-bar.js +11 -18
  107. package/dist/model/table-element.js +5 -12
  108. package/dist/model/table.js +7 -14
  109. package/dist/model/tree-map.js +7 -14
  110. package/dist/model/trend.js +11 -18
  111. package/dist/model/user.js +1 -7
  112. package/dist/model/world-map-bubble.js +12 -19
  113. package/dist/model/world-map.js +12 -19
  114. package/dist/services/map-json.js +14 -17
  115. package/dist/settings/advance-bar-settings/data-settings.js +36 -44
  116. package/dist/settings/advance-bar-settings/index.js +3 -20
  117. package/dist/settings/advance-bar-settings/style-settings.js +66 -73
  118. package/dist/settings/bar-settings/data-settings.js +39 -47
  119. package/dist/settings/bar-settings/index.js +3 -20
  120. package/dist/settings/bar-settings/style-settings.js +51 -59
  121. package/dist/settings/basic-number-card/data-settings.js +50 -57
  122. package/dist/settings/basic-number-card/index.js +3 -20
  123. package/dist/settings/basic-number-card/style-settings.js +19 -27
  124. package/dist/settings/combination-settings/data-settings.js +55 -64
  125. package/dist/settings/combination-settings/index.js +3 -20
  126. package/dist/settings/combination-settings/style-settings.js +67 -75
  127. package/dist/settings/completeness-settings/callbacks/callbacks.js +16 -27
  128. package/dist/settings/completeness-settings/data-settings/completion-settings.js +21 -28
  129. package/dist/settings/completeness-settings/data-settings/data-settings.js +25 -32
  130. package/dist/settings/completeness-settings/index.js +3 -20
  131. package/dist/settings/completeness-settings/style-settings.js +19 -26
  132. package/dist/settings/dashboard-settings/data-settings.js +44 -51
  133. package/dist/settings/dashboard-settings/index.js +2 -13
  134. package/dist/settings/data-settings.js +72 -79
  135. package/dist/settings/funnel-settings/components/dnd-item/dnd-item.js +12 -19
  136. package/dist/settings/funnel-settings/components/dnd-list.js +15 -23
  137. package/dist/settings/funnel-settings/components/funnel-label-setting.js +32 -40
  138. package/dist/settings/funnel-settings/components/funnel-layer-setting.js +22 -30
  139. package/dist/settings/funnel-settings/data-settings.js +23 -31
  140. package/dist/settings/funnel-settings/index.js +3 -20
  141. package/dist/settings/funnel-settings/style-settings.js +11 -19
  142. package/dist/settings/heat-map-settings/data-settings.js +18 -26
  143. package/dist/settings/heat-map-settings/index.js +3 -20
  144. package/dist/settings/heat-map-settings/style-settings.js +18 -26
  145. package/dist/settings/horizontal-bar-settings/data-settings.js +12 -19
  146. package/dist/settings/horizontal-bar-settings/index.js +3 -20
  147. package/dist/settings/horizontal-bar-settings/style-settings.js +12 -19
  148. package/dist/settings/index.js +57 -70
  149. package/dist/settings/map-settings/components/location-field-selector.js +10 -17
  150. package/dist/settings/map-settings/components/map-level-selector.js +11 -18
  151. package/dist/settings/map-settings/components/map-province-city-selector.js +19 -26
  152. package/dist/settings/map-settings/index.js +3 -20
  153. package/dist/settings/map-settings/map-data-settings.js +23 -30
  154. package/dist/settings/map-settings/map-style-settings.js +27 -35
  155. package/dist/settings/mirror-settings/data-settings.js +26 -34
  156. package/dist/settings/mirror-settings/index.js +2 -13
  157. package/dist/settings/pie-settings/data-settings.js +33 -41
  158. package/dist/settings/pie-settings/index.js +3 -20
  159. package/dist/settings/pie-settings/style-settings.js +47 -55
  160. package/dist/settings/scatter/data-settings.js +27 -34
  161. package/dist/settings/scatter/index.js +3 -12
  162. package/dist/settings/stacks-settings/index.js +19 -27
  163. package/dist/settings/stacks-settings/stack-item-settings.js +19 -27
  164. package/dist/settings/style-settings.js +65 -73
  165. package/dist/settings/table-element-settings/components/data-filter.js +49 -58
  166. package/dist/settings/table-element-settings/data-settings.js +21 -29
  167. package/dist/settings/table-element-settings/index.css +1 -31
  168. package/dist/settings/table-element-settings/index.js +2 -13
  169. package/dist/settings/table-settings/data-settings.js +113 -120
  170. package/dist/settings/table-settings/index.js +2 -13
  171. package/dist/settings/time-comparison-settings/data-settings.js +43 -51
  172. package/dist/settings/time-comparison-settings/index.js +3 -20
  173. package/dist/settings/time-comparison-settings/style-settings.js +44 -52
  174. package/dist/settings/trend-settings/data-settings.js +24 -32
  175. package/dist/settings/trend-settings/index.js +3 -20
  176. package/dist/settings/trend-settings/style-setting.js +19 -27
  177. package/dist/settings/widgets/basic-summary/index.js +59 -66
  178. package/dist/settings/widgets/chart-type/index.js +18 -26
  179. package/dist/settings/widgets/color-settings/index.js +72 -80
  180. package/dist/settings/widgets/common-data-settings.js +27 -34
  181. package/dist/settings/widgets/data-filter/index.js +59 -59
  182. package/dist/settings/widgets/data-sort.js +16 -24
  183. package/dist/settings/widgets/date-summary-item.js +26 -34
  184. package/dist/settings/widgets/display-values-settings/index.js +14 -22
  185. package/dist/settings/widgets/divider/index.js +8 -16
  186. package/dist/settings/widgets/font-settings/font-color-settings.js +11 -19
  187. package/dist/settings/widgets/font-settings/font-size-settings.js +14 -22
  188. package/dist/settings/widgets/font-settings/font-weight-settings.js +17 -25
  189. package/dist/settings/widgets/font-settings/index.js +4 -27
  190. package/dist/settings/widgets/group-by.js +52 -59
  191. package/dist/settings/widgets/min-max-setting.js +10 -18
  192. package/dist/settings/widgets/mininum-slice-percent.js +10 -18
  193. package/dist/settings/widgets/numeric-summary-item.js +25 -33
  194. package/dist/settings/widgets/select-line-type/index.js +10 -17
  195. package/dist/settings/widgets/select-table/index.js +9 -16
  196. package/dist/settings/widgets/select-view/index.js +20 -28
  197. package/dist/settings/widgets/stack.js +14 -22
  198. package/dist/settings/widgets/summary-method-setting.js +17 -25
  199. package/dist/settings/widgets/summary-settings.js +75 -82
  200. package/dist/settings/widgets/switch/index.js +9 -16
  201. package/dist/settings/widgets/text-horizontal-settings.js +15 -23
  202. package/dist/settings/widgets/time-picker.js +29 -37
  203. package/dist/settings/widgets/title-settings/index.js +29 -37
  204. package/dist/settings/widgets/title-settings/title-text.js +5 -12
  205. package/dist/settings/widgets/x-axios.js +0 -1
  206. package/dist/settings/widgets/y-axis-group-settings.js +65 -72
  207. package/dist/utils/cell-format-utils.js +25 -33
  208. package/dist/utils/cell-value-utils.js +4 -11
  209. package/dist/utils/chart-utils/base-utils.js +467 -367
  210. package/dist/utils/chart-utils/index.js +29 -40
  211. package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +78 -85
  212. package/dist/utils/chart-utils/original-data-utils/card-calculator.js +20 -21
  213. package/dist/utils/chart-utils/original-data-utils/combination-calculator.js +45 -52
  214. package/dist/utils/chart-utils/original-data-utils/compare-bar-chart-calculator.js +21 -28
  215. package/dist/utils/chart-utils/original-data-utils/completeness-calculator.js +33 -40
  216. package/dist/utils/chart-utils/original-data-utils/dashboard-calculator.js +28 -26
  217. package/dist/utils/chart-utils/original-data-utils/index.js +50 -57
  218. package/dist/utils/chart-utils/original-data-utils/mirror-calculator.js +19 -26
  219. package/dist/utils/chart-utils/original-data-utils/pivot-table-calculator.js +94 -97
  220. package/dist/utils/chart-utils/original-data-utils/scatter-calculator.js +19 -25
  221. package/dist/utils/chart-utils/original-data-utils/trend-calculator.js +50 -36
  222. package/dist/utils/chart-utils/sql-statistics-utils.js +385 -388
  223. package/dist/utils/chart.js +9 -17
  224. package/dist/utils/collaborator-manager.js +3 -9
  225. package/dist/utils/collaborator-utils.js +19 -31
  226. package/dist/utils/collaborator.js +6 -15
  227. package/dist/utils/color-utils.js +18 -29
  228. package/dist/utils/column-utils.js +88 -102
  229. package/dist/utils/common-utils.js +28 -53
  230. package/dist/utils/concurrency-manager.js +1 -7
  231. package/dist/utils/contexts.js +7 -11
  232. package/dist/utils/date-translate.js +12 -20
  233. package/dist/utils/digital-sign-utils.js +7 -14
  234. package/dist/utils/event-bus.js +1 -7
  235. package/dist/utils/hotkey.js +5 -11
  236. package/dist/utils/index.js +73 -219
  237. package/dist/utils/key-generator.js +2 -9
  238. package/dist/utils/map.js +22 -31
  239. package/dist/utils/object-utils.js +2 -8
  240. package/dist/utils/options-utils.js +10 -18
  241. package/dist/utils/row-record-utils.js +251 -183
  242. package/dist/utils/row-utils.js +27 -38
  243. package/dist/utils/search.js +24 -32
  244. package/dist/utils/sql/chart-data-sql.js +106 -112
  245. package/dist/utils/sql/column-2-sql-column.js +162 -172
  246. package/dist/utils/sql/index.js +3 -27
  247. package/dist/utils/trend-utils.js +50 -45
  248. package/dist/view/index.css +2 -8
  249. package/dist/view/index.js +102 -103
  250. package/dist/view/title/index.js +16 -24
  251. package/dist/view/wrapper/area-group.js +57 -57
  252. package/dist/view/wrapper/area.js +43 -51
  253. package/dist/view/wrapper/bar-compare.js +56 -48
  254. package/dist/view/wrapper/bar-custom-stack.js +73 -55
  255. package/dist/view/wrapper/bar-group.js +94 -73
  256. package/dist/view/wrapper/bar-stack.js +49 -57
  257. package/dist/view/wrapper/bar.js +40 -48
  258. package/dist/view/wrapper/basic-number-card.js +50 -34
  259. package/dist/view/wrapper/chart-component.js +164 -569
  260. package/dist/view/wrapper/combination.js +55 -63
  261. package/dist/view/wrapper/completeness-group.js +140 -93
  262. package/dist/view/wrapper/completeness.js +36 -44
  263. package/dist/view/wrapper/dashboard.js +104 -59
  264. package/dist/view/wrapper/funnel.js +40 -43
  265. package/dist/view/wrapper/heat-map.js +62 -70
  266. package/dist/view/wrapper/horizontal-bar-group.js +70 -58
  267. package/dist/view/wrapper/horizontal-bar-stack.js +48 -56
  268. package/dist/view/wrapper/horizontal-bar.js +41 -49
  269. package/dist/view/wrapper/index.js +107 -115
  270. package/dist/view/wrapper/line-group.js +49 -52
  271. package/dist/view/wrapper/line.js +42 -50
  272. package/dist/view/wrapper/map-bubble.js +40 -48
  273. package/dist/view/wrapper/map-world-bubble.js +40 -47
  274. package/dist/view/wrapper/map-world.js +42 -49
  275. package/dist/view/wrapper/map.js +42 -50
  276. package/dist/view/wrapper/mirror.js +41 -49
  277. package/dist/view/wrapper/pie.js +45 -53
  278. package/dist/view/wrapper/ring.js +50 -58
  279. package/dist/view/wrapper/scatter.js +50 -56
  280. package/dist/view/wrapper/table/index.js +14 -22
  281. package/dist/view/wrapper/table/one-dimension-table-no-numeric-columns.js +49 -57
  282. package/dist/view/wrapper/table/one-dimension-table-with-numeric-columns.js +53 -61
  283. package/dist/view/wrapper/table/pivot-table-display-name.js +82 -90
  284. package/dist/view/wrapper/table/two-dimension-table.js +85 -92
  285. package/dist/view/wrapper/table-element/components/dataset-utils.js +23 -36
  286. package/dist/view/wrapper/table-element/components/formatter.js +90 -99
  287. package/dist/view/wrapper/table-element/components/formatters/FileFormatter/index.js +23 -32
  288. package/dist/view/wrapper/table-element/components/formatters/formula-formatter.js +9 -16
  289. package/dist/view/wrapper/table-element/components/formatters/link-formatter.js +90 -97
  290. package/dist/view/wrapper/table-element/components/formula-formatter.js +9 -16
  291. package/dist/view/wrapper/table-element/components/link-formatter.js +90 -97
  292. package/dist/view/wrapper/table-element/components/record.js +13 -20
  293. package/dist/view/wrapper/table-element/components/records-body.js +9 -17
  294. package/dist/view/wrapper/table-element/components/records-header/index.js +7 -16
  295. package/dist/view/wrapper/table-element/components/records-header/records-header-cell.js +8 -16
  296. package/dist/view/wrapper/table-element/components/records.js +25 -33
  297. package/dist/view/wrapper/table-element/components/resize-column-handle/resize-column-handle.js +8 -13
  298. package/dist/view/wrapper/table-element/components/utils.js +6 -16
  299. package/dist/view/wrapper/table-element/components/value-display-utils.js +4 -11
  300. package/dist/view/wrapper/table-element/components/vertical-scrollbar/index.js +6 -13
  301. package/dist/view/wrapper/table-element/index.js +30 -43
  302. package/dist/view/wrapper/treemap.js +38 -46
  303. package/dist/view/wrapper/trend.js +80 -65
  304. package/package.json +15 -12
@@ -1,22 +1,14 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- var _react = _interopRequireDefault(require("react"));
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
11
- var _lodashEs = require("lodash-es");
12
- var d3 = _interopRequireWildcard(require("d3"));
13
- var _classnames = _interopRequireDefault(require("classnames"));
14
- var _constants = require("../../constants");
15
- var _utils = require("../../utils");
16
- var _intl = _interopRequireDefault(require("../../intl"));
17
- var _tooltip = _interopRequireDefault(require("../../components/tooltip"));
18
- var _chartComponent = _interopRequireDefault(require("./chart-component"));
19
- class Completeness extends _chartComponent.default {
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { debounce, cloneDeep } from 'lodash-es';
4
+ import * as d3 from 'd3';
5
+ import classNames from 'classnames';
6
+ import { CHART_THEME_COLOR } from '../../constants';
7
+ import { BaseUtils } from '../../utils';
8
+ import intl from '../../intl';
9
+ import ToolTip from '../../components/tooltip';
10
+ import ChartComponent from './chart-component';
11
+ class Completeness extends ChartComponent {
20
12
  constructor(props) {
21
13
  super(props);
22
14
  this.handleResize = () => {
@@ -39,10 +31,11 @@ class Completeness extends _chartComponent.default {
39
31
  this.initChart(this.container, chart === null || chart === void 0 ? void 0 : chart.id, initConfig);
40
32
  };
41
33
  this.drawChart = () => {
34
+ var _this$props$chart, _this$props$chart$con;
42
35
  let {
43
36
  result: data
44
37
  } = this.props;
45
- data = _utils.BaseUtils.formatEmptyName(data, '', _intl.default.get('Empty'));
38
+ data = BaseUtils.formatEmptyName(data, (_this$props$chart = this.props.chart) === null || _this$props$chart === void 0 ? void 0 : (_this$props$chart$con = _this$props$chart.config) === null || _this$props$chart$con === void 0 ? void 0 : _this$props$chart$con.column_groupby_column_key, intl.get('Empty'));
46
39
  if (!Array.isArray(data)) return;
47
40
  this.draw(data);
48
41
  };
@@ -53,7 +46,7 @@ class Completeness extends _chartComponent.default {
53
46
  chartColorTheme,
54
47
  columnGroupbyColumn
55
48
  } = this.props;
56
- const theme = _constants.CHART_THEME_COLOR[globalTheme];
49
+ const theme = CHART_THEME_COLOR[globalTheme];
57
50
  const {
58
51
  y_axis_auto_range,
59
52
  y_axis_min,
@@ -69,13 +62,21 @@ class Completeness extends _chartComponent.default {
69
62
  marginRight
70
63
  } = this.chartBoundingClientRect;
71
64
  this.markLastForCompleteness(data);
72
- const colors = _utils.BaseUtils.getCurrentTheme(chartColorTheme).colors;
65
+ const colors = BaseUtils.getCurrentTheme(chartColorTheme).colors;
66
+ // Normalize groupby to string before setColorMap to ensure consistent keys
67
+ data.forEach(item => {
68
+ if (Array.isArray(item.groupby)) {
69
+ item.groupby = item.groupby.join(', ');
70
+ }
71
+ });
73
72
  this.setColorMap(data, chartColorTheme, 'groupby', columnGroupbyColumn, chart);
74
73
  const newSeries = this.getGroupSeries(data, columnGroupbyColumn, chart);
75
74
 
76
75
  // Y axis
77
76
  const fy = d3.scaleBand().domain(newSeries.map(item => item[0])).range([chartHeight - insertPadding, insertPadding]).paddingInner(0.5).paddingOuter(0.1);
78
- const y = d3.scaleBand().domain(new Set(data.map(d => d.groupby))).range([0, fy.bandwidth()]).paddingInner(0).paddingOuter(0);
77
+
78
+ // y scale will be created per main group (local) to avoid overlap
79
+
79
80
  const yAxis = this.chart.append('g').attr('class', 'y-axis-wrapper').call(d3.axisLeft(fy).tickSizeOuter(0).tickPadding(0).tickSizeInner(5)).call(g => {
80
81
  g.selectAll('.domain').attr('stroke', theme.XAxisColor);
81
82
  g.selectAll('.tick line').attr('stroke', theme.XAxisColor);
@@ -85,7 +86,7 @@ class Completeness extends _chartComponent.default {
85
86
  const {
86
87
  width: axisWidth
87
88
  } = g.node().getBoundingClientRect();
88
- g.attr('transform', "translate(".concat(axisWidth, ", 0)")).attr('data-axisWidth', axisWidth);
89
+ g.attr('transform', `translate(${axisWidth}, 0)`).attr('data-axisWidth', axisWidth);
89
90
  this.checkTickOverlap(g, 'yAxis');
90
91
  });
91
92
 
@@ -93,7 +94,7 @@ class Completeness extends _chartComponent.default {
93
94
  const allSeries = this.getAllSeries(newSeries);
94
95
  const niceEnd = d3.nice(0, d3.max(allSeries, d => d.sumValue), 5)[1];
95
96
  const x = d3.scaleLinear().domain(y_axis_auto_range ? [0, niceEnd] : [y_axis_min || 0, y_axis_max || niceEnd]).range([Number(yAxis.node().getAttribute('data-axisWidth')), chartWidth - insertPadding - marginRight]);
96
- this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform', "translate(0, ".concat(chartHeight - insertPadding, ")")).call(d3.axisBottom(x).tickSizeInner(0).ticks(5)).call(g => {
97
+ this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform', `translate(0, ${chartHeight - insertPadding})`).call(d3.axisBottom(x).tickSizeInner(0).ticks(5)).call(g => {
97
98
  g.selectAll('.domain').remove();
98
99
  g.selectAll('.tick line').node() && g.selectAll('.tick line').node().remove(); // delete the first line
99
100
  g.selectAll('.tick line').attr('y2', -(chartHeight - insertPadding * 2)).attr('stroke', theme.gridColor).attr('stroke-dasharray', '8,3');
@@ -102,39 +103,65 @@ class Completeness extends _chartComponent.default {
102
103
  });
103
104
 
104
105
  // Rect group
105
- const contentWrapper = this.chart.append('g').attr('class', 'content-wrapper').attr('transform', "translate(".concat(Number(yAxis.node().getAttribute('data-axisWidth')), ", 0)"));
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, ")");
106
+ const contentWrapper = this.chart.append('g').attr('class', 'content-wrapper').attr('transform', `translate(${Number(yAxis.node().getAttribute('data-axisWidth'))}, 0)`);
107
+ const mainGroups = contentWrapper.selectAll().data(newSeries).join('g').attr('transform', _ref => {
108
+ let [name] = _ref;
109
+ return `translate(0, ${fy(name)})`;
110
110
  }).attr('data-transform', _ref2 => {
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 => {
111
+ let [name] = _ref2;
112
+ return `${fy(name)}`;
113
+ });
114
+ const colorMap = this.colorMap;
115
+ const self = this;
116
+
117
+ // Calculate max sub group count across all main groups for uniform bar height
118
+ const maxSubGroupCount = Math.max(...newSeries.map(_ref3 => {
119
+ let [_, subGroups] = _ref3;
120
+ return subGroups.length;
121
+ }));
122
+ const uniformBandwidth = fy.bandwidth() / maxSubGroupCount;
123
+ mainGroups.each(function (_ref4) {
124
+ let [mainGroupName, subGroups] = _ref4;
125
+ const mainGroupNode = d3.select(this);
126
+
127
+ // Create local y scale for this main group, using uniform bandwidth
128
+ const localY = d3.scaleBand().domain(subGroups.map(sg => sg[0])).range([0, uniformBandwidth * subGroups.length]).paddingInner(0).paddingOuter(0);
129
+ mainGroupNode.selectAll().data(subGroups).join('g').attr('data-completedRate', _ref5 => {
130
+ var _restItem$rawData, _completedItem$rawDat;
131
+ let [_, d] = _ref5;
132
+ const restItem = d.find(item => item.key === 'rest');
133
+ const completedItem = d.find(item => item.key === 'completed');
134
+ const restValue = restItem ? Number(((_restItem$rawData = restItem.rawData) === null || _restItem$rawData === void 0 ? void 0 : _restItem$rawData.value) || 0) : 0;
135
+ const completedValue = completedItem ? Number(((_completedItem$rawDat = completedItem.rawData) === null || _completedItem$rawDat === void 0 ? void 0 : _completedItem$rawDat.value) || 0) : 0;
136
+ const targetValue = restValue + completedValue;
137
+ if (!targetValue) return '';
138
+ return `${Math.round(completedValue / targetValue * 100)}%`;
139
+ }).selectAll().data(_ref6 => {
140
+ let [_, d] = _ref6;
141
+ return d;
142
+ }).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 => {
143
+ const key = d.key;
144
+ const groupby = d.groupby;
145
+ if (key === 'rest') {
146
+ return '#bdbdbd';
147
+ }
148
+ if (column_groupby_column_key) {
149
+ return colorMap[groupby];
150
+ }
151
+ return colors[0];
152
+ }).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) => {
153
+ self.props.toggleRecords(data);
154
+ }).on('mouseover', event => {
155
+ self.showTooltip(event);
156
+ self.handleAcitveAndInActiveState('inActive', event);
157
+ }).on('mousemove', event => {
158
+ self.moveTooltip(event);
159
+ }).on('mouseleave', event => {
160
+ self.hiddenTooltip();
161
+ self.handleAcitveAndInActiveState('active', event);
162
+ });
163
+ });
164
+ mainGroups.call(g => {
138
165
  // add rect borderRadius
139
166
  const allGroup = this.getAllGroup(contentWrapper);
140
167
  allGroup.forEach(group => {
@@ -163,16 +190,6 @@ class Completeness extends _chartComponent.default {
163
190
  });
164
191
  });
165
192
  }
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);
176
193
  });
177
194
  this.setLegend({
178
195
  legendName: 'groupby',
@@ -216,7 +233,7 @@ class Completeness extends _chartComponent.default {
216
233
  title: event.currentTarget.getAttribute('data-tooltipTitle'),
217
234
  items: [{
218
235
  color: event.currentTarget.getAttribute('data-tooltipName') === 'rest' ? '#bdbdbd' : this.colorMap[groupby],
219
- name: _intl.default.get(event.currentTarget.getAttribute('data-tooltipName')),
236
+ name: intl.get(event.currentTarget.getAttribute('data-tooltipName')),
220
237
  value: event.currentTarget.getAttribute('data-value')
221
238
  }]
222
239
  };
@@ -254,35 +271,65 @@ class Completeness extends _chartComponent.default {
254
271
  });
255
272
  };
256
273
  this.getGroupSeries = (data, columnGroupbyColumn, chart) => {
257
- const sortedData = _utils.BaseUtils.sortDataByGroupName((0, _lodashEs.cloneDeep)(data), 'groupby', columnGroupbyColumn, chart);
274
+ const sortedData = BaseUtils.sortDataByGroupName(cloneDeep(data), 'groupby', columnGroupbyColumn, chart);
275
+ sortedData.forEach(item => {
276
+ if (Array.isArray(item.groupby)) {
277
+ item.groupby = item.groupby.join(', ');
278
+ }
279
+ });
258
280
  const groups = d3.groups(sortedData, d => d.name);
281
+ // Sort main groups by name for stable order
282
+ groups.sort((a, b) => String(a[0]).localeCompare(String(b[0])));
259
283
  groups.forEach((item, index) => {
260
- const itemData = (0, _lodashEs.cloneDeep)(item[1]);
284
+ const itemData = cloneDeep(item[1]);
285
+ const valueMap = d3.rollup(itemData, v => d3.sum(v, d => d.value), d => d.groupby, d => d.group_name);
286
+ const rawDataMap = d3.rollup(itemData, v => v[0], d => d.groupby, d => d.group_name);
261
287
 
262
288
  // get series
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));
289
+ const series = d3.stack().keys(d3.union(itemData.map(d => d.group_name))).value((_ref7, key) => {
290
+ let [_, group] = _ref7;
291
+ return group.get(key) || 0;
292
+ })(valueMap);
268
293
  item[1] = d3.groups(itemData, d => d.groupby);
294
+ // Sort sub groups by groupby for stable order
295
+ item[1].sort((a, b) => String(a[0]).localeCompare(String(b[0])));
269
296
  item[1].forEach((group, index) => {
297
+ var _completedItem$rawDat2, _restItem$rawData2;
270
298
  const groupKey = group[0];
271
299
  group[1] = [];
272
300
  series.forEach(serie => {
273
301
  const serieKey = serie.key;
274
302
  serie.forEach(item => {
275
303
  if (item.data[0] === groupKey) {
304
+ var _valueMap$get, _rawDataMap$get;
305
+ const aggregatedValue = ((_valueMap$get = valueMap.get(groupKey)) === null || _valueMap$get === void 0 ? void 0 : _valueMap$get.get(serieKey)) || 0;
306
+ const rawData = (_rawDataMap$get = rawDataMap.get(groupKey)) === null || _rawDataMap$get === void 0 ? void 0 : _rawDataMap$get.get(serieKey);
276
307
  const newItem = {
277
308
  ...item,
278
309
  key: serieKey,
279
310
  serieIndex: index,
280
- rawData: item.data[1].get(serieKey)
311
+ groupby: groupKey,
312
+ rawData: {
313
+ ...(rawData || {}),
314
+ value: aggregatedValue,
315
+ groupby: groupKey,
316
+ group_name: serieKey
317
+ }
281
318
  };
282
319
  group[1].push(newItem);
283
320
  }
284
321
  });
285
322
  });
323
+ const completedItem = group[1].find(d => d.key === 'completed');
324
+ const restItem = group[1].find(d => d.key === 'rest');
325
+ const completedValue = completedItem ? Number(((_completedItem$rawDat2 = completedItem.rawData) === null || _completedItem$rawDat2 === void 0 ? void 0 : _completedItem$rawDat2.value) || 0) : 0;
326
+ const restValue = restItem ? Number(((_restItem$rawData2 = restItem.rawData) === null || _restItem$rawData2 === void 0 ? void 0 : _restItem$rawData2.value) || 0) : 0;
327
+ const targetValue = completedValue + restValue;
328
+ if (!targetValue) {
329
+ restItem && (restItem.rawData.completedRate = 'empty');
330
+ } else {
331
+ restItem && (restItem.rawData.completedRate = Math.round(completedValue / targetValue * 100));
332
+ }
286
333
  let sumValue = 0;
287
334
  group[1].forEach(g => {
288
335
  sumValue = sumValue + g[1];
@@ -336,7 +383,7 @@ class Completeness extends _chartComponent.default {
336
383
  }).on('mouseleave', event => {
337
384
  this.hiddenTooltip();
338
385
  this.handleAcitveAndInActiveState('active', event);
339
- }).append('xhtml:div').attr('style', "width: 100%; height: 100%; background-color: ".concat(rect.getAttribute('fill'), "; border-radius: 0px ").concat(xWidth * borderRadius, "px ").concat(xWidth * borderRadius, "px 0px"));
386
+ }).append('xhtml:div').attr('style', `width: 100%; height: 100%; background-color: ${rect.getAttribute('fill')}; border-radius: 0px ${xWidth * borderRadius}px ${xWidth * borderRadius}px 0px`);
340
387
 
341
388
  // Remove old rect
342
389
  d3.select(rect).remove();
@@ -351,12 +398,12 @@ class Completeness extends _chartComponent.default {
351
398
  super.componentDidMount();
352
399
  this.createChart();
353
400
  this.drawChart();
354
- this.debouncedHandleResize = (0, _lodashEs.debounce)(this.handleResize, 300);
401
+ this.debouncedHandleResize = debounce(this.handleResize, 300);
355
402
  window.addEventListener('resize', this.debouncedHandleResize);
356
403
  }
357
404
  componentDidUpdate(prevProps) {
358
405
  super.componentDidUpdate(prevProps);
359
- if (_utils.BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
406
+ if (BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
360
407
  this.destroyChart();
361
408
  this.createChart();
362
409
  this.drawChart();
@@ -375,13 +422,13 @@ class Completeness extends _chartComponent.default {
375
422
  tooltipData,
376
423
  toolTipPosition
377
424
  } = this.state;
378
- return /*#__PURE__*/_react.default.createElement("div", {
425
+ return /*#__PURE__*/React.createElement("div", {
379
426
  ref: ref => this.container = ref,
380
- className: (0, _classnames.default)('sea-chart-container', {
427
+ className: classNames('sea-chart-container', {
381
428
  'show-x-axis-label': this.isShowHorizontalAxisLabel(chart),
382
429
  'show-y-axis-label': this.isShowVerticalAxisLabel(chart)
383
430
  })
384
- }, /*#__PURE__*/_react.default.createElement(_tooltip.default, {
431
+ }, /*#__PURE__*/React.createElement(ToolTip, {
385
432
  tooltipData: tooltipData,
386
433
  toolTipPosition: toolTipPosition,
387
434
  chart: this.chart
@@ -389,15 +436,15 @@ class Completeness extends _chartComponent.default {
389
436
  }
390
437
  }
391
438
  Completeness.propTypes = {
392
- canvasStyle: _propTypes.default.object,
393
- chart: _propTypes.default.object,
394
- groupbyColumn: _propTypes.default.object,
395
- columnGroupbyColumn: _propTypes.default.object,
396
- summaryColumn: _propTypes.default.object,
397
- result: _propTypes.default.array,
398
- tables: _propTypes.default.array,
399
- globalTheme: _propTypes.default.string,
400
- chartColorTheme: _propTypes.default.string,
401
- toggleRecords: _propTypes.default.func
439
+ canvasStyle: PropTypes.object,
440
+ chart: PropTypes.object,
441
+ groupbyColumn: PropTypes.object,
442
+ columnGroupbyColumn: PropTypes.object,
443
+ summaryColumn: PropTypes.object,
444
+ result: PropTypes.array,
445
+ tables: PropTypes.array,
446
+ globalTheme: PropTypes.string,
447
+ chartColorTheme: PropTypes.string,
448
+ toggleRecords: PropTypes.func
402
449
  };
403
- var _default = exports.default = Completeness;
450
+ export default Completeness;
@@ -1,22 +1,14 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- var _react = _interopRequireDefault(require("react"));
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
11
- var _lodashEs = require("lodash-es");
12
- var d3 = _interopRequireWildcard(require("d3"));
13
- var _classnames = _interopRequireDefault(require("classnames"));
14
- var _constants = require("../../constants");
15
- var _utils = require("../../utils");
16
- var _intl = _interopRequireDefault(require("../../intl"));
17
- var _tooltip = _interopRequireDefault(require("../../components/tooltip"));
18
- var _chartComponent = _interopRequireDefault(require("./chart-component"));
19
- class Completeness 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 classNames from 'classnames';
6
+ import { CHART_THEME_COLOR } from '../../constants';
7
+ import { BaseUtils } from '../../utils';
8
+ import intl from '../../intl';
9
+ import ToolTip from '../../components/tooltip';
10
+ import ChartComponent from './chart-component';
11
+ class Completeness extends ChartComponent {
20
12
  constructor(props) {
21
13
  super(props);
22
14
  this.handleResize = () => {
@@ -42,7 +34,7 @@ class Completeness extends _chartComponent.default {
42
34
  let {
43
35
  result: data
44
36
  } = this.props;
45
- data = _utils.BaseUtils.formatEmptyName(data, '', _intl.default.get('Empty'));
37
+ data = BaseUtils.formatEmptyName(data, '', intl.get('Empty'));
46
38
  if (!Array.isArray(data)) return;
47
39
  this.draw(data);
48
40
  };
@@ -52,7 +44,7 @@ class Completeness extends _chartComponent.default {
52
44
  globalTheme,
53
45
  chartColorTheme
54
46
  } = this.props;
55
- const theme = _constants.CHART_THEME_COLOR[globalTheme];
47
+ const theme = CHART_THEME_COLOR[globalTheme];
56
48
  const {
57
49
  y_axis_auto_range,
58
50
  y_axis_min,
@@ -66,7 +58,7 @@ class Completeness extends _chartComponent.default {
66
58
  insertPadding,
67
59
  marginRight
68
60
  } = this.chartBoundingClientRect;
69
- const colors = _utils.BaseUtils.getCurrentTheme(chartColorTheme).colors;
61
+ const colors = BaseUtils.getCurrentTheme(chartColorTheme).colors;
70
62
  this.markFirstOrLast(data, 'last');
71
63
  const series = d3.stack().keys(d3.union(data.map(d => d.group_name))).value((_ref, key) => {
72
64
  var _group$get;
@@ -86,14 +78,14 @@ class Completeness extends _chartComponent.default {
86
78
  const {
87
79
  width: axisWidth
88
80
  } = g.node().getBoundingClientRect();
89
- g.attr('transform', "translate(".concat(axisWidth, ", 0)")).attr('data-axisWidth', axisWidth);
81
+ g.attr('transform', `translate(${axisWidth}, 0)`).attr('data-axisWidth', axisWidth);
90
82
  this.checkTickOverlap(g, 'yAxis');
91
83
  });
92
84
 
93
85
  // X axis
94
86
  const niceEnd = d3.nice(0, d3.max(newSeries, d => d[1].sumValue), 5)[1];
95
87
  const x = d3.scaleLinear().domain(y_axis_auto_range ? [0, niceEnd] : [y_axis_min || 0, y_axis_max || niceEnd]).range([Number(yAxis.node().getAttribute('data-axisWidth')), chartWidth - insertPadding - marginRight]);
96
- this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform', "translate(0, ".concat(chartHeight - insertPadding, ")")).call(d3.axisBottom(x).tickSizeInner(0).ticks(5)).call(g => {
88
+ this.chart.append('g').attr('class', 'x-axis-wrapper').attr('transform', `translate(0, ${chartHeight - insertPadding})`).call(d3.axisBottom(x).tickSizeInner(0).ticks(5)).call(g => {
97
89
  g.selectAll('.domain').remove();
98
90
  g.selectAll('.tick line').node() && g.selectAll('.tick line').node().remove(); // delete the first line
99
91
  g.selectAll('.tick line').attr('y2', -(chartHeight - insertPadding * 2)).attr('stroke', theme.gridColor).attr('stroke-dasharray', '8,3');
@@ -102,7 +94,7 @@ class Completeness extends _chartComponent.default {
102
94
  });
103
95
 
104
96
  // Rect group
105
- const contentWrapper = this.chart.append('g').attr('class', 'content-wrapper').attr('transform', "translate(".concat(Number(yAxis.node().getAttribute('data-axisWidth')), ", 0)"));
97
+ const contentWrapper = this.chart.append('g').attr('class', 'content-wrapper').attr('transform', `translate(${Number(yAxis.node().getAttribute('data-axisWidth'))}, 0)`);
106
98
  contentWrapper.selectAll().data(newSeries).join('g').attr('data-completedRate', d => {
107
99
  const restData = d[1].find(item => item.key === 'rest');
108
100
  const completedRate = restData.data.completedRate;
@@ -179,12 +171,12 @@ class Completeness extends _chartComponent.default {
179
171
  const {
180
172
  chartColorTheme
181
173
  } = this.props;
182
- const colors = _utils.BaseUtils.getCurrentTheme(chartColorTheme).colors;
174
+ const colors = BaseUtils.getCurrentTheme(chartColorTheme).colors;
183
175
  const newTooltipData = {
184
176
  title: event.currentTarget.getAttribute('data-tooltipTitle'),
185
177
  items: [{
186
178
  color: event.currentTarget.getAttribute('data-tooltipTitle') === 'rest' ? '#bdbdbd' : colors[0],
187
- name: _intl.default.get(event.currentTarget.getAttribute('data-tooltipName')),
179
+ name: intl.get(event.currentTarget.getAttribute('data-tooltipName')),
188
180
  value: event.currentTarget.getAttribute('data-value')
189
181
  }]
190
182
  };
@@ -279,7 +271,7 @@ class Completeness extends _chartComponent.default {
279
271
  }).on('mouseleave', event => {
280
272
  this.hiddenTooltip();
281
273
  this.handleAcitveAndInActiveState('active', event);
282
- }).append('xhtml:div').attr('style', "width: 100%; height: 100%; background-color: ".concat(rect.getAttribute('fill'), "; border-radius: 0px ").concat(xWidth * borderRadius, "px ").concat(xWidth * borderRadius, "px 0px"));
274
+ }).append('xhtml:div').attr('style', `width: 100%; height: 100%; background-color: ${rect.getAttribute('fill')}; border-radius: 0px ${xWidth * borderRadius}px ${xWidth * borderRadius}px 0px`);
283
275
 
284
276
  // Remove old rect
285
277
  d3.select(rect).remove();
@@ -294,12 +286,12 @@ class Completeness extends _chartComponent.default {
294
286
  super.componentDidMount();
295
287
  this.createChart();
296
288
  this.drawChart();
297
- this.debouncedHandleResize = (0, _lodashEs.debounce)(this.handleResize, 300);
289
+ this.debouncedHandleResize = debounce(this.handleResize, 300);
298
290
  window.addEventListener('resize', this.debouncedHandleResize);
299
291
  }
300
292
  componentDidUpdate(prevProps) {
301
293
  super.componentDidUpdate(prevProps);
302
- if (_utils.BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
294
+ if (BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
303
295
  this.destroyChart();
304
296
  this.createChart();
305
297
  this.drawChart();
@@ -318,13 +310,13 @@ class Completeness extends _chartComponent.default {
318
310
  tooltipData,
319
311
  toolTipPosition
320
312
  } = this.state;
321
- return /*#__PURE__*/_react.default.createElement("div", {
313
+ return /*#__PURE__*/React.createElement("div", {
322
314
  ref: ref => this.container = ref,
323
- className: (0, _classnames.default)('sea-chart-container', {
315
+ className: classNames('sea-chart-container', {
324
316
  'show-x-axis-label': this.isShowHorizontalAxisLabel(chart),
325
317
  'show-y-axis-label': this.isShowVerticalAxisLabel(chart)
326
318
  })
327
- }, /*#__PURE__*/_react.default.createElement(_tooltip.default, {
319
+ }, /*#__PURE__*/React.createElement(ToolTip, {
328
320
  tooltipData: tooltipData,
329
321
  toolTipPosition: toolTipPosition,
330
322
  chart: this.chart
@@ -332,15 +324,15 @@ class Completeness extends _chartComponent.default {
332
324
  }
333
325
  }
334
326
  Completeness.propTypes = {
335
- canvasStyle: _propTypes.default.object,
336
- chart: _propTypes.default.object,
337
- groupbyColumn: _propTypes.default.object,
338
- columnGroupbyColumn: _propTypes.default.object,
339
- summaryColumn: _propTypes.default.object,
340
- result: _propTypes.default.array,
341
- tables: _propTypes.default.array,
342
- globalTheme: _propTypes.default.string,
343
- chartColorTheme: _propTypes.default.string,
344
- toggleRecords: _propTypes.default.func
327
+ canvasStyle: PropTypes.object,
328
+ chart: PropTypes.object,
329
+ groupbyColumn: PropTypes.object,
330
+ columnGroupbyColumn: PropTypes.object,
331
+ summaryColumn: PropTypes.object,
332
+ result: PropTypes.array,
333
+ tables: PropTypes.array,
334
+ globalTheme: PropTypes.string,
335
+ chartColorTheme: PropTypes.string,
336
+ toggleRecords: PropTypes.func
345
337
  };
346
- var _default = exports.default = Completeness;
338
+ export default Completeness;