// Create new group
cy.get('[data-cy=groups-panel-new-group]').click();
cy.get('[data-cy=form-dialog]')
- .should('contain', 'Create Group')
+ .should('contain', 'New Group')
.within(() => {
cy.get('input[name=name]').type(groupName);
cy.get('[data-cy=users-field] input').type("three");
});
cy.get('[role=tooltip]').click();
- cy.get('[data-cy=form-dialog] button[type=submit]').click();
+ cy.get('[data-cy=form-dialog]').within(() => {
+ cy.get('[data-cy=form-submit-btn]').click();
+ })
// Check that the group was created
cy.get('[data-cy=groups-panel-data-explorer]').contains(groupName).click();
cy.get('[data-cy=side-panel-button]').click();
cy.get('[data-cy=side-panel-new-project]').click();
cy.get('[data-cy=form-dialog]')
- .should('contain', 'New project')
+ .should('contain', 'New Project')
.within(() => {
cy.get('[data-cy=name-field]').within(() => {
cy.get('input').type(projName);
cy.get('[data-cy=side-panel-button]').click();
cy.get('[data-cy=side-panel-new-project]').click();
cy.get('[data-cy=form-dialog]')
- .should('contain', 'New project')
+ .should('contain', 'New Project')
.within(() => {
cy.get('[data-cy=parent-field]').within(() => {
cy.get('input').invoke('val').then((val) => {
import { PermissionService } from 'services/permission-service/permission-service';
import { FilterBuilder } from 'services/api/filter-builder';
import { ProjectUpdateFormDialogData, PROJECT_UPDATE_FORM_NAME } from 'store/projects/project-update-actions';
+import { PROJECT_CREATE_FORM_NAME } from 'store/projects/project-create-actions';
export const GROUPS_PANEL_ID = "groupsPanel";
export const openCreateGroupDialog = () =>
(dispatch: Dispatch, getState: () => RootState) => {
- dispatch(initialize(PROJECT_UPDATE_FORM_NAME, {}));
- dispatch(dialogActions.OPEN_DIALOG({ id: PROJECT_UPDATE_FORM_NAME, data: {sourcePanel: GroupClass.ROLE, create: true} }));
+ dispatch(initialize(PROJECT_CREATE_FORM_NAME, {}));
+ dispatch(dialogActions.OPEN_DIALOG({
+ id: PROJECT_CREATE_FORM_NAME,
+ data: {
+ sourcePanel: GroupClass.ROLE,
+ }
+ }));
};
export const openGroupAttributes = (uuid: string) =>
export const openGroupUpdateDialog = (resource: ProjectUpdateFormDialogData) =>
(dispatch: Dispatch, getState: () => RootState) => {
dispatch(initialize(PROJECT_UPDATE_FORM_NAME, resource));
- dispatch(dialogActions.OPEN_DIALOG({ id: PROJECT_UPDATE_FORM_NAME, data: {sourcePanel: GroupClass.ROLE} }));
+ dispatch(dialogActions.OPEN_DIALOG({
+ id: PROJECT_UPDATE_FORM_NAME,
+ data: {
+ sourcePanel: GroupClass.ROLE,
+ }
+ }));
};
export const updateGroup = (project: ProjectUpdateFormDialogData) =>
export const createGroup = ({ name, users = [], description }: ProjectUpdateFormDialogData) =>
async (dispatch: Dispatch, _: {}, { groupsService, permissionService }: ServiceRepository) => {
- dispatch(startSubmit(PROJECT_UPDATE_FORM_NAME));
+ dispatch(startSubmit(PROJECT_CREATE_FORM_NAME));
try {
const newGroup = await groupsService.create({ name, description, groupClass: GroupClass.ROLE });
for (const user of users) {
permissionService,
});
}
- dispatch(dialogActions.CLOSE_DIALOG({ id: PROJECT_UPDATE_FORM_NAME }));
- dispatch(reset(PROJECT_UPDATE_FORM_NAME));
+ dispatch(dialogActions.CLOSE_DIALOG({ id: PROJECT_CREATE_FORM_NAME }));
+ dispatch(reset(PROJECT_CREATE_FORM_NAME));
dispatch(loadGroupsPanel());
dispatch(snackbarActions.OPEN_SNACKBAR({
message: `${newGroup.name} group has been created`,
} catch (e) {
const error = getCommonResourceServiceError(e);
if (error === CommonResourceServiceError.UNIQUE_NAME_VIOLATION) {
- dispatch(stopSubmit(PROJECT_UPDATE_FORM_NAME, { name: 'Group with the same name already exists.' } as FormErrors));
+ dispatch(stopSubmit(PROJECT_CREATE_FORM_NAME, { name: 'Group with the same name already exists.' } as FormErrors));
}
return;
}
import { ServiceRepository } from 'services/services';
import { matchProjectRoute, matchRunProcessRoute } from 'routes/routes';
import { RouterState } from "react-router-redux";
+import { GroupClass } from "models/group";
export interface ProjectCreateFormDialogData {
ownerUuid: string;
} else {
dispatch(initialize(PROJECT_CREATE_FORM_NAME, { ownerUuid }));
}
- dispatch(dialogActions.OPEN_DIALOG({ id: PROJECT_CREATE_FORM_NAME, data: {} }));
+ dispatch(dialogActions.OPEN_DIALOG({
+ id: PROJECT_CREATE_FORM_NAME,
+ data: {
+ sourcePanel: GroupClass.PROJECT,
+ }
+ }));
};
export const createProject = (project: Partial<ProjectResource>) =>
export const openProjectUpdateDialog = (resource: ProjectUpdateFormDialogData) =>
(dispatch: Dispatch, getState: () => RootState) => {
dispatch(initialize(PROJECT_UPDATE_FORM_NAME, resource));
- dispatch(dialogActions.OPEN_DIALOG({ id: PROJECT_UPDATE_FORM_NAME, data: {sourcePanel: GroupClass.PROJECT} }));
+ dispatch(dialogActions.OPEN_DIALOG({
+ id: PROJECT_UPDATE_FORM_NAME,
+ data: {
+ sourcePanel: GroupClass.PROJECT,
+ }
+ }));
};
export const updateProject = (project: ProjectUpdateFormDialogData) =>
import { WithDialogProps } from 'store/dialog/with-dialog';
import { ProjectCreateFormDialogData, PROJECT_CREATE_FORM_NAME } from 'store/projects/project-create-actions';
import { FormDialog } from 'components/form-dialog/form-dialog';
-import { ProjectNameField, ProjectDescriptionField } from 'views-components/form-fields/project-form-fields';
+import { ProjectNameField, ProjectDescriptionField, UsersField } from 'views-components/form-fields/project-form-fields';
import { CreateProjectPropertiesForm } from 'views-components/project-properties/create-project-properties-form';
import { ResourceParentField } from '../form-fields/resource-form-fields';
import { FormGroup, FormLabel } from '@material-ui/core';
import { resourcePropertiesList } from 'views-components/resource-properties/resource-properties-list';
+import { GroupClass } from 'models/group';
-type DialogProjectProps = WithDialogProps<{}> & InjectedFormProps<ProjectCreateFormDialogData>;
+type DialogProjectProps = WithDialogProps<{sourcePanel: GroupClass}> & InjectedFormProps<ProjectCreateFormDialogData>;
-export const DialogProjectCreate = (props: DialogProjectProps) =>
- <FormDialog
- dialogTitle='New project'
- formFields={ProjectAddFields}
- submitLabel='Create a Project'
+export const DialogProjectCreate = (props: DialogProjectProps) => {
+ let title = 'New Project';
+ let fields = ProjectAddFields;
+ const sourcePanel = props.data.sourcePanel || '';
+
+ if (sourcePanel === GroupClass.ROLE) {
+ title = 'New Group';
+ fields = GroupAddFields;
+ }
+
+ return <FormDialog
+ dialogTitle={title}
+ formFields={fields}
+ submitLabel='Create'
{...props}
/>;
+};
const CreateProjectPropertiesList = resourcePropertiesList(PROJECT_CREATE_FORM_NAME);
<CreateProjectPropertiesList />
</FormGroup>
</span>;
+
+const GroupAddFields = () => <span>
+ <ProjectNameField />
+ <UsersField />
+ <ProjectDescriptionField />
+ <FormLabel>Properties</FormLabel>
+ <FormGroup>
+ <CreateProjectPropertiesForm />
+ <CreateProjectPropertiesList />
+ </FormGroup>
+</span>;
import { PROJECT_CREATE_FORM_NAME, ProjectCreateFormDialogData } from 'store/projects/project-create-actions';
import { DialogProjectCreate } from 'views-components/dialog-create/dialog-project-create';
import { createProject } from "store/workbench/workbench-actions";
+import { GroupClass } from "models/group";
+import { createGroup } from "store/groups-panel/groups-panel-actions";
export const CreateProjectDialog = compose(
withDialog(PROJECT_CREATE_FORM_NAME),
reduxForm<ProjectCreateFormDialogData>({
form: PROJECT_CREATE_FORM_NAME,
- onSubmit: (data, dispatch) => {
- dispatch(createProject(data));
+ onSubmit: (data, dispatch, props) => {
+ switch (props.data.sourcePanel) {
+ case GroupClass.PROJECT:
+ dispatch(createProject(data));
+ break;
+ case GroupClass.ROLE:
+ dispatch(createGroup(data));
+ break;
+ default:
+ break;
+ }
}
})
)(DialogProjectCreate);
\ No newline at end of file
import { PROJECT_UPDATE_FORM_NAME, ProjectUpdateFormDialogData } from 'store/projects/project-update-actions';
import { updateProject, updateGroup } from 'store/workbench/workbench-actions';
import { GroupClass } from "models/group";
-import { createGroup } from "store/groups-panel/groups-panel-actions";
export const UpdateProjectDialog = compose(
withDialog(PROJECT_UPDATE_FORM_NAME),
dispatch(updateProject(data));
break;
case GroupClass.ROLE:
- if (data.uuid) {
- dispatch(updateGroup(data));
- } else {
- dispatch(createGroup(data));
- }
+ dispatch(updateGroup(data));
break;
default:
break;
import { WithDialogProps } from 'store/dialog/with-dialog';
import { ProjectUpdateFormDialogData, PROJECT_UPDATE_FORM_NAME } from 'store/projects/project-update-actions';
import { FormDialog } from 'components/form-dialog/form-dialog';
-import { ProjectNameField, ProjectDescriptionField, UsersField } from 'views-components/form-fields/project-form-fields';
+import { ProjectNameField, ProjectDescriptionField } from 'views-components/form-fields/project-form-fields';
import { GroupClass } from 'models/group';
import { FormGroup, FormLabel } from '@material-ui/core';
import { UpdateProjectPropertiesForm } from 'views-components/project-properties/update-project-properties-form';
import { resourcePropertiesList } from 'views-components/resource-properties/resource-properties-list';
-type DialogProjectProps = WithDialogProps<{sourcePanel: GroupClass, create?: boolean}> & InjectedFormProps<ProjectUpdateFormDialogData>;
+type DialogProjectProps = WithDialogProps<{sourcePanel: GroupClass}> & InjectedFormProps<ProjectUpdateFormDialogData>;
export const DialogProjectUpdate = (props: DialogProjectProps) => {
let title = 'Edit Project';
- let fields = ProjectEditFields;
const sourcePanel = props.data.sourcePanel || '';
- const create = !!props.data.create;
if (sourcePanel === GroupClass.ROLE) {
- title = create ? 'Create Group' : 'Edit Group';
- fields = create ? GroupAddFields : ProjectEditFields;
+ title = 'Edit Group';
}
return <FormDialog
dialogTitle={title}
- formFields={fields}
+ formFields={ProjectEditFields}
submitLabel='Save'
{...props}
/>;
<UpdateProjectPropertiesList />
</FormGroup>
</span>;
-
-const GroupAddFields = () => <span>
- <ProjectNameField />
- <UsersField />
- <ProjectDescriptionField />
-</span>;