X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/00bf04d74afad9970678b87c02942003e0712cd2..eda5e30d786d5d1224a552e962b6b711efab7369:/src/store/workbench/workbench-actions.ts diff --git a/src/store/workbench/workbench-actions.ts b/src/store/workbench/workbench-actions.ts index effac1d1..9124c660 100644 --- a/src/store/workbench/workbench-actions.ts +++ b/src/store/workbench/workbench-actions.ts @@ -9,13 +9,13 @@ import { loadCollectionPanel } from '~/store/collection-panel/collection-panel-a import { snackbarActions } from '../snackbar/snackbar-actions'; import { loadFavoritePanel } from '../favorite-panel/favorite-panel-action'; import { openProjectPanel, projectPanelActions } from '~/store/project-panel/project-panel-action'; -import { activateSidePanelTreeItem, initSidePanelTree, SidePanelTreeCategory, loadSidePanelTreeProjects } from '../side-panel-tree/side-panel-tree-actions'; +import { activateSidePanelTreeItem, initSidePanelTree, SidePanelTreeCategory, loadSidePanelTreeProjects, getSidePanelTreeNodeAncestorsIds } from '../side-panel-tree/side-panel-tree-actions'; import { loadResource, updateResources } from '../resources/resources-actions'; import { favoritePanelActions } from '~/store/favorite-panel/favorite-panel-action'; import { projectPanelColumns } from '~/views/project-panel/project-panel'; import { favoritePanelColumns } from '~/views/favorite-panel/favorite-panel'; import { matchRootRoute } from '~/routes/routes'; -import { setCollectionBreadcrumbs, setProjectBreadcrumbs, setSidePanelBreadcrumbs, setProcessBreadcrumbs } from '../breadcrumbs/breadcrumbs-actions'; +import { setCollectionBreadcrumbs, setProjectBreadcrumbs, setSidePanelBreadcrumbs, setProcessBreadcrumbs, setSharedWithMeBreadcrumbs } from '../breadcrumbs/breadcrumbs-actions'; import { navigateToProject } from '../navigation/navigation-action'; import { MoveToFormDialogData } from '~/store/move-to-dialog/move-to-dialog'; import { ServiceRepository } from '~/services/services'; @@ -29,10 +29,18 @@ import * as collectionCopyActions from '~/store/collections/collection-copy-acti import * as collectionUpdateActions from '~/store/collections/collection-update-actions'; import * as collectionMoveActions from '~/store/collections/collection-move-actions'; import * as processesActions from '../processes/processes-actions'; +import * as processMoveActions from '~/store/processes/process-move-actions'; +import * as processUpdateActions from '~/store/processes/process-update-actions'; +import * as processCopyActions from '~/store/processes/process-copy-actions'; import { trashPanelColumns } from "~/views/trash-panel/trash-panel"; import { loadTrashPanel, trashPanelActions } from "~/store/trash-panel/trash-panel-action"; import { initProcessLogsPanel } from '../process-logs-panel/process-logs-panel-actions'; - +import { loadProcessPanel } from '~/store/process-panel/process-panel-actions'; +import { sharedWithMePanelActions } from '~/store/shared-with-me-panel/shared-with-me-panel-actions'; +import { loadSharedWithMePanel } from '../shared-with-me-panel/shared-with-me-panel-actions'; +import { CopyFormDialogData } from '~/store/copy-dialog/copy-dialog'; +import { loadWorkflowPanel, workflowPanelActions } from '~/store/workflow-panel/workflow-panel-actions'; +import { workflowPanelColumns } from '~/views/workflow-panel/workflow-panel'; export const loadWorkbench = () => async (dispatch: Dispatch, getState: () => RootState) => { @@ -44,6 +52,8 @@ export const loadWorkbench = () => dispatch(projectPanelActions.SET_COLUMNS({ columns: projectPanelColumns })); dispatch(favoritePanelActions.SET_COLUMNS({ columns: favoritePanelColumns })); dispatch(trashPanelActions.SET_COLUMNS({ columns: trashPanelColumns })); + dispatch(sharedWithMePanelActions.SET_COLUMNS({ columns: projectPanelColumns })); + dispatch(workflowPanelActions.SET_COLUMNS({ columns: workflowPanelColumns})); dispatch(initSidePanelTree()); if (router.location) { const match = matchRootRoute(router.location.pathname); @@ -74,10 +84,10 @@ export const loadTrash = () => }; export const loadProject = (uuid: string) => - async (dispatch: Dispatch) => { - await dispatch(activateSidePanelTreeItem(uuid)); - dispatch(setProjectBreadcrumbs(uuid)); - dispatch(openProjectPanel(uuid)); + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + dispatch(openProjectPanel(uuid)); + await dispatch(activateSidePanelTreeItem(uuid)); + dispatch(setProjectBreadcrumbs(uuid)); dispatch(loadDetailsPanel(uuid)); }; @@ -159,7 +169,7 @@ export const updateCollection = (data: collectionUpdateActions.CollectionUpdateF } }; -export const copyCollection = (data: collectionCopyActions.CollectionCopyFormDialogData) => +export const copyCollection = (data: CopyFormDialogData) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { try { const collection = await dispatch(collectionCopyActions.copyCollection(data)); @@ -185,18 +195,61 @@ export const moveCollection = (data: MoveToFormDialogData) => export const loadProcess = (uuid: string) => async (dispatch: Dispatch, getState: () => RootState) => { + dispatch(loadProcessPanel(uuid)); const process = await dispatch(processesActions.loadProcess(uuid)); await dispatch(activateSidePanelTreeItem(process.containerRequest.ownerUuid)); dispatch(setProcessBreadcrumbs(uuid)); dispatch(loadDetailsPanel(uuid)); + + }; + +export const updateProcess = (data: processUpdateActions.ProcessUpdateFormDialogData) => + async (dispatch: Dispatch) => { + try { + const process = await dispatch(processUpdateActions.updateProcess(data)); + if (process) { + dispatch(snackbarActions.OPEN_SNACKBAR({ + message: "Process has been successfully updated.", + hideDuration: 2000 + })); + dispatch(updateResources([process])); + dispatch(reloadProjectMatchingUuid([process.ownerUuid])); + } + } catch (e) { + dispatch(snackbarActions.OPEN_SNACKBAR({ message: e.message, hideDuration: 2000 })); + } + }; + +export const moveProcess = (data: MoveToFormDialogData) => + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + try { + const process = await dispatch(processMoveActions.moveProcess(data)); + dispatch(updateResources([process])); + dispatch(reloadProjectMatchingUuid([process.ownerUuid])); + dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Process has been moved.', hideDuration: 2000 })); + } catch (e) { + dispatch(snackbarActions.OPEN_SNACKBAR({ message: e.message, hideDuration: 2000 })); + } + }; + +export const copyProcess = (data: CopyFormDialogData) => + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + try { + const process = await dispatch(processCopyActions.copyProcess(data)); + dispatch(updateResources([process])); + dispatch(reloadProjectMatchingUuid([process.ownerUuid])); + dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Process has been copied.', hideDuration: 2000 })); + } catch (e) { + dispatch(snackbarActions.OPEN_SNACKBAR({ message: e.message, hideDuration: 2000 })); + } }; export const loadProcessLog = (uuid: string) => async (dispatch: Dispatch) => { const process = await dispatch(processesActions.loadProcess(uuid)); - await dispatch(activateSidePanelTreeItem(process.containerRequest.ownerUuid)); dispatch(setProcessBreadcrumbs(uuid)); dispatch(initProcessLogsPanel(uuid)); + await dispatch(activateSidePanelTreeItem(process.containerRequest.ownerUuid)); }; export const resourceIsNotLoaded = (uuid: string) => @@ -219,3 +272,15 @@ export const reloadProjectMatchingUuid = (matchingUuids: string[]) => dispatch(loadProject(currentProjectPanelUuid)); } }; + +export const loadSharedWithMe = (dispatch: Dispatch) => { + dispatch(activateSidePanelTreeItem(SidePanelTreeCategory.SHARED_WITH_ME)); + dispatch(loadSharedWithMePanel()); + dispatch(setSidePanelBreadcrumbs(SidePanelTreeCategory.SHARED_WITH_ME)); +}; + +export const loadWorkflow = (dispatch: Dispatch) => { + dispatch(activateSidePanelTreeItem(SidePanelTreeCategory.WORKFLOWS)); + dispatch(loadWorkflowPanel()); + dispatch(setSidePanelBreadcrumbs(SidePanelTreeCategory.WORKFLOWS)); +};