15672: Shows "no subprocesses" message at subprocess panel when required.
authorLucas Di Pentima <lucas@di-pentima.com.ar>
Fri, 20 Dec 2019 20:18:22 +0000 (17:18 -0300)
committerLucas Di Pentima <lucas@di-pentima.com.ar>
Fri, 20 Dec 2019 20:18:22 +0000 (17:18 -0300)
Also, some code cleanup.

Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <lucas@di-pentima.com.ar>

src/store/subprocess-panel/subprocess-panel-middleware-service.ts
src/views/project-panel/project-panel.tsx
src/views/subprocess-panel/subprocess-panel-root.tsx
src/views/subprocess-panel/subprocess-panel.tsx

index cf0034726b98f33805d5f6ae1c9db75b02334b48..d52f27b4312dfc85fd02da2a864cd2ffc9742d05 100644 (file)
@@ -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());
         }
     }
index 2483c5166f54aab0384b6903df4f3097e88ddfd5..df8f22e75e2b5f7e41a7228f6487e80d2d780dde 100644 (file)
@@ -105,7 +105,7 @@ export const projectPanelColumns: DataColumns<string> = [
 
 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={
                             <DataTableDefaultView
                                 icon={ProjectIcon}
-                                messages={DEFAUL_VIEW_MESSAGES} />
+                                messages={DEFAULT_VIEW_MESSAGES} />
                         } />
                 </div>;
             }
index fac421bc6891de89dd534429a1790916d9e9f11f..2d37ccb36d02d5dd41dabaeb01a53fb8f33f02a8 100644 (file)
@@ -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 <DataExplorer
         id={SUBPROCESS_PANEL_ID}
@@ -84,6 +89,6 @@ export const SubprocessPanelRoot = (props: SubprocessPanelProps) => {
         dataTableDefaultView={
             <DataTableDefaultView
                 icon={ProcessIcon}
-                messages={['This process has no subprocesses.']} />
+                messages={DEFAULT_VIEW_MESSAGES} />
         } />;
 };
\ No newline at end of file
index e6459a39843c5bfb062a8848a163371ef903068b..cf1de9af789b8cadb77b08135636686d38da1032 100644 (file)
@@ -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<any>(openContextMenu(event, {
-                name: '',
+                name: resource.name,
                 uuid: resourceUuid,
                 ownerUuid: '',
                 kind: ResourceKind.PROCESS,
-                menuKind: kind
+                menuKind
             }));
         }
     },