fill actions for add and remove property from new project form
authorJanicki Artur <artur.janicki@contractors.roche.com>
Thu, 20 Dec 2018 10:39:02 +0000 (11:39 +0100)
committerJanicki Artur <artur.janicki@contractors.roche.com>
Thu, 20 Dec 2018 10:39:02 +0000 (11:39 +0100)
Feature #14248_assigning_properties_to_projects_during_create

Arvados-DCO-1.1-Signed-off-by: Janicki Artur <artur.janicki@contractors.roche.com>

src/store/projects/project-create-actions.ts
src/views-components/dialog-create/dialog-project-create.tsx
src/views-components/project-properties/create-project-properties-list.tsx

index d87046e2da905ca7434aca46169819e4df49a37f..625bd29e1db8725a3f6ca29c0f91a49f5e935de3 100644 (file)
@@ -11,6 +11,7 @@ import { ProjectResource } from '~/models/project';
 import { ServiceRepository } from '~/services/services';
 import { matchProjectRoute, matchRunProcessRoute } from '~/routes/routes';
 import { ResourcePropertiesFormData } from '~/views-components/resource-properties-form/resource-properties-form';
+import { GraphChange } from '../../lib/cwl-svg/plugins/plugin';
 
 export interface ProjectCreateFormDialogData {
     ownerUuid: string;
@@ -69,12 +70,16 @@ export const createProject = (project: Partial<ProjectResource>) =>
 
 export const addPropertyToCreateProjectForm = (data: ResourcePropertiesFormData) =>
     (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
-        console.log('addPropertyToCreateProjectForm: ', data);
-        dispatch(change(PROJECT_CREATE_FORM_NAME, 'properties',  data));
-        // dispatch(arrayPush(PROJECT_CREATE_FORM_NAME, 'properties', data));
+        const selector = formValueSelector(PROJECT_CREATE_FORM_NAME);
+        const properties = selector(getState(), 'properties') || {};
+        properties[data.key] = data.value;
+        dispatch(change(PROJECT_CREATE_FORM_NAME, 'properties', {...properties } ));
     };
 
 export const removePropertyFromCreateProjectForm = (key: string) =>
     (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
-        console.log('removePropertyFromCreateProjectForm: ', key);
+        const selector = formValueSelector(PROJECT_CREATE_FORM_NAME);
+        const properties = selector(getState(), 'properties');
+        delete properties[key];
+        dispatch(change(PROJECT_CREATE_FORM_NAME, 'properties', { ...properties } ));
     };
\ No newline at end of file
index 481957d1d1381690b2f259d4c9c2cc4a67a1d02f..02fb67e5f202c8b70b96c1bb59f76587998edf40 100644 (file)
@@ -21,7 +21,7 @@ export const DialogProjectCreate = (props: DialogProjectProps) =>
         {...props}
     />;
 
-const ProjectAddFields = (props: any) => <span>
+const ProjectAddFields = () => <span>
     <ProjectNameField />
     <ProjectDescriptionField />
     <CreateProjectPropertiesForm />
index 942de8a89b4235d5ecf91e7a11e3fdee999038e1..1e98905cf20c0c9643ac0897969c3dbe7fbd3771 100644 (file)
@@ -41,15 +41,16 @@ const mapDispatchToProps = (dispatch: Dispatch): CreateProjectPropertiesListActi
 type CreateProjectPropertiesListProps = CreateProjectPropertiesListDataProps & 
     CreateProjectPropertiesListActionProps & WithStyles<CssRules>;
 
-export const CreateProjectPropertiesList = connect(mapStateToProps, mapDispatchToProps)(
-    withStyles(styles)(
-        ({ classes, handleDelete, properties }: CreateProjectPropertiesListProps) =>
-            <div>
-                { properties &&
-                    Object.keys(properties).map(k => {
-                        return <Chip key={k} className={classes.tag}
-                            onDelete={() => handleDelete(k)}
-                            label={`${k}: ${properties[k]}`} />;
+const List = withStyles(styles)(
+    ({ classes, handleDelete, properties }: CreateProjectPropertiesListProps) =>
+        <div>
+            {properties &&
+                Object.keys(properties).map(k => {
+                    return <Chip key={k} className={classes.tag}
+                        onDelete={() => handleDelete(k)}
+                        label={`${k}: ${properties[k]}`} />;
                 })}
-            </div>
-        ));
\ No newline at end of file
+        </div>
+);
+
+export const CreateProjectPropertiesList = connect(mapStateToProps, mapDispatchToProps)(List);
\ No newline at end of file