@easyv/charts 1.4.22 → 1.4.25

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.
@@ -246,7 +246,7 @@ var Label = function Label(_ref5) {
246
246
  })));
247
247
  };
248
248
 
249
- var _default = /*#__PURE__*/(0, _react.memo)(function (_ref6) {
249
+ var _default = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardRef)(function (_ref6, ref) {
250
250
  var orientation = _ref6.orientation,
251
251
  scaler = _ref6.scaler,
252
252
  _ref6$tickSize = _ref6.tickSize,
@@ -265,10 +265,16 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (_ref6) {
265
265
  config = _ref6.config,
266
266
  positions = _ref6.positions,
267
267
  xLineRange = _ref6.xLineRange,
268
+ range = _ref6.range,
269
+ axisType = _ref6.axisType,
268
270
  _ref6$isClipAxis = _ref6.isClipAxis,
269
271
  isClipAxis = _ref6$isClipAxis === void 0 ? false : _ref6$isClipAxis,
270
272
  yLineRange = _ref6.yLineRange,
271
- clipAxisRange = _ref6.clipAxisRange;
273
+ clipAxisRange = _ref6.clipAxisRange,
274
+ isControlChart = _ref6.isControlChart,
275
+ controlConfig = _ref6.controlConfig,
276
+ controlEnd = _ref6.controlEnd,
277
+ rawTicks = _ref6.rawTicks;
272
278
  if (!(on && ticks.length > 0)) return null;
273
279
 
274
280
  var _useContext = (0, _react.useContext)(_context.chartContext),
@@ -278,7 +284,7 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (_ref6) {
278
284
  var x = orientation == "right" ? width : 0;
279
285
  var y = orientation == "bottom" ? height : 0;
280
286
 
281
- function drawYAxisTickLine() {
287
+ function drawAxisTickLine() {
282
288
  var draw = function draw(ticks, scaler) {
283
289
  return ticks.map(function (tick, index) {
284
290
  var coordinate = scaler(tick);
@@ -325,11 +331,11 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (_ref6) {
325
331
  var gridCoord = (0, _utils.getGridCoord)({
326
332
  orientation: orientation,
327
333
  coordinate: coordinate,
328
- end: orientation == 'left' || orientation == 'right' ? width : height
334
+ end: orientation == "left" || orientation == "right" ? width : height
329
335
  });
330
336
  var x1 = gridCoord.x1;
331
337
  var y1 = gridCoord.y1;
332
- return !(orientation == "bottom" && (x1 < 0 || x1 > xLineRange) || y1 < 0 || y1 > yLineRange) && /*#__PURE__*/_react["default"].createElement("g", {
338
+ return (!(orientation == "bottom" && (x1 < 0 || x1 > xLineRange) || y1 < 0 || y1 > yLineRange) || isControlChart) && /*#__PURE__*/_react["default"].createElement("g", {
333
339
  key: index
334
340
  }, label && /*#__PURE__*/_react["default"].createElement(Label, {
335
341
  className: "__easyv-label",
@@ -352,13 +358,14 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (_ref6) {
352
358
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, ticks.map(function (ticks, index) {
353
359
  return draw(ticks, scaler[index]);
354
360
  }));
361
+ } else if (isControlChart && orientation == "bottom") {
362
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, draw(rawTicks, scaler));
355
363
  } else {
356
364
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, draw(ticks, scaler));
357
365
  }
358
366
  }
359
367
 
360
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, axisLine && tickLine && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, axisLine && ( // 依据positions来区分x轴y轴,有position为x轴
361
- positions && positions.length ? positions.map(function (_ref7, index) {
368
+ return /*#__PURE__*/_react["default"].createElement("g", null, axisLine && tickLine && /*#__PURE__*/_react["default"].createElement("g", null, axisLine && (positions && positions.length ? positions.map(function (_ref7, index) {
362
369
  var x = _ref7.x,
363
370
  y = _ref7.y;
364
371
  return /*#__PURE__*/_react["default"].createElement("g", {
@@ -366,7 +373,8 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (_ref6) {
366
373
  transform: "translate(" + x + ", " + y + ")"
367
374
  }, /*#__PURE__*/_react["default"].createElement(AxisLine, {
368
375
  orientation: orientation,
369
- config: axisLine
376
+ config: axisLine,
377
+ range: range
370
378
  }), tickLine && ticks.map(function (tick, index) {
371
379
  var coordinate = scaler(tick);
372
380
  if (isNaN(coordinate)) return null;
@@ -397,11 +405,18 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (_ref6) {
397
405
  config: axisLine,
398
406
  isClipAxis: isClipAxis,
399
407
  clipAxisRange: clipAxisRange
400
- }), tickLine && drawYAxisTickLine()))), /*#__PURE__*/_react["default"].createElement("g", {
401
- transform: 'translate(' + x + ', ' + y + ')'
408
+ }), tickLine && drawAxisTickLine()))), /*#__PURE__*/_react["default"].createElement("svg", {
409
+ width: width,
410
+ style: {
411
+ overflow: axisType !== "x" && isControlChart ? "visible" : "hidden"
412
+ }
413
+ }, /*#__PURE__*/_react["default"].createElement("g", {
414
+ transform: "translate(" + x + ", " + y + ")"
415
+ }, /*#__PURE__*/_react["default"].createElement("g", {
416
+ ref: ref
402
417
  }, label && gridLine && drawLabel(), unit && /*#__PURE__*/_react["default"].createElement(Unit, {
403
418
  config: unit
404
- })));
405
- });
419
+ })))));
420
+ }));
406
421
 
407
422
  exports["default"] = _default;
@@ -85,6 +85,13 @@ var getBorderRadius = function getBorderRadius(_ref2) {
85
85
 
86
86
  var _default = /*#__PURE__*/(0, _react.memo)(function (_ref3) {
87
87
  var triggerClick = _ref3.triggerClick,
88
+ indicatorWidth = _ref3.indicatorWidth,
89
+ setControlChartTooltipShow = _ref3.setControlChartTooltipShow,
90
+ setControlChartTooltipX = _ref3.setControlChartTooltipX,
91
+ setControlChartTooltipXName = _ref3.setControlChartTooltipXName,
92
+ _ref3$isControlChart = _ref3.isControlChart,
93
+ isControlChart = _ref3$isControlChart === void 0 ? false : _ref3$isControlChart,
94
+ setControlChartIndicatorList = _ref3.setControlChartIndicatorList,
88
95
  _ref3$config = _ref3.config,
89
96
  _ref3$config$pattern = _ref3$config.pattern,
90
97
  pattern = _ref3$config$pattern === void 0 ? {} : _ref3$config$pattern,
@@ -111,6 +118,7 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (_ref3) {
111
118
  xScaler = _ref3$xAxis.scaler,
112
119
  step = _ref3$xAxis.step,
113
120
  direction = _ref3$xAxis.direction,
121
+ xAxis = _ref3.xAxis,
114
122
  _ref3$yAxis = _ref3.yAxis,
115
123
  yScaler = _ref3$yAxis.scaler,
116
124
  isClipAxis = _ref3$yAxis.isClipAxis,
@@ -145,7 +153,6 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (_ref3) {
145
153
  y = _ref4$data.y,
146
154
  s = _ref4$data.s;
147
155
 
148
- //todo 柱状中空设置
149
156
  var y1, y2; //断轴图相关,断轴图的scaler是一个数组,内含上断轴下断轴的scaler
150
157
 
151
158
  if (isClipAxis) {
@@ -201,7 +208,40 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (_ref3) {
201
208
  cursor: "pointer"
202
209
  }
203
210
  }, attr, {
204
- onClick: triggerClick,
211
+ onClick: triggerClick //enter和leave事件,用于控制图的提示框
212
+ ,
213
+ onMouseEnter: function onMouseEnter() {
214
+ if (isControlChart) {
215
+ setControlChartIndicatorList(function (v) {
216
+ return v.map(function (item) {
217
+ if (item.tick === data.x) {
218
+ return _objectSpread(_objectSpread({}, item), {}, {
219
+ isShow: true
220
+ });
221
+ } else {
222
+ return item;
223
+ }
224
+ });
225
+ });
226
+ setControlChartTooltipShow(true);
227
+ setControlChartTooltipX(xScaler(x) - indicatorWidth / 2);
228
+ setControlChartTooltipXName(data.x);
229
+ }
230
+ },
231
+ onMouseLeave: function onMouseLeave() {
232
+ if (isControlChart) {
233
+ setControlChartIndicatorList(function (v) {
234
+ return v.map(function (item) {
235
+ return _objectSpread(_objectSpread({}, item), {}, {
236
+ isShow: false
237
+ });
238
+ });
239
+ });
240
+ setControlChartTooltipShow(false);
241
+ setControlChartTooltipXName(undefined);
242
+ setControlChartTooltipX(undefined);
243
+ }
244
+ },
205
245
  "data-data": JSON.stringify(data)
206
246
  }), headUrl && showHead && /*#__PURE__*/_react["default"].createElement("div", {
207
247
  style: {
@@ -9,12 +9,12 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports["default"] = void 0;
11
11
 
12
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
-
14
12
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
13
 
16
14
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
17
15
 
16
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
17
+
18
18
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
19
 
20
20
  var _react = _interopRequireWildcard(require("react"));
@@ -25,6 +25,8 @@ var _context = require("../context");
25
25
 
26
26
  var _ = require(".");
27
27
 
28
+ var _utils = require("../utils");
29
+
28
30
  var _excluded = ["Component", "yOrZ"],
29
31
  _excluded2 = ["Component", "yOrZ"];
30
32
 
@@ -52,7 +54,7 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
52
54
  tooltip = _ref$config.tooltip,
53
55
  _ref$config$baseLine = _ref$config.baseLine,
54
56
  _ref$config$baseLine$ = _ref$config$baseLine.orientation,
55
- baseLineOri = _ref$config$baseLine$ === void 0 ? '' : _ref$config$baseLine$,
57
+ baseLineOri = _ref$config$baseLine$ === void 0 ? "" : _ref$config$baseLine$,
56
58
  _ref$config$baseLine$2 = _ref$config$baseLine.config,
57
59
  baseLineConfig = _ref$config$baseLine$2 === void 0 ? {} : _ref$config$baseLine$2,
58
60
  _ref$config$baseLine$3 = _ref$config$baseLine.data,
@@ -68,6 +70,10 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
68
70
  _ref$config$tooltip$c3 = _ref$config$tooltip$c2.indicator,
69
71
  indicator = _ref$config$tooltip$c3 === void 0 ? {} : _ref$config$tooltip$c3,
70
72
  brush = _ref$config.brush,
73
+ _ref$config$isControl = _ref$config.isControlChart,
74
+ isControlChart = _ref$config$isControl === void 0 ? false : _ref$config$isControl,
75
+ _ref$config$control = _ref$config.control,
76
+ control = _ref$config$control === void 0 ? null : _ref$config$control,
71
77
  style = _ref.style,
72
78
  originData = _ref.originData,
73
79
  filterData = _ref.filterData,
@@ -89,10 +95,12 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
89
95
  var svg = (0, _react.useRef)();
90
96
  var axes = (0, _hooks.useAxes)({
91
97
  axes: axesConfig,
92
- context: context
98
+ context: context,
99
+ isControlChart: isControlChart,
100
+ control: control
93
101
  });
94
- var aiData = aiFormatter ? aiFormatter(originData, axes, series) : (0, _hooks.useAiData)(originData, axes, series);
95
- var axisX = (0, _hooks.useCarouselAxisX)(axes.get('x'), animation, isHover);
102
+ var aiData = aiFormatter ? aiFormatter(originData, axes, series) : useAiData(originData, axes, series);
103
+ var axisX = (0, _hooks.useCarouselAxisX)(axes.get("x"), animation, isHover, isControlChart, control);
96
104
  var xLineRange = width - marginLeft - marginRight;
97
105
  var yLineRange = height - marginTop - marginBottom;
98
106
  (0, _react.useEffect)(function () {
@@ -133,7 +141,7 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
133
141
  });
134
142
  }, [tickName, originData]);
135
143
  var showTooltip = !!(tooltipData && tooltipData.length && (auto || manual));
136
- var isVertical = axisX.direction === 'vertical';
144
+ var isVertical = axisX.direction === "vertical";
137
145
  var indicatorWidth = indicator.width * axisX.step / 100;
138
146
  var position = axisX.scaler(tickName) - indicatorWidth / 2;
139
147
  var indicatorAttr = isVertical ? {
@@ -152,8 +160,178 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
152
160
  var _data = JSON.parse(data);
153
161
 
154
162
  triggerOnRelative(_data);
155
- onEmit('click', _data);
163
+ onEmit("click", _data);
156
164
  }, [triggerOnRelative, onEmit]);
165
+ /**
166
+ * 控制图相关
167
+ */
168
+
169
+ var controlEl = (0, _react.useRef)();
170
+ var seriesEl = (0, _react.useRef)(null);
171
+ var axisElList = (0, _react.useRef)([]);
172
+ var curControlPercent = (0, _react.useRef)(0);
173
+ (0, _react.useEffect)(function () {
174
+ if (controlEl.current && isControlChart) {
175
+ var isDragging = false;
176
+ var movementX = 0;
177
+ var rawTranslateX = 0;
178
+ var percent = 0;
179
+ var controlWidth = xLineRange * control.drag.width / 100;
180
+
181
+ var range = function range(num) {
182
+ var _num = num;
183
+ var min = 0;
184
+ var max = xLineRange - controlWidth;
185
+ _num = Math.max(_num, min);
186
+ _num = Math.min(_num, max);
187
+ return _num;
188
+ };
189
+
190
+ var setControlTranslate = function setControlTranslate(x) {
191
+ var moveLen = range(x);
192
+ controlEl.current.style.transform = "translateX(".concat(moveLen, "px)"); //计算出当前位移的百分比
193
+
194
+ percent = moveLen / (xLineRange - controlWidth);
195
+ curControlPercent.current = percent;
196
+ seriesEl.current.style.transform = "translate(".concat(-(axisX.controlEnd - axisX.end) * percent, "px,").concat(marginTop, "px)");
197
+ axisElList.current[2].style.transform = "translate(".concat(-(axisX.controlEnd - axisX.end) * percent, "px,", 0, "px)");
198
+ };
199
+
200
+ var mouseDownHandle = function mouseDownHandle(e) {
201
+ var mouseMoveHandle = function mouseMoveHandle(e) {
202
+ //当前位移的距离
203
+ if (isDragging) {
204
+ movementX += e.movementX;
205
+ setControlTranslate(movementX + rawTranslateX);
206
+ }
207
+ };
208
+
209
+ var mouseUpHandle = function mouseUpHandle(e) {
210
+ rawTranslateX = range(movementX + rawTranslateX);
211
+ movementX = 0;
212
+ isDragging = false;
213
+ document.removeEventListener("mousemove", mouseMoveHandle);
214
+ document.removeEventListener("mouseup", mouseUpHandle);
215
+ };
216
+
217
+ document.addEventListener("mousemove", mouseMoveHandle);
218
+ document.addEventListener("mouseup", mouseUpHandle);
219
+ isDragging = true;
220
+ };
221
+
222
+ var animationHoverStop;
223
+
224
+ var setAnimationHoverStopTrue = function setAnimationHoverStopTrue() {
225
+ animationHoverStop = true;
226
+ };
227
+
228
+ var setAnimationHoverStopFalse = function setAnimationHoverStopFalse() {
229
+ animationHoverStop = false;
230
+ };
231
+
232
+ svg.current.addEventListener("mouseenter", setAnimationHoverStopTrue);
233
+ svg.current.addEventListener("mouseleave", setAnimationHoverStopFalse); //控制图轮播动画逻辑
234
+
235
+ var show = animation.show,
236
+ duration = animation.duration,
237
+ interval = animation.interval,
238
+ hover = animation.hover;
239
+ var times = Math.floor(xLineRange / controlWidth);
240
+ var animatePos = [];
241
+
242
+ for (var i = 0; i <= times; i++) {
243
+ if (i * controlWidth <= xLineRange) {
244
+ animatePos.push(i * controlWidth);
245
+ } else {
246
+ animatePos.push(xLineRange - controlWidth);
247
+ }
248
+ }
249
+
250
+ var index = 0;
251
+ var animationId;
252
+
253
+ if (animation.show) {
254
+ var initTime, timeGap;
255
+
256
+ var _animation = function _animation(timestamp) {
257
+ if (!initTime) {
258
+ initTime = timestamp;
259
+ }
260
+
261
+ if (animationHoverStop && hover) {
262
+ initTime = timestamp - timeGap;
263
+ }
264
+
265
+ timeGap = timestamp - initTime;
266
+
267
+ if (timeGap < (interval + duration) * 1000) {
268
+ if (timeGap < duration * 1000) {
269
+ var p = timeGap / (duration * 1000);
270
+ var nextIndex = index + 1;
271
+ var v;
272
+
273
+ if (nextIndex < animatePos.length) {
274
+ v = p * (animatePos[nextIndex] - animatePos[index]) + animatePos[index];
275
+ } else {
276
+ nextIndex = 0;
277
+ v = (1 - p) * animatePos[index];
278
+ }
279
+
280
+ setControlTranslate(v);
281
+ }
282
+
283
+ animationId = window.requestAnimationFrame(_animation);
284
+ } else {
285
+ index = index < times ? index + 1 : 0;
286
+ initTime = 0;
287
+ animationId = window.requestAnimationFrame(_animation);
288
+ }
289
+ };
290
+
291
+ animationId = window.requestAnimationFrame(_animation);
292
+ }
293
+
294
+ controlEl.current.addEventListener("mousedown", mouseDownHandle);
295
+ return function () {
296
+ controlEl.current.removeEventListener("mousedown", mouseDownHandle);
297
+ svg.current.removeEventListener("mouseenter", setAnimationHoverStopTrue);
298
+ svg.current.removeEventListener("mouseleave", setAnimationHoverStopFalse);
299
+ window.cancelAnimationFrame(animationId);
300
+ };
301
+ }
302
+ }, [JSON.stringify(animation), control]);
303
+
304
+ var _useState3 = (0, _react.useState)(false),
305
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
306
+ controlChartTooltipShow = _useState4[0],
307
+ setControlChartTooltipShow = _useState4[1];
308
+
309
+ var _useState5 = (0, _react.useState)(undefined),
310
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
311
+ controlChartTooltipXName = _useState6[0],
312
+ setControlChartTooltipXName = _useState6[1];
313
+
314
+ var _useState7 = (0, _react.useState)(undefined),
315
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
316
+ controlChartTooltipX = _useState8[0],
317
+ setControlChartTooltipX = _useState8[1];
318
+
319
+ var controlChartTooltipData = (0, _react.useMemo)(function () {
320
+ return controlChartTooltipXName !== undefined && originData.filter(function (d) {
321
+ return d.x === controlChartTooltipXName;
322
+ });
323
+ }, [controlChartTooltipXName, originData]);
324
+
325
+ var _useState9 = (0, _react.useState)(axisX.ticks.map(function (tick) {
326
+ return {
327
+ tick: tick,
328
+ isShow: false
329
+ };
330
+ })),
331
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
332
+ controlChartIndicatorList = _useState10[0],
333
+ setControlChartIndicatorList = _useState10[1];
334
+
157
335
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_.ChartContainer, {
158
336
  style: style,
159
337
  width: width,
@@ -163,7 +341,6 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
163
341
  onMouseEnter: function onMouseEnter() {
164
342
  setIsHover(true);
165
343
  },
166
- onMouseMove: setIndex,
167
344
  onMouseLeave: function onMouseLeave(e) {
168
345
  setIsHover(false);
169
346
  setIndex(e);
@@ -182,7 +359,33 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
182
359
  axis: axisX,
183
360
  config: background,
184
361
  bandLength: bandLength
185
- }))), showTooltip && /*#__PURE__*/_react["default"].createElement(_.Indicator, (0, _extends2["default"])({}, indicator, indicatorAttr)), /*#__PURE__*/_react["default"].createElement("foreignObject", {
362
+ }))), (0, _toConsumableArray2["default"])(axes.values()).reverse().map(function (item, index) {
363
+ var config = item.axisType == "x" ? axisX : item;
364
+ return /*#__PURE__*/_react["default"].createElement(_.Axis, (0, _extends2["default"])({
365
+ ref: function ref(d) {
366
+ axisElList.current[index] = d;
367
+ },
368
+ triggerClick: onInteraction,
369
+ xLineRange: xLineRange,
370
+ yLineRange: yLineRange,
371
+ isControlChart: isControlChart,
372
+ controlConfig: control
373
+ }, config, {
374
+ key: index
375
+ }));
376
+ }), isControlChart && control && /*#__PURE__*/_react["default"].createElement(_.Control, {
377
+ ref: controlEl,
378
+ props: {
379
+ control: control,
380
+ axes: axes,
381
+ series: series,
382
+ xLineRange: xLineRange,
383
+ yLineRange: yLineRange,
384
+ marginTop: marginTop,
385
+ axisX: axisX,
386
+ bandLength: bandLength
387
+ }
388
+ }), showTooltip && !isControlChart && /*#__PURE__*/_react["default"].createElement(_.Indicator, (0, _extends2["default"])({}, indicator, indicatorAttr)), /*#__PURE__*/_react["default"].createElement("foreignObject", {
186
389
  style: isVertical ? {
187
390
  width: xLineRange + marginRight + marginLeft,
188
391
  height: yLineRange,
@@ -190,18 +393,33 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
190
393
  } : {
191
394
  width: xLineRange,
192
395
  height: yLineRange + marginTop + marginBottom,
193
- transform: "translateY(".concat(-marginTop, "px)") // overflow:'visible'
194
- // paddingTop:marginTop
195
-
396
+ transform: "translateY(".concat(-marginTop, "px)")
196
397
  }
197
398
  }, /*#__PURE__*/_react["default"].createElement("svg", {
198
399
  width: "100%",
199
400
  height: "100%",
401
+ ref: seriesEl,
200
402
  style: {
201
403
  overflow: "visible",
202
404
  transform: isVertical ? "translateX(".concat(marginRight, "px)") : "translateY(".concat(marginTop, "px)")
203
405
  }
204
- }, series.map(function (_ref2, index) {
406
+ }, /*#__PURE__*/_react["default"].createElement("g", null, isControlChart && controlChartIndicatorList.map(function (item, index) {
407
+ var x = axisX.scaler(item.tick);
408
+ return /*#__PURE__*/_react["default"].createElement(_.Indicator, (0, _extends2["default"])({
409
+ key: index
410
+ }, indicator, {
411
+ height: chartHeight,
412
+ width: indicatorWidth,
413
+ x: x - indicatorWidth / 2,
414
+ isControlChart: isControlChart,
415
+ xName: item.tick,
416
+ setControlChartTooltipXName: setControlChartTooltipXName,
417
+ setControlChartTooltipX: setControlChartTooltipX,
418
+ setControlChartTooltipShow: setControlChartTooltipShow,
419
+ controlChartIndicatorList: controlChartIndicatorList,
420
+ setControlChartIndicatorList: setControlChartIndicatorList
421
+ }));
422
+ })), series.map(function (_ref2, index) {
205
423
  var Component = _ref2.Component,
206
424
  yOrZ = _ref2.yOrZ,
207
425
  config = (0, _objectWithoutProperties2["default"])(_ref2, _excluded);
@@ -211,8 +429,15 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
211
429
  }, config, {
212
430
  bandLength: bandLength,
213
431
  xAxis: axisX,
214
- yAxis: yAxis,
215
- triggerClick: onInteraction
432
+ yAxis: yAxis // 控制图部分,主要是为了,当鼠标悬浮在指示器上时,显示对应的tooltip
433
+ ,
434
+ isControlChart: isControlChart,
435
+ setControlChartTooltipXName: setControlChartTooltipXName,
436
+ setControlChartTooltipX: setControlChartTooltipX,
437
+ setControlChartTooltipShow: setControlChartTooltipShow,
438
+ indicatorWidth: indicatorWidth,
439
+ triggerClick: onInteraction,
440
+ setControlChartIndicatorList: setControlChartIndicatorList
216
441
  }));
217
442
  }), series.map(function (_ref3, index) {
218
443
  var Component = _ref3.Component,
@@ -227,16 +452,7 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
227
452
  yAxis: yAxis,
228
453
  triggerClick: onInteraction
229
454
  }));
230
- }))), (0, _toConsumableArray2["default"])(axes.values()).reverse().map(function (item, index) {
231
- var config = item.axisType == 'x' ? axisX : item;
232
- return /*#__PURE__*/_react["default"].createElement(_.Axis, (0, _extends2["default"])({
233
- triggerClick: onInteraction,
234
- xLineRange: xLineRange,
235
- yLineRange: yLineRange
236
- }, config, {
237
- key: index
238
- }));
239
- }), baseLineData && baseLineData.length > 0 && baseLineData.map(function (item, index) {
455
+ }))), baseLineData && baseLineData.length > 0 && baseLineData.map(function (item, index) {
240
456
  var yOrZ = baseLineConfig[index].line.yOrZ;
241
457
  var yAxis = axes.get(yOrZ);
242
458
  return yAxis && /*#__PURE__*/_react["default"].createElement(_.BaseLine, {
@@ -253,7 +469,7 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
253
469
  })), /*#__PURE__*/_react["default"].createElement(_.Legend, (0, _extends2["default"])({}, legend, {
254
470
  filterData: filterData,
255
471
  series: series
256
- })), showTooltip && /*#__PURE__*/_react["default"].createElement(_.Tooltip, (0, _extends2["default"])({
472
+ })), showTooltip && !isControlChart && /*#__PURE__*/_react["default"].createElement(_.Tooltip, (0, _extends2["default"])({
257
473
  isVertical: isVertical
258
474
  }, tooltip, {
259
475
  data: tooltipData,
@@ -264,6 +480,17 @@ var Chart = /*#__PURE__*/(0, _react.memo)(function (_ref) {
264
480
  series: series,
265
481
  width: width,
266
482
  height: height
483
+ })), controlChartTooltipShow && isControlChart && /*#__PURE__*/_react["default"].createElement(_.Tooltip, (0, _extends2["default"])({
484
+ isVertical: isVertical
485
+ }, tooltip, {
486
+ data: controlChartTooltipData,
487
+ x: controlChartTooltipX - (axisX.controlEnd - axisX.end) * curControlPercent.current,
488
+ marginLeft: marginLeft,
489
+ marginTop: marginTop,
490
+ tickName: controlChartTooltipXName,
491
+ series: series,
492
+ width: width,
493
+ height: height
267
494
  })), brush && /*#__PURE__*/_react["default"].createElement(_.Brush, {
268
495
  config: brush,
269
496
  width: width
@@ -51,12 +51,13 @@ var _default = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardRef
51
51
  onMouseMove: onMouseMove,
52
52
  ref: ref,
53
53
  style: _objectSpread({
54
- position: 'absolute',
54
+ overflow: "visible",
55
+ position: "absolute",
55
56
  width: width,
56
57
  height: height
57
58
  }, style)
58
59
  }, /*#__PURE__*/_react["default"].createElement("g", {
59
- transform: 'translate(' + marginLeft + ', ' + marginTop + ')'
60
+ transform: "translate(" + marginLeft + ", " + marginTop + ")"
60
61
  }, children));
61
62
  }));
62
63
 
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
+
16
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _d3Scale = require("d3-scale");
21
+
22
+ var _excluded = ["Component", "yOrZ"];
23
+
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+
28
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
29
+
30
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
31
+
32
+ var _default = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
33
+ var _props$props = props.props,
34
+ control = _props$props.control,
35
+ axes = _props$props.axes,
36
+ series = _props$props.series,
37
+ xLineRange = _props$props.xLineRange,
38
+ yLineRange = _props$props.yLineRange,
39
+ marginTop = _props$props.marginTop,
40
+ axisX = _props$props.axisX,
41
+ bandLength = _props$props.bandLength;
42
+
43
+ var _axisX = _objectSpread(_objectSpread({}, axisX), {}, {
44
+ scaler: axisX.controlDragScaler
45
+ });
46
+
47
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("foreignObject", {
48
+ style: {
49
+ width: xLineRange,
50
+ height: control.height,
51
+ backgroundColor: control.color,
52
+ // padding: ` 0 ${control.margin.left}px 0 ${control.margin.right}px`,
53
+ transform: "translateY(".concat(yLineRange + marginTop, "px)")
54
+ }
55
+ }, /*#__PURE__*/_react["default"].createElement("svg", {
56
+ width: "100%",
57
+ height: "100%"
58
+ }, series.map(function (_ref, index) {
59
+ var Component = _ref.Component,
60
+ yOrZ = _ref.yOrZ,
61
+ config = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
62
+ var yAxis = axes.get(yOrZ);
63
+ var cloneYAxis = JSON.parse(JSON.stringify(yAxis)); //todo range
64
+
65
+ cloneYAxis.scaler = (0, _d3Scale.scaleLinear)().domain(yAxis.domain).range([control.height, 0]);
66
+ return yAxis && Component && /*#__PURE__*/_react["default"].createElement(Component, (0, _extends2["default"])({
67
+ key: index
68
+ }, config, {
69
+ bandLength: bandLength,
70
+ xAxis: _axisX,
71
+ yAxis: cloneYAxis
72
+ }));
73
+ }), /*#__PURE__*/_react["default"].createElement("rect", {
74
+ ref: ref,
75
+ height: control.height,
76
+ width: xLineRange * control.drag.width / 100,
77
+ fill: control.drag.color
78
+ }))));
79
+ }));
80
+
81
+ exports["default"] = _default;