[arvados-workbench2] updated: 2.7.0-196-g1d5fd6f8

git repository hosting git at public.arvados.org
Tue Nov 14 15:48:14 UTC 2023


Summary of changes:
 .../multiselect-toolbar/MultiselectToolbar.tsx     | 16 ++++++-------
 .../ms-kind-action-differentiator.ts               |  6 ++---
 .../ms-toolbar-action-filters.ts                   |  4 ++--
 .../context-menu/context-menu-action-set.ts        |  9 ++++++++
 .../multiselect-toolbar/ms-project-action-set.ts   | 26 +++++++++++++++-------
 5 files changed, 39 insertions(+), 22 deletions(-)

       via  1d5fd6f8997bb6f06c8ed62dc01905566cbe135e (commit)
      from  23a7c88df4d188880a2613c826f1537aa8f132af (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 1d5fd6f8997bb6f06c8ed62dc01905566cbe135e
Author: Lisa Knox <lisaknox83 at gmail.com>
Date:   Tue Nov 14 10:48:09 2023 -0500

    21128: dynamic menu types created Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa.knox at curii.com>

diff --git a/src/components/multiselect-toolbar/MultiselectToolbar.tsx b/src/components/multiselect-toolbar/MultiselectToolbar.tsx
index 3d8ae0c3..a8a3f7a8 100644
--- a/src/components/multiselect-toolbar/MultiselectToolbar.tsx
+++ b/src/components/multiselect-toolbar/MultiselectToolbar.tsx
@@ -13,7 +13,7 @@ import { ContextMenuResource } from "store/context-menu/context-menu-actions";
 import { Resource, extractUuidKind } from "models/resource";
 import { getResource } from "store/resources/resources";
 import { ResourcesState } from "store/resources/resources";
-import { ContextMenuAction, ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
+import { ContextMenuAction, ContextMenuActionSet, DynamicContextMenuAction } from "views-components/context-menu/context-menu-action-set";
 import { RestoreFromTrashIcon, TrashIcon } from "components/icon/icon";
 import { multiselectActionsFilters, TMultiselectActionsFilters, contextMenuActionConsts } from "./ms-toolbar-action-filters";
 import { kindToActionSet, findActionByName } from "./ms-kind-action-differentiator";
@@ -67,10 +67,10 @@ export const MultiselectToolbar = connect(
                 >
                     {buttons.length ? (
                         buttons.map((btn, i) =>
-                            btn.name === "ToggleTrashAction" ? (
+                            btn.defaultText ? (
                                 <Tooltip
                                     className={classes.button}
-                                    title={currentPathIsTrash ? "Restore selected" : "Move to trash"}
+                                    title={!currentPathIsTrash ? btn.defaultText: btn.altText}
                                     key={i}
                                     disableFocusListener
                                 >
@@ -85,9 +85,7 @@ export const MultiselectToolbar = connect(
                                     key={i}
                                     disableFocusListener
                                 >
-                                    <IconButton onClick={() => props.executeMulti(btn, checkedList, props.resources)}>
-                                        {btn.icon ? btn.icon({}) : <></>}
-                                    </IconButton>
+                                    <IconButton onClick={() => props.executeMulti(btn, checkedList, props.resources)}>{btn.icon ? btn.icon({}) : <></>}</IconButton>
                                 </Tooltip>
                             )
                         )
@@ -96,7 +94,7 @@ export const MultiselectToolbar = connect(
                     )}
                 </Toolbar>
             </React.Fragment>
-        );
+        )
     })
 );
 
@@ -135,9 +133,9 @@ function filterActions(actionArray: ContextMenuActionSet, filters: Set<string>):
 }
 
 function selectActionsByKind(currentResourceKinds: Array<string>, filterSet: TMultiselectActionsFilters) {
-    const rawResult: Set<ContextMenuAction> = new Set();
+    const rawResult: Set<DynamicContextMenuAction> = new Set();
     const resultNames = new Set();
-    const allFiltersArray: ContextMenuAction[][] = [];
+    const allFiltersArray: DynamicContextMenuAction[][] = []
     currentResourceKinds.forEach(kind => {
         if (filterSet[kind]) {
             const actions = filterActions(...filterSet[kind]);
diff --git a/src/components/multiselect-toolbar/ms-kind-action-differentiator.ts b/src/components/multiselect-toolbar/ms-kind-action-differentiator.ts
index e2f643b6..48c3af3c 100644
--- a/src/components/multiselect-toolbar/ms-kind-action-differentiator.ts
+++ b/src/components/multiselect-toolbar/ms-kind-action-differentiator.ts
@@ -3,18 +3,18 @@
 // SPDX-License-Identifier: AGPL-3.0
 
 import { ResourceKind } from "models/resource";
-import { ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
+import { DynamicContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
 import { msCollectionActionSet } from "views-components/multiselect-toolbar/ms-collection-action-set";
 import { msProjectActionSet } from "views-components/multiselect-toolbar/ms-project-action-set";
 import { msProcessActionSet } from "views-components/multiselect-toolbar/ms-process-action-set";
 
-export function findActionByName(name: string, actionSet: ContextMenuActionSet) {
+export function findActionByName(name: string, actionSet: DynamicContextMenuActionSet) {
     return actionSet[0].find(action => action.name === name);
 }
 
 const { COLLECTION, PROJECT, PROCESS } = ResourceKind;
 
-export const kindToActionSet: Record<string, ContextMenuActionSet> = {
+export const kindToActionSet: Record<string, DynamicContextMenuActionSet> = {
     [COLLECTION]: msCollectionActionSet,
     [PROJECT]: msProjectActionSet,
     [PROCESS]: msProcessActionSet,
diff --git a/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts b/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
index 18063da7..5ef29370 100644
--- a/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
+++ b/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
@@ -3,12 +3,12 @@
 // SPDX-License-Identifier: AGPL-3.0
 
 import { ResourceKind } from "models/resource";
-import { ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
+import { DynamicContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
 import { msCollectionActionSet } from "views-components/multiselect-toolbar/ms-collection-action-set";
 import { msProjectActionSet } from "views-components/multiselect-toolbar/ms-project-action-set";
 import { msProcessActionSet } from "views-components/multiselect-toolbar/ms-process-action-set";
 
-export type TMultiselectActionsFilters = Record<string, [ContextMenuActionSet, Set<string>]>;
+export type TMultiselectActionsFilters = Record<string, [DynamicContextMenuActionSet, Set<string>]>;
 
 export const contextMenuActionConsts = {
     MAKE_A_COPY: "Make a copy",
diff --git a/src/views-components/context-menu/context-menu-action-set.ts b/src/views-components/context-menu/context-menu-action-set.ts
index a953500b..db59b5f0 100644
--- a/src/views-components/context-menu/context-menu-action-set.ts
+++ b/src/views-components/context-menu/context-menu-action-set.ts
@@ -5,9 +5,18 @@
 import { Dispatch } from "redux";
 import { ContextMenuItem } from "components/context-menu/context-menu";
 import { ContextMenuResource } from "store/context-menu/context-menu-actions";
+import { IconType } from "components/icon/icon";
 
 export interface ContextMenuAction extends ContextMenuItem {
     execute(dispatch: Dispatch, resources: ContextMenuResource[], state?: any): void;
 }
 
+export interface DynamicContextMenuAction extends ContextMenuAction {
+    defaultText?: string
+    defaultIcon?: IconType
+    altText?: string
+    altIcon?: IconType
+}
+
 export type ContextMenuActionSet = Array<Array<ContextMenuAction>>;
+export type DynamicContextMenuActionSet = Array<Array<DynamicContextMenuAction>>;
diff --git a/src/views-components/multiselect-toolbar/ms-project-action-set.ts b/src/views-components/multiselect-toolbar/ms-project-action-set.ts
index 2907686a..8d58f413 100644
--- a/src/views-components/multiselect-toolbar/ms-project-action-set.ts
+++ b/src/views-components/multiselect-toolbar/ms-project-action-set.ts
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import { ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
+import { DynamicContextMenuActionSet, DynamicContextMenuAction } from "views-components/context-menu/context-menu-action-set";
 import { MoveToIcon, Link } from "components/icon/icon";
 import { openMoveProjectDialog } from "store/projects/project-move-actions";
 import { ToggleTrashAction } from "views-components/context-menu/actions/trash-action";
@@ -11,12 +11,19 @@ import { copyToClipboardAction } from "store/open-in-new-tab/open-in-new-tab.act
 import { ToggleFavoriteAction } from "views-components/context-menu/actions/favorite-action";
 import { toggleFavorite } from "store/favorites/favorites-actions";
 import { favoritePanelActions } from "store/favorite-panel/favorite-panel-action";
+import { AddFavoriteIcon, RemoveFavoriteIcon } from "components/icon/icon";
+import { RestoreFromTrashIcon, TrashIcon } from "components/icon/icon";
 
-export const msToggleFavoriteAction = {
-    component: ToggleFavoriteAction,
+
+export const msToggleFavoriteAction: DynamicContextMenuAction = {
     name: "ToggleFavoriteAction",
+    defaultText: 'Add to Favorites',
+    altText: 'Remove from Favorites',
+    defaultIcon: AddFavoriteIcon,
+    altIcon: RemoveFavoriteIcon,
+
     execute: (dispatch, resources) => {
-        dispatch(toggleFavorite(resources[0])).then(() => {
+        dispatch<any>(toggleFavorite(resources[0])).then(() => {
             dispatch(favoritePanelActions.REQUEST_ITEMS());
         });
     },
@@ -38,14 +45,17 @@ export const msMoveToAction = {
     },
 };
 
-export const msToggleTrashAction = {
-    component: ToggleTrashAction,
+export const msToggleTrashAction: DynamicContextMenuAction = {
     name: "ToggleTrashAction",
+    defaultText: 'Add to Trash',
+    altText: 'Restore from Trash',
+    defaultIcon: TrashIcon,
+    altIcon: RestoreFromTrashIcon,
     execute: (dispatch, resources) => {
         for (const resource of [...resources]) {
-            dispatch(toggleProjectTrashed(resource.uuid, resource.ownerUuid, resource.isTrashed!!, resources.length > 1));
+            dispatch<any>(toggleProjectTrashed(resource.uuid, resource.ownerUuid, resource.isTrashed!!, resources.length > 1));
         }
     },
 };
 
-export const msProjectActionSet: ContextMenuActionSet = [[msCopyToClipboardMenuAction, msMoveToAction, msToggleTrashAction, msToggleFavoriteAction]];
+export const msProjectActionSet: DynamicContextMenuAction[][] = [[msCopyToClipboardMenuAction, msMoveToAction, msToggleTrashAction, msToggleFavoriteAction]];

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list