@easyv/charts 1.4.25 → 1.4.28

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 (91) 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 +86 -133
  7. package/lib/components/Background.js +18 -26
  8. package/lib/components/Band.js +72 -98
  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 +98 -146
  13. package/lib/components/Chart.js +23 -36
  14. package/lib/components/ChartContainer.js +18 -27
  15. package/lib/components/ConicalGradient.js +56 -89
  16. package/lib/components/Control.js +12 -28
  17. package/lib/components/ExtentData.js +9 -17
  18. package/lib/components/FilterData.js +16 -27
  19. package/lib/components/Indicator.js +23 -30
  20. package/lib/components/Label.js +96 -126
  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 +468 -489
  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 -28
  33. package/lib/components/pieTooltip.js +133 -0
  34. package/lib/context/index.js +0 -2
  35. package/lib/css/index.module.css +42 -42
  36. package/lib/css/piechart.module.css +26 -26
  37. package/lib/element/ConicGradient.js +29 -35
  38. package/lib/element/Line.js +9 -13
  39. package/lib/element/index.js +0 -2
  40. package/lib/formatter/index.js +0 -2
  41. package/lib/formatter/legend.js +30 -41
  42. package/lib/hooks/index.js +0 -9
  43. package/lib/hooks/useAiData.js +12 -20
  44. package/lib/hooks/useAnimateData.js +8 -21
  45. package/lib/hooks/useAxes.js +67 -117
  46. package/lib/hooks/useCarouselAxisX.js +27 -60
  47. package/lib/hooks/useExtentData.js +14 -46
  48. package/lib/hooks/useFilterData.js +13 -34
  49. package/lib/hooks/useStackData.js +12 -35
  50. package/lib/hooks/useTooltip.js +36 -53
  51. package/lib/index.js +0 -15
  52. package/lib/utils/index.js +95 -247
  53. package/package.json +55 -55
  54. package/src/components/Background.tsx +61 -61
  55. package/src/components/Band.tsx +274 -274
  56. package/src/components/Brush.js +159 -159
  57. package/src/components/CartesianChart.js +1 -1
  58. package/src/components/Chart.js +99 -99
  59. package/src/components/ChartContainer.tsx +71 -71
  60. package/src/components/ConicalGradient.js +258 -258
  61. package/src/components/Control.jsx +51 -51
  62. package/src/components/ExtentData.js +17 -17
  63. package/src/components/Indicator.js +61 -61
  64. package/src/components/Label.js +275 -275
  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/Marquee.tsx +1 -1
  70. package/src/components/PieChart.js +404 -260
  71. package/src/components/PieTooltip.jsx +134 -0
  72. package/src/components/StereoBar.tsx +307 -307
  73. package/src/components/index.js +59 -57
  74. package/src/context/index.js +2 -2
  75. package/src/css/index.module.css +42 -42
  76. package/src/css/piechart.module.css +26 -26
  77. package/src/element/ConicGradient.jsx +55 -55
  78. package/src/element/Line.tsx +33 -33
  79. package/src/element/index.ts +3 -3
  80. package/src/formatter/index.js +1 -1
  81. package/src/formatter/legend.js +92 -92
  82. package/src/hooks/index.js +20 -20
  83. package/src/hooks/useAnimateData.ts +67 -67
  84. package/src/hooks/useCarouselAxisX.js +1 -1
  85. package/src/hooks/useFilterData.js +72 -72
  86. package/src/hooks/useStackData.js +101 -101
  87. package/src/hooks/useTooltip.ts +100 -100
  88. package/src/index.js +6 -6
  89. package/src/types/index.d.ts +67 -67
  90. package/src/utils/index.js +757 -757
  91. package/tsconfig.json +23 -23
@@ -1,150 +1,150 @@
1
- /**
2
- * 折线图
3
- */
4
- import React, { memo, useMemo } from 'react';
5
- import { line as d3Line, area as d3Area, curveCatmullRom, curveMonotoneX } from 'd3v7';
6
- import { getColorList } from '../utils';
7
- import { Lighter, LinearGradient } from '.';
8
-
9
- const defined = (d) => d.data.y != null;
10
- const getLineData = (data, connectNulls) =>
11
- connectNulls
12
- ? data.map(({ data, ...item }) => ({
13
- ...item,
14
- data: { ...data, y: +data.y },
15
- }))
16
- : data;
17
-
18
- const Area = ({
19
- data,
20
- config,
21
- config: {
22
- id,
23
- fill,
24
- type,
25
- url,
26
- opacity,
27
- size: { width: patternW, height: patternH },
28
- curve,
29
- tension
30
- },
31
- xScaler,
32
- yScaler,
33
- }) => {
34
- const [height] = yScaler.range();
35
- const area = useMemo(() => getColorList(fill), [fill]);
36
-
37
- const areaGen = useMemo(() => {
38
- const areaGen = d3Area()
39
- .x(({ data: { x } }) => xScaler(x))
40
- .y1(({ data: { y } }) => yScaler(y))
41
- // .y0(height)
42
- .y0(({})=>yScaler(0))
43
- .defined(defined);
44
- curve && areaGen.curve(curveCatmullRom.alpha(tension));
45
- curve && areaGen.curve(curveMonotoneX);
46
- return areaGen;
47
- }, [xScaler, yScaler, curve, tension]);
48
-
49
- return (
50
- <>
51
- <path d={areaGen(data)} stroke='none' fill={'url(#' + id + ')'} />
52
- <defs>
53
- {type && type == 'pattern' ? (
54
- <pattern id={id} patternUnits="userSpaceOnUse" width={patternW} height={patternH}>
55
- {url && <image opacity={opacity} width={patternW} height={patternH} xlinkHref={window.appConfig.ASSETS_URL + url} />}
56
- </pattern>
57
- ) : (
58
- <LinearGradient id={id} colors={area} rotate={0} />
59
- )}
60
- </defs>
61
- </>
62
- );
63
- };
64
-
65
- export default memo(
66
- ({
67
- type,
68
- config: {
69
- line: {
70
- type: lineType,
71
- lineWidth,
72
- curve,
73
- tension,
74
- connectNulls,
75
- lineShadow,
76
- lighter,
77
- },
78
- // icon,
79
- // label,
80
- },
81
- line: { id: lineId, stroke },
82
- area,
83
- data,
84
- xAxis: { scaler: xScaler, direction },
85
- yAxis: { scaler: yScaler },
86
- }) => {
87
- if (!data.length) return null;
88
- const ticks = xScaler.domain();
89
-
90
- const sortData = useMemo(() => {
91
- const usefulData = data.filter(
92
- ({ data: { x } }) => ticks.indexOf(x) > -1
93
- );
94
- return usefulData.sort(
95
- ({ data: { x: a } }, { data: { x: b } }) =>
96
- ticks.indexOf(a) - ticks.indexOf(b)
97
- );
98
- }, [data, ticks]);
99
-
100
- const _data = useMemo(
101
- () => getLineData(sortData, connectNulls),
102
- [sortData, connectNulls]
103
- );
104
-
105
- const lineGen = useMemo(() => {
106
- const isVertical = direction === 'vertical';
107
-
108
- let lineGen = (
109
- isVertical
110
- ? d3Line()
111
- .y(({ data: { x } }) => xScaler(x))
112
- .x(({ data: { y } }) => yScaler(y))
113
- : d3Line()
114
- .x(({ data: { x } }) => xScaler(x))
115
- .y(({ data: { y } }) => yScaler(y))
116
- ).defined(defined);
117
- curve && lineGen.curve(curveCatmullRom.alpha(tension));
118
- curve && lineGen.curve(curveMonotoneX);
119
- return lineGen;
120
- }, [direction, xScaler, yScaler, tension, curve]);
121
-
122
- const path = lineGen(_data);
123
- const showLighter = lighter && lighter.show;
124
- const show = lineShadow && lineShadow.show;
125
- const shadow = lineShadow && lineShadow.shadow;
126
- return (
127
- <g className='__easyv-line'>
128
- <path
129
- d={path}
130
- stroke={stroke}
131
- style={{
132
- filter:show?`drop-shadow(${shadow.hShadow}px ${shadow.vShadow}px ${shadow.blur}px ${shadow.color})`:"none"
133
- }}
134
- fill='none'
135
- strokeDasharray={lineType === 'dash' ? '3 3' : null}
136
- strokeWidth={lineWidth}
137
- />
138
- {type == 'area' && (
139
- <Area
140
- data={_data}
141
- config={{ ...area, curve, tension }}
142
- xScaler={xScaler}
143
- yScaler={yScaler}
144
- />
145
- )}
146
- {showLighter && <Lighter path={path} config={lighter} />}
147
- </g>
148
- );
149
- }
150
- );
1
+ /**
2
+ * 折线图
3
+ */
4
+ import React, { memo, useMemo } from 'react';
5
+ import { line as d3Line, area as d3Area, curveCatmullRom, curveMonotoneX } from 'd3v7';
6
+ import { getColorList } from '../utils';
7
+ import { Lighter, LinearGradient } from '.';
8
+
9
+ const defined = (d) => d.data.y != null;
10
+ const getLineData = (data, connectNulls) =>
11
+ connectNulls
12
+ ? data.map(({ data, ...item }) => ({
13
+ ...item,
14
+ data: { ...data, y: +data.y },
15
+ }))
16
+ : data;
17
+
18
+ const Area = ({
19
+ data,
20
+ config,
21
+ config: {
22
+ id,
23
+ fill,
24
+ type,
25
+ url,
26
+ opacity,
27
+ size: { width: patternW, height: patternH },
28
+ curve,
29
+ tension
30
+ },
31
+ xScaler,
32
+ yScaler,
33
+ }) => {
34
+ const [height] = yScaler.range();
35
+ const area = useMemo(() => getColorList(fill), [fill]);
36
+
37
+ const areaGen = useMemo(() => {
38
+ const areaGen = d3Area()
39
+ .x(({ data: { x } }) => xScaler(x))
40
+ .y1(({ data: { y } }) => yScaler(y))
41
+ // .y0(height)
42
+ .y0(({})=>yScaler(0))
43
+ .defined(defined);
44
+ curve && areaGen.curve(curveCatmullRom.alpha(tension));
45
+ curve && areaGen.curve(curveMonotoneX);
46
+ return areaGen;
47
+ }, [xScaler, yScaler, curve, tension]);
48
+
49
+ return (
50
+ <>
51
+ <path d={areaGen(data)} stroke='none' fill={'url(#' + id + ')'} />
52
+ <defs>
53
+ {type && type == 'pattern' ? (
54
+ <pattern id={id} patternUnits="userSpaceOnUse" width={patternW} height={patternH}>
55
+ {url && <image opacity={opacity} width={patternW} height={patternH} xlinkHref={window.appConfig.ASSETS_URL + url} />}
56
+ </pattern>
57
+ ) : (
58
+ <LinearGradient id={id} colors={area} rotate={0} />
59
+ )}
60
+ </defs>
61
+ </>
62
+ );
63
+ };
64
+
65
+ export default memo(
66
+ ({
67
+ type,
68
+ config: {
69
+ line: {
70
+ type: lineType,
71
+ lineWidth,
72
+ curve,
73
+ tension,
74
+ connectNulls,
75
+ lineShadow,
76
+ lighter,
77
+ },
78
+ // icon,
79
+ // label,
80
+ },
81
+ line: { id: lineId, stroke },
82
+ area,
83
+ data,
84
+ xAxis: { scaler: xScaler, direction },
85
+ yAxis: { scaler: yScaler },
86
+ }) => {
87
+ if (!data.length) return null;
88
+ const ticks = xScaler.domain();
89
+
90
+ const sortData = useMemo(() => {
91
+ const usefulData = data.filter(
92
+ ({ data: { x } }) => ticks.indexOf(x) > -1
93
+ );
94
+ return usefulData.sort(
95
+ ({ data: { x: a } }, { data: { x: b } }) =>
96
+ ticks.indexOf(a) - ticks.indexOf(b)
97
+ );
98
+ }, [data, ticks]);
99
+
100
+ const _data = useMemo(
101
+ () => getLineData(sortData, connectNulls),
102
+ [sortData, connectNulls]
103
+ );
104
+
105
+ const lineGen = useMemo(() => {
106
+ const isVertical = direction === 'vertical';
107
+
108
+ let lineGen = (
109
+ isVertical
110
+ ? d3Line()
111
+ .y(({ data: { x } }) => xScaler(x))
112
+ .x(({ data: { y } }) => yScaler(y))
113
+ : d3Line()
114
+ .x(({ data: { x } }) => xScaler(x))
115
+ .y(({ data: { y } }) => yScaler(y))
116
+ ).defined(defined);
117
+ curve && lineGen.curve(curveCatmullRom.alpha(tension));
118
+ curve && lineGen.curve(curveMonotoneX);
119
+ return lineGen;
120
+ }, [direction, xScaler, yScaler, tension, curve]);
121
+
122
+ const path = lineGen(_data);
123
+ const showLighter = lighter && lighter.show;
124
+ const show = lineShadow && lineShadow.show;
125
+ const shadow = lineShadow && lineShadow.shadow;
126
+ return (
127
+ <g className='__easyv-line'>
128
+ <path
129
+ d={path}
130
+ stroke={stroke}
131
+ style={{
132
+ filter:show?`drop-shadow(${shadow.hShadow}px ${shadow.vShadow}px ${shadow.blur}px ${shadow.color})`:"none"
133
+ }}
134
+ fill='none'
135
+ strokeDasharray={lineType === 'dash' ? '3 3' : null}
136
+ strokeWidth={lineWidth}
137
+ />
138
+ {type == 'area' && (
139
+ <Area
140
+ data={_data}
141
+ config={{ ...area, curve, tension }}
142
+ xScaler={xScaler}
143
+ yScaler={yScaler}
144
+ />
145
+ )}
146
+ {showLighter && <Lighter path={path} config={lighter} />}
147
+ </g>
148
+ );
149
+ }
150
+ );
@@ -1,29 +1,29 @@
1
- /**
2
- * svg渐变滤镜
3
- */
4
- export default ({
5
- id,
6
- colors,
7
- rotate = 0,
8
- gradientUnits,
9
- position: [x1, y1, x2, y2] = [0, 0, 0, 1],
10
- }) => (
11
- <linearGradient
12
- x1={x1}
13
- y1={y1}
14
- x2={x2}
15
- y2={y2}
16
- id={id}
17
- gradientUnits={gradientUnits}
18
- gradientTransform={'rotate(' + rotate + ', .5, .5)'}
19
- >
20
- {colors.map(({ offset, color, stopOpacity = 1 }, index) => (
21
- <stop
22
- key={index}
23
- offset={offset}
24
- stopColor={color}
25
- stopOpacity={stopOpacity}
26
- />
27
- ))}
28
- </linearGradient>
29
- );
1
+ /**
2
+ * svg渐变滤镜
3
+ */
4
+ export default ({
5
+ id,
6
+ colors,
7
+ rotate = 0,
8
+ gradientUnits,
9
+ position: [x1, y1, x2, y2] = [0, 0, 0, 1],
10
+ }) => (
11
+ <linearGradient
12
+ x1={x1}
13
+ y1={y1}
14
+ x2={x2}
15
+ y2={y2}
16
+ id={id}
17
+ gradientUnits={gradientUnits}
18
+ gradientTransform={'rotate(' + rotate + ', .5, .5)'}
19
+ >
20
+ {colors.map(({ offset, color, stopOpacity = 1 }, index) => (
21
+ <stop
22
+ key={index}
23
+ offset={offset}
24
+ stopColor={color}
25
+ stopOpacity={stopOpacity}
26
+ />
27
+ ))}
28
+ </linearGradient>
29
+ );
@@ -16,7 +16,7 @@ export default memo(forwardRef((props:marquee, ref:any) => {
16
16
  style, // 样式
17
17
  speed = 5, // 动画速度
18
18
  } = props;
19
-
19
+
20
20
  const rootRef = ref || useRef();
21
21
  const target = useRef<any>(null);
22
22
  const observe = useRef<any>(null);