X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/25216cc7acedc987c26a159f0b640210c0ef101e..7eb16e136a720bdfda5a4d4782d9cce1d00f5ded:/src/store/context-menu/context-menu-actions.ts diff --git a/src/store/context-menu/context-menu-actions.ts b/src/store/context-menu/context-menu-actions.ts index da560e1e..e00b65b3 100644 --- a/src/store/context-menu/context-menu-actions.ts +++ b/src/store/context-menu/context-menu-actions.ts @@ -10,7 +10,7 @@ import { RootState } from 'store/store'; import { getResource, getResourceWithEditableStatus } from '../resources/resources'; import { UserResource } from 'models/user'; import { isSidePanelTreeCategory } from 'store/side-panel-tree/side-panel-tree-actions'; -import { extractUuidKind, ResourceKind, EditableResource } from 'models/resource'; +import { extractUuidKind, ResourceKind, EditableResource, Resource } from 'models/resource'; import { Process } from 'store/processes/process'; import { RepositoryResource } from 'models/repositories'; import { SshKeyResource } from 'models/ssh-key'; @@ -20,6 +20,7 @@ import { ProcessResource } from 'models/process'; import { CollectionResource } from 'models/collection'; import { GroupClass, GroupResource } from 'models/group'; import { GroupContentsResource } from 'services/groups-service/groups-service'; +import { LinkResource } from 'models/link'; export const contextMenuActions = unionize({ OPEN_CONTEXT_MENU: ofType<{ position: ContextMenuPosition, resource: ContextMenuResource }>(), @@ -39,6 +40,8 @@ export type ContextMenuResource = { isEditable?: boolean; outputUuid?: string; workflowUuid?: string; + storageClassesDesired?: string[]; + properties?: { [key: string]: string | string[] }; }; export const isKeyboardClick = (event: React.MouseEvent) => event.nativeEvent.detail === 0; @@ -65,6 +68,7 @@ export const openCollectionFilesContextMenu = (event: React.MouseEvent, })); }; -export const openComputeNodeContextMenu = (event: React.MouseEvent, resourceUuid: string) => - (dispatch: Dispatch) => { - dispatch(openContextMenu(event, { - name: '', - uuid: resourceUuid, - ownerUuid: '', - kind: ResourceKind.NODE, - menuKind: ContextMenuKind.NODE - })); - }; - export const openApiClientAuthorizationContextMenu = (event: React.MouseEvent, resourceUuid: string) => (dispatch: Dispatch) => { @@ -166,6 +159,7 @@ export const openProjectContextMenu = (event: React.MouseEvent, res uuid: res.uuid, kind: res.kind, menuKind, + description: res.description, ownerUuid: res.ownerUuid, isTrashed: ('isTrashed' in res) ? res.isTrashed : false, })); @@ -195,12 +189,36 @@ export const openProcessContextMenu = (event: React.MouseEvent, pro name: res.name, description: res.description, outputUuid: res.outputUuid || '', - workflowUuid: res.properties.workflowUuid || '', - menuKind: ContextMenuKind.PROCESS + workflowUuid: res.properties.template_uuid || '', + menuKind: ContextMenuKind.PROCESS_RESOURCE })); } }; +export const openPermissionEditContextMenu = (event: React.MouseEvent, link: LinkResource) => + (dispatch: Dispatch, getState: () => RootState) => { + if (link) { + dispatch(openContextMenu(event, { + name: link.name, + uuid: link.uuid, + kind: link.kind, + menuKind: ContextMenuKind.PERMISSION_EDIT, + ownerUuid: link.ownerUuid, + })); + } + }; + +export const openUserContextMenu = (event: React.MouseEvent, user: UserResource) => + (dispatch: Dispatch, getState: () => RootState) => { + dispatch(openContextMenu(event, { + name: '', + uuid: user.uuid, + ownerUuid: user.ownerUuid, + kind: user.kind, + menuKind: ContextMenuKind.USER + })); + }; + export const resourceUuidToContextMenuKind = (uuid: string, readonly = false) => (dispatch: Dispatch, getState: () => RootState) => { const { isAdmin: isAdminUser, uuid: userUuid } = getState().auth.user!; @@ -243,7 +261,23 @@ export const resourceUuidToContextMenuKind = (uuid: string, readonly = false) => return ContextMenuKind.ROOT_PROJECT; case ResourceKind.LINK: return ContextMenuKind.LINK; + case ResourceKind.WORKFLOW: + return ContextMenuKind.WORKFLOW; default: return; } }; + +export const openSearchResultsContextMenu = (event: React.MouseEvent, uuid: string) => + (dispatch: Dispatch, getState: () => RootState) => { + const res = getResource(uuid)(getState().resources); + if (res) { + dispatch(openContextMenu(event, { + name: '', + uuid: res.uuid, + ownerUuid: '', + kind: res.kind, + menuKind: ContextMenuKind.SEARCH_RESULTS, + })); + } + };