1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-06-04 01:18:20 +02:00

Feat: show status of scheduled change request (#5630)

Modifies the ChangeRequestStatusBadge to display the failed execution

Closes #
[1-1767](https://linear.app/unleash/issue/1-1767/add-status-to-scheduled-badge)
![Screenshot 2023-12-13 at 13 10
42](https://github.com/Unleash/unleash/assets/104830839/5aab83b4-a3d8-4a88-8f17-628cb37d7850)
![Screenshot 2023-12-13 at 13 15
26](https://github.com/Unleash/unleash/assets/104830839/799e4bbe-b469-4cee-a3df-f0b6efcca33a)

---------

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
This commit is contained in:
andreas-unleash 2023-12-14 11:49:03 +02:00 committed by GitHub
parent 176e22ed40
commit cbd50ac0f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 10 deletions

View File

@ -31,7 +31,7 @@ export const ChangeRequestHeader: FC<{ changeRequest: IChangeRequest }> = ({
</StyledHeader> </StyledHeader>
</ChangeRequestTitle> </ChangeRequestTitle>
<StyledInnerContainer> <StyledInnerContainer>
<ChangeRequestStatusBadge state={changeRequest.state} /> <ChangeRequestStatusBadge changeRequest={changeRequest} />
<Typography <Typography
variant='body2' variant='body2'
sx={(theme) => ({ sx={(theme) => ({

View File

@ -103,7 +103,7 @@ export const EnvironmentChangeRequest: FC<{
</Box> </Box>
<Box sx={{ ml: 'auto' }}> <Box sx={{ ml: 'auto' }}>
<ChangeRequestStatusBadge <ChangeRequestStatusBadge
state={environmentChangeRequest.state} changeRequest={environmentChangeRequest}
/> />
</Box> </Box>
</Box> </Box>

View File

@ -1,10 +1,16 @@
import { VFC } from 'react'; import { VFC } from 'react';
import { ChangeRequestState } from '../changeRequest.types'; import { IChangeRequest } from '../changeRequest.types';
import { Badge } from 'component/common/Badge/Badge'; import { Badge } from 'component/common/Badge/Badge';
import { AccessTime, Check, CircleOutlined, Close } from '@mui/icons-material'; import {
AccessTime,
Check,
CircleOutlined,
Close,
Info,
} from '@mui/icons-material';
interface IChangeRequestStatusBadgeProps { interface IChangeRequestStatusBadgeProps {
state: ChangeRequestState; changeRequest: IChangeRequest | undefined;
} }
const ReviewRequiredBadge: VFC = () => ( const ReviewRequiredBadge: VFC = () => (
@ -16,8 +22,12 @@ const ReviewRequiredBadge: VFC = () => (
const DraftBadge: VFC = () => <Badge color='warning'>Draft</Badge>; const DraftBadge: VFC = () => <Badge color='warning'>Draft</Badge>;
export const ChangeRequestStatusBadge: VFC<IChangeRequestStatusBadgeProps> = ({ export const ChangeRequestStatusBadge: VFC<IChangeRequestStatusBadgeProps> = ({
state, changeRequest,
}) => { }) => {
if (!changeRequest) {
return null;
}
const { state } = changeRequest;
switch (state) { switch (state) {
case 'Draft': case 'Draft':
return <DraftBadge />; return <DraftBadge />;
@ -47,12 +57,21 @@ export const ChangeRequestStatusBadge: VFC<IChangeRequestStatusBadgeProps> = ({
Rejected Rejected
</Badge> </Badge>
); );
case 'Scheduled': case 'Scheduled': {
const { schedule } = changeRequest;
const color = schedule?.status === 'pending' ? 'warning' : 'error';
const icon =
schedule?.status === 'pending' ? (
<AccessTime fontSize={'small'} />
) : (
<Info fontSize={'small'} />
);
return ( return (
<Badge color='warning' icon={<AccessTime fontSize={'small'} />}> <Badge color={color} icon={icon}>
Scheduled Scheduled
</Badge> </Badge>
); );
}
default: default:
return <ReviewRequiredBadge />; return <ReviewRequiredBadge />;
} }

View File

@ -1,18 +1,23 @@
import { VFC } from 'react'; import { VFC } from 'react';
import { TextCell } from 'component/common/Table/cells/TextCell/TextCell'; import { TextCell } from 'component/common/Table/cells/TextCell/TextCell';
import { ChangeRequestState } from 'component/changeRequest/changeRequest.types'; import {
ChangeRequestState,
IChangeRequest,
} from 'component/changeRequest/changeRequest.types';
import { ChangeRequestStatusBadge } from 'component/changeRequest/ChangeRequestStatusBadge/ChangeRequestStatusBadge'; import { ChangeRequestStatusBadge } from 'component/changeRequest/ChangeRequestStatusBadge/ChangeRequestStatusBadge';
interface IChangeRequestStatusCellProps { interface IChangeRequestStatusCellProps {
value?: string | null; // FIXME: proper type value?: string | null; // FIXME: proper type
row: { original: IChangeRequest };
} }
export const ChangeRequestStatusCell: VFC<IChangeRequestStatusCellProps> = ({ export const ChangeRequestStatusCell: VFC<IChangeRequestStatusCellProps> = ({
value, value,
row: { original },
}) => { }) => {
const renderState = () => { const renderState = () => {
if (!value) return null; if (!value) return null;
return <ChangeRequestStatusBadge state={value as ChangeRequestState} />; return <ChangeRequestStatusBadge changeRequest={original} />;
}; };
if (!value) { if (!value) {