diff --git a/view/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectTypePanel.html b/view/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectTypePanel.html index f96fcb4fb4..9b4aa476dc 100755 --- a/view/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectTypePanel.html +++ b/view/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectTypePanel.html @@ -22,6 +22,18 @@ <label wicket:for="description">Description</label> <textarea class="form-control" wicket:id="description" cols="60" rows="5"></textarea> </div> + <div class="mb-3"> + <label wicket:for="minimum_authors"> + Minimum number of authors per student idea + </label> + <input class="form-control" type="number" wicket:id="minimum_authors"> + </div> + <div class="mb-3"> + <label wicket:for="minimum_authors"> + Maximum number of authors per student idea + </label> + <input class="form-control" type="number" wicket:id="maximum_authors"> + </div> <div class="mb-3"> <label wicket:for="minimum_oppositions_to_be_graded"> Minimum approved final seminar oppositions to be graded diff --git a/view/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectTypePanel.java b/view/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectTypePanel.java index a50e5f87d5..a3b855e306 100755 --- a/view/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectTypePanel.java +++ b/view/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectTypePanel.java @@ -68,6 +68,22 @@ public class AdminProjectTypePanel extends Panel { minimumActiveParticipationsToBeGraded.setMinimum(0); add(minimumActiveParticipationsToBeGraded); + NumberTextField<Integer> minimumAuthors = new NumberTextField<>( + "minimum_authors", + LambdaModel.of(settings, ProjectTypeSettings::getMinAuthors, ProjectTypeSettings::setMinAuthors), + Integer.class); + minimumAuthors.setMinimum(1); + minimumAuthors.setRequired(true); + add(minimumAuthors); + + NumberTextField<Integer> maximumAuthors = new NumberTextField<>( + "maximum_authors", + LambdaModel.of(settings, ProjectTypeSettings::getMaxAuthors, ProjectTypeSettings::setMaxAuthors), + Integer.class); + maximumAuthors.setMinimum(1); + maximumAuthors.setRequired(true); + add(maximumAuthors); + Button createButton = new Button("createButton") { @Override public void onSubmit() { diff --git a/view/src/test/java/se/su/dsv/scipro/admin/panels/AdminProjectTypePanelTest.java b/view/src/test/java/se/su/dsv/scipro/admin/panels/AdminProjectTypePanelTest.java index eadd19d0b0..d9259509f9 100644 --- a/view/src/test/java/se/su/dsv/scipro/admin/panels/AdminProjectTypePanelTest.java +++ b/view/src/test/java/se/su/dsv/scipro/admin/panels/AdminProjectTypePanelTest.java @@ -40,4 +40,19 @@ public class AdminProjectTypePanelTest extends SciProTest { assertEquals(DegreeType.values()[index], captor.getValue().getDegreeType()); } + + @Test + public void set_min_max_authors() { + FormTester formTester = tester.newFormTester(path(panel, "projectTypeForm")); + formTester.setValue("name", "bachelor"); + formTester.setValue("minimum_authors", "17"); + formTester.setValue("maximum_authors", "29"); + formTester.submit("createButton"); + + ArgumentCaptor<ProjectType> captor = ArgumentCaptor.forClass(ProjectType.class); + verify(projectTypeService).save(captor.capture()); + + assertEquals(17, captor.getValue().getProjectTypeSettings().getMinAuthors()); + assertEquals(29, captor.getValue().getProjectTypeSettings().getMaxAuthors()); + } }