@@ -71,7 +71,7 @@ export const CrossplaneCard = ({
7171 size === 'large' || size === 'extra-large' ? styles . contentContainerMultiple : styles . contentContainer
7272 }
7373 >
74- { /* Primary chart container */ }
74+ { /* Health chart container - now primary */ }
7575 < div
7676 className = {
7777 size === 'small'
@@ -82,81 +82,84 @@ export const CrossplaneCard = ({
8282 }
8383 >
8484 < div
85- onMouseEnter = { ( ) => setIsProviderChartHovered ( true ) }
86- onMouseLeave = { ( ) => setIsProviderChartHovered ( false ) }
85+ onMouseEnter = { crossplaneState . hasData ? ( ) => setIsHealthChartHovered ( true ) : undefined }
86+ onMouseLeave = { crossplaneState . hasData ? ( ) => setIsHealthChartHovered ( false ) : undefined }
8787 >
8888 < MultiPercentageBar
89- segments = { secondarySegments . map ( segment => ( {
89+ segments = { crossplaneState . segments . map ( segment => ( {
9090 ...segment ,
91- segmentLabel : `${ segment . label } (${ segment . count } )` , // Provider name (count) - percentage handled by component
92- segmentLabelColor : 'white'
91+ segmentLabel : segment . percentage > 15 ? `${ segment . label } ${ segment . count !== undefined ? ` (${ segment . count } )` : '' } ` : ( segment . count || 0 ) > 0 ? ` ${ segment . count } ` : '' , // Status (count) - percentage handled by component
92+ segmentLabelColor : ( segment . color === '#e9e9e9ff' ) ? 'black' : 'white'
9393 } ) ) }
9494 className = { styles . progressBar }
95- showOnlyNonZero = { true }
95+ showOnlyNonZero = { crossplaneState . showOnlyNonZero ?? true }
96+ isHealthy = { crossplaneState . isHealthy }
9697 barWidth = { size === 'medium' ? '80%' : '90%' }
9798 barHeight = { size === 'medium' ? '16px' : '18px' }
9899 barMaxWidth = { size === 'medium' ? '500px' : 'none' }
99100 labelConfig = { {
100101 position : 'above' ,
101102 displayMode : 'primary' ,
102- showPercentage : false , // Don't show percentage in primary label, only in segments
103- primaryLabelText : t ( 'common.providers' ) ,
104- primaryLabelValue : providerDistribution . totalProviders ,
103+ showPercentage : false , // Never show automatic percentage since we're using primaryLabelValue
104+ showCount : false ,
105+ primaryLabelText : isLoading ? t ( 'Hints.common.loading' ) : 'Health' ,
106+ primaryLabelValue : isLoading ? undefined : `${ crossplaneState . healthyPercentage || 0 } %` ,
105107 hideWhenSingleFull : false ,
106- fontWeight : ' bold',
108+ fontWeight : isLoading ? 'normal' : ' bold',
107109 } }
108110 animationConfig = { {
109111 enableWave : size !== 'medium' ,
110112 enableTransitions : size !== 'medium' ,
111113 duration : size === 'medium' ? 0 : 400 ,
112114 staggerDelay : size === 'medium' ? 0 : 100 ,
113115 } }
114- showSegmentLabels = { false }
115- showSegmentLabelsOnHover = { true } // Show segment labels only on hover
116- showLabels = { shouldShowLabelsAlways || isProviderChartHovered } // Show continuously when expanded/large or on hover
116+ showSegmentLabels = { false }
117+ showSegmentLabelsOnHover = { true }
118+ showLabels = { crossplaneState . hasData && ( shouldShowLabelsAlways || isHealthChartHovered ) }
117119 minSegmentWidthForLabel = { 12 }
118120 />
119121 </ div >
120122 </ div >
121123
122- { /* Secondary chart container - rendered below the primary chart */ }
123- { ( size === 'medium' || size === 'large' || size === 'extra-large' ) && secondarySegments && (
124+ { /* Provider chart container - now secondary */ }
125+ { ( size === 'medium' || size === 'large' || size === 'extra-large' ) && (
124126 < div className = { size === 'medium' ? styles . progressBarContainerMedium : styles . progressBarContainerLarge } >
125127 < div
126- onMouseEnter = { ( ) => setIsHealthChartHovered ( true ) }
127- onMouseLeave = { ( ) => setIsHealthChartHovered ( false ) }
128+ onMouseEnter = { providerDistribution . segments . length > 0 ? ( ) => setIsProviderChartHovered ( true ) : undefined }
129+ onMouseLeave = { providerDistribution . segments . length > 0 ? ( ) => setIsProviderChartHovered ( false ) : undefined }
128130 >
129131 < MultiPercentageBar
130- segments = { crossplaneState . segments . map ( segment => ( {
131- ...segment ,
132- segmentLabel : `${ segment . label } (${ segment . count } )` , // Status (count) - percentage handled by component
133- segmentLabelColor : 'white'
134- } ) ) }
132+ segments = { isLoading ?
133+ [ { percentage : 100 , color : '#e9e9e9ff' , label : t ( 'Hints.common.loading' ) , segmentLabel : t ( 'Hints.common.loading' ) , segmentLabelColor : 'white' } ] :
134+ secondarySegments . map ( segment => ( {
135+ ...segment ,
136+ segmentLabel : segment . percentage > 15 ? `${ segment . label } (${ segment . count } )` : ( segment . count || 0 ) > 0 ? `${ segment . count } ` : '' , // Provider name (count) - percentage handled by component
137+ segmentLabelColor : ( segment . color === '#e9e9e9ff' ) ? 'black' : 'white'
138+ } ) )
139+ }
135140 className = { styles . progressBar }
136- showOnlyNonZero = { crossplaneState . showOnlyNonZero ?? true }
137- isHealthy = { crossplaneState . isHealthy }
141+ showOnlyNonZero = { true }
138142 barWidth = { size === 'medium' ? '80%' : '90%' }
139143 barHeight = { size === 'medium' ? '16px' : '18px' }
140144 barMaxWidth = { size === 'medium' ? '500px' : 'none' }
141145 labelConfig = { {
142146 position : 'above' ,
143147 displayMode : 'primary' ,
144- showPercentage : size === 'medium' ? false : crossplaneState . showPercentage , // Restore original logic
145- showCount : false ,
146- primaryLabelText : 'Health' ,
147- primaryLabelValue : undefined ,
148+ showPercentage : false , // Don't show percentage in primary label, only in segments
149+ primaryLabelText : isLoading ? t ( 'Hints.common.loading' ) : t ( 'common.providers' ) ,
150+ primaryLabelValue : isLoading ? undefined : providerDistribution . totalProviders ,
148151 hideWhenSingleFull : false ,
149- fontWeight : 'bold' ,
152+ fontWeight : isLoading ? 'normal' : 'bold' ,
150153 } }
151154 animationConfig = { {
152155 enableWave : size !== 'medium' ,
153156 enableTransitions : size !== 'medium' ,
154157 duration : size === 'medium' ? 0 : 400 ,
155158 staggerDelay : size === 'medium' ? 0 : 100 ,
156159 } }
157- showSegmentLabels = { false }
158- showSegmentLabelsOnHover = { true }
159- showLabels = { shouldShowLabelsAlways || isHealthChartHovered } // Show continuously when expanded/large or on hover
160+ showSegmentLabels = { false }
161+ showSegmentLabelsOnHover = { true } // Show segment labels only on hover
162+ showLabels = { providerDistribution . segments . length > 0 && ( shouldShowLabelsAlways || isProviderChartHovered ) } // Show continuously when expanded/large or on hover
160163 minSegmentWidthForLabel = { 12 }
161164 />
162165 </ div >
0 commit comments