From d4c73aa98677d4fb0c70e444a56c16235cdad597 Mon Sep 17 00:00:00 2001 From: Lisa Knox Date: Wed, 24 Jan 2024 14:39:31 -0500 Subject: [PATCH] 21224: user card has non-admin menu Arvados-DCO-1.1-Signed-off-by: Lisa Knox --- .../ms-kind-action-differentiator.ts | 4 +- .../ms-toolbar-action-filters.ts | 4 ++ .../multiselect-toolbar/ms-menu-actions.ts | 1 + .../multiselect-toolbar/ms-user-action-set.ts | 55 +++++++++++++++++++ 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 services/workbench2/src/views-components/multiselect-toolbar/ms-user-action-set.ts diff --git a/services/workbench2/src/components/multiselect-toolbar/ms-kind-action-differentiator.ts b/services/workbench2/src/components/multiselect-toolbar/ms-kind-action-differentiator.ts index 5a84d4c573..7819c902cc 100644 --- a/services/workbench2/src/components/multiselect-toolbar/ms-kind-action-differentiator.ts +++ b/services/workbench2/src/components/multiselect-toolbar/ms-kind-action-differentiator.ts @@ -8,16 +8,18 @@ import { msCollectionActionSet } from "views-components/multiselect-toolbar/ms-c import { msProjectActionSet } from "views-components/multiselect-toolbar/ms-project-action-set"; import { msProcessActionSet } from "views-components/multiselect-toolbar/ms-process-action-set"; import { msWorkflowActionSet } from "views-components/multiselect-toolbar/ms-workflow-action-set"; +import { msUserActionSet } from "views-components/multiselect-toolbar/ms-user-action-set"; export function findActionByName(name: string, actionSet: MultiSelectMenuActionSet) { return actionSet[0].find(action => action.name === name); } -const { COLLECTION, PROCESS, PROJECT, WORKFLOW } = ResourceKind; +const { COLLECTION, PROCESS, PROJECT, WORKFLOW , USER} = ResourceKind; export const kindToActionSet: Record = { [COLLECTION]: msCollectionActionSet, [PROCESS]: msProcessActionSet, [PROJECT]: msProjectActionSet, [WORKFLOW]: msWorkflowActionSet, + [USER]: msUserActionSet }; diff --git a/services/workbench2/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts b/services/workbench2/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts index b34cc22cb9..b231135d3b 100644 --- a/services/workbench2/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts +++ b/services/workbench2/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts @@ -16,6 +16,7 @@ import { import { msProcessActionSet, msCommonProcessActionFilter, msAdminProcessActionFilter, msRunningProcessActionFilter } from 'views-components/multiselect-toolbar/ms-process-action-set'; import { msWorkflowActionSet, msWorkflowActionFilter, msReadOnlyWorkflowActionFilter } from 'views-components/multiselect-toolbar/ms-workflow-action-set'; import { ResourceKind } from 'models/resource'; +import { msUserActionSet } from "views-components/multiselect-toolbar/ms-user-action-set"; export enum msMenuResourceKind { API_CLIENT_AUTHORIZATION = 'ApiClientAuthorization', @@ -82,6 +83,7 @@ const { FILTER_GROUP_ADMIN, WORKFLOW, READONLY_WORKFLOW, + ROOT_PROJECT } = msMenuResourceKind; export type TMultiselectActionsFilters = Record]>; @@ -112,4 +114,6 @@ export const multiselectActionsFilters: TMultiselectActionsFilters = { [WORKFLOW]: [msWorkflowActionSet, msWorkflowActionFilter], [READONLY_WORKFLOW]: [msWorkflowActionSet, msReadOnlyWorkflowActionFilter], + + [ROOT_PROJECT]: [msUserActionSet, allActionNames(msUserActionSet)], }; diff --git a/services/workbench2/src/views-components/multiselect-toolbar/ms-menu-actions.ts b/services/workbench2/src/views-components/multiselect-toolbar/ms-menu-actions.ts index 91ad96ce4b..c9cb473616 100644 --- a/services/workbench2/src/views-components/multiselect-toolbar/ms-menu-actions.ts +++ b/services/workbench2/src/views-components/multiselect-toolbar/ms-menu-actions.ts @@ -24,6 +24,7 @@ export enum MultiSelectMenuActionNames { MOVE_TO_TRASH = 'Move to trash', ADD_TO_PUBLIC_FAVORITES = 'Add to public favorites', API_DETAILS = 'API Details', + ATTRIBUTES = 'Attributes', CANCEL = 'CANCEL', COPY_AND_RERUN_PROCESS = 'Copy and re-run process', COPY_TO_CLIPBOARD = 'Copy to clipboard', diff --git a/services/workbench2/src/views-components/multiselect-toolbar/ms-user-action-set.ts b/services/workbench2/src/views-components/multiselect-toolbar/ms-user-action-set.ts new file mode 100644 index 0000000000..0836ce02f0 --- /dev/null +++ b/services/workbench2/src/views-components/multiselect-toolbar/ms-user-action-set.ts @@ -0,0 +1,55 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +import { AdvancedIcon, AttributesIcon } from "components/icon/icon"; +import { MultiSelectMenuAction, MultiSelectMenuActionSet, MultiSelectMenuActionNames } from "./ms-menu-actions"; +import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab'; +import { Dispatch } from "redux"; +import { RootState } from "store/store"; +import { ServiceRepository } from "services/services"; +import { dialogActions } from "store/dialog/dialog-actions"; +import { UserResource } from "models/user"; +import { getResource } from "store/resources/resources"; + +const { ATTRIBUTES, API_DETAILS } = MultiSelectMenuActionNames + +export const USER_ATTRIBUTES_DIALOG = 'userAttributesDialog'; + +const openUserAttributes = (uuid: string) => + (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + const { resources } = getState(); + const data = getResource(uuid)(resources); + dispatch(dialogActions.OPEN_DIALOG({ id: USER_ATTRIBUTES_DIALOG, data })); + }; + +const msUserAttributes: MultiSelectMenuAction = { + name: ATTRIBUTES, + icon: AttributesIcon, + hasAlts: false, + isForMulti: false, + execute: (dispatch, resources) => { + dispatch(openUserAttributes(resources[0].uuid)); + }, +}; + +const msAdvancedAction: MultiSelectMenuAction = { + name: API_DETAILS, + icon: AdvancedIcon, + hasAlts: false, + isForMulti: false, + execute: (dispatch, resources) => { + dispatch(openAdvancedTabDialog(resources[0].uuid)); + }, +}; + +export const msUserActionSet: MultiSelectMenuActionSet = [ + [ + msAdvancedAction, + msUserAttributes + ] +]; + + +export const msUserCommonActionFilter = new Set([ATTRIBUTES, API_DETAILS]); + -- 2.30.2