Created a panel for manually suggesting a reviewer for a project idea.
This commit is contained in:
parent
e1b136ea42
commit
1e9efa0359
src/main/java/se/su/dsv/scipro/admin/panels
@ -0,0 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html
|
||||
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<div wicket:id="main"></div>
|
||||
<wicket:fragment wicket:id="buttonFragment">
|
||||
<button wicket:id="manualMatchButton">Match manually</button>
|
||||
</wicket:fragment>
|
||||
<wicket:fragment wicket:id="matchFragment">
|
||||
<form wicket:id="matchForm">
|
||||
Supervisor: <div wicket:id="supervisorTextField"></div>
|
||||
<button type="submit" style="float: right;">Save</button>
|
||||
<button wicket:id="cancelButton" style="float: right;">Cancel</button>
|
||||
</form>
|
||||
</wicket:fragment>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,185 @@
|
||||
package se.su.dsv.scipro.admin.panels;
|
||||
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
|
||||
import org.apache.wicket.markup.html.form.ChoiceRenderer;
|
||||
import org.apache.wicket.markup.html.form.Form;
|
||||
import org.apache.wicket.markup.html.panel.Fragment;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.LoadableDetachableModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.apache.wicket.util.string.Strings;
|
||||
import org.odlabs.wiquery.ui.autocomplete.AutocompleteComponent;
|
||||
import se.su.dsv.scipro.data.dataobjects.Employee;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
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 java.util.List;
|
||||
|
||||
public class ManualSetReviewerPanel extends Panel {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
// @SpringBean
|
||||
// private MatchDao matchDao;
|
||||
|
||||
@SpringBean
|
||||
private ProjectIdeaDao projectIdeaDao;
|
||||
|
||||
@SpringBean
|
||||
SupervisorDao supervisorDao;
|
||||
|
||||
// @SpringBean
|
||||
// UserDao userDao;
|
||||
|
||||
private Fragment currentFragment;
|
||||
private Fragment alternateFragment;
|
||||
private Form<Employee> reviewerForm;
|
||||
private AutocompleteComponent<Employee> autocompleteReviewerField;
|
||||
private Long reviewerId;
|
||||
public ManualSetReviewerPanel(String id, IModel<ProjectIdea> projectIdeaModel) {
|
||||
super(id);
|
||||
reviewerId = projectIdeaModel.getObject().getSuggestedReviewer() != null ? projectIdeaModel.getObject().getSuggestedReviewer().getId() : 0L;
|
||||
setOutputMarkupPlaceholderTag(true);
|
||||
currentFragment = createButtonFragment();
|
||||
alternateFragment = createReviewerFragment(projectIdeaModel);
|
||||
add(currentFragment);
|
||||
}
|
||||
|
||||
private Fragment createButtonFragment() {
|
||||
Fragment buttonFragment = new Fragment("main", "buttonFragment", this) {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onBeforeRender() {
|
||||
reviewerForm.setEnabled(false);
|
||||
super.onBeforeRender();
|
||||
}
|
||||
};
|
||||
buttonFragment.add(new AjaxFallbackLink<Object>("manualSetReviewerButton") {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
swapFragment();
|
||||
if (target != null) {
|
||||
target.addComponent(currentFragment);
|
||||
}
|
||||
}
|
||||
});
|
||||
buttonFragment.setOutputMarkupPlaceholderTag(true);
|
||||
return buttonFragment;
|
||||
}
|
||||
|
||||
private Fragment createReviewerFragment(final IModel<ProjectIdea> projectIdeaModel) {
|
||||
Fragment reviewerFragment = new Fragment("main", "reviewerFragment", this) {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onBeforeRender() {
|
||||
reviewerForm.setEnabled(true);
|
||||
super.onBeforeRender();
|
||||
}
|
||||
};
|
||||
autocompleteReviewerField = createAutocompleteComponent();
|
||||
autocompleteReviewerField.setModelObject(null);
|
||||
reviewerForm = new Form<Employee>("reviewerForm") {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void onSubmit() {
|
||||
ProjectIdea projectIdea = projectIdeaModel.getObject();
|
||||
projectIdea.setSuggestedReviewer(autocompleteReviewerField.getModelObject());
|
||||
projectIdeaDao.save(projectIdea);
|
||||
}
|
||||
};
|
||||
|
||||
reviewerForm.add(autocompleteReviewerField);
|
||||
reviewerForm.add(new AjaxFallbackLink<Object>("cancelButton") {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
swapFragment();
|
||||
if (target != null) {
|
||||
target.addComponent(currentFragment);
|
||||
}
|
||||
}
|
||||
});
|
||||
reviewerFragment.add(reviewerForm);
|
||||
reviewerFragment.setOutputMarkupPlaceholderTag(true);
|
||||
return reviewerFragment;
|
||||
}
|
||||
|
||||
private AutocompleteComponent<Employee> createAutocompleteComponent() {
|
||||
LoadableDetachableModel<List<Employee>> reviewerListModel = new LoadableDetachableModel<List<Employee>>() {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected List<Employee> load() {
|
||||
return supervisorDao.findAll();
|
||||
}
|
||||
};
|
||||
|
||||
LoadableDetachableModel<Employee> reviewerModel = new LoadableDetachableModel<Employee>() {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected Employee load() {
|
||||
if(reviewerId != 0L)
|
||||
return supervisorDao.load(reviewerId);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
ChoiceRenderer<Employee> choiceRenderer = new ChoiceRenderer<Employee>() {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public String getDisplayValue(Employee reviewer) {
|
||||
return reviewer.getUser().getFullName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIdValue(Employee reviewer, int index) {
|
||||
return reviewer.getId().toString();
|
||||
}
|
||||
};
|
||||
|
||||
return new AutocompleteComponent<Employee>("reviewerTextField",
|
||||
reviewerModel, reviewerListModel, choiceRenderer) {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public Employee getValueOnSearchFail(String input) {
|
||||
if (Strings.isEmpty(input)) {
|
||||
return null;
|
||||
} else {
|
||||
User tempUser = new User();
|
||||
tempUser.setFirstName(input);
|
||||
Employee reviewer = new Employee();
|
||||
reviewer.setUser(tempUser);
|
||||
return reviewer;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private void swapFragment() {
|
||||
Fragment tempFragment = currentFragment;
|
||||
currentFragment.replaceWith(alternateFragment);
|
||||
currentFragment = alternateFragment;
|
||||
alternateFragment = tempFragment;
|
||||
}
|
||||
}
|
@ -9,6 +9,9 @@
|
||||
<div class="prepend-top">If you want to match and suggest this
|
||||
idea to a supervisor or reviewer manually, you can do so.</div>
|
||||
<div wicket:id="manualMatchPanel"></div>
|
||||
<div class="prepend-top">If you want to manually suggest a
|
||||
reviewer for this idea, you may do so as well.</div>
|
||||
<div wicket:id="manualSetReviewerPanel"></div>
|
||||
<div class="prepend-top">If this project idea is poorly
|
||||
written, it should be refused, which means it will be sent back to the
|
||||
authors for rewriting.</div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user