@easyv/charts 1.9.16 → 1.9.18

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.
@@ -5,10 +5,11 @@ var _typeof3 = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = void 0;
8
+ exports["default"] = exports.calculateTextWidth = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
11
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
13
  var _react = _interopRequireWildcard(require("react"));
13
14
  var _utils = require("../utils");
14
15
  var _context = require("../context");
@@ -20,6 +21,43 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
20
21
  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; } /**
21
22
  * x, y, z轴
22
23
  */
24
+ var canvasContext = null;
25
+ var getCanvasContext = function getCanvasContext() {
26
+ if (!canvasContext) {
27
+ // 创建离线Canvas(不挂载到DOM,仅用于计算)
28
+ var canvas = document.createElement("canvas");
29
+ canvasContext = canvas.getContext("2d");
30
+ if (!canvasContext) {
31
+ throw new Error("浏览器不支持Canvas");
32
+ }
33
+ }
34
+ return canvasContext;
35
+ };
36
+
37
+ //计算文本宽度的函数
38
+ var calculateTextWidth = exports.calculateTextWidth = function calculateTextWidth(text, fontConfig) {
39
+ if (!text) return 0;
40
+ var ctx = getCanvasContext();
41
+ ctx.save();
42
+ var fontStyle = fontConfig.italic ? "italic" : "normal";
43
+ var fontWeight = fontConfig.bold ? "bold" : "normal";
44
+ var fontSize = typeof fontConfig.fontSize === "number" ? "".concat(fontConfig.fontSize, "px") : fontConfig.fontSize || "12px";
45
+ var fontFamily = fontConfig.fontFamily || "Microsoft Yahei";
46
+ var letterSpacing = Number(fontConfig.letterSpacing) || 0;
47
+ var letterSpacingWithUnit = "".concat(letterSpacing, "px");
48
+ ctx.font = "".concat(fontWeight, " ").concat(fontStyle, " ").concat(fontSize, " ").concat(fontFamily);
49
+ ctx.letterSpacing = letterSpacingWithUnit;
50
+ var totalWidth;
51
+ if (typeof ctx.letterSpacing !== "undefined") {
52
+ totalWidth = ctx.measureText(text).width;
53
+ } else {
54
+ var baseWidth = ctx.measureText(text).width;
55
+ var spacingWidth = text.length * letterSpacing;
56
+ totalWidth = baseWidth + spacingWidth;
57
+ }
58
+ ctx.restore();
59
+ return totalWidth;
60
+ };
23
61
  var defaultEvent = function defaultEvent() {};
24
62
  var defaultAppearance = {
25
63
  angle: 0,
@@ -152,6 +190,23 @@ var Unit = function Unit(_ref4) {
152
190
  textAnchor: textAnchor
153
191
  }, dataUnit || text);
154
192
  };
193
+ function maxLabelFT(data, config, formatter, font) {
194
+ var max = 0;
195
+ data.length ? data.forEach(function (item) {
196
+ if (calculateTextWidth(formatter(item, _objectSpread(_objectSpread({}, config), {}, {
197
+ format: {
198
+ type: config.format,
199
+ showType: config.showType
200
+ }
201
+ })), font) > max) max = calculateTextWidth(formatter(item, _objectSpread(_objectSpread({}, config), {}, {
202
+ format: {
203
+ type: config.format,
204
+ showType: config.showType
205
+ }
206
+ })), font);
207
+ }) : "";
208
+ return max;
209
+ }
155
210
  var Label = function Label(_ref5) {
156
211
  var className = _ref5.className,
157
212
  _ref5$orientation = _ref5.orientation,
@@ -172,6 +227,7 @@ var Label = function Label(_ref5) {
172
227
  events = _ref5$events === void 0 ? defaultEvent : _ref5$events,
173
228
  _ref5$config = _ref5.config,
174
229
  show = _ref5$config.show,
230
+ labelNum = _ref5$config.labelNum,
175
231
  style = _ref5$config.style,
176
232
  _ref5$config$translat = _ref5$config.translate,
177
233
  translateX = _ref5$config$translat.x,
@@ -183,9 +239,15 @@ var Label = function Label(_ref5) {
183
239
  _ref5$config$appearan2 = _ref5$config$appearan === void 0 ? defaultAppearance : _ref5$config$appearan,
184
240
  width = _ref5$config$appearan2.width,
185
241
  speed = _ref5$config$appearan2.speed,
186
- textOverflow = _ref5$config$appearan2.textOverflow;
242
+ textOverflow = _ref5$config$appearan2.textOverflow,
243
+ LabelWidth = _ref5.LabelWidth;
187
244
  if (!show) return null;
188
- var _label = formatter(label, config);
245
+ var _label = formatter(label, _objectSpread(_objectSpread({}, config), {}, {
246
+ format: {
247
+ type: config.format,
248
+ showType: config.showType
249
+ }
250
+ }));
189
251
  var _getLayout = getLayout(orientation, rotate),
190
252
  transform = _getLayout.transform,
191
253
  directionX = _getLayout.directionX,
@@ -194,6 +256,7 @@ var Label = function Label(_ref5) {
194
256
  var x = (isVertical ? tickSize * directionX : coordinate) + translateX * directionX;
195
257
  var y = (isVertical ? coordinate : tickSize * directionY) + translateY * directionY;
196
258
  var _style = style && ((0, _typeof2["default"])(style) == "object" ? style : style(_label));
259
+ //x轴显示
197
260
  return /*#__PURE__*/_react["default"].createElement("foreignObject", {
198
261
  width: "100%",
199
262
  height: "100%"
@@ -217,7 +280,7 @@ var Label = function Label(_ref5) {
217
280
  cursor: "pointer",
218
281
  transform: "translate(".concat(x + (isIOS ? iosX : 0), "px, ").concat(y + (isIOS ? iosY : 0), "px)") // 用 transform 定位
219
282
  })
220
- }, /*#__PURE__*/_react["default"].createElement(_TextOverflow["default"], {
283
+ }, labelNum == "Fixed" ? /*#__PURE__*/_react["default"].createElement(_TextOverflow["default"], {
221
284
  ShowType: "normal",
222
285
  type: textOverflow,
223
286
  speed: speed,
@@ -228,17 +291,28 @@ var Label = function Label(_ref5) {
228
291
  textAlign: textAlign,
229
292
  justifyContent: textAlign == "left" ? "flex-start" : textAlign == "right" ? "flex-end" : "center"
230
293
  }
231
- })));
294
+ }) : /*#__PURE__*/_react["default"].createElement("span", {
295
+ style: {
296
+ width: LabelWidth,
297
+ transform: transform,
298
+ justifyContent: "flex-start",
299
+ display: "block",
300
+ top: translateY,
301
+ left: translateX
302
+ }
303
+ }, _label)));
232
304
  };
233
305
  var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(/*#__PURE__*/(0, _react.forwardRef)(function (_ref6, ref) {
234
- var orientation = _ref6.orientation,
306
+ var allTicks = _ref6.allTicks,
307
+ orientation = _ref6.orientation,
235
308
  scaler = _ref6.scaler,
236
309
  _ref6$tickSize = _ref6.tickSize,
237
310
  tickSize = _ref6$tickSize === void 0 ? defaultTickSize : _ref6$tickSize,
238
- ticks = _ref6.ticks,
311
+ tickss = _ref6.ticks,
239
312
  formatter = _ref6.formatter,
240
313
  rotate = _ref6.rotate,
241
314
  triggerEvents = _ref6.triggerEvents,
315
+ config = _ref6.config,
242
316
  _ref6$config = _ref6.config,
243
317
  on = _ref6$config.on,
244
318
  label = _ref6$config.label,
@@ -259,17 +333,71 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(/*#__PURE__*/(
259
333
  yLineRange = _ref6.yLineRange,
260
334
  clipAxisRange = _ref6.clipAxisRange,
261
335
  controlInfo = _ref6.controlInfo,
262
- rawTicks = _ref6.rawTicks;
263
- if (!(on && ticks.length > 0)) return null;
336
+ rawTicks = _ref6.rawTicks,
337
+ paddingOuter = _ref6.paddingOuter;
264
338
  var _useContext = (0, _react.useContext)(_context.chartContext),
265
339
  width = _useContext.width,
266
340
  height = _useContext.height,
267
341
  isIOS = _useContext.isIOS;
342
+ var LabelWidth = 1;
343
+ if (label.labelNum == "Fixed") {
344
+ LabelWidth = label.appearance.width;
345
+ } else {
346
+ if (allTicks.length && typeof allTicks[0] == "string") {
347
+ LabelWidth = maxLabelFT(allTicks, label, formatter, label.font);
348
+ }
349
+ }
350
+ var LabelNum = Math.floor(width * (1 - paddingOuter) / LabelWidth);
351
+ var ticks = label.labelNum == "Fixed" ? tickss : getEvenlySpacedElements(allTicks, LabelNum < allTicks.length ? LabelNum > allTicks.length / 2 ? Math.ceil(allTicks.length) / 2 : LabelNum : allTicks.length, label.showLast);
352
+ if (!(on && ticks.length > 0)) return null;
268
353
  var cHeight = controlInfo.cHeight,
269
354
  isC = controlInfo.isC,
270
355
  cPercent = controlInfo.cPercent;
271
356
  var x = orientation == "right" ? width : 0;
272
357
  var y = orientation == "bottom" ? height - cHeight : 0;
358
+ //数据抽取逻辑
359
+ function getEvenlySpacedElements(arr, expectCount) {
360
+ var acc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
361
+ if (!arr.length || expectCount <= 0) return [];
362
+ if (expectCount >= arr.length) return (0, _toConsumableArray2["default"])(arr);
363
+
364
+ // 如果只需要取1个,直接返回第一个
365
+ if (expectCount === 1) {
366
+ return [arr[0]];
367
+ }
368
+ if (acc) {
369
+ //严格均分逻辑
370
+ var result = [arr[0], arr[arr.length - 1]];
371
+ if (expectCount === 2) {
372
+ return result;
373
+ }
374
+ var needMiddleCount = expectCount - 2;
375
+ var availableMiddleLength = arr.length - 2;
376
+ if (needMiddleCount > 0 && availableMiddleLength >= needMiddleCount && (availableMiddleLength + 1) % (needMiddleCount + 1) === 0) {
377
+ var step = (availableMiddleLength + 1) / (needMiddleCount + 1);
378
+ result.length = 0;
379
+ result.push(arr[0]);
380
+ for (var i = 1; i <= needMiddleCount; i++) {
381
+ var index = i * step;
382
+ result.push(arr[index]);
383
+ }
384
+ result.push(arr[arr.length - 1]);
385
+ }
386
+ return result;
387
+ } else {
388
+ var _result = [];
389
+ var arrLen = arr.length;
390
+ var _step = Math.max(1, Math.floor(arrLen / expectCount));
391
+ for (var _i = 0; _i < arrLen; _i += _step) {
392
+ _result.push(arr[_i]);
393
+ if (_result.length >= expectCount) break;
394
+ }
395
+ if (expectCount === 2 && _result.length >= 2) {
396
+ _result[1] = arr[arr.length - 1];
397
+ }
398
+ return _result;
399
+ }
400
+ }
273
401
  function drawAxisTickLine() {
274
402
  var draw = function draw(ticks, scaler) {
275
403
  return ticks.map(function (tick, index) {
@@ -333,7 +461,8 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(/*#__PURE__*/(
333
461
  tickSize: _tickSize,
334
462
  formatter: formatter,
335
463
  rotate: rotate,
336
- events: triggerEvents
464
+ events: triggerEvents,
465
+ LabelWidth: LabelWidth
337
466
  }), gridLine && /*#__PURE__*/_react["default"].createElement(_element.Line, (0, _extends2["default"])({
338
467
  className: "__easyv-gridLine",
339
468
  config: gridLine
@@ -91,7 +91,7 @@ var _default = exports["default"] = function _default(_ref) {
91
91
  if (xAxis) {
92
92
  var _xAxis$config$label = xAxis.config.label,
93
93
  autoSort = _xAxis$config$label.autoSort,
94
- type = _xAxis$config$label.format.type;
94
+ type = _xAxis$config$label.format;
95
95
  if (type == "date" && autoSort) {
96
96
  x.sort(function (a, b) {
97
97
  return new Date(a).getTime() - new Date(b).getTime();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easyv/charts",
3
- "version": "1.9.16",
3
+ "version": "1.9.18",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -15,6 +15,47 @@ import { chartContext } from "../context";
15
15
  import { Line } from "../element";
16
16
  import TextOverflow from "./TextOverflow";
17
17
  import { path } from "d3";
18
+ let canvasContext: CanvasRenderingContext2D | null = null;
19
+ const getCanvasContext = (): CanvasRenderingContext2D => {
20
+ if (!canvasContext) {
21
+ // 创建离线Canvas(不挂载到DOM,仅用于计算)
22
+ const canvas = document.createElement("canvas");
23
+ canvasContext = canvas.getContext("2d");
24
+ if (!canvasContext) {
25
+ throw new Error("浏览器不支持Canvas");
26
+ }
27
+ }
28
+ return canvasContext;
29
+ };
30
+
31
+ //计算文本宽度的函数
32
+ export const calculateTextWidth = (text: string, fontConfig: any): number => {
33
+ if (!text) return 0;
34
+ const ctx = getCanvasContext();
35
+ ctx.save();
36
+
37
+ const fontStyle = fontConfig.italic ? "italic" : "normal";
38
+ const fontWeight = fontConfig.bold ? "bold" : "normal";
39
+ const fontSize =
40
+ typeof fontConfig.fontSize === "number"
41
+ ? `${fontConfig.fontSize}px`
42
+ : fontConfig.fontSize || "12px";
43
+ const fontFamily = fontConfig.fontFamily || "Microsoft Yahei";
44
+ const letterSpacing = Number(fontConfig.letterSpacing) || 0;
45
+ const letterSpacingWithUnit = `${letterSpacing}px`;
46
+ ctx.font = `${fontWeight} ${fontStyle} ${fontSize} ${fontFamily}`;
47
+ ctx.letterSpacing = letterSpacingWithUnit;
48
+ let totalWidth;
49
+ if (typeof ctx.letterSpacing !== "undefined") {
50
+ totalWidth = ctx.measureText(text).width;
51
+ } else {
52
+ const baseWidth = ctx.measureText(text).width;
53
+ const spacingWidth = text.length * letterSpacing;
54
+ totalWidth = baseWidth + spacingWidth;
55
+ }
56
+ ctx.restore();
57
+ return totalWidth;
58
+ };
18
59
  const defaultEvent = () => {};
19
60
  const defaultAppearance = {
20
61
  angle: 0,
@@ -185,14 +226,42 @@ type LabelType = {
185
226
  events?: Function;
186
227
  config: {
187
228
  show: boolean;
229
+ labelNum: string;
188
230
  translate: Translate;
189
231
  font: Font;
190
232
  textAlign: TextAlign;
191
233
  style: CSSProperties | Function;
192
234
  appearance?: appearance;
235
+ format: string;
236
+ showType: string;
193
237
  };
238
+ LabelWidth: any;
194
239
  };
195
240
 
241
+ function maxLabelFT(data: any, config: any, formatter: any, font: any) {
242
+ let max = 0;
243
+ data.length
244
+ ? data.forEach((item: any) => {
245
+ if (
246
+ calculateTextWidth(
247
+ formatter(item, {
248
+ ...config,
249
+ format: { type: config.format, showType: config.showType },
250
+ }),
251
+ font
252
+ ) > max
253
+ )
254
+ max = calculateTextWidth(
255
+ formatter(item, {
256
+ ...config,
257
+ format: { type: config.format, showType: config.showType },
258
+ }),
259
+ font
260
+ );
261
+ })
262
+ : "";
263
+ return max;
264
+ }
196
265
  const Label: (
197
266
  props: LabelType
198
267
  ) => ReactComponentElement<ComponentType> | null = ({
@@ -208,15 +277,20 @@ const Label: (
208
277
  events = defaultEvent,
209
278
  config: {
210
279
  show,
280
+ labelNum,
211
281
  style,
212
282
  translate: { x: translateX, y: translateY },
213
283
  font,
214
284
  textAlign = "center",
215
285
  appearance: { width, speed, textOverflow } = defaultAppearance,
216
286
  },
287
+ LabelWidth,
217
288
  }) => {
218
289
  if (!show) return null;
219
- const _label = formatter(label, config);
290
+ const _label = formatter(label, {
291
+ ...config,
292
+ format: { type: config.format, showType: config.showType },
293
+ });
220
294
  const { transform, directionX, directionY } = getLayout(orientation, rotate);
221
295
  const isVertical = orientation == "left" || orientation == "right";
222
296
 
@@ -226,7 +300,7 @@ const Label: (
226
300
  (isVertical ? coordinate : tickSize * directionY) + translateY * directionY;
227
301
 
228
302
  const _style = style && (typeof style == "object" ? style : style(_label));
229
-
303
+ //x轴显示
230
304
  return (
231
305
  <foreignObject
232
306
  width="100%"
@@ -249,23 +323,38 @@ const Label: (
249
323
  }px)`, // 用 transform 定位
250
324
  }}
251
325
  >
252
- <TextOverflow
253
- ShowType="normal"
254
- type={textOverflow}
255
- speed={speed}
256
- value={_label}
257
- style={{
258
- width,
259
- transform,
260
- textAlign,
261
- justifyContent:
262
- textAlign == "left"
263
- ? "flex-start"
264
- : textAlign == "right"
265
- ? "flex-end"
266
- : "center",
267
- }}
268
- ></TextOverflow>
326
+ {labelNum == "Fixed" ? (
327
+ <TextOverflow
328
+ ShowType="normal"
329
+ type={textOverflow}
330
+ speed={speed}
331
+ value={_label}
332
+ style={{
333
+ width,
334
+ transform,
335
+ textAlign,
336
+ justifyContent:
337
+ textAlign == "left"
338
+ ? "flex-start"
339
+ : textAlign == "right"
340
+ ? "flex-end"
341
+ : "center",
342
+ }}
343
+ ></TextOverflow>
344
+ ) : (
345
+ <span
346
+ style={{
347
+ width: LabelWidth,
348
+ transform,
349
+ justifyContent: "flex-start",
350
+ display: "block",
351
+ top: translateY,
352
+ left: translateX,
353
+ }}
354
+ >
355
+ {_label}
356
+ </span>
357
+ )}
269
358
  </div>
270
359
  </foreignObject>
271
360
  );
@@ -275,13 +364,15 @@ export default memo(
275
364
  forwardRef(
276
365
  (
277
366
  {
367
+ allTicks,
278
368
  orientation,
279
369
  scaler,
280
370
  tickSize = defaultTickSize,
281
- ticks,
371
+ ticks: tickss,
282
372
  formatter,
283
373
  rotate,
284
374
  triggerEvents,
375
+ config,
285
376
  config: { on, label, axisLine, tickLine, gridLine, unit },
286
377
  margin: { marginLeft, marginTop },
287
378
  positions,
@@ -296,15 +387,93 @@ export default memo(
296
387
  //控制图相关
297
388
  controlInfo,
298
389
  rawTicks,
390
+ paddingOuter,
299
391
  }: any,
300
392
  ref
301
393
  ) => {
302
- if (!(on && ticks.length > 0)) return null;
303
394
  const { width, height, isIOS } = useContext(chartContext);
395
+ let LabelWidth = 1;
396
+ if (label.labelNum == "Fixed") {
397
+ LabelWidth = label.appearance.width;
398
+ } else {
399
+ if (allTicks.length && typeof allTicks[0] == "string") {
400
+ LabelWidth = maxLabelFT(allTicks, label, formatter, label.font);
401
+ }
402
+ }
403
+ const LabelNum = Math.floor((width * (1 - paddingOuter)) / LabelWidth);
404
+ const ticks: any =
405
+ label.labelNum == "Fixed"
406
+ ? tickss
407
+ : getEvenlySpacedElements(
408
+ allTicks,
409
+ LabelNum < allTicks.length
410
+ ? LabelNum > allTicks.length / 2
411
+ ? Math.ceil(allTicks.length) / 2
412
+ : LabelNum
413
+ : allTicks.length,
414
+ label.showLast
415
+ );
416
+ if (!(on && ticks.length > 0)) return null;
417
+
304
418
  const { cHeight, isC, cPercent } = controlInfo;
305
419
  const x = orientation == "right" ? width : 0;
306
420
  const y = orientation == "bottom" ? height - cHeight : 0;
421
+ //数据抽取逻辑
422
+ function getEvenlySpacedElements(
423
+ arr: any[],
424
+ expectCount: number,
425
+ acc: boolean = false
426
+ ): any[] {
427
+ if (!arr.length || expectCount <= 0) return [];
428
+ if (expectCount >= arr.length) return [...arr];
429
+
430
+ // 如果只需要取1个,直接返回第一个
431
+ if (expectCount === 1) {
432
+ return [arr[0]];
433
+ }
434
+
435
+ if (acc) {
436
+ //严格均分逻辑
437
+ const result: any[] = [arr[0], arr[arr.length - 1]];
438
+ if (expectCount === 2) {
439
+ return result;
440
+ }
441
+ const needMiddleCount = expectCount - 2;
442
+ const availableMiddleLength = arr.length - 2;
307
443
 
444
+ if (
445
+ needMiddleCount > 0 &&
446
+ availableMiddleLength >= needMiddleCount &&
447
+ (availableMiddleLength + 1) % (needMiddleCount + 1) === 0
448
+ ) {
449
+ const step = (availableMiddleLength + 1) / (needMiddleCount + 1);
450
+ result.length = 0;
451
+ result.push(arr[0]);
452
+ for (let i = 1; i <= needMiddleCount; i++) {
453
+ const index = i * step;
454
+ result.push(arr[index]);
455
+ }
456
+
457
+ result.push(arr[arr.length - 1]);
458
+ }
459
+
460
+ return result;
461
+ } else {
462
+ const result: any[] = [];
463
+ const arrLen = arr.length;
464
+ const step = Math.max(1, Math.floor(arrLen / expectCount));
465
+
466
+ for (let i = 0; i < arrLen; i += step) {
467
+ result.push(arr[i]);
468
+ if (result.length >= expectCount) break;
469
+ }
470
+ if (expectCount === 2 && result.length >= 2) {
471
+ result[1] = arr[arr.length - 1];
472
+ }
473
+
474
+ return result;
475
+ }
476
+ }
308
477
  function drawAxisTickLine() {
309
478
  const draw = (ticks: any, scaler: any) => {
310
479
  return ticks.map((tick: string, index: number) => {
@@ -395,6 +564,7 @@ export default memo(
395
564
  formatter={formatter}
396
565
  rotate={rotate}
397
566
  events={triggerEvents}
567
+ LabelWidth={LabelWidth}
398
568
  />
399
569
  )}
400
570
  {gridLine && (
@@ -45,10 +45,16 @@ export default memo(
45
45
  selectStyle,
46
46
  bandLength = 0,
47
47
  data,
48
- xAxis: { scaler: normalScaler, step:normalStep, direction,controlStep,controlDragScaler },
48
+ xAxis: {
49
+ scaler: normalScaler,
50
+ step: normalStep,
51
+ direction,
52
+ controlStep,
53
+ controlDragScaler,
54
+ },
49
55
  yAxis: { scaler: yScaler, isClipAxis, clipValue },
50
56
  triggerEvents,
51
- isControlChart
57
+ isControlChart,
52
58
  }) => {
53
59
  const step = isControlChart ? controlStep : normalStep;
54
60
  const xScaler = isControlChart ? controlDragScaler : normalScaler;
@@ -120,7 +126,8 @@ export default memo(
120
126
  }
121
127
 
122
128
  // const y2 = yScaler(isVertical ? start : end);
123
- const positionX =xScaler(x)- step / 2+seriesStart+ index * seriesStep;
129
+ const positionX =
130
+ xScaler(x) - step / 2 + seriesStart + index * seriesStep;
124
131
 
125
132
  if (isNaN(positionX)) return null;
126
133
  const position = isXRepeat
@@ -79,10 +79,7 @@ export default ({ axes, series, data }) => {
79
79
  if (xAxis) {
80
80
  const {
81
81
  config: {
82
- label: {
83
- autoSort,
84
- format: { type },
85
- },
82
+ label: { autoSort, format: type },
86
83
  },
87
84
  } = xAxis;
88
85
  if (type == "date" && autoSort) {