From 03f7dc1fa7be561f1fcad3300e1109cc79be9610 Mon Sep 17 00:00:00 2001 From: Emil Siverhall <emil-siv@dsv.su.se> Date: Fri, 3 Aug 2012 14:10:39 +0200 Subject: [PATCH] added new datatable with the authors confirmed supervisor provided ideas under My project idea history --- .../project/pages/MyProjectIdeasPage.html | 3 + .../project/pages/MyProjectIdeasPage.java | 29 +++++++- .../project/panels/MyProjectIdeasPanel.html | 3 +- .../project/panels/MyProjectIdeasPanel.java | 1 - .../panels/MySupervisorIdeasPanel.html | 11 +++ .../panels/MySupervisorIdeasPanel.java | 73 +++++++++++++++++++ 6 files changed, 115 insertions(+), 5 deletions(-) create mode 100644 src/main/java/se/su/dsv/scipro/project/panels/MySupervisorIdeasPanel.html create mode 100644 src/main/java/se/su/dsv/scipro/project/panels/MySupervisorIdeasPanel.java diff --git a/src/main/java/se/su/dsv/scipro/project/pages/MyProjectIdeasPage.html b/src/main/java/se/su/dsv/scipro/project/pages/MyProjectIdeasPage.html index a3d7fbfaa8..0a67e1d713 100644 --- a/src/main/java/se/su/dsv/scipro/project/pages/MyProjectIdeasPage.html +++ b/src/main/java/se/su/dsv/scipro/project/pages/MyProjectIdeasPage.html @@ -4,7 +4,10 @@ <wicket:extend> <div class="prepend-top span-24 last"> <div class="span-24" wicket:id="feedback"></div> + <div class="span-14" wicket:id="periodPanel"></div> <div class="span-16" wicket:id="myIdeasPanel"></div> + <div class="span-16 prepend-top" wicket:id="mySupervisorIdeasPanel"></div> + <div class="span-20" wicket:id="noIdeas">No project ideas to show</div> </div> </wicket:extend> </body> diff --git a/src/main/java/se/su/dsv/scipro/project/pages/MyProjectIdeasPage.java b/src/main/java/se/su/dsv/scipro/project/pages/MyProjectIdeasPage.java index fea614ee2a..0c4179db49 100644 --- a/src/main/java/se/su/dsv/scipro/project/pages/MyProjectIdeasPage.java +++ b/src/main/java/se/su/dsv/scipro/project/pages/MyProjectIdeasPage.java @@ -1,21 +1,46 @@ package se.su.dsv.scipro.project.pages; import org.apache.wicket.PageParameters; +import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.panel.FeedbackPanel; +import org.apache.wicket.spring.injection.annot.SpringBean; import se.su.dsv.scipro.components.menuhighlighting.MenuHighlightProjectIdeas; +import se.su.dsv.scipro.data.dataobjects.Student; +import se.su.dsv.scipro.match.dao.interfaces.ProjectIdeaDao; import se.su.dsv.scipro.project.panels.MyProjectIdeasPanel; +import se.su.dsv.scipro.project.panels.MySupervisorIdeasPanel; +import se.su.dsv.scipro.project.panels.ProjectIdeaPeriodPanel; import se.su.dsv.scipro.security.auth.Authorization; import se.su.dsv.scipro.security.auth.roles.Roles; +import se.su.dsv.scipro.springdata.services.StudentService; +import se.su.dsv.scipro.springdata.services.SupervisorIdeaService; @Authorization(authorizedRoles={Roles.STUDENT}) public class MyProjectIdeasPage extends AbstractProjectIdeaPage implements MenuHighlightProjectIdeas{ + @SpringBean + private SupervisorIdeaService ideaService; + @SpringBean + private StudentService studentService; + @SpringBean + private ProjectIdeaDao projectIdeaDao; + public MyProjectIdeasPage(PageParameters pp) { super(pp); add(new FeedbackPanel("feedback")); - add(new MyProjectIdeasPanel("myIdeasPanel", getUser())); - + Student author = studentService.findByUser(getUser()); + add(new ProjectIdeaPeriodPanel("periodPanel")); + add(new MyProjectIdeasPanel("myIdeasPanel", getUser()).setVisible(showIdeas(author))); + add(new MySupervisorIdeasPanel("mySupervisorIdeasPanel", author).setVisible(ideaService.hasTakenIdeas(getUser(), true))); + add(new WebMarkupContainer("noIdeas").setVisible(!showIdeas(author)&&!ideaService.hasTakenIdeas(getUser(), true))); + } + + private boolean showIdeas(Student author) { + ProjectIdeaDao.Params params = new ProjectIdeaDao.Params(); + params.setAuthor(author); + long ideaNumber = projectIdeaDao.countProjectIdeas(params); + return ideaNumber!=0; } } diff --git a/src/main/java/se/su/dsv/scipro/project/panels/MyProjectIdeasPanel.html b/src/main/java/se/su/dsv/scipro/project/panels/MyProjectIdeasPanel.html index 0dfaf57337..f57020aa8c 100644 --- a/src/main/java/se/su/dsv/scipro/project/panels/MyProjectIdeasPanel.html +++ b/src/main/java/se/su/dsv/scipro/project/panels/MyProjectIdeasPanel.html @@ -10,8 +10,7 @@ <button class="right" wicket:id="closeButton">Close</button> </div> <div class="span-24 last" wicket:id="container"> - <div class="span-14" wicket:id="periodPanel"></div> - + <div class="span-20 append-bottom"><b>My submitted ideas</b></div> <table class="rounded-corner" > <thead> <tr> diff --git a/src/main/java/se/su/dsv/scipro/project/panels/MyProjectIdeasPanel.java b/src/main/java/se/su/dsv/scipro/project/panels/MyProjectIdeasPanel.java index 463ef0e7b9..f9095867ab 100644 --- a/src/main/java/se/su/dsv/scipro/project/panels/MyProjectIdeasPanel.java +++ b/src/main/java/se/su/dsv/scipro/project/panels/MyProjectIdeasPanel.java @@ -42,7 +42,6 @@ public class MyProjectIdeasPanel extends Panel { super(id); container = new WebMarkupContainer("container"); - container.add(new ProjectIdeaPeriodPanel("periodPanel")); setUpDialog(); setUpDataView(user); add(container); diff --git a/src/main/java/se/su/dsv/scipro/project/panels/MySupervisorIdeasPanel.html b/src/main/java/se/su/dsv/scipro/project/panels/MySupervisorIdeasPanel.html new file mode 100644 index 0000000000..47aa98531e --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/project/panels/MySupervisorIdeasPanel.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"> +<body> +<wicket:panel> +<div wicket:id="container"> + <div class="span-20"><b>My confirmed supervisor provided ideas</b></div> + <div class="span-24" wicket:id="dataTable"></div> + </div> +</wicket:panel> +</body> +</html> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/project/panels/MySupervisorIdeasPanel.java b/src/main/java/se/su/dsv/scipro/project/panels/MySupervisorIdeasPanel.java new file mode 100644 index 0000000000..d0e6e5becf --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/project/panels/MySupervisorIdeasPanel.java @@ -0,0 +1,73 @@ +package se.su.dsv.scipro.project.panels; + +import java.util.Iterator; + +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.markup.html.WebMarkupContainer; +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.dataobjects.Student; +import se.su.dsv.scipro.datatables.DateColumn; +import se.su.dsv.scipro.datatables.GenericDataPanel; +import se.su.dsv.scipro.match.dataobject.Idea.IdeaStatus; +import se.su.dsv.scipro.match.dataobject.SupervisorIdea; +import se.su.dsv.scipro.springdata.services.GenericService; +import se.su.dsv.scipro.springdata.services.StudentService; +import se.su.dsv.scipro.springdata.services.SupervisorIdeaService; + +public class MySupervisorIdeasPanel extends Panel { + + private static final long serialVersionUID = 1L; + + @SpringBean + private SupervisorIdeaService ideaService; + @SpringBean + private StudentService studentService; + + public MySupervisorIdeasPanel(String id, Student author) { + super(id); + WebMarkupContainer container = new WebMarkupContainer("container"); + addDataTable(container, author); + add(container); + + } + + private void addDataTable(WebMarkupContainer container, final Student author) { + container.add(new GenericDataPanel<SupervisorIdea>("dataTable") { + + private static final long serialVersionUID = 7719436073391722494L; + + @Override + public GenericService<SupervisorIdea, Long> getService() { + return ideaService; + } + + @Override + public String getSortString() { + return "dateCreated"; + } + + @Override + public Iterator<SupervisorIdea> getIterator() { + return ideaService.findIdeas(IdeaStatus.TAKEN, author, true).iterator(); + } + + @Override + public IColumn[] getColumns() { + IColumn[] columns = new IColumn[4]; + columns[0] = new PropertyColumn<SupervisorIdea>(Model.of("Project level"), "projectClass", "projectClass"); + columns[1] = new PropertyColumn<SupervisorIdea>(Model.of("Title"), "title", "title"); + columns[2] = new PropertyColumn<SupervisorIdea>(Model.of("Author(s)"), "ideaParticipations"); + columns[3] = new DateColumn<SupervisorIdea>(Model.of("Start date"), "applicationPeriod.courseStartDate"); + return columns; + } + }); + } + + + + +}