Skip to content

Commit

Permalink
address more feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
jpuzz0 committed Jan 29, 2025
1 parent 42cb1aa commit c3d9a4c
Show file tree
Hide file tree
Showing 7 changed files with 60 additions and 49 deletions.
13 changes: 13 additions & 0 deletions packages/common/src/components/LoadingSpinner.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import React, { FC, PropsWithChildren } from 'react';

import { Spinner, SpinnerProps } from '@patternfly/react-core';

type LoadingSpinnerProps = PropsWithChildren &
SpinnerProps & {
isLoading: boolean;
};

const LoadingSpinner: FC<LoadingSpinnerProps> = ({ isLoading, children, ...spinnerProps }) =>
isLoading ? <Spinner {...spinnerProps} /> : children;

export default LoadingSpinner;
14 changes: 0 additions & 14 deletions packages/common/src/components/LoadingSpinner/LoadingSpinner.tsx

This file was deleted.

1 change: 0 additions & 1 deletion packages/common/src/components/LoadingSpinner/index.ts

This file was deleted.

2 changes: 1 addition & 1 deletion packages/common/src/components/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export * from './FormGroupWithHelpText';
export * from './HelpIconPopover';
export * from './Icons';
export * from './LoadingDots';
export * from './LoadingSpinner';
export { default as LoadingSpinner } from './LoadingSpinner';
export * from './Page';
export * from './QueryClientHoc';
export * from './TableView';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useMemo } from 'react';
import React from 'react';
import { DropdownItemLink } from 'src/components/actions/DropdownItemLink';
import { useModal } from 'src/modules/Providers/modals';
import { getResourceUrl } from 'src/modules/Providers/utils/helpers';
Expand All @@ -16,6 +16,8 @@ import {
PlanSummaryStatus,
} from '../utils';

import { getDuplicateActionDescription, getStartActionDescription } from './utils';

export const PlanActionsDropdownItems = ({ data }: PlanActionsDropdownItemsProps) => {
const { t } = useForkliftTranslation();
const { showModal } = useModal();
Expand Down Expand Up @@ -53,40 +55,13 @@ export const PlanActionsDropdownItems = ({ data }: PlanActionsDropdownItemsProps
showModal(<PlanDeleteModal resource={plan} model={PlanModel} />);
};

const startActionDescription = useMemo(() => {
if (isPlanValidating) {
return t('The plan is being validated');
}

switch (status) {
case PlanSummaryStatus.Archived:
return t('Archived plans cannot be started');
case PlanSummaryStatus.Complete:
return t('All VMs were migrated');
case PlanSummaryStatus.Running:
return t('The plan is currently in progress');
case PlanSummaryStatus.CannotStart:
return t('The plan cannot be started');
}
}, [status, isPlanValidating]);

const duplicateActionDescription = React.useMemo(() => {
if (isPlanValidating) {
return t('The plan is being validated');
}

if (status === PlanSummaryStatus.CannotStart) {
return t('The plan cannot be duplicated');
}
}, [status, isPlanValidating]);

return [
<DropdownItem
value={0}
key="start"
isDisabled={!canStart}
onClick={onClickPlanStart}
description={startActionDescription}
description={getStartActionDescription(status, isPlanValidating, t)}
>
{buttonStartLabel}
</DropdownItem>,
Expand All @@ -109,7 +84,7 @@ export const PlanActionsDropdownItems = ({ data }: PlanActionsDropdownItemsProps
isPlanValidating
}
onClick={onClickDuplicate}
description={duplicateActionDescription}
description={getDuplicateActionDescription(status, isPlanValidating, t)}
>
{t('Duplicate Plan')}
</DropdownItem>,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import { TFunction } from 'i18next';

import { PlanSummaryStatus } from '../utils';

export const getStartActionDescription = (
status: PlanSummaryStatus,
isPlanValidating: boolean,
t: TFunction,
): string => {
if (isPlanValidating) {
return t('The plan is being validated');
}

switch (status) {
case PlanSummaryStatus.Archived:
return t('Archived plans cannot be started');
case PlanSummaryStatus.Complete:
return t('All VMs were migrated');
case PlanSummaryStatus.Running:
return t('The plan is currently in progress');
case PlanSummaryStatus.CannotStart:
return t('The plan cannot be started');
}
};

export const getDuplicateActionDescription = (
status: PlanSummaryStatus,
isPlanValidating: boolean,
t: TFunction,
): string => {
if (isPlanValidating) {
return t('The plan is being validated');
}

if (status === PlanSummaryStatus.CannotStart) {
return t('The plan cannot be duplicated');
}
};
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
import { V1beta1Plan } from '@kubev2v/types';

import { PlanConditionStatus } from '../types/PlanCondition';
import { PlanConditionStatus, PlanConditionType } from '../types/PlanCondition';

/**
* Gets a record of plan types with truthful ('True') statuses
* @param plan V1beta1Plan
* @returns Record<string, boolean>
*/
export const getConditionTypes = (plan: V1beta1Plan): Record<string, boolean> =>
export const getConditionTypes = (plan: V1beta1Plan): Record<PlanConditionType, boolean> =>
plan?.status?.conditions?.reduce((acc, condition) => {
if (condition.status === PlanConditionStatus.True) {
acc[condition.type] = true;
}

return acc;
}, {});
}, {} as Record<PlanConditionType, boolean>);

0 comments on commit c3d9a4c

Please sign in to comment.