From 7a81f137edc9b19852008d4f6582efc74c763e3c Mon Sep 17 00:00:00 2001 From: Kevin Silva Date: Mon, 14 Aug 2023 13:57:07 +0200 Subject: [PATCH] SONAR-20086 - Change alm list to new behaviour --- .../project/CreateProjectModeSelection.tsx | 37 +++++++++++++++---- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/server/sonar-web/src/main/js/apps/create/project/CreateProjectModeSelection.tsx b/server/sonar-web/src/main/js/apps/create/project/CreateProjectModeSelection.tsx index 3f8770284d9..ad3055c6b7e 100644 --- a/server/sonar-web/src/main/js/apps/create/project/CreateProjectModeSelection.tsx +++ b/server/sonar-web/src/main/js/apps/create/project/CreateProjectModeSelection.tsx @@ -47,6 +47,19 @@ export interface CreateProjectModeSelectionProps { onConfigMode: (mode: AlmKeys) => void; } +type almList = { + key: AlmKeys; + mode: CreateProjectModes; +}[]; + +const almList: almList = [ + { key: AlmKeys.Azure, mode: CreateProjectModes.AzureDevOps }, + { key: AlmKeys.BitbucketCloud, mode: CreateProjectModes.BitbucketCloud }, + { key: AlmKeys.BitbucketServer, mode: CreateProjectModes.BitbucketServer }, + { key: AlmKeys.GitHub, mode: CreateProjectModes.GitHub }, + { key: AlmKeys.GitLab, mode: CreateProjectModes.GitLab }, +]; + function renderAlmOption( props: CreateProjectModeSelectionProps, alm: AlmKeys, @@ -76,7 +89,7 @@ function renderAlmOption( ); return ( - +
{!disabled && hasConfig ? ( @@ -109,12 +122,25 @@ function renderAlmOption( ); } +function separateAvailableOptions(almCounts: CreateProjectModeSelectionProps['almCounts']) { + const availableOptions: almList = []; + const unavailableOptions: almList = []; + almList.forEach(({ key, mode }) => + (almCounts[key] > 0 ? availableOptions : unavailableOptions).push({ key, mode }) + ); + return { + availableOptions, + unavailableOptions, + }; +} + export function CreateProjectModeSelection(props: CreateProjectModeSelectionProps) { const { appState: { canAdmin }, almCounts, } = props; const almTotalCount = Object.values(almCounts).reduce((prev, cur) => prev + cur); + const filteredAlm = separateAvailableOptions(almCounts); return (
@@ -132,16 +158,13 @@ export function CreateProjectModeSelection(props: CreateProjectModeSelectionProp )}
- {renderAlmOption(props, AlmKeys.Azure, CreateProjectModes.AzureDevOps)} - {renderAlmOption(props, AlmKeys.BitbucketServer, CreateProjectModes.BitbucketServer)} - {renderAlmOption(props, AlmKeys.BitbucketCloud, CreateProjectModes.BitbucketCloud)} - {renderAlmOption(props, AlmKeys.GitHub, CreateProjectModes.GitHub)} - {renderAlmOption(props, AlmKeys.GitLab, CreateProjectModes.GitLab)} + {filteredAlm.availableOptions.map(({ key, mode }) => renderAlmOption(props, key, mode))} + {filteredAlm.unavailableOptions.map(({ key, mode }) => renderAlmOption(props, key, mode))}
{translate('onboarding.create_project.select_method.manually')} -
+
-- 2.39.5