@@ -12,11 +12,17 @@ import {
12
12
defaultCrosshair ,
13
13
defaultPoint ,
14
14
defaultSelectModeCrosshair ,
15
- defaultTooltip ,
16
15
defaultXAxes ,
17
16
defaultYAxes ,
18
17
} from './config' ;
19
- import { getMarkLineItem , getMarkLineLabel , getMarkPoint , getReferenceSerie } from './utils' ;
18
+ import {
19
+ getDefaultTooltip ,
20
+ getMarkLineItem ,
21
+ getMarkLineLabel ,
22
+ getMarkPoint ,
23
+ getReferenceData ,
24
+ getReferenceSerie ,
25
+ } from './utils' ;
20
26
21
27
export type {
22
28
TrendAreaProps ,
@@ -31,7 +37,7 @@ export function TrendArea(props: TrendAreaProps) {
31
37
yField = 'value' ,
32
38
xAxes,
33
39
yAxes,
34
- hideReference = true ,
40
+ showReference = false ,
35
41
referenceSerie,
36
42
selectTime,
37
43
daytime = defaultDaytime ,
@@ -50,14 +56,45 @@ export function TrendArea(props: TrendAreaProps) {
50
56
const referenceColor = color . find ( item => item . isReference ) ?. color || colorGrey04 ;
51
57
const xAxesData = merge ( defaultXAxes , xAxes ) ;
52
58
const yAxesData = merge ( defaultYAxes , yAxes ) ;
53
- const referenceSeries = merge (
54
- getReferenceSerie ( {
59
+ const tooltipProps = merge (
60
+ getDefaultTooltip ( {
55
61
xField,
56
62
yField,
57
63
} ) ,
58
- referenceSerie ,
64
+ tooltip ,
65
+ ) ;
66
+
67
+ const referenceSeries = useMemo < IMarkAreaSpec [ ] > (
68
+ ( ) => {
69
+ if ( ! data || ! data . length || ! showReference ) {
70
+ return [ ] ;
71
+ }
72
+
73
+ const referenceData = getReferenceData ( {
74
+ data,
75
+ xField,
76
+ yField,
77
+ } ) ;
78
+
79
+ if ( referenceData . length === 0 ) {
80
+ return [ ] ;
81
+ }
82
+
83
+ const defaultReferenceSerie = getReferenceSerie ( {
84
+ xField,
85
+ yField,
86
+ } ) ;
87
+
88
+ return [
89
+ merge ( defaultReferenceSerie , referenceSerie , {
90
+ data : {
91
+ values : referenceData ,
92
+ } ,
93
+ } ) ,
94
+ ] ;
95
+ } ,
96
+ [ xField , yField , referenceSerie , data , showReference ] ,
59
97
) ;
60
- const tooltipProps = merge ( { } , defaultTooltip , tooltip ) ;
61
98
62
99
const { dataList, series, colors } = useMemo (
63
100
( ) => {
@@ -177,11 +214,11 @@ export function TrendArea(props: TrendAreaProps) {
177
214
if ( isNotNil ( selectVal ) ) {
178
215
markLine . push (
179
216
getMarkLineItem ( {
180
- x : selectVal . date ,
217
+ x : selectVal [ xField ] ,
181
218
label : firstSelect ? getMarkLineLabel ( ) : undefined ,
182
219
} ) ,
183
220
getMarkLineItem ( {
184
- x : selectVal . date ,
221
+ x : selectVal [ xField ] ,
185
222
line : {
186
223
style : {
187
224
stroke : colorBlue06 ,
@@ -192,13 +229,13 @@ export function TrendArea(props: TrendAreaProps) {
192
229
} ) ,
193
230
) ;
194
231
195
- const isNotNight = selectVal . date >= daytime [ 0 ] && selectVal . date <= daytime [ 1 ] ;
232
+ const isNotNight = selectVal [ xField ] >= daytime [ 0 ] && selectVal [ xField ] <= daytime [ 1 ] ;
196
233
const notNightColor = color . find ( item => item . isNight === false && item . disabled === false ) ?. color || colorGreen2 ;
197
234
198
235
markPoint . push (
199
236
getMarkPoint ( {
200
- x : selectVal . date ,
201
- y : selectVal . value ,
237
+ x : selectVal [ xField ] ,
238
+ y : selectVal [ yField ] ,
202
239
itemLine : {
203
240
startSymbol : {
204
241
visible : true ,
@@ -236,7 +273,7 @@ export function TrendArea(props: TrendAreaProps) {
236
273
const datum = ( data || [ ] ) . find ( item => item [ xField ] === value ) ;
237
274
238
275
if ( datum ) {
239
- if ( getSelectVal ( ) ?. value === value ) {
276
+ if ( getSelectVal ( ) ?. [ yField ] === value ) {
240
277
setSelectVal ( null ) ;
241
278
}
242
279
else {
@@ -255,14 +292,15 @@ export function TrendArea(props: TrendAreaProps) {
255
292
256
293
return (
257
294
< CommonChart
258
- color = { hideReference ? colors : [ referenceColor , ...colors ! ] }
295
+ color = { ! showReference ? colors : [ referenceColor , ...colors ! ] }
259
296
data = { dataList }
260
- series = { hideReference ? series : [ referenceSeries , ...series ] }
297
+ series = { [ ... referenceSeries , ...series ] as IAreaSeriesSpec [ ] }
261
298
axes = { [ yAxesData , xAxesData ] }
262
299
crosshair = { mode === 'default' ? defaultCrosshair : defaultSelectModeCrosshair }
263
300
tooltip = { tooltipProps }
264
301
markLine = { markLine }
265
302
markPoint = { markPoint }
303
+ skipFunctionDiff
266
304
onDimensionClick = { handleDimensionClick }
267
305
markArea = { markAreaProps }
268
306
{ ...rest }
0 commit comments