sea-chart 0.0.1-beta

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 (213) hide show
  1. package/README.md +120 -0
  2. package/dist/assets/icons/area-chart.svg +10 -0
  3. package/dist/assets/icons/bar-chart.svg +12 -0
  4. package/dist/assets/icons/card.svg +22 -0
  5. package/dist/assets/icons/combination-chart.svg +17 -0
  6. package/dist/assets/icons/dtable-logo.svg +16 -0
  7. package/dist/assets/icons/facet-chart.svg +12 -0
  8. package/dist/assets/icons/gauge.svg +18 -0
  9. package/dist/assets/icons/heat-map.svg +14 -0
  10. package/dist/assets/icons/histogram.svg +12 -0
  11. package/dist/assets/icons/line-chart.svg +12 -0
  12. package/dist/assets/icons/map.svg +20 -0
  13. package/dist/assets/icons/pie-chart.svg +11 -0
  14. package/dist/assets/icons/rectangular-tree-diagram.svg +10 -0
  15. package/dist/assets/icons/scatter-chart.svg +15 -0
  16. package/dist/assets/icons/type-change.svg +17 -0
  17. package/dist/assets/img/area-chart.png +0 -0
  18. package/dist/assets/img/area-group-chart.png +0 -0
  19. package/dist/assets/img/bar-group.png +0 -0
  20. package/dist/assets/img/bar-stack.png +0 -0
  21. package/dist/assets/img/bar.png +0 -0
  22. package/dist/assets/img/combination-chart.png +0 -0
  23. package/dist/assets/img/compared-chart.png +0 -0
  24. package/dist/assets/img/completeness-chart.png +0 -0
  25. package/dist/assets/img/custom-bar.png +0 -0
  26. package/dist/assets/img/dashboard-chart.png +0 -0
  27. package/dist/assets/img/group-completeness-chart.png +0 -0
  28. package/dist/assets/img/group_line.png +0 -0
  29. package/dist/assets/img/heat-map.png +0 -0
  30. package/dist/assets/img/horizontal-bar.png +0 -0
  31. package/dist/assets/img/horizontal-group-bar.png +0 -0
  32. package/dist/assets/img/line.png +0 -0
  33. package/dist/assets/img/map-bubble.png +0 -0
  34. package/dist/assets/img/map.png +0 -0
  35. package/dist/assets/img/mirror.png +0 -0
  36. package/dist/assets/img/number-card.png +0 -0
  37. package/dist/assets/img/pie.png +0 -0
  38. package/dist/assets/img/pivot-table.png +0 -0
  39. package/dist/assets/img/ring.png +0 -0
  40. package/dist/assets/img/scatter.png +0 -0
  41. package/dist/assets/img/stacked-horizontal-bar.png +0 -0
  42. package/dist/assets/img/treemap.png +0 -0
  43. package/dist/assets/img/trend-chart.png +0 -0
  44. package/dist/assets/img/world-map-bubble.png +0 -0
  45. package/dist/assets/img/world-map.png +0 -0
  46. package/dist/components/collaborator/index.js +26 -0
  47. package/dist/components/icon/index.css +5 -0
  48. package/dist/components/icon/index.js +24 -0
  49. package/dist/components/index.js +8 -0
  50. package/dist/components/loading/index.css +54 -0
  51. package/dist/components/loading/index.js +12 -0
  52. package/dist/components/number-input/index.js +31 -0
  53. package/dist/components/pixel-editor/index.css +29 -0
  54. package/dist/components/pixel-editor/index.js +38 -0
  55. package/dist/components/select-group/index.css +67 -0
  56. package/dist/components/select-group/index.js +52 -0
  57. package/dist/components/types-dialog/index.css +97 -0
  58. package/dist/components/types-dialog/index.js +116 -0
  59. package/dist/constants/geolocation.js +11 -0
  60. package/dist/constants/index.js +184 -0
  61. package/dist/constants/model.js +187 -0
  62. package/dist/constants/style.js +15 -0
  63. package/dist/constants/type-image.js +59 -0
  64. package/dist/constants/type.js +124 -0
  65. package/dist/context.js +33 -0
  66. package/dist/editor/index.css +0 -0
  67. package/dist/editor/index.js +36 -0
  68. package/dist/index.js +6 -0
  69. package/dist/intl.js +37 -0
  70. package/dist/locale/index.js +18 -0
  71. package/dist/locale/lang/de.js +141 -0
  72. package/dist/locale/lang/en.js +143 -0
  73. package/dist/locale/lang/es.js +141 -0
  74. package/dist/locale/lang/fr.js +141 -0
  75. package/dist/locale/lang/pt.js +141 -0
  76. package/dist/locale/lang/ru.js +141 -0
  77. package/dist/locale/lang/zh_CN.js +143 -0
  78. package/dist/model/area-group.js +41 -0
  79. package/dist/model/area.js +32 -0
  80. package/dist/model/bar-group.js +44 -0
  81. package/dist/model/bar-stack.js +41 -0
  82. package/dist/model/bar.js +38 -0
  83. package/dist/model/base-model.js +9 -0
  84. package/dist/model/basic-number-card.js +22 -0
  85. package/dist/model/chart.js +23 -0
  86. package/dist/model/combination.js +38 -0
  87. package/dist/model/compare-bar.js +39 -0
  88. package/dist/model/completeness-group.js +24 -0
  89. package/dist/model/completeness.js +18 -0
  90. package/dist/model/dashboard.js +16 -0
  91. package/dist/model/generic-model.js +224 -0
  92. package/dist/model/heat-map.js +23 -0
  93. package/dist/model/horizontal-bar.js +38 -0
  94. package/dist/model/horizontal-group-bar.js +43 -0
  95. package/dist/model/index.js +63 -0
  96. package/dist/model/line-group.js +44 -0
  97. package/dist/model/line.js +38 -0
  98. package/dist/model/map-bubble.js +27 -0
  99. package/dist/model/map.js +27 -0
  100. package/dist/model/mirror.js +26 -0
  101. package/dist/model/pie.js +26 -0
  102. package/dist/model/ring.js +26 -0
  103. package/dist/model/scatter.js +19 -0
  104. package/dist/model/stacked-horizontal-bar.js +32 -0
  105. package/dist/model/table.js +23 -0
  106. package/dist/model/tree-map.js +20 -0
  107. package/dist/model/trend.js +24 -0
  108. package/dist/model/user.js +15 -0
  109. package/dist/model/world-map-bubble.js +26 -0
  110. package/dist/model/world-map.js +26 -0
  111. package/dist/settings/advance-bar-settings/data-settings.js +143 -0
  112. package/dist/settings/advance-bar-settings/index.js +3 -0
  113. package/dist/settings/advance-bar-settings/style-settings.js +161 -0
  114. package/dist/settings/bar-settings/data-settings.js +162 -0
  115. package/dist/settings/bar-settings/index.js +3 -0
  116. package/dist/settings/bar-settings/style-settings.js +179 -0
  117. package/dist/settings/basic-number-card/data-settings.js +126 -0
  118. package/dist/settings/basic-number-card/index.js +3 -0
  119. package/dist/settings/basic-number-card/style-settings.js +42 -0
  120. package/dist/settings/combination-settings/data-settings.js +279 -0
  121. package/dist/settings/combination-settings/index.js +3 -0
  122. package/dist/settings/combination-settings/style-settings.js +174 -0
  123. package/dist/settings/dashboard-settings/data-settings.js +179 -0
  124. package/dist/settings/dashboard-settings/index.js +2 -0
  125. package/dist/settings/data-settings.js +73 -0
  126. package/dist/settings/horizontal-bar-settings/data-settings.js +55 -0
  127. package/dist/settings/horizontal-bar-settings/index.js +3 -0
  128. package/dist/settings/horizontal-bar-settings/style-settings.js +46 -0
  129. package/dist/settings/index.css +85 -0
  130. package/dist/settings/index.js +76 -0
  131. package/dist/settings/pie-settings/data-settings.js +146 -0
  132. package/dist/settings/pie-settings/index.js +3 -0
  133. package/dist/settings/pie-settings/style-settings.js +141 -0
  134. package/dist/settings/style-settings.js +118 -0
  135. package/dist/settings/table-settings/data-settings.js +549 -0
  136. package/dist/settings/table-settings/index.js +2 -0
  137. package/dist/settings/time-comparison-settings/data-settings.js +172 -0
  138. package/dist/settings/time-comparison-settings/index.js +3 -0
  139. package/dist/settings/time-comparison-settings/style-settings.js +213 -0
  140. package/dist/settings/widgets/basic-summary/index.css +12 -0
  141. package/dist/settings/widgets/basic-summary/index.js +176 -0
  142. package/dist/settings/widgets/chart-type/index.css +31 -0
  143. package/dist/settings/widgets/chart-type/index.js +59 -0
  144. package/dist/settings/widgets/common-data-settings.js +48 -0
  145. package/dist/settings/widgets/data-filter/index.css +17 -0
  146. package/dist/settings/widgets/data-filter/index.js +89 -0
  147. package/dist/settings/widgets/data-sort.js +44 -0
  148. package/dist/settings/widgets/date-summary-item.js +111 -0
  149. package/dist/settings/widgets/display-values-settings/index.css +13 -0
  150. package/dist/settings/widgets/display-values-settings/index.js +42 -0
  151. package/dist/settings/widgets/divider/index.css +4 -0
  152. package/dist/settings/widgets/divider/index.js +12 -0
  153. package/dist/settings/widgets/font-settings/font-size-settings.js +33 -0
  154. package/dist/settings/widgets/font-settings/font-weight-settings.js +44 -0
  155. package/dist/settings/widgets/font-settings/index.js +3 -0
  156. package/dist/settings/widgets/group-by.js +160 -0
  157. package/dist/settings/widgets/label-color.js +30 -0
  158. package/dist/settings/widgets/min-max-setting.js +52 -0
  159. package/dist/settings/widgets/mininum-slice-percent.js +63 -0
  160. package/dist/settings/widgets/numeric-summary-item.js +90 -0
  161. package/dist/settings/widgets/select-table/index.css +0 -0
  162. package/dist/settings/widgets/select-table/index.js +38 -0
  163. package/dist/settings/widgets/stack.js +50 -0
  164. package/dist/settings/widgets/summary-method-setting.js +66 -0
  165. package/dist/settings/widgets/summary-settings.js +411 -0
  166. package/dist/settings/widgets/switch/index.css +37 -0
  167. package/dist/settings/widgets/switch/index.js +24 -0
  168. package/dist/settings/widgets/text-horizontal-settings.js +25 -0
  169. package/dist/settings/widgets/time-picker.js +173 -0
  170. package/dist/settings/widgets/title-settings/index.js +60 -0
  171. package/dist/settings/widgets/title-settings/title-text.js +25 -0
  172. package/dist/settings/widgets/x-axios.js +0 -0
  173. package/dist/settings/widgets/y-axis-group-settings.js +438 -0
  174. package/dist/utils/cell-format-utils.js +42 -0
  175. package/dist/utils/chart-data-sql.js +606 -0
  176. package/dist/utils/chart-utils.js +1800 -0
  177. package/dist/utils/chart.js +6 -0
  178. package/dist/utils/collaborator-utils.js +39 -0
  179. package/dist/utils/column-2-sql-column.js +551 -0
  180. package/dist/utils/column-utils.js +208 -0
  181. package/dist/utils/custom-g2.js +612 -0
  182. package/dist/utils/date-translate.js +66 -0
  183. package/dist/utils/index.js +48 -0
  184. package/dist/utils/key-generator.js +13 -0
  185. package/dist/utils/object-utils.js +45 -0
  186. package/dist/utils/options-utils.js +60 -0
  187. package/dist/view/index.css +53 -0
  188. package/dist/view/index.js +189 -0
  189. package/dist/view/title/index.css +3 -0
  190. package/dist/view/title/index.js +46 -0
  191. package/dist/view/wrapper/area.js +150 -0
  192. package/dist/view/wrapper/bar-group.js +148 -0
  193. package/dist/view/wrapper/bar.js +138 -0
  194. package/dist/view/wrapper/basic-number-card.js +127 -0
  195. package/dist/view/wrapper/chart-component.js +261 -0
  196. package/dist/view/wrapper/combination.js +399 -0
  197. package/dist/view/wrapper/dashboard.js +164 -0
  198. package/dist/view/wrapper/horizontal-bar-group.js +149 -0
  199. package/dist/view/wrapper/horizontal-bar.js +140 -0
  200. package/dist/view/wrapper/horizontal-component.js +78 -0
  201. package/dist/view/wrapper/index.js +200 -0
  202. package/dist/view/wrapper/line-group.js +145 -0
  203. package/dist/view/wrapper/line.js +157 -0
  204. package/dist/view/wrapper/pie.js +185 -0
  205. package/dist/view/wrapper/ring.js +264 -0
  206. package/dist/view/wrapper/table/index.css +103 -0
  207. package/dist/view/wrapper/table/index.js +31 -0
  208. package/dist/view/wrapper/table/one-dimension-table-no-numeric-columns.js +144 -0
  209. package/dist/view/wrapper/table/one-dimension-table-with-numeric-columns.js +198 -0
  210. package/dist/view/wrapper/table/pivot-table-display-name.js +247 -0
  211. package/dist/view/wrapper/table/two-dimension-table.js +249 -0
  212. package/dist/view/wrapper/treemap.js +186 -0
  213. package/package.json +151 -0
@@ -0,0 +1,174 @@
1
+ import React, { useCallback, useMemo } from 'react';
2
+ import { Label, FormGroup } from 'reactstrap';
3
+ import DTableSelect from "dtable-ui-component/lib/DTableSelect";
4
+ import Switch from '../widgets/switch';
5
+ import Divider from '../widgets/divider';
6
+ import MinMaxSetting from '../widgets/min-max-setting';
7
+ import DisplayValuesSettings from '../widgets/display-values-settings';
8
+ import { eventStopPropagation } from '../../utils';
9
+ import { X_LABEL_POSITIONS, Y_LABEL_POSITIONS, LABEL_POSITION_TYPE_SHOW } from '../../constants';
10
+ import intl from '../../intl';
11
+ const StyleSettings = _ref => {
12
+ let {
13
+ chart,
14
+ onChange,
15
+ xLabel
16
+ } = _ref;
17
+ const xAxisLabelOptions = useMemo(() => {
18
+ return X_LABEL_POSITIONS.map(item => {
19
+ return {
20
+ value: item,
21
+ label: intl.get(LABEL_POSITION_TYPE_SHOW[item])
22
+ };
23
+ });
24
+ }, []);
25
+ const yAxisLabelOptions = useMemo(() => {
26
+ return Y_LABEL_POSITIONS.map(item => {
27
+ return {
28
+ value: item,
29
+ label: intl.get(LABEL_POSITION_TYPE_SHOW[item])
30
+ };
31
+ });
32
+ }, []);
33
+ const onAxisLabelShowChange = useCallback((event, labelKey) => {
34
+ eventStopPropagation(event);
35
+ const {
36
+ config
37
+ } = chart;
38
+ const value = config[labelKey];
39
+ onChange && onChange({
40
+ [labelKey]: !value
41
+ });
42
+ }, [chart, onChange]);
43
+ const onAxisLabelPositionChange = useCallback((option, positionKey) => {
44
+ const position = option.value;
45
+ const {
46
+ config
47
+ } = chart;
48
+ const oldValue = config[positionKey];
49
+ if (position === oldValue) return;
50
+ onChange && onChange({
51
+ [positionKey]: position
52
+ });
53
+ }, [chart, onChange]);
54
+ const onToggleYAxisAutoRange = useCallback(key => {
55
+ const {
56
+ config
57
+ } = chart;
58
+ const update = {
59
+ [key]: config[key] === undefined ? false : !config[key]
60
+ };
61
+ onChange && onChange(update);
62
+ }, [chart, onChange]);
63
+ const onYAxisMinChange = useCallback((key, min) => {
64
+ const newMin = parseInt(min);
65
+ if (Number.isNaN(newMin)) return;
66
+ const update = {
67
+ [key]: newMin
68
+ };
69
+ onChange && onChange(update);
70
+ }, [onChange]);
71
+ const onYAxisMaxChange = useCallback((key, max) => {
72
+ const newMax = parseInt(max);
73
+ if (Number.isNaN(newMax)) return;
74
+ const update = {
75
+ [key]: newMax
76
+ };
77
+ onChange && onChange(update);
78
+ }, [onChange]);
79
+ const onDisplayValueChange = useCallback(update => {
80
+ onChange && onChange(update);
81
+ }, [onChange]);
82
+ const {
83
+ config
84
+ } = chart;
85
+ const {
86
+ x_axis_show_label,
87
+ x_axis_label_position,
88
+ show_y_axis_left_label,
89
+ y_axis_left_label_position,
90
+ y_axis_right_label_position,
91
+ show_y_axis_right_label,
92
+ y_axis_min_left,
93
+ y_axis_auto_range_left,
94
+ y_axis_max_left,
95
+ y_axis_auto_range_right,
96
+ y_axis_min_right,
97
+ y_axis_max_right,
98
+ display_data,
99
+ label_font_size
100
+ } = config;
101
+ const xAxisLabelPosition = xAxisLabelOptions.find(option => option.value === x_axis_label_position) || xAxisLabelOptions[0];
102
+ const yLeftAxisLabelPosition = yAxisLabelOptions.find(option => option.value === y_axis_left_label_position) || yAxisLabelOptions[0];
103
+ const yRightAxisLabelPosition = yAxisLabelOptions.find(option => option.value === y_axis_right_label_position) || yAxisLabelOptions[0];
104
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormGroup, {
105
+ className: "sea-chart-parameter-item"
106
+ }, /*#__PURE__*/React.createElement(Label, null, intl.get(xLabel)), /*#__PURE__*/React.createElement(Switch, {
107
+ key: "x_axis_show_label",
108
+ checked: x_axis_show_label || false,
109
+ placeholder: intl.get('Display_title'),
110
+ onChange: event => onAxisLabelShowChange(event, 'x_axis_show_label')
111
+ }), x_axis_show_label && /*#__PURE__*/React.createElement(DTableSelect, {
112
+ value: xAxisLabelPosition,
113
+ options: xAxisLabelOptions,
114
+ onChange: option => onAxisLabelPositionChange(option, 'x_axis_label_position')
115
+ })), /*#__PURE__*/React.createElement(Divider, null), /*#__PURE__*/React.createElement(FormGroup, {
116
+ className: "sea-chart-parameter-item"
117
+ }, /*#__PURE__*/React.createElement(Label, null, intl.get('Y-axis(left side)')), /*#__PURE__*/React.createElement(Switch, {
118
+ key: "show_y_axis_left_label",
119
+ checked: show_y_axis_left_label || false,
120
+ placeholder: intl.get('Display_title'),
121
+ onChange: event => onAxisLabelShowChange(event, 'show_y_axis_left_label')
122
+ }), show_y_axis_left_label && /*#__PURE__*/React.createElement("div", {
123
+ className: "sea-chart-parameter-container"
124
+ }, /*#__PURE__*/React.createElement(DTableSelect, {
125
+ value: yLeftAxisLabelPosition,
126
+ classNamePrefix: "chart-y-axis-label-position",
127
+ options: yAxisLabelOptions,
128
+ onChange: option => onAxisLabelPositionChange(option, 'y_axis_left_label_position')
129
+ })), /*#__PURE__*/React.createElement(Switch, {
130
+ key: "y_axis_auto_range_left",
131
+ checked: y_axis_auto_range_left,
132
+ placeholder: intl.get('Auto_range'),
133
+ onChange: () => onToggleYAxisAutoRange('y_axis_auto_range_left')
134
+ }), !y_axis_auto_range_left && /*#__PURE__*/React.createElement(MinMaxSetting, {
135
+ min: y_axis_min_left,
136
+ max: y_axis_max_left,
137
+ onMinChange: value => onYAxisMinChange('y_axis_min_left', value),
138
+ onMaxChange: value => onYAxisMaxChange('y_axis_max_left', value)
139
+ })), /*#__PURE__*/React.createElement(Divider, null), /*#__PURE__*/React.createElement(FormGroup, {
140
+ className: "sea-chart-parameter-item"
141
+ }, /*#__PURE__*/React.createElement(Label, null, intl.get('Y-axis(right side)')), /*#__PURE__*/React.createElement(Switch, {
142
+ key: "show_y_axis_right_label",
143
+ checked: show_y_axis_right_label || false,
144
+ placeholder: intl.get('Display_title'),
145
+ onChange: event => onAxisLabelShowChange(event, 'show_y_axis_right_label')
146
+ }), show_y_axis_right_label && /*#__PURE__*/React.createElement("div", {
147
+ className: "sea-chart-parameter-container"
148
+ }, /*#__PURE__*/React.createElement(DTableSelect, {
149
+ value: yRightAxisLabelPosition,
150
+ classNamePrefix: "chart-y-axis-label-position",
151
+ options: yAxisLabelOptions,
152
+ onChange: option => onAxisLabelPositionChange(option, 'y_axis_right_label_position')
153
+ })), /*#__PURE__*/React.createElement(Switch, {
154
+ key: "y_axis_auto_range_right",
155
+ checked: y_axis_auto_range_right,
156
+ placeholder: intl.get('Auto_range'),
157
+ onChange: () => onToggleYAxisAutoRange('y_axis_auto_range_right')
158
+ }), !y_axis_auto_range_right && /*#__PURE__*/React.createElement(MinMaxSetting, {
159
+ min: y_axis_min_right,
160
+ max: y_axis_max_right,
161
+ onMinChange: value => onYAxisMinChange('y_axis_min_right', value),
162
+ onMaxChange: value => onYAxisMaxChange('y_axis_max_right', value)
163
+ })), /*#__PURE__*/React.createElement(DisplayValuesSettings, {
164
+ isShowValueKey: "display_data",
165
+ isShowValue: display_data,
166
+ fontSizeKey: "label_font_size",
167
+ fontSize: label_font_size,
168
+ onChange: onDisplayValueChange
169
+ }));
170
+ };
171
+ StyleSettings.defaultProps = {
172
+ xLabel: 'X_axis'
173
+ };
174
+ export default StyleSettings;
@@ -0,0 +1,179 @@
1
+ import React, { Fragment, useCallback, useMemo } from 'react';
2
+ import { FormGroup } from 'reactstrap';
3
+ import { COLUMNS_ICON_CONFIG, getTableById } from 'dtable-utils';
4
+ import DTableSelect from "dtable-ui-component/lib/DTableSelect";
5
+ import CommonDataSettings from '../widgets/common-data-settings';
6
+ import { ChartUtils } from '../../utils';
7
+ import { CHART_SUMMARY_SHOW, CHART_SUMMARY_CALCULATION_METHOD, CHART_SUPPORT_COLUMNS, BASIC_NUMBER_CARD_CALCULATION_METHOD } from '../../constants';
8
+ import intl from '../../intl';
9
+ const DataSettings = _ref => {
10
+ let {
11
+ tables,
12
+ chart,
13
+ onChange
14
+ } = _ref;
15
+ const summaryMethodsOptions = useMemo(() => {
16
+ const numberCardSummaryMethod = [BASIC_NUMBER_CARD_CALCULATION_METHOD, ...CHART_SUMMARY_CALCULATION_METHOD];
17
+ return numberCardSummaryMethod.map(method => {
18
+ return {
19
+ label: /*#__PURE__*/React.createElement("span", {
20
+ className: "select-option-name"
21
+ }, intl.get(CHART_SUMMARY_SHOW[method])),
22
+ value: method
23
+ };
24
+ });
25
+ }, []);
26
+ const selectedTable = useMemo(() => {
27
+ const {
28
+ table_id: selectedTableId
29
+ } = chart.config;
30
+ return getTableById(tables, selectedTableId);
31
+ }, [chart.config, tables]);
32
+ const validColumns = useMemo(() => {
33
+ const columns = selectedTable && Array.isArray(selectedTable.columns) ? selectedTable.columns : [];
34
+ if (!columns || !Array.isArray(columns)) return [];
35
+ return columns.filter(column => CHART_SUPPORT_COLUMNS.includes(column.type));
36
+ }, [selectedTable]);
37
+ const numericColumns = useMemo(() => {
38
+ return validColumns.filter(column => ChartUtils.isNumericSummaryColumn(column));
39
+ }, [validColumns]);
40
+ const numericColumnOptions = useMemo(() => {
41
+ const options = numericColumns.map(column => {
42
+ return {
43
+ value: column,
44
+ label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
45
+ className: "sea-chart-column-icon"
46
+ }, /*#__PURE__*/React.createElement("i", {
47
+ className: COLUMNS_ICON_CONFIG[column.type]
48
+ })), /*#__PURE__*/React.createElement("span", {
49
+ className: 'select-module select-module-name ml-0'
50
+ }, column.name))
51
+ };
52
+ });
53
+ return [{
54
+ value: {
55
+ key: 'Groupby_null'
56
+ },
57
+ label: /*#__PURE__*/React.createElement("span", {
58
+ className: 'select-module select-module-name null-option-name ml-0'
59
+ }, intl.get('Select_a_column')),
60
+ style: {
61
+ color: 'rgba(0, 0, 0, .25)'
62
+ }
63
+ }, ...options];
64
+ }, [numericColumns]);
65
+ const onSelectTargetValueColumn = useCallback(option => {
66
+ const {
67
+ config
68
+ } = chart;
69
+ const {
70
+ target_value_column_key
71
+ } = config;
72
+ const newColumnKey = option.value.key;
73
+ if (target_value_column_key === newColumnKey) return;
74
+ onChange && onChange({
75
+ target_value_column_key: newColumnKey
76
+ });
77
+ }, [chart, onChange]);
78
+ const onSelectTotalValueColumn = useCallback(option => {
79
+ const {
80
+ config
81
+ } = chart;
82
+ const {
83
+ total_value_column_key
84
+ } = config;
85
+ const newColumnKey = option.value.key;
86
+ if (total_value_column_key === newColumnKey) return;
87
+ onChange && onChange({
88
+ total_value_column_key: newColumnKey
89
+ });
90
+ }, [chart, onChange]);
91
+ const getSelectedMethodOption = useCallback((method, summaryMethodsOptions) => {
92
+ return summaryMethodsOptions.find(m => m.value === method) || summaryMethodsOptions[0];
93
+ }, []);
94
+ const onSelectTargetValueColumnSummaryMethod = useCallback(option => {
95
+ const {
96
+ config
97
+ } = chart;
98
+ const {
99
+ target_value_column_summary_method
100
+ } = config;
101
+ const newSummaryMethod = option.value;
102
+ if (target_value_column_summary_method === newSummaryMethod) return;
103
+ onChange && onChange({
104
+ target_value_column_summary_method: newSummaryMethod
105
+ });
106
+ }, [chart, onChange]);
107
+ const onSelectTotalValueColumnSummaryMethod = useCallback(option => {
108
+ const {
109
+ config
110
+ } = chart;
111
+ const {
112
+ total_value_column_summary_method
113
+ } = config;
114
+ const newSummaryMethod = option.value;
115
+ if (total_value_column_summary_method === newSummaryMethod) return;
116
+ onChange && onChange({
117
+ total_value_column_summary_method: newSummaryMethod
118
+ });
119
+ }, [chart, onChange]);
120
+ const renderSummaryMethod = useCallback(option => {
121
+ const {
122
+ config
123
+ } = chart;
124
+ const {
125
+ target_value_column_summary_method,
126
+ total_value_column_summary_method
127
+ } = config;
128
+ let summary_method, onSelectSummaryMethod;
129
+ if (option.targetColumn === 'target_value_column') {
130
+ summary_method = target_value_column_summary_method;
131
+ onSelectSummaryMethod = onSelectTargetValueColumnSummaryMethod;
132
+ } else {
133
+ summary_method = total_value_column_summary_method;
134
+ onSelectSummaryMethod = onSelectTotalValueColumnSummaryMethod;
135
+ }
136
+ const selectedMethodOption = getSelectedMethodOption(summary_method, summaryMethodsOptions);
137
+ return /*#__PURE__*/React.createElement("div", {
138
+ className: "dtable-plugin-stat-parameter-item"
139
+ }, /*#__PURE__*/React.createElement("label", null, intl.get('Summary_method')), /*#__PURE__*/React.createElement(DTableSelect, {
140
+ value: selectedMethodOption,
141
+ onChange: onSelectSummaryMethod,
142
+ options: summaryMethodsOptions
143
+ }));
144
+ }, [chart, summaryMethodsOptions, getSelectedMethodOption, onSelectTargetValueColumnSummaryMethod, onSelectTotalValueColumnSummaryMethod]);
145
+ const {
146
+ target_value_column_key,
147
+ total_value_column_key
148
+ } = chart.config;
149
+ const selectedTargetValueColumnOption = numericColumnOptions.filter(option => option.value.key === target_value_column_key)[0];
150
+ const selectedTotalValueColumnOption = numericColumnOptions.filter(option => option.value.key === total_value_column_key)[0];
151
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(CommonDataSettings, {
152
+ chart: chart,
153
+ tables: tables,
154
+ onChange: onChange
155
+ }), /*#__PURE__*/React.createElement(FormGroup, {
156
+ className: "sea-chart-parameter-item"
157
+ }, /*#__PURE__*/React.createElement("label", null, intl.get('Current_value_field')), /*#__PURE__*/React.createElement(DTableSelect, {
158
+ value: selectedTargetValueColumnOption,
159
+ options: numericColumnOptions,
160
+ placeholder: intl.get('Select_a_column'),
161
+ onChange: onSelectTargetValueColumn
162
+ })), /*#__PURE__*/React.createElement(FormGroup, {
163
+ className: "sea-chart-parameter-item"
164
+ }, renderSummaryMethod({
165
+ targetColumn: 'target_value_column'
166
+ })), /*#__PURE__*/React.createElement(FormGroup, {
167
+ className: "sea-chart-parameter-item"
168
+ }, /*#__PURE__*/React.createElement("label", null, intl.get('Total_value_field')), /*#__PURE__*/React.createElement(DTableSelect, {
169
+ value: selectedTotalValueColumnOption,
170
+ options: numericColumnOptions,
171
+ placeholder: intl.get('Select_a_column'),
172
+ onChange: onSelectTotalValueColumn
173
+ })), /*#__PURE__*/React.createElement(FormGroup, {
174
+ className: "sea-chart-parameter-item"
175
+ }, renderSummaryMethod({
176
+ targetColumn: 'total_value_column'
177
+ })));
178
+ };
179
+ export default DataSettings;
@@ -0,0 +1,2 @@
1
+ import DashboardDataSettings from './data-settings';
2
+ export { DashboardDataSettings };
@@ -0,0 +1,73 @@
1
+ import React from 'react';
2
+ import { CHART_TYPE } from '../constants';
3
+ import { BarDataSettings } from './bar-settings';
4
+ import { AdvanceBarDataSettings } from './advance-bar-settings';
5
+ import { TimeComparisonDataSettings } from './time-comparison-settings';
6
+ import { PieDataSettings } from './pie-settings';
7
+ import { TableDataSettings } from './table-settings';
8
+ import { HorizontalDataSettings } from './horizontal-bar-settings';
9
+ import { BasicNumberCardDataSettings } from './basic-number-card';
10
+ import { CombinationDataSettings } from './combination-settings';
11
+ import { DashboardDataSettings } from './dashboard-settings';
12
+ const DataSettings = props => {
13
+ const {
14
+ chart
15
+ } = props;
16
+ const {
17
+ config
18
+ } = chart;
19
+ const {
20
+ type
21
+ } = config;
22
+ switch (type) {
23
+ case CHART_TYPE.BAR:
24
+ case CHART_TYPE.LINE:
25
+ case CHART_TYPE.AREA:
26
+ {
27
+ return /*#__PURE__*/React.createElement(BarDataSettings, props);
28
+ }
29
+ case CHART_TYPE.COMBINATION:
30
+ {
31
+ return /*#__PURE__*/React.createElement(CombinationDataSettings, props);
32
+ }
33
+ case CHART_TYPE.HORIZONTAL_BAR:
34
+ case CHART_TYPE.HORIZONTAL_GROUP_BAR:
35
+ {
36
+ return /*#__PURE__*/React.createElement(HorizontalDataSettings, props);
37
+ }
38
+ case CHART_TYPE.BAR_GROUP:
39
+ case CHART_TYPE.BAR_STACK:
40
+ case CHART_TYPE.LINE_GROUP:
41
+ case CHART_TYPE.AREA_GROUP:
42
+ {
43
+ return /*#__PURE__*/React.createElement(AdvanceBarDataSettings, props);
44
+ }
45
+ case CHART_TYPE.COMPARE_BAR:
46
+ {
47
+ return /*#__PURE__*/React.createElement(TimeComparisonDataSettings, props);
48
+ }
49
+ case CHART_TYPE.PIE:
50
+ case CHART_TYPE.RING:
51
+ case CHART_TYPE.TREE_MAP:
52
+ {
53
+ return /*#__PURE__*/React.createElement(PieDataSettings, props);
54
+ }
55
+ case CHART_TYPE.BASIC_NUMBER_CARD:
56
+ {
57
+ return /*#__PURE__*/React.createElement(BasicNumberCardDataSettings, props);
58
+ }
59
+ case CHART_TYPE.DASHBOARD:
60
+ {
61
+ return /*#__PURE__*/React.createElement(DashboardDataSettings, props);
62
+ }
63
+ case CHART_TYPE.TABLE:
64
+ {
65
+ return /*#__PURE__*/React.createElement(TableDataSettings, props);
66
+ }
67
+ default:
68
+ {
69
+ return null;
70
+ }
71
+ }
72
+ };
73
+ export default DataSettings;
@@ -0,0 +1,55 @@
1
+ import React, { useCallback } from 'react';
2
+ import { BarDataSettings } from '../bar-settings';
3
+ import { AdvanceBarDataSettings } from '../advance-bar-settings';
4
+ import { ChartUtils } from '../../utils';
5
+ import { BAR_MAP_TO_HORIZONTAL_MAP, CHART_TYPE } from '../../constants/';
6
+ const DataSettings = _ref => {
7
+ let {
8
+ chart,
9
+ tables,
10
+ onChange: oldOnChange
11
+ } = _ref;
12
+ const onChange = useCallback(update => {
13
+ const {
14
+ config: oldConfig
15
+ } = chart;
16
+ if (update.type && update.type !== oldConfig.type) {
17
+ oldOnChange && oldOnChange(update);
18
+ return;
19
+ }
20
+ let updateConfig = {};
21
+ const newConfig = {
22
+ ...oldConfig,
23
+ ...update
24
+ };
25
+ Object.keys(newConfig).forEach(key => {
26
+ if (BAR_MAP_TO_HORIZONTAL_MAP[key]) {
27
+ updateConfig[BAR_MAP_TO_HORIZONTAL_MAP[key]] = newConfig[key];
28
+ } else {
29
+ updateConfig[key] = newConfig[key];
30
+ }
31
+ });
32
+ oldOnChange && oldOnChange(updateConfig);
33
+ }, [chart, oldOnChange]);
34
+ const {
35
+ config,
36
+ id
37
+ } = chart;
38
+ const newConfig = ChartUtils.convertConfig(config);
39
+ const newChart = {
40
+ id,
41
+ config: newConfig
42
+ };
43
+ const {
44
+ type
45
+ } = config;
46
+ const BarGroupComponent = type === CHART_TYPE.HORIZONTAL_BAR ? BarDataSettings : AdvanceBarDataSettings;
47
+ return /*#__PURE__*/React.createElement(BarGroupComponent, {
48
+ xLabel: 'Vertical_axis',
49
+ yLabel: 'Horizontal_axis',
50
+ chart: newChart,
51
+ tables: tables,
52
+ onChange: onChange
53
+ });
54
+ };
55
+ export default DataSettings;
@@ -0,0 +1,3 @@
1
+ import HorizontalDataSettings from './data-settings';
2
+ import HorizontalStyleSettings from './style-settings';
3
+ export { HorizontalDataSettings, HorizontalStyleSettings };
@@ -0,0 +1,46 @@
1
+ import React, { useCallback } from 'react';
2
+ import { AdvanceBarStyleSettings } from '../advance-bar-settings';
3
+ import { BarStyleSettings } from '../bar-settings';
4
+ import { ChartUtils } from '../../utils';
5
+ import { BAR_MAP_TO_HORIZONTAL_MAP, CHART_TYPE } from '../../constants';
6
+ const StyleSettings = _ref => {
7
+ let {
8
+ chart,
9
+ onChange: oldOnChange
10
+ } = _ref;
11
+ const onChange = useCallback(update => {
12
+ let updateConfig = {};
13
+ const newConfig = {
14
+ ...chart.config,
15
+ ...update
16
+ };
17
+ Object.keys(newConfig).forEach(key => {
18
+ if (BAR_MAP_TO_HORIZONTAL_MAP[key]) {
19
+ updateConfig[BAR_MAP_TO_HORIZONTAL_MAP[key]] = newConfig[key];
20
+ } else {
21
+ updateConfig[key] = newConfig[key];
22
+ }
23
+ });
24
+ oldOnChange && oldOnChange(updateConfig);
25
+ }, [chart, oldOnChange]);
26
+ const {
27
+ config,
28
+ id
29
+ } = chart;
30
+ const newConfig = ChartUtils.convertConfig(config);
31
+ const newChart = {
32
+ id,
33
+ config: newConfig
34
+ };
35
+ const {
36
+ type
37
+ } = config;
38
+ const BarStyleComponent = type === CHART_TYPE.HORIZONTAL_BAR ? BarStyleSettings : AdvanceBarStyleSettings;
39
+ return /*#__PURE__*/React.createElement(BarStyleComponent, {
40
+ xLabel: 'Vertical_axis',
41
+ yLabel: 'Horizontal_axis',
42
+ chart: newChart,
43
+ onChange: onChange
44
+ });
45
+ };
46
+ export default StyleSettings;
@@ -0,0 +1,85 @@
1
+ .sea-chart-settings {
2
+ height: 100%;
3
+ width: 100%;
4
+ padding: 0;
5
+ overflow: hidden;
6
+ }
7
+
8
+ .sea-chart-settings .sea-chart-settings-type {
9
+ height: 49px;
10
+ width: 100%;
11
+ display: flex;
12
+ align-items: center;
13
+ flex-direction: row;
14
+ border-bottom: 1px solid #e4e4e4;
15
+ background: #fff;
16
+ padding-left: 10px;
17
+ }
18
+
19
+ .sea-chart-settings .sea-chart-settings-type .sea-chart-settings-type-item {
20
+ text-align: center;
21
+ line-height: 48px;
22
+ height: 48px;
23
+ font-weight: 500;
24
+ cursor: pointer;
25
+ }
26
+
27
+ .sea-chart-settings .sea-chart-settings-type .sea-chart-settings-type-item.selected {
28
+ color: #ff8000;
29
+ border-bottom: 2px solid #ff8000;
30
+ }
31
+
32
+ .sea-chart-settings .chart-settings-container {
33
+ height: calc(100% - 37px);
34
+ overflow-y: scroll;
35
+ padding: 16px 16px 150px;
36
+ }
37
+
38
+ .sea-chart-settings .statistic-add-number-columns {
39
+ color: #bbb;
40
+ line-height: 1;
41
+ margin-bottom: 10px;
42
+ }
43
+
44
+ .sea-chart-settings .statistic-add-number-columns:hover {
45
+ cursor: pointer;
46
+ color: #212529;
47
+ }
48
+
49
+ .sea-chart-settings .statistic-add-number-columns .dtable-icon-add-table {
50
+ margin-right: 5px;
51
+ display: inline-block;
52
+ transform: scale(.8);
53
+ }
54
+
55
+ .sea-chart-settings .statistic-add-number-columns .add-number-column-description {
56
+ font-size: 14px;
57
+ line-height: 14px;
58
+ }
59
+
60
+ .sea-chart-settings .delete-numeric-summary-item-content {
61
+ height: 20px;
62
+ width: 20px;
63
+ line-height: 20px;
64
+ font-weight: 400;
65
+ }
66
+
67
+ .sea-chart-settings .delete-numeric-summary-item-content:hover {
68
+ cursor: pointer;
69
+ }
70
+
71
+ .sea-chart-settings .delete-numeric-summary-item-content .delete-icon {
72
+ font-size: 14px;
73
+ }
74
+
75
+ .sea-chart-settings .sea-chart-column-icon {
76
+ display: inline-block;
77
+ padding: 0 0.3125rem;
78
+ margin-left: -0.3125rem;
79
+ }
80
+
81
+ .sea-chart-settings .sea-chart-column-icon .dtable-font {
82
+ font-size: 14px;
83
+ color: #aaa;
84
+ cursor: default;
85
+ }