@easyv/charts 1.10.9 → 1.10.10

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.
@@ -29,7 +29,9 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
29
29
  var _config$value, _config$percent, _config$value2, _config$value3, _config$name;
30
30
  var series = _ref.series,
31
31
  height = _ref.height,
32
+ data = _ref.data,
32
33
  config = _ref.config,
34
+ columnsSeries = _ref.columnsSeries,
33
35
  _ref$config = _ref.config,
34
36
  show = _ref$config.show,
35
37
  _ref$config$order = _ref$config.order,
@@ -110,7 +112,7 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
110
112
  behavior: "smooth"
111
113
  });
112
114
  };
113
- var _series = (0, _utils.sortPie)(series, order);
115
+ var _series = (0, _utils.sortPie)(series, order, columnsSeries);
114
116
  var _alignment$split = alignment.split(" "),
115
117
  _alignment$split2 = (0, _slicedToArray2["default"])(_alignment$split, 2),
116
118
  _alignment = _alignment$split2[0],
@@ -152,6 +154,40 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
152
154
  return parseFloat(getCanvasTextWidth(percentStr, percentFont.letterSpacing || 0, "".concat(percentFont.fontSize || 12, "px ").concat(percentFont.fontFamily || "Arial")));
153
155
  })));
154
156
  var nameMaxWidth = ((_config$name = config.name) === null || _config$name === void 0 ? void 0 : _config$name.maxWidth) || 80;
157
+ var fieldColumnKeys = [];
158
+ if (columnsSeries !== null && columnsSeries !== void 0 && columnsSeries.columns) {
159
+ Object.values(columnsSeries.columns).forEach(function (col) {
160
+ if (col.field && !fieldColumnKeys.includes(col.field)) {
161
+ fieldColumnKeys.push(col.field);
162
+ }
163
+ });
164
+ }
165
+ var fieldsColumnWidths = fieldColumnKeys.map(function (fieldName) {
166
+ var maxMeasured = 0;
167
+ var maxCfg = 0;
168
+ _series.forEach(function (s) {
169
+ var _s$fields, _s$data$fieldName, _cfg$translate, _suf$translate;
170
+ var cfg = (_s$fields = s.fields) === null || _s$fields === void 0 ? void 0 : _s$fields[fieldName];
171
+ if (!cfg || !s.data || !Object.prototype.hasOwnProperty.call(s.data, fieldName)) {
172
+ return;
173
+ }
174
+ var f = cfg.font || {};
175
+ var fontStack = "".concat(f.fontSize || 12, "px ").concat(f.fontFamily || "Arial");
176
+ var letter = f.letterSpacing || 0;
177
+ var w = parseFloat(getCanvasTextWidth(String((_s$data$fieldName = s.data[fieldName]) !== null && _s$data$fieldName !== void 0 ? _s$data$fieldName : ""), letter, fontStack));
178
+ var suf = cfg.suffix;
179
+ if (suf !== null && suf !== void 0 && suf.show && suf.text != null && String(suf.text) !== "") {
180
+ var sufFont = "".concat(suf.fontSize || f.fontSize || 12, "px ").concat(f.fontFamily || "Arial");
181
+ w += parseFloat(getCanvasTextWidth(String(suf.text), letter, sufFont));
182
+ }
183
+ var tx = Number((_cfg$translate = cfg.translate) === null || _cfg$translate === void 0 ? void 0 : _cfg$translate.x) || 0;
184
+ var stx = suf !== null && suf !== void 0 && suf.show && suf.text != null && String(suf.text) !== "" ? Number((_suf$translate = suf.translate) === null || _suf$translate === void 0 ? void 0 : _suf$translate.x) || 0 : 0;
185
+ w += Math.max(0, tx) + Math.max(0, stx);
186
+ maxMeasured = Math.max(maxMeasured, w);
187
+ maxCfg = Math.max(maxCfg, Number(cfg.maxWidth) || 0);
188
+ });
189
+ return Math.max(maxMeasured, maxCfg);
190
+ });
155
191
  var stylePieOrAxis = formatter ? _objectSpread(_objectSpread({
156
192
  display: "flex",
157
193
  alignContent: alignment.split(" ")[0] == "center" && (alignment.split(" ")[1] == "left" || alignment.split(" ")[1] == "right") ? alignment.split(" ")[1] == "left" ? "flex-start" : "flex-end" : alignment.split(" ")[0] == "left" ? "flex-start" : alignment.split(" ")[0] == "center" ? "center" : "flex-end",
@@ -207,12 +243,17 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
207
243
  opacity: selected === false ? opacity / 100 : 1,
208
244
  alignItems: "center",
209
245
  cursor: "pointer",
210
- gap: _icon.gap
246
+ gap: _icon.gap,
247
+ overflow: formatter ? "visible" : undefined
211
248
  }
212
249
  }, formatter ? formatter(series, _objectSpread(_objectSpread({}, config), {}, {
213
250
  valueMaxWidth: valueMaxWidth,
214
251
  percentMaxWidth: percentMaxWidth,
215
- nameMaxWidth: nameMaxWidth
252
+ nameMaxWidth: nameMaxWidth,
253
+ otherData: data,
254
+ columnsSeries: columnsSeries,
255
+ fieldColumnKeys: fieldColumnKeys,
256
+ fieldsColumnWidths: fieldsColumnWidths
216
257
  })) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("span", {
217
258
  style: _icon
218
259
  }), /*#__PURE__*/_react["default"].createElement(_TextOverflow["default"], {
@@ -260,12 +301,17 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
260
301
  opacity: selected === false ? opacity / 100 : 1,
261
302
  alignItems: "center",
262
303
  cursor: "pointer",
263
- gap: _icon.gap
304
+ gap: _icon.gap,
305
+ overflow: formatter ? "visible" : undefined
264
306
  }
265
307
  }, formatter ? formatter(series, _objectSpread(_objectSpread({}, config), {}, {
266
308
  valueMaxWidth: valueMaxWidth,
267
309
  percentMaxWidth: percentMaxWidth,
268
- nameMaxWidth: nameMaxWidth
310
+ nameMaxWidth: nameMaxWidth,
311
+ otherData: data,
312
+ columnsSeries: columnsSeries,
313
+ fieldColumnKeys: fieldColumnKeys,
314
+ fieldsColumnWidths: fieldsColumnWidths
269
315
  })) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("span", {
270
316
  style: _icon
271
317
  }), /*#__PURE__*/_react["default"].createElement(_TextOverflow["default"], {
@@ -271,6 +271,7 @@ var Component = /*#__PURE__*/(0, _react.memo)(function (_ref5) {
271
271
  outerDecorate = _ref5$config$fan2.outerDecorate,
272
272
  current = _ref5$config$fan2.current,
273
273
  order = _ref5$config.order,
274
+ columnsSeries = _ref5$config.columnsSeries,
274
275
  series = _ref5$config.series,
275
276
  _ref5$config$animatio = _ref5$config.animation,
276
277
  on = _ref5$config$animatio.on,
@@ -622,6 +623,8 @@ var Component = /*#__PURE__*/(0, _react.memo)(function (_ref5) {
622
623
  mousePos: mousePos
623
624
  })), /*#__PURE__*/_react["default"].createElement(_.Legend, (0, _extends2["default"])({}, legend, {
624
625
  height: chartHeight,
626
+ columnsSeries: columnsSeries,
627
+ data: data,
625
628
  series: _arcs.map(function (arc) {
626
629
  return _objectSpread(_objectSpread({}, arc), {}, {
627
630
  percent: arc.percent.toFixed(legendPrecision)
@@ -791,6 +794,8 @@ var Component = /*#__PURE__*/(0, _react.memo)(function (_ref5) {
791
794
  mousePos: mousePos
792
795
  })), /*#__PURE__*/_react["default"].createElement(_.Legend, (0, _extends2["default"])({}, legend, {
793
796
  height: chartHeight,
797
+ data: data,
798
+ columnsSeries: columnsSeries,
794
799
  series: _arcs.map(function (arc) {
795
800
  return _objectSpread(_objectSpread({}, arc), {}, {
796
801
  percent: arc.percent.toFixed(legendPrecision)
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.pieLegendFormatter = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
8
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
10
  var _indexModule = _interopRequireDefault(require("../css/index.module.css"));
10
11
  var _utils = require("../utils");
@@ -12,6 +13,7 @@ var _components = require("../components");
12
13
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
14
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
15
  var pieLegendFormatter = exports.pieLegendFormatter = function pieLegendFormatter(series, props) {
16
+ var _props$fieldColumnKey, _props$fieldsColumnWi, _series$fieldsData;
15
17
  var displayName = series.displayName,
16
18
  data = series.data,
17
19
  percent = series.percent,
@@ -54,6 +56,48 @@ var pieLegendFormatter = exports.pieLegendFormatter = function pieLegendFormatte
54
56
  _props$percent$transl = _props$percent.translate,
55
57
  percentX = _props$percent$transl.x,
56
58
  percentY = _props$percent$transl.y;
59
+ var fieldColumnKeys = (_props$fieldColumnKey = props.fieldColumnKeys) !== null && _props$fieldColumnKey !== void 0 ? _props$fieldColumnKey : [];
60
+ var fieldsColumnWidths = (_props$fieldsColumnWi = props.fieldsColumnWidths) !== null && _props$fieldsColumnWi !== void 0 ? _props$fieldsColumnWi : [];
61
+ //获取文本所占宽度
62
+ function getStringWidth(text) {
63
+ var fontStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "14px sans-serif";
64
+ var canvas = document.createElement("canvas");
65
+ var ctx = canvas.getContext("2d");
66
+ ctx.font = fontStyle;
67
+ return ctx.measureText(text).width;
68
+ }
69
+ var alignToJustify = function alignToJustify(align) {
70
+ return align == "left" ? "flex-start" : align == "right" ? "flex-end" : "center";
71
+ };
72
+ var alignToTextAlign = function alignToTextAlign(align) {
73
+ return align === "left" ? "left" : align === "right" ? "right" : "center";
74
+ };
75
+ if (fieldColumnKeys.length > 0) {
76
+ //处理除name、value、percent外的列
77
+ series.fieldsData = fieldColumnKeys.map(function (key, fieldsColumnIndex) {
78
+ var _series$fields, _series$data;
79
+ if (!((_series$fields = series.fields) !== null && _series$fields !== void 0 && _series$fields[key]) || !((_series$data = series.data) !== null && _series$data !== void 0 && _series$data.hasOwnProperty(key))) {
80
+ return null;
81
+ }
82
+ return _objectSpread(_objectSpread({}, series.fields[key]), {}, {
83
+ value: series.data[key],
84
+ fieldsColumnIndex: fieldsColumnIndex
85
+ });
86
+ }).filter(Boolean);
87
+ } else {
88
+ series.fieldsData = Object.entries(series.fields || {}).reduce(function (arr, _ref) {
89
+ var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
90
+ key = _ref2[0],
91
+ config = _ref2[1];
92
+ if (series.data.hasOwnProperty(key)) {
93
+ arr.push(_objectSpread(_objectSpread({}, config), {}, {
94
+ value: series.data[key],
95
+ fieldsColumnIndex: arr.length
96
+ }));
97
+ }
98
+ return arr;
99
+ }, []);
100
+ }
57
101
  var seriesColorType = seriesColor.type,
58
102
  pure = seriesColor.pure,
59
103
  stops = seriesColor.linear.stops;
@@ -65,6 +109,27 @@ var pieLegendFormatter = exports.pieLegendFormatter = function pieLegendFormatte
65
109
  if (showName) columns.push("".concat(props.nameMaxWidth, "px"));
66
110
  if (showValue) columns.push("".concat(props.valueMaxWidth + valueGap, "px"));
67
111
  if (showPercent) columns.push("".concat(props.percentMaxWidth + percentGap, "px"));
112
+ if (series.fieldsData.length > 0) {
113
+ //网格布局新增的各列宽度
114
+ series.fieldsData.forEach(function (item) {
115
+ var _item$fieldsColumnInd, _suf$fontSize, _item$font, _item$translate, _suf$translate;
116
+ var idx = (_item$fieldsColumnInd = item.fieldsColumnIndex) !== null && _item$fieldsColumnInd !== void 0 ? _item$fieldsColumnInd : 0;
117
+ var measured = getStringWidth(item.value, "".concat(item.font.fontSize, "px ").concat(item.font.fontFamily));
118
+ var suf = item.suffix;
119
+ var suffixWidth = suf !== null && suf !== void 0 && suf.show && (suf === null || suf === void 0 ? void 0 : suf.text) != null && String(suf.text) !== "" ? getStringWidth(String(suf.text), "".concat((_suf$fontSize = suf.fontSize) !== null && _suf$fontSize !== void 0 ? _suf$fontSize : (_item$font = item.font) === null || _item$font === void 0 ? void 0 : _item$font.fontSize, "px ").concat(item.font.fontFamily)) : 0;
120
+ var tx = Math.max(0, Number((_item$translate = item.translate) === null || _item$translate === void 0 ? void 0 : _item$translate.x) || 0);
121
+ var stx = suf !== null && suf !== void 0 && suf.show && (suf === null || suf === void 0 ? void 0 : suf.text) != null && String(suf.text) !== "" ? Math.max(0, Number((_suf$translate = suf.translate) === null || _suf$translate === void 0 ? void 0 : _suf$translate.x) || 0) : 0;
122
+ var flowW = measured + suffixWidth + tx + stx;
123
+ var colW;
124
+ if (fieldsColumnWidths.length > idx && fieldsColumnWidths[idx] > 0) {
125
+ colW = Math.max(Number(fieldsColumnWidths[idx]) || 0, Number(item.maxWidth) || 0, flowW);
126
+ } else {
127
+ var fromConfig = Number(item.maxWidth) || 0;
128
+ colW = Math.max(flowW, fromConfig);
129
+ }
130
+ columns.push("".concat(colW, "px"));
131
+ });
132
+ }
68
133
  return /*#__PURE__*/React.createElement(React.Fragment, null, icon && /*#__PURE__*/React.createElement("span", {
69
134
  style: _objectSpread(_objectSpread({}, icon), {}, {
70
135
  marginRight: icon.marginRight,
@@ -74,7 +139,8 @@ var pieLegendFormatter = exports.pieLegendFormatter = function pieLegendFormatte
74
139
  className: showName && showValue && showPercent ? _indexModule["default"].showAllStyle : _indexModule["default"].notShowAllStyle,
75
140
  style: {
76
141
  width: "calc( 100% + ".concat(textMarginLeft + valueGap + percentGap, "px )"),
77
- gridTemplateColumns: columns.join(" ")
142
+ gridTemplateColumns: columns.join(" "),
143
+ overflowX: "visible"
78
144
  }
79
145
  }, showName && /*#__PURE__*/React.createElement(_components.TextOverflow, {
80
146
  value: displayName,
@@ -95,8 +161,8 @@ var pieLegendFormatter = exports.pieLegendFormatter = function pieLegendFormatte
95
161
  transform: "translate(".concat(valueX, "px,").concat(valueY, "px)"),
96
162
  color: valueSameColor ? _color : valueFont.color,
97
163
  alignItems: "center",
98
- justifyContent: valueAlign == "left" ? "flex-start" : valueAlign == "right" ? "flex-end" : "center",
99
- textAlign: valueAlign === "left" ? "left" : valueAlign === "right" ? "right" : "center"
164
+ justifyContent: alignToJustify(valueAlign !== null && valueAlign !== void 0 ? valueAlign : "center"),
165
+ textAlign: alignToTextAlign(valueAlign)
100
166
  })
101
167
  }, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(_components.SplitText, {
102
168
  value: data.y,
@@ -109,14 +175,53 @@ var pieLegendFormatter = exports.pieLegendFormatter = function pieLegendFormatte
109
175
  }
110
176
  }, text)), showPercent && /*#__PURE__*/React.createElement("span", {
111
177
  style: _objectSpread(_objectSpread({
178
+ display: "flex",
112
179
  whiteSpace: "nowrap"
113
180
  }, (0, _utils.getFontStyle)(percentFont)), {}, {
114
181
  marginLeft: percentGap,
115
182
  transform: "translate(".concat(percentX, "px,").concat(percentY, "px)"),
116
183
  color: percentSameColor ? _color : percentFont.color,
117
184
  alignItems: "center",
118
- justifyContent: percentAlign == "left" ? "flex-start" : percentAlign == "right" ? "flex-end" : "center",
119
- textAlign: percentAlign === "left" ? "left" : percentAlign === "right" ? "right" : "center"
185
+ justifyContent: alignToJustify(percentAlign),
186
+ textAlign: alignToTextAlign(percentAlign)
120
187
  })
121
- }, percent + "%")));
188
+ }, percent + "%"), (_series$fieldsData = series.fieldsData) === null || _series$fieldsData === void 0 ? void 0 : _series$fieldsData.map(function (item, index //渲染网格布局新增的各列
189
+ ) {
190
+ var _fieldColumnKeys, _item$fieldsColumnInd2, _item$align, _item$align2, _item$translate$x, _item$translate2, _item$translate$y, _item$translate3, _item$suffix, _item$suffix2, _item$suffix$translat, _item$suffix$translat2, _item$suffix$translat3, _item$suffix$translat4;
191
+ return /*#__PURE__*/React.createElement("span", {
192
+ key: (_fieldColumnKeys = fieldColumnKeys[(_item$fieldsColumnInd2 = item.fieldsColumnIndex) !== null && _item$fieldsColumnInd2 !== void 0 ? _item$fieldsColumnInd2 : index]) !== null && _fieldColumnKeys !== void 0 ? _fieldColumnKeys : index,
193
+ style: _objectSpread(_objectSpread({
194
+ display: "flex",
195
+ boxSizing: "border-box",
196
+ width: "100%",
197
+ minWidth: 0,
198
+ alignItems: "center",
199
+ justifyContent: alignToJustify((_item$align = item.align) !== null && _item$align !== void 0 ? _item$align : "center"),
200
+ textAlign: alignToTextAlign((_item$align2 = item.align) !== null && _item$align2 !== void 0 ? _item$align2 : "center"),
201
+ overflow: "visible"
202
+ }, (0, _utils.getFontStyle)(item.font)), {}, {
203
+ color: item.sameColor ? _color : item.font.color
204
+ })
205
+ }, /*#__PURE__*/React.createElement("span", {
206
+ style: {
207
+ display: "inline-flex",
208
+ alignItems: "center",
209
+ flexWrap: "nowrap",
210
+ whiteSpace: "nowrap",
211
+ marginLeft: (_item$translate$x = (_item$translate2 = item.translate) === null || _item$translate2 === void 0 ? void 0 : _item$translate2.x) !== null && _item$translate$x !== void 0 ? _item$translate$x : 0,
212
+ marginTop: (_item$translate$y = (_item$translate3 = item.translate) === null || _item$translate3 === void 0 ? void 0 : _item$translate3.y) !== null && _item$translate$y !== void 0 ? _item$translate$y : 0
213
+ }
214
+ }, /*#__PURE__*/React.createElement("span", {
215
+ style: {
216
+ whiteSpace: "nowrap"
217
+ }
218
+ }, item.value), ((_item$suffix = item.suffix) === null || _item$suffix === void 0 ? void 0 : _item$suffix.show) && ((_item$suffix2 = item.suffix) === null || _item$suffix2 === void 0 ? void 0 : _item$suffix2.text) != null && String(item.suffix.text) !== "" && /*#__PURE__*/React.createElement("span", {
219
+ style: {
220
+ whiteSpace: "nowrap",
221
+ fontSize: item.suffix.fontSize,
222
+ marginLeft: (_item$suffix$translat = (_item$suffix$translat2 = item.suffix.translate) === null || _item$suffix$translat2 === void 0 ? void 0 : _item$suffix$translat2.x) !== null && _item$suffix$translat !== void 0 ? _item$suffix$translat : 0,
223
+ marginTop: (_item$suffix$translat3 = (_item$suffix$translat4 = item.suffix.translate) === null || _item$suffix$translat4 === void 0 ? void 0 : _item$suffix$translat4.y) !== null && _item$suffix$translat3 !== void 0 ? _item$suffix$translat3 : 0
224
+ }
225
+ }, item.suffix.text)));
226
+ })));
122
227
  };