Skip to content

Commit b1ddcd3

Browse files
committed
feat: Allow users to setup serveraddress
Users can set a `serveraddress` for an image credential Signed-off-by: Luca Zaninotto <luca.zaninotto@secomind.com>
1 parent 8f6876d commit b1ddcd3

5 files changed

Lines changed: 72 additions & 4 deletions

File tree

frontend/src/components/ImageCredentialsTable.test.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ const data: Data = {
6363
const labels = {
6464
label: "Label",
6565
username: "Username",
66+
serveraddress: "Server Address",
6667
};
6768

6869
const ComponentWithQuery = () => {
@@ -128,12 +129,15 @@ it("renders Image Credentials data in correct columns", () => {
128129
const columns = screen.getAllByRole("columnheader");
129130
const cells = screen.getAllByRole("cell");
130131

131-
expect(columns).toHaveLength(2);
132-
expect(cells).toHaveLength(2);
132+
expect(columns).toHaveLength(3);
133+
expect(cells).toHaveLength(3);
133134

134135
expect(columns[0]).toHaveTextContent(labels.label);
135136
expect(cells[0]).toHaveTextContent(record.node.label);
136137

137138
expect(columns[1]).toHaveTextContent(labels.username);
138139
expect(cells[1]).toHaveTextContent(record.node.username);
140+
141+
expect(columns[2]).toHaveTextContent(labels.serveraddress);
142+
expect(cells[2]).toHaveTextContent("");
139143
});

frontend/src/components/ImageCredentialsTable.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ const IMAGE_CREDENTIALS_FRAGMENT = graphql`
4747
id
4848
label
4949
username
50+
serveraddress
5051
}
5152
}
5253
}
@@ -88,6 +89,15 @@ const columns = [
8889
),
8990
cell: ({ getValue }) => <span className="text-nowrap">{getValue()}</span>,
9091
}),
92+
columnHelper.accessor("serveraddress", {
93+
header: () => (
94+
<FormattedMessage
95+
id="components.ImageCredentialsTable.serveraddressTitle"
96+
defaultMessage="Server Address"
97+
/>
98+
),
99+
cell: ({ getValue }) => <span className="text-nowrap">{getValue()}</span>,
100+
}),
91101
];
92102

93103
type ImageCredentialsTableProps = {

frontend/src/forms/CreateImageCredential.tsx

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ const initialData: ImageCredentialFormData = {
3939
label: "",
4040
username: "",
4141
password: "",
42+
serveraddress: "",
4243
};
4344

4445
interface Props {
@@ -147,6 +148,27 @@ const CreateImageCredential = ({ isLoading = false, onSubmit }: Props) => {
147148
</InputGroup>
148149
</FormRow>
149150

151+
<FormRow
152+
id="image-credential-form-serveraddress"
153+
label={
154+
<FormattedMessage
155+
id="components.CreateImageCredentialForm.ServeraddressLabel"
156+
defaultMessage="Server Address"
157+
/>
158+
}
159+
>
160+
<Form.Control
161+
{...register("serveraddress")}
162+
autoComplete="off"
163+
isInvalid={!!errors.serveraddress}
164+
/>
165+
<Form.Control.Feedback type="invalid">
166+
{errors.serveraddress?.message && (
167+
<FormattedMessage id={errors.serveraddress?.message} />
168+
)}
169+
</Form.Control.Feedback>
170+
</FormRow>
171+
150172
<div className="d-flex justify-content-end align-items-center">
151173
<Button variant="primary" type="submit" disabled={isLoading}>
152174
{isLoading && <Spinner size="sm" className="me-2" />}

frontend/src/forms/UpdateImageCredential.tsx

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ const IMAGE_CREDENTIAL_FRAGMENT = graphql`
3939
id
4040
label
4141
username
42+
serveraddress
4243
}
4344
`;
4445

@@ -49,7 +50,7 @@ interface Props {
4950
}
5051

5152
const UpdateImageCredentialForm = ({ imageCredentialRef, onDelete }: Props) => {
52-
const { id, label, username } = useFragment(
53+
const { id, label, username, serveraddress } = useFragment(
5354
IMAGE_CREDENTIAL_FRAGMENT,
5455
imageCredentialRef,
5556
);
@@ -59,8 +60,9 @@ const UpdateImageCredentialForm = ({ imageCredentialRef, onDelete }: Props) => {
5960
id,
6061
label,
6162
username,
63+
serveraddress,
6264
}),
63-
[id, label, username],
65+
[id, label, username, serveraddress],
6466
);
6567

6668
const {
@@ -116,6 +118,27 @@ const UpdateImageCredentialForm = ({ imageCredentialRef, onDelete }: Props) => {
116118
)}
117119
</Form.Control.Feedback>
118120
</FormRow>
121+
<FormRow
122+
id="image-credential-form-serveraddress"
123+
label={
124+
<FormattedMessage
125+
id="forms.UpdateImageCredential.ServeraddressLabel"
126+
defaultMessage="Server Address"
127+
/>
128+
}
129+
>
130+
<Form.Control
131+
{...register("serveraddress")}
132+
readOnly
133+
isInvalid={!!errors.serveraddress}
134+
/>
135+
136+
<Form.Control.Feedback type="invalid">
137+
{errors.serveraddress?.message && (
138+
<FormattedMessage id={errors.serveraddress?.message} />
139+
)}
140+
</Form.Control.Feedback>
141+
</FormRow>
119142
<Stack
120143
direction="horizontal"
121144
gap={3}

frontend/src/i18n/langs/en.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,9 @@
454454
"components.CreateHardwareTypeForm.submitButton": {
455455
"defaultMessage": "Create"
456456
},
457+
"components.CreateImageCredentialForm.ServeraddressLabel": {
458+
"defaultMessage": "Server Address"
459+
},
457460
"components.CreateImageCredentialForm.labelLabel": {
458461
"defaultMessage": "Label"
459462
},
@@ -939,6 +942,9 @@
939942
"components.ImageCredentialsTable.labelTitle": {
940943
"defaultMessage": "Label"
941944
},
945+
"components.ImageCredentialsTable.serveraddressTitle": {
946+
"defaultMessage": "Server Address"
947+
},
942948
"components.ImageCredentialsTable.usernameTitle": {
943949
"defaultMessage": "Username"
944950
},
@@ -2166,6 +2172,9 @@
21662172
"forms.UpdateHardwareType.submitButton": {
21672173
"defaultMessage": "Update"
21682174
},
2175+
"forms.UpdateImageCredential.ServeraddressLabel": {
2176+
"defaultMessage": "Server Address"
2177+
},
21692178
"forms.UpdateImageCredential.deleteButton": {
21702179
"defaultMessage": "Delete"
21712180
},

0 commit comments

Comments
 (0)