Commit 36975b7b by Tuukka Kivilahti

sorting for lectures, and also added reports for lectures

1 parent 0bbb999c
...@@ -297,7 +297,9 @@ public class MenuBean implements MenuBeanLocal { ...@@ -297,7 +297,9 @@ public class MenuBean implements MenuBeanLocal {
MenuNavigation adminlectures = adminmenu.addPage(null, null); MenuNavigation adminlectures = adminmenu.addPage(null, null);
adminlectures.setKey("topnavi.adminlectures"); adminlectures.setKey("topnavi.adminlectures");
adminlectures.addPage(menuitemfacade.findOrCreate("/lectureadmin/manageLectureGroups"), LecturePermission.MANAGE); adminlectures.addPage(menuitemfacade.findOrCreate("/lectureadmin/manageLectureGroups"), LecturePermission.MANAGE);
adminlectures.addPage(menuitemfacade.findOrCreate("/lectureadmin/manageLectures"), LecturePermission.MANAGE).setVisible(false);; adminlectures.addPage(menuitemfacade.findOrCreate("/lectureadmin/lectureParticipants"), LecturePermission.MANAGE);
adminlectures.addPage(menuitemfacade.findOrCreate("/lectureadmin/manageLectures"), LecturePermission.MANAGE).setVisible(false);
......
...@@ -195,9 +195,9 @@ public class Lecture extends GenericEntity { ...@@ -195,9 +195,9 @@ public class Lecture extends GenericEntity {
} }
@Transient @Transient
public boolean isFull() { public boolean isFull() {
if (getMaxParticipantsCount() <= 0) { if (getMaxParticipantsCount() == null || getMaxParticipantsCount() <= 0) {
return false; return false;
} }
......
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:products="http://java.sun.com/jsf/composite/cditools/products" xmlns:users="http://java.sun.com/jsf/composite/cditools/user" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui">
<h:body>
<ui:composition template="#{sessionHandler.template}">
<f:metadata>
<f:viewParam name="lecturegroupid" value="#{lectureView.lectureGroupId}" />
<f:event type="preRenderView" listener="#{lectureReportsView.initView()}" />
</f:metadata>
<ui:define rendered="#{lectureReportsView.lectureGroupsVisible}" name="title">
<h1>#{i18n['viewlectures.title']}</h1>
</ui:define>
<ui:define name="content">
<h:form id="viewlecturesform">
<p:fieldset rendered="#{lectureReportsView.lectureGroupsVisible}" id="lectureGroups" legend="#{i18n['lecture.selectgroup']}">
<p:dataTable value="#{lectureReportsView.lectureGroups}" var="lectureGroup">
<p:column headerText="#{i18n['lectureGroup.name']}">
<h:outputText value="#{lectureGroup.name}" />
</p:column>
<p:column headerText="#{i18n['lectureGroup.description']}">
<h:outputText value="#{lectureGroup.description}" />
</p:column>
<p:column headerText="#{i18n['lectureGroup.selectCountUserInfo']}">
<h:outputText value="#{lectureGroup.selectCount}" />
</p:column>
<p:column>
<p:commandButton value="#{i18n['lectureGroup.view']}" actionListener="#{lectureReportsView.selectCurrentLectureGroup}" update=":viewlecturesform:participatedLectures :viewlecturesform:availableLectures :viewlecturesform:title" onerror="location.reload(true)" />
</p:column>
</p:dataTable>
</p:fieldset>
<h1>
<h:outputText id="title" value="#{lectureReportsView.currentLectureGroup.name}" />
</h1>
<p:fieldset id="availableLectures" legend="#{i18n['lecture.availableLectures']}">
<p:commandButton value="#{i18n['refresh']}" actionListener="#{lectureReportsView.refresh}" />
<p:dataTable value="#{lectureReportsView.lectures}" var="lecture">
<p:column style="width:16px">
<p:rowToggler />
</p:column>
<p:column headerText="#{i18n['lecture.name']}" sortBy="#{lecture.name}">
<h:outputText value="#{lecture.name}" />
</p:column>
<p:column headerText="#{i18n['lecture.description']}" sortBy="#{lecture.description}">
<h:outputText value="#{lecture.description}" />
</p:column>
<p:column headerText="#{i18n['lecture.hours']}" sortBy="#{lecture.hours}">
<h:outputText value="#{lecture.hours}" />
</p:column>
<p:column headerText="#{i18n['lecture.startTime']}" sortBy="#{lecture.startTime}">
<h:outputText value="#{lecture.startTime}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText>
</p:column>
<p:column headerText="#{i18n['lecture.participants']}" sortBy="#{lecture.participantsCount}">
<h:outputText value="#{lecture.participantsCount}" /> / <h:outputText value="#{lecture.maxParticipantsCount}" />
</p:column>
<p:column>
<h:outputText value="#{i18n['lecture.full']}" rendered="#{lecture.full}" />
</p:column>
<p:rowExpansion>
<p:dataTable value="#{lecture.participants}" var="user">
<p:column headerText="#{i18n['user.nick']}" sortBy="#{user.user.nick}">
<h:outputText value="#{user.user.nick}" />
</p:column>
<p:column headerText="#{i18n['user.lastName']}" sortBy="#{user.user.lastname}">
<h:outputText value="#{user.user.lastname}" />
</p:column>
<p:column headerText="#{i18n['user.firstNames']}" sortBy="#{user.user.firstnames}">
<h:outputText value="#{user.user.firstnames}" />
</p:column>
</p:dataTable>
</p:rowExpansion>
</p:dataTable>
<p:commandButton value="#{i18n['refresh']}" actionListener="#{lectureReportsView.refresh}" />
</p:fieldset>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
...@@ -62,23 +62,23 @@ ...@@ -62,23 +62,23 @@
</p:dataTable> </p:dataTable>
</p:fieldset> </p:fieldset>
<br /><br /> <br /><br />
<p:fieldset id="availableLectures" legend="#{i18n['lecture.availableLectures']}"> <p:fieldset id="availableLectures" legend="#{i18n['lecture.availableLectures']}" >
<p:dataTable value="#{lectureUserView.lectures}" var="lecture"> <p:dataTable value="#{lectureUserView.lectures}" var="lecture">
<p:column headerText="#{i18n['lecture.name']}"> <p:column headerText="#{i18n['lecture.name']}" sortBy="#{lecture.name}">
<h:outputText value="#{lecture.name}" /> <h:outputText value="#{lecture.name}" />
</p:column> </p:column>
<p:column headerText="#{i18n['lecture.description']}"> <p:column headerText="#{i18n['lecture.description']}" sortBy="#{lecture.description}">
<h:outputText value="#{lecture.description}" /> <h:outputText value="#{lecture.description}" />
</p:column> </p:column>
<p:column headerText="#{i18n['lecture.hours']}"> <p:column headerText="#{i18n['lecture.hours']}" sortBy="#{lecture.hours}">
<h:outputText value="#{lecture.hours}" /> <h:outputText value="#{lecture.hours}" />
</p:column> </p:column>
<p:column headerText="#{i18n['lecture.startTime']}"> <p:column headerText="#{i18n['lecture.startTime']}" sortBy="#{lecture.startTime}">
<h:outputText value="#{lecture.startTime}"> <h:outputText value="#{lecture.startTime}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" /> <f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText> </h:outputText>
</p:column> </p:column>
<p:column headerText="#{i18n['lecture.participants']}"> <p:column headerText="#{i18n['lecture.participants']}" sortBy="#{lecture.participantsCount}">
<h:outputText value="#{lecture.participantsCount}" /> / <h:outputText value="#{lecture.maxParticipantsCount}" /> <h:outputText value="#{lecture.participantsCount}" /> / <h:outputText value="#{lecture.maxParticipantsCount}" />
</p:column> </p:column>
<p:column> <p:column>
......
...@@ -290,6 +290,8 @@ productshop.plusTen = +10 ...@@ -290,6 +290,8 @@ productshop.plusTen = +10
reader.autopoll = Jatkuva lukijan seuraaminen reader.autopoll = Jatkuva lukijan seuraaminen
refresh = P\u00E4ivit\u00E4
registerleaflet.title = Rekisteriseloste registerleaflet.title = Rekisteriseloste
resetMail.header = Reset lost password resetMail.header = Reset lost password
...@@ -314,6 +316,7 @@ submenu.frontpage = Frontpage ...@@ -314,6 +316,7 @@ submenu.frontpage = Frontpage
submenu.info.incoming = Sis\u00E4\u00E4ntulo submenu.info.incoming = Sis\u00E4\u00E4ntulo
submenu.info.index = Infon\u00E4kym\u00E4 submenu.info.index = Infon\u00E4kym\u00E4
submenu.info.shop = Kauppa submenu.info.shop = Kauppa
submenu.lectureadmin.lectureParticipants = Tarkastele osallistujia
submenu.lectureadmin.manageLectureGroups = Hallinnoi submenu.lectureadmin.manageLectureGroups = Hallinnoi
submenu.lectures.viewLectures = Ilmoittaudu submenu.lectures.viewLectures = Ilmoittaudu
......
...@@ -938,6 +938,8 @@ readerevent.tagname = Tag ...@@ -938,6 +938,8 @@ readerevent.tagname = Tag
readerview.cards = Card ( printcount ) readerview.cards = Card ( printcount )
refresh = Refresh
registerleaflet.title = Register leaflet registerleaflet.title = Register leaflet
rejectcard.body = Body rejectcard.body = Body
...@@ -1095,6 +1097,7 @@ submenu.index = Frontpage ...@@ -1095,6 +1097,7 @@ submenu.index = Frontpage
submenu.info.incoming = Incomingview submenu.info.incoming = Incomingview
submenu.info.index = Infoview submenu.info.index = Infoview
submenu.info.shop = Shop submenu.info.shop = Shop
submenu.lectureadmin.lectureParticipants = Lecture participants
submenu.lectureadmin.manageLectureGroups = Management submenu.lectureadmin.manageLectureGroups = Management
submenu.lectures.viewLectures = Participate submenu.lectures.viewLectures = Participate
submenu.license.manageCodes = Manage codes submenu.license.manageCodes = Manage codes
......
...@@ -923,6 +923,8 @@ readerevent.tagname = Tagi ...@@ -923,6 +923,8 @@ readerevent.tagname = Tagi
readerview.cards = Kortit ( tulostuslkm ) readerview.cards = Kortit ( tulostuslkm )
refresh = P\u00E4ivit\u00E4
registerleaflet.title = Rekisteriseloste registerleaflet.title = Rekisteriseloste
rejectcard.body = Viestin sis\u00E4lt\u00F6 rejectcard.body = Viestin sis\u00E4lt\u00F6
...@@ -1075,6 +1077,7 @@ submenu.index = Etusivu ...@@ -1075,6 +1077,7 @@ submenu.index = Etusivu
submenu.info.incoming = Sis\u00E4\u00E4ntulo submenu.info.incoming = Sis\u00E4\u00E4ntulo
submenu.info.index = Infon\u00E4kym\u00E4 submenu.info.index = Infon\u00E4kym\u00E4
submenu.info.shop = Kauppa submenu.info.shop = Kauppa
submenu.lectureadmin.lectureParticipants = Kurssiosallistujat
submenu.lectureadmin.manageLectureGroups = Hallinnoi submenu.lectureadmin.manageLectureGroups = Hallinnoi
submenu.lectures.viewLectures = Ilmoittaudu submenu.lectures.viewLectures = Ilmoittaudu
submenu.license.manageCodes = Hallinnoi lisenssej\u00E4 submenu.license.manageCodes = Hallinnoi lisenssej\u00E4
......
package fi.codecrew.moya.web.lecture;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.faces.model.ListDataModel;
import javax.inject.Inject;
import javax.inject.Named;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.LectureBeanLocal;
import fi.codecrew.moya.enums.apps.LecturePermission;
import fi.codecrew.moya.model.Lecture;
import fi.codecrew.moya.model.LectureGroup;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.user.UserView;
@Named
@ConversationScoped
public class LectureReportsView extends GenericCDIView {
private static final long serialVersionUID = 1L;
@Inject
UserView userView;
@EJB
LectureBeanLocal lectureBean;
@EJB
EventBeanLocal eventBean;
ListDataModel<LectureGroup> lectureGroups = null;
ListDataModel<Lecture> lectures = null;
ListDataModel<Lecture> participatedLectures = null;
LectureGroup currentLectureGroup;
public void initView() {
if (super.requirePermissions(LecturePermission.MANAGE)) {
super.beginConversation();
}
}
public void refresh() {
this.lectures = null;
}
public boolean isLectureGroupsVisible() {
if(lectureBean.getLectureGroups().size() <= 1)
return false;
return true;
}
public ListDataModel<LectureGroup> getLectureGroups() {
lectureGroups = new ListDataModel<LectureGroup>(lectureBean.getLectureGroups());
return lectureGroups;
}
public void selectCurrentLectureGroup() {
if (lectureGroups != null && lectureGroups.isRowAvailable()) {
currentLectureGroup = lectureGroups.getRowData();
lectures = null;
}
}
public LectureGroup getCurrentLectureGroup() {
List<LectureGroup> groups = lectureBean.getLectureGroups();
if (currentLectureGroup == null && groups.size() > 0) {
currentLectureGroup = groups.get(0);
}
return currentLectureGroup;
}
public ListDataModel<Lecture> getLectures() {
if (currentLectureGroup == null)
return new ListDataModel<Lecture>();
if(lectures == null)
lectures = new ListDataModel<Lecture>(lectureBean.getLecturesByLectureGroup(getCurrentLectureGroup()));
return lectures;
}
public int getCurrentGroupParticipateCount() {
return lectureBean.userLectureSelects(getCurrentLectureGroup(), userView.getCurrentUser());
}
}
...@@ -78,7 +78,8 @@ public class LectureUserView extends GenericCDIView { ...@@ -78,7 +78,8 @@ public class LectureUserView extends GenericCDIView {
if (currentLectureGroup == null) if (currentLectureGroup == null)
return new ListDataModel<Lecture>(); return new ListDataModel<Lecture>();
lectures = new ListDataModel<Lecture>(lectureBean.findAvailableLectures(getCurrentLectureGroup(), userView.getCurrentUser())); if(lectures == null)
lectures = new ListDataModel<Lecture>(lectureBean.findAvailableLectures(getCurrentLectureGroup(), userView.getCurrentUser()));
return lectures; return lectures;
} }
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!