[arvados-workbench2] updated: 2.4.0-71-g2129d2a8

git repository hosting git at public.arvados.org
Mon May 23 21:19:33 UTC 2022


Summary of changes:
 src/store/processes/processes-actions.ts           |  5 ++++-
 .../run-process-panel/run-process-panel-actions.ts | 13 +++++++++----
 src/store/workflow-panel/workflow-panel-actions.ts | 11 ++++++++---
 .../run-process-panel/inputs/project-input.tsx     | 22 ++++++++++------------
 .../run-process-panel/run-process-basic-form.tsx   | 16 ++++++++++------
 5 files changed, 41 insertions(+), 26 deletions(-)

       via  2129d2a8fc553a0e89b374bdad2226ff3b3d377e (commit)
      from  f912f003853b42c745041796220e28536629a548 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 2129d2a8fc553a0e89b374bdad2226ff3b3d377e
Author: Peter Amstutz <peter.amstutz at curii.com>
Date:   Mon May 23 17:19:17 2022 -0400

    19143: Finally got the data binding to work
    
    Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz at curii.com>

diff --git a/src/store/processes/processes-actions.ts b/src/store/processes/processes-actions.ts
index 11106e49..213e292b 100644
--- a/src/store/processes/processes-actions.ts
+++ b/src/store/processes/processes-actions.ts
@@ -18,6 +18,8 @@ import { RUN_PROCESS_BASIC_FORM, RunProcessBasicFormData } from "views/run-proce
 import { RunProcessAdvancedFormData, RUN_PROCESS_ADVANCED_FORM } from "views/run-process-panel/run-process-advanced-form";
 import { MOUNT_PATH_CWL_WORKFLOW, MOUNT_PATH_CWL_INPUT } from 'models/process';
 import { getWorkflow, getWorkflowInputs } from "models/workflow";
+import { ProjectResource } from "models/project";
+import { UserResource } from "models/user";
 
 export const loadProcess = (containerRequestUuid: string) =>
     async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository): Promise<Process> => {
@@ -60,7 +62,8 @@ export const reRunProcess = (processUuid: string, workflowUuid: string) =>
             const stringifiedDefinition = JSON.stringify(process.mounts[MOUNT_PATH_CWL_WORKFLOW].content);
             const newWorkflow = { ...workflow, definition: stringifiedDefinition };
 
-            const basicInitialData: RunProcessBasicFormData = { name: `Copy of: ${process.name}`, description: process.description, ownerUuid: workflow.ownerUuid };
+            const owner = getResource<ProjectResource | UserResource>(workflow.ownerUuid)(getState().resources);
+            const basicInitialData: RunProcessBasicFormData = { name: `Copy of: ${process.name}`, description: process.description, owner };
             dispatch<any>(initialize(RUN_PROCESS_BASIC_FORM, basicInitialData));
 
             const advancedInitialData: RunProcessAdvancedFormData = {
diff --git a/src/store/run-process-panel/run-process-panel-actions.ts b/src/store/run-process-panel/run-process-panel-actions.ts
index f3352eb4..95bac0c2 100644
--- a/src/store/run-process-panel/run-process-panel-actions.ts
+++ b/src/store/run-process-panel/run-process-panel-actions.ts
@@ -21,6 +21,9 @@ import {
 } from 'views/run-process-panel/run-process-advanced-form';
 import { dialogActions } from 'store/dialog/dialog-actions';
 import { setBreadcrumbs } from 'store/breadcrumbs/breadcrumbs-actions';
+import { getResource } from 'store/resources/resources';
+import { ProjectResource } from "models/project";
+import { UserResource } from "models/user";
 
 export const runProcessPanelActions = unionize({
     SET_PROCESS_PATHNAME: ofType<string>(),
@@ -48,7 +51,7 @@ export type RunProcessPanelAction = UnionOf<typeof runProcessPanelActions>;
 export const loadRunProcessPanel = () =>
     async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
         try {
-            dispatch(setBreadcrumbs([{ label: 'Run workflow' }]));
+            dispatch(setBreadcrumbs([{ label: 'Run Process' }]));
             const response = await services.workflowService.list();
             dispatch(runProcessPanelActions.SET_WORKFLOWS(response.items));
         } catch (e) {
@@ -99,17 +102,19 @@ export const setWorkflow = (workflow: WorkflowResource, isWorkflowChanged = true
 
         const advancedFormValues = getWorkflowRunnerSettings(workflow);
 
+        const owner = getResource<ProjectResource | UserResource>(getState().runProcessPanel.processOwnerUuid)(getState().resources);
+
         if (isStepChanged && isWorkflowChanged) {
             dispatch(runProcessPanelActions.SET_STEP_CHANGED(false));
             dispatch(runProcessPanelActions.SET_SELECTED_WORKFLOW(workflow));
             dispatch<any>(loadPresets(workflow.uuid));
-            dispatch(initialize(RUN_PROCESS_BASIC_FORM, { name: workflow.name }));
+            dispatch(initialize(RUN_PROCESS_BASIC_FORM, { name: workflow.name, owner }));
             dispatch(initialize(RUN_PROCESS_ADVANCED_FORM, advancedFormValues));
         }
         if (!isWorkflowChanged) {
             dispatch(runProcessPanelActions.SET_SELECTED_WORKFLOW(workflow));
             dispatch<any>(loadPresets(workflow.uuid));
-            dispatch(initialize(RUN_PROCESS_BASIC_FORM, { name: workflow.name }));
+            dispatch(initialize(RUN_PROCESS_BASIC_FORM, { name: workflow.name, owner }));
             dispatch(initialize(RUN_PROCESS_ADVANCED_FORM, advancedFormValues));
         }
     };
@@ -146,7 +151,7 @@ export const runProcess = async (dispatch: Dispatch<any>, getState: () => RootSt
     const userUuid = getUserUuid(getState());
     if (!userUuid) { return; }
     const { processOwnerUuid, selectedWorkflow } = state.runProcessPanel;
-    const ownerUUid = processOwnerUuid ? processOwnerUuid : userUuid;
+    const ownerUUid = basicForm.owner ? basicForm.owner.uuid : (processOwnerUuid ? processOwnerUuid : userUuid);
     if (selectedWorkflow) {
         const advancedForm = getFormValues(RUN_PROCESS_ADVANCED_FORM)(state) as RunProcessAdvancedFormData || getWorkflowRunnerSettings(selectedWorkflow);
         const newProcessData = {
diff --git a/src/store/workflow-panel/workflow-panel-actions.ts b/src/store/workflow-panel/workflow-panel-actions.ts
index b533717e..85f0b9bc 100644
--- a/src/store/workflow-panel/workflow-panel-actions.ts
+++ b/src/store/workflow-panel/workflow-panel-actions.ts
@@ -15,6 +15,9 @@ import { initialize } from 'redux-form';
 import { RUN_PROCESS_BASIC_FORM } from 'views/run-process-panel/run-process-basic-form';
 import { RUN_PROCESS_INPUTS_FORM } from 'views/run-process-panel/run-process-inputs-form';
 import { RUN_PROCESS_ADVANCED_FORM } from 'views/run-process-panel/run-process-advanced-form';
+import { getResource, ResourcesState } from 'store/resources/resources';
+import { ProjectResource } from 'models/project';
+import { UserResource } from 'models/user';
 
 export const WORKFLOW_PANEL_ID = "workflowPanel";
 const UUID_PREFIX_PROPERTY_NAME = 'uuidPrefix';
@@ -50,12 +53,14 @@ export const openRunProcess = (workflowUuid: string, ownerUuid?: string, name?:
             dispatch<any>(loadPresets(workflow.uuid));
 
             dispatch(initialize(RUN_PROCESS_ADVANCED_FORM, getWorkflowRunnerSettings(workflow)));
+            let owner;
             if (ownerUuid) {
                 dispatch(runProcessPanelActions.SET_PROCESS_OWNER_UUID(ownerUuid));
+                owner = getResource<ProjectResource | UserResource>(ownerUuid)(getState().resources);
             }
-            if (name) {
-                dispatch(initialize(RUN_PROCESS_BASIC_FORM, { name }));
-            }
+
+            dispatch(initialize(RUN_PROCESS_BASIC_FORM, { name, owner }));
+
             if (inputObj) {
                 dispatch(initialize(RUN_PROCESS_INPUTS_FORM, inputObj));
             }
diff --git a/src/views/run-process-panel/inputs/project-input.tsx b/src/views/run-process-panel/inputs/project-input.tsx
index 03e02920..95f3ad89 100644
--- a/src/views/run-process-panel/inputs/project-input.tsx
+++ b/src/views/run-process-panel/inputs/project-input.tsx
@@ -4,12 +4,12 @@
 
 import React from 'react';
 import { connect, DispatchProp } from 'react-redux';
-import { Field } from 'redux-form';
+import { Field, WrappedFieldProps } from 'redux-form';
 import { Input, Dialog, DialogTitle, DialogContent, DialogActions, Button } from '@material-ui/core';
 import {
     GenericCommandInputParameter
 } from 'models/workflow';
-import { GenericInputProps, GenericInput } from './generic-input';
+import { GenericInput, GenericInputProps } from './generic-input';
 import { ProjectsTreePicker } from 'views-components/projects-tree-picker/projects-tree-picker';
 import { initProjectsTreePicker } from 'store/tree-picker/tree-picker-actions';
 import { TreeItem } from 'components/tree/tree';
@@ -17,17 +17,16 @@ import { ProjectsTreePickerItem } from 'views-components/projects-tree-picker/ge
 import { ProjectResource } from 'models/project';
 import { ResourceKind } from 'models/resource';
 
-const WORKFLOW_OWNER_PROJECT = "WORKFLOW_OWNER_PROJECT";
+export type ProjectCommandInputParameter = GenericCommandInputParameter<ProjectResource, ProjectResource>;
 
 export interface ProjectInputProps {
+    input: ProjectCommandInputParameter;
     options?: { showOnlyOwned: boolean, showOnlyWritable: boolean };
 }
-export const ProjectInput = ({ options }: ProjectInputProps) =>
+export const ProjectInput = ({ input, options }: ProjectInputProps) =>
     <Field
-        name={WORKFLOW_OWNER_PROJECT}
-        commandInput={{
-            label: "Owner project"
-        }}
+        name={input.id}
+        commandInput={input}
         component={ProjectInputComponent as any}
         format={format}
         {...{
@@ -41,7 +40,7 @@ interface ProjectInputComponentState {
     project?: ProjectResource;
 }
 
-const ProjectInputComponent = connect()(
+export const ProjectInputComponent = connect()(
     class ProjectInputComponent extends React.Component<GenericInputProps & DispatchProp & {
         options?: { showOnlyOwned: boolean, showOnlyWritable: boolean };
     }, ProjectInputComponentState> {
@@ -51,7 +50,7 @@ const ProjectInputComponent = connect()(
 
         componentDidMount() {
             this.props.dispatch<any>(
-                initProjectsTreePicker(WORKFLOW_OWNER_PROJECT));
+                initProjectsTreePicker(this.props.commandInput.id));
         }
 
         render() {
@@ -106,8 +105,7 @@ const ProjectInputComponent = connect()(
                 <DialogTitle>Choose a project</DialogTitle>
                 <DialogContent>
                     <ProjectsTreePicker
-                        pickerId={WORKFLOW_OWNER_PROJECT}
-                        includeCollections
+                        pickerId={this.props.commandInput.id}
                         options={this.props.options}
                         toggleItemActive={this.setProject} />
                 </DialogContent>
diff --git a/src/views/run-process-panel/run-process-basic-form.tsx b/src/views/run-process-panel/run-process-basic-form.tsx
index 1417c074..a8005ad2 100644
--- a/src/views/run-process-panel/run-process-basic-form.tsx
+++ b/src/views/run-process-panel/run-process-basic-form.tsx
@@ -6,16 +6,19 @@ import React from 'react';
 import { reduxForm, Field } from 'redux-form';
 import { Grid } from '@material-ui/core';
 import { TextField } from 'components/text-field/text-field';
-import { ProjectInput } from 'views/run-process-panel/inputs/project-input';
+import { ProjectInput, ProjectCommandInputParameter } from 'views/run-process-panel/inputs/project-input';
 import { PROCESS_NAME_VALIDATION } from 'validators/validators';
+import { ProjectResource } from 'models/project';
+import { UserResource } from 'models/user';
 
 export const RUN_PROCESS_BASIC_FORM = 'runProcessBasicForm';
 
 export interface RunProcessBasicFormData {
     name: string;
     description: string;
-    ownerUuid?: string;
+    owner?: ProjectResource | UserResource;
 }
+
 export const RunProcessBasicForm =
     reduxForm<RunProcessBasicFormData>({
         form: RUN_PROCESS_BASIC_FORM
@@ -37,10 +40,11 @@ export const RunProcessBasicForm =
                         label="Enter a description for run process" />
                 </Grid>
                 <Grid item xs={12} md={6}>
-                    <Field
-                        name='ownerUuid'
-                        component={ProjectInput as any}
-                        label="Project to run the process in" />
+                    <ProjectInput input={{
+                        id: "owner",
+                        label: "Project where the workflow will run"
+                    } as ProjectCommandInputParameter}
+                        options={{ showOnlyOwned: false, showOnlyWritable: true }} />
                 </Grid>
             </Grid>
         </form>);

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list