3204 Show current reviewer in the project management page

This commit is contained in:
Andreas Svanberg 2023-12-06 15:56:10 +01:00
parent 9128cd40e5
commit d6d51d7e34
2 changed files with 25 additions and 6 deletions
view/src/main/java/se/su/dsv/scipro/datatables/project

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:panel>
<span wicket:id="current_reviewer">[John Doe]</span>
<br>
<a wicket:id="link">(change reviewer)</a>
</wicket:panel>
</body>
</html>

@ -12,6 +12,7 @@ import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvid
import org.apache.wicket.feedback.FencedFeedbackPanel;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.panel.GenericPanel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
@ -35,6 +36,7 @@ import se.su.dsv.scipro.datatables.AjaxCheckboxWrapper;
import se.su.dsv.scipro.notifications.NotificationController;
import se.su.dsv.scipro.notifications.dataobject.NotificationSource;
import se.su.dsv.scipro.notifications.dataobject.ProjectEvent;
import se.su.dsv.scipro.profile.UserLinkPanel;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.project.ProjectService;
import se.su.dsv.scipro.project.ProjectStatus;
@ -163,12 +165,7 @@ public class ProjectDataPanel extends Panel {
return new LambdaColumn<>(Model.of("Reviewer"), Project::getReviewer) {
@Override
public void populateItem(final Item<ICellPopulator<Project>> cellItem, final String componentId, final IModel<Project> rowModel) {
cellItem.add(LinkWrapper.apply(componentId, id -> {
PageParameters pp = AdminAssignReviewerPage.pageParametersFor(rowModel.getObject());
final BookmarkablePageLink<Void> link = new BookmarkablePageLink<>(id, AdminAssignReviewerPage.class, pp);
link.setBody(Model.of("Assign reviewer"));
return link;
}));
cellItem.add(new ReviewerColumnCell(componentId, rowModel));
}
};
}
@ -216,4 +213,16 @@ public class ProjectDataPanel extends Panel {
};
add(newLink);
}
private static class ReviewerColumnCell extends GenericPanel<Project> {
public ReviewerColumnCell(String id, IModel<Project> project) {
super(id, project);
add(new UserLinkPanel("current_reviewer", project.map(Project::getReviewer)));
PageParameters pp = AdminAssignReviewerPage.pageParametersFor(project.getObject());
final BookmarkablePageLink<Void> link = new BookmarkablePageLink<>("link", AdminAssignReviewerPage.class, pp);
add(link);
}
}
}