r299 - in trunk: . chorem-webmotion chorem-webmotion/src/main/java/org/chorem/webmotion/actions/sales chorem-webmotion/src/main/resources chorem-webmotion/src/main/webapp/WEB-INF chorem-webmotion/src/main/webapp/WEB-INF/jsp/salesReports
Author: jcouteau Date: 2013-01-19 11:11:15 +0100 (Sat, 19 Jan 2013) New Revision: 299 Url: http://chorem.org/projects/chorem/repository/revisions/299 Log: Fix build : - Update webmotion version - Clean dependencies Added: trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/sales/SalesPerProjectReportAction.java trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/salesReports/salesPerProjectReport.jsp Modified: trunk/chorem-webmotion/pom.xml trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/sales/SalesReportAction.java trunk/chorem-webmotion/src/main/resources/mapping trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/salesReports/salesReport.jsp trunk/chorem-webmotion/src/main/webapp/WEB-INF/wro.xml trunk/pom.xml Modified: trunk/chorem-webmotion/pom.xml =================================================================== --- trunk/chorem-webmotion/pom.xml 2013-01-15 20:40:42 UTC (rev 298) +++ trunk/chorem-webmotion/pom.xml 2013-01-19 10:11:15 UTC (rev 299) @@ -171,11 +171,6 @@ </dependency> <dependency> - <groupId>org.nuiton.js</groupId> - <artifactId>nuiton-js-jquery-tokeninput</artifactId> - </dependency> - - <dependency> <groupId>org.debux.webmotion</groupId> <artifactId>webmotion</artifactId> </dependency> Added: trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/sales/SalesPerProjectReportAction.java =================================================================== --- trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/sales/SalesPerProjectReportAction.java (rev 0) +++ trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/sales/SalesPerProjectReportAction.java 2013-01-19 10:11:15 UTC (rev 299) @@ -0,0 +1,85 @@ +package org.chorem.webmotion.actions.sales; + +import org.chorem.ChoremClient; +import org.chorem.entities.Accepted; +import org.chorem.entities.Project; +import org.chorem.entities.Quotation; +import org.debux.webmotion.server.WebMotionController; +import org.debux.webmotion.server.render.Render; +import org.nuiton.wikitty.WikittyClient; +import org.nuiton.wikitty.query.WikittyQuery; +import org.nuiton.wikitty.query.WikittyQueryMaker; +import org.nuiton.wikitty.query.conditions.Aggregate; + +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * @author jcouteau <couteau@codelutin.com> + */ +public class SalesPerProjectReportAction extends WebMotionController { + + /** + * Rend le graphe des devis envoyés par mois + * + * @param client + * @return + */ + public Render sales(ChoremClient client, String from, String to) { + + if (null == from) { + from = String.valueOf(SalesReportHelper.getFirstYear(client)); + } + + if (null == to) { + to = String.valueOf(SalesReportHelper.getLastYear()); + } + + Map<String, Integer> salesPerProjectData = getSalesPerProjectData(from, to, client); + + List<Integer> listAllYearsInChorem = SalesReportHelper.listAllYears(client); + + return renderView("salesReports/salesPerProjectReport.jsp", + "data", salesPerProjectData, + "allYears", listAllYearsInChorem, + "fromYear", from, + "toYear", to); + } + + protected Map<String,Integer> getSalesPerProjectData(String firstYear, + String lastYear, + WikittyClient client){ + + Date last = SalesReportHelper.getLastDayOfYear(Integer.valueOf(lastYear)); + Date first = SalesReportHelper.getFirstDayOfYear(Integer.valueOf(firstYear)); + + Map<String,Integer> salesData = new LinkedHashMap<String, Integer>(); + + //a query to get all the projects + WikittyQuery projectsQuery = new WikittyQueryMaker().and() + .exteq(Project.EXT_PROJECT).end(); + + List<Project> projects = client.findAllByQuery(Project.class, projectsQuery).getAll(); + + //a query per project :( + for (Project project:projects){ + + WikittyQuery projectQuery = new WikittyQueryMaker() + .select("Quotation.amount", Aggregate.SUM).and() + .eq(Quotation.FQ_FIELD_QUOTATION_PROJECT, project) + .bw(Accepted.FQ_FIELD_ACCEPTED_ACCEPTEDDATE, first, last) + .end(); + + Integer sales = client.findByQuery(Integer.class, projectQuery); + + if (null != sales && sales != 0) { + salesData.put( project.getName(), sales); + } + + } + + return salesData; + } +} Modified: trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/sales/SalesReportAction.java =================================================================== --- trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/sales/SalesReportAction.java 2013-01-15 20:40:42 UTC (rev 298) +++ trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/sales/SalesReportAction.java 2013-01-19 10:11:15 UTC (rev 299) @@ -87,7 +87,6 @@ protected Map<String,Integer> getSalesData(Integer year, WikittyClient client){ - Date last = SalesReportHelper.getLastDayOfYear(year); Date first = SalesReportHelper.getFirstDayOfYear(year); Map<String,Integer> salesData = new LinkedHashMap<String, Integer>(); Modified: trunk/chorem-webmotion/src/main/resources/mapping =================================================================== --- trunk/chorem-webmotion/src/main/resources/mapping 2013-01-15 20:40:42 UTC (rev 298) +++ trunk/chorem-webmotion/src/main/resources/mapping 2013-01-19 10:11:15 UTC (rev 299) @@ -56,5 +56,6 @@ * /sales/report/sentQuotation action:sales.SentQuotationsReportAction.sentQuotationPerMonth * /sales/report/acceptedQuotation action:sales.AcceptedQuotationsReportAction.acceptedQuotationPerMonth * /sales/report/sales action:sales.SalesReportAction.sales +* /sales/report/salesPerProject action:sales.SalesPerProjectReportAction.sales * /sales/{method} action:sales.SalesAction.{method} * /sales/{method}/{id} action:sales.SalesAction.{method} Added: trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/salesReports/salesPerProjectReport.jsp =================================================================== --- trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/salesReports/salesPerProjectReport.jsp (rev 0) +++ trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/salesReports/salesPerProjectReport.jsp 2013-01-19 10:11:15 UTC (rev 299) @@ -0,0 +1,82 @@ +<%-- + #%L + Chorem webmotion + $Id:$ + $HeadURL:$ + %% + Copyright (C) 2011 - 2012 CodeLutin + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + #L% + --%> +<%@page contentType="text/html" pageEncoding="UTF-8"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="f" %> +<%@ taglib uri="/WEB-INF/wikitty.tld" prefix="w"%> + +<div class="row-fluid"> + <div class="span2"> + <jsp:include page="/salesMenu"/> + </div> + + <div class="span10"> + <!-- Javascript to display graph --> + <script type="text/javascript"> + $(document).ready(function(){ + var sales = [ + <c:forEach var="entry" items="${data}" varStatus="counter"> + ['${entry.key}', ${entry.value}] + <c:if test="${!counter.last}">, </c:if> + </c:forEach> + ]; + + var plot1 = $.jqplot ('sales', sales, { + title:'Ventes par projet', + seriesDefaults:{ + renderer:$.jqplot.PieRenderer + }, + highlighter: { + show: true + }, + cursor: { + show: false + }, + legend: {show:true, location: 'e'} + }); + + }); + </script> + + <h2>Ventes</h2> + + <form action="sales" method="get"> + <select name="from"> + <c:forEach var="entry" items="${allYears}" varStatus="counter"> + <option value="${entry}" <c:if test="${entry==fromYear}">selected</c:if>>${entry}</option> + </c:forEach> + </select> + <select name="to"> + <c:forEach var="entry" items="${allYears}" varStatus="counter"> + <option value="${entry}" ${entry == toYear ? 'selected' : ''} >${entry}</option> + </c:forEach> + </select> + <input type="submit" value="Rechercher"> + </form> + + <div id="sales" style="height:200px;"></div> + + </div> +</div> + +<div style="clear:both;"/> \ No newline at end of file Modified: trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/salesReports/salesReport.jsp =================================================================== --- trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/salesReports/salesReport.jsp 2013-01-15 20:40:42 UTC (rev 298) +++ trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/salesReports/salesReport.jsp 2013-01-19 10:11:15 UTC (rev 299) @@ -36,12 +36,7 @@ $(document).ready(function(){ var sales = [ <c:forEach var="entry" items="${data}" varStatus="counter"> - [ - <c:forEach var="entry2" items="${entry.value.plotValues}" varStatus="counter2"> - ['${entry2.key}', ${entry2.value}] - <c:if test="${!counter2.last}">, </c:if> - </c:forEach> - ] + ['${entry.key}', ${entry.value}] <c:if test="${!counter.last}">, </c:if> </c:forEach> ]; Modified: trunk/chorem-webmotion/src/main/webapp/WEB-INF/wro.xml =================================================================== --- trunk/chorem-webmotion/src/main/webapp/WEB-INF/wro.xml 2013-01-15 20:40:42 UTC (rev 298) +++ trunk/chorem-webmotion/src/main/webapp/WEB-INF/wro.xml 2013-01-19 10:11:15 UTC (rev 299) @@ -15,6 +15,7 @@ <group-ref>jqplot.cursor</group-ref> <group-ref>jqplot.highlighter</group-ref> <group-ref>jqplot.barRenderer</group-ref> + <group-ref>jqplot.pieRenderer</group-ref> <js>/js/jquery-ui-timepicker-addon.js</js> <js>/js/jquery-ui-timepicker-fr.js</js> Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2013-01-15 20:40:42 UTC (rev 298) +++ trunk/pom.xml 2013-01-19 10:11:15 UTC (rev 299) @@ -104,7 +104,7 @@ <servletApiVersion>2.5</servletApiVersion> <jspApiVersion>2.0</jspApiVersion> <h2Version>1.2.134</h2Version> - <webmotionVersion>2.2</webmotionVersion> + <webmotionVersion>2.3.3</webmotionVersion> <jstlVersion>1.2</jstlVersion> <nuitonJsVersion>0.1-SNAPSHOT</nuitonJsVersion> @@ -127,6 +127,12 @@ </dependency> <dependency> + <groupId>org.debux.webmotion</groupId> + <artifactId>webmotion-extra-sitemesh</artifactId> + <version>2.3.3</version> + </dependency> + + <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${jstlVersion}</version>
participants (1)
-
jcouteau@users.chorem.org