87: Add initial view for splitting project
This commit is contained in:
parent
23e0a7f5ea
commit
f33956068d
view/src/main/java/se/su/dsv/scipro/admin/pages
@ -49,6 +49,9 @@
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<wicket:container wicket:id="splitPanel"/>
|
||||
|
||||
</wicket:extend>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -2,15 +2,24 @@ package se.su.dsv.scipro.admin.pages;
|
||||
|
||||
import com.google.common.eventbus.EventBus;
|
||||
import jakarta.inject.Inject;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import org.apache.wicket.RestartResponseException;
|
||||
import org.apache.wicket.markup.html.form.*;
|
||||
import org.apache.wicket.markup.html.form.DropDownChoice;
|
||||
import org.apache.wicket.markup.html.form.Form;
|
||||
import org.apache.wicket.markup.html.form.FormComponent;
|
||||
import org.apache.wicket.markup.html.form.LambdaChoiceRenderer;
|
||||
import org.apache.wicket.markup.html.form.RequiredTextField;
|
||||
import org.apache.wicket.markup.html.form.TextField;
|
||||
import org.apache.wicket.markup.html.panel.FeedbackPanel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.LambdaModel;
|
||||
import org.apache.wicket.request.mapper.parameter.PageParameters;
|
||||
import se.su.dsv.scipro.components.*;
|
||||
import se.su.dsv.scipro.components.AutoCompleteRoleProvider;
|
||||
import se.su.dsv.scipro.components.BootstrapDatePicker;
|
||||
import se.su.dsv.scipro.components.DatesValidator;
|
||||
import se.su.dsv.scipro.components.DefaultSelect2MultiChoice;
|
||||
import se.su.dsv.scipro.components.ResearchAreaChoiceRenderer;
|
||||
import se.su.dsv.scipro.components.ResearchAreasModel;
|
||||
import se.su.dsv.scipro.components.SupervisorAutoComplete;
|
||||
import se.su.dsv.scipro.components.menuhighlighting.MenuHighlightAdminProjectManagement;
|
||||
import se.su.dsv.scipro.data.DetachableServiceModel;
|
||||
import se.su.dsv.scipro.data.DetachableServiceModelCollection;
|
||||
@ -26,9 +35,21 @@ import se.su.dsv.scipro.project.ProjectService;
|
||||
import se.su.dsv.scipro.project.ReviewerAssignedEvent;
|
||||
import se.su.dsv.scipro.security.auth.Authorization;
|
||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||
import se.su.dsv.scipro.system.*;
|
||||
import se.su.dsv.scipro.system.ProjectType;
|
||||
import se.su.dsv.scipro.system.ProjectTypeService;
|
||||
import se.su.dsv.scipro.system.ResearchArea;
|
||||
import se.su.dsv.scipro.system.ResearchAreaService;
|
||||
import se.su.dsv.scipro.system.User;
|
||||
import se.su.dsv.scipro.system.UserSearchService;
|
||||
import se.su.dsv.scipro.system.UserService;
|
||||
import se.su.dsv.scipro.util.PageParameterKeys;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.TreeSet;
|
||||
|
||||
@Authorization(authorizedRoles = { Roles.SYSADMIN })
|
||||
public class AdminEditProjectPage extends AbstractAdminProjectPage implements MenuHighlightAdminProjectManagement {
|
||||
|
||||
@ -74,7 +95,10 @@ public class AdminEditProjectPage extends AbstractAdminProjectPage implements Me
|
||||
if (project == null) {
|
||||
throw new RestartResponseException(AdminCreateProjectPage.class);
|
||||
}
|
||||
add(new ProjectForm(FORM, new DetachableServiceModel<>(projectService, project)));
|
||||
DetachableServiceModel<Project> dsModel = new DetachableServiceModel<>(projectService, project);
|
||||
|
||||
add(new ProjectForm(FORM, dsModel));
|
||||
add(new AdminSplitProjectPanel("splitPanel", dsModel));
|
||||
}
|
||||
|
||||
private class ProjectForm extends Form<Project> {
|
||||
|
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<div class="row mt-5">
|
||||
<div class="col-md-12 col-lg-8 col-xl-5">
|
||||
<p>
|
||||
<a class="btn" wicket:id="splitProjectLink"><wicket:message key="splitButton" /></a>
|
||||
</p>
|
||||
<p wicket:id="splitInfo"></p>
|
||||
</div>
|
||||
</div>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,80 @@
|
||||
package se.su.dsv.scipro.admin.pages;
|
||||
|
||||
import org.apache.wicket.behavior.AttributeAppender;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.link.AbstractLink;
|
||||
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import se.su.dsv.scipro.project.Project;
|
||||
import se.su.dsv.scipro.project.ProjectStatus;
|
||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||
import se.su.dsv.scipro.session.SciProSession;
|
||||
|
||||
public class AdminSplitProjectPanel extends Panel {
|
||||
private enum SplittableStatus {
|
||||
NOT_ACTIVE, NOT_TWO_PARTICIPANTS, FINAL_SEMINAR_PHASE_STARTED, OK
|
||||
}
|
||||
|
||||
public AdminSplitProjectPanel(String id, final IModel<Project> projectModel) {
|
||||
super(id, projectModel);
|
||||
|
||||
Project project = projectModel.getObject();
|
||||
SplittableStatus splittableStatus = getSplitStatus(project);
|
||||
|
||||
AbstractLink splitProjectLink = new BookmarkablePageLink<Void>("splitProjectLink", AdminCreateProjectPage.class) {
|
||||
@Override
|
||||
protected void onConfigure() {
|
||||
super.onConfigure();
|
||||
|
||||
if (splittableStatus == SplittableStatus.OK) {
|
||||
setEnabled(true);
|
||||
this.add(new AttributeAppender("class", Model.of(" btn-success")));
|
||||
} else {
|
||||
setEnabled(false);
|
||||
this.add(new AttributeAppender("class", Model.of(" btn-secondary disabled")));
|
||||
}
|
||||
}
|
||||
};
|
||||
add(splitProjectLink);
|
||||
|
||||
if (splittableStatus == SplittableStatus.NOT_TWO_PARTICIPANTS) {
|
||||
add(new Label("splitInfo", Model.of("To be able to split a project, it needs to have 2 participants.")));
|
||||
} else if (splittableStatus == SplittableStatus.NOT_ACTIVE) {
|
||||
add(new Label("splitInfo", Model.of("Only active project can be split.")));
|
||||
} else {
|
||||
add(new Label("splitInfo", Model.of("")));
|
||||
}
|
||||
|
||||
/*
|
||||
Label splitInfoLabel = new Label("splitInfoLabel", dsModel) {
|
||||
@Override
|
||||
protected void onConfigure() {
|
||||
super.onConfigure();
|
||||
|
||||
Project attachedProject = dsModel.getObject();
|
||||
if (attachedProject.getProjectParticipants().size() < 2) {
|
||||
this
|
||||
}
|
||||
}
|
||||
};
|
||||
*/
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onConfigure() {
|
||||
super.onConfigure();
|
||||
setVisibilityAllowed(SciProSession.get().authorizedForRole(Roles.ADMIN));
|
||||
}
|
||||
|
||||
private SplittableStatus getSplitStatus(final Project project) {
|
||||
if (project.getProjectParticipants().size() != 2) {
|
||||
return SplittableStatus.NOT_TWO_PARTICIPANTS;
|
||||
} else if (project.getProjectStatus() != ProjectStatus.ACTIVE) {
|
||||
return SplittableStatus.NOT_ACTIVE;
|
||||
} else {
|
||||
return SplittableStatus.OK;
|
||||
}
|
||||
}
|
||||
}
|
1
view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.utf8.properties
Normal file
1
view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.utf8.properties
Normal file
@ -0,0 +1 @@
|
||||
splitButton = Split ProjectX
|
Loading…
x
Reference in New Issue
Block a user