Skip to content

Commit 6852ae1

Browse files
committed
address more feedback
Signed-off-by: Jeff Puzzo <[email protected]>
1 parent 42cb1aa commit 6852ae1

File tree

7 files changed

+60
-49
lines changed

7 files changed

+60
-49
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import React, { FC, PropsWithChildren } from 'react';
2+
3+
import { Spinner, SpinnerProps } from '@patternfly/react-core';
4+
5+
type LoadingSpinnerProps = PropsWithChildren &
6+
SpinnerProps & {
7+
isLoading: boolean;
8+
};
9+
10+
const LoadingSpinner: FC<LoadingSpinnerProps> = ({ isLoading, children, ...spinnerProps }) =>
11+
isLoading ? <Spinner {...spinnerProps} /> : <>{children}</>;
12+
13+
export default LoadingSpinner;

packages/common/src/components/LoadingSpinner/LoadingSpinner.tsx

-14
This file was deleted.

packages/common/src/components/LoadingSpinner/index.ts

-1
This file was deleted.

packages/common/src/components/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export * from './FormGroupWithHelpText';
66
export * from './HelpIconPopover';
77
export * from './Icons';
88
export * from './LoadingDots';
9-
export * from './LoadingSpinner';
9+
export { default as LoadingSpinner } from './LoadingSpinner';
1010
export * from './Page';
1111
export * from './QueryClientHoc';
1212
export * from './TableView';

packages/forklift-console-plugin/src/modules/Plans/actions/PlanActionsDropdownItems.tsx

+5-30
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useMemo } from 'react';
1+
import React from 'react';
22
import { DropdownItemLink } from 'src/components/actions/DropdownItemLink';
33
import { useModal } from 'src/modules/Providers/modals';
44
import { getResourceUrl } from 'src/modules/Providers/utils/helpers';
@@ -16,6 +16,8 @@ import {
1616
PlanSummaryStatus,
1717
} from '../utils';
1818

19+
import { getDuplicateActionDescription, getStartActionDescription } from './utils';
20+
1921
export const PlanActionsDropdownItems = ({ data }: PlanActionsDropdownItemsProps) => {
2022
const { t } = useForkliftTranslation();
2123
const { showModal } = useModal();
@@ -53,40 +55,13 @@ export const PlanActionsDropdownItems = ({ data }: PlanActionsDropdownItemsProps
5355
showModal(<PlanDeleteModal resource={plan} model={PlanModel} />);
5456
};
5557

56-
const startActionDescription = useMemo(() => {
57-
if (isPlanValidating) {
58-
return t('The plan is being validated');
59-
}
60-
61-
switch (status) {
62-
case PlanSummaryStatus.Archived:
63-
return t('Archived plans cannot be started');
64-
case PlanSummaryStatus.Complete:
65-
return t('All VMs were migrated');
66-
case PlanSummaryStatus.Running:
67-
return t('The plan is currently in progress');
68-
case PlanSummaryStatus.CannotStart:
69-
return t('The plan cannot be started');
70-
}
71-
}, [status, isPlanValidating]);
72-
73-
const duplicateActionDescription = React.useMemo(() => {
74-
if (isPlanValidating) {
75-
return t('The plan is being validated');
76-
}
77-
78-
if (status === PlanSummaryStatus.CannotStart) {
79-
return t('The plan cannot be duplicated');
80-
}
81-
}, [status, isPlanValidating]);
82-
8358
return [
8459
<DropdownItem
8560
value={0}
8661
key="start"
8762
isDisabled={!canStart}
8863
onClick={onClickPlanStart}
89-
description={startActionDescription}
64+
description={getStartActionDescription(status, isPlanValidating, t)}
9065
>
9166
{buttonStartLabel}
9267
</DropdownItem>,
@@ -109,7 +84,7 @@ export const PlanActionsDropdownItems = ({ data }: PlanActionsDropdownItemsProps
10984
isPlanValidating
11085
}
11186
onClick={onClickDuplicate}
112-
description={duplicateActionDescription}
87+
description={getDuplicateActionDescription(status, isPlanValidating, t)}
11388
>
11489
{t('Duplicate Plan')}
11590
</DropdownItem>,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { TFunction } from 'i18next';
2+
3+
import { PlanSummaryStatus } from '../utils';
4+
5+
export const getStartActionDescription = (
6+
status: PlanSummaryStatus,
7+
isPlanValidating: boolean,
8+
t: TFunction,
9+
): string => {
10+
if (isPlanValidating) {
11+
return t('The plan is being validated');
12+
}
13+
14+
switch (status) {
15+
case PlanSummaryStatus.Archived:
16+
return t('Archived plans cannot be started');
17+
case PlanSummaryStatus.Complete:
18+
return t('All VMs were migrated');
19+
case PlanSummaryStatus.Running:
20+
return t('The plan is currently in progress');
21+
case PlanSummaryStatus.CannotStart:
22+
return t('The plan cannot be started');
23+
}
24+
};
25+
26+
export const getDuplicateActionDescription = (
27+
status: PlanSummaryStatus,
28+
isPlanValidating: boolean,
29+
t: TFunction,
30+
): string => {
31+
if (isPlanValidating) {
32+
return t('The plan is being validated');
33+
}
34+
35+
if (status === PlanSummaryStatus.CannotStart) {
36+
return t('The plan cannot be duplicated');
37+
}
38+
};
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
import { V1beta1Plan } from '@kubev2v/types';
22

3-
import { PlanConditionStatus } from '../types/PlanCondition';
3+
import { PlanConditionStatus, PlanConditionType } from '../types/PlanCondition';
44

55
/**
66
* Gets a record of plan types with truthful ('True') statuses
77
* @param plan V1beta1Plan
88
* @returns Record<string, boolean>
99
*/
10-
export const getConditionTypes = (plan: V1beta1Plan): Record<string, boolean> =>
10+
export const getConditionTypes = (plan: V1beta1Plan): Record<PlanConditionType, boolean> =>
1111
plan?.status?.conditions?.reduce((acc, condition) => {
1212
if (condition.status === PlanConditionStatus.True) {
1313
acc[condition.type] = true;
1414
}
1515

1616
return acc;
17-
}, {});
17+
}, {} as Record<PlanConditionType, boolean>);

0 commit comments

Comments
 (0)