From: Pawel Kowalczyk Date: Tue, 18 Dec 2018 09:08:51 +0000 (+0100) Subject: merge master X-Git-Tag: 1.4.0~86^2~5 X-Git-Url: https://git.arvados.org/arvados-workbench2.git/commitdiff_plain/229eaf53b39af3a7e9408ed5f7e49d74b318445a merge master Feature #14565 Arvados-DCO-1.1-Signed-off-by: Pawel Kowalczyk --- 229eaf53b39af3a7e9408ed5f7e49d74b318445a diff --cc src/store/users/users-actions.ts index 1a1c58ee,585a3663..9e76396d --- a/src/store/users/users-actions.ts +++ b/src/store/users/users-actions.ts @@@ -32,20 -31,6 +32,21 @@@ export const openUserAttributes = (uuid dispatch(dialogActions.OPEN_DIALOG({ id: USER_ATTRIBUTES_DIALOG, data })); }; +export const openUserManage = (uuid: string) => + (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + const { resources } = getState(); + const data = getResource(uuid)(resources); + dispatch(dialogActions.OPEN_DIALOG({ id: USER_MANAGE_DIALOG, data })); + }; + +export const openSetupShellAccount = (uuid: string) => - (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { ++ async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + const { resources } = getState(); - const data = getResource(uuid)(resources); - dispatch(dialogActions.OPEN_DIALOG({ id: SETUP_SHELL_ACCOUNT_DIALOG, data })); ++ const user = getResource(uuid)(resources); ++ const virtualMachines = await services.virtualMachineService.list(); ++ dispatch(dialogActions.OPEN_DIALOG({ id: SETUP_SHELL_ACCOUNT_DIALOG, data: { user, ...virtualMachines } })); + }; + export const openUserCreateDialog = () => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { const userUuid = await services.authService.getUuid(); diff --cc src/views-components/dialog-forms/setup-shell-account-dialog.tsx index 75f0bb6a,00000000..8b9a6b61 mode 100644,000000..100644 --- a/src/views-components/dialog-forms/setup-shell-account-dialog.tsx +++ b/src/views-components/dialog-forms/setup-shell-account-dialog.tsx @@@ -1,63 -1,0 +1,79 @@@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 +import * as React from 'react'; +import { compose } from "redux"; +import { reduxForm, InjectedFormProps, Field } from 'redux-form'; +import { withDialog, WithDialogProps } from "~/store/dialog/with-dialog"; +import { FormDialog } from '~/components/form-dialog/form-dialog'; +import { TextField } from '~/components/text-field/text-field'; +import { VirtualMachinesResource } from '~/models/virtual-machines'; +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'; + +interface SetupShellAccountFormDialogData { + email: string; + virtualMachineName: string; + groupVirtualMachine: string; +} + +export const SetupShellAccountDialog = compose( + withDialog(SETUP_SHELL_ACCOUNT_DIALOG), + reduxForm({ + form: SETUP_SHELL_ACCOUNT_DIALOG, + onSubmit: (data, dispatch) => { + dispatch(createUser(data)); + } + }) +)( + (props: SetupShellAccountDialogComponentProps) => + +); + +const UserEmailField = ({ data }: any) => + ; ++ label={data.user.email} />; ++ ++const UserVirtualMachineField = ({ data }: any) => ++
++ Virtual Machine ++ ++
; + +const UserGroupsVirtualMachineField = () => + ; + ++const getVirtualMachinesList = (virtualMachines: VirtualMachinesResource[]) => { ++ const mappedVirtualMachines = virtualMachines.map(it => ({ key: it.hostname, value: it.hostname })); ++ return mappedVirtualMachines; ++}; ++ +type SetupShellAccountDialogComponentProps = WithDialogProps<{}> & InjectedFormProps; + +const SetupShellAccountFormFields = (props: SetupShellAccountDialogComponentProps) => + <> + ++ + + ; + + + diff --cc src/views/workbench/workbench.tsx index cba89b3b,bff328e8..6c7c2438 --- a/src/views/workbench/workbench.tsx +++ b/src/views/workbench/workbench.tsx @@@ -79,8 -79,14 +79,16 @@@ import { UserPanel } from '~/views/user import { UserAttributesDialog } from '~/views-components/user-dialog/attributes-dialog'; import { CreateUserDialog } from '~/views-components/dialog-forms/create-user-dialog'; import { HelpApiClientAuthorizationDialog } from '~/views-components/api-client-authorizations-dialog/help-dialog'; +import { UserManageDialog } from '~/views-components/user-dialog/manage-dialog'; +import { SetupShellAccountDialog } from '~/views-components/dialog-forms/setup-shell-account-dialog'; + import { GroupsPanel } from '~/views/groups-panel/groups-panel'; + import { CreateGroupDialog } from '~/views-components/dialog-forms/create-group-dialog'; + import { RemoveGroupDialog } from '~/views-components/groups-dialog/remove-dialog'; + import { GroupAttributesDialog } from '~/views-components/groups-dialog/attributes-dialog'; + import { GroupDetailsPanel } from '~/views/group-details-panel/group-details-panel'; + import { RemoveGroupMemberDialog } from '~/views-components/groups-dialog/member-remove-dialog'; + import { GroupMemberAttributesDialog } from '~/views-components/groups-dialog/member-attributes-dialog'; + import { AddGroupMembersDialog } from '~/views-components/dialog-forms/add-group-member-dialog'; type CssRules = 'root' | 'container' | 'splitter' | 'asidePanel' | 'contentWrapper' | 'content';