creating-a-new-project-or-collection-anywhere-in-the-app-creates-it-in-projects-folder
authorPawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>
Thu, 25 Oct 2018 13:01:40 +0000 (15:01 +0200)
committerPawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>
Thu, 25 Oct 2018 13:01:40 +0000 (15:01 +0200)
Feature #14402

Arvados-DCO-1.1-Signed-off-by: Pawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>

src/store/collections/collection-create-actions.ts
src/store/projects/project-create-actions.ts
src/store/run-process-panel/run-process-panel-actions.ts

index 05249b458fcdb1e01f872c2a7350e3e804992ef5..b05945c189b8a84422dee3c574a0a932783f778f 100644 (file)
@@ -11,7 +11,7 @@ import { getCommonResourceServiceError, CommonResourceServiceError } from "~/ser
 import { uploadCollectionFiles } from './collection-upload-actions';
 import { fileUploaderActions } from '~/store/file-uploader/file-uploader-actions';
 import { progressIndicatorActions } from "~/store/progress-indicator/progress-indicator-actions";
-import { isNotProjectItem } from '~/store/projects/project-create-actions';
+import { isItemNotInProject, isProjectOrRunProcessRoute } from '~/store/projects/project-create-actions';
 
 export interface CollectionCreateFormDialogData {
     ownerUuid: string;
@@ -23,7 +23,9 @@ export const COLLECTION_CREATE_FORM_NAME = "collectionCreateFormName";
 
 export const openCollectionCreateDialog = (ownerUuid: string) =>
     (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
-        if (isNotProjectItem) {
+        const router = getState();
+        const properties = getState().properties;
+        if (isItemNotInProject(properties) || !isProjectOrRunProcessRoute(router)) {
             const userUuid = getState().auth.user!.uuid;
             dispatch(initialize(COLLECTION_CREATE_FORM_NAME, { userUuid }));
         } else {
index 92994d6559be80b97002367c405f5e7c496b1ca2..1fd1be0c23cf9258f404c769a783760a7c6dfdbb 100644 (file)
@@ -9,7 +9,7 @@ import { dialogActions } from "~/store/dialog/dialog-actions";
 import { getCommonResourceServiceError, CommonResourceServiceError } from '~/services/common-service/common-resource-service';
 import { ProjectResource } from '~/models/project';
 import { ServiceRepository } from '~/services/services';
-import { matchProjectRoute } from '~/routes/routes';
+import { matchProjectRoute, matchRunProcessRoute } from '~/routes/routes';
 
 export interface ProjectCreateFormDialogData {
     ownerUuid: string;
@@ -19,32 +19,26 @@ export interface ProjectCreateFormDialogData {
 
 export const PROJECT_CREATE_FORM_NAME = 'projectCreateFormName';
 
-export const isProjectRoute = ({ router }: RootState) => {
+export const isProjectOrRunProcessRoute = ({ router }: RootState) => {
     const pathname = router.location ? router.location.pathname : '';
-    const match = matchProjectRoute(pathname);
-    return !!match;
+    const matchProject = matchProjectRoute(pathname);
+    const matchRunProcess = matchRunProcessRoute(pathname);
+    return Boolean(matchProject || matchRunProcess);
 };
 
-interface Properties {
-    breadcrumbs: Array<{ uuid: string, label: string }>;
-}
-
-export const isItemNotInProject = (properties: Properties) => {
+export const isItemNotInProject = (properties: any) => {
     if (properties.breadcrumbs) {
-        const isItemSharedWithMe = properties.breadcrumbs[0].label !== 'Projects';
-        return isItemSharedWithMe;
+        return Boolean(properties.breadcrumbs[0].label !== 'Projects');
     } else {
-        return false;
+        return ;
     }
 };
 
-export const isNotProjectItem = () => {
-    return isItemNotInProject || !isProjectRoute;
-};
-
 export const openProjectCreateDialog = (ownerUuid: string) =>
     (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
-        if (isNotProjectItem) {
+        const router = getState();
+        const properties = getState().properties;
+        if (isItemNotInProject(properties) || !isProjectOrRunProcessRoute(router)) {
             const userUuid = getState().auth.user!.uuid;
             dispatch(initialize(PROJECT_CREATE_FORM_NAME, { userUuid }));
         } else {
index 19a5450994aabdbfee743532c1f19fb01ce3e07c..ae89c9465b8adc538b31eb7d28c356e22423e414 100644 (file)
@@ -15,7 +15,8 @@ import { createWorkflowMounts } from '~/models/process';
 import { ContainerRequestState } from '~/models/container-request';
 import { navigateToProcess } from '../navigation/navigation-action';
 import { RunProcessAdvancedFormData, RUN_PROCESS_ADVANCED_FORM } from '~/views/run-process-panel/run-process-advanced-form';
-import { isNotProjectItem } from '~/store/projects/project-create-actions';
+import { isItemNotInProject, isProjectOrRunProcessRoute } from '~/store/projects/project-create-actions';
+import { matchProjectRoute } from '~/routes/routes';
 
 export const runProcessPanelActions = unionize({
     SET_PROCESS_OWNER_UUID: ofType<string>(),
@@ -53,16 +54,24 @@ export const setWorkflow = (workflow: WorkflowResource) =>
 
 export const goToStep = (step: number) => runProcessPanelActions.SET_CURRENT_STEP(step);
 
+const isRunProcessRoute = ({ router }: RootState) => {
+    const pathname = router.location ? router.location.pathname : '';
+    const match = matchProjectRoute(pathname);
+    return !!match;
+};
+
 export const runProcess = async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
     const state = getState();
     const basicForm = getFormValues(RUN_PROCESS_BASIC_FORM)(state) as RunProcessBasicFormData;
     const inputsForm = getFormValues(RUN_PROCESS_INPUTS_FORM)(state) as WorkflowInputsData;
     const advancedForm = getFormValues(RUN_PROCESS_ADVANCED_FORM)(state) as RunProcessAdvancedFormData;
     const userUuid = getState().auth.user!.uuid;
+    const router = getState();
+    const properties = getState().properties;
     const { processOwnerUuid, selectedWorkflow } = state.runProcessPanel;
     if (selectedWorkflow) {
         const newProcessData = {
-            ownerUuid: isNotProjectItem ? userUuid : processOwnerUuid,
+            ownerUuid: isItemNotInProject(properties) || !isProjectOrRunProcessRoute(router) ? userUuid : processOwnerUuid,
             name: basicForm.name,
             description: basicForm.description,
             state: ContainerRequestState.COMMITTED,