[Suiviobsmer-commits] r343 - in trunk: . suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/services suiviobsmer-business/src/main/xmi suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/services suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/webapp suiviobsmer-ui/src/main/w
Author: fdesbois Date: 2010-02-10 14:17:59 +0000 (Wed, 10 Feb 2010) New Revision: 343 Added: trunk/suiviobsmer-ui/src/main/webapp/img/synthesis-ind-non-compliance-boarding.png trunk/suiviobsmer-ui/src/main/webapp/img/user-22px.png Modified: trunk/changelog.txt trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/services/ServiceSynthesisImpl.java trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/services/ServiceSynthesisImplTest.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/SynthesisId.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Synthesis.properties trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml trunk/suiviobsmer-ui/src/main/webapp/css/synthesis.css trunk/suiviobsmer-ui/src/main/webapp/img/synthesis-graph-boarding.png trunk/suiviobsmer-ui/src/main/webapp/img/synthesis-graph-sampling.png Log: Evo #1984 : Integrate indicator for non compliance boarding in synthesis page Modified: trunk/changelog.txt =================================================================== --- trunk/changelog.txt 2010-02-09 23:12:48 UTC (rev 342) +++ trunk/changelog.txt 2010-02-10 14:17:59 UTC (rev 343) @@ -9,8 +9,10 @@ Evolutions ++++++++++ -- [fdesbois] Evo #2092 : Filtres des contact pour utilisateurs : ajouter - validations du programme. +- [fdesbois] Evo #1984 : Synthèse : indicateur de non respect du nombre + d'observateurs embarqués +- [fdesbois] Evo #2092 : Contacts : Ajouter filtres sur les validations du + programme pour un simple utilisateur (observateur). - [fdesbois] Evo #2080 : Plan d'échantillonnage : bulle d'aide manquante pour liste navires éligibles. - [fdesbois] Evo #2075 : Plan d'échantillonnage : Ajouter colonne commentaire @@ -26,8 +28,8 @@ Anomalies +++++++++ -- [fdesbois] Ano #2096 : Administration : Format mail suite changement mot de - passe +- [fdesbois] Ano #2096 : Administration : Mail incomplet lors d'un changement + de mot de passe - [fdesbois] Ano #2095 : Administration : Les zones de pêche ayant le même code de division ne sont pas écrasées à l'import - [fdesbois] Ano #1992 : Session : Problème d'instanciation sur User lors de Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/services/ServiceSynthesisImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/services/ServiceSynthesisImpl.java 2010-02-09 23:12:48 UTC (rev 342) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/services/ServiceSynthesisImpl.java 2010-02-10 14:17:59 UTC (rev 343) @@ -244,11 +244,11 @@ } @Override - public Map<Company, Double> getNonComplianceBoardingIndicator(Company company) throws SuiviObsmerException { + public Map<String, Double> getNonComplianceBoardingIndicator(Company company) throws SuiviObsmerException { TopiaContext transaction = null; // Carefull with results, the company may not be present in the map : // only if there is no unfinished sampleRow or no contact done - Map<Company, Double> results = new HashMap<Company, Double>(); + Map<String, Double> results = new HashMap<String, Double>(); try { transaction = rootContext.beginTransaction(); @@ -261,6 +261,7 @@ String contactKey = query.getMainAlias(); String sampleRowKey = contactKey + "." + Contact.SAMPLE_ROW; String companyKey = sampleRowKey + "." + SampleRow.COMPANY; + String companyName = companyKey + "." + Company.NAME; // Only for unfinished sampleRows Date current = SuiviObsmerContext.getCurrentDate(); @@ -271,7 +272,7 @@ } // Prepare results - query.setSelect(companyKey, "COUNT(*)").addGroup(companyKey); + query.setSelect(companyName, "COUNT(*)").addGroup(companyName); if (log.isDebugEnabled()) { log.debug("Exec query for total : " + query); @@ -292,28 +293,28 @@ // Use the map to set the number of non compliance results for (Object[] row : diffResults) { - Company rowCompany = (Company)row[0]; + String rowCompanyName = (String)row[0]; Long rowCount = (Long)row[1]; if (log.isDebugEnabled()) { - log.debug("result row : " + rowCompany.getName() + " = " + rowCount); + log.debug("result row : " + rowCompanyName + " = " + rowCount); } - results.put(rowCompany, rowCount.doubleValue()); + results.put(rowCompanyName, rowCount.doubleValue()); } // Get the previous value from the map and make the division to have // the result percent of non compliance. Put 0 in the map if no // previous result is set for (Object[] row : totalResults) { - Company rowCompany = (Company)row[0]; + String rowCompanyName = (String)row[0]; Long rowCount = (Long)row[1]; if (log.isDebugEnabled()) { - log.debug("total row : " + rowCompany.getName() + " = " + rowCount); + log.debug("total row : " + rowCompanyName + " = " + rowCount); } - Double value = results.get(rowCompany); + Double value = results.get(rowCompanyName); if (value == null) { - results.put(rowCompany, 0.); + results.put(rowCompanyName, 0.); } else { - results.put(rowCompany, value / rowCount); + results.put(rowCompanyName, value / rowCount); } } Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo =================================================================== (Binary files differ) Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/services/ServiceSynthesisImplTest.java =================================================================== --- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/services/ServiceSynthesisImplTest.java 2010-02-09 23:12:48 UTC (rev 342) +++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/services/ServiceSynthesisImplTest.java 2010-02-10 14:17:59 UTC (rev 343) @@ -254,13 +254,13 @@ /** EXEC METHOD **/ // result for company TARTANPION - Map<Company, Double> results = + Map<String, Double> results = service.getNonComplianceBoardingIndicator(company); assertEquals(1, results.size()); // 0% of non compliance - Double value = results.get(company); + Double value = results.get(company.getName()); assertEquals(0., value, 0); // result for company BIS using admin mode (no company filtered) @@ -269,7 +269,7 @@ assertEquals(2, results.size()); // 100% of non compliance - value = results.get(company2); + value = results.get(company2.getName()); assertEquals(1., value, 0); } Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java 2010-02-09 23:12:48 UTC (rev 342) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java 2010-02-10 14:17:59 UTC (rev 343) @@ -155,8 +155,7 @@ } if (user.getAdmin() && companySelect) { - companySelectModel = null; - getCompanySelectModel(); + resetCompanySelect(); if (getFilter().getCompany() != null) { companyId = getFilter().getCompany().getTopiaId(); } @@ -186,6 +185,11 @@ resetSampleRowSelect(); } + protected void resetCompanySelect() throws SuiviObsmerException { + companySelectModel = null; + getCompanySelectModel(); + } + protected void resetFacadeSelect() throws SuiviObsmerException { facadeSelectModel = null; getFacadeSelectModel(); Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/SynthesisId.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/SynthesisId.java 2010-02-09 23:12:48 UTC (rev 342) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/SynthesisId.java 2010-02-10 14:17:59 UTC (rev 343) @@ -15,8 +15,8 @@ GRAPH_SAMPLING("graph1"), GRAPH_BOARDING("graph2"), - IND_CONTACT_STATE("ind1"), - IND_NON_COMPLIANCE_BOARDING("ind2"), + IND_NON_COMPLIANCE_BOARDING("ind1"), + IND_CONTACT_STATE("ind2"), IND_ALLEGRO_REACTIVITY("ind3"); private String blockId; Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java 2010-02-09 23:12:48 UTC (rev 342) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java 2010-02-10 14:17:59 UTC (rev 343) @@ -145,7 +145,7 @@ void onSuccessFromImportFishingZones() { try { int result = serviceReferential.importFishingZoneCsv(fishingZoneCsvFile.getStream()); - layout.getFeedBack().addInfo(result + " zones de pêche importés"); + layout.getFeedBack().addInfo(result + " zones de pêche importées"); } catch (SuiviObsmerException eee) { layout.getFeedBack().addError(eee.getMessage()); } Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-02-09 23:12:48 UTC (rev 342) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-02-10 14:17:59 UTC (rev 343) @@ -35,6 +35,7 @@ import fr.ifremer.suiviobsmer.ui.data.ChartUtils.ChartType; import fr.ifremer.suiviobsmer.ui.data.SynthesisId; import java.text.DateFormat; +import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; @@ -94,17 +95,15 @@ @InjectComponent private Zone delegator; - void setupRender() throws SuiviObsmerException { - initSelectFilters(true, false, true); - initBoardingBlock(); - } - public Block getActiveBlock() throws SuiviObsmerException { if (activeSynthesis == null) { // Initialize default synthesis by Data Sampling activeSynthesis = SynthesisId.GRAPH_SAMPLING; } - setupRender(); + switch (activeSynthesis) { + case GRAPH_SAMPLING : initSamplingBlock(); break; + case GRAPH_BOARDING : initBoardingBlock(); + } return resources.getBlock(activeSynthesis.getBlockId()); } @@ -142,6 +141,10 @@ private boolean reset; + private void initSamplingBlock() throws SuiviObsmerException { + initSelectFilters(true, false, true); + } + @Override public BoatFilter getFilter() throws SuiviObsmerException { if (dataSamplingFilter == null) { @@ -216,7 +219,8 @@ @Property private String companyIdForBoarding; - private void initBoardingBlock() { + private void initBoardingBlock() throws SuiviObsmerException { + resetCompanySelect(); // Set the companyIdForBoarding is only necessary for an admin which // have access to a select with all active companies (from Filters : // getCompanySelectModel()) @@ -279,4 +283,48 @@ void onSuccessFromFilterCompanyForBoarding() throws SuiviObsmerException { companyForBoarding = getCompanySelectModel().findObject(companyIdForBoarding); } + + /********************* INDICATOR : NONCOMPLIANCEBOARDING ******************/ + + @Property + private Map.Entry<String, Double> nonComplianceBoardingEntry; + + /** + * Data for nonComplianceBoarding indicator. The key is the company + * considered and the value is the indicator value. The map will contains + * only one row, if the current user is an observer. + * + * @return a Map with companies and there values for nonComplianceBoarding + * @throws SuiviObsmerException + */ + public Map<String, Double> getNonComplianceBoarding() throws SuiviObsmerException { + Company company = !user.getAdmin() ? user.getCompany() : null; + return serviceSynthesis.getNonComplianceBoardingIndicator(company); + } + + public NumberFormat getPercentFormat() { + return NumberFormat.getPercentInstance(); + } + + /** + * Return the company name of the current entry (in the loop) for + * nonComplianceBoarding indicator. Only useful for admin user. + * + * @return the company name + * @throws SuiviObsmerException + */ +// public String getNonComplianceBoardingCompanyName() throws SuiviObsmerException { +// return nonComplianceBoardingEntry.getKey().getName(); +// } + + /** + * Return the value of nonComplianceBoarding indicator. Only useful for + * observer user. + * + * @return the value of the indicator + * @throws SuiviObsmerException + */ + public Double getNonComplianceBoardingValue() throws SuiviObsmerException { + return getNonComplianceBoarding().get(user.getCompany().getName()); + } } Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Synthesis.properties =================================================================== --- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Synthesis.properties 2010-02-09 23:12:48 UTC (rev 342) +++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Synthesis.properties 2010-02-10 14:17:59 UTC (rev 343) @@ -7,4 +7,6 @@ sectorName-label: Zone sampleRow-label: Code ligne company-label: Soci\u00E9t\u00E9 -programName-label: Programme \ No newline at end of file +programName-label: Programme + +companyForBoarding-label: Soci\u00E9t\u00E9 \ No newline at end of file Modified: trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-02-09 23:12:48 UTC (rev 342) +++ trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-02-10 14:17:59 UTC (rev 343) @@ -57,13 +57,20 @@ title="Graphique des sollicitations des navires" /> </a> </li> + <li> + <a t:type="actionlink" t:context="[actionSynthesisId,'IND_NON_COMPLIANCE_BOARDING']" t:zone="so-synthesis-main"> + <img src="${asset:context:}/img/synthesis-ind-non-compliance-boarding.png" alt="Indicateur" + title="Indicateur de non respect du nombre d'observateurs embarqués" /> + </a> + </li> </ul> </div> <div t:type="zone" t:id="delegator" class="fleft" t:update="show" id="so-synthesis-main"> <t:delegate t:to="activeBlock" /> </div> </div> - + + <!-- GRAPH1 : DATA_SAMPLING --> <t:block t:id="graph1"> <div class="acenter" id="so-datasampling"> <h2>Données des marées (réalisé / planifié)</h2> @@ -132,11 +139,12 @@ <!--</t:zone>--> </div> </t:block> + <!-- GRAPH2 : BOARDING_BOAT --> <t:block t:id="graph2"> <div class="acenter"> <h2>Sollicitations des navires</h2> <br /> - <p>Ces résultats ne concernent que les lignes du plan d'échantillonnage ayant une durée moyenne de marées inférieure ou égale à 2</p> + <p>Ces résultats ne concernent que les lignes du plan d'échantillonnage<br /> ayant une durée moyenne de marées inférieure ou égale à 2</p> <br /> <t:if t:test="user.admin"> <form t:type="form" t:id="filterCompanyForBoarding"> @@ -155,4 +163,43 @@ </t:if> </div> </t:block> + <!-- IND1 : NON_COMPLIANCE_BOARDING --> + <t:block t:id="ind1"> + <div class="acenter" id="so-noncomplianceboarding"> + <h2>Non respect du nombre d'observateurs embarqués</h2> + <br /> + <p> + Ce résultat concerne l'ensemble des contrats en cours + <t:unless t:test="user.admin"> + pour votre société + </t:unless> + ayant des données réelles + </p> + <t:if t:test="user.admin"> + <table class="t-data-grid"> + <thead> + <tr> + <td class="company">Société</td> + <td>Indicateur</td> + </tr> + </thead> + <tbody> + <tr t:type="loop" t:source="nonComplianceBoarding.entrySet()" t:value="nonComplianceBoardingEntry"> + <td class="company">${nonComplianceBoardingEntry.key}</td> + <td class="number"> + <t:output t:value="nonComplianceBoardingEntry.value" t:format="percentFormat"/> + </td> + </tr> + </tbody> + </table> + <p:else> + <div class="indicator"> + <p class="number"> + <t:output t:value="nonComplianceBoardingValue" t:format="percentFormat"/> + </p> + </div> + </p:else> + </t:if> + </div> + </t:block> </t:layout> Modified: trunk/suiviobsmer-ui/src/main/webapp/css/synthesis.css =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/css/synthesis.css 2010-02-09 23:12:48 UTC (rev 342) +++ trunk/suiviobsmer-ui/src/main/webapp/css/synthesis.css 2010-02-10 14:17:59 UTC (rev 343) @@ -19,12 +19,7 @@ margin-right: auto; } -div#so-synthesis-indicators div.indicator { - width: 20%; - padding: 10px; - border: 2px outset blue; - margin-left: 40px; -} +*//* div#so-synthesis-indicators div.indicator p { margin-bottom: 10px; @@ -35,13 +30,6 @@ text-align: center; } -div#so-synthesis-indicators div.indicator p.number { - color: #007CC2; - text-align: center; - font-size: 2em; - font-weight: bold; -} - div#so-synthesis div.graph { clear: both; padding: 10px; @@ -64,7 +52,7 @@ } div#so-synthesis-menu { - border-right: 2px solid black; + border-right: 2px solid #133852; padding-left: 15px; height: 400px; width: 10%; @@ -78,6 +66,22 @@ padding-bottom: 20px; } +div.indicator { + margin-top: 20px; + width: 20%; + padding: 10px; + border: 2px outset blue; + margin-left: auto; + margin-right: auto; +} + +.number { + color: #007CC2; + text-align: center; + font-size: 2em; + font-weight: bold; +} + div#so-datasampling fieldset { width: 70%; margin-left: auto; @@ -102,3 +106,23 @@ border: 1px solid #133852; } +div#so-noncomplianceboarding table { + margin-top: 20px; + width: 60%; + margin-left: auto; + margin-right: auto; +} + +div#so-noncomplianceboarding td { + padding: 3px; +} + +div#so-noncomplianceboarding table thead tr { + background-color: #19a28d; + font-weight: bold; +} + +div#so-noncomplianceboarding table td.company { + text-align: left; +} + Modified: trunk/suiviobsmer-ui/src/main/webapp/img/synthesis-graph-boarding.png =================================================================== (Binary files differ) Modified: trunk/suiviobsmer-ui/src/main/webapp/img/synthesis-graph-sampling.png =================================================================== (Binary files differ) Added: trunk/suiviobsmer-ui/src/main/webapp/img/synthesis-ind-non-compliance-boarding.png =================================================================== (Binary files differ) Property changes on: trunk/suiviobsmer-ui/src/main/webapp/img/synthesis-ind-non-compliance-boarding.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/suiviobsmer-ui/src/main/webapp/img/user-22px.png =================================================================== (Binary files differ) Property changes on: trunk/suiviobsmer-ui/src/main/webapp/img/user-22px.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream
participants (1)
-
fdesbois@users.labs.libre-entreprise.org