mirror of
https://github.com/Unleash/unleash.git
synced 2025-11-10 01:19:53 +01:00
* refactor: update test deps * refactor: remove unused ts-expect-error annotations * refactor: add missing arg and return types * refactor: the loading prop is optional * refactor: add missing arg and return types * reafactor: fix value arg type * refactor: fix missing array type * refactor: the parameters field is an array * refactor: use undefined instead of null in state * refactor: add missing params type * refactor: add missing children prop * refactor: add missing array type * refactor: add missing React imports * refactor: use correct IProjectEnvironment type * refactor: type errors as unknown * refactor: the index prop is required * refactor: fix date prop type * refactor: fix tooltip placement prop type * refactor: fix environments state type * refactor: add missing arg types * refactor: add guard for undefined field * refactor: fix ChangePassword prop types * refactor: fix MUI import paths * refactor: add missing arg type * refactor: fix showDialog prop type * refactor: remove unused openUpdateDialog prop * refactor: add missing non-null assertion * refactor: remove unused types prop * refactor: stricten API error handler types * refactor: add missing undefined check * refactor: add missing IProject id field * refactor: fix ConditionallyRender condition prop types * refactor: remove unused args * refactor: add AddVariant prop types * refactor: add types to UIContext * refactor: fix event arg type * refactor: add missing default impressionData field * refactor: fix handleDeleteEnvironment prop args * refactor: fix IFeatureMetrics field requirements * refactor: add missing element types to ConditionallyRender * refactor: remove unused ProjectAccess projectId prop * refactor: add missing undefined check * refactor: fix getCreateTogglePath arg type * refactor: add missing IStrategyPayload import * refactor: remove unused user arg * refactor: add missing event arg type * refactor: add missing style object types * refactor: improve userApiErrors prop type * refactor: the Dialogue onClose prop is optional * refactor: fix the AddonEvents setEventValue prop type
115 lines
3.1 KiB
TypeScript
115 lines
3.1 KiB
TypeScript
import { useStyles } from './FeatureStatus.styles';
|
|
import TimeAgo from 'react-timeago';
|
|
import ConditionallyRender from '../../../common/ConditionallyRender';
|
|
import { Tooltip, TooltipProps } from '@material-ui/core';
|
|
import React from 'react';
|
|
|
|
function generateUnit(unit?: string): string {
|
|
switch (unit) {
|
|
case 'second':
|
|
return 's';
|
|
case 'minute':
|
|
return 'm';
|
|
case 'hour':
|
|
return 'h';
|
|
case 'day':
|
|
return 'D';
|
|
case 'week':
|
|
return 'W';
|
|
case 'month':
|
|
return 'M';
|
|
case 'year':
|
|
return 'Y';
|
|
default:
|
|
return '';
|
|
}
|
|
}
|
|
|
|
function getColor(unit?: string): string {
|
|
switch (unit) {
|
|
case 'second':
|
|
return '#98E3AF';
|
|
case 'minute':
|
|
return '#98E3AF';
|
|
case 'hour':
|
|
return '#98E3AF';
|
|
case 'day':
|
|
return '#98E3AF';
|
|
case 'week':
|
|
return '#ECD875';
|
|
case 'month':
|
|
return '#F5A69A';
|
|
case 'year':
|
|
return '#F5A69A';
|
|
default:
|
|
return '#EDF0F1';
|
|
}
|
|
}
|
|
|
|
interface FeatureStatusProps {
|
|
lastSeenAt?: string;
|
|
tooltipPlacement?: TooltipProps['placement'];
|
|
}
|
|
|
|
const FeatureStatus = ({
|
|
lastSeenAt,
|
|
tooltipPlacement,
|
|
}: FeatureStatusProps) => {
|
|
const styles = useStyles();
|
|
|
|
const Wrapper = (
|
|
props: React.PropsWithChildren<{ color: string; toolTip: string }>
|
|
) => {
|
|
return (
|
|
<Tooltip title={props.toolTip} arrow placement={tooltipPlacement}>
|
|
<div
|
|
className={styles.container}
|
|
style={{ background: props.color, fontSize: '0.8rem' }}
|
|
>
|
|
{props.children}
|
|
</div>
|
|
</Tooltip>
|
|
);
|
|
};
|
|
|
|
return (
|
|
<ConditionallyRender
|
|
condition={!!lastSeenAt}
|
|
show={
|
|
<TimeAgo
|
|
date={lastSeenAt!}
|
|
title=""
|
|
live={false}
|
|
formatter={(
|
|
value: number,
|
|
unit: string,
|
|
suffix: string
|
|
) => {
|
|
return (
|
|
<Wrapper
|
|
toolTip={`Last usage reported ${value} ${unit}${
|
|
value !== 1 ? 's' : ''
|
|
} ${suffix}`}
|
|
color={getColor(unit)}
|
|
>
|
|
{value}
|
|
{generateUnit(unit)}
|
|
</Wrapper>
|
|
);
|
|
}}
|
|
/>
|
|
}
|
|
elseShow={
|
|
<Wrapper
|
|
toolTip="No usage reported from connected applications"
|
|
color={getColor()}
|
|
>
|
|
<span style={{ fontSize: '1.4rem' }}>⊕</span>
|
|
</Wrapper>
|
|
}
|
|
/>
|
|
);
|
|
};
|
|
|
|
export default FeatureStatus;
|