// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import React from "react"; import { Field } from "redux-form"; 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 { 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 as any} validate={USER_EMAIL_VALIDATION} autoFocus={true} label="Email" />; 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={VIRTUAL_MACHINE_ADD_LOGIN_VM_FIELD} component={NativeSelectField as any} items={getVirtualMachinesList(data.items)} /> </div>; export const UserGroupsVirtualMachineField = () => <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[]) => [{ key: "", value: "" }].concat(virtualMachines.map(it => ({ key: it.uuid, value: it.hostname })));