sea-chart 2.0.36-alpha.1 → 2.0.37

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 (74) hide show
  1. package/dist/api/index.js +59 -17
  2. package/dist/assets/css/sea-chart-d3-tooltip.css +1 -0
  3. package/dist/components/color-popover/color-rules-popover.js +2 -4
  4. package/dist/components/drill-down-settings/drill-down-fields-popover/index.js +4 -5
  5. package/dist/components/icon/index.js +13 -9
  6. package/dist/components/number-input/index.js +13 -7
  7. package/dist/components/popover/hide-column-popover/hide-column-popover-widgets/hide-column-item.js +3 -7
  8. package/dist/components/popover/hide-column-popover/hide-column-popover.css +2 -6
  9. package/dist/components/popover/hide-column-popover/hide-column-popover.js +4 -2
  10. package/dist/components/popover/sort-popover/sort-popover.js +7 -6
  11. package/dist/components/statistic-record-dialog/index.js +8 -9
  12. package/dist/components/tooltip/index.js +8 -26
  13. package/dist/editor/index.js +1 -5
  14. package/dist/locale/lang/de.js +0 -1
  15. package/dist/locale/lang/en.js +0 -1
  16. package/dist/locale/lang/es.js +0 -1
  17. package/dist/locale/lang/fr.js +0 -1
  18. package/dist/locale/lang/pt.js +0 -1
  19. package/dist/locale/lang/ru.js +0 -1
  20. package/dist/locale/lang/zh_CN.js +0 -1
  21. package/dist/model/funnel.js +2 -2
  22. package/dist/services/map-json.js +2 -2
  23. package/dist/settings/advance-bar-settings/data-settings.js +1 -1
  24. package/dist/settings/advance-bar-settings/style-settings.js +2 -2
  25. package/dist/settings/bar-settings/data-settings.js +1 -1
  26. package/dist/settings/bar-settings/style-settings.js +2 -2
  27. package/dist/settings/basic-number-card/data-settings.js +2 -3
  28. package/dist/settings/combination-settings/data-settings.js +1 -0
  29. package/dist/settings/combination-settings/style-settings.js +2 -2
  30. package/dist/settings/dashboard-settings/data-settings.js +2 -3
  31. package/dist/settings/funnel-settings/components/funnel-layer-setting.js +7 -7
  32. package/dist/settings/index.js +3 -8
  33. package/dist/settings/table-element-settings/components/data-filter.js +25 -24
  34. package/dist/settings/table-element-settings/index.css +31 -1
  35. package/dist/settings/table-settings/data-settings.js +2 -3
  36. package/dist/settings/time-comparison-settings/style-settings.js +2 -2
  37. package/dist/settings/widgets/basic-summary/index.js +7 -8
  38. package/dist/settings/widgets/data-filter/index.js +22 -30
  39. package/dist/settings/widgets/group-by.js +3 -4
  40. package/dist/settings/widgets/summary-settings.js +2 -3
  41. package/dist/settings/widgets/y-axis-group-settings.js +2 -3
  42. package/dist/utils/cell-format-utils.js +7 -9
  43. package/dist/utils/chart-utils/base-utils.js +86 -194
  44. package/dist/utils/chart-utils/index.js +3 -5
  45. package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +5 -5
  46. package/dist/utils/chart-utils/original-data-utils/card-calculator.js +2 -8
  47. package/dist/utils/chart-utils/original-data-utils/dashboard-calculator.js +3 -12
  48. package/dist/utils/chart-utils/original-data-utils/pivot-table-calculator.js +1 -4
  49. package/dist/utils/chart-utils/original-data-utils/scatter-calculator.js +0 -1
  50. package/dist/utils/chart-utils/original-data-utils/trend-calculator.js +3 -24
  51. package/dist/utils/chart-utils/sql-statistics-utils.js +176 -161
  52. package/dist/utils/column-utils.js +7 -20
  53. package/dist/utils/contexts.js +2 -5
  54. package/dist/utils/index.js +4 -25
  55. package/dist/utils/row-record-utils.js +20 -100
  56. package/dist/utils/sql/column-2-sql-column.js +10 -10
  57. package/dist/utils/trend-utils.js +2 -15
  58. package/dist/view/index.css +8 -2
  59. package/dist/view/index.js +9 -14
  60. package/dist/view/wrapper/bar-compare.js +2 -18
  61. package/dist/view/wrapper/bar-group.js +5 -14
  62. package/dist/view/wrapper/basic-number-card.js +3 -24
  63. package/dist/view/wrapper/chart-component.js +6 -12
  64. package/dist/view/wrapper/dashboard.js +18 -68
  65. package/dist/view/wrapper/horizontal-bar-group.js +5 -25
  66. package/dist/view/wrapper/pie.js +1 -1
  67. package/dist/view/wrapper/ring.js +1 -1
  68. package/dist/view/wrapper/scatter.js +2 -5
  69. package/dist/view/wrapper/table/two-dimension-table.js +2 -3
  70. package/dist/view/wrapper/table-element/components/records-header/index.js +1 -0
  71. package/dist/view/wrapper/table-element/components/resize-column-handle/resize-column-handle.js +1 -3
  72. package/dist/view/wrapper/table-element/index.js +21 -16
  73. package/dist/view/wrapper/trend.js +1 -21
  74. package/package.json +14 -17
package/dist/api/index.js CHANGED
@@ -24,16 +24,42 @@ class SeaChartAPI {
24
24
  });
25
25
  };
26
26
  this.getBaseData = () => {
27
- const url = "/api/v2/dtables/".concat(this.dtableUuid, "/");
28
- return this.req.get(url);
27
+ const {
28
+ dtableServer,
29
+ dtableUuid,
30
+ accessToken
31
+ } = this;
32
+ const url = dtableServer + 'dtables/' + dtableUuid;
33
+ const headers = {
34
+ 'Authorization': 'Token ' + accessToken
35
+ };
36
+ return _axios.default.get(url, {
37
+ headers
38
+ });
29
39
  };
30
40
  this.getBaseMetaData = () => {
31
- const url = "/api/v2/dtables/".concat(this.dtableUuid, "/metadata/");
32
- return this.req.get(url);
41
+ const {
42
+ dtableServer,
43
+ dtableUuid,
44
+ accessToken
45
+ } = this;
46
+ const url = dtableServer + 'api/v1/dtables/' + dtableUuid + '/metadata';
47
+ const headers = {
48
+ 'Authorization': 'Token ' + accessToken
49
+ };
50
+ return _axios.default.get(url, {
51
+ headers
52
+ });
33
53
  };
34
54
  this.sqlQuery = function (sql, parameters) {
35
55
  let convert_keys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
36
- const url = "/api/v2/dtables/".concat(_this.dtableUuid, "/sql/");
56
+ // dtable-db
57
+ const {
58
+ dtableDB,
59
+ dtableUuid,
60
+ accessToken
61
+ } = _this;
62
+ const url = dtableDB + '/api/v2/dtables/' + dtableUuid + '/sql/';
37
63
  const data = {
38
64
  sql,
39
65
  convert_keys,
@@ -41,16 +67,20 @@ class SeaChartAPI {
41
67
  parameters: parameters
42
68
  })
43
69
  };
44
- return _this.req.post(url, data);
70
+ const headers = {
71
+ 'Authorization': 'Token ' + accessToken
72
+ };
73
+ return _axios.default.post(url, data, {
74
+ headers
75
+ });
45
76
  };
46
77
  this.config = config;
47
- const {
48
- server: _server
49
- } = config;
50
78
  this.instance = null;
51
79
  this.appName = '';
80
+ this.accessToken = '';
52
81
  this.dtableUuid = '';
53
- this.baseURL = _server[_server.length - 1] === '/' ? "".concat(_server, "api-gateway") : "".concat(_server, "/api-gateway");
82
+ this.dtableServer = '';
83
+ this.dtableSocket = '';
54
84
  }
55
85
  static getInstance(config) {
56
86
  if (this.instance) return this.instance;
@@ -62,16 +92,28 @@ class SeaChartAPI {
62
92
  const {
63
93
  app_name,
64
94
  access_token,
65
- dtable_uuid
95
+ dtable_uuid,
96
+ dtable_server,
97
+ dtable_socket,
98
+ dtable_db
66
99
  } = accessTokenRes.data;
67
100
  this.appName = app_name;
101
+ this.accessToken = access_token;
68
102
  this.dtableUuid = dtable_uuid;
69
- this.req = _axios.default.create({
70
- baseURL: this.baseURL,
71
- headers: {
72
- 'Authorization': 'Token ' + access_token
73
- }
74
- });
103
+ this.dtableServer = dtable_server.replace(/\/+$/, '') + '/';
104
+ this.dtableSocket = dtable_socket.replace(/\/+$/, '') + '/';
105
+ this.dtableDB = dtable_db.replace(/\/+$/, '') + '/';
75
106
  }
107
+
108
+ // queryUsers(userIdList) {
109
+ // const { dtableServer, accessToken } = this;
110
+ // const url = dtableServer + 'api/v2.1/user-list';
111
+ // let operation = { user_id_list: userIdList };
112
+ // const headers = {
113
+ // 'Content-type': 'application/json',
114
+ // 'Authorization': 'Token ' + accessToken
115
+ // };
116
+ // return axios.post(url, operation, { headers });
117
+ // }
76
118
  }
77
119
  var _default = exports.default = SeaChartAPI;
@@ -1,6 +1,7 @@
1
1
  .sea-chart-d3-tooltip-container {
2
2
  position: absolute;
3
3
  transform: translate(-9999px, -9999px);
4
+ transition: transform 0.1s;
4
5
  background-color: rgb(255, 255, 255);
5
6
  box-shadow: rgba(196, 175, 175, 0.1) 0px 0px 1px 1px;
6
7
  border-radius: 3px;
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _classnames = _interopRequireDefault(require("classnames"));
11
- var _dtableUtils = require("dtable-utils");
12
11
  var _intl = _interopRequireDefault(require("../../intl"));
12
+ var _dtableUtils = require("dtable-utils");
13
13
  var _commonAddTool = _interopRequireDefault(require("../common-add-tool"));
14
14
  var _dtablePopover = _interopRequireDefault(require("../dtable-popover"));
15
15
  var _colorRules = _interopRequireDefault(require("./color-rules"));
@@ -83,9 +83,7 @@ class ColorRulesPopover extends _react.Component {
83
83
  switch (filterType) {
84
84
  case _colorRules2.COLOR_RULE_FILTER_TYPE_MAP.NUMERIC_VALUE:
85
85
  {
86
- return (0, _dtableUtils.getColumnFilterOptions)({
87
- type: _dtableUtils.CellType.NUMBER
88
- });
86
+ return _dtableUtils.FILTER_COLUMN_OPTIONS[_dtableUtils.CellType.NUMBER];
89
87
  }
90
88
  default:
91
89
  {
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.default = DrillDownFieldsPopover;
9
- var _DTableColumnIcon2 = _interopRequireDefault(require("dtable-ui-component/lib/DTableColumnIcon"));
9
+ var _dtableUtils = require("dtable-utils");
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
  var _reactstrap = require("reactstrap");
12
12
  var _isHotkey = _interopRequireDefault(require("is-hotkey"));
@@ -101,9 +101,8 @@ function DrillDownFieldsPopover(_ref) {
101
101
  }, /*#__PURE__*/_react.default.createElement("td", {
102
102
  className: "pl-5 text-truncate",
103
103
  title: column.name
104
- }, /*#__PURE__*/_react.default.createElement(_DTableColumnIcon2.default, {
105
- column: column,
106
- className: "".concat(_indexModule.default['drill-down-fields-icon'], " mr-2")
104
+ }, /*#__PURE__*/_react.default.createElement("i", {
105
+ className: "".concat(_dtableUtils.COLUMNS_ICON_CONFIG[column.type], " mr-2 ").concat(_indexModule.default['drill-down-fields-icon'])
107
106
  }), /*#__PURE__*/_react.default.createElement("span", null, column.name)), /*#__PURE__*/_react.default.createElement("td", {
108
107
  className: "".concat(_indexModule.default['column-checkbox'], " pr-3")
109
108
  }, /*#__PURE__*/_react.default.createElement("input", {
@@ -7,21 +7,25 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  require("./index.css");
10
- const components = {};
11
- const requireContext = require.context('../../assets/icons', false, /\.svg$/);
12
- requireContext.keys().forEach(path => {
13
- const iconName = path.replace(/^\.\/(.*?)\.svg$/, '$1').toLowerCase();
14
- components[iconName] = requireContext(path).default;
15
- });
10
+ const importAll = requireContext => {
11
+ requireContext.keys().forEach(requireContext);
12
+ };
13
+ try {
14
+ importAll(require.context('../../assets/icons', true, /\.svg$/));
15
+ } catch (error) {
16
+ // eslint-disable-next-line no-console
17
+ console.log(error);
18
+ }
16
19
  const Icon = props => {
17
20
  const {
18
21
  className,
19
22
  symbol
20
23
  } = props;
21
24
  const iconClass = "sea-chart-icon sea-chart-icon-".concat(symbol, " ").concat(className || '');
22
- const IconComponent = components[symbol];
23
- return /*#__PURE__*/_react.default.createElement(IconComponent, {
25
+ return /*#__PURE__*/_react.default.createElement("svg", {
24
26
  className: iconClass
25
- });
27
+ }, /*#__PURE__*/_react.default.createElement("use", {
28
+ xlinkHref: "#".concat(symbol)
29
+ }));
26
30
  };
27
31
  var _default = exports.default = Icon;
@@ -7,18 +7,18 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _reactstrap = require("reactstrap");
10
- function NumberInput(_ref) {
11
- let {
10
+ function NumberInput(props) {
11
+ const {
12
12
  value,
13
13
  onChange,
14
- min = 0,
15
- step = 1,
16
- max = Infinity,
17
- readOnly = false,
14
+ min,
15
+ step,
16
+ max,
17
+ readOnly,
18
18
  className,
19
19
  useEmpty,
20
20
  ...otherProps
21
- } = _ref;
21
+ } = props;
22
22
  // useempty is used to control whether to use empty string or '0'
23
23
  const number = value ? value : useEmpty ? '' : '0';
24
24
  return /*#__PURE__*/_react.default.createElement(_reactstrap.Input, Object.assign({
@@ -32,4 +32,10 @@ function NumberInput(_ref) {
32
32
  onChange: onChange
33
33
  }, otherProps));
34
34
  }
35
+ NumberInput.defaultProps = {
36
+ min: 0,
37
+ step: 1,
38
+ max: Infinity,
39
+ readOnly: false
40
+ };
35
41
  var _default = exports.default = NumberInput;
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _DTableSwitch2 = _interopRequireDefault(require("dtable-ui-component/lib/DTableSwitch"));
9
- var _DTableColumnIcon2 = _interopRequireDefault(require("dtable-ui-component/lib/DTableColumnIcon"));
10
9
  var _react = _interopRequireDefault(require("react"));
11
10
  class HideColumnItem extends _react.default.PureComponent {
12
11
  constructor(props) {
@@ -48,14 +47,11 @@ class HideColumnItem extends _react.default.PureComponent {
48
47
  const {
49
48
  readonly
50
49
  } = this.props;
51
- const {
52
- column
53
- } = setting;
54
- const placeholder = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_DTableColumnIcon2.default, {
55
- column: column
50
+ const placeholder = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("i", {
51
+ className: "dtable-font ".concat(setting.columnIcon)
56
52
  }), /*#__PURE__*/_react.default.createElement("span", {
57
53
  className: "text-truncate"
58
- }, column.name));
54
+ }, setting.columnName));
59
55
  return /*#__PURE__*/_react.default.createElement(_DTableSwitch2.default, {
60
56
  checked: setting.isChecked,
61
57
  disabled: readonly,
@@ -2,12 +2,8 @@
2
2
  width: 192px;
3
3
  display: inline-flex;
4
4
  align-items: center;
5
- padding-right: 5px;
6
5
  margin: 0;
7
- }
8
-
9
- .hidden-column-popover .field-settings-body .dtable-switch.dropdown-item {
10
- padding: 0 10px;
6
+ padding-right: 5px;
11
7
  }
12
8
 
13
9
  .hidden-column-popover .custom-switch .dtable-font {
@@ -39,4 +35,4 @@
39
35
  border-radius: 50%;
40
36
  transition: .3s left;
41
37
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .4);
42
- }
38
+ }
@@ -8,6 +8,7 @@ exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _reactstrap = require("reactstrap");
10
10
  var _isHotkey = _interopRequireDefault(require("is-hotkey"));
11
+ var _dtableUtils = require("dtable-utils");
11
12
  var _intl = _interopRequireDefault(require("../../../intl"));
12
13
  var _utils = require("../../../utils");
13
14
  var _hideColumnItem = _interopRequireDefault(require("./hide-column-popover-widgets/hide-column-item"));
@@ -119,7 +120,7 @@ class HideColumnPopover extends _react.default.Component {
119
120
  return fieldSettings;
120
121
  }
121
122
  return fieldSettings.filter(setting => {
122
- return setting.column.name.toLowerCase().includes(searchVal);
123
+ return setting.columnName.toLowerCase().includes(searchVal);
123
124
  });
124
125
  };
125
126
  this.state = {
@@ -144,7 +145,8 @@ class HideColumnPopover extends _react.default.Component {
144
145
  return {
145
146
  key: column.key,
146
147
  isChecked: shownColumnKeys.includes(column.key),
147
- column: column
148
+ columnName: column.name,
149
+ columnIcon: _dtableUtils.COLUMNS_ICON_CONFIG[column.type]
148
150
  };
149
151
  });
150
152
  // table page cannot hide first column
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
  var _DTableCustomizeSelect2 = _interopRequireDefault(require("dtable-ui-component/lib/DTableCustomizeSelect"));
10
- var _DTableColumnIcon2 = _interopRequireDefault(require("dtable-ui-component/lib/DTableColumnIcon"));
11
10
  var _react = _interopRequireWildcard(require("react"));
12
11
  var _isHotkey = _interopRequireDefault(require("is-hotkey"));
13
12
  var _reactstrap = require("reactstrap");
@@ -129,6 +128,7 @@ class SortPopover extends _react.Component {
129
128
  const sortableColumns = columns.filter(column => _dtableUtils.SORT_COLUMN_OPTIONS.includes(column.type));
130
129
  return sortableColumns.map(column => {
131
130
  const {
131
+ type,
132
132
  name
133
133
  } = column;
134
134
  return {
@@ -137,8 +137,8 @@ class SortPopover extends _react.Component {
137
137
  },
138
138
  label: /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
139
139
  className: "filter-header-icon"
140
- }, /*#__PURE__*/_react.default.createElement(_DTableColumnIcon2.default, {
141
- column: column
140
+ }, /*#__PURE__*/_react.default.createElement("i", {
141
+ className: _dtableUtils.COLUMNS_ICON_CONFIG[type]
142
142
  })), /*#__PURE__*/_react.default.createElement("span", {
143
143
  className: "select-option-name"
144
144
  }, name))
@@ -171,7 +171,8 @@ class SortPopover extends _react.Component {
171
171
  };
172
172
  this.renderSortItem = (column, sort, index) => {
173
173
  let {
174
- name
174
+ name,
175
+ type
175
176
  } = column;
176
177
  const {
177
178
  readonly
@@ -179,8 +180,8 @@ class SortPopover extends _react.Component {
179
180
  let selectedColumn = {
180
181
  label: /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
181
182
  className: "filter-header-icon"
182
- }, /*#__PURE__*/_react.default.createElement(_DTableColumnIcon2.default, {
183
- column: column
183
+ }, /*#__PURE__*/_react.default.createElement("i", {
184
+ className: _dtableUtils.COLUMNS_ICON_CONFIG[type]
184
185
  })), /*#__PURE__*/_react.default.createElement("span", {
185
186
  className: "select-option-name",
186
187
  title: name,
@@ -22,7 +22,6 @@ var _rowRecordUtils = require("../../utils/row-record-utils");
22
22
  var _rowCard = _interopRequireDefault(require("../row-card/row-card"));
23
23
  var _commonConstants = require("../../constants/common-constants");
24
24
  var _utils = require("../../utils");
25
- var _constants = require("../../constants");
26
25
  require("./index.css");
27
26
  class StatisticRecordDialog extends _react.default.Component {
28
27
  constructor(_props) {
@@ -65,11 +64,7 @@ class StatisticRecordDialog extends _react.default.Component {
65
64
  // if more then 2 filters, use 'Or' conjunction to get them all
66
65
  // if the statistic record is '_Others', use 'Or' conjunction to get them all
67
66
  if ((detailFilterConditions === null || detailFilterConditions === void 0 ? void 0 : detailFilterConditions.filters.length) > 2 || statisticRecord.name === '_Others') {
68
- if (chart.config.type === _constants.CHART_TYPE.SCATTER) {
69
- detailFilterConditions.filter_conjunction = 'And';
70
- } else {
71
- detailFilterConditions.filter_conjunction = 'Or';
72
- }
67
+ detailFilterConditions.filter_conjunction = 'Or';
73
68
  }
74
69
  _context.default.api.customQueryRows(currentElementId, detailFilterConditions).then(res => {
75
70
  const {
@@ -360,10 +355,14 @@ class StatisticRecordDialog extends _react.default.Component {
360
355
  zIndex: 1048
361
356
  }, /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
362
357
  className: "search-header"
363
- }, /*#__PURE__*/_react.default.createElement("span", null, title), /*#__PURE__*/_react.default.createElement("span", {
364
- className: "dtable-font dtable-icon-x btn-close-row-detail",
358
+ }, /*#__PURE__*/_react.default.createElement("span", null, title), /*#__PURE__*/_react.default.createElement("button", {
359
+ type: "button",
360
+ className: "close",
361
+ "aria-label": "Close",
365
362
  onClick: this.toggle
366
- })), /*#__PURE__*/_react.default.createElement("div", {
363
+ }, /*#__PURE__*/_react.default.createElement("span", {
364
+ "aria-hidden": "true"
365
+ }, "\xD7"))), /*#__PURE__*/_react.default.createElement("div", {
367
366
  className: "search-input-container"
368
367
  }, /*#__PURE__*/_react.default.createElement("i", {
369
368
  className: "header-search-icon dtable-font dtable-icon-search"
@@ -25,10 +25,7 @@ const ToolTip = _ref => {
25
25
  title: '',
26
26
  items: []
27
27
  };
28
-
29
- // use layout effect to measure tooltip size and adjust its position before the browser paints,
30
- // to preventing a visible flicker
31
- (0, _react.useLayoutEffect)(() => {
28
+ (0, _react.useEffect)(() => {
32
29
  if (!toolTipPosition) {
33
30
  setPosition({
34
31
  offsetX: -9999,
@@ -36,7 +33,7 @@ const ToolTip = _ref => {
36
33
  });
37
34
  return;
38
35
  }
39
- if (chart && toolTipPosition && tooltipRef.current) {
36
+ if (chart && toolTipPosition) {
40
37
  const width = Number(chart.node().getAttribute('width'));
41
38
  const height = Number(chart.node().getAttribute('height'));
42
39
  const {
@@ -51,26 +48,12 @@ const ToolTip = _ref => {
51
48
  const insertPadding = 30;
52
49
  let translateX = offsetX + distance;
53
50
  let translateY = offsetY;
54
- const minX = insertPadding;
55
- const maxX = width - tooltipWidth - insertPadding;
56
- const rightAvailableWidth = width - (offsetX + distance) - insertPadding;
57
- const leftAvailableWidth = offsetX - distance - insertPadding;
58
- const canShowOnRight = rightAvailableWidth >= tooltipWidth;
59
- const canShowOnLeft = leftAvailableWidth >= tooltipWidth;
60
- if (canShowOnRight) {
61
- translateX = offsetX + distance;
62
- } else if (canShowOnLeft) {
51
+ const endOffsetX = offsetX + distance + tooltipWidth + insertPadding;
52
+ const endOffsetY = offsetY + tooltipHeight + insertPadding;
53
+ // Right overflow
54
+ if (endOffsetX > width) {
63
55
  translateX = offsetX - distance - tooltipWidth - insertPadding;
64
- } else {
65
- // If neither side has enough space, choose the side with more space.
66
- if (rightAvailableWidth >= leftAvailableWidth) {
67
- translateX = offsetX + distance;
68
- } else {
69
- translateX = offsetX - distance - tooltipWidth - insertPadding;
70
- }
71
- translateX = Math.max(minX, Math.min(translateX, maxX));
72
56
  }
73
- const endOffsetY = offsetY + tooltipHeight + insertPadding;
74
57
  // Bottom overflow
75
58
  if (endOffsetY > height) {
76
59
  translateY = offsetY - (endOffsetY - height);
@@ -80,14 +63,13 @@ const ToolTip = _ref => {
80
63
  offsetY: translateY
81
64
  });
82
65
  }
83
- }, [chart, toolTipPosition]);
66
+ }, [chart, toolTipPosition, tooltipRef]);
84
67
  return /*#__PURE__*/_react.default.createElement("div", {
85
68
  ref: tooltipRef,
86
69
  className: "sea-chart-d3-tooltip-container",
87
70
  style: {
88
71
  transform: "translate(".concat(position.offsetX, "px, ").concat(position.offsetY, "px)"),
89
- visibility: position.offsetX === -9999 ? 'hidden' : 'visible',
90
- opacity: position.offsetX === -9999 ? 0 : 1
72
+ display: position.offsetX === -9999 ? 'none' : 'block'
91
73
  }
92
74
  }, title && /*#__PURE__*/_react.default.createElement("div", {
93
75
  className: "sea-chart-d3-tooltip-title"
@@ -10,11 +10,7 @@ var _react = _interopRequireDefault(require("react"));
10
10
  var _view = _interopRequireWildcard(require("../view"));
11
11
  var _settings = _interopRequireWildcard(require("../settings"));
12
12
  require("./index.css");
13
- function Editor() {
14
- let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
15
- ...defaultProps,
16
- ...settingsDefaultProps
17
- };
13
+ function Editor(props) {
18
14
  return /*#__PURE__*/_react.default.createElement("div", {
19
15
  className: "sea-chart-editor"
20
16
  }, /*#__PURE__*/_react.default.createElement(_view.default, props), /*#__PURE__*/_react.default.createElement(_settings.default, props, props.children));
@@ -153,7 +153,6 @@ const de = {
153
153
  "Execution_time_of_the_query_exceeds_the_limit": "Le temps d'exécution de la requête dépasse la limite. Les données ne peuvent pas être chargées.",
154
154
  "There_are_some_problems_with_the_filters": "Die Filterbedingungen sind abnormal. Bitte setzen sie die Filterbedingungen in den Ansichtseinstellungen zurück.",
155
155
  "Please_complete_the_chart_configuration_first": "Configure chart in element settings",
156
- "The_chart_settings_are_invalid_please_contact_the_administrator_for_relevant_configurations": "The chart settings are invalid. Please contact the administrator for relevant configurations",
157
156
  "Not_used": "Nicht verwendet",
158
157
  "Select_field": "Feld auswählen",
159
158
  "Display_total": "Gesamtwert anzeigen",
@@ -153,7 +153,6 @@ const en = {
153
153
  "Execution_time_of_the_query_exceeds_the_limit": "Execution time of the query exceeds the limit. Data cannot be loaded.",
154
154
  "There_are_some_problems_with_the_filters": "There are some problems with the filters.",
155
155
  "Please_complete_the_chart_configuration_first": "Configure chart in element settings",
156
- "The_chart_settings_are_invalid_please_contact_the_administrator_for_relevant_configurations": "The chart settings are invalid. Please contact the administrator for relevant configurations",
157
156
  "Not_used": "Not used",
158
157
  "Select_field": "Select field",
159
158
  "Display_total": "Display total",
@@ -153,7 +153,6 @@ const es = {
153
153
  "Execution_time_of_the_query_exceeds_the_limit": "Execution time of the query exceeds the limit. Data cannot be loaded.",
154
154
  "There_are_some_problems_with_the_filters": "There are some problems with the filters.",
155
155
  "Please_complete_the_chart_configuration_first": "Configure chart in element settings",
156
- "The_chart_settings_are_invalid_please_contact_the_administrator_for_relevant_configurations": "The chart settings are invalid. Please contact the administrator for relevant configurations",
157
156
  "Not_used": "Not used",
158
157
  "Select_field": "Select field",
159
158
  "Display_total": "Display total",
@@ -153,7 +153,6 @@ const fr = {
153
153
  "Execution_time_of_the_query_exceeds_the_limit": "Le temps d'exécution de la requête dépasse la limite. Les données ne peuvent pas être chargées.",
154
154
  "There_are_some_problems_with_the_filters": "Les conditions de filtrage sont anormales. Veuillez réinitialiser les conditions de filtrage dans les paramètres de vue.",
155
155
  "Please_complete_the_chart_configuration_first": "Configure chart in element settings",
156
- "The_chart_settings_are_invalid_please_contact_the_administrator_for_relevant_configurations": "The chart settings are invalid. Please contact the administrator for relevant configurations",
157
156
  "Not_used": "Ne pas utilisé",
158
157
  "Select_field": "Sélectionner un champ",
159
158
  "Display_total": "Afficher le total",
@@ -153,7 +153,6 @@ const pt = {
153
153
  "Execution_time_of_the_query_exceeds_the_limit": "Execution time of the query exceeds the limit. Data cannot be loaded.",
154
154
  "There_are_some_problems_with_the_filters": "There are some problems with the filters.",
155
155
  "Please_complete_the_chart_configuration_first": "Configure chart in element settings",
156
- "The_chart_settings_are_invalid_please_contact_the_administrator_for_relevant_configurations": "The chart settings are invalid. Please contact the administrator for relevant configurations",
157
156
  "Not_used": "Not used",
158
157
  "Select_field": "Select field",
159
158
  "Display_total": "Display total",
@@ -153,7 +153,6 @@ const ru = {
153
153
  "Execution_time_of_the_query_exceeds_the_limit": "Execution time of the query exceeds the limit. Data cannot be loaded.",
154
154
  "There_are_some_problems_with_the_filters": "There are some problems with the filters.",
155
155
  "Please_complete_the_chart_configuration_first": "Configure chart in element settings",
156
- "The_chart_settings_are_invalid_please_contact_the_administrator_for_relevant_configurations": "The chart settings are invalid. Please contact the administrator for relevant configurations",
157
156
  "Not_used": "Not used",
158
157
  "Select_field": "Select field",
159
158
  "Display_total": "Display total",
@@ -153,7 +153,6 @@ const zh_CN = {
153
153
  "Execution_time_of_the_query_exceeds_the_limit": "查询的执行时间超出限制。无法加载数据。",
154
154
  "There_are_some_problems_with_the_filters": "过滤器有一些问题。",
155
155
  "Please_complete_the_chart_configuration_first": "在元素设置中配置图表",
156
- "The_chart_settings_are_invalid_please_contact_the_administrator_for_relevant_configurations": "图表设置无效,请联系管理员进行相关配置",
157
156
  "Not_used": "不使用",
158
157
  "Select_field": "选择字段",
159
158
  "Display_total": "显示总计",
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _dtableUtils = require("dtable-utils");
9
- var _lodash = require("lodash");
9
+ var _lodashEs = require("lodash-es");
10
10
  var _constants = require("../constants");
11
11
  var _baseModel = _interopRequireDefault(require("./base-model"));
12
12
  class Funnel extends _baseModel.default {
@@ -31,7 +31,7 @@ class Funnel extends _baseModel.default {
31
31
  const table = tables.find(table => table._id === options.table_id);
32
32
  const column = table.columns.find(column => column.key === options.x_axis_column_key);
33
33
  if (column.type === _dtableUtils.CellType.SINGLE_SELECT) {
34
- this.x_axis_option_list = (0, _lodash.cloneDeep)(column.data.options);
34
+ this.x_axis_option_list = (0, _lodashEs.cloneDeep)(column.data.options);
35
35
  } else {
36
36
  this.x_axis_option_list = [];
37
37
  }
@@ -38,11 +38,11 @@ function getMapJsonQueryUrl(mapLevel, mapLocation) {
38
38
  switch (mapLevel) {
39
39
  case _constants.MAP_LEVEL.WORLD:
40
40
  {
41
- return 'world-old-version';
41
+ return 'world';
42
42
  }
43
43
  case _constants.MAP_LEVEL.COUNTRY:
44
44
  {
45
- return 'china-old-version';
45
+ return 'china';
46
46
  }
47
47
  case _constants.MAP_LEVEL.PROVINCE:
48
48
  {
@@ -46,7 +46,7 @@ const DataSettings = _ref => {
46
46
  update['x_axis_date_granularity'] = null;
47
47
  update['x_axis_geolocation_granularity'] = null;
48
48
  } else {
49
- if (_dtableUtils.DATE_COLUMN_OPTIONS.includes(type) || (0, _columnUtils.isDateFormulaColumn)(column)) {
49
+ if (_dtableUtils.DATE_COLUMN_OPTIONS.includes(type) || (0, _columnUtils.islinkDateFormula)(column)) {
50
50
  update['x_axis_date_granularity'] = _constants.CHART_SUMMARY_TYPE.MONTH;
51
51
  update['x_axis_geolocation_granularity'] = null;
52
52
  } else if (type === _dtableUtils.CellType.GEOLOCATION) {
@@ -106,7 +106,7 @@ const StyleSettings = _ref => {
106
106
  });
107
107
  }, [chart, onChange]);
108
108
  const onYAxisMinChange = (0, _react.useCallback)(min => {
109
- const newMin = parseFloat(min);
109
+ const newMin = parseInt(min);
110
110
  if (Number.isNaN(newMin)) return;
111
111
  const {
112
112
  config
@@ -120,7 +120,7 @@ const StyleSettings = _ref => {
120
120
  });
121
121
  }, [chart, onChange]);
122
122
  const onYAxisMaxChange = (0, _react.useCallback)(max => {
123
- const newMax = parseFloat(max);
123
+ const newMax = parseInt(max);
124
124
  if (Number.isNaN(newMax)) return;
125
125
  const {
126
126
  config
@@ -46,7 +46,7 @@ const DataSettings = _ref => {
46
46
  update['x_axis_date_granularity'] = null;
47
47
  update['x_axis_geolocation_granularity'] = null;
48
48
  } else {
49
- if (_dtableUtils.DATE_COLUMN_OPTIONS.includes(type) || (0, _columnUtils.isDateFormulaColumn)(column)) {
49
+ if (_dtableUtils.DATE_COLUMN_OPTIONS.includes(type) || (0, _columnUtils.islinkDateFormula)(column)) {
50
50
  update['x_axis_date_granularity'] = _constants.CHART_SUMMARY_TYPE.MONTH;
51
51
  update['x_axis_geolocation_granularity'] = null;
52
52
  } else if (type === _dtableUtils.CellType.GEOLOCATION) {
@@ -71,7 +71,7 @@ const StyleSettings = _ref => {
71
71
  });
72
72
  }, [chart, onChange]);
73
73
  const onYAxisMinChange = (0, _react.useCallback)(min => {
74
- const newMin = parseFloat(min);
74
+ const newMin = parseInt(min);
75
75
  if (Number.isNaN(newMin)) return;
76
76
  const {
77
77
  config
@@ -85,7 +85,7 @@ const StyleSettings = _ref => {
85
85
  });
86
86
  }, [chart, onChange]);
87
87
  const onYAxisMaxChange = (0, _react.useCallback)(max => {
88
- const newMax = parseFloat(max);
88
+ const newMax = parseInt(max);
89
89
  if (Number.isNaN(newMax)) return;
90
90
  const {
91
91
  config