Commit 3bd71466 by Antti Tonkyra

UI stuffation

1 parent eab9a69d
......@@ -98,8 +98,14 @@ public class TournamentBean implements TournamentBeanLocal {
@Override
@RolesAllowed(TournamentPermission.S_VIEW)
public List<Tournament> getTournamentsInStatus(TournamentStatus status, boolean useTimeConstraints) {
return tournamentFacade.getTournamentsInStatusWithParticipationTimeIn(status, eventBean.getCurrentEvent());
public List<Tournament> getTournamentsInStatus(TournamentStatus status, boolean useTimeConstraints, boolean invertMatch) {
if(useTimeConstraints)
if(!invertMatch)
return tournamentFacade.getTournamentsInStatusWithParticipationTimeIn(status, eventBean.getCurrentEvent());
else
return tournamentFacade.getTournamentsInStatusWithParticipationTimeNotIn(status, eventBean.getCurrentEvent());
else
return tournamentFacade.getTournamentsInStatus(status, eventBean.getCurrentEvent());
}
@Override
......
......@@ -68,6 +68,23 @@ public class TournamentFacade extends IntegerPkGenericFacade<Tournament> {
return getEm().createQuery(cq).getResultList();
}
public List<Tournament> getTournamentsInStatusWithParticipationTimeNotIn(TournamentStatus status, LanEvent event) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Tournament> cq = cb.createQuery(Tournament.class);
Root<Tournament> root = cq.from(Tournament.class);
cq.where(
cb.and(
cb.equal(root.get(Tournament_.tournamentStatus), status),
cb.equal(root.get(Tournament_.lanEvent), event),
cb.not(
cb.between(cb.currentDate(), root.get(Tournament_.registrationOpensAt), root.get(Tournament_.registrationClosesAt))
)
)
);
return getEm().createQuery(cq).getResultList();
}
}
......@@ -28,6 +28,7 @@ public interface TournamentBeanLocal {
void createParticipation(TournamentParticipant tournamentParticipant) throws Exception;
boolean hasParticipations(EventUser currentUser, Tournament tournament);
EventUser findAvailablePlayerForTournamentByLogin(Tournament t, String login) throws Exception;
List<Tournament> getTournamentsInStatus(TournamentStatus status, boolean useTimeConstraints);
List<Tournament> getTournamentsInStatus(TournamentStatus status,
boolean useTimeConstraints, boolean invertMatch);
}
......@@ -24,6 +24,12 @@
</f:facet>
<h:outputText value="#{tournamentParticipantsView.eventUserGameID[participant.participator.id]}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.participant_email']}" />
</f:facet>
<h:outputText value="#{participant.participator.email}" />
</p:column>
</p:dataTable>
</h:form>
......
......@@ -35,8 +35,15 @@
<ul>
<ui:repeat var="member" value="#{participant.teamMembers}">
<li>
<h:outputText value="#{member.eventUser.nick}" />
(<h:outputText value="#{tournamentParticipantsView.eventUserGameID[member.eventUser.id]}" />)
<h:outputText value="#{member.eventUser.nick}" />
<ul>
<li>
<h:outputText value="#{tournamentParticipantsView.eventUserGameID[member.eventUser.id]}" />
</li>
<li>
<h:outputText value="#{member.eventUser.email}" />
</li>
</ul>
</li>
</ui:repeat>
</ul>
......
......@@ -94,6 +94,213 @@
</h:panelGrid>
</p:rowExpansion>
</p:dataTable>
<h2>#{i18n['tournaments.setup_closed_tournaments']}</h2>
<p:dataTable value="#{tournamentListView.setupClosedPhaseTournaments}" var="tournament">
<p:column style="width:2%">
<p:rowToggler />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.name']}" />
</f:facet>
<h:outputText value="#{tournament.tournamentName}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.game']}" />
</f:facet>
<h:outputText value="#{tournament.tournamentGame.name}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.status']}" />
</f:facet>
<h:outputText value="#{i18n[tournament.tournamentStatus.i18nKey]}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.type']}" />
</f:facet>
<h:outputText value="#{i18n[tournament.tournamentType.i18nKey]}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.fillamount']}" />
</f:facet>
<h:outputText value="#{tournament.participants.size()}/#{tournament.maxParticipants}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.participation_time']}" />
</f:facet>
<h:outputText value="#{tournament.registrationOpensAt}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText>
-
<h:outputText value="#{tournament.registrationClosesAt}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.rules']}" />
</f:facet>
<h:link value="#{tournament.rules.name}" outcome="/tournaments/showrules.xhtml">
<f:param name="tournament_id" value="#{tournament.id}" />
</h:link>
</p:column>
<p:rowExpansion>
<h:panelGrid id="display" columns="2" cellpadding="4" styleClass=" ui-widget-content grid">
<h:outputText value="#{i18n['tournament.participants']}" />
<h:panelGroup>
<ul>
<ui:repeat var="participant" value="#{tournament.participants}">
<li><h:outputText value="#{participant.teamName}" rendered="#{not empty participant.teamName}" /> <h:outputText value="#{participant.participator.user.nick}"
rendered="#{empty participant.teamName}" /></li>
</ui:repeat>
</ul>
</h:panelGroup>
</h:panelGrid>
</p:rowExpansion>
</p:dataTable>
<h2>#{i18n['tournaments.in_progress_tournaments']}</h2>
<p:dataTable value="#{tournamentListView.inProgressTournaments}" var="tournament">
<p:column style="width:2%">
<p:rowToggler />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.name']}" />
</f:facet>
<h:outputText value="#{tournament.tournamentName}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.game']}" />
</f:facet>
<h:outputText value="#{tournament.tournamentGame.name}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.status']}" />
</f:facet>
<h:outputText value="#{i18n[tournament.tournamentStatus.i18nKey]}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.type']}" />
</f:facet>
<h:outputText value="#{i18n[tournament.tournamentType.i18nKey]}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.fillamount']}" />
</f:facet>
<h:outputText value="#{tournament.participants.size()}/#{tournament.maxParticipants}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.participation_time']}" />
</f:facet>
<h:outputText value="#{tournament.registrationOpensAt}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText>
-
<h:outputText value="#{tournament.registrationClosesAt}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.rules']}" />
</f:facet>
<h:link value="#{tournament.rules.name}" outcome="/tournaments/showrules.xhtml">
<f:param name="tournament_id" value="#{tournament.id}" />
</h:link>
</p:column>
<p:rowExpansion>
<h:panelGrid id="display" columns="2" cellpadding="4" styleClass=" ui-widget-content grid">
<h:outputText value="#{i18n['tournament.participants']}" />
<h:panelGroup>
<ul>
<ui:repeat var="participant" value="#{tournament.participants}">
<li><h:outputText value="#{participant.teamName}" rendered="#{not empty participant.teamName}" /> <h:outputText value="#{participant.participator.user.nick}"
rendered="#{empty participant.teamName}" /></li>
</ui:repeat>
</ul>
</h:panelGroup>
</h:panelGrid>
</p:rowExpansion>
</p:dataTable>
<h2>#{i18n['tournaments.completed_tournaments']}</h2>
<p:dataTable value="#{tournamentListView.completedTournaments}" var="tournament">
<p:column style="width:2%">
<p:rowToggler />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.name']}" />
</f:facet>
<h:outputText value="#{tournament.tournamentName}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.game']}" />
</f:facet>
<h:outputText value="#{tournament.tournamentGame.name}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.status']}" />
</f:facet>
<h:outputText value="#{i18n[tournament.tournamentStatus.i18nKey]}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.type']}" />
</f:facet>
<h:outputText value="#{i18n[tournament.tournamentType.i18nKey]}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.fillamount']}" />
</f:facet>
<h:outputText value="#{tournament.participants.size()}/#{tournament.maxParticipants}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.participation_time']}" />
</f:facet>
<h:outputText value="#{tournament.registrationOpensAt}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText>
-
<h:outputText value="#{tournament.registrationClosesAt}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['tournament.rules']}" />
</f:facet>
<h:link value="#{tournament.rules.name}" outcome="/tournaments/showrules.xhtml">
<f:param name="tournament_id" value="#{tournament.id}" />
</h:link>
</p:column>
<p:rowExpansion>
<h:panelGrid id="display" columns="2" cellpadding="4" styleClass=" ui-widget-content grid">
<h:outputText value="#{i18n['tournament.participants']}" />
<h:panelGroup>
<ul>
<ui:repeat var="participant" value="#{tournament.participants}">
<li><h:outputText value="#{participant.teamName}" rendered="#{not empty participant.teamName}" /> <h:outputText value="#{participant.participator.user.nick}"
rendered="#{empty participant.teamName}" /></li>
</ui:repeat>
</ul>
</h:panelGroup>
</h:panelGrid>
</p:rowExpansion>
</p:dataTable>
</h:form>
</ui:define>
</ui:composition>
......
......@@ -1032,6 +1032,7 @@ tournament.game = Game
tournament.name = Tournament name
tournament.not_within_participation_time = Not within the participation time for the tournament
tournament.participant_captain = Captain
tournament.participant_email = Participant E-Mail
tournament.participant_gameid = Game-ID
tournament.participant_nick = Nickname
tournament.participants = Participants
......
......@@ -1017,6 +1017,7 @@ tournament.game = Peli
tournament.name = Turnauksen nimi
tournament.not_within_participation_time = Turnauksen ilmoittautuminen ei ole aktiivinen
tournament.participant_captain = Kapteeni
tournament.participant_email = Osallistujan s\u00E4hk\u00F6posti
tournament.participant_gameid = Peli-ID
tournament.participant_nick = Nimimerkki
tournament.participants = Osallistujat
......
......@@ -32,14 +32,18 @@ public class TournamentListView extends GenericCDIView {
}
public List<Tournament> getSetupPhaseTournaments() {
return tournamentBean.getTournamentsInStatus(TournamentStatus.SETUP, true);
return tournamentBean.getTournamentsInStatus(TournamentStatus.SETUP, true, false);
}
public List<Tournament> getSetupClosedPhaseTournaments() {
return tournamentBean.getTournamentsInStatus(TournamentStatus.SETUP, true, true);
}
public List<Tournament> getInProgressTournaments() {
return tournamentBean.getTournamentsInStatus(TournamentStatus.IN_PROGRESS, false);
return tournamentBean.getTournamentsInStatus(TournamentStatus.IN_PROGRESS, false, false);
}
public List<Tournament> getCompletedTournaments() {
return tournamentBean.getTournamentsInStatus(TournamentStatus.COMPLETED, false);
return tournamentBean.getTournamentsInStatus(TournamentStatus.COMPLETED, false, false);
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!