return actionArray[0].filter(action => filters.has(action.name as string));
}
-const resourceSubKind = (uuid: string, resources: ResourcesState) => {
+const resourceSubKind = (uuid: string, resources: ResourcesState): (msResourceKind | ResourceKind)[] => {
const resource = getResource(uuid)(resources) as ContainerRequestResource | Resource;
switch (resource.kind) {
case ResourceKind.PROJECT:
if((resource as ProjectResource).canWrite === false) return [msResourceKind.PROJECT_READONLY]
if((resource as ProjectResource).groupClass === "filter") return [msResourceKind.PROJECT_FILTER]
return [msResourceKind.PROJECT]
+ case ResourceKind.WORKFLOW:
+ if((resource as ProjectResource).canWrite === false) return [msResourceKind.WORKFLOW_READONLY]
+ return [msResourceKind.WORKFLOW]
default:
return [resource.kind]
}
import { msCollectionActionSet } from 'views-components/multiselect-toolbar/ms-collection-action-set';
import { msProjectActionSet, msProjectActionFilter, msReadOnlyProjectActionFilter, msFilterGroupActionFilter, msFrozenActionFilter } from 'views-components/multiselect-toolbar/ms-project-action-set';
import { msProcessActionSet } from 'views-components/multiselect-toolbar/ms-process-action-set';
-import { msWorkflowActionSet, msWorkflowActionFilter } from 'views-components/multiselect-toolbar/ms-workflow-action-set';
+import { msWorkflowActionSet, msWorkflowActionFilter, msReadOnlyWorkflowActionFilter } from 'views-components/multiselect-toolbar/ms-workflow-action-set';
export type TMultiselectActionsFilters = Record<string, [MultiSelectMenuActionSet, Set<string>]>;
const processResourceMSActionsFilter = new Set([MOVE_TO, REMOVE]);
-
-
export enum msResourceKind {
API_CLIENT_AUTHORIZATION = "arvados#apiClientAuthorization",
COLLECTION = "arvados#collection",
USER = "arvados#user",
VIRTUAL_MACHINE = "arvados#virtualMachine",
WORKFLOW = "arvados#workflow",
+ WORKFLOW_READONLY = "arvados#workflow_readonly",
NONE = "arvados#none"
}
-const { COLLECTION, PROCESS, PROJECT, PROJECT_FROZEN, PROJECT_READONLY,PROJECT_FILTER, WORKFLOW } = msResourceKind;
+const { COLLECTION, PROCESS, PROJECT, PROJECT_FROZEN, PROJECT_READONLY, PROJECT_FILTER, WORKFLOW, WORKFLOW_READONLY } = msResourceKind;
export const multiselectActionsFilters: TMultiselectActionsFilters = {
[COLLECTION]: [msCollectionActionSet, allActionNames(msCollectionActionSet)],
[PROJECT_FROZEN]: [msProjectActionSet, msFrozenActionFilter],
[PROJECT_READONLY]: [msProjectActionSet, msReadOnlyProjectActionFilter],
[PROJECT_FILTER]: [msProjectActionSet, msFilterGroupActionFilter],
- [WORKFLOW]: [msWorkflowActionSet, msWorkflowActionFilter]
+ [WORKFLOW]: [msWorkflowActionSet, msWorkflowActionFilter],
+ [WORKFLOW_READONLY]: [msWorkflowActionSet, msReadOnlyWorkflowActionFilter]
};
API_DETAILS: 'API Details',
COPY_AND_RERUN_PROCESS: 'Copy and re-run process',
COPY_TO_CLIPBOARD: 'Copy to clipboard',
- DELETE_WORKFLOW: 'DELETE_WORKFLOW',
+ DELETE_WORKFLOW: 'Delete Worflow',
EDIT_PPROJECT: 'Edit project',
FREEZE_PROJECT: 'Freeze Project',
MAKE_A_COPY: 'Make a copy',
OPEN_IN_NEW_TAB: 'Open in new tab',
OPEN_W_3RD_PARTY_CLIENT: 'Open with 3rd party client',
REMOVE: 'Remove',
- RUN_WORKFLOW: 'RUN_WORKFLOW',
+ RUN_WORKFLOW: 'Run Workflow',
SHARE: 'Share',
VIEW_DETAILS: 'View details',
};
// SPDX-License-Identifier: AGPL-3.0
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';
-import { MultiSelectMenuActionSet, MultiSelectMenuActionNames } from './ms-menu-actions';
+import { StartIcon, TrashIcon } from 'components/icon/icon';
+import { MultiSelectMenuAction, MultiSelectMenuActionSet, MultiSelectMenuActionNames, msCommonActionSet } from './ms-menu-actions';
const { OPEN_IN_NEW_TAB, COPY_TO_CLIPBOARD, VIEW_DETAILS, API_DETAILS, RUN_WORKFLOW, DELETE_WORKFLOW } = MultiSelectMenuActionNames;
-export const msReadOnlyWorkflowActionSet: MultiSelectMenuActionSet = [
- [
- {
- name: OPEN_IN_NEW_TAB,
- icon: OpenIcon,
- hasAlts: false,
- isForMulti: false,
- execute: (dispatch, resources) => {
- dispatch<any>(openInNewTabAction(resources[0]));
- },
- },
- {
- name: COPY_TO_CLIPBOARD,
- icon: Link,
+const msRunWorkflow: MultiSelectMenuAction = {
+ name: RUN_WORKFLOW,
+ icon: StartIcon,
+ hasAlts: false,
+ isForMulti: false,
+ execute: (dispatch, resources) => {
+ dispatch<any>(openRunProcess(resources[0].uuid, resources[0].ownerUuid, resources[0].name));
+ },
+};
- hasAlts: false,
- isForMulti: false,
- execute: (dispatch, resources) => {
- dispatch<any>(copyToClipboardAction(resources));
- },
- },
- {
- name: VIEW_DETAILS,
- icon: DetailsIcon,
- hasAlts: false,
- isForMulti: false,
- execute: (dispatch) => {
- dispatch<any>(toggleDetailsPanel());
- },
- },
- {
- name: API_DETAILS,
- icon: AdvancedIcon,
- hasAlts: false,
- isForMulti: false,
- execute: (dispatch, resources) => {
- dispatch<any>(openAdvancedTabDialog(resources[0].uuid));
- },
- },
- {
- name: RUN_WORKFLOW,
- icon: StartIcon,
- hasAlts: false,
- isForMulti: false,
- execute: (dispatch, resources) => {
- dispatch<any>(openRunProcess(resources[0].uuid, resources[0].ownerUuid, resources[0].name));
- },
- },
- ],
-];
+const msDeleteWorkflow: MultiSelectMenuAction = {
+ name: DELETE_WORKFLOW,
+ icon: TrashIcon,
+ hasAlts: false,
+ isForMulti: false,
+ execute: (dispatch, resources) => {
+ dispatch<any>(deleteWorkflow(resources[0].uuid, resources[0].ownerUuid));
+ },
+};
-export const msWorkflowActionSet: MultiSelectMenuActionSet = [
- [
- ...msReadOnlyWorkflowActionSet[0],
- {
- name: DELETE_WORKFLOW,
- icon: TrashIcon,
- hasAlts: false,
- isForMulti: false,
- execute: (dispatch, resources) => {
- dispatch<any>(deleteWorkflow(resources[0].uuid, resources[0].ownerUuid));
- },
- },
- ],
-];
+export const msWorkflowActionSet: MultiSelectMenuActionSet = [[...msCommonActionSet, msRunWorkflow, msDeleteWorkflow]];
+export const msReadOnlyWorkflowActionFilter = new Set([OPEN_IN_NEW_TAB, COPY_TO_CLIPBOARD, VIEW_DETAILS, API_DETAILS, RUN_WORKFLOW ]);
export const msWorkflowActionFilter = new Set([OPEN_IN_NEW_TAB, COPY_TO_CLIPBOARD, VIEW_DETAILS, API_DETAILS, RUN_WORKFLOW, DELETE_WORKFLOW]);