[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