sea-chart 0.0.1

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 (214) hide show
  1. package/README.md +4 -0
  2. package/lib/assets/icons/area-chart.svg +10 -0
  3. package/lib/assets/icons/bar-chart.svg +12 -0
  4. package/lib/assets/icons/card.svg +22 -0
  5. package/lib/assets/icons/combination-chart.svg +17 -0
  6. package/lib/assets/icons/dtable-logo.svg +16 -0
  7. package/lib/assets/icons/facet-chart.svg +12 -0
  8. package/lib/assets/icons/gauge.svg +18 -0
  9. package/lib/assets/icons/heat-map.svg +14 -0
  10. package/lib/assets/icons/histogram.svg +12 -0
  11. package/lib/assets/icons/line-chart.svg +12 -0
  12. package/lib/assets/icons/map.svg +20 -0
  13. package/lib/assets/icons/pie-chart.svg +11 -0
  14. package/lib/assets/icons/rectangular-tree-diagram.svg +10 -0
  15. package/lib/assets/icons/scatter-chart.svg +15 -0
  16. package/lib/assets/icons/type-change.svg +17 -0
  17. package/lib/assets/img/area-chart.png +0 -0
  18. package/lib/assets/img/area-group-chart.png +0 -0
  19. package/lib/assets/img/bar-group.png +0 -0
  20. package/lib/assets/img/bar-stack.png +0 -0
  21. package/lib/assets/img/bar.png +0 -0
  22. package/lib/assets/img/combination-chart.png +0 -0
  23. package/lib/assets/img/compared-chart.png +0 -0
  24. package/lib/assets/img/completeness-chart.png +0 -0
  25. package/lib/assets/img/custom-bar.png +0 -0
  26. package/lib/assets/img/dashboard-chart.png +0 -0
  27. package/lib/assets/img/group-completeness-chart.png +0 -0
  28. package/lib/assets/img/group_line.png +0 -0
  29. package/lib/assets/img/heat-map.png +0 -0
  30. package/lib/assets/img/horizontal-bar.png +0 -0
  31. package/lib/assets/img/horizontal-group-bar.png +0 -0
  32. package/lib/assets/img/line.png +0 -0
  33. package/lib/assets/img/map-bubble.png +0 -0
  34. package/lib/assets/img/map.png +0 -0
  35. package/lib/assets/img/mirror.png +0 -0
  36. package/lib/assets/img/number-card.png +0 -0
  37. package/lib/assets/img/pie.png +0 -0
  38. package/lib/assets/img/pivot-table.png +0 -0
  39. package/lib/assets/img/ring.png +0 -0
  40. package/lib/assets/img/scatter.png +0 -0
  41. package/lib/assets/img/stacked-horizontal-bar.png +0 -0
  42. package/lib/assets/img/treemap.png +0 -0
  43. package/lib/assets/img/trend-chart.png +0 -0
  44. package/lib/assets/img/world-map-bubble.png +0 -0
  45. package/lib/assets/img/world-map.png +0 -0
  46. package/lib/components/collaborator/index.js +24 -0
  47. package/lib/components/formatter/area.js +162 -0
  48. package/lib/components/formatter/bar-group.js +160 -0
  49. package/lib/components/formatter/bar.js +150 -0
  50. package/lib/components/formatter/basic-number-card.js +138 -0
  51. package/lib/components/formatter/chart-component.js +266 -0
  52. package/lib/components/formatter/combination.js +407 -0
  53. package/lib/components/formatter/dashboard.js +182 -0
  54. package/lib/components/formatter/horizontal-bar-group.js +161 -0
  55. package/lib/components/formatter/horizontal-bar.js +152 -0
  56. package/lib/components/formatter/horizontal-component.js +91 -0
  57. package/lib/components/formatter/index.js +181 -0
  58. package/lib/components/formatter/line-group.js +157 -0
  59. package/lib/components/formatter/line.js +170 -0
  60. package/lib/components/formatter/pie.js +201 -0
  61. package/lib/components/formatter/ring.js +277 -0
  62. package/lib/components/formatter/table/index.css +103 -0
  63. package/lib/components/formatter/table/index.js +42 -0
  64. package/lib/components/formatter/table/one-dimension-table-no-numeric-columns.js +145 -0
  65. package/lib/components/formatter/table/one-dimension-table-with-numeric-columns.js +193 -0
  66. package/lib/components/formatter/table/pivot-table-display-name.js +249 -0
  67. package/lib/components/formatter/table/two-dimension-table.js +241 -0
  68. package/lib/components/formatter/treemap.js +213 -0
  69. package/lib/components/icon/index.css +5 -0
  70. package/lib/components/icon/index.js +22 -0
  71. package/lib/components/index.js +5 -0
  72. package/lib/components/loading/index.css +54 -0
  73. package/lib/components/loading/index.js +10 -0
  74. package/lib/components/number-input/index.js +31 -0
  75. package/lib/components/pixel-editor/index.css +29 -0
  76. package/lib/components/pixel-editor/index.js +42 -0
  77. package/lib/components/select-group/index.css +67 -0
  78. package/lib/components/select-group/index.js +63 -0
  79. package/lib/components/settings/advance-bar-settings/data-settings.js +120 -0
  80. package/lib/components/settings/advance-bar-settings/index.js +3 -0
  81. package/lib/components/settings/advance-bar-settings/style-settings.js +149 -0
  82. package/lib/components/settings/bar-settings/data-settings.js +137 -0
  83. package/lib/components/settings/bar-settings/index.js +3 -0
  84. package/lib/components/settings/bar-settings/style-settings.js +163 -0
  85. package/lib/components/settings/basic-number-card/data-settings.js +121 -0
  86. package/lib/components/settings/basic-number-card/index.js +3 -0
  87. package/lib/components/settings/basic-number-card/style-settings.js +42 -0
  88. package/lib/components/settings/combination-settings/data-settings.js +256 -0
  89. package/lib/components/settings/combination-settings/index.js +3 -0
  90. package/lib/components/settings/combination-settings/style-settings.js +183 -0
  91. package/lib/components/settings/dashboard-settings/data-settings.js +167 -0
  92. package/lib/components/settings/dashboard-settings/index.js +2 -0
  93. package/lib/components/settings/data-settings.js +67 -0
  94. package/lib/components/settings/horizontal-bar-settings/data-settings.js +45 -0
  95. package/lib/components/settings/horizontal-bar-settings/index.js +3 -0
  96. package/lib/components/settings/horizontal-bar-settings/style-settings.js +38 -0
  97. package/lib/components/settings/index.css +73 -0
  98. package/lib/components/settings/index.js +74 -0
  99. package/lib/components/settings/pie-settings/data-settings.js +123 -0
  100. package/lib/components/settings/pie-settings/index.js +3 -0
  101. package/lib/components/settings/pie-settings/style-settings.js +123 -0
  102. package/lib/components/settings/style-settings.js +100 -0
  103. package/lib/components/settings/table-settings/data-settings.js +488 -0
  104. package/lib/components/settings/table-settings/index.js +2 -0
  105. package/lib/components/settings/time-comparison-settings/data-settings.js +157 -0
  106. package/lib/components/settings/time-comparison-settings/index.js +3 -0
  107. package/lib/components/settings/time-comparison-settings/style-settings.js +191 -0
  108. package/lib/components/settings/widgets/basic-summary/index.css +12 -0
  109. package/lib/components/settings/widgets/basic-summary/index.js +173 -0
  110. package/lib/components/settings/widgets/common-data-settings.js +42 -0
  111. package/lib/components/settings/widgets/data-filter/index.css +17 -0
  112. package/lib/components/settings/widgets/data-filter/index.js +76 -0
  113. package/lib/components/settings/widgets/data-sort.js +38 -0
  114. package/lib/components/settings/widgets/date-summary-item.js +126 -0
  115. package/lib/components/settings/widgets/display-values-settings/index.css +13 -0
  116. package/lib/components/settings/widgets/display-values-settings/index.js +37 -0
  117. package/lib/components/settings/widgets/divider/index.css +4 -0
  118. package/lib/components/settings/widgets/divider/index.js +10 -0
  119. package/lib/components/settings/widgets/font-settings/font-size-settings.js +31 -0
  120. package/lib/components/settings/widgets/font-settings/font-weight-settings.js +46 -0
  121. package/lib/components/settings/widgets/font-settings/index.js +3 -0
  122. package/lib/components/settings/widgets/group-by.js +168 -0
  123. package/lib/components/settings/widgets/label-color.js +30 -0
  124. package/lib/components/settings/widgets/min-max-setting.js +64 -0
  125. package/lib/components/settings/widgets/mininum-slice-percent.js +72 -0
  126. package/lib/components/settings/widgets/numeric-summary-item.js +109 -0
  127. package/lib/components/settings/widgets/select-table/index.css +0 -0
  128. package/lib/components/settings/widgets/select-table/index.js +49 -0
  129. package/lib/components/settings/widgets/stack.js +58 -0
  130. package/lib/components/settings/widgets/statistic-type/index.css +31 -0
  131. package/lib/components/settings/widgets/statistic-type/index.js +54 -0
  132. package/lib/components/settings/widgets/summary-method-setting.js +80 -0
  133. package/lib/components/settings/widgets/summary-settings.js +394 -0
  134. package/lib/components/settings/widgets/switch/index.css +37 -0
  135. package/lib/components/settings/widgets/switch/index.js +21 -0
  136. package/lib/components/settings/widgets/text-horizontal-settings.js +23 -0
  137. package/lib/components/settings/widgets/time-picker.js +182 -0
  138. package/lib/components/settings/widgets/title-settings/index.js +58 -0
  139. package/lib/components/settings/widgets/title-settings/title-text.js +31 -0
  140. package/lib/components/settings/widgets/x-axios.js +0 -0
  141. package/lib/components/settings/widgets/y-axis-group-settings.js +399 -0
  142. package/lib/components/types-dialog/index.css +97 -0
  143. package/lib/components/types-dialog/index.js +127 -0
  144. package/lib/constants/geolocation.js +11 -0
  145. package/lib/constants/index.js +164 -0
  146. package/lib/constants/model.js +167 -0
  147. package/lib/constants/style.js +13 -0
  148. package/lib/constants/type-image.js +32 -0
  149. package/lib/constants/type.js +97 -0
  150. package/lib/context.js +49 -0
  151. package/lib/index.js +6 -0
  152. package/lib/intl.js +37 -0
  153. package/lib/layout/index.js +4 -0
  154. package/lib/layout/statistic/index.css +53 -0
  155. package/lib/layout/statistic/index.js +190 -0
  156. package/lib/layout/title/index.css +3 -0
  157. package/lib/layout/title/index.js +41 -0
  158. package/lib/locale/index.js +11 -0
  159. package/lib/locale/lang/de.js +141 -0
  160. package/lib/locale/lang/en.js +143 -0
  161. package/lib/locale/lang/es.js +141 -0
  162. package/lib/locale/lang/fr.js +141 -0
  163. package/lib/locale/lang/pt.js +141 -0
  164. package/lib/locale/lang/ru.js +141 -0
  165. package/lib/locale/lang/zh_CN.js +143 -0
  166. package/lib/model/area-group.js +51 -0
  167. package/lib/model/area.js +42 -0
  168. package/lib/model/bar-group.js +54 -0
  169. package/lib/model/bar-stack.js +51 -0
  170. package/lib/model/bar.js +48 -0
  171. package/lib/model/base-model.js +11 -0
  172. package/lib/model/basic-number-card.js +32 -0
  173. package/lib/model/combination.js +48 -0
  174. package/lib/model/compare-bar.js +49 -0
  175. package/lib/model/completeness-group.js +34 -0
  176. package/lib/model/completeness.js +28 -0
  177. package/lib/model/dashboard.js +26 -0
  178. package/lib/model/generic-model.js +235 -0
  179. package/lib/model/heat-map.js +33 -0
  180. package/lib/model/horizontal-bar.js +48 -0
  181. package/lib/model/horizontal-group-bar.js +53 -0
  182. package/lib/model/index.js +36 -0
  183. package/lib/model/line-group.js +54 -0
  184. package/lib/model/line.js +48 -0
  185. package/lib/model/map-bubble.js +37 -0
  186. package/lib/model/map.js +37 -0
  187. package/lib/model/mirror.js +36 -0
  188. package/lib/model/pie.js +36 -0
  189. package/lib/model/ring.js +36 -0
  190. package/lib/model/scatter.js +29 -0
  191. package/lib/model/stacked-horizontal-bar.js +42 -0
  192. package/lib/model/statistic.js +22 -0
  193. package/lib/model/table.js +33 -0
  194. package/lib/model/tree-map.js +30 -0
  195. package/lib/model/trend.js +34 -0
  196. package/lib/model/user.js +22 -0
  197. package/lib/model/world-map-bubble.js +36 -0
  198. package/lib/model/world-map.js +36 -0
  199. package/lib/utils/cell-format-utils.js +41 -0
  200. package/lib/utils/chart.js +6 -0
  201. package/lib/utils/collaborator-utils.js +40 -0
  202. package/lib/utils/column-utils.js +247 -0
  203. package/lib/utils/custom-g2.js +612 -0
  204. package/lib/utils/data-filter/filter-item-utils.js +80 -0
  205. package/lib/utils/data-filter/filters-utils.js +406 -0
  206. package/lib/utils/data-filter/index.js +3 -0
  207. package/lib/utils/date-translate.js +66 -0
  208. package/lib/utils/index.js +50 -0
  209. package/lib/utils/key-generator.js +13 -0
  210. package/lib/utils/object-utils.js +61 -0
  211. package/lib/utils/options-utils.js +61 -0
  212. package/lib/utils/statistic-column-2-sql-column-utils.js +499 -0
  213. package/lib/utils/statistic-utils.js +1685 -0
  214. package/package.json +160 -0
@@ -0,0 +1,58 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import React, { useMemo } from 'react';
3
+ import TitleText from './title-text';
4
+ import { FontSizeSettings, FontWeightSettings } from '../font-settings';
5
+ import TextHorizontalSettings from '../text-horizontal-settings';
6
+ import { DEFAULT_STATISTIC_FONT_WEIGHT, DEFAULT_STATISTIC_TITLE_FONT_SIZE, STATISTIC_SUPPORT_FONT_WEIGHTS, HORIZONTAL_ALIGN } from '../../../../constants';
7
+ var TitleSetting = function TitleSetting(props) {
8
+ var initialTitle = useMemo(function () {
9
+ return props.title || {};
10
+ }, [props.title]);
11
+ var modifyTitle = function modifyTitle(updated) {
12
+ if (!props.title) {
13
+ props.modifyTitle(updated);
14
+ return;
15
+ }
16
+ props.modifyTitle(_objectSpread(_objectSpread({}, props.title), updated));
17
+ };
18
+ var modifyText = function modifyText(updatedText) {
19
+ if (!updatedText && !initialTitle.text || updatedText === initialTitle.text) {
20
+ return;
21
+ }
22
+ modifyTitle({
23
+ text: updatedText
24
+ });
25
+ };
26
+ var modifyFontSize = function modifyFontSize(updatedFontSize) {
27
+ modifyTitle({
28
+ font_size: updatedFontSize
29
+ });
30
+ };
31
+ var modifyHorizontalAlign = function modifyHorizontalAlign(horizontalAlign) {
32
+ modifyTitle({
33
+ horizontal_align: horizontalAlign
34
+ });
35
+ };
36
+ var modifyFontWeight = function modifyFontWeight(updatedFontWeight) {
37
+ modifyTitle({
38
+ font_weight: updatedFontWeight
39
+ });
40
+ };
41
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TitleText, {
42
+ text: initialTitle.text,
43
+ modifyText: modifyText
44
+ }), /*#__PURE__*/React.createElement(FontSizeSettings, {
45
+ fontSize: initialTitle.font_size,
46
+ defaultFontSize: DEFAULT_STATISTIC_TITLE_FONT_SIZE,
47
+ modifyFontSize: modifyFontSize
48
+ }), /*#__PURE__*/React.createElement(FontWeightSettings, {
49
+ fontWeight: initialTitle.font_weight || DEFAULT_STATISTIC_FONT_WEIGHT,
50
+ supportFontWeights: STATISTIC_SUPPORT_FONT_WEIGHTS,
51
+ modifyFontWeight: modifyFontWeight
52
+ }), /*#__PURE__*/React.createElement(TextHorizontalSettings, {
53
+ value: initialTitle.horizontal_align,
54
+ defaultValue: HORIZONTAL_ALIGN.LEFT,
55
+ onChange: modifyHorizontalAlign
56
+ }));
57
+ };
58
+ export default TitleSetting;
@@ -0,0 +1,31 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import React, { useState } from 'react';
3
+ import { FormGroup, Input, Label } from 'reactstrap';
4
+ import intl from '../../../../intl';
5
+ var TitleText = function TitleText(props) {
6
+ var _useState = useState(props.text || ''),
7
+ _useState2 = _slicedToArray(_useState, 2),
8
+ currText = _useState2[0],
9
+ setCurrText = _useState2[1];
10
+ var onKeyDown = function onKeyDown(event) {
11
+ if (event.key === 'Enter') {
12
+ event.preventDefault();
13
+ event.target.blur();
14
+ }
15
+ };
16
+ var onSaveText = function onSaveText() {
17
+ props.modifyText(currText);
18
+ };
19
+ return /*#__PURE__*/React.createElement(FormGroup, {
20
+ className: "statistic-title-text"
21
+ }, /*#__PURE__*/React.createElement(Label, null, intl.get('Title')), /*#__PURE__*/React.createElement(Input, {
22
+ type: "text",
23
+ value: currText,
24
+ onBlur: onSaveText,
25
+ onChange: function onChange(event) {
26
+ return setCurrText(event.target.value);
27
+ },
28
+ onKeyDown: onKeyDown
29
+ }));
30
+ };
31
+ export default TitleText;
File without changes
@@ -0,0 +1,399 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
4
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
5
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
6
+ import React, { Component } from 'react';
7
+ import { FormGroup, Label } from 'reactstrap';
8
+ import DTableSelect from "dtable-ui-component/lib/DTableSelect";
9
+ import { COLUMNS_ICON_CONFIG, getTableById } from 'dtable-utils';
10
+ import NumericSummaryItem from './numeric-summary-item';
11
+ import SummaryMethodSettings from './summary-method-setting';
12
+ import Groupby from './group-by';
13
+ import { STATISTIC_Y_GROUP_TYPE, STATISTIC_SUMMARY_SHOW, STATISTIC_SUMMARY_CALCULATION_METHOD, STATISTIC_SUMMARY_TYPE, DATE_GRANULATES, GEOLOCATION_GRANULATES, STATISTIC_DATE_SUMMARY_CALCULATION_METHOD, STATISTIC_SUPPORT_COLUMNS } from '../../../constants';
14
+ import { StatisticsUtils } from '../../../utils';
15
+ import intl from '../../../intl';
16
+ var YAxisGroupSettings = /*#__PURE__*/function (_Component) {
17
+ _inherits(YAxisGroupSettings, _Component);
18
+ var _super = _createSuper(YAxisGroupSettings);
19
+ function YAxisGroupSettings(_props) {
20
+ var _this;
21
+ _classCallCheck(this, YAxisGroupSettings);
22
+ _this = _super.call(this, _props);
23
+ _this.initTable = function (props) {
24
+ var statistic = props.statistic,
25
+ tables = props.tables;
26
+ var table_id = statistic.config.table_id;
27
+ _this.selectedTable = getTableById(tables, table_id);
28
+ };
29
+ _this.initGroupTypeOptions = function () {
30
+ _this.groupTypeOptions = [{
31
+ value: STATISTIC_Y_GROUP_TYPE.COUNT,
32
+ label: /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
33
+ className: "select-module select-module-name ml-0"
34
+ }, intl.get(STATISTIC_SUMMARY_SHOW['count'])), /*#__PURE__*/React.createElement("div", {
35
+ className: "summary-type-explanation"
36
+ }, intl.get('Count_the_number_of_records_in_each_group')))
37
+ }, {
38
+ value: STATISTIC_Y_GROUP_TYPE.SINGLE_NUMERIC_COLUMN,
39
+ label: /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
40
+ className: "select-module select-module-name ml-0"
41
+ }, intl.get(STATISTIC_SUMMARY_SHOW['advanced'])), /*#__PURE__*/React.createElement("div", {
42
+ className: "summary-type-explanation"
43
+ }, intl.get('Compute_the_sum_maximum_or_minimum_value_of_records_in_each_group_by_a_field')))
44
+ }, {
45
+ value: STATISTIC_Y_GROUP_TYPE.MULTIPLE_NUMERIC_COLUMN,
46
+ label: /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
47
+ className: "select-module select-module-name ml-0"
48
+ }, intl.get('Summarize_multiple_fields')), /*#__PURE__*/React.createElement("div", {
49
+ className: "summary-type-explanation"
50
+ }, intl.get('Compute_the_sum_maximum_or_minimum_value_of_records_in_each_group_by_multiple_fields')))
51
+ }];
52
+ };
53
+ _this.initColumns = function () {
54
+ if (!_this.selectedTable) {
55
+ _this.numericColumns = [];
56
+ _this.numericColumnOptions = [];
57
+ _this.columnGroupbyColumnsOptions = [];
58
+ return;
59
+ }
60
+ var columns = Array.isArray(_this.selectedTable.columns) ? _this.selectedTable.columns : [];
61
+ _this.columns = _this.getAvailableColumns(columns);
62
+ _this.columnGroupbyColumnsOptions = _this.getColumnOptions(_this.columns);
63
+ _this.numericColumns = _this.columns.filter(function (column) {
64
+ return StatisticsUtils.isNumericSummaryColumn(column);
65
+ });
66
+ _this.numericColumnOptions = _this.getColumnOptions(_this.numericColumns);
67
+ };
68
+ _this.getAvailableColumns = function (columns) {
69
+ if (!columns || !Array.isArray(columns)) return [];
70
+ return columns.filter(function (column) {
71
+ return STATISTIC_SUPPORT_COLUMNS.includes(column.type);
72
+ });
73
+ };
74
+ _this.getColumnOptions = function (columns) {
75
+ var options = columns.map(function (column) {
76
+ return {
77
+ value: column,
78
+ label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
79
+ className: "header-icon"
80
+ }, /*#__PURE__*/React.createElement("i", {
81
+ className: COLUMNS_ICON_CONFIG[column.type]
82
+ })), /*#__PURE__*/React.createElement("span", {
83
+ className: 'select-module select-module-name ml-0'
84
+ }, column.name))
85
+ };
86
+ });
87
+ return [{
88
+ value: {
89
+ key: 'Groupby_null'
90
+ },
91
+ label: /*#__PURE__*/React.createElement("span", {
92
+ className: 'select-module select-module-name null-option-name ml-0'
93
+ }, intl.get('Select_a_column')),
94
+ style: {
95
+ color: 'rgba(0, 0, 0, .25)'
96
+ }
97
+ }].concat(_toConsumableArray(options));
98
+ };
99
+ _this.onGroupTypeChange = function (option) {
100
+ var statistic = _this.props.statistic;
101
+ var config = statistic.config;
102
+ var value = option.value;
103
+ var update = {};
104
+ if (value === STATISTIC_Y_GROUP_TYPE.COUNT) {
105
+ update.column_groupby_multiple_numeric_column = false;
106
+ update.summary_columns = [];
107
+ update.y_axis_summary_type = STATISTIC_SUMMARY_TYPE.COUNT;
108
+ update.y_axis_summary_column_key = null;
109
+ update.y_axis_summary_method = STATISTIC_SUMMARY_CALCULATION_METHOD[0];
110
+ update.column_groupby_column_key = config.column_groupby_column_key || null;
111
+ update.column_groupby_date_granularity = config.column_groupby_date_granularity || null;
112
+ update.column_groupby_geolocation_granularity = config.column_groupby_geolocation_granularity || null;
113
+ } else if (value === STATISTIC_Y_GROUP_TYPE.SINGLE_NUMERIC_COLUMN) {
114
+ update.column_groupby_multiple_numeric_column = false;
115
+ update.summary_columns = [];
116
+ update.y_axis_summary_type = STATISTIC_SUMMARY_TYPE.ADVANCED;
117
+ update.y_axis_summary_column_key = _this.numericColumns[0] ? _this.numericColumns[0].key : null;
118
+ update.y_axis_summary_method = STATISTIC_SUMMARY_CALCULATION_METHOD[0];
119
+ update.column_groupby_column_key = config.column_groupby_column_key || null;
120
+ update.column_groupby_date_granularity = config.column_groupby_date_granularity || null;
121
+ update.column_groupby_geolocation_granularity = config.column_groupby_geolocation_granularity || null;
122
+ } else if (value === STATISTIC_Y_GROUP_TYPE.MULTIPLE_NUMERIC_COLUMN) {
123
+ update.column_groupby_multiple_numeric_column = true;
124
+ update.summary_columns = [];
125
+ update.y_axis_summary_type = STATISTIC_SUMMARY_TYPE.ADVANCED;
126
+ update.y_axis_summary_column_key = _this.numericColumns[0] ? _this.numericColumns[0].key : null;
127
+ update.y_axis_summary_method = STATISTIC_SUMMARY_CALCULATION_METHOD[0];
128
+ update.column_groupby_date_granularity = null;
129
+ update.column_groupby_geolocation_granularity = null;
130
+ update.column_groupby_geolocation_granularity = null;
131
+ }
132
+ _this.props.onChange(update);
133
+ };
134
+ _this.getSelectedGroupType = function () {
135
+ var statistic = _this.props.statistic;
136
+ var config = statistic.config;
137
+ var column_groupby_multiple_numeric_column = config.column_groupby_multiple_numeric_column,
138
+ y_axis_summary_type = config.y_axis_summary_type;
139
+ if (column_groupby_multiple_numeric_column) {
140
+ return _this.groupTypeOptions.find(function (item) {
141
+ return item.value === STATISTIC_Y_GROUP_TYPE.MULTIPLE_NUMERIC_COLUMN;
142
+ });
143
+ }
144
+ if (y_axis_summary_type === STATISTIC_SUMMARY_TYPE.COUNT) {
145
+ return _this.groupTypeOptions[0];
146
+ }
147
+ if (y_axis_summary_type === STATISTIC_SUMMARY_TYPE.ADVANCED) {
148
+ return _this.groupTypeOptions[1];
149
+ }
150
+ return _this.groupTypeOptions[0];
151
+ };
152
+ _this.onDeleteNumericColumnItem = function (index) {
153
+ var statistic = _this.props.statistic;
154
+ var config = statistic.config;
155
+ var summary_columns = config.summary_columns;
156
+ summary_columns = summary_columns || [];
157
+ summary_columns = _toConsumableArray(summary_columns);
158
+ summary_columns.splice(index - 1, 1);
159
+ _this.props.onChange({
160
+ summary_columns: _toConsumableArray(summary_columns)
161
+ });
162
+ };
163
+ _this.onGroupbyNumericColumnChange = function (option, index) {
164
+ var column = option.value;
165
+ var newXAxisColumnKey = column.key;
166
+ var validValue = newXAxisColumnKey === 'Groupby_null' ? null : newXAxisColumnKey;
167
+ var statistic = _this.props.statistic;
168
+ var config = statistic.config;
169
+ var summaryMethods = StatisticsUtils.isDateSummaryColumn(column) ? STATISTIC_DATE_SUMMARY_CALCULATION_METHOD : STATISTIC_SUMMARY_CALCULATION_METHOD;
170
+ if (index === 0) {
171
+ var y_axis_summary_method = config.y_axis_summary_method;
172
+ if (!summaryMethods.includes(y_axis_summary_method)) {
173
+ y_axis_summary_method = summaryMethods[0];
174
+ }
175
+ _this.props.onChange({
176
+ y_axis_summary_column_key: validValue,
177
+ y_axis_summary_method: y_axis_summary_method
178
+ });
179
+ return;
180
+ }
181
+ var summary_columns = config.summary_columns;
182
+ summary_columns = summary_columns || [];
183
+ summary_columns = _toConsumableArray(summary_columns);
184
+ var selectedItem = summary_columns[index - 1];
185
+ var _selectedItem = selectedItem,
186
+ summary_method = _selectedItem.summary_method;
187
+ if (summaryMethods.includes(summary_method)) {
188
+ selectedItem = Object.assign({}, selectedItem, {
189
+ column_key: validValue
190
+ });
191
+ } else {
192
+ selectedItem = Object.assign({}, selectedItem, {
193
+ column_key: validValue,
194
+ summary_method: summaryMethods[0]
195
+ });
196
+ }
197
+ summary_columns[index - 1] = selectedItem;
198
+ _this.props.onChange({
199
+ summary_columns: summary_columns
200
+ });
201
+ };
202
+ _this.onSummaryMethodChange = function (option, index) {
203
+ var value = option.value;
204
+ var statistic = _this.props.statistic;
205
+ var config = statistic.config;
206
+ if (index === 0) {
207
+ _this.props.onChange({
208
+ y_axis_summary_method: value
209
+ });
210
+ return;
211
+ }
212
+ var summary_columns = config.summary_columns;
213
+ summary_columns = summary_columns || [];
214
+ summary_columns = _toConsumableArray(summary_columns);
215
+ var selectedItem = summary_columns[index - 1];
216
+ selectedItem = Object.assign({}, selectedItem, {
217
+ summary_method: value
218
+ });
219
+ summary_columns[index - 1] = selectedItem;
220
+ _this.props.onChange({
221
+ summary_columns: summary_columns
222
+ });
223
+ };
224
+ _this.onAddNumericColumn = function (column) {
225
+ if (!column) return;
226
+ var statistic = _this.props.statistic;
227
+ var config = statistic.config;
228
+ var summary_columns = config.summary_columns;
229
+ var newNumericColumnKey = column.key;
230
+ var summaryMethods = StatisticsUtils.isDateSummaryColumn(column) ? STATISTIC_DATE_SUMMARY_CALCULATION_METHOD : STATISTIC_SUMMARY_CALCULATION_METHOD;
231
+ if (Array.isArray(summary_columns)) {
232
+ summary_columns = _toConsumableArray(summary_columns);
233
+ summary_columns.push({
234
+ column_key: newNumericColumnKey,
235
+ summary_method: summaryMethods[0]
236
+ });
237
+ } else {
238
+ summary_columns = [{
239
+ column_key: newNumericColumnKey,
240
+ summary_method: summaryMethods[0]
241
+ }];
242
+ }
243
+ _this.props.onChange({
244
+ summary_columns: _toConsumableArray(summary_columns)
245
+ });
246
+ };
247
+ _this.onGroupByChange = function (option) {
248
+ var column = option.value;
249
+ var statistic = _this.props.statistic;
250
+ var config = statistic.config;
251
+ var column_groupby_column_key = config.column_groupby_column_key;
252
+ if (column_groupby_column_key === column.key) return;
253
+ _this.props.onChange({
254
+ column_groupby_column_key: column.key,
255
+ column_groupby_date_granularity: DATE_GRANULATES[0],
256
+ column_groupby_geolocation_granularity: GEOLOCATION_GRANULATES[0]
257
+ });
258
+ };
259
+ _this.onGroupbyDateGranularityChange = function (option) {
260
+ var value = option.value;
261
+ var statistic = _this.props.statistic;
262
+ var config = statistic.config;
263
+ var column_groupby_date_granularity = config.column_groupby_date_granularity;
264
+ if (column_groupby_date_granularity === value) return;
265
+ _this.props.onChange({
266
+ column_groupby_date_granularity: value
267
+ });
268
+ };
269
+ _this.onGroupbyGeolocationGranularityChange = function (option) {
270
+ var value = option.value;
271
+ var statistic = _this.props.statistic;
272
+ var config = statistic.config;
273
+ var column_groupby_geolocation_granularity = config.column_groupby_geolocation_granularity;
274
+ if (column_groupby_geolocation_granularity === value) return;
275
+ _this.props.onChange({
276
+ column_groupby_geolocation_granularity: value
277
+ });
278
+ };
279
+ _this.renderGroupbyNumericColumns = function () {
280
+ var statistic = _this.props.statistic;
281
+ var config = statistic.config;
282
+ var summary_columns = config.summary_columns;
283
+ if (!summary_columns || !Array.isArray(summary_columns)) return null;
284
+ return summary_columns.map(function (item, index) {
285
+ return /*#__PURE__*/React.createElement(NumericSummaryItem, {
286
+ key: "number-column-".concat(index),
287
+ index: index + 1,
288
+ value: item,
289
+ statistic: statistic,
290
+ numericColumnOptions: _this.numericColumnOptions,
291
+ onDelete: _this.onDeleteNumericColumnItem,
292
+ onColumnOptionChange: _this.onGroupbyNumericColumnChange,
293
+ onSummaryMethodChange: _this.onSummaryMethodChange
294
+ });
295
+ });
296
+ };
297
+ _this.renderColumnGroupbyMultipleNumericColumn = function () {
298
+ var statistic = _this.props.statistic;
299
+ var _statistic$config = statistic.config,
300
+ column_groupby_multiple_numeric_column = _statistic$config.column_groupby_multiple_numeric_column,
301
+ y_axis_summary_column_key = _statistic$config.y_axis_summary_column_key,
302
+ summary_columns = _statistic$config.summary_columns;
303
+ if (!column_groupby_multiple_numeric_column) return null;
304
+ var usedSummaryColumnKeys = Array.isArray(summary_columns) ? summary_columns.map(function (item) {
305
+ return item.column_key;
306
+ }) : [];
307
+ var unUsedSummaryColumns = _this.numericColumns.filter(function (column) {
308
+ return column.key !== y_axis_summary_column_key && !usedSummaryColumnKeys.includes(column.key);
309
+ });
310
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
311
+ className: "statistics-add-number"
312
+ }, _this.renderGroupbyNumericColumns()), Array.isArray(unUsedSummaryColumns) && unUsedSummaryColumns.length > 0 && /*#__PURE__*/React.createElement("div", {
313
+ className: "statistics-add-number-columns d-flex align-items-center",
314
+ onClick: function onClick() {
315
+ return _this.onAddNumericColumn(unUsedSummaryColumns[0]);
316
+ }
317
+ }, /*#__PURE__*/React.createElement("i", {
318
+ className: "dtable-font dtable-icon-add-table mr-2"
319
+ }), /*#__PURE__*/React.createElement("span", {
320
+ className: "number-column-item add-number-column-description"
321
+ }, intl.get('Add_new_field'))));
322
+ };
323
+ _this.initGroupTypeOptions();
324
+ _this.initTable(_props);
325
+ _this.initColumns();
326
+ return _this;
327
+ }
328
+ _createClass(YAxisGroupSettings, [{
329
+ key: "UNSAFE_componentWillReceiveProps",
330
+ value: function UNSAFE_componentWillReceiveProps(nextProps) {
331
+ if (nextProps.statistic.config.table_id !== this.props.statistic.config.table_id) {
332
+ this.initTable(nextProps);
333
+ this.initColumns();
334
+ }
335
+ }
336
+ }, {
337
+ key: "render",
338
+ value: function render() {
339
+ var _this2 = this;
340
+ var _this$props = this.props,
341
+ label = _this$props.label,
342
+ statistic = _this$props.statistic,
343
+ tables = _this$props.tables;
344
+ var selectedTypeOption = this.getSelectedGroupType();
345
+ var _statistic$config2 = statistic.config,
346
+ y_axis_summary_type = _statistic$config2.y_axis_summary_type,
347
+ column_groupby_multiple_numeric_column = _statistic$config2.column_groupby_multiple_numeric_column,
348
+ y_axis_summary_column_key = _statistic$config2.y_axis_summary_column_key,
349
+ y_axis_summary_method = _statistic$config2.y_axis_summary_method,
350
+ table_id = _statistic$config2.table_id,
351
+ column_groupby_column_key = _statistic$config2.column_groupby_column_key,
352
+ column_groupby_date_granularity = _statistic$config2.column_groupby_date_granularity,
353
+ column_groupby_geolocation_granularity = _statistic$config2.column_groupby_geolocation_granularity;
354
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormGroup, {
355
+ className: "seastatistic-parameter-item"
356
+ }, /*#__PURE__*/React.createElement(Label, null, label), /*#__PURE__*/React.createElement(DTableSelect, {
357
+ classNamePrefix: "chart-summary-types",
358
+ value: selectedTypeOption,
359
+ onChange: this.onGroupTypeChange,
360
+ options: this.groupTypeOptions
361
+ })), y_axis_summary_type === STATISTIC_SUMMARY_TYPE.ADVANCED && (column_groupby_multiple_numeric_column ? /*#__PURE__*/React.createElement(NumericSummaryItem, {
362
+ index: 0,
363
+ value: {
364
+ column_key: y_axis_summary_column_key,
365
+ summary_method: y_axis_summary_method
366
+ },
367
+ statistic: statistic,
368
+ numericColumnOptions: this.numericColumnOptions,
369
+ onColumnOptionChange: this.onGroupbyNumericColumnChange,
370
+ onSummaryMethodChange: this.onSummaryMethodChange
371
+ }) : /*#__PURE__*/React.createElement(SummaryMethodSettings, {
372
+ value: {
373
+ column_key: y_axis_summary_column_key,
374
+ summary_method: y_axis_summary_method
375
+ },
376
+ statistic: statistic,
377
+ numericColumnOptions: this.numericColumnOptions,
378
+ onColumnOptionChange: function onColumnOptionChange(option) {
379
+ return _this2.onGroupbyNumericColumnChange(option, 0);
380
+ },
381
+ onSummaryMethodChange: function onSummaryMethodChange(option) {
382
+ return _this2.onSummaryMethodChange(option, 0);
383
+ }
384
+ })), this.renderColumnGroupbyMultipleNumericColumn(), (!column_groupby_multiple_numeric_column && y_axis_summary_type === STATISTIC_SUMMARY_TYPE.ADVANCED || y_axis_summary_type === STATISTIC_SUMMARY_TYPE.COUNT) && /*#__PURE__*/React.createElement(Groupby, {
385
+ label: intl.get('Group_by'),
386
+ tables: tables,
387
+ selectedTableId: table_id,
388
+ selectedColumnKey: column_groupby_column_key,
389
+ selectedDateGranularity: column_groupby_date_granularity,
390
+ selectedGeolocationGranularity: column_groupby_geolocation_granularity,
391
+ onGroupByChange: this.onGroupByChange,
392
+ onGroupbyDateGranularityChange: this.onGroupbyDateGranularityChange,
393
+ onGroupbyGeolocationGranularityChange: this.onGroupbyGeolocationGranularityChange
394
+ }));
395
+ }
396
+ }]);
397
+ return YAxisGroupSettings;
398
+ }(Component);
399
+ export default YAxisGroupSettings;
@@ -0,0 +1,97 @@
1
+ .seastatistic-types-dialog {
2
+ max-width: 1102px;
3
+ width: 1102px;
4
+ height: calc(100% - 56px);
5
+ }
6
+
7
+ .seastatistic-types-dialog .modal-content {
8
+ height: 100%;
9
+ }
10
+
11
+ .seastatistic-types-dialog .seastatistic-types-body {
12
+ padding: 0;
13
+ overflow: hidden;
14
+ }
15
+
16
+ .seastatistic-types-dialog .seastatistic-chart-categories-nav {
17
+ border-bottom: 1px solid #e9ecef;
18
+ background-color: #f9f9f9;
19
+ height: 50px;
20
+ box-sizing: border-box;
21
+ margin: 0;
22
+ }
23
+
24
+ .seastatistic-types-dialog .seastatistic-chart-categories-nav .seastatistic-chart-cat-nav-item {
25
+ height: 40px;
26
+ width: 48px;
27
+ }
28
+
29
+ .seastatistic-types-dialog .seastatistic-chart-categories-nav .seastatistic-chart-cat-nav-item-container {
30
+ height: 100%;
31
+ width: 100%;
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ }
36
+
37
+ .seastatistic-types-dialog .seastatistic-chart-categories-nav .seastatistic-chart-cat-nav-item-container.seastatistic-icon-highlight .chart-icon {
38
+ color: #ff8000;
39
+ }
40
+
41
+ .seastatistic-types-dialog .seastatistic-chart-categories-nav .chart-icon {
42
+ cursor: pointer;
43
+ color: #666;
44
+ }
45
+
46
+ .seastatistic-types-dialog .seastatistic-type-container {
47
+ padding: 0 16px 16px;
48
+ }
49
+
50
+ .seastatistic-types-dialog .seastatistic-type-container:before {
51
+ content: "";
52
+ display: block;
53
+ width: 100%;
54
+ height: 20px;
55
+ }
56
+
57
+ .seastatistic-types-dialog .statistic-type-title {
58
+ font-weight: 600;
59
+ font-size: 18px;
60
+ color: #202428;
61
+ }
62
+
63
+ .seastatistic-types-dialog .statistic-type-item {
64
+ height: 172px;
65
+ width: 250px;
66
+
67
+ border: 1px solid #dcdade;
68
+ border-radius: 4px;
69
+ box-shadow: 0 0 2px 0 rgb(0 0 0 / 10%);
70
+ margin: 20px 17px 0 0;
71
+ }
72
+
73
+ .seastatistic-types-dialog .statistic-type-item:hover {
74
+ cursor: pointer;
75
+ border-color: #FFBF7F;
76
+ }
77
+
78
+ .seastatistic-types-dialog .statistic-type-item.selected {
79
+ border-color: #FF8000;
80
+ }
81
+
82
+ .seastatistic-types-dialog .statistic-type-description {
83
+ font-weight: 500;
84
+ font-size: 14px;
85
+ margin-top: 14px;
86
+ padding: 0 15px;
87
+ margin-bottom: 10px;
88
+ }
89
+
90
+ .seastatistic-types-dialog .statistic-type-image-container {
91
+ padding: 0 12px;
92
+ }
93
+
94
+ .seastatistic-types-dialog .statistic-type-image-container .statistic-type-demo-image {
95
+ width: 100%;
96
+ height: 125px;
97
+ }