mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	feat: Last seen for toggles that have an old usage reported (#4538)
Last seen for toggles that have an old usage reported and no environment Closes: # [1-1276] (https://linear.app/unleash/issue/1-1276/last-seen-for-toggles-that-have-an-old-usage-reported-and-that-are)  Signed-off-by: andreas-unleash <andreas@getunleash.ai>
This commit is contained in:
		
							parent
							
								
									d19d97cf18
								
							
						
					
					
						commit
						10c21461bd
					
				@ -9,7 +9,10 @@ interface IFeatureSeenCellProps {
 | 
				
			|||||||
export const FeatureEnvironmentSeenCell: VFC<IFeatureSeenCellProps> = ({
 | 
					export const FeatureEnvironmentSeenCell: VFC<IFeatureSeenCellProps> = ({
 | 
				
			||||||
    feature,
 | 
					    feature,
 | 
				
			||||||
}) => {
 | 
					}) => {
 | 
				
			||||||
    const environments = Object.values(feature.environments);
 | 
					    const environments = Boolean(feature.environments)
 | 
				
			||||||
 | 
					        ? Object.values(feature.environments)
 | 
				
			||||||
 | 
					        : [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
        <FeatureEnvironmentSeen
 | 
					        <FeatureEnvironmentSeen
 | 
				
			||||||
            featureLastSeen={feature.lastSeenAt}
 | 
					            featureLastSeen={feature.lastSeenAt}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
import { styled, SxProps, Theme } from '@mui/material';
 | 
					import { styled, SxProps, Theme, Typography } from '@mui/material';
 | 
				
			||||||
import TimeAgo from 'react-timeago';
 | 
					import TimeAgo from 'react-timeago';
 | 
				
			||||||
import { IEnvironments, IFeatureEnvironment } from 'interfaces/featureToggle';
 | 
					import { IEnvironments, IFeatureEnvironment } from 'interfaces/featureToggle';
 | 
				
			||||||
import React from 'react';
 | 
					import React from 'react';
 | 
				
			||||||
@ -56,6 +56,7 @@ const StyledValue = styled('div', {
 | 
				
			|||||||
}));
 | 
					}));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface ILastSeenTooltipProps {
 | 
					interface ILastSeenTooltipProps {
 | 
				
			||||||
 | 
					    featureLastSeen: string;
 | 
				
			||||||
    environments?: IEnvironments[] | IFeatureEnvironment[];
 | 
					    environments?: IEnvironments[] | IFeatureEnvironment[];
 | 
				
			||||||
    className?: string;
 | 
					    className?: string;
 | 
				
			||||||
    sx?: SxProps<Theme>;
 | 
					    sx?: SxProps<Theme>;
 | 
				
			||||||
@ -63,10 +64,14 @@ interface ILastSeenTooltipProps {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export const LastSeenTooltip = ({
 | 
					export const LastSeenTooltip = ({
 | 
				
			||||||
    environments,
 | 
					    environments,
 | 
				
			||||||
 | 
					    featureLastSeen,
 | 
				
			||||||
    ...rest
 | 
					    ...rest
 | 
				
			||||||
}: ILastSeenTooltipProps) => {
 | 
					}: ILastSeenTooltipProps) => {
 | 
				
			||||||
    const getColor = useLastSeenColors();
 | 
					    const getColor = useLastSeenColors();
 | 
				
			||||||
    const [, defaultTextColor] = getColor();
 | 
					    const [, defaultTextColor] = getColor();
 | 
				
			||||||
 | 
					    const environmentsHaveLastSeen = environments?.some(environment =>
 | 
				
			||||||
 | 
					        Boolean(environment.lastSeenAt)
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
        <StyledDescription {...rest}>
 | 
					        <StyledDescription {...rest}>
 | 
				
			||||||
            <StyledDescriptionHeader sx={{ mb: 0 }}>
 | 
					            <StyledDescriptionHeader sx={{ mb: 0 }}>
 | 
				
			||||||
@ -75,8 +80,13 @@ export const LastSeenTooltip = ({
 | 
				
			|||||||
            <StyledDescriptionSubHeader>
 | 
					            <StyledDescriptionSubHeader>
 | 
				
			||||||
                Usage is reported from connected applications through metrics
 | 
					                Usage is reported from connected applications through metrics
 | 
				
			||||||
            </StyledDescriptionSubHeader>
 | 
					            </StyledDescriptionSubHeader>
 | 
				
			||||||
            {environments &&
 | 
					            <ConditionallyRender
 | 
				
			||||||
                environments.map(({ name, lastSeenAt }) => (
 | 
					                condition={
 | 
				
			||||||
 | 
					                    Boolean(environments) && Boolean(environmentsHaveLastSeen)
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                show={
 | 
				
			||||||
 | 
					                    <>
 | 
				
			||||||
 | 
					                        {environments?.map(({ name, lastSeenAt }) => (
 | 
				
			||||||
                            <StyledDescriptionBlock key={name}>
 | 
					                            <StyledDescriptionBlock key={name}>
 | 
				
			||||||
                                <StyledDescriptionBlockHeader>
 | 
					                                <StyledDescriptionBlockHeader>
 | 
				
			||||||
                                    {name}
 | 
					                                    {name}
 | 
				
			||||||
@ -97,9 +107,13 @@ export const LastSeenTooltip = ({
 | 
				
			|||||||
                                                    const [, textColor] =
 | 
					                                                    const [, textColor] =
 | 
				
			||||||
                                                        getColor(unit);
 | 
					                                                        getColor(unit);
 | 
				
			||||||
                                                    return (
 | 
					                                                    return (
 | 
				
			||||||
                                                <StyledValue color={textColor}>
 | 
					                                                        <StyledValue
 | 
				
			||||||
 | 
					                                                            color={textColor}
 | 
				
			||||||
 | 
					                                                        >
 | 
				
			||||||
                                                            {`${value} ${unit}${
 | 
					                                                            {`${value} ${unit}${
 | 
				
			||||||
                                                        value !== 1 ? 's' : ''
 | 
					                                                                value !== 1
 | 
				
			||||||
 | 
					                                                                    ? 's'
 | 
				
			||||||
 | 
					                                                                    : ''
 | 
				
			||||||
                                                            } ${suffix}`}
 | 
					                                                            } ${suffix}`}
 | 
				
			||||||
                                                        </StyledValue>
 | 
					                                                        </StyledValue>
 | 
				
			||||||
                                                    );
 | 
					                                                    );
 | 
				
			||||||
@ -107,7 +121,9 @@ export const LastSeenTooltip = ({
 | 
				
			|||||||
                                            />
 | 
					                                            />
 | 
				
			||||||
                                        }
 | 
					                                        }
 | 
				
			||||||
                                        elseShow={
 | 
					                                        elseShow={
 | 
				
			||||||
                                    <StyledValue color={defaultTextColor}>
 | 
					                                            <StyledValue
 | 
				
			||||||
 | 
					                                                color={defaultTextColor}
 | 
				
			||||||
 | 
					                                            >
 | 
				
			||||||
                                                no usage
 | 
					                                                no usage
 | 
				
			||||||
                                            </StyledValue>
 | 
					                                            </StyledValue>
 | 
				
			||||||
                                        }
 | 
					                                        }
 | 
				
			||||||
@ -115,6 +131,33 @@ export const LastSeenTooltip = ({
 | 
				
			|||||||
                                </StyledValueContainer>
 | 
					                                </StyledValueContainer>
 | 
				
			||||||
                            </StyledDescriptionBlock>
 | 
					                            </StyledDescriptionBlock>
 | 
				
			||||||
                        ))}
 | 
					                        ))}
 | 
				
			||||||
 | 
					                    </>
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                elseShow={
 | 
				
			||||||
 | 
					                    <TimeAgo
 | 
				
			||||||
 | 
					                        date={featureLastSeen}
 | 
				
			||||||
 | 
					                        title=""
 | 
				
			||||||
 | 
					                        live={false}
 | 
				
			||||||
 | 
					                        formatter={(
 | 
				
			||||||
 | 
					                            value: number,
 | 
				
			||||||
 | 
					                            unit: string,
 | 
				
			||||||
 | 
					                            suffix: string
 | 
				
			||||||
 | 
					                        ) => {
 | 
				
			||||||
 | 
					                            const [, textColor] = getColor(unit);
 | 
				
			||||||
 | 
					                            return (
 | 
				
			||||||
 | 
					                                <Typography
 | 
				
			||||||
 | 
					                                    fontWeight={'bold'}
 | 
				
			||||||
 | 
					                                    color={'text.primary'}
 | 
				
			||||||
 | 
					                                >
 | 
				
			||||||
 | 
					                                    {`Reported ${value} ${unit}${
 | 
				
			||||||
 | 
					                                        value !== 1 ? 's' : ''
 | 
				
			||||||
 | 
					                                    } ${suffix}`}
 | 
				
			||||||
 | 
					                                </Typography>
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
 | 
					                        }}
 | 
				
			||||||
 | 
					                    />
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
        </StyledDescription>
 | 
					        </StyledDescription>
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
@ -91,6 +91,7 @@ export const FeatureEnvironmentSeen = ({
 | 
				
			|||||||
                                    sx={sx}
 | 
					                                    sx={sx}
 | 
				
			||||||
                                    tooltip={
 | 
					                                    tooltip={
 | 
				
			||||||
                                        <LastSeenTooltip
 | 
					                                        <LastSeenTooltip
 | 
				
			||||||
 | 
					                                            featureLastSeen={featureLastSeen}
 | 
				
			||||||
                                            environments={environments}
 | 
					                                            environments={environments}
 | 
				
			||||||
                                        />
 | 
					                                        />
 | 
				
			||||||
                                    }
 | 
					                                    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user