@@ -10,7 +10,12 @@ const changeColors = ['rgb(0, 209, 156)', 'rgb(251, 162, 84)', 'rgb(247, 91, 96)
10
10
11
11
export function getOption ( data : DC . StaticData , config : DC . ChartConfig = { } ) {
12
12
const { metricData = [ ] , xData, time, valueNames = [ ] } = data ;
13
- const { optionProps = { } } = config ;
13
+ const { optionProps = { } , dataSourceConfig = { } } = config ;
14
+ const { typeDimensions, valueDimensions } = dataSourceConfig ;
15
+
16
+ // 多个维度,多个数值
17
+ const isMultipleTypeAndMultipleValue = ( typeDimensions ?. length || 0 ) > 1 && ( valueDimensions ?. length || 0 ) > 1 ;
18
+
14
19
const {
15
20
seriesName,
16
21
isBarChangeColor,
@@ -45,14 +50,25 @@ export function getOption(data: DC.StaticData, config: DC.ChartConfig = {}) {
45
50
? map ( dataList , ( item ) => ( typeof item === 'number' && item > 0 ? item : 0 ) )
46
51
: dataList ;
47
52
} ;
48
-
49
53
map ( metricData , ( value , i ) => {
50
- const { axisIndex, name, tag, unit : _unit , ...rest } = value ;
54
+ const { axisIndex, name, tag, alias = '' , unit : _unit , ...rest } = value ;
51
55
if ( tag || name ) {
52
56
legendData . push ( { name : tag || name } ) ;
53
57
}
54
58
const yAxisIndex = axisIndex || 0 ;
55
59
const areaColor = areaColors [ i ] ;
60
+
61
+ const normalSeriesData = isMultipleTypeAndMultipleValue
62
+ ? convertInvalidValueToZero ( value . data ) . map ( ( x ) => ( { value : x , category : name , alias } ) )
63
+ : convertInvalidValueToZero ( value . data ) ;
64
+
65
+ const seriesData = ! isBarChangeColor // TODO: isBarChangeColor seem to be useless anymore
66
+ ? normalSeriesData
67
+ : map ( value . data , ( item : any , j ) => {
68
+ const sect = Math . ceil ( value . data . length / changeColors . length ) ;
69
+ return { ...item , itemStyle : { normal : { color : changeColors [ Number . parseInt ( j / sect , 10 ) ] } } } ;
70
+ } ) ;
71
+
56
72
series . push ( {
57
73
name : value . tag || seriesName || value . name || value . key ,
58
74
yAxisIndex,
@@ -74,12 +90,7 @@ export function getOption(data: DC.StaticData, config: DC.ChartConfig = {}) {
74
90
} ,
75
91
...rest ,
76
92
type : value . type || 'line' ,
77
- data : ! isBarChangeColor // TODO: isBarChangeColor seem to be useless anymore
78
- ? convertInvalidValueToZero ( value . data )
79
- : map ( value . data , ( item : any , j ) => {
80
- const sect = Math . ceil ( value . data . length / changeColors . length ) ;
81
- return { ...item , itemStyle : { normal : { color : changeColors [ Number . parseInt ( j / sect , 10 ) ] } } } ;
82
- } ) ,
93
+ data : seriesData ,
83
94
} ) ;
84
95
// y 轴单位类型
85
96
const curUnitType = ( _unit ?. type || customUnitType || '' ) ;
@@ -115,26 +126,23 @@ export function getOption(data: DC.StaticData, config: DC.ChartConfig = {}) {
115
126
116
127
const lgFormatter = ( name : string ) => {
117
128
const defaultName = legendFormatter ? legendFormatter ( name ) : name ;
118
- return cutStr ( defaultName , 20 ) ;
129
+ return cutStr ( defaultName , 40 ) ;
119
130
} ;
120
131
const haveTwoYAxis = yAxis . length > 1 ;
121
132
const getTTUnitType = ( i : number ) => {
122
133
const curYAxis = yAxis [ i ] || yAxis [ yAxis . length - 1 ] ;
123
134
return [ curYAxis . unitType , curYAxis . unit ] ;
124
135
} ;
125
- const genTTArray = ( param : any [ ] ) => param . map ( ( unit , i ) => `<span style='color: ${ unit . color } '>${ cutStr ( unit . seriesName , 20 ) } : ${ ( preciseTooltip || isNaN ( unit . value ) ) ? ( isNaN ( unit . value ) ? ( nullDisplay || '--' ) : unit . value ) : getFormatter ( ...getTTUnitType ( i ) ) . format ( unit . value , 2 ) } </span><br/>` ) ;
136
+ const genTTArray = ( param : any [ ] ) => param . map ( ( unit , i ) => `<span style='color: ${ unit . color } '>${ cutStr ( unit . seriesName , 40 ) } : ${ ( preciseTooltip || isNaN ( unit . value ) ) ? ( isNaN ( unit . value ) ? ( nullDisplay || '--' ) : unit . value ) : getFormatter ( ...getTTUnitType ( i ) ) . format ( unit . value , 2 ) } </span><br/>` ) ;
126
137
const formatTime = ( timeStr : string ) => moment ( Number ( timeStr ) ) . format ( moreThanOneDay ? 'M月D日 HH:mm' : 'HH:mm' ) ;
127
- let defaultTTFormatter = ( param : any [ ] ) => `${ param [ 0 ] . name } <br/>${ genTTArray ( param ) . join ( '' ) } ` ;
128
138
129
- if ( time ) {
130
- defaultTTFormatter = ( param ) => {
131
- // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
132
- // const endTime = time[param[0].dataIndex + 1];
133
- // if (!endTime) {
134
- // return `${formatTime(param[0].name)}<br />${genTTArray(param).join('')}`;
135
- // }
136
- // return `${formatTime(param[0].name)} 到 ${formatTime(endTime)}<br/>${genTTArray(param).join('')}`;
137
- return `${ formatTime ( param [ 0 ] . name ) } <br />${ genTTArray ( param ) . join ( '' ) } ` ;
139
+ const formatTooltipTitle = ( title : any ) => ( time ? formatTime ( title ) : title ) ;
140
+ let defaultTTFormatter = ( param : any [ ] ) => `${ formatTooltipTitle ( param [ 0 ] . name ) } <br />${ genTTArray ( param ) . join ( '' ) } ` ;
141
+
142
+ // 多个维度,多个数值
143
+ if ( isMultipleTypeAndMultipleValue ) {
144
+ defaultTTFormatter = ( param : any ) => {
145
+ return `${ formatTooltipTitle ( param [ 0 ] . name ) } <br />${ genTTArray ( param . map ( ( x : any ) => ( { ...x , seriesName : `${ x . data . category } (${ x . data . alias } )` } ) ) ) . join ( '' ) } ` ;
138
146
} ;
139
147
}
140
148
0 commit comments