Supervisors should be able to report there interest for supervising a certain project idea.
This commit is contained in:
parent
f0a43fdf04
commit
6933a03d83
@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html
|
||||
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
|
||||
</head>
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<form wicket:id="form">
|
||||
<div wicket:id="wmc1">
|
||||
<div class="append-bottom"><button wicket:id="acceptButton">Report your interest to supervise</button></div>
|
||||
<div class="append-top">Enter a reason to your interest: (at least 5 characters)</div>
|
||||
<textarea wicket:id="reason" rows="5" style="width: 100%;"></textarea>
|
||||
</div>
|
||||
</form>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,89 @@
|
||||
package se.su.dsv.scipro.supervisor.panels;
|
||||
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.markup.html.AjaxLink;
|
||||
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.TextArea;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.LoadableDetachableModel;
|
||||
import org.apache.wicket.model.PropertyModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.apache.wicket.validation.validator.StringValidator;
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.GeneralSystemSettingsDao;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.ProjectIdeaDao;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao;
|
||||
import se.su.dsv.scipro.match.dataobject.ProjectIdea;
|
||||
import se.su.dsv.scipro.match.dataobject.SupervisorInterest;
|
||||
import se.su.dsv.scipro.data.dataobjects.Employee;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class SupervisorInterestPanel extends Panel {
|
||||
|
||||
private static final long serialVersionUID = 7164999234242995192L;
|
||||
@SpringBean
|
||||
private ProjectIdeaDao projectIdeaDao;
|
||||
|
||||
@SpringBean
|
||||
private GeneralSystemSettingsDao gDao;
|
||||
|
||||
@SpringBean
|
||||
SupervisorDao employeeDao;
|
||||
|
||||
public abstract void onUpdate(AjaxRequestTarget target);
|
||||
|
||||
public SupervisorInterestPanel(String id, final IModel<ProjectIdea> projectIdeaIModel) {
|
||||
super(id);
|
||||
final LoadableDetachableModel<ProjectIdea> projectIdeaModel = new LoadableDetachableModel<ProjectIdea>() {
|
||||
private static final long serialVersionUID = 5696857658828934865L;
|
||||
@Override
|
||||
protected ProjectIdea load() {
|
||||
return projectIdeaDao.load(projectIdeaIModel.getObject().getId());
|
||||
}
|
||||
};
|
||||
add(new SupervisorAcceptDeclineForm("form", projectIdeaModel));
|
||||
}
|
||||
|
||||
private class SupervisorAcceptDeclineForm extends Form<Void> {
|
||||
private static final long serialVersionUID = -3157033328235572033L;
|
||||
private TextArea<String> reason;
|
||||
private String reasonString;
|
||||
private LoadableDetachableModel<ProjectIdea> projectIdeaModel;
|
||||
|
||||
public SupervisorAcceptDeclineForm(String id, final LoadableDetachableModel<ProjectIdea> projectIdeaModel) {
|
||||
super(id);
|
||||
this.projectIdeaModel = projectIdeaModel;
|
||||
WebMarkupContainer wmc1 = new WebMarkupContainer("wmc1");
|
||||
add(wmc1);
|
||||
wmc1.add(new AjaxLink("acceptButton") {
|
||||
|
||||
private static final long serialVersionUID = -2591216055201410154L;
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if (reason.getModelObject() != null && reason.getModelObject().length() > 4) {
|
||||
// here we should save the reason for the interest in some table
|
||||
}
|
||||
SupervisorInterest supervisorInterest = new SupervisorInterest();
|
||||
List<Employee> employeeList = new ArrayList<Employee>();
|
||||
Employee employee = employeeDao.getFrom(SciProSession.get().getUser());
|
||||
employeeList.add(employee);
|
||||
supervisorInterest.setSupervisorInterest(employeeList);
|
||||
projectIdeaModel.getObject().setSupervisorInterest(supervisorInterest);
|
||||
projectIdeaDao.save(projectIdeaModel.getObject());
|
||||
onUpdate(target);
|
||||
System.out.println("added interest from supervisor to supervise the project idea");
|
||||
}
|
||||
});
|
||||
|
||||
reason = new TextArea<String>("reason", new PropertyModel<String>(this, "reasonString"));
|
||||
reason.setRequired(true);
|
||||
reason.add(StringValidator.minimumLength(5));
|
||||
wmc1.add(reason);
|
||||
}
|
||||
}
|
||||
}
|
9
src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorInterestProjectIdeaDialogPanel.html
Normal file
9
src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorInterestProjectIdeaDialogPanel.html
Normal file
@ -0,0 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<div wicket:id="watsonPanel"></div>
|
||||
<div wicket:id="acceptDeclinePanel"></div>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
31
src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorInterestProjectIdeaDialogPanel.java
Normal file
31
src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorInterestProjectIdeaDialogPanel.java
Normal file
@ -0,0 +1,31 @@
|
||||
package se.su.dsv.scipro.supervisor.panels;
|
||||
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.MatchDao;
|
||||
import se.su.dsv.scipro.match.dataobject.ProjectIdea;
|
||||
|
||||
public abstract class SupervisorInterestProjectIdeaDialogPanel extends Panel {
|
||||
private static final long serialVersionUID = 6580700521723559167L;
|
||||
|
||||
@SpringBean
|
||||
MatchDao matchDao;
|
||||
|
||||
public abstract void onUpdateUpdate(AjaxRequestTarget target);
|
||||
|
||||
public SupervisorInterestProjectIdeaDialogPanel(String id, final IModel<ProjectIdea> projectIdea) {
|
||||
super(id);
|
||||
add(new WatsonInfoPanel("watsonPanel", projectIdea.getObject()));
|
||||
|
||||
add(new SupervisorInterestPanel("acceptDeclinePanel", projectIdea){
|
||||
private static final long serialVersionUID = 2192277777696201317L;
|
||||
|
||||
@Override
|
||||
public void onUpdate(AjaxRequestTarget target) {
|
||||
onUpdateUpdate(target);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -3,6 +3,9 @@
|
||||
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<div wicket:id="dialog">
|
||||
<div wicket:id="dialogContent"></div>
|
||||
</div>
|
||||
<div class="prepend-top"></div>
|
||||
|
||||
|
||||
@ -82,7 +85,7 @@
|
||||
<tbody>
|
||||
<tr wicket:id="allDataView">
|
||||
<td wicket:id="level"></td>
|
||||
<td wicket:id="title"></td>
|
||||
<td><a wicket:id="openLink"><span wicket:id="title"></span></a></td>
|
||||
<td wicket:id="author"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -15,11 +15,14 @@ import org.apache.wicket.markup.html.form.TextField;
|
||||
import org.apache.wicket.markup.html.list.ListItem;
|
||||
import org.apache.wicket.markup.html.list.ListView;
|
||||
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
|
||||
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.markup.repeater.Item;
|
||||
import org.apache.wicket.markup.repeater.data.DataView;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.apache.wicket.util.string.Strings;
|
||||
import org.odlabs.wiquery.ui.dialog.Dialog;
|
||||
import se.su.dsv.scipro.components.CustomDateTimeField;
|
||||
import se.su.dsv.scipro.components.ItemsPerPageChoice;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.Dao.SortableParams.Sort;
|
||||
@ -121,11 +124,29 @@ public class SupervisorUnmatchedThesisPanel extends Panel {
|
||||
allContainer.add(new PagingNavigator("nav", allDataView));
|
||||
allContainer.add(totalProjectIdeas);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private Dialog createDialog() {
|
||||
Dialog dialog = new Dialog("dialog");
|
||||
dialog.setModal(true);
|
||||
dialog.setAutoOpen(false);
|
||||
dialog.setWidth(800);
|
||||
dialog.setHeight(800);
|
||||
dialog.add(new EmptyPanel("dialogContent"));
|
||||
return dialog;
|
||||
}
|
||||
|
||||
|
||||
private void allDataViewSetup(final Label totalProjectIdeas, final WebMarkupContainer allContainer, final ProjectIdeaDataProvider allProvider,
|
||||
final Label emptyLabel) {
|
||||
|
||||
final Dialog dialog = createDialog();
|
||||
add(dialog);
|
||||
|
||||
//Add info for the user should there be no events to display.
|
||||
|
||||
allContainer.add(emptyLabel);
|
||||
emptyLabel.setOutputMarkupId(true); //Needs to be AJAX-enabled.
|
||||
|
||||
final DataView<ProjectIdea> allDataView = new DataView<ProjectIdea>("allDataView", allProvider) {
|
||||
private static final long serialVersionUID = 1533192070850862197L;
|
||||
|
||||
@ -133,7 +154,30 @@ public class SupervisorUnmatchedThesisPanel extends Panel {
|
||||
protected void populateItem(final Item<ProjectIdea> item) {
|
||||
final ProjectIdea idea = item.getModelObject();
|
||||
item.add(new Label("level", new Model<ProjectClass>(idea.getProjectClass())));
|
||||
item.add(new Label("title", new Model<String>(idea.getTitle())));
|
||||
|
||||
item.add(new AjaxLink<Void>("openLink") {
|
||||
private static final long serialVersionUID = -6853137019834200749L;
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
|
||||
dialog.replace(new SupervisorInterestProjectIdeaDialogPanel("dialogContent", new Model<ProjectIdea>(idea)) {
|
||||
private static final long serialVersionUID = 5108807012237992330L;
|
||||
|
||||
@Override
|
||||
public void onUpdateUpdate(AjaxRequestTarget target2) {
|
||||
emptyLabel.setVisible(allProvider.size() == 0);
|
||||
dialog.close(target2);
|
||||
target2.addComponent(allContainer);
|
||||
target2.addComponent(emptyLabel);
|
||||
}
|
||||
});
|
||||
|
||||
dialog.setTitle(Strings.escapeMarkup(idea.getTitle()).toString());
|
||||
dialog.open(target);
|
||||
target.addComponent(dialog);
|
||||
}
|
||||
}.add(new Label("title", new Model<String>(idea.getTitle()))));
|
||||
item.add(new Label("author", new Model<String>(createAuthorString(idea))));
|
||||
}
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user