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 { ContextMenuActionItem, ContextMenuActionItemSet } 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";
export type MultiselectToolbarProps = {
checkedList: TCheckedList;
resources: ResourcesState;
- executeMulti: (action: ContextMenuAction, checkedList: TCheckedList, resources: ResourcesState) => void;
+ executeMulti: (action: ContextMenuActionItem, checkedList: TCheckedList, resources: ResourcesState) => void;
};
export const MultiselectToolbar = connect(
return result;
}
-function filterActions(actionArray: ContextMenuActionSet, filters: Set<string>): Array<ContextMenuAction> {
+function filterActions(actionArray: ContextMenuActionItemSet, filters: Set<string>): Array<ContextMenuActionItem> {
return actionArray[0].filter(action => filters.has(action.name as string));
}
function selectActionsByKind(currentResourceKinds: Array<string>, filterSet: TMultiselectActionsFilters) {
- const rawResult: Set<ContextMenuAction> = new Set();
+ const rawResult: Set<ContextMenuActionItem> = new Set();
const resultNames = new Set();
- const allFiltersArray: ContextMenuAction[][] = [];
+ const allFiltersArray: ContextMenuActionItem[][] = [];
currentResourceKinds.forEach(kind => {
if (filterSet[kind]) {
const actions = filterActions(...filterSet[kind]);
function mapDispatchToProps(dispatch: Dispatch) {
return {
- executeMulti: (selectedAction: ContextMenuAction, checkedList: TCheckedList, resources: ResourcesState): void => {
+ executeMulti: (selectedAction: ContextMenuActionItem, checkedList: TCheckedList, resources: ResourcesState): void => {
const kindGroups = groupByKind(checkedList, resources);
switch (selectedAction.name) {
case contextMenuActionConsts.MOVE_TO:
// SPDX-License-Identifier: AGPL-3.0
import { ResourceKind } from "models/resource";
-import { ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
+import { ContextMenuActionItemSet } 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: ContextMenuActionItemSet) {
return actionSet[0].find(action => action.name === name);
}
const { COLLECTION, PROJECT, PROCESS } = ResourceKind;
-export const kindToActionSet: Record<string, ContextMenuActionSet> = {
+export const kindToActionSet: Record<string, ContextMenuActionItemSet> = {
[COLLECTION]: msCollectionActionSet,
[PROJECT]: msProjectActionSet,
[PROCESS]: msProcessActionSet,
// SPDX-License-Identifier: AGPL-3.0
import { ResourceKind } from "models/resource";
-import { ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
+import { ContextMenuActionItemSet } 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, [ContextMenuActionItemSet, Set<string>]>;
export const contextMenuActionConsts = {
MAKE_A_COPY: "Make a copy",
MOVE_TO: "Move to",
TOGGLE_TRASH_ACTION: "ToggleTrashAction",
+ TOGGLE_FAVORITES_ACTION: "ToggleFavoriteAction",
COPY_TO_CLIPBOARD: "Copy to clipboard",
COPY_AND_RERUN_PROCESS: "Copy and re-run process",
REMOVE: "Remove",
};
-const { MOVE_TO, TOGGLE_TRASH_ACTION, REMOVE, MAKE_A_COPY } = contextMenuActionConsts;
+const { MOVE_TO, TOGGLE_TRASH_ACTION, TOGGLE_FAVORITES_ACTION, REMOVE, MAKE_A_COPY } = contextMenuActionConsts;
//these sets govern what actions are on the ms toolbar for each resource kind
-const projectMSActionsFilter = new Set([MOVE_TO, TOGGLE_TRASH_ACTION]);
+const projectMSActionsFilter = new Set([MOVE_TO, TOGGLE_TRASH_ACTION, TOGGLE_FAVORITES_ACTION]);
const processResourceMSActionsFilter = new Set([MOVE_TO, REMOVE]);
const collectionMSActionsFilter = new Set([MAKE_A_COPY, MOVE_TO, TOGGLE_TRASH_ACTION]);
openApiClientAuthorizationRemoveDialog,
} from "store/api-client-authorizations/api-client-authorizations-actions";
import { openAdvancedTabDialog } from "store/advanced-tab/advanced-tab";
-import { ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
+import { ContextMenuActionItemSet } from "views-components/context-menu/context-menu-action-set";
import { AdvancedIcon, RemoveIcon, AttributesIcon } from "components/icon/icon";
-export const apiClientAuthorizationActionSet: ContextMenuActionSet = [
+export const apiClientAuthorizationActionSet: ContextMenuActionItemSet = [
[
{
name: "Attributes",
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuAction, ContextMenuActionSet } from "../context-menu-action-set";
+import { ContextMenuActionItem, ContextMenuActionItemSet } from "../context-menu-action-set";
import { ToggleFavoriteAction } from "../actions/favorite-action";
import { toggleFavorite } from "store/favorites/favorites-actions";
import {
import { publicFavoritePanelActions } from "store/public-favorites-panel/public-favorites-action";
import { ContextMenuResource } from "store/context-menu/context-menu-actions";
-const toggleFavoriteAction: ContextMenuAction = {
+const toggleFavoriteAction: ContextMenuActionItem = {
component: ToggleFavoriteAction,
name: "ToggleFavoriteAction",
execute: (dispatch, resources) => {
}
},
};
-const commonActionSet: ContextMenuActionSet = [
+const commonActionSet: ContextMenuActionItemSet = [
[
{
icon: OpenIcon,
],
];
-export const readOnlyCollectionActionSet: ContextMenuActionSet = [
+export const readOnlyCollectionActionSet: ContextMenuActionItemSet = [
[
...commonActionSet.reduce((prev, next) => prev.concat(next), []),
toggleFavoriteAction,
],
];
-export const collectionActionSet: ContextMenuActionSet = [
+export const collectionActionSet: ContextMenuActionItemSet = [
[
...readOnlyCollectionActionSet.reduce((prev, next) => prev.concat(next), []),
{
],
];
-export const collectionAdminActionSet: ContextMenuActionSet = [
+export const collectionAdminActionSet: ContextMenuActionItemSet = [
[
...collectionActionSet.reduce((prev, next) => prev.concat(next), []),
{
],
];
-export const oldCollectionVersionActionSet: ContextMenuActionSet = [
+export const oldCollectionVersionActionSet: ContextMenuActionItemSet = [
[
...commonActionSet.reduce((prev, next) => prev.concat(next), []),
{
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuAction, ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
+import { ContextMenuActionItem, ContextMenuActionItemSet } from "views-components/context-menu/context-menu-action-set";
import { collectionPanelFilesAction, openMultipleFilesRemoveDialog } from "store/collection-panel/collection-panel-files/collection-panel-files-actions";
import {
openCollectionPartialCopyMultipleToNewCollectionDialog,
import { openCollectionPartialMoveMultipleToExistingCollectionDialog, openCollectionPartialMoveMultipleToNewCollectionDialog, openCollectionPartialMoveToSeparateCollectionsDialog } from "store/collections/collection-partial-move-actions";
import { FileCopyIcon, FileMoveIcon, RemoveIcon, SelectAllIcon, SelectNoneIcon } from "components/icon/icon";
-const copyActions: ContextMenuAction[] = [
+const copyActions: ContextMenuActionItem[] = [
{
name: "Copy selected into new collection",
icon: FileCopyIcon,
},
];
-const copyActionsMultiple: ContextMenuAction[] = [
+const copyActionsMultiple: ContextMenuActionItem[] = [
...copyActions,
{
name: "Copy selected into separate collections",
}
];
-const moveActions: ContextMenuAction[] = [
+const moveActions: ContextMenuActionItem[] = [
{
name: "Move selected into new collection",
icon: FileMoveIcon,
},
];
-const moveActionsMultiple: ContextMenuAction[] = [
+const moveActionsMultiple: ContextMenuActionItem[] = [
...moveActions,
{
name: "Move selected into separate collections",
}
];
-const selectActions: ContextMenuAction[] = [
+const selectActions: ContextMenuActionItem[] = [
{
name: "Select all",
icon: SelectAllIcon,
},
];
-const removeAction: ContextMenuAction = {
+const removeAction: ContextMenuActionItem = {
name: "Remove selected",
icon: RemoveIcon,
execute: dispatch => {
};
// These action sets are used on the multi-select actions button.
-export const readOnlyCollectionFilesActionSet: ContextMenuActionSet = [
+export const readOnlyCollectionFilesActionSet: ContextMenuActionItemSet = [
selectActions,
copyActions,
];
-export const readOnlyCollectionFilesMultipleActionSet: ContextMenuActionSet = [
+export const readOnlyCollectionFilesMultipleActionSet: ContextMenuActionItemSet = [
selectActions,
copyActionsMultiple,
];
-export const collectionFilesActionSet: ContextMenuActionSet = readOnlyCollectionFilesActionSet.concat([[
+export const collectionFilesActionSet: ContextMenuActionItemSet = readOnlyCollectionFilesActionSet.concat([[
removeAction,
...moveActions
]]);
-export const collectionFilesMultipleActionSet: ContextMenuActionSet = readOnlyCollectionFilesMultipleActionSet.concat([[
+export const collectionFilesMultipleActionSet: ContextMenuActionItemSet = readOnlyCollectionFilesMultipleActionSet.concat([[
removeAction,
...moveActionsMultiple
]]);
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from "../context-menu-action-set";
+import { ContextMenuActionItemSet } from "../context-menu-action-set";
import { FileCopyIcon, FileMoveIcon, RemoveIcon, RenameIcon } from "components/icon/icon";
import { DownloadCollectionFileAction } from "../actions/download-collection-file-action";
import { openFileRemoveDialog, openRenameFileDialog } from "store/collection-panel/collection-panel-files/collection-panel-files-actions";
openCollectionPartialCopyToNewCollectionDialog,
} from "store/collections/collection-partial-copy-actions";
-export const readOnlyCollectionDirectoryItemActionSet: ContextMenuActionSet = [
+export const readOnlyCollectionDirectoryItemActionSet: ContextMenuActionItemSet = [
[
{
name: "Copy item into new collection",
],
];
-export const readOnlyCollectionFileItemActionSet: ContextMenuActionSet = [
+export const readOnlyCollectionFileItemActionSet: ContextMenuActionItemSet = [
[
{
component: DownloadCollectionFileAction,
],
];
-const writableActionSet: ContextMenuActionSet = [
+const writableActionSet: ContextMenuActionItemSet = [
[
{
name: "Move item into new collection",
],
];
-export const collectionDirectoryItemActionSet: ContextMenuActionSet = readOnlyCollectionDirectoryItemActionSet.concat(writableActionSet);
+export const collectionDirectoryItemActionSet: ContextMenuActionItemSet = readOnlyCollectionDirectoryItemActionSet.concat(writableActionSet);
-export const collectionFileItemActionSet: ContextMenuActionSet = readOnlyCollectionFileItemActionSet.concat(writableActionSet);
+export const collectionFileItemActionSet: ContextMenuActionItemSet = readOnlyCollectionFileItemActionSet.concat(writableActionSet);
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
+import { ContextMenuActionItemSet } from "views-components/context-menu/context-menu-action-set";
import { collectionPanelFilesAction } from "store/collection-panel/collection-panel-files/collection-panel-files-actions";
import { SelectAllIcon } from "components/icon/icon";
-export const collectionFilesNotSelectedActionSet: ContextMenuActionSet = [[{
+export const collectionFilesNotSelectedActionSet: ContextMenuActionItemSet = [[{
name: "Select all",
icon: SelectAllIcon,
execute: dispatch => {
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from '../context-menu-action-set';
+import { ContextMenuActionItemSet } from '../context-menu-action-set';
import { ToggleFavoriteAction } from '../actions/favorite-action';
import { toggleFavorite } from 'store/favorites/favorites-actions';
import { favoritePanelActions } from 'store/favorite-panel/favorite-panel-action';
-export const favoriteActionSet: ContextMenuActionSet = [
+export const favoriteActionSet: ContextMenuActionItemSet = [
[
{
component: ToggleFavoriteAction,
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from 'views-components/context-menu/context-menu-action-set';
+import { ContextMenuActionItemSet } from 'views-components/context-menu/context-menu-action-set';
import { RenameIcon, AdvancedIcon, RemoveIcon, AttributesIcon } from 'components/icon/icon';
import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab';
import { openGroupAttributes, openRemoveGroupDialog, openGroupUpdateDialog } from 'store/groups-panel/groups-panel-actions';
-export const groupActionSet: ContextMenuActionSet = [
+export const groupActionSet: ContextMenuActionItemSet = [
[
{
name: 'Rename',
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from 'views-components/context-menu/context-menu-action-set';
+import { ContextMenuActionItemSet } from 'views-components/context-menu/context-menu-action-set';
import { AdvancedIcon, RemoveIcon, AttributesIcon } from 'components/icon/icon';
import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab';
import { openGroupMemberAttributes, openRemoveGroupMemberDialog } from 'store/group-details-panel/group-details-panel-actions';
-export const groupMemberActionSet: ContextMenuActionSet = [
+export const groupMemberActionSet: ContextMenuActionItemSet = [
[
{
name: 'Attributes',
import { openKeepServiceAttributesDialog, openKeepServiceRemoveDialog } from 'store/keep-services/keep-services-actions';
import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab';
-import { ContextMenuActionSet } from 'views-components/context-menu/context-menu-action-set';
+import { ContextMenuActionItemSet } from 'views-components/context-menu/context-menu-action-set';
import { AdvancedIcon, RemoveIcon, AttributesIcon } from 'components/icon/icon';
-export const keepServiceActionSet: ContextMenuActionSet = [
+export const keepServiceActionSet: ContextMenuActionItemSet = [
[
{
name: 'Attributes',
import { openLinkAttributesDialog, openLinkRemoveDialog } from 'store/link-panel/link-panel-actions';
import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab';
-import { ContextMenuActionSet } from 'views-components/context-menu/context-menu-action-set';
+import { ContextMenuActionItemSet } from 'views-components/context-menu/context-menu-action-set';
import { AdvancedIcon, RemoveIcon, AttributesIcon } from 'components/icon/icon';
-export const linkActionSet: ContextMenuActionSet = [
+export const linkActionSet: ContextMenuActionItemSet = [
[
{
name: 'Attributes',
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from 'views-components/context-menu/context-menu-action-set';
+import { ContextMenuActionItemSet } from 'views-components/context-menu/context-menu-action-set';
import { CanReadIcon, CanManageIcon, CanWriteIcon } from 'components/icon/icon';
import { editPermissionLevel } from 'store/group-details-panel/group-details-panel-actions';
import { PermissionLevel } from 'models/permission';
-export const permissionEditActionSet: ContextMenuActionSet = [
+export const permissionEditActionSet: ContextMenuActionItemSet = [
[
{
name: 'Read',
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from "../context-menu-action-set";
+import { ContextMenuActionItemSet } from "../context-menu-action-set";
import { ToggleFavoriteAction } from "../actions/favorite-action";
import { toggleFavorite } from "store/favorites/favorites-actions";
import {
import { openInNewTabAction } from "store/open-in-new-tab/open-in-new-tab.actions";
import { cancelRunningWorkflow } from "store/processes/processes-actions";
-export const readOnlyProcessResourceActionSet: ContextMenuActionSet = [
+export const readOnlyProcessResourceActionSet: ContextMenuActionItemSet = [
[
{
component: ToggleFavoriteAction,
],
];
-export const processResourceActionSet: ContextMenuActionSet = [
+export const processResourceActionSet: ContextMenuActionItemSet = [
[
...readOnlyProcessResourceActionSet.reduce((prev, next) => prev.concat(next), []),
{
],
];
-const runningProcessOnlyActionSet: ContextMenuActionSet = [
+const runningProcessOnlyActionSet: ContextMenuActionItemSet = [
[
{
name: "CANCEL",
]
];
-export const processResourceAdminActionSet: ContextMenuActionSet = [
+export const processResourceAdminActionSet: ContextMenuActionItemSet = [
[
...processResourceActionSet.reduce((prev, next) => prev.concat(next), []),
{
],
];
-export const runningProcessResourceAdminActionSet: ContextMenuActionSet = [
+export const runningProcessResourceAdminActionSet: ContextMenuActionItemSet = [
[
...processResourceAdminActionSet.reduce((prev, next) => prev.concat(next), []),
...runningProcessOnlyActionSet.reduce((prev, next) => prev.concat(next), []),
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from "../context-menu-action-set";
+import { ContextMenuActionItemSet } from "../context-menu-action-set";
import { NewProjectIcon, RenameIcon, MoveToIcon, DetailsIcon, AdvancedIcon, OpenIcon, Link, FolderSharedIcon } from "components/icon/icon";
import { ToggleFavoriteAction } from "../actions/favorite-action";
import { toggleFavorite } from "store/favorites/favorites-actions";
},
};
-export const readOnlyProjectActionSet: ContextMenuActionSet = [
+export const readOnlyProjectActionSet: ContextMenuActionItemSet = [
[toggleFavoriteAction, openInNewTabMenuAction, copyToClipboardMenuAction, viewDetailsAction, advancedAction, openWith3rdPartyClientAction],
];
-export const filterGroupActionSet: ContextMenuActionSet = [
+export const filterGroupActionSet: ContextMenuActionItemSet = [
[
toggleFavoriteAction,
openInNewTabMenuAction,
],
];
-export const frozenActionSet: ContextMenuActionSet = [
+export const frozenActionSet: ContextMenuActionItemSet = [
[
shareAction,
toggleFavoriteAction,
],
];
-export const projectActionSet: ContextMenuActionSet = [
+export const projectActionSet: ContextMenuActionItemSet = [
[
toggleFavoriteAction,
openInNewTabMenuAction,
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from "../context-menu-action-set";
+import { ContextMenuActionItemSet } from "../context-menu-action-set";
import { TogglePublicFavoriteAction } from "views-components/context-menu/actions/public-favorite-action";
import { togglePublicFavorite } from "store/public-favorites/public-favorites-actions";
import { publicFavoritePanelActions } from "store/public-favorites-panel/public-favorites-action";
},
};
-export const projectAdminActionSet: ContextMenuActionSet = [
+export const projectAdminActionSet: ContextMenuActionItemSet = [
[
toggleFavoriteAction,
openInNewTabMenuAction,
],
];
-export const filterGroupAdminActionSet: ContextMenuActionSet = [
+export const filterGroupAdminActionSet: ContextMenuActionItemSet = [
[
toggleFavoriteAction,
openInNewTabMenuAction,
],
];
-export const frozenAdminActionSet: ContextMenuActionSet = [
+export const frozenAdminActionSet: ContextMenuActionItemSet = [
[
shareAction,
togglePublicFavoriteAction,
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from 'views-components/context-menu/context-menu-action-set';
+import { ContextMenuActionItemSet } from 'views-components/context-menu/context-menu-action-set';
import { AdvancedIcon, RemoveIcon, ShareIcon, AttributesIcon } from 'components/icon/icon';
import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab';
import { openRepositoryAttributes, openRemoveRepositoryDialog } from 'store/repositories/repositories-actions';
import { openSharingDialog } from 'store/sharing-dialog/sharing-dialog-actions';
-export const repositoryActionSet: ContextMenuActionSet = [
+export const repositoryActionSet: ContextMenuActionItemSet = [
[
{
name: 'Attributes',
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from '../context-menu-action-set';
+import { ContextMenuActionItemSet } from '../context-menu-action-set';
import { ToggleFavoriteAction } from '../actions/favorite-action';
import { toggleFavorite } from 'store/favorites/favorites-actions';
-export const resourceActionSet: ContextMenuActionSet = [
+export const resourceActionSet: ContextMenuActionItemSet = [
[
{
component: ToggleFavoriteAction,
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from '../context-menu-action-set';
+import { ContextMenuActionItemSet } from '../context-menu-action-set';
import { openCollectionCreateDialog } from 'store/collections/collection-create-actions';
import { NewProjectIcon, CollectionIcon } from 'components/icon/icon';
import { openProjectCreateDialog } from 'store/projects/project-create-actions';
-export const rootProjectActionSet: ContextMenuActionSet = [
+export const rootProjectActionSet: ContextMenuActionItemSet = [
[
{
icon: NewProjectIcon,
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from '../context-menu-action-set';
+import { ContextMenuActionItemSet } from '../context-menu-action-set';
import { DetailsIcon, AdvancedIcon, OpenIcon, Link } from 'components/icon/icon';
import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab';
import { toggleDetailsPanel } from 'store/details-panel/details-panel-action';
import { copyToClipboardAction, openInNewTabAction } from 'store/open-in-new-tab/open-in-new-tab.actions';
-export const searchResultsActionSet: ContextMenuActionSet = [
+export const searchResultsActionSet: ContextMenuActionItemSet = [
[
{
icon: OpenIcon,
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from 'views-components/context-menu/context-menu-action-set';
+import { ContextMenuActionItemSet } from 'views-components/context-menu/context-menu-action-set';
import { AdvancedIcon, RemoveIcon, AttributesIcon } from 'components/icon/icon';
import { openSshKeyRemoveDialog, openSshKeyAttributesDialog } from 'store/auth/auth-action-ssh';
import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab';
-export const sshKeyActionSet: ContextMenuActionSet = [
+export const sshKeyActionSet: ContextMenuActionItemSet = [
[
{
name: 'Attributes',
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from '../context-menu-action-set';
+import { ContextMenuActionItemSet } from '../context-menu-action-set';
import { ToggleTrashAction } from 'views-components/context-menu/actions/trash-action';
import { toggleTrashed } from 'store/trash/trash-actions';
-export const trashActionSet: ContextMenuActionSet = [
+export const trashActionSet: ContextMenuActionItemSet = [
[
{
component: ToggleTrashAction,
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from '../context-menu-action-set';
+import { ContextMenuActionItemSet } from '../context-menu-action-set';
import { DetailsIcon, ProvenanceGraphIcon, AdvancedIcon, RestoreFromTrashIcon } from 'components/icon/icon';
import { toggleCollectionTrashed } from 'store/trash/trash-actions';
import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab';
import { toggleDetailsPanel } from 'store/details-panel/details-panel-action';
-export const trashedCollectionActionSet: ContextMenuActionSet = [
+export const trashedCollectionActionSet: ContextMenuActionItemSet = [
[
{
icon: DetailsIcon,
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from 'views-components/context-menu/context-menu-action-set';
+import { ContextMenuActionItemSet } from 'views-components/context-menu/context-menu-action-set';
import {
AdvancedIcon,
ProjectIcon,
isOtherUser,
} from 'store/context-menu/context-menu-filters';
-export const userActionSet: ContextMenuActionSet = [
+export const userActionSet: ContextMenuActionItemSet = [
[
{
name: 'Attributes',
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from 'views-components/context-menu/context-menu-action-set';
+import { ContextMenuActionItemSet } from 'views-components/context-menu/context-menu-action-set';
import { AdvancedIcon, RemoveIcon, AttributesIcon } from 'components/icon/icon';
import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab';
import { openVirtualMachineAttributes, openRemoveVirtualMachineDialog } from 'store/virtual-machines/virtual-machines-actions';
-export const virtualMachineActionSet: ContextMenuActionSet = [
+export const virtualMachineActionSet: ContextMenuActionItemSet = [
[
{
name: 'Attributes',
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
+import { ContextMenuActionItemSet } from "views-components/context-menu/context-menu-action-set";
import { openRunProcess, deleteWorkflow } from "store/workflow-panel/workflow-panel-actions";
import { DetailsIcon, AdvancedIcon, OpenIcon, Link, StartIcon, TrashIcon } from "components/icon/icon";
import { copyToClipboardAction, openInNewTabAction } from "store/open-in-new-tab/open-in-new-tab.actions";
import { toggleDetailsPanel } from "store/details-panel/details-panel-action";
import { openAdvancedTabDialog } from "store/advanced-tab/advanced-tab";
-export const readOnlyWorkflowActionSet: ContextMenuActionSet = [
+export const readOnlyWorkflowActionSet: ContextMenuActionItemSet = [
[
{
icon: OpenIcon,
],
];
-export const workflowActionSet: ContextMenuActionSet = [
+export const workflowActionSet: ContextMenuActionItemSet = [
[
...readOnlyWorkflowActionSet[0],
{
import { ContextMenuItem } from "components/context-menu/context-menu";
import { ContextMenuResource } from "store/context-menu/context-menu-actions";
-export interface ContextMenuAction extends ContextMenuItem {
+export interface ContextMenuActionItem extends ContextMenuItem {
execute(dispatch: Dispatch, resources: ContextMenuResource[], state?: any): void;
}
-export type ContextMenuActionSet = Array<Array<ContextMenuAction>>;
+export type ContextMenuActionItemSet = Array<Array<ContextMenuActionItem>>;
import { contextMenuActions, ContextMenuResource } from "store/context-menu/context-menu-actions";
import { ContextMenu as ContextMenuComponent, ContextMenuProps, ContextMenuItem } from "components/context-menu/context-menu";
import { createAnchorAt } from "components/popover/helpers";
-import { ContextMenuActionSet, ContextMenuAction } from "./context-menu-action-set";
+import { ContextMenuActionItemSet, ContextMenuActionItem } from "./context-menu-action-set";
import { Dispatch } from "redux";
import { memoize } from "lodash";
import { sortByProperty } from "common/array-utils";
onClose: () => {
dispatch(contextMenuActions.CLOSE_CONTEXT_MENU());
},
- onItemClick: (action: ContextMenuAction, resource?: ContextMenuResource) => {
+ onItemClick: (action: ContextMenuActionItem, resource?: ContextMenuResource) => {
dispatch(contextMenuActions.CLOSE_CONTEXT_MENU());
if (resource) {
action.execute(dispatch, [resource]);
export const ContextMenu = connect(mapStateToProps, mapDispatchToProps, mergeProps)(ContextMenuComponent);
-const menuActionSets = new Map<string, ContextMenuActionSet>();
+const menuActionSets = new Map<string, ContextMenuActionItemSet>();
-export const addMenuActionSet = (name: string, itemSet: ContextMenuActionSet) => {
+export const addMenuActionSet = (name: string, itemSet: ContextMenuActionItemSet) => {
const sorted = itemSet.map(items => items.sort(sortByProperty("name")));
menuActionSets.set(name, sorted);
};
-const emptyActionSet: ContextMenuActionSet = [];
-const getMenuActionSet = (resource?: ContextMenuResource): ContextMenuActionSet =>
+const emptyActionSet: ContextMenuActionItemSet = [];
+const getMenuActionSet = (resource?: ContextMenuResource): ContextMenuActionItemSet =>
resource ? menuActionSets.get(resource.menuKind) || emptyActionSet : emptyActionSet;
export enum ContextMenuKind {
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
+import { ContextMenuActionItemSet } from "views-components/context-menu/context-menu-action-set";
import { MoveToIcon, CopyIcon } from "components/icon/icon";
import { openMoveCollectionDialog } from "store/collections/collection-move-actions";
import { openCollectionCopyDialog, openMultiCollectionCopyDialog } from "store/collections/collection-copy-actions";
import { toggleCollectionTrashed } from "store/trash/trash-actions";
import { ContextMenuResource } from "store/context-menu/context-menu-actions";
-export const msCollectionActionSet: ContextMenuActionSet = [
+export const msCollectionActionSet: ContextMenuActionItemSet = [
[
{
icon: CopyIcon,
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
+import { ContextMenuActionItemSet } from "views-components/context-menu/context-menu-action-set";
import { MoveToIcon, RemoveIcon, ReRunProcessIcon } from "components/icon/icon";
import { openMoveProcessDialog } from "store/processes/process-move-actions";
import { openCopyProcessDialog } from "store/processes/process-copy-actions";
import { openRemoveProcessDialog } from "store/processes/processes-actions";
-export const msProcessActionSet: ContextMenuActionSet = [
+export const msProcessActionSet: ContextMenuActionItemSet = [
[
{
icon: ReRunProcessIcon,
//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuActionSet } from "views-components/context-menu/context-menu-action-set";
+import { ContextMenuActionItemSet } 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";
import { toggleProjectTrashed } from "store/trash/trash-actions";
import { copyToClipboardAction } from "store/open-in-new-tab/open-in-new-tab.actions";
+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";
+
+export const msToggleFavoriteAction = {
+ component: ToggleFavoriteAction,
+ name: "ToggleFavoriteAction",
+ execute: (dispatch, resources) => {
+ dispatch(toggleFavorite(resources[0])).then(() => {
+ dispatch(favoritePanelActions.REQUEST_ITEMS());
+ });
+ },
+};
export const msCopyToClipboardMenuAction = {
icon: Link,
},
};
-export const msProjectActionSet: ContextMenuActionSet = [[msCopyToClipboardMenuAction, msMoveToAction, msToggleTrashAction]];
+export const msProjectActionSet: ContextMenuActionItemSet = [[msToggleFavoriteAction, msCopyToClipboardMenuAction, msMoveToAction, msToggleTrashAction]]