From ca35c8be981ad0bab1f93de2893cd760be4a472d Mon Sep 17 00:00:00 2001 From: Lucas Di Pentima Date: Fri, 20 Dec 2019 17:18:22 -0300 Subject: [PATCH] 15672: Shows "no subprocesses" message at subprocess panel when required. Also, some code cleanup. Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima --- .../subprocess-panel-middleware-service.ts | 18 +++++------------- src/views/project-panel/project-panel.tsx | 4 ++-- .../subprocess-panel/subprocess-panel-root.tsx | 7 ++++++- .../subprocess-panel/subprocess-panel.tsx | 10 ++++++---- 4 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/store/subprocess-panel/subprocess-panel-middleware-service.ts b/src/store/subprocess-panel/subprocess-panel-middleware-service.ts index cf003472..d52f27b4 100644 --- a/src/store/subprocess-panel/subprocess-panel-middleware-service.ts +++ b/src/store/subprocess-panel/subprocess-panel-middleware-service.ts @@ -22,6 +22,7 @@ import { subprocessPanelActions } from './subprocess-panel-actions'; import { DataColumns } from '~/components/data-table/data-table'; import { ProcessStatusFilter } from '../resource-type-filters/resource-type-filters'; import { ContainerRequestResource } from '~/models/container-request'; +import { progressIndicatorActions } from '../progress-indicator/progress-indicator-actions'; export class SubprocessMiddlewareService extends DataExplorerMiddlewareService { constructor(private services: ServiceRepository, id: string) { @@ -33,22 +34,11 @@ export class SubprocessMiddlewareService extends DataExplorerMiddlewareService { const dataExplorer = getDataExplorer(state.dataExplorer, this.getId()); try { + api.dispatch(progressIndicatorActions.START_WORKING(this.getId())); const parentContainerRequestUuid = state.processPanel.containerRequestUuid; - if (parentContainerRequestUuid === "") { - api.dispatch(subprocessPanelActions.CLEAR()); - return; - } const parentContainerRequest = await this.services.containerRequestService.get(parentContainerRequestUuid); - if (!parentContainerRequest.containerUuid) { - api.dispatch(subprocessPanelActions.CLEAR()); - return; - } const containerRequests = await this.services.containerRequestService.list( { ...getParams(dataExplorer, parentContainerRequest) }); - if (containerRequests.items.length === 0) { - api.dispatch(subprocessPanelActions.CLEAR()); - return; - } const containerUuids: string[] = containerRequests.items.reduce( (uuids, { containerUuid }) => containerUuid @@ -58,11 +48,13 @@ export class SubprocessMiddlewareService extends DataExplorerMiddlewareService { filters: new FilterBuilder().addIn('uuid', containerUuids).getFilters() }); - // Populate the actual user view + api.dispatch(progressIndicatorActions.PERSIST_STOP_WORKING(this.getId())); api.dispatch(updateResources(containerRequests.items)); api.dispatch(updateResources(containers.items)); + // Populate the actual user view api.dispatch(setItems(containerRequests)); } catch { + api.dispatch(progressIndicatorActions.PERSIST_STOP_WORKING(this.getId())); api.dispatch(couldNotFetchSubprocesses()); } } diff --git a/src/views/project-panel/project-panel.tsx b/src/views/project-panel/project-panel.tsx index 2483c516..df8f22e7 100644 --- a/src/views/project-panel/project-panel.tsx +++ b/src/views/project-panel/project-panel.tsx @@ -105,7 +105,7 @@ export const projectPanelColumns: DataColumns = [ export const PROJECT_PANEL_ID = "projectPanel"; -const DEFAUL_VIEW_MESSAGES = [ +const DEFAULT_VIEW_MESSAGES = [ 'Your project is empty.', 'Please create a project or create a collection and upload a data.', ]; @@ -138,7 +138,7 @@ export const ProjectPanel = withStyles(styles)( dataTableDefaultView={ + messages={DEFAULT_VIEW_MESSAGES} /> } /> ; } diff --git a/src/views/subprocess-panel/subprocess-panel-root.tsx b/src/views/subprocess-panel/subprocess-panel-root.tsx index fac421bc..2d37ccb3 100644 --- a/src/views/subprocess-panel/subprocess-panel-root.tsx +++ b/src/views/subprocess-panel/subprocess-panel-root.tsx @@ -74,6 +74,11 @@ export interface SubprocessPanelActionProps { type SubprocessPanelProps = SubprocessPanelActionProps & SubprocessPanelDataProps; +const DEFAULT_VIEW_MESSAGES = [ + 'No subprocesses available for listing.', + 'The current process may not have any or none matches current filtering.' +]; + export const SubprocessPanelRoot = (props: SubprocessPanelProps) => { return { dataTableDefaultView={ + messages={DEFAULT_VIEW_MESSAGES} /> } />; }; \ No newline at end of file diff --git a/src/views/subprocess-panel/subprocess-panel.tsx b/src/views/subprocess-panel/subprocess-panel.tsx index e6459a39..cf1de9af 100644 --- a/src/views/subprocess-panel/subprocess-panel.tsx +++ b/src/views/subprocess-panel/subprocess-panel.tsx @@ -10,17 +10,19 @@ import { ResourceKind } from '~/models/resource'; import { RootState } from "~/store/store"; import { navigateTo } from "~/store/navigation/navigation-action"; import { loadDetailsPanel } from "~/store/details-panel/details-panel-action"; +import { getProcess } from "~/store/processes/process"; const mapDispatchToProps = (dispatch: Dispatch): SubprocessPanelActionProps => ({ onContextMenu: (event, resourceUuid, isAdmin) => { - const kind = resourceKindToContextMenuKind(resourceUuid); - if (kind) { + const menuKind = resourceKindToContextMenuKind(resourceUuid, isAdmin); + const resource = getProcess(resourceUuid); + if (menuKind && resource) { dispatch(openContextMenu(event, { - name: '', + name: resource.name, uuid: resourceUuid, ownerUuid: '', kind: ResourceKind.PROCESS, - menuKind: kind + menuKind })); } }, -- 2.30.2