authors now only sees ideas on currently open application periods when selecting supervisor provided ideas

This commit is contained in:
Emil Siverhall 2012-07-30 14:13:51 +02:00
parent 6902f96bc6
commit ae2edb6f9c
6 changed files with 75 additions and 18 deletions

@ -29,10 +29,14 @@ public abstract class FilterFormProjectClass extends Panel {
private final CheckGroup<ProjectClass> checkGroup; private final CheckGroup<ProjectClass> checkGroup;
public FilterFormProjectClass(String id) { public FilterFormProjectClass(String id, List<ProjectClass> classes) {
super(id); super(id);
if(classes==null)
projectClassList = projectClassService.findAllActive(); projectClassList = projectClassService.findAllActive();
else
projectClassList = classes;
CompoundPropertyModel<List<ProjectClass>> levelModel = new CompoundPropertyModel<List<ProjectClass>>(projectClassList); CompoundPropertyModel<List<ProjectClass>> levelModel = new CompoundPropertyModel<List<ProjectClass>>(projectClassList);
checkGroup = new CheckGroup<ProjectClass>("checkGroup",new ArrayList<ProjectClass>(projectClassList)); checkGroup = new CheckGroup<ProjectClass>("checkGroup",new ArrayList<ProjectClass>(projectClassList));

@ -4,10 +4,6 @@
<wicket:extend> <wicket:extend>
<div class="prepend-top span-24 last"> <div class="prepend-top span-24 last">
<div wicket:id="feedback"></div> <div wicket:id="feedback"></div>
<div class="info-box rounded-box last">
Application period is open from 2012-01-01 to 2013-01-01 and the
course start for the application period is 2014-05-01. (dummy data)
</div>
<div wicket:id="ideaOverview"></div> <div wicket:id="ideaOverview"></div>
</div> </div>
</wicket:extend> </wicket:extend>

@ -9,10 +9,21 @@
<div wicket:id="dialog"> <div wicket:id="dialog">
<div wicket:id="dialogPanel"></div> <div wicket:id="dialogPanel"></div>
</div> </div>
<div class="info-box rounded-box last">
<b>Project idea submission is now open for the following project levels:</b><br /><br />
<div wicket:id="noLabel"></div>
<div wicket:id="periodList">
<div>
<span wicket:id="levelName"></span><span wicket:id="dates"></span>
</div>
</div>
</div>
<div wicket:id="tableMarkup">
<form wicket:id="form"> <form wicket:id="form">
<div class="span-5" wicket:id="levelFilter"></div> <div class="span-5" wicket:id="levelFilter"></div>
</form> </form>
<div class="span-24 prepend-top" wicket:id="dataPanel"></div> <div class="span-24 prepend-top" wicket:id="dataPanel"></div>
</div>
</wicket:panel> </wicket:panel>
</body> </body>
</html> </html>

@ -1,32 +1,40 @@
package se.su.dsv.scipro.project.panels; package se.su.dsv.scipro.project.panels;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.EmptyPanel; import org.apache.wicket.markup.html.panel.EmptyPanel;
import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel; import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model; import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean; import org.apache.wicket.spring.injection.annot.SpringBean;
import org.apache.wicket.util.time.Duration;
import org.odlabs.wiquery.ui.dialog.Dialog; import org.odlabs.wiquery.ui.dialog.Dialog;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import se.su.dsv.scipro.data.dataobjects.Student; import se.su.dsv.scipro.data.dataobjects.ProjectClass;
import se.su.dsv.scipro.data.dataobjects.User; import se.su.dsv.scipro.data.dataobjects.User;
import se.su.dsv.scipro.datatables.ClickableTitleColumn; import se.su.dsv.scipro.datatables.ClickableTitleColumn;
import se.su.dsv.scipro.datatables.GenericDataPanel; import se.su.dsv.scipro.datatables.GenericDataPanel;
import se.su.dsv.scipro.match.dataobject.ApplicationPeriod;
import se.su.dsv.scipro.match.dataobject.Idea.IdeaStatus; import se.su.dsv.scipro.match.dataobject.Idea.IdeaStatus;
import se.su.dsv.scipro.match.dataobject.SupervisorIdea; import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
import se.su.dsv.scipro.match.panel.FilterFormProjectClass; import se.su.dsv.scipro.match.panel.FilterFormProjectClass;
import se.su.dsv.scipro.springdata.services.ApplicationPeriodService;
import se.su.dsv.scipro.springdata.services.GenericService; import se.su.dsv.scipro.springdata.services.GenericService;
import se.su.dsv.scipro.springdata.services.StudentService;
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService; import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
import se.su.dsv.scipro.util.DateFormatter;
import com.google.common.base.Joiner;
public class ProjectIdeaOverviewPanel extends Panel { public class ProjectIdeaOverviewPanel extends Panel {
@ -35,16 +43,24 @@ public class ProjectIdeaOverviewPanel extends Panel {
@SpringBean @SpringBean
private SupervisorIdeaService ideaService; private SupervisorIdeaService ideaService;
@SpringBean @SpringBean
private StudentService studentService; private ApplicationPeriodService periodService;
private SupervisorIdeaService.FilterParams params; private SupervisorIdeaService.FilterParams params;
private GenericDataPanel<SupervisorIdea> genericDataPanel; private GenericDataPanel<SupervisorIdea> genericDataPanel;
private Dialog dialog; private Dialog dialog;
private List<ProjectClass> currentLevels;
public ProjectIdeaOverviewPanel(String id, User currentUser) { public ProjectIdeaOverviewPanel(String id, User currentUser) {
super(id); super(id);
WebMarkupContainer wmc = new WebMarkupContainer("tableMarkup");
addDialog(); addDialog();
addDataTable(currentUser); addPeriodInfo();
add(new FilterForm("form")); addDataTable(currentUser, wmc);
wmc.add(new FilterForm("form"));
wmc.setVisible(!currentLevels.isEmpty());
add(wmc);
} }
private void addDialog() { private void addDialog() {
@ -57,8 +73,39 @@ public class ProjectIdeaOverviewPanel extends Panel {
add(dialog); add(dialog);
} }
private void addDataTable(final User currentUser) { private void addPeriodInfo() {
add(genericDataPanel = new GenericDataPanel<SupervisorIdea>("dataPanel") { List<ApplicationPeriod> currentPeriods = periodService.getCurrentPeriods(new Date());
ListView<ApplicationPeriod> periodListView = new ListView<ApplicationPeriod>("periodList", currentPeriods){
private static final long serialVersionUID = -5508891454629790181L;
@Override
protected void populateItem(ListItem<ApplicationPeriod> item) {
ApplicationPeriod ap = (ApplicationPeriod)item.getModelObject();
List<String> levelStrings = new ArrayList<String>();
for(ProjectClass pc : ap.getProjectClass()) {
levelStrings.add(pc.getName());
}
item.add(new Label("levelName", Joiner.on(", ").join(levelStrings)));
item.add(new Label("dates", " period is open from " +
new DateFormatter(DateFormatter.FORMAT.DEFAULT).createFormattedString(ap.getStartDate()) + " to " +
new DateFormatter(DateFormatter.FORMAT.DEFAULT).createFormattedString(ap.getEndDate()) + " and the course start date is " +
new DateFormatter(DateFormatter.FORMAT.DEFAULT).createFormattedString(ap.getCourseStartDate())).setVisible(!levelStrings.isEmpty()));
}
};
add(periodListView);
currentLevels = new ArrayList<ProjectClass>();
for(ApplicationPeriod ap : currentPeriods)
for(ProjectClass pc : ap.getProjectClass())
currentLevels.add(pc);
Label noActivePeriodLabel = new Label("noLabel", "There are no active application period available right now.");
noActivePeriodLabel.setVisible(currentLevels.isEmpty());
add(noActivePeriodLabel);
}
private void addDataTable(final User currentUser, WebMarkupContainer wmc) {
wmc.add(genericDataPanel = new GenericDataPanel<SupervisorIdea>("dataPanel") {
private static final long serialVersionUID = -4539188306454725307L; private static final long serialVersionUID = -4539188306454725307L;
@ -109,7 +156,7 @@ public class ProjectIdeaOverviewPanel extends Panel {
params = new SupervisorIdeaService.FilterParams(); params = new SupervisorIdeaService.FilterParams();
//FILTERING ON PROJECT CLASS: //FILTERING ON PROJECT CLASS:
final FilterFormProjectClass levelFilter = new FilterFormProjectClass("levelFilter") { final FilterFormProjectClass levelFilter = new FilterFormProjectClass("levelFilter", currentLevels) {
private static final long serialVersionUID = -7758850229259608443L; private static final long serialVersionUID = -7758850229259608443L;
@Override @Override

@ -142,7 +142,7 @@ public class SupervisorProjectIdeaOverviewPanel extends Panel {
params = new SupervisorIdeaService.FilterParams(); params = new SupervisorIdeaService.FilterParams();
//FILTERING ON PROJECT CLASS: //FILTERING ON PROJECT CLASS:
final FilterFormProjectClass levelFilter = new FilterFormProjectClass("levelFilter") { final FilterFormProjectClass levelFilter = new FilterFormProjectClass("levelFilter", null) {
private static final long serialVersionUID = -7758850229259608443L; private static final long serialVersionUID = -7758850229259608443L;
@Override @Override

@ -10,7 +10,6 @@ import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import org.jsoup.select.Evaluator.AllElements;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;