correct-order-for-public-favorites-inside-tree-project
[arvados-workbench2.git] / src / views-components / dialog-forms / setup-shell-account-dialog.tsx
index 75f0bb6a5050513d70dd02b7e46c59f4a1dee1ac..c53f53c2ad90346572ff53cdf7ccd7a975238218 100644 (file)
@@ -12,6 +12,7 @@ import { USER_LENGTH_VALIDATION } from '~/validators/validators';
 import { InputLabel } from '@material-ui/core';
 import { NativeSelectField } from '~/components/select-field/select-field';
 import { SETUP_SHELL_ACCOUNT_DIALOG, createUser } from '~/store/users/users-actions';
+import { UserResource } from '~/models/user';
 
 interface SetupShellAccountFormDialogData {
     email: string;
@@ -37,12 +38,39 @@ export const SetupShellAccountDialog = compose(
         />
 );
 
-const UserEmailField = ({ data }: any) =>
-    <Field
-        name='email'
-        component={TextField}
-        disabled
-        label={data.email} />;
+interface UserProps {
+    data: {
+        user: UserResource;
+    };
+}
+
+interface VirtualMachinesProps {
+    data: {
+        items: VirtualMachinesResource[];
+    };
+}
+interface DataProps {
+    user: UserResource;
+    items: VirtualMachinesResource[];
+}
+
+const UserEmailField = ({ data }: UserProps) =>
+    <span>
+        <Field
+            name='email'
+            component={TextField}
+            disabled
+            label={data.user.email} /></span>;
+
+const UserVirtualMachineField = ({ data }: VirtualMachinesProps) =>
+    <div style={{ marginBottom: '21px' }}>
+        <InputLabel>Virtual Machine</InputLabel>
+        <Field
+            name='virtualMachine'
+            component={NativeSelectField}
+            validate={USER_LENGTH_VALIDATION}
+            items={getVirtualMachinesList(data.items)} />
+    </div>;
 
 const UserGroupsVirtualMachineField = () =>
     <Field
@@ -51,11 +79,15 @@ const UserGroupsVirtualMachineField = () =>
         validate={USER_LENGTH_VALIDATION}
         label="Groups for virtual machine (comma separated list)" />;
 
+const getVirtualMachinesList = (virtualMachines: VirtualMachinesResource[]) =>
+    virtualMachines.map(it => ({ key: it.hostname, value: it.hostname }));
+
 type SetupShellAccountDialogComponentProps = WithDialogProps<{}> & InjectedFormProps<SetupShellAccountFormDialogData>;
 
 const SetupShellAccountFormFields = (props: SetupShellAccountDialogComponentProps) =>
     <>
-        <UserEmailField data={props.data}/>
+        <UserEmailField data={props.data as DataProps} />
+        <UserVirtualMachineField data={props.data as DataProps} />
         <UserGroupsVirtualMachineField />
     </>;