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,163 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import React, { useMemo, useCallback } from 'react';
3
+ import { Label, FormGroup } from 'reactstrap';
4
+ import DTableSelect from "dtable-ui-component/lib/DTableSelect";
5
+ import Switch from '../widgets/switch';
6
+ import Divider from '../widgets/divider';
7
+ import LabelColor from '../widgets/label-color';
8
+ import MinMaxSetting from '../widgets/min-max-setting';
9
+ import DisplayValuesSettings from '../widgets/display-values-settings';
10
+ import { eventStopPropagation } from '../../../utils';
11
+ import { X_LABEL_POSITIONS, Y_LABEL_POSITIONS, LABEL_POSITION_TYPE_SHOW } from '../../../constants';
12
+ import intl from '../../../intl';
13
+ var StyleSettings = function StyleSettings(_ref) {
14
+ var statistic = _ref.statistic,
15
+ xLabel = _ref.xLabel,
16
+ yLabel = _ref.yLabel,
17
+ onChange = _ref.onChange;
18
+ var xAxisLabelOptions = useMemo(function () {
19
+ return X_LABEL_POSITIONS.map(function (item) {
20
+ return {
21
+ value: item,
22
+ label: intl.get(LABEL_POSITION_TYPE_SHOW[item])
23
+ };
24
+ });
25
+ }, []);
26
+ var yAxisLabelOptions = useMemo(function () {
27
+ return Y_LABEL_POSITIONS.map(function (item) {
28
+ return {
29
+ value: item,
30
+ label: intl.get(LABEL_POSITION_TYPE_SHOW[item])
31
+ };
32
+ });
33
+ }, []);
34
+ var onAxisLabelShowChange = useCallback(function (event, labelKey) {
35
+ eventStopPropagation(event);
36
+ var config = statistic.config;
37
+ var value = config[labelKey];
38
+ onChange && onChange(_defineProperty({}, labelKey, !value));
39
+ }, [statistic, onChange]);
40
+ var onAxisLabelPositionChange = useCallback(function (option, positionKey) {
41
+ var position = option.value;
42
+ var config = statistic.config;
43
+ var oldValue = config[positionKey];
44
+ if (position === oldValue) return;
45
+ onChange && onChange(_defineProperty({}, positionKey, position));
46
+ }, [statistic, onChange]);
47
+ var onYAxisAutoRangeChange = useCallback(function (event) {
48
+ eventStopPropagation(event);
49
+ var config = statistic.config;
50
+ var y_axis_auto_range = config.y_axis_auto_range;
51
+ onChange && onChange({
52
+ y_axis_auto_range: !y_axis_auto_range
53
+ });
54
+ }, [statistic, onChange]);
55
+ var onYAxisMinChange = useCallback(function (min) {
56
+ var newMin = parseInt(min);
57
+ if (Number.isNaN(newMin)) return;
58
+ var config = statistic.config;
59
+ var y_axis_min = config.y_axis_min;
60
+ if (y_axis_min === newMin) return;
61
+ onChange && onChange({
62
+ y_axis_min: newMin
63
+ });
64
+ }, [statistic, onChange]);
65
+ var onYAxisMaxChange = useCallback(function (max) {
66
+ var newMax = parseInt(max);
67
+ if (Number.isNaN(newMax)) return;
68
+ var config = statistic.config;
69
+ var y_axis_max = config.y_axis_max;
70
+ if (y_axis_max === newMax) return;
71
+ onChange && onChange({
72
+ y_axis_max: newMax
73
+ });
74
+ }, [statistic, onChange]);
75
+ var onLabelColorChange = useCallback(function (event, color) {
76
+ eventStopPropagation(event);
77
+ var config = statistic.config;
78
+ var y_axis_label_color = config.y_axis_label_color;
79
+ if (y_axis_label_color === color) return;
80
+ onChange && onChange({
81
+ y_axis_label_color: color
82
+ });
83
+ }, [statistic, onChange]);
84
+ var onDisplayValueChange = useCallback(function (update) {
85
+ onChange && onChange(update);
86
+ }, [onChange]);
87
+ var config = statistic.config;
88
+ var x_axis_show_label = config.x_axis_show_label,
89
+ x_axis_label_position = config.x_axis_label_position,
90
+ y_axis_show_label = config.y_axis_show_label,
91
+ y_axis_label_position = config.y_axis_label_position,
92
+ _config$y_axis_auto_r = config.y_axis_auto_range,
93
+ y_axis_auto_range = _config$y_axis_auto_r === void 0 ? true : _config$y_axis_auto_r,
94
+ y_axis_min = config.y_axis_min,
95
+ y_axis_max = config.y_axis_max,
96
+ y_axis_show_value = config.y_axis_show_value,
97
+ label_font_size = config.label_font_size,
98
+ y_axis_label_color = config.y_axis_label_color;
99
+ var xAxisLabelPosition = xAxisLabelOptions.find(function (option) {
100
+ return option.value === x_axis_label_position;
101
+ }) || xAxisLabelOptions[0];
102
+ var yAxisLabelPosition = yAxisLabelOptions.find(function (option) {
103
+ return option.value === y_axis_label_position;
104
+ }) || yAxisLabelOptions[0];
105
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormGroup, {
106
+ className: "seastatistic-parameter-item"
107
+ }, /*#__PURE__*/React.createElement(Label, null, intl.get(xLabel)), /*#__PURE__*/React.createElement(Switch, {
108
+ key: "x_axis_show_label",
109
+ checked: x_axis_show_label || false,
110
+ placeholder: intl.get('Display_title'),
111
+ onChange: function onChange(event) {
112
+ return onAxisLabelShowChange(event, 'x_axis_show_label');
113
+ }
114
+ }), x_axis_show_label && /*#__PURE__*/React.createElement(DTableSelect, {
115
+ value: xAxisLabelPosition,
116
+ options: xAxisLabelOptions,
117
+ onChange: function onChange(option) {
118
+ return onAxisLabelPositionChange(option, 'x_axis_label_position');
119
+ }
120
+ })), /*#__PURE__*/React.createElement(Divider, null), /*#__PURE__*/React.createElement(FormGroup, {
121
+ className: "seastatistic-parameter-item"
122
+ }, /*#__PURE__*/React.createElement(Label, null, intl.get(yLabel)), /*#__PURE__*/React.createElement(Switch, {
123
+ key: "y_axis_show_label",
124
+ checked: y_axis_show_label || false,
125
+ placeholder: intl.get('Display_title'),
126
+ onChange: function onChange(event) {
127
+ return onAxisLabelShowChange(event, 'y_axis_show_label');
128
+ }
129
+ }), y_axis_show_label && /*#__PURE__*/React.createElement("div", {
130
+ className: "seastatistic-parameter-container"
131
+ }, /*#__PURE__*/React.createElement(DTableSelect, {
132
+ value: yAxisLabelPosition,
133
+ classNamePrefix: "chart-y-axis-label-position",
134
+ options: yAxisLabelOptions,
135
+ onChange: function onChange(option) {
136
+ return onAxisLabelPositionChange(option, 'y_axis_label_position');
137
+ }
138
+ })), /*#__PURE__*/React.createElement(Switch, {
139
+ key: "y_axis_auto_range",
140
+ checked: y_axis_auto_range,
141
+ placeholder: intl.get('Auto_range'),
142
+ onChange: onYAxisAutoRangeChange
143
+ }), !y_axis_auto_range && /*#__PURE__*/React.createElement(MinMaxSetting, {
144
+ min: y_axis_min,
145
+ max: y_axis_max,
146
+ onMinChange: onYAxisMinChange,
147
+ onMaxChange: onYAxisMaxChange
148
+ })), /*#__PURE__*/React.createElement(Divider, null), /*#__PURE__*/React.createElement(LabelColor, {
149
+ labelColor: y_axis_label_color,
150
+ onChange: onLabelColorChange
151
+ }), /*#__PURE__*/React.createElement(Divider, null), /*#__PURE__*/React.createElement(DisplayValuesSettings, {
152
+ isShowValueKey: "y_axis_show_value",
153
+ isShowValue: y_axis_show_value,
154
+ fontSizeKey: "label_font_size",
155
+ fontSize: label_font_size,
156
+ onChange: onDisplayValueChange
157
+ }));
158
+ };
159
+ StyleSettings.defaultProps = {
160
+ xLabel: 'X_axis',
161
+ yLabel: 'Y_axis'
162
+ };
163
+ export default StyleSettings;
@@ -0,0 +1,121 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import React, { useCallback, useMemo } from 'react';
3
+ import { FormGroup } from 'reactstrap';
4
+ import { COLUMNS_ICON_CONFIG, getTableById } from 'dtable-utils';
5
+ import DTableSelect from "dtable-ui-component/lib/DTableSelect";
6
+ import CommonDataSettings from '../widgets/common-data-settings';
7
+ import { StatisticsUtils } from '../../../utils';
8
+ import { STATISTIC_SUMMARY_SHOW, STATISTIC_SUMMARY_CALCULATION_METHOD, STATISTIC_SUPPORT_COLUMNS, BASIC_NUMBER_CARD_CALCULATION_METHOD } from '../../../constants';
9
+ import intl from '../../../intl';
10
+ var DataSettings = function DataSettings(_ref) {
11
+ var tables = _ref.tables,
12
+ statistic = _ref.statistic,
13
+ FilterSettings = _ref.FilterSettings,
14
+ onChange = _ref.onChange;
15
+ var summaryMethodsOptions = useMemo(function () {
16
+ var numberCardSummaryMethod = [BASIC_NUMBER_CARD_CALCULATION_METHOD].concat(_toConsumableArray(STATISTIC_SUMMARY_CALCULATION_METHOD));
17
+ return numberCardSummaryMethod.map(function (method) {
18
+ return {
19
+ label: /*#__PURE__*/React.createElement("span", {
20
+ className: "select-option-name"
21
+ }, intl.get(STATISTIC_SUMMARY_SHOW[method])),
22
+ value: method
23
+ };
24
+ });
25
+ }, []);
26
+ var selectedTable = useMemo(function () {
27
+ var selectedTableId = statistic.config.table_id;
28
+ return getTableById(tables, selectedTableId);
29
+ }, [statistic.config, tables]);
30
+ var validColumns = useMemo(function () {
31
+ var columns = selectedTable && Array.isArray(selectedTable.columns) ? selectedTable.columns : [];
32
+ if (!columns || !Array.isArray(columns)) return [];
33
+ return columns.filter(function (column) {
34
+ return STATISTIC_SUPPORT_COLUMNS.includes(column.type);
35
+ });
36
+ }, [selectedTable]);
37
+ var numericColumns = useMemo(function () {
38
+ return validColumns.filter(function (column) {
39
+ return StatisticsUtils.isNumericSummaryColumn(column);
40
+ });
41
+ }, [validColumns]);
42
+ var numericColumnOptions = useMemo(function () {
43
+ var options = numericColumns.map(function (column) {
44
+ return {
45
+ value: column,
46
+ label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
47
+ className: "header-icon"
48
+ }, /*#__PURE__*/React.createElement("i", {
49
+ className: COLUMNS_ICON_CONFIG[column.type]
50
+ })), /*#__PURE__*/React.createElement("span", {
51
+ className: 'select-module select-module-name ml-0'
52
+ }, column.name))
53
+ };
54
+ });
55
+ return [{
56
+ value: {
57
+ key: 'Groupby_null'
58
+ },
59
+ label: /*#__PURE__*/React.createElement("span", {
60
+ className: 'select-module select-module-name null-option-name ml-0'
61
+ }, intl.get('Select_a_column')),
62
+ style: {
63
+ color: 'rgba(0, 0, 0, .25)'
64
+ }
65
+ }].concat(_toConsumableArray(options));
66
+ }, [numericColumns]);
67
+ var onSelectColumnChange = useCallback(function (option) {
68
+ var config = statistic.config;
69
+ var numeric_column_key = config.numeric_column_key;
70
+ var newColumnKey = option.value.key;
71
+ if (numeric_column_key === newColumnKey) return;
72
+ onChange && onChange({
73
+ numeric_column_key: newColumnKey
74
+ });
75
+ }, [statistic, onChange]);
76
+ var onSelectSummaryMethod = useCallback(function (option) {
77
+ var config = statistic.config;
78
+ var summary_method = config.summary_method;
79
+ var newSummaryMethod = option.value;
80
+ if (newSummaryMethod === summary_method) return;
81
+ onChange && onChange({
82
+ summary_method: newSummaryMethod
83
+ });
84
+ }, [statistic, onChange]);
85
+ var getSelectedMethodOption = useCallback(function (method, summaryMethodsOptions) {
86
+ return summaryMethodsOptions.find(function (m) {
87
+ return m.value === method;
88
+ }) || summaryMethodsOptions[0];
89
+ }, []);
90
+ var renderSummaryMethod = useCallback(function () {
91
+ var summary_method = statistic.config.summary_method;
92
+ var selectedMethodOption = getSelectedMethodOption(summary_method, summaryMethodsOptions);
93
+ return /*#__PURE__*/React.createElement("div", {
94
+ className: "dtable-plugin-stat-parameter-item"
95
+ }, /*#__PURE__*/React.createElement("label", null, intl.get('Summary_method')), /*#__PURE__*/React.createElement(DTableSelect, {
96
+ value: selectedMethodOption,
97
+ onChange: onSelectSummaryMethod,
98
+ options: summaryMethodsOptions
99
+ }));
100
+ }, [statistic, getSelectedMethodOption, onSelectSummaryMethod, summaryMethodsOptions]);
101
+ var config = statistic.config;
102
+ var selectedColumnOption = numericColumnOptions.find(function (option) {
103
+ return option.value.key === config.numeric_column_key;
104
+ }) || numericColumnOptions[0];
105
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(CommonDataSettings, {
106
+ statistic: statistic,
107
+ tables: tables,
108
+ FilterSettings: FilterSettings,
109
+ onChange: onChange
110
+ }), /*#__PURE__*/React.createElement(FormGroup, {
111
+ className: "seastatistic-parameter-item"
112
+ }, /*#__PURE__*/React.createElement("label", null, intl.get('Statistic_field')), /*#__PURE__*/React.createElement(DTableSelect, {
113
+ value: selectedColumnOption,
114
+ options: numericColumnOptions,
115
+ placeholder: intl.get('Select_a_column'),
116
+ onChange: onSelectColumnChange
117
+ })), /*#__PURE__*/React.createElement(FormGroup, {
118
+ className: "seastatistic-parameter-item"
119
+ }, renderSummaryMethod()));
120
+ };
121
+ export default DataSettings;
@@ -0,0 +1,3 @@
1
+ import BasicNumberCardDataSettings from './data-settings';
2
+ import BasicNumberCardStyleSettings from './style-settings';
3
+ export { BasicNumberCardDataSettings, BasicNumberCardStyleSettings };
@@ -0,0 +1,42 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import React, { useCallback, useState } from 'react';
3
+ import { Input, FormGroup } from 'reactstrap';
4
+ import intl from '../../../intl';
5
+ var StyleSettings = function StyleSettings(_ref) {
6
+ var statistic = _ref.statistic,
7
+ onChange = _ref.onChange;
8
+ var _useState = useState(statistic.config.name || ''),
9
+ _useState2 = _slicedToArray(_useState, 2),
10
+ name = _useState2[0],
11
+ setName = _useState2[1];
12
+ var onChangeName = useCallback(function (event) {
13
+ var newName = event.target.value;
14
+ if (newName === name) return;
15
+ setName(newName);
16
+ }, [name]);
17
+ var onSaveName = useCallback(function () {
18
+ var oldName = statistic.config.name || '';
19
+ if (oldName === name) return;
20
+ onChange && onChange({
21
+ name: name
22
+ });
23
+ }, [name, statistic, onChange]);
24
+ var onKeyDown = useCallback(function (e) {
25
+ if (e.key === 'Enter') {
26
+ e.preventDefault();
27
+ e.target.blur();
28
+ }
29
+ }, []);
30
+ var config = statistic.config;
31
+ return /*#__PURE__*/React.createElement(FormGroup, {
32
+ className: "seastatistic-parameter-item"
33
+ }, /*#__PURE__*/React.createElement("label", null, intl.get('Label')), /*#__PURE__*/React.createElement(Input, {
34
+ type: "text",
35
+ value: name,
36
+ placeholder: config.name || '',
37
+ onBlur: onSaveName,
38
+ onChange: onChangeName,
39
+ onKeyDown: onKeyDown
40
+ }));
41
+ };
42
+ export default StyleSettings;
@@ -0,0 +1,256 @@
1
+ import React, { useCallback } from 'react';
2
+ import { CellType, DATE_COLUMN_OPTIONS } from 'dtable-utils';
3
+ import CommonDataSettings from '../widgets/common-data-settings';
4
+ import Divider from '../widgets/divider';
5
+ import GroupBy from '../widgets/group-by';
6
+ import Switch from '../widgets/switch';
7
+ import SummarySettings from '../widgets/summary-settings';
8
+ import { eventStopPropagation } from '../../../utils';
9
+ import { STATISTIC_SUMMARY_TYPE, STATISTIC_Y_GROUP_TYPE, STATISTIC_SUMMARY_CALCULATION_METHOD, GEOLOCATION_FORMAT_CITY, GEOLOCATION_FORMAT_MAP, COMBINATION_POSITION } from '../../../constants';
10
+ import intl from '../../../intl';
11
+ var DataSettings = function DataSettings(_ref) {
12
+ var statistic = _ref.statistic,
13
+ tables = _ref.tables,
14
+ xLabel = _ref.xLabel,
15
+ FilterSettings = _ref.FilterSettings,
16
+ onChange = _ref.onChange;
17
+ var onXAxisColumnChange = useCallback(function (option) {
18
+ var config = statistic.config;
19
+ var x_axis_column_key = config.x_axis_column_key;
20
+ var column = option.value;
21
+ var newXAxisColumnKey = column.key,
22
+ type = column.type;
23
+ var validValue = newXAxisColumnKey === 'Groupby_null' ? null : newXAxisColumnKey;
24
+ if (x_axis_column_key === validValue) return;
25
+ var update = {
26
+ x_axis_column_key: validValue
27
+ };
28
+ if (!validValue) {
29
+ update['x_axis_date_granularity'] = null;
30
+ update['x_axis_geolocation_granularity'] = null;
31
+ } else {
32
+ if (DATE_COLUMN_OPTIONS.includes(type)) {
33
+ update['x_axis_date_granularity'] = STATISTIC_SUMMARY_TYPE.MONTH;
34
+ update['x_axis_geolocation_granularity'] = null;
35
+ } else if (type === CellType.GEOLOCATION) {
36
+ var _ref2 = column.data || {},
37
+ geo_format = _ref2.geo_format;
38
+ if (geo_format === GEOLOCATION_FORMAT_MAP.PROVINCE) {
39
+ update['x_axis_geolocation_granularity'] = GEOLOCATION_FORMAT_MAP.PROVINCE;
40
+ } else if (geo_format === GEOLOCATION_FORMAT_MAP.PROVINCE_CITY) {
41
+ update['x_axis_geolocation_granularity'] = GEOLOCATION_FORMAT_CITY;
42
+ } else if (geo_format === GEOLOCATION_FORMAT_MAP.GEOLOCATION || !geo_format) {
43
+ update['x_axis_geolocation_granularity'] = 'district';
44
+ } else {
45
+ update['x_axis_geolocation_granularity'] = null;
46
+ }
47
+ update['x_axis_date_granularity'] = null;
48
+ }
49
+ }
50
+ onChange && onChange(update);
51
+ }, [statistic, onChange]);
52
+ var onGroupbyDateGranularityChange = useCallback(function (option) {
53
+ var config = statistic.config;
54
+ var x_axis_date_granularity = config.x_axis_date_granularity;
55
+ var value = option.value;
56
+ if (value === x_axis_date_granularity) return;
57
+ onChange && onChange({
58
+ x_axis_date_granularity: value
59
+ });
60
+ }, [statistic, onChange]);
61
+ var onGroupbyGeolocationGranularityChange = useCallback(function (option) {
62
+ var config = statistic.config;
63
+ var x_axis_geolocation_granularity = config.x_axis_geolocation_granularity;
64
+ var value = option.value;
65
+ if (value === x_axis_geolocation_granularity) return;
66
+ onChange && onChange({
67
+ x_axis_geolocation_granularity: value
68
+ });
69
+ }, [statistic, onChange]);
70
+ var onIncludeEmptyChange = useCallback(function (event) {
71
+ eventStopPropagation(event);
72
+ var config = statistic.config;
73
+ var x_axis_include_empty_cells = config.x_axis_include_empty_cells;
74
+ onChange && onChange({
75
+ x_axis_include_empty_cells: !x_axis_include_empty_cells
76
+ });
77
+ }, [statistic, onChange]);
78
+ var _onChangeSummaryType = useCallback(function (option, position) {
79
+ var config = statistic.config;
80
+ var y_axis_right_summary_type = config.y_axis_right_summary_type,
81
+ y_axis_left_summary_type = config.y_axis_left_summary_type,
82
+ y_axis_right_summary_column = config.y_axis_right_summary_column,
83
+ y_axis_left_summary_column = config.y_axis_left_summary_column,
84
+ y_axis_left_group_by_multiple_numeric_column = config.y_axis_left_group_by_multiple_numeric_column,
85
+ y_axis_left_summary_method = config.y_axis_left_summary_method,
86
+ y_axis_left_group_by_numeric_columns = config.y_axis_left_group_by_numeric_columns;
87
+ var newSummaryType = option === STATISTIC_Y_GROUP_TYPE.COUNT ? STATISTIC_SUMMARY_TYPE.COUNT : STATISTIC_SUMMARY_TYPE.ADVANCED;
88
+ if (position === COMBINATION_POSITION.LEFT) {
89
+ if (newSummaryType === STATISTIC_SUMMARY_TYPE.COUNT && y_axis_left_summary_type === STATISTIC_SUMMARY_TYPE.COUNT) return;
90
+ if (option === STATISTIC_Y_GROUP_TYPE.SINGLE_NUMERIC_COLUMN && !y_axis_left_group_by_multiple_numeric_column && y_axis_left_summary_type !== STATISTIC_SUMMARY_TYPE.COUNT) return;
91
+ if (option === STATISTIC_Y_GROUP_TYPE.MULTIPLE_NUMERIC_COLUMN && y_axis_left_group_by_multiple_numeric_column) return;
92
+ if (option === STATISTIC_Y_GROUP_TYPE.COUNT) {
93
+ y_axis_left_summary_column = null;
94
+ y_axis_left_summary_method = 'sum';
95
+ y_axis_left_group_by_multiple_numeric_column = false;
96
+ y_axis_left_group_by_numeric_columns = [];
97
+ }
98
+ if (option === STATISTIC_Y_GROUP_TYPE.SINGLE_NUMERIC_COLUMN) {
99
+ y_axis_left_summary_column = null;
100
+ y_axis_left_summary_method = STATISTIC_SUMMARY_CALCULATION_METHOD[0];
101
+ y_axis_left_group_by_multiple_numeric_column = false;
102
+ y_axis_left_group_by_numeric_columns = [];
103
+ }
104
+ if (option === STATISTIC_Y_GROUP_TYPE.MULTIPLE_NUMERIC_COLUMN) {
105
+ y_axis_left_summary_column = null;
106
+ y_axis_left_summary_method = STATISTIC_SUMMARY_CALCULATION_METHOD[0];
107
+ y_axis_left_group_by_multiple_numeric_column = true;
108
+ y_axis_left_group_by_numeric_columns = [];
109
+ }
110
+ onChange && onChange({
111
+ y_axis_left_summary_type: newSummaryType,
112
+ y_axis_left_summary_column: y_axis_left_summary_column,
113
+ y_axis_left_summary_method: y_axis_left_summary_method,
114
+ y_axis_left_group_by_multiple_numeric_column: y_axis_left_group_by_multiple_numeric_column,
115
+ y_axis_left_group_by_numeric_columns: y_axis_left_group_by_numeric_columns
116
+ });
117
+ return;
118
+ }
119
+ if (y_axis_right_summary_type === newSummaryType) return;
120
+ y_axis_right_summary_type = newSummaryType;
121
+ var y_axis_right_summary_method = STATISTIC_SUMMARY_CALCULATION_METHOD[0];
122
+ if (newSummaryType === STATISTIC_SUMMARY_TYPE.COUNT) {
123
+ y_axis_right_summary_column = null;
124
+ y_axis_right_summary_method = 'sum';
125
+ }
126
+ onChange && onChange({
127
+ y_axis_right_summary_type: newSummaryType,
128
+ y_axis_right_summary_column: y_axis_right_summary_column,
129
+ y_axis_right_summary_method: y_axis_right_summary_method
130
+ });
131
+ }, [statistic, onChange]);
132
+ var _onSelectSummaryColumn = useCallback(function (option, position) {
133
+ var config = statistic.config;
134
+ var y_axis_right_summary_column = config.y_axis_right_summary_column,
135
+ y_axis_left_summary_column = config.y_axis_left_summary_column,
136
+ y_axis_left_summary_method = config.y_axis_left_summary_method,
137
+ y_axis_right_summary_method = config.y_axis_right_summary_method;
138
+ var newSummaryColumnKey = option;
139
+ if (position === COMBINATION_POSITION.LEFT) {
140
+ if (y_axis_left_summary_column === newSummaryColumnKey) return;
141
+ if (!y_axis_left_summary_method) {
142
+ y_axis_left_summary_method = 'Sum';
143
+ }
144
+ onChange && onChange({
145
+ y_axis_left_summary_column: newSummaryColumnKey,
146
+ y_axis_left_summary_method: y_axis_left_summary_method
147
+ });
148
+ return;
149
+ }
150
+ if (y_axis_right_summary_column === newSummaryColumnKey) return;
151
+ if (!y_axis_right_summary_method) {
152
+ y_axis_right_summary_method = 'Sum';
153
+ }
154
+ onChange && onChange({
155
+ y_axis_right_summary_column: newSummaryColumnKey,
156
+ y_axis_right_summary_method: y_axis_right_summary_method
157
+ });
158
+ }, [statistic, onChange]);
159
+ var _onSelectSummaryMethod = useCallback(function (option, position) {
160
+ var config = statistic.config;
161
+ var y_axis_right_summary_method = config.y_axis_right_summary_method,
162
+ y_axis_left_summary_method = config.y_axis_left_summary_method;
163
+ var newSummaryColumnMethod = option;
164
+ if (position === COMBINATION_POSITION.LEFT) {
165
+ if (y_axis_left_summary_method !== newSummaryColumnMethod) {
166
+ onChange && onChange({
167
+ y_axis_left_summary_method: newSummaryColumnMethod
168
+ });
169
+ }
170
+ return;
171
+ }
172
+ if (y_axis_right_summary_method === newSummaryColumnMethod) return;
173
+ onChange && onChange({
174
+ y_axis_right_summary_method: newSummaryColumnMethod
175
+ });
176
+ }, [statistic, onChange]);
177
+ var config = statistic.config;
178
+ var table_id = config.table_id,
179
+ x_axis_column_key = config.x_axis_column_key,
180
+ x_axis_date_granularity = config.x_axis_date_granularity,
181
+ x_axis_geolocation_granularity = config.x_axis_geolocation_granularity,
182
+ x_axis_include_empty_cells = config.x_axis_include_empty_cells,
183
+ y_axis_right_summary_type = config.y_axis_right_summary_type,
184
+ y_axis_right_summary_method = config.y_axis_right_summary_method,
185
+ y_axis_right_summary_column = config.y_axis_right_summary_column,
186
+ y_axis_left_summary_type = config.y_axis_left_summary_type,
187
+ y_axis_left_summary_method = config.y_axis_left_summary_method,
188
+ y_axis_left_summary_column = config.y_axis_left_summary_column;
189
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(CommonDataSettings, {
190
+ statistic: statistic,
191
+ tables: tables,
192
+ FilterSettings: FilterSettings,
193
+ onChange: onChange
194
+ }), /*#__PURE__*/React.createElement(GroupBy, {
195
+ tables: tables,
196
+ className: "selected-x-axis",
197
+ label: intl.get(xLabel),
198
+ selectedTableId: table_id,
199
+ selectedColumnKey: x_axis_column_key,
200
+ selectedDateGranularity: x_axis_date_granularity,
201
+ selectedGeolocationGranularity: x_axis_geolocation_granularity,
202
+ onGroupByChange: onXAxisColumnChange,
203
+ onGroupbyDateGranularityChange: onGroupbyDateGranularityChange,
204
+ onGroupbyGeolocationGranularityChange: onGroupbyGeolocationGranularityChange
205
+ }), /*#__PURE__*/React.createElement(Switch, {
206
+ key: "x_axis_include_empty_cells",
207
+ checked: x_axis_include_empty_cells,
208
+ placeholder: intl.get('Include_empty'),
209
+ onChange: onIncludeEmptyChange
210
+ }), /*#__PURE__*/React.createElement(Divider, {
211
+ className: "mt-4"
212
+ }), /*#__PURE__*/React.createElement(SummarySettings, {
213
+ chartType: 'combination_chart',
214
+ label: intl.get('Y-axis(left side)'),
215
+ config: config,
216
+ statistic: statistic,
217
+ summaryType: y_axis_left_summary_type,
218
+ summaryMethod: y_axis_left_summary_method,
219
+ summaryColumn: y_axis_left_summary_column,
220
+ onChangeSummaryType: function onChangeSummaryType(option) {
221
+ return _onChangeSummaryType(option, COMBINATION_POSITION.LEFT);
222
+ },
223
+ onSelectSummaryColumn: function onSelectSummaryColumn(option) {
224
+ return _onSelectSummaryColumn(option, COMBINATION_POSITION.LEFT);
225
+ },
226
+ onSelectSummaryMethod: function onSelectSummaryMethod(option) {
227
+ return _onSelectSummaryMethod(option, COMBINATION_POSITION.LEFT);
228
+ },
229
+ useMultipleSummaryColumns: true,
230
+ tables: tables,
231
+ onChange: onChange
232
+ }), /*#__PURE__*/React.createElement(SummarySettings, {
233
+ chartType: 'combination_chart',
234
+ label: intl.get('Y-axis(right side)'),
235
+ config: config,
236
+ summaryType: y_axis_right_summary_type,
237
+ summaryMethod: y_axis_right_summary_method,
238
+ summaryColumn: y_axis_right_summary_column,
239
+ onChangeSummaryType: function onChangeSummaryType(option) {
240
+ return _onChangeSummaryType(option, COMBINATION_POSITION.RIGHT);
241
+ },
242
+ onSelectSummaryColumn: function onSelectSummaryColumn(option) {
243
+ return _onSelectSummaryColumn(option, COMBINATION_POSITION.RIGHT);
244
+ },
245
+ onSelectSummaryMethod: function onSelectSummaryMethod(option) {
246
+ return _onSelectSummaryMethod(option, COMBINATION_POSITION.RIGHT);
247
+ },
248
+ tables: tables,
249
+ statistic: statistic,
250
+ onChange: onChange
251
+ }));
252
+ };
253
+ DataSettings.defaultProps = {
254
+ xLabel: 'X_axis'
255
+ };
256
+ export default DataSettings;
@@ -0,0 +1,3 @@
1
+ import CombinationDataSettings from './data-settings';
2
+ import CombinationStyleSettings from './style-settings';
3
+ export { CombinationDataSettings, CombinationStyleSettings };