sea-chart 0.0.47 → 0.0.48-alpha.0

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 (81) hide show
  1. package/dist/components/color-setting/color-group-selector.js +1 -0
  2. package/dist/components/types-dialog/index.js +2 -2
  3. package/dist/constants/common-constants.js +3 -0
  4. package/dist/constants/index.js +4 -0
  5. package/dist/context.js +9 -6
  6. package/dist/index.js +4 -1
  7. package/dist/locale/lang/en.js +1 -0
  8. package/dist/locale/lang/zh_CN.js +1 -0
  9. package/dist/model/chart.js +4 -0
  10. package/dist/model/trend.js +10 -1
  11. package/dist/settings/advance-bar-settings/style-settings.js +2 -0
  12. package/dist/settings/bar-settings/style-settings.js +2 -0
  13. package/dist/settings/basic-number-card/data-settings.js +3 -0
  14. package/dist/settings/combination-settings/style-settings.js +3 -0
  15. package/dist/settings/completeness-settings/data-settings/completion-settings.js +2 -0
  16. package/dist/settings/dashboard-settings/data-settings.js +3 -0
  17. package/dist/settings/horizontal-bar-settings/data-settings.js +2 -0
  18. package/dist/settings/index.js +4 -3
  19. package/dist/settings/map-settings/components/location-field-selector.js +1 -0
  20. package/dist/settings/map-settings/components/map-level-selector.js +1 -0
  21. package/dist/settings/map-settings/components/map-province-city-selector.js +2 -0
  22. package/dist/settings/map-settings/map-style-settings.js +1 -0
  23. package/dist/settings/pie-settings/style-settings.js +2 -0
  24. package/dist/settings/style-settings.js +12 -2
  25. package/dist/settings/table-settings/data-settings.js +1 -0
  26. package/dist/settings/time-comparison-settings/style-settings.js +2 -0
  27. package/dist/settings/trend-settings/general-font-setting.js +72 -0
  28. package/dist/settings/trend-settings/index.js +2 -1
  29. package/dist/settings/trend-settings/style-setting.js +72 -0
  30. package/dist/settings/widgets/basic-summary/index.js +3 -0
  31. package/dist/settings/widgets/common-data-settings.js +1 -1
  32. package/dist/settings/widgets/date-summary-item.js +2 -0
  33. package/dist/settings/widgets/group-by.js +3 -0
  34. package/dist/settings/widgets/numeric-summary-item.js +2 -0
  35. package/dist/settings/widgets/select-table/index.js +1 -1
  36. package/dist/settings/widgets/select-view/index.js +1 -1
  37. package/dist/settings/widgets/summary-method-setting.js +2 -0
  38. package/dist/settings/widgets/summary-settings.js +4 -1
  39. package/dist/settings/widgets/title-settings/index.js +9 -3
  40. package/dist/settings/widgets/y-axis-group-settings.js +1 -0
  41. package/dist/utils/chart-utils/base-utils.js +34 -9
  42. package/dist/utils/chart-utils/index.js +1 -1
  43. package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +69 -16
  44. package/dist/utils/chart-utils/original-data-utils/card-calculator.js +2 -2
  45. package/dist/utils/chart-utils/original-data-utils/combination-calculator.js +9 -9
  46. package/dist/utils/chart-utils/original-data-utils/compare-bar-chart-calculator.js +2 -2
  47. package/dist/utils/chart-utils/original-data-utils/completeness-calculator.js +10 -10
  48. package/dist/utils/chart-utils/original-data-utils/dashboard-calculator.js +4 -4
  49. package/dist/utils/chart-utils/original-data-utils/index.js +3 -3
  50. package/dist/utils/chart-utils/original-data-utils/mirror-calculator.js +6 -6
  51. package/dist/utils/chart-utils/original-data-utils/pivot-table-calculator.js +3 -3
  52. package/dist/utils/chart-utils/original-data-utils/scatter-calculator.js +9 -9
  53. package/dist/utils/chart-utils/original-data-utils/trend-calculator.js +5 -5
  54. package/dist/utils/chart-utils/sql-statistics-utils.js +17 -6
  55. package/dist/utils/event-bus.js +28 -0
  56. package/dist/utils/row-utils.js +1 -1
  57. package/dist/utils/sql/chart-data-sql.js +17 -4
  58. package/dist/utils/sql/column-2-sql-column.js +7 -1
  59. package/dist/view/index.css +18 -1
  60. package/dist/view/index.js +49 -7
  61. package/dist/view/wrapper/area.js +16 -9
  62. package/dist/view/wrapper/bar-custom.js +8 -9
  63. package/dist/view/wrapper/bar-group.js +7 -4
  64. package/dist/view/wrapper/bar.js +8 -6
  65. package/dist/view/wrapper/basic-number-card.js +3 -2
  66. package/dist/view/wrapper/chart-component.js +7 -3
  67. package/dist/view/wrapper/combination.js +11 -11
  68. package/dist/view/wrapper/compare.js +18 -17
  69. package/dist/view/wrapper/completeness.js +8 -5
  70. package/dist/view/wrapper/dashboard.js +3 -1
  71. package/dist/view/wrapper/horizontal-bar-group.js +7 -4
  72. package/dist/view/wrapper/horizontal-bar.js +8 -6
  73. package/dist/view/wrapper/index.js +6 -3
  74. package/dist/view/wrapper/line-group.js +14 -6
  75. package/dist/view/wrapper/line.js +9 -7
  76. package/dist/view/wrapper/pie.js +12 -6
  77. package/dist/view/wrapper/ring.js +14 -7
  78. package/dist/view/wrapper/scatter.js +7 -4
  79. package/dist/view/wrapper/treemap.js +5 -2
  80. package/dist/view/wrapper/trend.js +127 -75
  81. package/package.json +1 -1
@@ -38,6 +38,7 @@ class ColorGroupSelector extends Component {
38
38
  return /*#__PURE__*/React.createElement(FormGroup, {
39
39
  className: "statistic-chart-parameter-item"
40
40
  }, /*#__PURE__*/React.createElement("label", null, intl.get('Color')), /*#__PURE__*/React.createElement(DTableSelect, {
41
+ menuPortalTarget: "#sea-chart-settings-content",
41
42
  classNamePrefix: 'chart-color',
42
43
  value: currentOption,
43
44
  onChange: this.changeColor,
@@ -45,7 +45,7 @@ const TypesDialog = _ref => {
45
45
  const onSubmit = useCallback(() => {
46
46
  onChange(selectedType);
47
47
  onToggle();
48
- }, [selectedType, onToggle, onChange]);
48
+ }, [onChange, selectedType, onToggle]);
49
49
  return /*#__PURE__*/React.createElement(Modal, {
50
50
  isOpen: true,
51
51
  toggle: onToggle,
@@ -53,7 +53,7 @@ const TypesDialog = _ref => {
53
53
  zIndex: 1048
54
54
  }, /*#__PURE__*/React.createElement(ModalHeader, {
55
55
  toggle: onToggle
56
- }, intl.get('Edit_type')), /*#__PURE__*/React.createElement(ModalBody, {
56
+ }, type ? intl.get('Edit_type') : intl.get('All_charts')), /*#__PURE__*/React.createElement(ModalBody, {
57
57
  className: "sea-chart-types-body"
58
58
  }, /*#__PURE__*/React.createElement("div", {
59
59
  className: "sea-chart-types-container d-flex flex-column h-100"
@@ -3,4 +3,7 @@ export const CommonEventTypes = {
3
3
  EXPAND_ROW_UPDATED: 'EXPAND_ROW_UPDATED',
4
4
  EXPAND_ROW_DELETED: 'EXPAND_ROW_DELETED',
5
5
  REFRESH_CHARTS: 'REFRESH_CHARTS'
6
+ };
7
+ export const EXTERNAL_EVENT = {
8
+ //
6
9
  };
@@ -198,6 +198,7 @@ export const LEGEND_DIRECTION = {
198
198
  export const MIRROR_COLUMN_LIST = [CellType.TEXT, CellType.NUMBER, CellType.CTIME, CellType.MTIME, CellType.DATE, CellType.COLLABORATOR, CellType.AUTO_NUMBER, CellType.FORMULA, CellType.GEOLOCATION, CellType.URL, CellType.SINGLE_SELECT, CellType.LINK, CellType.CREATOR, CellType.LAST_MODIFIER, CellType.DURATION, CellType.EMAIL];
199
199
  export const CHART_SUPPORT_FONT_WEIGHTS = [400, 700];
200
200
  export const DEFAULT_CHART_FONT_WEIGHT = CHART_SUPPORT_FONT_WEIGHTS[1];
201
+ export const DAFAULT_TREND_CHART_TITLE_FONT_SIZE = 16;
201
202
  export const DEFAULT_CHART_TITLE_FONT_SIZE = 18;
202
203
  export const DEFAULT_CHART_TITLE_FONT_COLOR = '#212529';
203
204
  export const CHART_SETTINGS_TYPE = {
@@ -236,6 +237,9 @@ export const TYPE_DISPLAY_COLOR_USING = {
236
237
  // default grid size, grid distance for heat map chart
237
238
  export const DEFAULT_GRID_SIZE = 12;
238
239
  export const DEFAULT_GRID_DISTANCE = 4;
240
+
241
+ // default mediaUrl
242
+ export const DEFAULT_MEDIAURL = 'https://dev.seatable.cn/media/';
239
243
  export const MONTH_MIRROR = {
240
244
  '0': 'Jan',
241
245
  '1': 'Feb',
package/dist/context.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { getTableById } from 'dtable-utils';
2
2
  import CollaboratorManager from './utils/collaborator-manager';
3
3
  import { ChartDataSQL } from './utils';
4
- import { CHART_TYPE, CHART_TYPE_IMAGE } from './constants';
4
+ import { CHART_TYPE, CHART_TYPE_IMAGE, DEFAULT_MEDIAURL } from './constants';
5
5
  class Context {
6
6
  constructor() {
7
7
  this.queryChartResult = async _ref => {
@@ -102,12 +102,15 @@ class Context {
102
102
  return this.api.getTableFormulaResults(table, rows, value);
103
103
  };
104
104
  this.getChartImageUrl = type => {
105
- const {
106
- server,
107
- mediaUrl
108
- } = this.settings;
109
105
  const name = CHART_TYPE_IMAGE[type];
110
- return "".concat(server).concat(mediaUrl, "dtable-statistic/img/").concat(name);
106
+ if (Reflect.ownKeys(this.settings).length !== 0) {
107
+ const {
108
+ server,
109
+ mediaUrl
110
+ } = this.settings;
111
+ return "".concat(server).concat(mediaUrl, "dtable-statistic/img/").concat(name);
112
+ }
113
+ return "".concat(DEFAULT_MEDIAURL, "dtable-statistic/img/").concat(name);
111
114
  };
112
115
  this.api = null;
113
116
  this.settings = {};
package/dist/index.js CHANGED
@@ -4,7 +4,10 @@ import { ChartModel } from './model';
4
4
  import View from './view';
5
5
  import Editor from './editor';
6
6
  import Settings, { StyleSettings, Divider } from './settings';
7
+ import TypesDialog from './components/types-dialog';
7
8
  import { ChartDataSQL } from './utils';
8
9
  import Context from './context';
10
+ import EventBus from './utils/event-bus';
11
+ import { EXTERNAL_EVENT } from './constants/common-constants';
9
12
  export default View;
10
- export { SeaChartAPI, CHART_TYPE, CHART_TYPES, View, Editor, Settings, StyleSettings, Divider, Context, ChartModel, ChartDataSQL };
13
+ export { SeaChartAPI, CHART_TYPE, CHART_TYPES, View, Editor, Settings, StyleSettings, Divider, Context, ChartModel, ChartDataSQL, EventBus, EXTERNAL_EVENT, TypesDialog };
@@ -129,6 +129,7 @@ const en = {
129
129
  "Title": "Title",
130
130
  "Custom_title": "Custom title",
131
131
  "Edit_type": "Edit type",
132
+ "All_charts": "All charts",
132
133
  "Cancel": "Cancel",
133
134
  "Submit": "Submit",
134
135
  "There_are_no_statistic_results_yet": "There are no statistic results yet",
@@ -129,6 +129,7 @@ const zh_CN = {
129
129
  "Title": "标题",
130
130
  "Custom_title": "自定义标题",
131
131
  "Edit_type": "编辑类型",
132
+ "All_charts": "所有图表",
132
133
  "Cancel": "取消",
133
134
  "Submit": "提交",
134
135
  "There_are_no_statistic_results_yet": "目前还没有统计结果",
@@ -2,13 +2,17 @@ import { generateChartConfig } from '../utils';
2
2
  import { HORIZONTAL_ALIGN, DEFAULT_CHART_FONT_WEIGHT, DEFAULT_CHART_TITLE_FONT_SIZE } from '../constants';
3
3
  class ChartModel {
4
4
  constructor(options, tables) {
5
+ // id is ChartModel id
6
+ // _id is chart config id
5
7
  const {
6
8
  id,
9
+ _id,
7
10
  style_config
8
11
  } = options;
9
12
  this.id = id;
10
13
  this.type = 'statistic';
11
14
  this.config = generateChartConfig(options, tables);
15
+ this.config._id = _id;
12
16
  this.style_config = style_config || {};
13
17
  this.style_config.title = {
14
18
  text: '',
@@ -1,5 +1,5 @@
1
1
  import { getTableColumnByKey, isDateColumn } from 'dtable-utils';
2
- import { CHART_TYPE } from '../constants';
2
+ import { CHART_TYPE, HORIZONTAL_ALIGN } from '../constants';
3
3
  import BaseModel from './base-model';
4
4
  class Trend extends BaseModel {
5
5
  constructor(options, table) {
@@ -19,6 +19,15 @@ class Trend extends BaseModel {
19
19
  this.summary_type = options.y_axis_summary_type || 'count';
20
20
  this.summary_column_key = options.y_axis_summary_column_key;
21
21
  this.summary_method = options.y_axis_summary_method;
22
+ this.num_font_size = options.num_font_size || 34;
23
+ this.num_font_color = options.num_font_color || '#212529';
24
+ this.num_text_align = options.num_text_align || HORIZONTAL_ALIGN.LEFT;
25
+ this.num_font_weight = options.num_font_weight || 700;
26
+ this.label = options.label || '';
27
+ this.card_label_font_size = options.card_label_font_size || 14;
28
+ this.label_font_color = options.label_font_color || '#999999';
29
+ this.label_text_align = options.label_text_align || HORIZONTAL_ALIGN.LEFT;
30
+ this.label_font_weight = options.label_font_weight || 400;
22
31
  }
23
32
  }
24
33
  export default Trend;
@@ -164,6 +164,7 @@ const StyleSettings = _ref => {
164
164
  placeholder: intl.get('Display_title'),
165
165
  onChange: event => onAxisLabelShowChange(event, 'x_axis_show_label')
166
166
  }), x_axis_show_label && /*#__PURE__*/React.createElement(DTableSelect, {
167
+ menuPortalTarget: "#sea-chart-settings-content",
167
168
  value: xAxisLabelPosition,
168
169
  options: xAxisLabelOptions,
169
170
  onChange: option => onAxisLabelPositionChange(option, 'x_axis_label_position')
@@ -189,6 +190,7 @@ const StyleSettings = _ref => {
189
190
  })), y_axis_show_label && /*#__PURE__*/React.createElement("div", {
190
191
  className: "sea-chart-parameter-container"
191
192
  }, /*#__PURE__*/React.createElement(DTableSelect, {
193
+ menuPortalTarget: "#sea-chart-settings-content",
192
194
  value: yAxisLabelPosition,
193
195
  classNamePrefix: "chart-y-axis-label-position",
194
196
  options: yAxisLabelOptions,
@@ -147,6 +147,7 @@ const StyleSettings = _ref => {
147
147
  placeholder: intl.get('Display_title'),
148
148
  onChange: event => onAxisLabelShowChange(event, 'x_axis_show_label')
149
149
  }), x_axis_show_label && /*#__PURE__*/React.createElement(DTableSelect, {
150
+ menuPortalTarget: "#sea-chart-settings-content",
150
151
  value: xAxisLabelPosition,
151
152
  options: xAxisLabelOptions,
152
153
  onChange: option => onAxisLabelPositionChange(option, 'x_axis_label_position')
@@ -160,6 +161,7 @@ const StyleSettings = _ref => {
160
161
  }), y_axis_show_label && /*#__PURE__*/React.createElement("div", {
161
162
  className: "sea-chart-parameter-container"
162
163
  }, /*#__PURE__*/React.createElement(DTableSelect, {
164
+ menuPortalTarget: "#sea-chart-settings-content",
163
165
  value: yAxisLabelPosition,
164
166
  classNamePrefix: "chart-y-axis-label-position",
165
167
  options: yAxisLabelOptions,
@@ -151,6 +151,7 @@ const DataSettings = _ref => {
151
151
  }), /*#__PURE__*/React.createElement(FormGroup, {
152
152
  className: "sea-chart-parameter-item"
153
153
  }, /*#__PURE__*/React.createElement("label", null, intl.get('Summary_method')), /*#__PURE__*/React.createElement(DTableSelect, {
154
+ menuPortalTarget: "#sea-chart-settings-content",
154
155
  classNamePrefix: "chart-summary-types",
155
156
  value: selectedSummaryTypeOption,
156
157
  options: summaryTypeOptions,
@@ -159,6 +160,7 @@ const DataSettings = _ref => {
159
160
  })), isSummarizeAField && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormGroup, {
160
161
  className: "sea-chart-parameter-item"
161
162
  }, /*#__PURE__*/React.createElement("label", null, intl.get('Summary_field')), /*#__PURE__*/React.createElement(DTableSelect, {
163
+ menuPortalTarget: "#sea-chart-settings-content",
162
164
  value: selectedColumnOption,
163
165
  options: numericColumnOptions,
164
166
  onChange: onSelectColumnChange
@@ -167,6 +169,7 @@ const DataSettings = _ref => {
167
169
  }, /*#__PURE__*/React.createElement("div", {
168
170
  className: "dtable-plugin-stat-parameter-item"
169
171
  }, /*#__PURE__*/React.createElement("label", null, intl.get('Summary_method')), /*#__PURE__*/React.createElement(DTableSelect, {
172
+ menuPortalTarget: "#sea-chart-settings-content",
170
173
  value: selectedMethodOption,
171
174
  onChange: onSelectSummaryMethod,
172
175
  options: summaryMethodsOptions
@@ -114,6 +114,7 @@ const StyleSettings = _ref => {
114
114
  placeholder: intl.get('Display_title'),
115
115
  onChange: event => onAxisLabelShowChange(event, 'x_axis_show_label')
116
116
  }), x_axis_show_label && /*#__PURE__*/React.createElement(DTableSelect, {
117
+ menuPortalTarget: "#sea-chart-settings-content",
117
118
  value: xAxisLabelPosition,
118
119
  options: xAxisLabelOptions,
119
120
  onChange: option => onAxisLabelPositionChange(option, 'x_axis_label_position')
@@ -127,6 +128,7 @@ const StyleSettings = _ref => {
127
128
  }), show_y_axis_left_label && /*#__PURE__*/React.createElement("div", {
128
129
  className: "sea-chart-parameter-container"
129
130
  }, /*#__PURE__*/React.createElement(DTableSelect, {
131
+ menuPortalTarget: "#sea-chart-settings-content",
130
132
  value: yLeftAxisLabelPosition,
131
133
  classNamePrefix: "chart-y-axis-label-position",
132
134
  options: yAxisLabelOptions,
@@ -151,6 +153,7 @@ const StyleSettings = _ref => {
151
153
  }), show_y_axis_right_label && /*#__PURE__*/React.createElement("div", {
152
154
  className: "sea-chart-parameter-container"
153
155
  }, /*#__PURE__*/React.createElement(DTableSelect, {
156
+ menuPortalTarget: "#sea-chart-settings-content",
154
157
  value: yRightAxisLabelPosition,
155
158
  classNamePrefix: "chart-y-axis-label-position",
156
159
  options: yAxisLabelOptions,
@@ -35,6 +35,7 @@ export default function CompletionSettings(_ref) {
35
35
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormGroup, {
36
36
  className: "sea-chart-parameter-item"
37
37
  }, /*#__PURE__*/React.createElement(Label, null, intl.get('Completed_field')), /*#__PURE__*/React.createElement(DTableSelect, {
38
+ menuPortalTarget: "#sea-chart-settings-content",
38
39
  classNamePrefix: "chart-summary-types",
39
40
  placeholder: intl.get('Select_field'),
40
41
  noOptionsMessage: () => {
@@ -46,6 +47,7 @@ export default function CompletionSettings(_ref) {
46
47
  })), /*#__PURE__*/React.createElement(FormGroup, {
47
48
  className: "sea-chart-parameter-item"
48
49
  }, /*#__PURE__*/React.createElement(Label, null, intl.get('Target_field')), /*#__PURE__*/React.createElement(DTableSelect, {
50
+ menuPortalTarget: "#sea-chart-settings-content",
49
51
  classNamePrefix: "chart-summary-types",
50
52
  placeholder: intl.get('Select_field'),
51
53
  noOptionsMessage: () => {
@@ -138,6 +138,7 @@ const DataSettings = _ref => {
138
138
  return /*#__PURE__*/React.createElement("div", {
139
139
  className: "dtable-plugin-stat-parameter-item"
140
140
  }, /*#__PURE__*/React.createElement("label", null, intl.get('Summary_method')), /*#__PURE__*/React.createElement(DTableSelect, {
141
+ menuPortalTarget: "#sea-chart-settings-content",
141
142
  value: selectedMethodOption,
142
143
  onChange: onSelectSummaryMethod,
143
144
  options: summaryMethodsOptions
@@ -157,6 +158,7 @@ const DataSettings = _ref => {
157
158
  }), /*#__PURE__*/React.createElement(FormGroup, {
158
159
  className: "sea-chart-parameter-item"
159
160
  }, /*#__PURE__*/React.createElement("label", null, intl.get('Current_value_field')), /*#__PURE__*/React.createElement(DTableSelect, {
161
+ menuPortalTarget: "#sea-chart-settings-content",
160
162
  value: selectedTargetValueColumnOption,
161
163
  options: numericColumnOptions,
162
164
  placeholder: intl.get('Select_a_column'),
@@ -168,6 +170,7 @@ const DataSettings = _ref => {
168
170
  })), /*#__PURE__*/React.createElement(FormGroup, {
169
171
  className: "sea-chart-parameter-item"
170
172
  }, /*#__PURE__*/React.createElement("label", null, intl.get('Total_value_field')), /*#__PURE__*/React.createElement(DTableSelect, {
173
+ menuPortalTarget: "#sea-chart-settings-content",
171
174
  value: selectedTotalValueColumnOption,
172
175
  options: numericColumnOptions,
173
176
  placeholder: intl.get('Select_a_column'),
@@ -7,6 +7,7 @@ const DataSettings = _ref => {
7
7
  let {
8
8
  chart,
9
9
  tables,
10
+ dataSources,
10
11
  onChange: oldOnChange
11
12
  } = _ref;
12
13
  const onChange = useCallback(update => {
@@ -49,6 +50,7 @@ const DataSettings = _ref => {
49
50
  yLabel: 'Horizontal_axis',
50
51
  chart: newChart,
51
52
  tables: tables,
53
+ dataSources: dataSources,
52
54
  onChange: onChange
53
55
  });
54
56
  };
@@ -2,10 +2,10 @@ import React, { useCallback, useMemo, useState, useEffect } from 'react';
2
2
  import classnames from 'classnames';
3
3
  import { eventStopPropagation } from '../utils';
4
4
  import { BaseUtils } from '../utils';
5
- import DataSettings from './data-settings';
6
- import StyleSettings from './style-settings';
7
- import { CHART_SETTINGS_TYPE, CHART_SETTINGS } from '../constants';
8
5
  import intl from '../intl';
6
+ import { CHART_SETTINGS_TYPE, CHART_SETTINGS } from '../constants';
7
+ import StyleSettings from './style-settings';
8
+ import DataSettings from './data-settings';
9
9
  import Divider from './widgets/divider';
10
10
  import './index.css';
11
11
  const Settings = _ref => {
@@ -74,6 +74,7 @@ const Settings = _ref => {
74
74
  })), /*#__PURE__*/React.createElement("div", {
75
75
  className: "chart-settings-container position-relative"
76
76
  }, /*#__PURE__*/React.createElement("div", {
77
+ id: "sea-chart-settings-content",
77
78
  className: "chart-settings-content"
78
79
  }, type === CHART_SETTINGS_TYPE.DATA && /*#__PURE__*/React.createElement(DataSettings, {
79
80
  dataSources: dataSources,
@@ -21,6 +21,7 @@ export default function LocationFieldSelector(_ref) {
21
21
  });
22
22
  }
23
23
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormGroup, null, /*#__PURE__*/React.createElement(Label, null, intl.get('Loaction_field')), /*#__PURE__*/React.createElement(DTableSelect, {
24
+ menuPortalTarget: "#sea-chart-settings-content",
24
25
  placeholder: intl.get('Select_field'),
25
26
  noOptionsMessage: () => {
26
27
  return /*#__PURE__*/React.createElement("span", null, intl.get('No_column'));
@@ -37,6 +37,7 @@ export default function MapLevelSelector(_ref) {
37
37
  return /*#__PURE__*/React.createElement(FormGroup, {
38
38
  className: "statistic-chart-parameter-item"
39
39
  }, /*#__PURE__*/React.createElement("label", null, "\u5730\u56FE\u7EA7\u522B"), /*#__PURE__*/React.createElement(DTableSelect, {
40
+ menuPortalTarget: "#sea-chart-settings-content",
40
41
  value: getSelectedMapLevelOption(),
41
42
  options: mapLevelOptions,
42
43
  onChange: onSelectMapLevel
@@ -89,6 +89,7 @@ export default function MapProvinceCitySelector(_ref) {
89
89
  return /*#__PURE__*/React.createElement("div", {
90
90
  className: "statistic-chart-parameter-item"
91
91
  }, /*#__PURE__*/React.createElement(DTableSelect, {
92
+ menuPortalTarget: "#sea-chart-settings-content",
92
93
  value: getSelectedCity(citiesOptions),
93
94
  options: citiesOptions,
94
95
  onChange: onSelectCity,
@@ -102,6 +103,7 @@ export default function MapProvinceCitySelector(_ref) {
102
103
  return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(FormGroup, {
103
104
  className: "statistic-chart-parameter-item"
104
105
  }, /*#__PURE__*/React.createElement("label", null, isCity ? '城市' : '省份'), /*#__PURE__*/React.createElement(DTableSelect, {
106
+ menuPortalTarget: "#sea-chart-settings-content",
105
107
  value: getSelectedProvinceOption(),
106
108
  options: provinceOptions,
107
109
  onChange: onSelectProvince,
@@ -83,6 +83,7 @@ export default function MapStyleSetting(_ref) {
83
83
  }))), /*#__PURE__*/React.createElement(Divider, {
84
84
  className: "mt-4"
85
85
  }), /*#__PURE__*/React.createElement(FormGroup, null, /*#__PURE__*/React.createElement("label", null, intl.get('Legend_direction')), /*#__PURE__*/React.createElement(DTableSelect, {
86
+ menuPortalTarget: "#sea-chart-settings-content",
86
87
  value: legendDirectionOptionsMap[legend_direction],
87
88
  options: legendDirectionOptions,
88
89
  onChange: onDirectionChange
@@ -119,12 +119,14 @@ const StyleSettings = _ref => {
119
119
  })), display_label && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormGroup, {
120
120
  className: "sea-chart-parameter-item"
121
121
  }, /*#__PURE__*/React.createElement(Label, null, intl.get('Label_position')), /*#__PURE__*/React.createElement(DTableSelect, {
122
+ menuPortalTarget: "#sea-chart-settings-content",
122
123
  value: selectedLabelOption,
123
124
  onChange: onLabelPositionChange,
124
125
  options: labelPositionOptions
125
126
  })), /*#__PURE__*/React.createElement(FormGroup, {
126
127
  className: "sea-chart-parameter-item"
127
128
  }, /*#__PURE__*/React.createElement(Label, null, intl.get('Label_format')), /*#__PURE__*/React.createElement(DTableSelect, {
129
+ menuPortalTarget: "#sea-chart-settings-content",
128
130
  value: selectedLabelFormat,
129
131
  onChange: onLabelFormatChange,
130
132
  options: labelFormatOptions
@@ -12,6 +12,7 @@ import { HeatMapStyleSettings } from './heat-map-settings';
12
12
  import StatisticTitleSetting from './widgets/title-settings';
13
13
  import { CompletenessStyleSettings } from './completeness-settings';
14
14
  import { MapStyleSettings } from './map-settings';
15
+ import { TrendStyleSettings } from './trend-settings';
15
16
  const StyleSettings = _ref => {
16
17
  let {
17
18
  chart,
@@ -44,12 +45,17 @@ const StyleSettings = _ref => {
44
45
  }, [chart, onChange]);
45
46
  const renderTitleSettings = useCallback(() => {
46
47
  const {
47
- style_config
48
+ style_config,
49
+ config
48
50
  } = chart;
51
+ const {
52
+ type
53
+ } = config;
49
54
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StatisticTitleSetting, {
50
55
  key: "title-setting-".concat(chart.id),
51
56
  title: style_config && style_config.title,
52
- modifyTitle: modifyTitle
57
+ modifyTitle: modifyTitle,
58
+ type: type
53
59
  }), /*#__PURE__*/React.createElement(Divider, null));
54
60
  }, [chart, modifyTitle]);
55
61
  const renderStatisticStyleSettings = useCallback(() => {
@@ -121,6 +127,10 @@ const StyleSettings = _ref => {
121
127
  {
122
128
  return /*#__PURE__*/React.createElement(HeatMapStyleSettings, props);
123
129
  }
130
+ case CHART_TYPE.TREND:
131
+ {
132
+ return /*#__PURE__*/React.createElement(TrendStyleSettings, props);
133
+ }
124
134
  default:
125
135
  {
126
136
  return null;
@@ -544,6 +544,7 @@ const DataSettings = _ref => {
544
544
  }), /*#__PURE__*/React.createElement(FormGroup, {
545
545
  className: "sea-chart-parameter-item"
546
546
  }, /*#__PURE__*/React.createElement(Label, null, intl.get('Summary_type')), /*#__PURE__*/React.createElement(DTableSelect, {
547
+ menuPortalTarget: "#sea-chart-settings-content",
547
548
  classNamePrefix: "chart-summary-types",
548
549
  value: getSelectedGroupType(),
549
550
  onChange: onGroupTypeChange,
@@ -146,6 +146,7 @@ const StyleSettings = _ref => {
146
146
  placeholder: intl.get('Display_title'),
147
147
  onChange: event => onAxisLabelShowChange(event, 'x_axis_show_label')
148
148
  }), x_axis_show_label && /*#__PURE__*/React.createElement(DTableSelect, {
149
+ menuPortalTarget: "#sea-chart-settings-content",
149
150
  value: xAxisLabelPosition,
150
151
  options: xAxisLabelOptions,
151
152
  onChange: option => onAxisLabelPositionChange(option, 'x_axis_label_position')
@@ -159,6 +160,7 @@ const StyleSettings = _ref => {
159
160
  }), y_axis_show_label && /*#__PURE__*/React.createElement("div", {
160
161
  className: "sea-chart-parameter-container"
161
162
  }, /*#__PURE__*/React.createElement(DTableSelect, {
163
+ menuPortalTarget: "#sea-chart-settings-content",
162
164
  value: yAxisLabelPosition,
163
165
  classNamePrefix: "chart-y-axis-label-position",
164
166
  options: yAxisLabelOptions,
@@ -0,0 +1,72 @@
1
+ import React, { useRef, useState } from 'react';
2
+ import { FormGroup, Input, Label } from 'reactstrap';
3
+ import intl from '../../intl';
4
+ import { FontColorSettings, FontSizeSettings, FontWeightSettings } from '../widgets/font-settings';
5
+ import TextHorizontalSettings from '../widgets/text-horizontal-settings';
6
+ import { CHART_SUPPORT_FONT_WEIGHTS } from '../../constants';
7
+ export default function GeneralFontSetting(_ref) {
8
+ let {
9
+ labelTitle,
10
+ config,
11
+ defaultConfig,
12
+ onChange
13
+ } = _ref;
14
+ const {
15
+ font_size,
16
+ font_color,
17
+ text_align,
18
+ label,
19
+ font_weight
20
+ } = config;
21
+ const {
22
+ font_size: defaultFontSize,
23
+ font_color: defaultFontColor,
24
+ text_align: defaultTextAlign,
25
+ font_weight: defaultFontWeight
26
+ } = defaultConfig;
27
+ const labelRef = useRef(null);
28
+ const [currentLabel, setCurrentLabel] = useState(label);
29
+ const handleLabelChange = e => {
30
+ setCurrentLabel(e.target.value);
31
+ };
32
+ const onSaveLabel = () => {
33
+ onChange('label', currentLabel);
34
+ };
35
+ const handleFontSizeChange = updatedFontSize => {
36
+ onChange('font_size', updatedFontSize);
37
+ };
38
+ const handleFontColorChange = updatedFontColor => {
39
+ onChange('font_color', updatedFontColor);
40
+ };
41
+ const handleTextAlignChange = value => {
42
+ onChange('text_align', value);
43
+ };
44
+ const handleFontWeightChange = value => {
45
+ onChange('font_weight', value);
46
+ };
47
+ return /*#__PURE__*/React.createElement(React.Fragment, null, labelTitle && /*#__PURE__*/React.createElement(FormGroup, {
48
+ className: "sea-chart-parameter-item"
49
+ }, /*#__PURE__*/React.createElement(Label, null, intl.get(labelTitle)), /*#__PURE__*/React.createElement(Input, {
50
+ ref: labelRef,
51
+ type: "text",
52
+ value: currentLabel,
53
+ onBlur: onSaveLabel,
54
+ onChange: handleLabelChange
55
+ })), /*#__PURE__*/React.createElement(FontSizeSettings, {
56
+ fontSize: font_size,
57
+ defaultFontSize: defaultFontSize,
58
+ modifyFontSize: handleFontSizeChange
59
+ }), /*#__PURE__*/React.createElement(FontWeightSettings, {
60
+ fontWeight: font_weight || defaultFontWeight,
61
+ supportFontWeights: CHART_SUPPORT_FONT_WEIGHTS,
62
+ modifyFontWeight: handleFontWeightChange
63
+ }), /*#__PURE__*/React.createElement(FontColorSettings, {
64
+ fontColor: font_color,
65
+ defaultFontColor: defaultFontColor,
66
+ modifyFontColor: handleFontColorChange
67
+ }), /*#__PURE__*/React.createElement(TextHorizontalSettings, {
68
+ value: text_align,
69
+ defaultValue: defaultTextAlign,
70
+ onChange: handleTextAlignChange
71
+ }));
72
+ }
@@ -1,2 +1,3 @@
1
1
  import TrendDataSettings from './data-settings';
2
- export { TrendDataSettings };
2
+ import TrendStyleSettings from './style-setting';
3
+ export { TrendDataSettings, TrendStyleSettings };
@@ -0,0 +1,72 @@
1
+ import { Label } from 'reactstrap';
2
+ import React from 'react';
3
+ import intl from '../../intl';
4
+ import Divider from '../widgets/divider';
5
+ import GeneralFontSetting from './general-font-setting';
6
+ export default function StyleSettings(_ref) {
7
+ let {
8
+ chart,
9
+ onChange
10
+ } = _ref;
11
+ const {
12
+ config
13
+ } = chart;
14
+ const {
15
+ num_font_size,
16
+ num_font_color,
17
+ num_text_align,
18
+ num_font_weight,
19
+ card_label_font_size: label_font_size,
20
+ label_font_color,
21
+ label_text_align,
22
+ label_font_weight
23
+ } = config;
24
+ const numConfig = {
25
+ font_size: num_font_size,
26
+ font_color: num_font_color,
27
+ text_align: num_text_align,
28
+ font_weight: num_font_weight
29
+ };
30
+ const defaultNumConfig = {
31
+ font_size: 34,
32
+ font_color: '#212529',
33
+ text_align: 'left',
34
+ font_weight: 700
35
+ };
36
+ const labelConfig = {
37
+ font_size: label_font_size,
38
+ font_color: label_font_color,
39
+ text_align: label_text_align,
40
+ font_weight: label_font_weight
41
+ };
42
+ const defaultLabelConfig = {
43
+ font_size: 14,
44
+ font_color: '#999999',
45
+ text_align: 'left',
46
+ font_weight: 400
47
+ };
48
+ const handleNumChange = (key, value) => {
49
+ key = "num_".concat(key);
50
+ onChange({
51
+ [key]: value
52
+ });
53
+ };
54
+ const handleLabelChange = (key, value) => {
55
+ key = "label_".concat(key);
56
+ if (key === 'label_font_size') {
57
+ key = 'card_label_font_size';
58
+ }
59
+ onChange({
60
+ [key]: value
61
+ });
62
+ };
63
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Label, null, intl.get('Number_settings')), /*#__PURE__*/React.createElement(GeneralFontSetting, {
64
+ config: numConfig,
65
+ defaultConfig: defaultNumConfig,
66
+ onChange: handleNumChange
67
+ }), /*#__PURE__*/React.createElement(Divider, null), /*#__PURE__*/React.createElement(Label, null, intl.get('Label_settings')), /*#__PURE__*/React.createElement(GeneralFontSetting, {
68
+ config: labelConfig,
69
+ defaultConfig: defaultLabelConfig,
70
+ onChange: handleLabelChange
71
+ }));
72
+ }
@@ -130,6 +130,7 @@ const BasicSummary = _ref => {
130
130
  return /*#__PURE__*/React.createElement(FormGroup, {
131
131
  className: "sea-chart-parameter-item"
132
132
  }, /*#__PURE__*/React.createElement(Label, null, intl.get('Summary_field')), /*#__PURE__*/React.createElement(DTableSelect, {
133
+ menuPortalTarget: "#sea-chart-settings-content",
133
134
  value: selectedColumnOption,
134
135
  onChange: onSummaryColumnChange,
135
136
  options: numericColumnOptions,
@@ -145,6 +146,7 @@ const BasicSummary = _ref => {
145
146
  return /*#__PURE__*/React.createElement(FormGroup, {
146
147
  className: "sea-chart-parameter-item"
147
148
  }, /*#__PURE__*/React.createElement(Label, null, intl.get('Summary_method')), /*#__PURE__*/React.createElement(DTableSelect, {
149
+ menuPortalTarget: "#sea-chart-settings-content",
148
150
  value: selectedMethodOption,
149
151
  onChange: onSummaryMethodChange,
150
152
  options: summaryMethodOptions
@@ -163,6 +165,7 @@ const BasicSummary = _ref => {
163
165
  return /*#__PURE__*/React.createElement(React.Fragment, null, showSummaryTypes && /*#__PURE__*/React.createElement(FormGroup, {
164
166
  className: "sea-chart-parameter-item"
165
167
  }, /*#__PURE__*/React.createElement(Label, null, label), /*#__PURE__*/React.createElement(DTableSelect, {
168
+ menuPortalTarget: "#sea-chart-settings-content",
166
169
  classNamePrefix: "chart-summary-types",
167
170
  value: selectedSummaryTypeOption,
168
171
  onChange: onSummaryTypeChange,
@@ -1,10 +1,10 @@
1
1
  import React, { useCallback } from 'react';
2
+ import { generateChartConfig } from '../../utils';
2
3
  import StatisticType from './chart-type';
3
4
  import SelectTable from './select-table';
4
5
  import SelectView from './select-view';
5
6
  import DataFilter from './data-filter';
6
7
  import Divider from './divider';
7
- import { generateChartConfig } from '../../utils';
8
8
  const CommonDataSettings = _ref => {
9
9
  let {
10
10
  chart,