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,36 @@
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 _constants = require("../../constants");
14
- var _utils = require("../../utils");
15
- var _tooltip = _interopRequireDefault(require("../../components/tooltip"));
16
- var _chartComponent = _interopRequireDefault(require("./chart-component"));
17
- class Dashboard 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 { CHART_THEME_COLOR } from '../../constants';
6
+ import { BaseUtils, isFunction } from '../../utils';
7
+ import ToolTip from '../../components/tooltip';
8
+ import ChartComponent from './chart-component';
9
+ class Dashboard extends ChartComponent {
18
10
  constructor(props) {
19
11
  super(props);
12
+ this.handleClickNumber = () => {
13
+ const {
14
+ toggleRecords,
15
+ result
16
+ } = this.props;
17
+ if (!toggleRecords) return;
18
+ if (typeof result === 'object' && result !== null && result.rows) {
19
+ toggleRecords({
20
+ rows: result.rows
21
+ });
22
+ } else {
23
+ toggleRecords({
24
+ isQueryBySql: true
25
+ });
26
+ }
27
+ };
28
+ this.componentDidMount = () => {
29
+ this.createChart();
30
+ this.drawChart();
31
+ this.debouncedHandleResize = debounce(this.handleResize, 300);
32
+ window.addEventListener('resize', this.debouncedHandleResize);
33
+ };
20
34
  this.handleResize = () => {
21
35
  this.destroyChart();
22
36
  this.createChart();
@@ -37,7 +51,7 @@ class Dashboard extends _chartComponent.default {
37
51
  customRender
38
52
  } = this.props;
39
53
  this.draw(data);
40
- (0, _utils.isFunction)(customRender) && customRender(this.chart);
54
+ isFunction(customRender) && customRender(this.chart);
41
55
  };
42
56
  this.draw = data => {
43
57
  const {
@@ -67,7 +81,7 @@ class Dashboard extends _chartComponent.default {
67
81
  const top = height / 2 + insertPadding;
68
82
  const offsetX = (chartWidth - insertPadding - insertPadding - width) / 2;
69
83
  const offsetY = (chartHeight - insertPadding - insertPadding - height) / 2;
70
- d3.select(g.node().parentNode).attr('transform', "translate(".concat(left + offsetX, ", ").concat(top + offsetY, ")"));
84
+ d3.select(g.node().parentNode).attr('transform', `translate(${left + offsetX}, ${top + offsetY})`);
71
85
 
72
86
  // Draw uncompleted path
73
87
  if (formatValue < 100) {
@@ -89,14 +103,17 @@ class Dashboard extends _chartComponent.default {
89
103
  const {
90
104
  globalTheme
91
105
  } = this.props;
92
- const theme = _constants.CHART_THEME_COLOR[globalTheme];
106
+ const theme = CHART_THEME_COLOR[globalTheme];
93
107
  const ticks = Array.from({
94
108
  length: 51
95
109
  }, (_, i) => i);
96
110
  const lineInnerRadius = arc.innerRadius()();
97
111
  const x = d3.scaleBand().domain(ticks).range([startAngle, endAngle]).paddingInner(1).paddingOuter(0);
98
- this.chart.append('g').attr('class', 'ticks-line-wrapper').attr('transform', "translate(".concat(left + offsetX, ", ").concat(top + offsetY, ")")).selectAll().data(x.domain()).join('g').attr('transform', (d, index) => {
99
- return "\n rotate(".concat(x(d) * 180 / Math.PI - 90, ")\n translate(").concat(lineInnerRadius, ",0)\n ");
112
+ this.chart.append('g').attr('class', 'ticks-line-wrapper').attr('transform', `translate(${left + offsetX}, ${top + offsetY})`).selectAll().data(x.domain()).join('g').attr('transform', (d, index) => {
113
+ return `
114
+ rotate(${x(d) * 180 / Math.PI - 90})
115
+ translate(${lineInnerRadius},0)
116
+ `;
100
117
  }).attr('data-value', d => d).call(g => {
101
118
  g.nodes().forEach(group => {
102
119
  const value = Number(group.getAttribute('data-value'));
@@ -109,16 +126,16 @@ class Dashboard extends _chartComponent.default {
109
126
  const rotateVal = ((x(value) + x.bandwidth() / 2) * 180 / Math.PI - 90) * -1; // -1 is Rotate the text
110
127
  d3.select(group).append('text').attr('transform', () => {
111
128
  if (x(value) <= -(Math.PI / 4)) {
112
- return "translate(-25,-5) rotate(".concat(rotateVal, ")");
129
+ return `translate(-25,-5) rotate(${rotateVal})`;
113
130
  }
114
131
  if (x(value) <= 0) {
115
- return "translate(-30,-5) rotate(".concat(rotateVal, ")");
132
+ return `translate(-30,-5) rotate(${rotateVal})`;
116
133
  }
117
134
  if (x(value) <= Math.PI / 4) {
118
- return "translate(-30,-2) rotate(".concat(rotateVal, ")");
135
+ return `translate(-30,-2) rotate(${rotateVal})`;
119
136
  }
120
137
  if (x(value) <= Math.PI) {
121
- return "translate(-30,3) rotate(".concat(rotateVal, ")");
138
+ return `translate(-30,3) rotate(${rotateVal})`;
122
139
  }
123
140
  }).text(text).attr('fill', theme.textColor);
124
141
  }
@@ -133,7 +150,7 @@ class Dashboard extends _chartComponent.default {
133
150
 
134
151
  // Pointer
135
152
  d3.select(wrapper).append('g').attr('class', 'pointer-wrapper').append('rect').attr('x', -2).attr('y', -78).attr('width', 6).attr('height', 70).attr('fill', '#1890FF').attr('rx', 3).attr('transform', () => {
136
- return "rotate(".concat(rotate, ")");
153
+ return `rotate(${rotate})`;
137
154
  });
138
155
  };
139
156
  this.drawUncompletedPath = (wrapper, innerRadius, outerRadius, startAngle, endAngle) => {
@@ -148,25 +165,59 @@ class Dashboard extends _chartComponent.default {
148
165
  const {
149
166
  name
150
167
  } = chart.config;
151
- const theme = _constants.CHART_THEME_COLOR[globalTheme];
168
+ const theme = CHART_THEME_COLOR[globalTheme];
152
169
  const {
153
170
  height: chartHeight
154
171
  } = this.chartBoundingClientRect;
172
+ const {
173
+ toggleRecords
174
+ } = this.props;
175
+ const {
176
+ font_size,
177
+ font_color,
178
+ font_weight,
179
+ text_align,
180
+ card_label_font_size,
181
+ label_font_color,
182
+ label_text_align,
183
+ label_font_weight
184
+ } = chart.config;
185
+ const {
186
+ width: chartWidth,
187
+ height: fullChartHeight
188
+ } = this.chartBoundingClientRect;
189
+ const radius = Math.min(chartWidth, fullChartHeight) / 2 * 0.75;
190
+ const alignOffset = radius * 0.25;
191
+ const getTextAnchorAndX = align => {
192
+ const v = (align || '').toLowerCase();
193
+ if (v === 'left') {
194
+ return {
195
+ textAnchor: 'end',
196
+ x: -alignOffset
197
+ };
198
+ }
199
+ if (v === 'right') {
200
+ return {
201
+ textAnchor: 'start',
202
+ x: alignOffset
203
+ };
204
+ }
205
+ return {
206
+ textAnchor: 'middle',
207
+ x: 0
208
+ };
209
+ };
210
+ const titleAlign = getTextAnchorAndX(label_text_align);
211
+ const numberAlign = getTextAnchorAndX(text_align);
155
212
  const totalWrapper = d3.select(wrapper).append('g').attr('class', 'total-wrapper');
156
213
  // title
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
- });
214
+ totalWrapper.append('text').attr('fill', label_font_color || theme.textColor).attr('font-size', card_label_font_size || (chartHeight > 240 ? 20 : 12)).attr('font-weight', label_font_weight).attr('text-anchor', titleAlign.textAnchor).attr('x', titleAlign.x).text(name).attr('dy', 50);
163
215
 
164
216
  // total
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)));
217
+ totalWrapper.append('text').attr('fill', font_color || theme.textColor).attr('font-size', font_size || (chartHeight > 240 ? 36 : 16)).attr('font-weight', font_weight).attr('text-anchor', numberAlign.textAnchor).attr('x', numberAlign.x).text(`${formatValue}%`).attr('dy', 90).style('cursor', toggleRecords ? 'pointer' : 'default').on('click', () => {
218
+ if (toggleRecords) {
219
+ this.handleClickNumber();
220
+ }
170
221
  });
171
222
  };
172
223
  this.chart = null;
@@ -175,15 +226,9 @@ class Dashboard extends _chartComponent.default {
175
226
  toolTipPosition: null
176
227
  };
177
228
  }
178
- componentDidMount() {
179
- this.createChart();
180
- this.drawChart();
181
- this.debouncedHandleResize = (0, _lodashEs.debounce)(this.handleResize, 300);
182
- window.addEventListener('resize', this.debouncedHandleResize);
183
- }
184
229
  componentDidUpdate(prevProps) {
185
230
  super.componentDidUpdate(prevProps);
186
- if (_utils.BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
231
+ if (BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
187
232
  this.destroyChart();
188
233
  this.createChart();
189
234
  this.drawChart();
@@ -198,10 +243,10 @@ class Dashboard extends _chartComponent.default {
198
243
  tooltipData,
199
244
  toolTipPosition
200
245
  } = this.state;
201
- return /*#__PURE__*/_react.default.createElement("div", {
246
+ return /*#__PURE__*/React.createElement("div", {
202
247
  ref: ref => this.container = ref,
203
248
  className: "sea-chart-container"
204
- }, /*#__PURE__*/_react.default.createElement(_tooltip.default, {
249
+ }, /*#__PURE__*/React.createElement(ToolTip, {
205
250
  tooltipData: tooltipData,
206
251
  toolTipPosition: toolTipPosition,
207
252
  chart: this.chart
@@ -209,15 +254,15 @@ class Dashboard extends _chartComponent.default {
209
254
  }
210
255
  }
211
256
  Dashboard.propTypes = {
212
- canvasStyle: _propTypes.default.object,
213
- chart: _propTypes.default.object,
214
- groupbyColumn: _propTypes.default.object,
215
- summaryColumn: _propTypes.default.object,
216
- result: _propTypes.default.number,
217
- tables: _propTypes.default.array,
218
- globalTheme: _propTypes.default.string,
219
- chartColorTheme: _propTypes.default.string,
220
- toggleRecords: _propTypes.default.func,
221
- customRender: _propTypes.default.func
257
+ canvasStyle: PropTypes.object,
258
+ chart: PropTypes.object,
259
+ groupbyColumn: PropTypes.object,
260
+ summaryColumn: PropTypes.object,
261
+ result: PropTypes.oneOfType([PropTypes.number, PropTypes.object]),
262
+ tables: PropTypes.array,
263
+ globalTheme: PropTypes.string,
264
+ chartColorTheme: PropTypes.string,
265
+ toggleRecords: PropTypes.func,
266
+ customRender: PropTypes.func
222
267
  };
223
- var _default = exports.default = Dashboard;
268
+ export default Dashboard;
@@ -1,21 +1,13 @@
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 _tooltip = _interopRequireDefault(require("../../components/tooltip"));
17
- var _chartComponent = _interopRequireDefault(require("./chart-component"));
18
- class Funnel 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 { FUNNEL_LABEL_FORMAT, FUNNEL_LABEL_POSITIONS, CHART_THEME_COLOR } from '../../constants';
7
+ import { BaseUtils, getSortedDataByGivenOrder } from '../../utils';
8
+ import ToolTip from '../../components/tooltip';
9
+ import ChartComponent from './chart-component';
10
+ class Funnel extends ChartComponent {
19
11
  constructor(props) {
20
12
  super(props);
21
13
  this.handleResize = () => {
@@ -42,7 +34,7 @@ class Funnel extends _chartComponent.default {
42
34
  funnel_accumulate_values
43
35
  } = chart.config;
44
36
  if (!x_axis_option_list.length) return;
45
- const sortedData = (0, _utils.getSortedDataByGivenOrder)(data, x_axis_option_list);
37
+ const sortedData = getSortedDataByGivenOrder(data, x_axis_option_list);
46
38
  const formatSortedData = this.formatSortedData(sortedData, funnel_accumulate_values);
47
39
  this.draw(formatSortedData);
48
40
  };
@@ -63,7 +55,7 @@ class Funnel extends _chartComponent.default {
63
55
  items: [{
64
56
  color: colorScale(data === null || data === void 0 ? void 0 : data.name),
65
57
  name: data === null || data === void 0 ? void 0 : data.name,
66
- value: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(data === null || data === void 0 ? void 0 : data.value), y_axis_summary_method)
58
+ value: BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(data === null || data === void 0 ? void 0 : data.value), y_axis_summary_method)
67
59
  }]
68
60
  };
69
61
  this.setState({
@@ -116,8 +108,8 @@ class Funnel extends _chartComponent.default {
116
108
  height: chartHeight,
117
109
  insertPadding
118
110
  } = this.chartBoundingClientRect;
119
- const theme = _constants.CHART_THEME_COLOR[globalTheme];
120
- const isInside = funnel_label_position === _constants.FUNNEL_LABEL_POSITIONS.INSIDE;
111
+ const theme = CHART_THEME_COLOR[globalTheme];
112
+ const isInside = funnel_label_position === FUNNEL_LABEL_POSITIONS.INSIDE;
121
113
  const title = this.getTitle(tables, table_id, y_axis_summary_type, y_axis_column_key || y_axis_summary_column_key);
122
114
  const nameDomain = new Set(data.map(item => item.name));
123
115
 
@@ -155,7 +147,12 @@ class Funnel extends _chartComponent.default {
155
147
  points4X = x(0) + nextOffsetX;
156
148
  points4Y = y(nextName);
157
149
  }
158
- contentWrapper.append('polygon').attr('opacity', 1).attr('fill', colorScale(curName)).attr('points', "\n ".concat(x(0) + curOffsetX, ",").concat(y(curName), "\n ").concat(x(curValue) + curOffsetX, ",").concat(y(curName), "\n ").concat(points3X, ",").concat(points3Y, "\n ").concat(points4X, ",").concat(points4Y, "\n ")).attr('data-left', "".concat(Math.min(x(0) + curOffsetX, points4X))).attr('data-top', "".concat(y(curName))).attr('data-name', curName).call(g => {
150
+ contentWrapper.append('polygon').attr('opacity', 1).attr('fill', colorScale(curName)).attr('points', `
151
+ ${x(0) + curOffsetX},${y(curName)}
152
+ ${x(curValue) + curOffsetX},${y(curName)}
153
+ ${points3X},${points3Y}
154
+ ${points4X},${points4Y}
155
+ `).attr('data-left', `${Math.min(x(0) + curOffsetX, points4X)}`).attr('data-top', `${y(curName)}`).attr('data-name', curName).call(g => {
159
156
  Array.from(g.node().parentNode.children).forEach((g, index) => {
160
157
  // Add label
161
158
  if (funnel_show_labels) {
@@ -245,20 +242,20 @@ class Funnel extends _chartComponent.default {
245
242
  toolTipPosition: null
246
243
  };
247
244
  this.contentFormatterMap = {
248
- [_constants.FUNNEL_LABEL_FORMAT.NUMBER]: obj => obj === null || obj === void 0 ? void 0 : obj.value,
249
- [_constants.FUNNEL_LABEL_FORMAT.PERCENTAGE]: obj => ((obj === null || obj === void 0 ? void 0 : obj.percent) || 0) + '%',
250
- [_constants.FUNNEL_LABEL_FORMAT.NUMBER_AND_PERCENTAGE]: obj => "".concat(obj === null || obj === void 0 ? void 0 : obj.value, " (").concat((obj === null || obj === void 0 ? void 0 : obj.percent) || 0, "%)")
245
+ [FUNNEL_LABEL_FORMAT.NUMBER]: obj => obj === null || obj === void 0 ? void 0 : obj.value,
246
+ [FUNNEL_LABEL_FORMAT.PERCENTAGE]: obj => ((obj === null || obj === void 0 ? void 0 : obj.percent) || 0) + '%',
247
+ [FUNNEL_LABEL_FORMAT.NUMBER_AND_PERCENTAGE]: obj => `${obj === null || obj === void 0 ? void 0 : obj.value} (${(obj === null || obj === void 0 ? void 0 : obj.percent) || 0}%)`
251
248
  };
252
249
  }
253
250
  componentDidMount() {
254
251
  this.createChart();
255
252
  this.drawChart();
256
- this.debouncedHandleResize = (0, _lodashEs.debounce)(this.handleResize, 300);
253
+ this.debouncedHandleResize = debounce(this.handleResize, 300);
257
254
  window.addEventListener('resize', this.debouncedHandleResize);
258
255
  }
259
256
  componentDidUpdate(prevProps) {
260
257
  super.componentDidUpdate(prevProps);
261
- if (_utils.BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
258
+ if (BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
262
259
  this.destroyChart();
263
260
  this.createChart();
264
261
  this.drawChart();
@@ -276,13 +273,13 @@ class Funnel extends _chartComponent.default {
276
273
  tooltipData,
277
274
  toolTipPosition
278
275
  } = this.state;
279
- return /*#__PURE__*/_react.default.createElement("div", {
276
+ return /*#__PURE__*/React.createElement("div", {
280
277
  ref: ref => this.container = ref,
281
- className: (0, _classnames.default)('sea-chart-container', {
278
+ className: classNames('sea-chart-container', {
282
279
  'show-x-axis-label': this.isShowXAxisLabel(chart),
283
280
  'show-y-axis-label': this.isShowYAxisLabel(chart)
284
281
  })
285
- }, /*#__PURE__*/_react.default.createElement(_tooltip.default, {
282
+ }, /*#__PURE__*/React.createElement(ToolTip, {
286
283
  tooltipData: tooltipData,
287
284
  toolTipPosition: toolTipPosition,
288
285
  chart: this.chart
@@ -290,16 +287,16 @@ class Funnel extends _chartComponent.default {
290
287
  }
291
288
  }
292
289
  Funnel.propTypes = {
293
- canvasStyle: _propTypes.default.object,
294
- chart: _propTypes.default.object,
295
- groupbyColumn: _propTypes.default.object,
296
- columnGroupbyColumn: _propTypes.default.object,
297
- summaryColumn: _propTypes.default.object,
298
- result: _propTypes.default.array,
299
- tables: _propTypes.default.array,
300
- globalTheme: _propTypes.default.string,
301
- chartColorTheme: _propTypes.default.string,
302
- toggleRecords: _propTypes.default.func,
303
- customRender: _propTypes.default.func
290
+ canvasStyle: PropTypes.object,
291
+ chart: PropTypes.object,
292
+ groupbyColumn: PropTypes.object,
293
+ columnGroupbyColumn: PropTypes.object,
294
+ summaryColumn: PropTypes.object,
295
+ result: PropTypes.array,
296
+ tables: PropTypes.array,
297
+ globalTheme: PropTypes.string,
298
+ chartColorTheme: PropTypes.string,
299
+ toggleRecords: PropTypes.func,
300
+ customRender: PropTypes.func
304
301
  };
305
- var _default = exports.default = Funnel;
302
+ export default Funnel;