[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