@@ -136,7 +136,7 @@ function handleTheme(iChartOption) {
136136}
137137
138138// 配置仪表盘中心文本
139- export function handleDetail ( seriesUnit , text , data , sizeData , isAdaptive ) {
139+ export function handleDetail ( seriesUnit , text , data , sizeData , isAdaptive ) {
140140 seriesUnit . detail . formatter =
141141 text . formatter ||
142142 function ( value ) {
@@ -148,7 +148,7 @@ export function handleDetail(seriesUnit, text, data, sizeData,isAdaptive) {
148148
149149 } ;
150150 const space = isAdaptive ? sizeData . space : 24 ;
151- const valuePadding = isAdaptive ? sizeData . valuePadding : 0 ;
151+ const valuePadding = isAdaptive ? ( sizeData . valuePadding || 0 ) : 0 ;
152152 seriesUnit . detail . offsetCenter = text . offset || [ 0 , 0 ] ;
153153 seriesUnit . detail . rich = {
154154 value : {
@@ -158,13 +158,13 @@ export function handleDetail(seriesUnit, text, data, sizeData,isAdaptive) {
158158 padding : [ valuePadding , 0 , 0 , 0 ] ,
159159 } ,
160160 name : {
161- fontSize : sizeData . secondaryFontSize ,
161+ fontSize : sizeData . secondaryFontSize || sizeData . subFontSize ,
162162 color : chartToken . descRichColor ,
163163 padding : [ space , 0 , 0 , 0 ] ,
164164 } ,
165165 unit : {
166166 color : chartToken . detailRichColor ,
167- fontSize : sizeData . secondaryFontSize
167+ fontSize : sizeData . secondaryFontSize || sizeData . subFontSize
168168 }
169169 } ;
170170 if ( text ?. formatterStyle ) {
@@ -510,7 +510,7 @@ export function handleStatus(seriesUnit, iChartOption,radiusSize,text,sizeData,i
510510 padding : [ unitPadding , 0 , 30 , 0 ] ,
511511 } ,
512512 name : {
513- fontSize : sizeData . secondaryFontSize ,
513+ fontSize : sizeData . secondaryFontSize || sizeData . subFontSize ,
514514 color : chartToken . descRichColor ,
515515 padding : [ lineHeight + sizeData . space , 0 , 0 , 0 ] ,
516516
@@ -593,7 +593,7 @@ function setSeriesInit(seriesUnit, iChartOption) {
593593 * @param {数据 } data
594594 * @returns
595595 */
596- export function handleSeries ( iChartOption , optionColor , containerWidth , containerHeight ) {
596+ export function handleSeries ( iChartOption , optionColor , containerWidth , containerHeight ) {
597597 const data = iChartOption . data . length ? iChartOption . data : [ { value :0 , name : '' } ] ;
598598 const text = iChartOption . text || { } ;
599599 const axisLabelStyle = iChartOption . axisLabelStyle || { } ;
@@ -620,7 +620,7 @@ export function handleSeries(iChartOption,optionColor,containerWidth,containerHe
620620 // 不同尺寸下的fontSize
621621 const sizeData = handleSize ( seriesUnit , radiusSize ) ;
622622 // 中间文本
623- handleDetail ( seriesUnit , text , data , sizeData ) ;
623+ handleDetail ( seriesUnit , text , data , sizeData , iChartOption . adaptive ) ;
624624 // 进度条宽度
625625 handleProgress ( seriesUnit , iChartOption , data ) ;
626626 handleAxisLine ( seriesUnit , iChartOption ) ;
@@ -634,15 +634,15 @@ export function handleSeries(iChartOption,optionColor,containerWidth,containerHe
634634 return series ;
635635}
636636
637- export function adapt ( iChartOption , baseOption , containerWidth , containerHeight ) {
637+ export function adapt ( iChartOption , baseOption , containerWidth , containerHeight ) {
638638 const theme = iChartOption ?. theme ;
639639 const adaptive = iChartOption ?. adaptive ;
640640 const series = baseOption . series [ 0 ] ;
641641 const text = iChartOption . text || { } ;
642642 // 如果主题为华为云主题,并且开启配置项则开启自适应功能
643- if ( theme && theme . indexOf ( 'cloud' ) != - 1 && adaptive ) {
643+ if ( theme && theme . indexOf ( 'cloud' ) != - 1 && adaptive ) {
644644 // 初始值为宽度的80%
645- let initRadius = containerWidth * 0.8 / 2 ;
645+ let initRadius = containerWidth * 0.8 ;
646646 let radius = Math . max ( 120 , Math . min ( 200 , Math . min ( initRadius , containerHeight ) ) ) / 2 ;
647647 let mainText ;
648648 const value = iChartOption ?. data [ 0 ] ?. value ;
@@ -654,8 +654,7 @@ export function adapt(iChartOption,baseOption,containerWidth,containerHeight) {
654654 }
655655 const barWidth = baseOption . series [ 0 ] ?. progress ?. width ;
656656 let sizeData = calculateFontSize ( radius * 2 , mainText , barWidth ) ;
657- // 主副文本的间距固定为4
658- sizeData . space = 4 ;
657+
659658 // 主文本的上padding
660659 if ( sizeData . mainFontSize === 48 ) {
661660 sizeData . valuePadding = 0 ;
@@ -667,10 +666,24 @@ export function adapt(iChartOption,baseOption,containerWidth,containerHeight) {
667666
668667 baseOption . series [ 0 ] . axisLabel . show = false ;
669668 baseOption . series [ 0 ] . splitLine . show = false ;
670- // 中间文本
671- handleDetail ( series , text , iChartOption . data , sizeData , true ) ;
672- // 内置状态仪表盘
673- handleStatus ( series , iChartOption , radius , text , sizeData , true ) ;
669+ // 非内置仪表盘 中间文本 主副文本的间距按需决定
670+ if ( radius * 2 >= 200 ) {
671+ sizeData . space = 24 ;
672+ } else if ( radius * 2 < 200 && radius * 2 >= 160 ) {
673+ sizeData . space = 18 ;
674+ } else {
675+ sizeData . space = 10 ;
676+ }
677+ handleDetail ( series , text , iChartOption . data , sizeData , true ) ;
678+ // 内置状态仪表盘 space沿用默认规则
679+ if ( radius * 2 >= 200 ) {
680+ sizeData . space = 28 ;
681+ } else if ( radius * 2 < 200 && radius * 2 >= 160 ) {
682+ sizeData . space = 4 ;
683+ } else {
684+ sizeData . space = 0 ;
685+ }
686+ handleStatus ( series , iChartOption , radius , text , sizeData , true ) ;
674687 baseOption . series [ 0 ] . radius = radius ;
675688 }
676689}
0 commit comments