import { Resource, ResourceKind, extractUuidKind } from "models/resource";
import { getResource } from "store/resources/resources";
import { ResourcesState } from "store/resources/resources";
-import { MultiSelectMenuAction, MultiSelectMenuActionSet, MultiSelectMenuActionNames } from "views-components/multiselect-toolbar/ms-menu-actions";
+import { MultiSelectMenuAction, MultiSelectMenuActionSet } from "views-components/multiselect-toolbar/ms-menu-actions";
+import { MultiSelectMenuActionNames } from "views-components/multiselect-toolbar/ms-menu-actions";
import { ContextMenuAction } from "views-components/context-menu/context-menu-action-set";
import { multiselectActionsFilters, TMultiselectActionsFilters, msMenuResourceKind } from "./ms-toolbar-action-filters";
import { kindToActionSet, findActionByName } from "./ms-kind-action-differentiator";
import { getProcess } from "store/processes/process";
import { Process } from "store/processes/process";
import { PublicFavoritesState } from "store/public-favorites/public-favorites-reducer";
+import { isExactlyOneSelected } from "store/multiselect/multiselect-actions";
type CssRules = "root" | "button" | "iconContainer";
});
}
-export const isExactlyOneSelected = (checkedList: TCheckedList) => {
- let tally = 0;
- let current = '';
- for (const uuid in checkedList) {
- if (checkedList[uuid] === true) {
- tally++;
- current = uuid;
- }
- }
- return tally === 1 ? current : null
-};
//--------------------------------------------------//
// SPDX-License-Identifier: AGPL-3.0
import { TCheckedList } from "components/data-table/data-table";
-import { isExactlyOneSelected } from "components/multiselect-toolbar/MultiselectToolbar";
+import { ContainerRequestResource } from "models/container-request";
+import { Dispatch } from "redux";
+import { navigateTo } from "store/navigation/navigation-action";
+import { snackbarActions } from "store/snackbar/snackbar-actions";
+import { RootState } from "store/store";
+import { ServiceRepository } from "services/services";
+import { SnackbarKind } from "store/snackbar/snackbar-actions";
+import { ContextMenuResource } from 'store/context-menu/context-menu-actions';
export const multiselectActionContants = {
TOGGLE_VISIBLITY: "TOGGLE_VISIBLITY",
REMOVE_DISABLED: 'REMOVE_DISABLED',
};
+export const msNavigateToOutput = (resource: ContextMenuResource | ContainerRequestResource) => async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
+ try {
+ await services.collectionService.get(resource.outputUuid || '');
+ dispatch<any>(navigateTo(resource.outputUuid || ''));
+ } catch {
+ dispatch(snackbarActions.OPEN_SNACKBAR({ message: "Output collection was trashed or deleted.", hideDuration: 4000, kind: SnackbarKind.WARNING }));
+ }
+};
+
+export const isExactlyOneSelected = (checkedList: TCheckedList) => {
+ let tally = 0;
+ let current = '';
+ for (const uuid in checkedList) {
+ if (checkedList[uuid] === true) {
+ tally++;
+ current = uuid;
+ }
+ }
+ return tally === 1 ? current : null
+};
+
export const toggleMSToolbar = (isVisible: boolean) => {
return dispatch => {
dispatch({ type: multiselectActionContants.TOGGLE_VISIBLITY, payload: isVisible });
import { getIOParamDisplayValue, ProcessIOParameter } from "views/process-panel/process-io-card";
import { OutputDetails, NodeInstanceType, NodeInfo } from "./process-panel";
import { AuthState } from "store/auth/auth-reducer";
+import { ContextMenuResource } from "store/context-menu/context-menu-actions";
export const processPanelActions = unionize({
RESET_PROCESS_PANEL: ofType<{}>(),
dispatch<any>(loadSubprocessPanel());
};
-export const navigateToOutput = (uuid: string) => async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
+export const navigateToOutput = (resource: ContextMenuResource | ContainerRequestResource) => async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
try {
- await services.collectionService.get(uuid);
- dispatch<any>(navigateTo(uuid));
+ await services.collectionService.get(resource.outputUuid || '');
+ dispatch<any>(navigateTo(resource.outputUuid || ''));
} catch {
dispatch(snackbarActions.OPEN_SNACKBAR({ message: "Output collection was trashed or deleted.", hideDuration: 4000, kind: SnackbarKind.WARNING }));
}
async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository): Promise<any> => {
let errorMessage = "";
let successMessage = "";
- console.log('hi')
dispatch<any>(addDisabledButton(MultiSelectMenuActionNames.MOVE_TO_TRASH))
try {
if (isTrashed) {
icon: OutputIcon,
name: "Outputs",
execute: (dispatch, resources) => {
- if (resources[0].outputUuid) {
- dispatch<any>(navigateToOutput(resources[0].outputUuid));
+ if (resources[0]) {
+ dispatch<any>(navigateToOutput(resources[0]));
}
},
},
const mapStateToProps = (state: RootState): DataProps => {
const { open, position, resource } = state.contextMenu;
-
+ const fullResource = resource ? state.resources[resource?.uuid] as any : resource
const filteredItems = getMenuActionSet(resource).map(group =>
group.filter(item => {
if (resource && item.filters) {
anchorEl: resource ? createAnchorAt(position) : undefined,
items: filteredItems,
open,
- resource,
+ resource: fullResource,
};
};
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";
-import { msCommonActionSet, MultiSelectMenuActionSet, MultiSelectMenuActionNames, MultiSelectMenuAction } from "./ms-menu-actions";
+import { msCommonActionSet, MultiSelectMenuActionSet, MultiSelectMenuAction } from "./ms-menu-actions";
+import { MultiSelectMenuActionNames } from "views-components/multiselect-toolbar/ms-menu-actions";
import { TrashIcon, Link, FolderSharedIcon } from "components/icon/icon";
import { openCollectionUpdateDialog } from "store/collections/collection-update-actions";
import { copyToClipboardAction } from "store/open-in-new-tab/open-in-new-tab.actions";
}
const msEditCollection: MultiSelectMenuAction = {
+ name: MultiSelectMenuActionNames.EDIT_COLLECTION,
icon: RenameIcon,
hasAlts: false,
isForMulti: false,
- name: "Edit collection",
execute: (dispatch, resources) => {
dispatch<any>(openCollectionUpdateDialog(resources[0]));
},
import { openMoveProcessDialog } from "store/processes/process-move-actions";
import { openCopyProcessDialog } from "store/processes/process-copy-actions";
import { openRemoveProcessDialog } from "store/processes/processes-actions";
-import { MultiSelectMenuAction, MultiSelectMenuActionSet, MultiSelectMenuActionNames, msCommonActionSet } from "./ms-menu-actions";
-import { navigateToOutput } from "store/process-panel/process-panel-actions";
+import { MultiSelectMenuAction, MultiSelectMenuActionSet, msCommonActionSet } from "./ms-menu-actions";
+import { MultiSelectMenuActionNames } from "views-components/multiselect-toolbar/ms-menu-actions";
import { openProcessUpdateDialog } from "store/processes/process-update-actions";
+import { msNavigateToOutput } from "store/multiselect/multiselect-actions";
const msCopyAndRerunProcess: MultiSelectMenuAction = {
name: MultiSelectMenuActionNames.COPY_AND_RERUN_PROCESS,
hasAlts: false,
isForMulti: false,
execute: (dispatch, resources) => {
- if (resources[0].outputUuid) {
- dispatch<any>(navigateToOutput(resources[0].outputUuid));
+ if (resources[0]) {
+ dispatch<any>(msNavigateToOutput(resources[0]));
}
},
}
//
// SPDX-License-Identifier: AGPL-3.0
-import { MultiSelectMenuAction, MultiSelectMenuActionSet, MultiSelectMenuActionNames, msCommonActionSet } from 'views-components/multiselect-toolbar/ms-menu-actions';
+import { MultiSelectMenuAction, MultiSelectMenuActionSet, msCommonActionSet } from 'views-components/multiselect-toolbar/ms-menu-actions';
+import { MultiSelectMenuActionNames } from "views-components/multiselect-toolbar/ms-menu-actions";
import { openMoveProjectDialog } from 'store/projects/project-move-actions';
import { toggleProjectTrashed } from 'store/trash/trash-actions';
import {
import { openRunProcess, deleteWorkflow } from 'store/workflow-panel/workflow-panel-actions';
import { StartIcon, TrashIcon } from 'components/icon/icon';
-import { MultiSelectMenuAction, MultiSelectMenuActionSet, MultiSelectMenuActionNames, msCommonActionSet } from './ms-menu-actions';
+import { MultiSelectMenuAction, MultiSelectMenuActionSet, msCommonActionSet } from './ms-menu-actions';
+import { MultiSelectMenuActionNames } from "views-components/multiselect-toolbar/ms-menu-actions";
const { OPEN_IN_NEW_TAB, COPY_TO_CLIPBOARD, VIEW_DETAILS, API_DETAILS, RUN_WORKFLOW, DELETE_WORKFLOW } = MultiSelectMenuActionNames;
};
interface ProcessDetailsAttributesActionProps {
- navigateToOutput: (uuid: string) => void;
+ navigateToOutput: (resource: ContainerRequestResource) => void;
openWorkflow: (uuid: string) => void;
}
const mapDispatchToProps = (dispatch: Dispatch): ProcessDetailsAttributesActionProps => ({
- navigateToOutput: (uuid) => dispatch<any>(navigateToOutput(uuid)),
+ navigateToOutput: (resource) => dispatch<any>(navigateToOutput(resource)),
openWorkflow: (uuid) => dispatch<any>(openWorkflow(uuid)),
});
</Grid>
<Grid item xs={6}>
<DetailsAttribute label='Output collection' />
- {containerRequest.outputUuid && <span onClick={() => props.navigateToOutput(containerRequest.outputUuid!)}>
+ {containerRequest.outputUuid && <span onClick={() => props.navigateToOutput(containerRequest!)}>
<CollectionName className={classes.link} uuid={containerRequest.outputUuid} />
</span>}
</Grid>