Author: fdesbois Date: 2010-03-09 12:38:42 +0100 (Tue, 09 Mar 2010) New Revision: 2906 Log: Evo #132 : add pager for votes Added: branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/java/org/chorem/pollen/ui/components/Pager.java branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/resources/org/chorem/pollen/ui/components/Pager_en.properties branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/resources/org/chorem/pollen/ui/components/Pager_fr.properties Modified: branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/resources/org/chorem/pollen/ui/pages/poll/VoteForPoll_fr.properties branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/webapp/poll/VoteForPoll.tml Added: branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/java/org/chorem/pollen/ui/components/Pager.java =================================================================== --- branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/java/org/chorem/pollen/ui/components/Pager.java (rev 0) +++ branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/java/org/chorem/pollen/ui/components/Pager.java 2010-03-09 11:38:42 UTC (rev 2906) @@ -0,0 +1,113 @@ +package org.chorem.pollen.ui.components; + + +import org.apache.tapestry5.ComponentResources; +import org.apache.tapestry5.EventConstants; +import org.apache.tapestry5.Link; +import org.apache.tapestry5.MarkupWriter; +import org.apache.tapestry5.annotations.Parameter; +import org.apache.tapestry5.ioc.Messages; +import org.apache.tapestry5.ioc.annotations.Inject; +import org.slf4j.Logger; + + +/** + * Pager + * + * Created: 8 mars 2010 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class Pager { + + @Parameter(required = true) + private int nbTotalRows; + + @Parameter(required = true) + private int currentPage; + + @Parameter(required = true) + private int nbRowsPerPage; + + @Inject + private ComponentResources resources; + + @Inject + private Messages messages; + + @Inject + private Logger log; + + void beginRender(MarkupWriter writer) { + if (log.isDebugEnabled()) { + log.debug("pager from : " + getFirstValue() + " to " + getLastValue()); + log.debug("current page : " + currentPage); + log.debug("max nb rows : " + nbTotalRows); + log.debug("has previous : " + hasPrevious()); + log.debug("has next : " + hasNext()); + log.debug("indexes from : " + getStartIndex() + " to " + getEndIndex()); + } + + writer.element("div", "class", "p-pager"); + if (hasPrevious()) { + writeLink(writer, currentPage - 1, "< ", "p-pager-previous"); + } + writer.element("strong"); + writer.write(getFirstValue() + " - " + getLastValue() + " " + + messages.get("over") + " " + nbTotalRows); + writer.end(); + if (hasNext()) { + writeLink(writer, currentPage + 1, " >", "p-pager-next"); + } + writer.end(); + } + + void afterRender(MarkupWriter writer) { + + } + + protected void writeLink(MarkupWriter writer, int index, + String text, String style) { + Link link = resources.createEventLink(EventConstants.ACTION, new Object[] {index}); + writer.element("a", "href", link, "class", style); + writer.write(text); + writer.end(); + } + + public int getStartIndex() { + return ( (currentPage - 1) * nbRowsPerPage); + } + + public int getEndIndex() { + int end = (currentPage * nbRowsPerPage) - 1; + if (end >= nbTotalRows) { + end = nbTotalRows - 1; + } + return end; + } + + public int getFirstValue() { + return getStartIndex() + 1; + } + + public int getLastValue() { + return getEndIndex() + 1; + } + + public boolean hasPrevious() { + return getStartIndex() > 0; + } + + public boolean hasNext() { + return getEndIndex() < (nbTotalRows - 1); + } + + void onAction(int newPage) { + currentPage = newPage; + } + +} Property changes on: branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/java/org/chorem/pollen/ui/components/Pager.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL" Modified: branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java =================================================================== --- branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java 2010-03-08 16:23:31 UTC (rev 2905) +++ branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java 2010-03-09 11:38:42 UTC (rev 2906) @@ -28,6 +28,7 @@ import java.util.UUID; import org.apache.tapestry5.BindingConstants; +import org.apache.tapestry5.EventContext; import org.apache.tapestry5.ValidationException; import org.apache.tapestry5.annotations.Component; import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary; @@ -71,6 +72,7 @@ import org.chorem.pollen.ui.base.ContextLink; import org.chorem.pollen.ui.components.FeedBack; import org.chorem.pollen.ui.components.ImageContextLink; +import org.chorem.pollen.ui.components.Pager; import org.chorem.pollen.ui.data.EvenOdd; import org.chorem.pollen.ui.data.Lien; import org.chorem.pollen.ui.data.PollAction; @@ -1080,19 +1082,19 @@ * * @param id l'identifiant du sondage et du votant */ - void onActivate(String id) { - param = id; + void onActivate(EventContext ec) { + param = ec.get(String.class, 0); // Initialisation du sondage - if (id != null && !"".equals(id)) { - String pollId = id.split(":", 2)[0]; + if (param != null && !"".equals(param)) { + String pollId = param.split(":", 2)[0]; poll = servicePoll.findPollByPollId(pollId); if (poll != null) { // Identification du votant - if (id.split(":", 2).length == 2) { - String accountId = id.split(":", 2)[1]; + if (param.split(":", 2).length == 2) { + String accountId = param.split(":", 2)[1]; pollAccount = servicePollAccount .findPollAccountByAccountId(accountId); pollAccountId = pollAccount.getId(); @@ -1161,4 +1163,34 @@ countPoll(); } + + /************** PAGER MANAGMENT *******************************************/ + + @InjectComponent + private Pager pager; + + private List<VoteDTO> votes; + + @Persist + private Integer page; + + public int getPage() { + return page == null ? 1 : page; + } + + @Log + public void setPage(int page) { + this.page = page; + } + + public List<VoteDTO> getVotes() { + if (votes == null) { + votes = new ArrayList<VoteDTO>(); + List<VoteDTO> all = poll.getVoteDTOs(); + for (int i = pager.getStartIndex(); i <= pager.getEndIndex(); i++) { + votes.add(all.get(i)); + } + } + return votes; + } } Added: branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/resources/org/chorem/pollen/ui/components/Pager_en.properties =================================================================== --- branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/resources/org/chorem/pollen/ui/components/Pager_en.properties (rev 0) +++ branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/resources/org/chorem/pollen/ui/components/Pager_en.properties 2010-03-09 11:38:42 UTC (rev 2906) @@ -0,0 +1 @@ +over=over \ No newline at end of file Added: branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/resources/org/chorem/pollen/ui/components/Pager_fr.properties =================================================================== --- branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/resources/org/chorem/pollen/ui/components/Pager_fr.properties (rev 0) +++ branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/resources/org/chorem/pollen/ui/components/Pager_fr.properties 2010-03-09 11:38:42 UTC (rev 2906) @@ -0,0 +1 @@ +over=sur Modified: branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/resources/org/chorem/pollen/ui/pages/poll/VoteForPoll_fr.properties =================================================================== --- branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/resources/org/chorem/pollen/ui/pages/poll/VoteForPoll_fr.properties 2010-03-08 16:23:31 UTC (rev 2905) +++ branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/resources/org/chorem/pollen/ui/pages/poll/VoteForPoll_fr.properties 2010-03-09 11:38:42 UTC (rev 2906) @@ -12,7 +12,7 @@ results-help=Voir les r\u00C3\u00A9sultats #vote -vote-size=%d votes on \u00E9t\u00E9 enregistr\u00E9s +vote-size=%d votes ont \u00E9t\u00E9 enregistr\u00E9s anonymous=anonyme description=Description voterName=Votant Modified: branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/webapp/poll/VoteForPoll.tml =================================================================== --- branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/webapp/poll/VoteForPoll.tml 2010-03-08 16:23:31 UTC (rev 2905) +++ branches/pollen-1.2.3-1.2.x/pollen-ui/src/main/webapp/poll/VoteForPoll.tml 2010-03-09 11:38:42 UTC (rev 2906) @@ -46,8 +46,13 @@ <!-- Sondage --> <t:zone t:id="pollZone" t:show="show" t:update="show"> - <p>${voteSizeMessage}</p> - <t:feedback t:id="voteFeedback"/> + <t:if t:test="poll.anonymous"> + <p>${voteSizeMessage}</p> + <t:feedback t:id="voteFeedback"/> + <p:else> + <t:pager t:nbRowsPerPage="15" t:nbTotalRows="poll.nbVotes" t:currentPage="page"/> + </p:else> + </t:if> <t:form t:id="voteForm" t:zone="pollZone"> <table id="poll"> <thead> @@ -160,7 +165,7 @@ </t:if> <tbody> <t:unless t:test="poll.anonymous"> - <t:loop t:source="poll.voteDTOs" t:value="vote" volatile="true"> + <t:loop t:source="votes" t:value="vote" volatile="true"> <tr> <td class="${evenodd.next}"> <t:if test="${AccountFieldDisplayed}">