@easyv/charts 1.4.21 → 1.4.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/.babelrc +8 -8
  2. package/.husky/commit-msg +3 -3
  3. package/CHANGELOG.md +18 -18
  4. package/commitlint.config.js +1 -1
  5. package/lib/components/AnimateData.js +8 -16
  6. package/lib/components/Axis.js +106 -138
  7. package/lib/components/Background.js +18 -26
  8. package/lib/components/Band.js +105 -91
  9. package/lib/components/BaseLine.js +33 -46
  10. package/lib/components/Brush.js +29 -46
  11. package/lib/components/Carousel.js +13 -40
  12. package/lib/components/CartesianChart.js +292 -113
  13. package/lib/components/Chart.js +23 -36
  14. package/lib/components/ChartContainer.js +21 -29
  15. package/lib/components/ConicalGradient.js +56 -89
  16. package/lib/components/Control.js +65 -0
  17. package/lib/components/ExtentData.js +9 -17
  18. package/lib/components/FilterData.js +16 -27
  19. package/lib/components/Indicator.js +66 -12
  20. package/lib/components/Label.js +128 -118
  21. package/lib/components/Legend.js +41 -66
  22. package/lib/components/Lighter.js +21 -50
  23. package/lib/components/Line.js +39 -59
  24. package/lib/components/LinearGradient.js +16 -22
  25. package/lib/components/Mapping.js +9 -34
  26. package/lib/components/Marquee.js +14 -30
  27. package/lib/components/PieChart.js +312 -406
  28. package/lib/components/StackData.js +8 -18
  29. package/lib/components/StereoBar.js +65 -105
  30. package/lib/components/TextOverflow.js +8 -21
  31. package/lib/components/Tooltip.js +41 -55
  32. package/lib/components/index.js +7 -27
  33. package/lib/context/index.js +0 -2
  34. package/lib/css/index.module.css +42 -42
  35. package/lib/css/piechart.module.css +26 -26
  36. package/lib/element/ConicGradient.js +29 -35
  37. package/lib/element/Line.js +9 -13
  38. package/lib/element/index.js +0 -2
  39. package/lib/formatter/index.js +0 -2
  40. package/lib/formatter/legend.js +30 -41
  41. package/lib/hooks/index.js +0 -9
  42. package/lib/hooks/useAiData.js +12 -20
  43. package/lib/hooks/useAnimateData.js +8 -21
  44. package/lib/hooks/useAxes.js +69 -115
  45. package/lib/hooks/useCarouselAxisX.js +47 -68
  46. package/lib/hooks/useExtentData.js +14 -46
  47. package/lib/hooks/useFilterData.js +13 -34
  48. package/lib/hooks/useStackData.js +12 -35
  49. package/lib/hooks/useTooltip.js +37 -54
  50. package/lib/index.js +0 -15
  51. package/lib/utils/index.js +95 -247
  52. package/package.json +55 -55
  53. package/src/components/Axis.tsx +223 -183
  54. package/src/components/Background.tsx +61 -61
  55. package/src/components/Band.tsx +274 -239
  56. package/src/components/Brush.js +159 -159
  57. package/src/components/CartesianChart.js +320 -44
  58. package/src/components/Chart.js +99 -99
  59. package/src/components/ChartContainer.tsx +71 -64
  60. package/src/components/ConicalGradient.js +258 -258
  61. package/src/components/Control.jsx +51 -0
  62. package/src/components/ExtentData.js +17 -17
  63. package/src/components/Indicator.js +61 -13
  64. package/src/components/Label.js +275 -242
  65. package/src/components/Legend.js +165 -165
  66. package/src/components/Lighter.jsx +173 -173
  67. package/src/components/Line.js +150 -150
  68. package/src/components/LinearGradient.js +29 -29
  69. package/src/components/PieChart.js +8 -4
  70. package/src/components/StereoBar.tsx +307 -307
  71. package/src/components/index.js +57 -55
  72. package/src/context/index.js +2 -2
  73. package/src/css/index.module.css +42 -42
  74. package/src/css/piechart.module.css +26 -26
  75. package/src/element/ConicGradient.jsx +55 -55
  76. package/src/element/Line.tsx +33 -33
  77. package/src/element/index.ts +3 -3
  78. package/src/formatter/index.js +1 -1
  79. package/src/formatter/legend.js +92 -92
  80. package/src/hooks/index.js +20 -20
  81. package/src/hooks/useAnimateData.ts +67 -67
  82. package/src/hooks/useAxes.js +9 -2
  83. package/src/hooks/useCarouselAxisX.js +35 -18
  84. package/src/hooks/useFilterData.js +72 -72
  85. package/src/hooks/useStackData.js +101 -101
  86. package/src/hooks/useTooltip.ts +100 -100
  87. package/src/index.js +6 -6
  88. package/src/types/index.d.ts +67 -67
  89. package/src/utils/index.js +757 -757
  90. package/tsconfig.json +23 -23
@@ -0,0 +1,51 @@
1
+ import React, { forwardRef, memo, useRef } from "react";
2
+ import { scaleLinear } from "d3-scale";
3
+
4
+ export default memo(forwardRef((props, ref) => {
5
+ const { props: { control, axes, series, xLineRange, yLineRange, marginTop, axisX, bandLength } } = props;
6
+ const _axisX = { ...axisX, scaler: axisX.controlDragScaler }
7
+ return (
8
+ <>
9
+ <foreignObject
10
+ style={{
11
+ width: xLineRange,
12
+ height: control.height,
13
+ backgroundColor: control.color,
14
+ // padding: ` 0 ${control.margin.left}px 0 ${control.margin.right}px`,
15
+ transform: `translateY(${yLineRange + marginTop}px)`,
16
+ }}
17
+ >
18
+ <svg width="100%" height="100%">
19
+ {series.map(({ Component, yOrZ, ...config }, index) => {
20
+ const yAxis = axes.get(yOrZ);
21
+ const cloneYAxis = JSON.parse(JSON.stringify(yAxis));
22
+ //todo range
23
+ cloneYAxis.scaler = scaleLinear()
24
+ .domain(yAxis.domain)
25
+ .range([control.height, 0]);
26
+ return (
27
+ yAxis &&
28
+ Component && (
29
+ <Component
30
+ key={index}
31
+ {...config}
32
+ bandLength={bandLength}
33
+ xAxis={_axisX}
34
+ yAxis={cloneYAxis}
35
+ />
36
+ )
37
+ );
38
+ })}
39
+ {/* 控制条 */}
40
+ <rect
41
+ ref={ref}
42
+ height={control.height}
43
+ width={(xLineRange * control.drag.width) / 100}
44
+ fill={control.drag.color}
45
+ ></rect>
46
+ </svg>
47
+ </foreignObject>
48
+ </>
49
+ );
50
+ }))
51
+
@@ -1,17 +1,17 @@
1
- /**
2
- * 计算X/Y/Z轴的domain,具体的逻辑在useExtentData(HOC)
3
- */
4
- import { memo } from 'react';
5
- import { useExtentData } from '../hooks';
6
- export default (Component) =>
7
- memo(({ config: { axes, series, ...config }, data, ...props }) => (
8
- <Component
9
- {...props}
10
- config={{
11
- ...config,
12
- axes: useExtentData({ series, axes, data }),
13
- series,
14
- }}
15
- data={data}
16
- />
17
- ));
1
+ /**
2
+ * 计算X/Y/Z轴的domain,具体的逻辑在useExtentData(HOC)
3
+ */
4
+ import { memo } from 'react';
5
+ import { useExtentData } from '../hooks';
6
+ export default (Component) =>
7
+ memo(({ config: { axes, series, ...config }, data, ...props }) => (
8
+ <Component
9
+ {...props}
10
+ config={{
11
+ ...config,
12
+ axes: useExtentData({ series, axes, data }),
13
+ series,
14
+ }}
15
+ data={data}
16
+ />
17
+ ));
@@ -1,13 +1,61 @@
1
- /**
2
- * 轴类图表移上去的指示框背景
3
- */
4
- export default ({ color, height, width, x = 0, y = 0 }) => (
5
- <rect
6
- width={width}
7
- height={height}
8
- x={x}
9
- y={y}
10
- fill={color}
11
- stroke='none'
12
- />
13
- );
1
+ /**
2
+ * 轴类图表移上去的指示框背景
3
+ */
4
+ import { useState } from "react";
5
+ export default ({
6
+ color,
7
+ height,
8
+ width,
9
+ x = 0,
10
+ y = 0,
11
+ isControlChart = false,
12
+ xName = null,
13
+ setControlChartTooltipShow = null,
14
+ setControlChartTooltipXName = null,
15
+ setControlChartTooltipX = null,
16
+ setControlChartIndicatorList = null,
17
+ controlChartIndicatorList = null,
18
+ }) => {
19
+ let isShow = true;
20
+ if (isControlChart && controlChartIndicatorList) {
21
+ isShow = controlChartIndicatorList.find(
22
+ (item) => item.tick === xName
23
+ ).isShow;
24
+ }
25
+ return (
26
+ <rect
27
+ width={width}
28
+ height={height}
29
+ x={x}
30
+ onMouseEnter={() => {
31
+ if (isControlChart) {
32
+ setControlChartIndicatorList((v) => {
33
+ return v.map((item) => {
34
+ if (item.tick === xName) {
35
+ return { ...item, isShow: true };
36
+ } else {
37
+ return item;
38
+ }
39
+ });
40
+ });
41
+ setControlChartTooltipShow(true);
42
+ setControlChartTooltipXName(xName);
43
+ setControlChartTooltipX(x);
44
+ }
45
+ }}
46
+ onMouseLeave={() => {
47
+ if (isControlChart) {
48
+ setControlChartIndicatorList((v) =>
49
+ v.map((item) => ({ ...item, isShow: false }))
50
+ );
51
+ setControlChartTooltipShow(false);
52
+ setControlChartTooltipXName(undefined);
53
+ setControlChartTooltipX(undefined);
54
+ }
55
+ }}
56
+ fill={isShow ? color : "transparent"}
57
+ y={y}
58
+ stroke="none"
59
+ />
60
+ );
61
+ };