mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	fix: show empty chart when we're loading flag metrics (#8419)
This PR makes it so that we show an empty chart when we're loading flag metrics, instead of showing the placeholder chart. It uses a very simple version that may not be the same size as the standard chart (because it has no labels), but we can change that at a later date. 
This commit is contained in:
		
							parent
							
								
									fcce0f852c
								
							
						
					
					
						commit
						21887aa3b9
					
				| @ -103,7 +103,6 @@ export const ExistingFlag: FC<{ project: string }> = ({ project }) => { | ||||
| export const ConnectSDK: FC<{ project: string }> = ({ project }) => { | ||||
|     return ( | ||||
|         <ActionBox data-loading> | ||||
|             {' '} | ||||
|             <TitleContainer> | ||||
|                 <NeutralCircleContainer>2</NeutralCircleContainer> | ||||
|                 Connect an SDK | ||||
| @ -116,7 +115,7 @@ export const ConnectSDK: FC<{ project: string }> = ({ project }) => { | ||||
|                 </p> | ||||
|             </div> | ||||
|             <div> | ||||
|                 <Button href={`projects/${project}`} variant='contained'> | ||||
|                 <Button href={`/projects/${project}`} variant='contained'> | ||||
|                     Go to project | ||||
|                 </Button> | ||||
|             </div> | ||||
|  | ||||
| @ -69,6 +69,31 @@ export const PlaceholderFlagMetricsChart: React.FC<{ label?: string }> = ({ | ||||
|     ); | ||||
| }; | ||||
| 
 | ||||
| export const EmptyFlagMetricsChart = () => { | ||||
|     const theme = useTheme(); | ||||
| 
 | ||||
|     const options = useMemo(() => { | ||||
|         return createPlaceholderBarChartOptions(theme); | ||||
|     }, [theme]); | ||||
| 
 | ||||
|     const data = useMemo(() => { | ||||
|         return { | ||||
|             labels: [], | ||||
|             datasets: [], | ||||
|         }; | ||||
|     }, [theme]); | ||||
| 
 | ||||
|     return ( | ||||
|         <ChartWrapper> | ||||
|             <Bar | ||||
|                 data={data} | ||||
|                 options={options} | ||||
|                 aria-label='A placeholder bar chart with a single feature flag exposure metrics' | ||||
|             /> | ||||
|         </ChartWrapper> | ||||
|     ); | ||||
| }; | ||||
| 
 | ||||
| const useMetricsEnvironments = (project: string, flagName: string) => { | ||||
|     const [environment, setEnvironment] = useState<string | null>(null); | ||||
|     const { feature } = useFeature(project, flagName); | ||||
| @ -96,7 +121,7 @@ const useFlagMetrics = ( | ||||
|     environment: string | null, | ||||
|     hoursBack: number, | ||||
| ) => { | ||||
|     const { featureMetrics: metrics = [] } = useFeatureMetricsRaw( | ||||
|     const { featureMetrics: metrics = [], loading } = useFeatureMetricsRaw( | ||||
|         flagName, | ||||
|         hoursBack, | ||||
|     ); | ||||
| @ -126,7 +151,7 @@ const useFlagMetrics = ( | ||||
|         return createBarChartOptions(theme, hoursBack, locationSettings); | ||||
|     }, [theme, hoursBack, locationSettings]); | ||||
| 
 | ||||
|     return { data, options }; | ||||
|     return { data, options, loading }; | ||||
| }; | ||||
| 
 | ||||
| const EnvironmentSelect: FC<{ | ||||
| @ -183,7 +208,11 @@ export const FlagMetricsChart: FC<{ | ||||
|     const { environment, setEnvironment, activeEnvironments } = | ||||
|         useMetricsEnvironments(flag.project, flag.name); | ||||
| 
 | ||||
|     const { data, options } = useFlagMetrics(flag.name, environment, hoursBack); | ||||
|     const { data, options, loading } = useFlagMetrics( | ||||
|         flag.name, | ||||
|         environment, | ||||
|         hoursBack, | ||||
|     ); | ||||
| 
 | ||||
|     const noData = data.datasets[0].data.length === 0; | ||||
| 
 | ||||
| @ -210,7 +239,9 @@ export const FlagMetricsChart: FC<{ | ||||
|                 </MetricsSelectors> | ||||
|             </ExposureAndMetricsRow> | ||||
| 
 | ||||
|             {noData ? ( | ||||
|             {loading ? ( | ||||
|                 <EmptyFlagMetricsChart /> | ||||
|             ) : noData ? ( | ||||
|                 <PlaceholderFlagMetricsChart /> | ||||
|             ) : ( | ||||
|                 <ChartWrapper> | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user