X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/cba0f400f56889778321bdc0fdcf6cee236f6a79..1a59e5dcc15a9a1aebfd15a08903fcb75efd2aac:/src/store/processes/processes-actions.ts diff --git a/src/store/processes/processes-actions.ts b/src/store/processes/processes-actions.ts index d6675171..f9f5ef72 100644 --- a/src/store/processes/processes-actions.ts +++ b/src/store/processes/processes-actions.ts @@ -6,23 +6,30 @@ import { Dispatch } from "redux"; import { RootState } from '~/store/store'; import { ServiceRepository } from '~/services/services'; import { updateResources } from '~/store/resources/resources-actions'; -import { FilterBuilder } from '~/common/api/filter-builder'; -import { ContainerRequestResource } from '../../models/container-request'; +import { FilterBuilder } from '~/services/api/filter-builder'; +import { ContainerRequestResource } from '~/models/container-request'; +import { Process } from './process'; +import { dialogActions } from '~/store/dialog/dialog-actions'; +import { snackbarActions } from '~/store/snackbar/snackbar-actions'; +import { projectPanelActions } from '~/store/project-panel/project-panel-action'; -export const loadProcess = (uuid: string) => - async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { - const containerRequest = await services.containerRequestService.get(uuid); +export const loadProcess = (containerRequestUuid: string) => + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository): Promise => { + const containerRequest = await services.containerRequestService.get(containerRequestUuid); dispatch(updateResources([containerRequest])); if (containerRequest.containerUuid) { const container = await services.containerService.get(containerRequest.containerUuid); dispatch(updateResources([container])); + await dispatch(loadSubprocesses(containerRequest.containerUuid)); + return { containerRequest, container }; } + return { containerRequest }; }; -export const loadSubprocesses = (uuid: string) => +export const loadSubprocesses = (containerUuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { const containerRequests = await dispatch(loadContainerRequests( - new FilterBuilder().addEqual('requestingContainerUuid', uuid).getFilters() + new FilterBuilder().addEqual('requestingContainerUuid', containerUuid).getFilters() )) as ContainerRequestResource[]; const containerUuids: string[] = containerRequests.reduce((uuids, { containerUuid }) => @@ -50,3 +57,28 @@ export const loadContainers = (filters: string) => dispatch(updateResources(items)); return items; }; + +export const openRemoveProcessDialog = (uuid: string) => + (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + dispatch(dialogActions.OPEN_DIALOG({ + id: REMOVE_PROCESS_DIALOG, + data: { + title: 'Remove process permanently', + text: 'Are you sure you want to remove this process?', + confirmButtonLabel: 'Remove', + uuid + } + })); + }; + +export const REMOVE_PROCESS_DIALOG = 'removeProcessDialog'; + +export const removeProcessPermanently = (uuid: string) => + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) =>{ + dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Removing ...' })); + await services.containerRequestService.delete(uuid); + dispatch(projectPanelActions.REQUEST_ITEMS()); + dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Removed.', hideDuration: 2000 })); + }; + +