@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.
- package/lib/components/Axis.js +27 -12
- package/lib/components/Band.js +42 -2
- package/lib/components/CartesianChart.js +254 -27
- package/lib/components/ChartContainer.js +3 -2
- package/lib/components/Control.js +81 -0
- package/lib/components/Indicator.js +66 -5
- package/lib/components/Label.js +41 -1
- package/lib/components/Marquee.js +1 -1
- package/lib/components/index.js +8 -0
- package/lib/hooks/useAxes.js +5 -1
- package/lib/hooks/useCarouselAxisX.js +24 -12
- package/lib/hooks/useTooltip.js +1 -1
- package/package.json +1 -1
- package/src/components/Axis.tsx +223 -183
- package/src/components/Band.tsx +40 -5
- package/src/components/CartesianChart.js +319 -43
- package/src/components/ChartContainer.tsx +15 -8
- package/src/components/Control.jsx +51 -0
- package/src/components/Indicator.js +58 -10
- package/src/components/Label.js +33 -0
- package/src/components/Marquee.tsx +1 -1
- package/src/components/index.js +2 -0
- package/src/hooks/useAxes.js +9 -2
- package/src/hooks/useCarouselAxisX.js +35 -18
- package/src/hooks/useTooltip.ts +18 -18
package/lib/components/Axis.js
CHANGED
|
@@ -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
|
|
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 ==
|
|
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(
|
|
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 &&
|
|
401
|
-
|
|
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;
|
package/lib/components/Band.js
CHANGED
|
@@ -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 ?
|
|
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) :
|
|
95
|
-
var axisX = (0, _hooks.useCarouselAxisX)(axes.get(
|
|
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 ===
|
|
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(
|
|
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
|
-
}))),
|
|
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)")
|
|
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
|
-
},
|
|
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
|
-
|
|
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
|
-
}))),
|
|
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
|
-
|
|
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:
|
|
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;
|