diff --git a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorProfilePage.java b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorProfilePage.java index 6a4553170e..e48d9220bb 100644 --- a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorProfilePage.java +++ b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorProfilePage.java @@ -1,19 +1,32 @@ package se.su.dsv.scipro.supervisor.pages; import org.apache.wicket.PageParameters; +import org.apache.wicket.markup.html.panel.EmptyPanel; +import org.apache.wicket.model.Model; import org.apache.wicket.spring.injection.annot.SpringBean; +import se.su.dsv.scipro.data.dataobjects.Employee; +import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao; import se.su.dsv.scipro.security.auth.Authorization; import se.su.dsv.scipro.security.auth.roles.Roles; +import se.su.dsv.scipro.supervisor.panels.ProfilePanel; import se.su.dsv.scipro.user.panels.UserProfilePanelFactory; @Authorization(authorizedRoles={Roles.EMPLOYEE}) //@Authorization(authorizedRoles={Roles.SYSADMIN}) public class SupervisorProfilePage extends AbstractSupervisorPage { @SpringBean + SupervisorDao supervisorDao; + @SpringBean private UserProfilePanelFactory factory; public SupervisorProfilePage(final PageParameters pp){ super(pp); - add(factory.createUserProfilePanelForUser("supervisorProfile",getUser())); + //add(factory.createUserProfilePanelForUser("supervisorProfile",getUser())); + if (supervisorDao.getFrom(getUser()) == null){ + add(new EmptyPanel("supervisorProfile")); + } + else { + add(new ProfilePanel("supervisorProfile", new Model<Employee>(supervisorDao.getFrom(getUser())))); + } } } diff --git a/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.html b/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.html new file mode 100644 index 0000000000..ae28e552c4 --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.html @@ -0,0 +1,57 @@ +<!DOCTYPE html> +<html + xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"> +<body> + <wicket:panel> + <form wicket:id="form"> + <div class="append-bottom"> + <label>Unit: (imported from Daisy)</label> + <div wicket:id="unitlabel"></div> + </div> + + <div class="append-bottom"> + <label>Research areas: (imported from Daisy)</label> + <div wicket:id="emptylabel"></div> + <div wicket:id="arealistview"> + <span wicket:id="arealabel"></span> +<!-- <input type="checkbox" wicket:id="areacheckbox" /> --> + </div> + </div> + + <div class="append-bottom"> + <label>Select what languages you can supervise in: </label> + <div wicket:id="languagelistview"> + <span wicket:id="languagelabel"></span> <input type="checkbox" + wicket:id="languagecheckbox" /> + </div> + </div> + + <div><label>Select keywords: </label></div> + <div class="span-22 last" wicket:id="regularcontainer"> + <div class="span-11"> + <label>Available</label> + <div wicket:id="regularlistview"> + <span wicket:id="regularlabel"></span> <input type="checkbox" + wicket:id="regularcheckbox" /> + </div> + </div> + <div class="span-11 last"> + <label>Selected</label> + <div wicket:id="regularlistview2"> + <span wicket:id="regularlabel"></span> <input type="checkbox" + wicket:id="regularcheckbox" /> + </div> + </div> + </div> + + + + + + + + + </form> + </wicket:panel> +</body> +</html> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.java b/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.java new file mode 100644 index 0000000000..08c55fbc08 --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.java @@ -0,0 +1,210 @@ +package se.su.dsv.scipro.supervisor.panels; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox; +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.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.model.Model; +import org.apache.wicket.spring.injection.annot.SpringBean; + +import se.su.dsv.scipro.data.dao.interfaces.LanguageDao; +import se.su.dsv.scipro.data.dataobjects.Employee; +import se.su.dsv.scipro.data.dataobjects.Language; +import se.su.dsv.scipro.match.dao.interfaces.KeywordDao; +import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao; +import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao; +import se.su.dsv.scipro.match.dataobject.Keyword; +import se.su.dsv.scipro.match.dataobject.KeywordType; + +/** + * Author: fred + * Date: 2/24/12 + * Time: 3:07 PM + */ +public class ProfilePanel extends Panel { + + private static final long serialVersionUID = 1L; + private WebMarkupContainer regularContainer; + + public ProfilePanel(String id, Model<Employee> employeeModel) { + super(id); + add(new ProfileForm("form", employeeModel)); + } + + public class ProfileForm extends Form<Void> { + + private static final long serialVersionUID = 1L; + + @SpringBean + LanguageDao languageDao; + @SpringBean + SupervisorDao employeeDao; + @SpringBean + KeywordTypeDao keywordTypeDao; + @SpringBean + KeywordDao keywordDao; + + + public ProfileForm(String id, final Model<Employee> employeeModel) { + super(id); + + ListView<Language> languageListView = new ListView<Language>("languagelistview", languageDao.findAll()) { + + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem<Language> item) { + final Language l = item.getModelObject(); + item.add(new Label("languagelabel", l.getName())); + item.add(new AjaxCheckBox("languagecheckbox", new Model<Boolean>(employeeModel.getObject().getCapabilities().getLanguages().contains(l))){ + private static final long serialVersionUID = 1L; + @Override + protected void onUpdate(AjaxRequestTarget target) { + Set<Language> languages = employeeModel.getObject().getCapabilities().getLanguages(); + if (getModelObject()==true){ + languages.add(l); + System.out.println("added language " + l.getName()); + } + else { + languages.remove(l); + System.out.println("removed language " + l.getName()); + } + employeeModel.getObject().getCapabilities().setLanguages(languages); + employeeModel.setObject(employeeDao.save(employeeModel.getObject())); + } + }); + } + }; + add(languageListView); + + final KeywordType unitType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.UNIT); + if (employeeModel.getObject().getKeywords().getFiltered(unitType) == null || employeeModel.getObject().getKeywords().getFiltered(unitType).isEmpty()){ + add(new Label("unitlabel", "You are not registered under any existing/active unit in Daisy. Please make sure you are registered under an existing/active unit in Daisy ASAP.")); + } + else { + add(new Label("unitlabel", employeeModel.getObject().getKeywords().getFiltered(unitType).get(0).getKeyword())); + } + + final KeywordType areaType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.RESEARCH_AREA); + + add(new Label("emptylabel", "You do not have any active/existing research areas selected in Daisy. Please make sure that you select at least one active/existing research area in Daisy ASAP.").setVisible(employeeModel.getObject().getKeywords().getFiltered(areaType) == null || employeeModel.getObject().getKeywords().getFiltered(areaType).isEmpty())); + + ListView<Keyword> areaListView = new ListView<Keyword>("arealistview", new ArrayList<Keyword>(keywordDao.getKeywords(areaType, false))){ + private static final long serialVersionUID = 1L; + @Override + protected void populateItem(ListItem<Keyword> item) { + final Keyword kw = item.getModelObject(); + item.add(new Label("arealabel", kw.getKeyword())); + if (!employeeModel.getObject().getKeywords().getFiltered(areaType).contains(kw)){ + item.setVisible(false); + } + item.add(new AjaxCheckBox("areacheckbox", new Model<Boolean>(employeeModel.getObject().getKeywords().getFiltered(areaType).contains(kw))){ + private static final long serialVersionUID = 1L; + @Override + protected void onUpdate(AjaxRequestTarget target) { + Set<Keyword> oldKeywords = new HashSet<Keyword>(employeeModel.getObject().getKeywords().getAll()); + + if (getModelObject()==true){ + oldKeywords.add(kw); + System.out.println("added regular " + kw.getKeyword()); + } + else { + oldKeywords.remove(kw); + System.out.println("removed regular " + kw.getKeyword()); + } + + employeeModel.getObject().getKeywords().setKeywords(oldKeywords); + employeeModel.setObject(employeeDao.save(employeeModel.getObject())); + + target.addComponent(regularContainer); + } + }); + } + }; + add(areaListView); + + regularContainer = new WebMarkupContainer("regularcontainer"); + regularContainer.setOutputMarkupId(true); + add(regularContainer); + + final KeywordType regularType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.REGULAR); + + ListView<Keyword> regularListView = new ListView<Keyword>("regularlistview", new ArrayList<Keyword>(keywordDao.getKeywords(regularType, false))){ + private static final long serialVersionUID = 1L; + @Override + protected void populateItem(ListItem<Keyword> item) { + final Keyword kw = item.getModelObject(); + if(employeeModel.getObject().getKeywords().getFiltered(regularType).contains(kw)){ + item.setVisible(false); + } + item.add(new Label("regularlabel", kw.getKeyword())); + item.add(new AjaxCheckBox("regularcheckbox", new Model<Boolean>(employeeModel.getObject().getKeywords().getFiltered(regularType).contains(kw))){ + private static final long serialVersionUID = 1L; + @Override + protected void onUpdate(AjaxRequestTarget target) { + Set<Keyword> oldKeywords = new HashSet<Keyword>(employeeModel.getObject().getKeywords().getAll()); + + if (getModelObject()==true){ + oldKeywords.add(kw); + System.out.println("added regular " + kw.getKeyword()); + } + else { + oldKeywords.remove(kw); + System.out.println("removed regular " + kw.getKeyword()); + } + + employeeModel.getObject().getKeywords().setKeywords(oldKeywords); + employeeModel.setObject(employeeDao.save(employeeModel.getObject())); + + target.addComponent(regularContainer); + } + }); + } + }; + regularContainer.add(regularListView); + + ListView<Keyword> regularListView2 = new ListView<Keyword>("regularlistview2", new ArrayList<Keyword>(keywordDao.getKeywords(regularType, false))){ + private static final long serialVersionUID = 1L; + @Override + protected void populateItem(ListItem<Keyword> item) { + final Keyword kw = item.getModelObject(); + if(!employeeModel.getObject().getKeywords().getFiltered(regularType).contains(kw)){ + item.setVisible(false); + } + item.add(new Label("regularlabel", kw.getKeyword())); + item.add(new AjaxCheckBox("regularcheckbox", new Model<Boolean>(employeeModel.getObject().getKeywords().getFiltered(regularType).contains(kw))){ + private static final long serialVersionUID = 1L; + @Override + protected void onUpdate(AjaxRequestTarget target) { + Set<Keyword> oldKeywords = new HashSet<Keyword>(employeeModel.getObject().getKeywords().getAll()); + + if (getModelObject()==true){ + oldKeywords.add(kw); + System.out.println("added regular " + kw.getKeyword()); + } + else { + oldKeywords.remove(kw); + System.out.println("removed regular " + kw.getKeyword()); + } + + employeeModel.getObject().getKeywords().setKeywords(oldKeywords); + employeeModel.setObject(employeeDao.save(employeeModel.getObject())); + + target.addComponent(regularContainer); + } + }); + } + }; + regularContainer.add(regularListView2); + + } + } +}