Skip to content

Commit 83549eb

Browse files
authored
Merge pull request #1533 from jpuzz0/MTV-1905-update-canceled-vms-icon
[MTV-1905] Update canceled VM status icon
2 parents e93a32e + e3ede68 commit 83549eb

File tree

3 files changed

+78
-45
lines changed

3 files changed

+78
-45
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.plan-status-cell-label-section {
2+
width: 100px;
3+
}

packages/forklift-console-plugin/src/modules/Plans/views/list/components/PlanStatusCell.tsx

+58-39
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ import StartIcon from '@patternfly/react-icons/dist/esm/icons/play-icon';
2828
import { CellProps } from './CellProps';
2929
import { PlanStatusVmCount } from './PlanStatusVmCount';
3030

31+
import './PlanStatusCell.style.scss';
32+
3133
type VmPipelineTask = {
3234
vmName: string;
3335
task: string;
@@ -74,7 +76,7 @@ export const PlanStatusCell: React.FC<CellProps> = ({ data }) => {
7476
if (phase === PlanPhase.Ready) {
7577
return (
7678
<Button
77-
variant={ButtonVariant.primary}
79+
variant={ButtonVariant.secondary}
7880
icon={<StartIcon />}
7981
isDisabled={!isButtonEnabled}
8082
onClick={() =>
@@ -103,45 +105,62 @@ export const PlanStatusCell: React.FC<CellProps> = ({ data }) => {
103105

104106
return (
105107
<Flex alignItems={{ default: 'alignItemsCenter' }} spaceItems={{ default: 'spaceItemsSm' }}>
106-
{isPlanLoading ? (
107-
<Spinner size="md" />
108-
) : phase === PlanPhase.NotReady ? (
109-
t('Validating...')
110-
) : (
111-
<Label isCompact>{phase}</Label>
112-
)}
113-
114-
{progressValue !== 0 && isPlanLoading && (
115-
<FlexItem className="pf-v5-u-font-size-sm">{Math.trunc(progressValue)}%</FlexItem>
116-
)}
117-
118-
<Split hasGutter>
119-
{vmCount.success > 0 && (
120-
<SplitItem>
121-
<PlanStatusVmCount
122-
count={vmCount.success}
123-
status="success"
124-
linkPath={vmCountLinkPath}
125-
/>
126-
</SplitItem>
127-
)}
128-
129-
{vmCount.canceled > 0 && (
130-
<SplitItem>
131-
<PlanStatusVmCount
132-
count={vmCount.canceled}
133-
status="warning"
134-
linkPath={vmCountLinkPath}
135-
/>
136-
</SplitItem>
137-
)}
138-
139-
{vmCount.error > 0 && (
140-
<SplitItem>
141-
<PlanStatusVmCount count={vmCount.error} status="danger" linkPath={vmCountLinkPath} />
142-
</SplitItem>
108+
<Flex
109+
alignItems={{ default: 'alignItemsCenter' }}
110+
spaceItems={{ default: 'spaceItemsSm' }}
111+
className="plan-status-cell-label-section"
112+
>
113+
<FlexItem>
114+
{isPlanLoading ? (
115+
<Spinner size="md" />
116+
) : phase === PlanPhase.NotReady ? (
117+
t('Validating...')
118+
) : (
119+
<Label isCompact>{phase}</Label>
120+
)}
121+
</FlexItem>
122+
123+
{progressValue !== 0 && isPlanLoading && (
124+
<FlexItem className="pf-v5-u-font-size-sm">{Math.trunc(progressValue)}%</FlexItem>
143125
)}
144-
</Split>
126+
</Flex>
127+
128+
<FlexItem>
129+
<Split hasGutter>
130+
{vmCount.success > 0 && (
131+
<SplitItem>
132+
<PlanStatusVmCount
133+
count={vmCount.success}
134+
status="success"
135+
linkPath={vmCountLinkPath}
136+
tooltipLabel={t('Succeeded')}
137+
/>
138+
</SplitItem>
139+
)}
140+
141+
{vmCount.canceled > 0 && (
142+
<SplitItem>
143+
<PlanStatusVmCount
144+
count={vmCount.canceled}
145+
status="canceled"
146+
linkPath={vmCountLinkPath}
147+
tooltipLabel={t('Canceled')}
148+
/>
149+
</SplitItem>
150+
)}
151+
152+
{vmCount.error > 0 && (
153+
<SplitItem>
154+
<PlanStatusVmCount
155+
count={vmCount.error}
156+
status="danger"
157+
linkPath={vmCountLinkPath}
158+
tooltipLabel={t('Failed')}
159+
/>
160+
</SplitItem>
161+
)}
162+
</Split>
163+
</FlexItem>
145164
</Flex>
146165
);
147166
};

packages/forklift-console-plugin/src/modules/Plans/views/list/components/PlanStatusVmCount.tsx

+17-6
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,26 @@ import React from 'react';
22
import { Link } from 'react-router-dom';
33
import { useForkliftTranslation } from 'src/utils';
44

5-
import { Flex, FlexItem, Icon, IconComponentProps } from '@patternfly/react-core';
6-
import CheckCircleIcon from '@patternfly/react-icons/dist/esm/icons/check-circle-icon';
7-
import ExclamationCircleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-circle-icon';
8-
import ExclamationTriangleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-triangle-icon';
5+
import { Flex, FlexItem, Icon, IconComponentProps, Tooltip } from '@patternfly/react-core';
6+
import {
7+
CheckCircleIcon,
8+
ExclamationCircleIcon,
9+
ExclamationTriangleIcon,
10+
MinusCircleIcon,
11+
} from '@patternfly/react-icons';
912

1013
interface PlanStatusVmCountProps {
1114
count: number;
12-
status: IconComponentProps['status'];
1315
linkPath: string;
16+
status: IconComponentProps['status'] | 'canceled';
17+
tooltipLabel?: string;
1418
}
1519

1620
export const PlanStatusVmCount: React.FC<PlanStatusVmCountProps> = ({
1721
count,
1822
status,
1923
linkPath,
24+
tooltipLabel,
2025
}) => {
2126
const { t } = useForkliftTranslation();
2227

@@ -28,12 +33,18 @@ export const PlanStatusVmCount: React.FC<PlanStatusVmCountProps> = ({
2833
return <ExclamationTriangleIcon />;
2934
case 'danger':
3035
return <ExclamationCircleIcon />;
36+
case 'canceled':
37+
return <MinusCircleIcon color="grey" />;
3138
}
3239
}, [status]);
3340

3441
return (
3542
<Flex alignItems={{ default: 'alignItemsCenter' }} spaceItems={{ default: 'spaceItemsSm' }}>
36-
<Icon status={status}>{statusIcon}</Icon>
43+
<FlexItem>
44+
<Tooltip content={tooltipLabel}>
45+
<Icon {...(status !== 'canceled' && { status })}>{statusIcon}</Icon>
46+
</Tooltip>
47+
</FlexItem>
3748

3849
<FlexItem>
3950
<Link to={linkPath}>{t('{{total}} VM', { count, total: count })}</Link>

0 commit comments

Comments
 (0)