//
// SPDX-License-Identifier: AGPL-3.0
-import * as React from "react";
+import React from "react";
import { Field } from "redux-form";
-import { TextField } from "~/components/text-field/text-field";
-import { USER_EMAIL_VALIDATION, USER_LENGTH_VALIDATION } from "~/validators/validators";
-import { NativeSelectField } from "~/components/select-field/select-field";
+import { TextField } from "components/text-field/text-field";
+import { USER_EMAIL_VALIDATION, CHOOSE_VM_VALIDATION } from "validators/validators";
+import { NativeSelectField } from "components/select-field/select-field";
import { InputLabel } from "@material-ui/core";
-import { VirtualMachinesResource } from "~/models/virtual-machines";
+import { VirtualMachinesResource } from "models/virtual-machines";
+import { VIRTUAL_MACHINE_ADD_LOGIN_GROUPS_FIELD, VIRTUAL_MACHINE_ADD_LOGIN_VM_FIELD } from "store/virtual-machines/virtual-machines-actions";
+import { GroupArrayInput } from "views-components/virtual-machines-dialog/group-array-input";
+
+interface VirtualMachinesProps {
+ data: {
+ items: VirtualMachinesResource[];
+ };
+}
export const UserEmailField = () =>
<Field
name='email'
- component={TextField}
+ component={TextField as any}
validate={USER_EMAIL_VALIDATION}
autoFocus={true}
label="Email" />;
-export const UserVirtualMachineField = ({ data }: any) =>
+export const RequiredUserVirtualMachineField = ({ data }: VirtualMachinesProps) =>
+ <div style={{ marginBottom: '21px' }}>
+ <InputLabel>Virtual Machine</InputLabel>
+ <Field
+ name={VIRTUAL_MACHINE_ADD_LOGIN_VM_FIELD}
+ component={NativeSelectField as any}
+ validate={CHOOSE_VM_VALIDATION}
+ items={getVirtualMachinesList(data.items)} />
+ </div>;
+
+export const UserVirtualMachineField = ({ data }: VirtualMachinesProps) =>
<div style={{ marginBottom: '21px' }}>
<InputLabel>Virtual Machine</InputLabel>
<Field
- name='virtualMachine'
- component={NativeSelectField}
- validate={USER_LENGTH_VALIDATION}
+ name={VIRTUAL_MACHINE_ADD_LOGIN_VM_FIELD}
+ component={NativeSelectField as any}
items={getVirtualMachinesList(data.items)} />
</div>;
export const UserGroupsVirtualMachineField = () =>
- <Field
- name='groups'
- component={TextField}
- validate={USER_LENGTH_VALIDATION}
- label="Groups for virtual machine (comma separated list)" />;
+ <GroupArrayInput
+ name={VIRTUAL_MACHINE_ADD_LOGIN_GROUPS_FIELD}
+ input={{id:"Add groups to VM login (eg: docker, sudo)", disabled:false}}
+ required={false}
+ />
-const getVirtualMachinesList = (virtualMachines: VirtualMachinesResource[]) => {
- const mappedVirtualMachines = virtualMachines.map(it => ({ key: it.hostname, value: it.hostname }));
- return mappedVirtualMachines;
-};
+const getVirtualMachinesList = (virtualMachines: VirtualMachinesResource[]) =>
+ [{ key: "", value: "" }].concat(virtualMachines.map(it => ({ key: it.uuid, value: it.hostname })));