Skip to content

Commit 32a509e

Browse files
committed
Merge branch 'main' into feat/components-selection-for-mcp-improvements-new
2 parents 962e103 + 99131bb commit 32a509e

File tree

13 files changed

+100
-12
lines changed

13 files changed

+100
-12
lines changed

public/locales/en.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@
139139
"createButton": "Create",
140140
"cancelButton": "Cancel",
141141
"chargingTargetLabel": "Charging Target",
142+
"chargingTargetTypeLabel": "Charging Target Type",
142143
"displayNameLabel": "Display Name",
143144
"nameLabel": "Name",
144145
"metadataHeader": "Metadata",
@@ -282,7 +283,9 @@
282283
"name": "Name",
283284
"componentSelection": "Component Selection",
284285
"search": "Search",
285-
"components": "Components"
286+
"components": "Components",
287+
"notSelected": "Not selected",
288+
"btp": "BTP"
286289
},
287290
"buttons": {
288291
"viewResource": "View resource",

src/components/Dialogs/CreateProjectDialog.cy.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export const CreateProjectWorkspaceDialogWrapper: React.FC<{
5555
};
5656
return (
5757
<CreateProjectWorkspaceDialog
58+
type={'workspace'}
5859
isOpen={isOpen}
5960
setIsOpen={setIsOpen}
6061
titleText="Create Workspace"

src/components/Dialogs/CreateProjectDialogContainer.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,19 @@ export function CreateProjectDialogContainer({
4242
name: '',
4343
displayName: '',
4444
chargingTarget: '',
45+
chargingTargetType: 'btp',
4546
members: [],
4647
},
4748
});
4849
const { t } = useTranslation();
4950
const { user } = useAuthOnboarding();
5051

5152
const username = user?.email;
52-
5353
const clearForm = useCallback(() => {
5454
resetField('name');
5555
resetField('chargingTarget');
5656
resetField('displayName');
57+
resetField('chargingTargetType');
5758
}, [resetField]);
5859

5960
useEffect(() => {
@@ -79,6 +80,7 @@ export function CreateProjectDialogContainer({
7980
name,
8081
chargingTarget,
8182
displayName,
83+
chargingTargetType,
8284
members,
8385
}: OnCreatePayload): Promise<boolean> => {
8486
try {
@@ -87,6 +89,7 @@ export function CreateProjectDialogContainer({
8789
displayName: displayName,
8890
chargingTarget: chargingTarget,
8991
members: members,
92+
chargingTargetType: chargingTargetType,
9093
}),
9194
);
9295
setIsOpen(false);
@@ -115,6 +118,7 @@ export function CreateProjectDialogContainer({
115118
register={register}
116119
errors={errors}
117120
setValue={setValue}
121+
type={'project'}
118122
onCreate={handleSubmit(handleProjectCreate)}
119123
/>
120124
);

src/components/Dialogs/CreateProjectWorkspaceDialog.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export type OnCreatePayload = {
2020
name: string;
2121
displayName?: string;
2222
chargingTarget?: string;
23+
chargingTargetType?: string;
2324
members: Member[];
2425
};
2526

@@ -34,6 +35,7 @@ export interface CreateProjectWorkspaceDialogProps {
3435
errors: FieldErrors<CreateDialogProps>;
3536
setValue: UseFormSetValue<CreateDialogProps>;
3637
projectName?: string;
38+
type: 'workspace' | 'project';
3739
}
3840

3941
export function CreateProjectWorkspaceDialog({
@@ -47,6 +49,7 @@ export function CreateProjectWorkspaceDialog({
4749
errors,
4850
setValue,
4951
projectName,
52+
type,
5053
}: CreateProjectWorkspaceDialogProps) {
5154
const { t } = useTranslation();
5255
const [isKubectlDialogOpen, setIsKubectlDialogOpen] = useState(false);
@@ -87,6 +90,8 @@ export function CreateProjectWorkspaceDialog({
8790
<MetadataForm
8891
register={register}
8992
errors={errors}
93+
setValue={setValue}
94+
requireChargingTarget={type === 'project'}
9095
sideFormContent={
9196
<FormGroup
9297
headerText={t('CreateProjectWorkspaceDialog.membersHeader')}

src/components/Dialogs/CreateWorkspaceDialogContainer.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export type CreateDialogProps = {
2929
name: string;
3030
displayName?: string;
3131
chargingTarget?: string;
32+
chargingTargetType?: string;
3233
members: Member[];
3334
selectedComponents?: ComponentSelectionItem[];
3435
};
@@ -56,17 +57,18 @@ export function CreateWorkspaceDialogContainer({
5657
displayName: '',
5758
chargingTarget: '',
5859
members: [],
60+
chargingTargetType: '',
5961
},
6062
});
6163
const { t } = useTranslation();
6264
const { user } = useAuthOnboarding();
6365

6466
const username = user?.email;
65-
6667
const clearForm = useCallback(() => {
6768
resetField('name');
6869
resetField('chargingTarget');
6970
resetField('displayName');
71+
resetField('chargingTargetType');
7072
}, [resetField]);
7173

7274
useEffect(() => {
@@ -129,6 +131,7 @@ export function CreateWorkspaceDialogContainer({
129131
register={register}
130132
errors={errors}
131133
setValue={setValue}
134+
type={'workspace'}
132135
projectName={project}
133136
onCreate={handleSubmit(handleWorkspaceCreate)}
134137
/>

src/components/Dialogs/MetadataForm.tsx

Lines changed: 49 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,52 @@
1-
import { FieldErrors, UseFormRegister } from 'react-hook-form';
1+
import { FieldErrors, UseFormRegister, UseFormSetValue } from 'react-hook-form';
22
import { CreateDialogProps } from './CreateWorkspaceDialogContainer.tsx';
33
import { useTranslation } from 'react-i18next';
4-
import { Form, FormGroup, Input, Label } from '@ui5/webcomponents-react';
4+
import {
5+
Form,
6+
FormGroup,
7+
Input,
8+
Label,
9+
Option,
10+
Select,
11+
SelectDomRef,
12+
Ui5CustomEvent,
13+
} from '@ui5/webcomponents-react';
514
import styles from './CreateProjectWorkspaceDialog.module.css';
15+
import React from 'react';
616

717
export interface MetadataFormProps {
818
register: UseFormRegister<CreateDialogProps>;
919
errors: FieldErrors<CreateDialogProps>;
10-
20+
setValue: UseFormSetValue<CreateDialogProps>;
1121
sideFormContent?: React.ReactNode;
22+
requireChargingTarget?: boolean;
23+
}
24+
25+
interface SelectOption {
26+
label: string;
27+
value: string;
1228
}
1329

1430
export function MetadataForm({
1531
register,
1632
errors,
33+
setValue,
1734
sideFormContent,
35+
requireChargingTarget = false,
1836
}: MetadataFormProps) {
1937
const { t } = useTranslation();
20-
38+
const handleChargingTargetTypeChange = (
39+
event: Ui5CustomEvent<SelectDomRef, { selectedOption: HTMLElement }>,
40+
) => {
41+
const selectedOption = event.detail.selectedOption as HTMLElement;
42+
setValue('chargingTargetType', selectedOption.dataset.value);
43+
};
44+
const chargingTypes: SelectOption[] = [
45+
...(!requireChargingTarget
46+
? [{ label: t('common.notSelected'), value: '' }]
47+
: []),
48+
{ label: t('common.btp'), value: 'btp' },
49+
];
2150
return (
2251
<Form>
2352
<FormGroup
@@ -35,7 +64,6 @@ export function MetadataForm({
3564
valueStateMessage={<span>{errors.name?.message}</span>}
3665
required
3766
/>
38-
3967
<Label for={'displayName'}>
4068
{t('CreateProjectWorkspaceDialog.displayNameLabel')}
4169
</Label>
@@ -44,8 +72,21 @@ export function MetadataForm({
4472
{...register('displayName')}
4573
className={styles.input}
4674
/>
47-
48-
<Label for={'chargingTarget'}>
75+
<Label for={'chargingTargetType'} required={requireChargingTarget}>
76+
{t('CreateProjectWorkspaceDialog.chargingTargetTypeLabel')}
77+
</Label>
78+
<Select
79+
id={'chargingTargetType'}
80+
className={styles.input}
81+
onChange={handleChargingTargetTypeChange}
82+
>
83+
{chargingTypes.map((option) => (
84+
<Option key={option.value} data-value={option.value}>
85+
{option.label}
86+
</Option>
87+
))}
88+
</Select>
89+
<Label for={'chargingTarget'} required={requireChargingTarget}>
4990
{t('CreateProjectWorkspaceDialog.chargingTargetLabel')}
5091
</Label>
5192
<Input
@@ -54,6 +95,7 @@ export function MetadataForm({
5495
className={styles.input}
5596
/>
5697
</FormGroup>
98+
5799
{sideFormContent ? sideFormContent : null}
58100
</Form>
59101
);

src/components/Wizards/CreateManagedControlPlaneWizardContainer.tsx

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,17 @@ import {
4242
ComponentsSelectionContainer,
4343
filterSelectedComponents,
4444
} from '../ComponentsSelection/ComponentsSelectionContainer.tsx';
45-
import { idpPrefix } from '../../utils/idpPrefix.ts';
4645
import { CreateDialogProps } from '../Dialogs/CreateWorkspaceDialogContainer.tsx';
4746

47+
import { idpPrefix } from '../../utils/idpPrefix.ts';
48+
export type CreateDialogProps = {
49+
name: string;
50+
displayName?: string;
51+
chargingTarget?: string;
52+
chargingTargetType?: string;
53+
members: Member[];
54+
};
55+
4856
type CreateManagedControlPlaneWizardContainerProps = {
4957
isOpen: boolean;
5058
setIsOpen: (isOpen: boolean) => void;
@@ -91,6 +99,7 @@ export const CreateManagedControlPlaneWizardContainer: FC<
9199
name: '',
92100
displayName: '',
93101
chargingTarget: '',
102+
chargingTargetType: '',
94103
members: [],
95104
selectedComponents: [],
96105
},
@@ -117,6 +126,7 @@ export const CreateManagedControlPlaneWizardContainer: FC<
117126
const clearFormFields = useCallback(() => {
118127
resetField('name');
119128
resetField('chargingTarget');
129+
resetField('chargingTargetType');
120130
resetField('displayName');
121131
}, [resetField]);
122132

@@ -298,7 +308,11 @@ export const CreateManagedControlPlaneWizardContainer: FC<
298308
selected={selectedStep === 'metadata'}
299309
data-step="metadata"
300310
>
301-
<MetadataForm register={register} errors={errors} />
311+
<MetadataForm
312+
setValue={setValue}
313+
register={register}
314+
errors={errors}
315+
/>
302316
</WizardStep>
303317
<WizardStep
304318
icon={'user-edit'}

src/lib/api/types/crate/createManagedControlPlane.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Resource } from '../resource';
22
import {
33
CHARGING_TARGET_LABEL,
4+
CHARGING_TARGET_TYPE_LABEL,
45
DISPLAY_NAME_ANNOTATION,
56
} from '../shared/keyNames';
67
import { Member } from '../shared/members';
@@ -65,6 +66,7 @@ export const CreateManagedControlPlane = (
6566
optional?: {
6667
displayName?: string;
6768
chargingTarget?: string;
69+
chargingTargetType?: string;
6870
members?: Member[];
6971
selectedComponents?: ComponentSelectionItem[];
7072
},
@@ -112,6 +114,7 @@ export const CreateManagedControlPlane = (
112114
[DISPLAY_NAME_ANNOTATION]: optional?.displayName ?? '',
113115
},
114116
labels: {
117+
[CHARGING_TARGET_TYPE_LABEL]: optional?.chargingTargetType ?? '',
115118
[CHARGING_TARGET_LABEL]: optional?.chargingTarget ?? '',
116119
},
117120
},

src/lib/api/types/crate/createProject.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Resource } from '../resource';
22
import {
33
CHARGING_TARGET_LABEL,
4+
CHARGING_TARGET_TYPE_LABEL,
45
DISPLAY_NAME_ANNOTATION,
56
} from '../shared/keyNames';
67
import { Member } from '../shared/members';
@@ -29,6 +30,7 @@ export const CreateProject = (
2930
optional?: {
3031
displayName?: string;
3132
chargingTarget?: string;
33+
chargingTargetType?: string;
3234
members?: Member[];
3335
},
3436
): CreateProjectType => {
@@ -41,6 +43,7 @@ export const CreateProject = (
4143
[DISPLAY_NAME_ANNOTATION]: optional?.displayName ?? '',
4244
},
4345
labels: {
46+
[CHARGING_TARGET_TYPE_LABEL]: optional?.chargingTargetType ?? '',
4447
[CHARGING_TARGET_LABEL]: optional?.chargingTarget ?? '',
4548
},
4649
},

src/lib/api/types/crate/createWorkspace.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Resource } from '../resource';
22
import {
33
CHARGING_TARGET_LABEL,
4+
CHARGING_TARGET_TYPE_LABEL,
45
DISPLAY_NAME_ANNOTATION,
56
} from '../shared/keyNames';
67
import { Member } from '../shared/members';
@@ -31,6 +32,7 @@ export const CreateWorkspace = (
3132
optional?: {
3233
displayName?: string;
3334
chargingTarget?: string;
35+
chargingTargetType?: string;
3436
members?: Member[];
3537
},
3638
): CreateWorkspaceType => {
@@ -44,6 +46,7 @@ export const CreateWorkspace = (
4446
[DISPLAY_NAME_ANNOTATION]: optional?.displayName ?? '',
4547
},
4648
labels: {
49+
[CHARGING_TARGET_TYPE_LABEL]: optional?.chargingTargetType ?? '',
4750
[CHARGING_TARGET_LABEL]: optional?.chargingTarget ?? '',
4851
},
4952
},

0 commit comments

Comments
 (0)