Wao-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- 2352 discussions
[Suiviobsmer-commits] r263 - in trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer: . impl
by fdesbois@users.labs.libre-entreprise.org 23 Jan '10
by fdesbois@users.labs.libre-entreprise.org 23 Jan '10
23 Jan '10
Author: fdesbois
Date: 2010-01-23 18:16:17 +0000 (Sat, 23 Jan 2010)
New Revision: 263
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java
Log:
Permission to import contact validations for superadmin
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java 2010-01-23 17:59:23 UTC (rev 262)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java 2010-01-23 18:16:17 UTC (rev 263)
@@ -336,6 +336,15 @@
return valid;
}
+ public static Boolean parseContactValidation(CsvReader reader, ImportHeader header) throws IOException {
+ String validation = read(reader, header);
+ if (validation.equals("A")) {
+ return Boolean.TRUE;
+ } else {
+ return validation.equals("R") ? Boolean.FALSE : null;
+ }
+ }
+
public static String formatContactMammals(boolean mammals) {
return mammals ? "X" : "";
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-23 17:59:23 UTC (rev 262)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-23 18:16:17 UTC (rev 263)
@@ -58,12 +58,12 @@
import java.nio.charset.Charset;
import java.text.DateFormat;
import java.text.ParseException;
-import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.persistence.TopiaEntity;
@@ -457,6 +457,18 @@
contact.setMammalsObservation(mammalsObsv);
contact.setDataInputDate(dataInput);
+ // Import validations only for superadmin : useful for archives
+ if (user.getAdmin() && user.getLogin().equals("admin")) {
+ Boolean companyValidation = ImportHelper.parseContactValidation(reader, CONTACT.CONT_SOCIETE_VALID);
+ Boolean programValidation = ImportHelper.parseContactValidation(reader, CONTACT.CONT_PROGRAM_VALID);
+ contact.setValidationCompany(companyValidation);
+ contact.setValidationProgram(programValidation);
+ if (BooleanUtils.isTrue(companyValidation) && BooleanUtils.isNotFalse(programValidation) &&
+ contact.getState().equals(ContactState.BOARDING_DONE.toString())) {
+ contact.getSampleRow().addRealTideTime(contact);
+ }
+ }
+
result.incNbImported();
} else {
1
0
23 Jan '10
Author: fdesbois
Date: 2010-01-23 17:59:23 +0000 (Sat, 23 Jan 2010)
New Revision: 262
Modified:
trunk/changelog.txt
trunk/pom.xml
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactState.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImplTest.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/AbstractMappedGridDataSource.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/ContactModelFactory.java
trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties
trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties
trunk/suiviobsmer-ui/src/main/webapp/BoatActivityCalendar.tml
trunk/suiviobsmer-ui/src/main/webapp/Boats.tml
trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
trunk/suiviobsmer-ui/src/main/webapp/css/boats.css
trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css
Log:
- Clean filters managment (replace js onChange event on selects by submit buttons)
- Clean imports + resolve issues on "INA" in ActivityCalendar and missing PLAN_COMMENT header
- Add back link from ActivityCalendar page
- Use ContactDataSource to refresh contacts grid
Modified: trunk/changelog.txt
===================================================================
--- trunk/changelog.txt 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/changelog.txt 2010-01-23 17:59:23 UTC (rev 262)
@@ -4,12 +4,12 @@
0.1.2
-----
-- [fdesbois] Ano #2033 : Problème avec le filtre sur un code de ligne dans les synthèses
+- [fdesbois] Ano #2037 : Le retour depuis les calendriers d'activité ne ramène pas sur le navire sélectionnée (ajout d'un lien retour)
+- [fdesbois] Evol #2036 : Optimiser la pagination des contacts (suppression des tris sur les colonnes du tableau)
+- [fdesbois] Evol #2030, #2038, Ano #2033, #2042 : Revoir la gestion des filtres sur les pages navires, contacts et synthèse
- [fdesbois] Ano #2034 : Mauvais calcul des marées réels
-- [fdesbois] Ano #2042 : Problème sur les filtres de la page contacts (une validation les enlève)
- [fdesbois] Evol #2017 : Permettre la suppression d'un utilisateur non utilisé dans l'application
- [fdesbois] Evol #1959 : Contacts : Popup pour la sasie d'un commentaire sur une ligne
-- [fdesbois] Evol #2030 : Refactoré filtres des navires pour utiliser la partie commune a ceux des contacts et des syntheses
- [fdesbois] Ano #2019 : L'affichage des zones sur le plan d'échantillonnage n'est pas cohérent avec les lignes.
0.1.1
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/pom.xml 2010-01-23 17:59:23 UTC (rev 262)
@@ -207,7 +207,7 @@
<!-- libraries version -->
<nuitonutils.version>1.1.3</nuitonutils.version>
- <topia.version>2.3.0-beta-5</topia.version>
+ <topia.version>2.3.0-beta-6-SNAPSHOT</topia.version>
<eugene.version>2.0.0-beta-3</eugene.version>
<tapestry.version>5.1.0.5</tapestry.version>
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/ImportHelper.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -72,19 +72,19 @@
/** Boat name **/
CARN_NOM(21),
/** Boat length **/
- CARN_LONGUEUR_HT(-1),
+ CARN_LONGUEUR_HT,
/** Boat build year **/
- CARN_ANNEE(-1),
+ CARN_ANNEE,
/** Boat district code **/
QUARTIER_IMMA(22),
/** ShipOwner code **/
- PER_COD(-1),
+ PER_COD,
/** ShipOwner last name **/
- PER_NOM(-1),
+ PER_NOM,
/** ShipOwner first name **/
- PER_PRENOM(-1),
+ PER_PRENOM,
/** Boat active **/
- NAVS_ACTIVE(-1);
+ NAVS_ACTIVE;
int contactHeader;
@@ -92,6 +92,10 @@
this.contactHeader = index;
}
+ BOAT() {
+ this.contactHeader = -1;
+ }
+
@Override
public int forContactCsv() {
return contactHeader;
@@ -132,9 +136,11 @@
/** Profession species **/
METIER_ESPECES(19),
/** SampleRow nb observants **/
- PLAN_NB_OBSERV(-1),
+ PLAN_NB_OBSERV,
/** SampleRow average tide time **/
- PLAN_DUREE_MOY(-1);
+ PLAN_DUREE_MOY,
+ /** SampleRow comment **/
+ PLAN_COMMENT;
int contactHeader;
@@ -142,6 +148,10 @@
this.contactHeader = index;
}
+ SAMPLING() {
+ this.contactHeader = -1;
+ }
+
@Override
public int forContactCsv() {
return contactHeader;
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -22,10 +22,12 @@
package fr.ifremer.suiviobsmer.bean;
import fr.ifremer.suiviobsmer.entity.Contact;
+import fr.ifremer.suiviobsmer.entity.SampleRow;
import fr.ifremer.suiviobsmer.entity.User;
import java.util.ArrayList;
import java.util.List;
import org.nuiton.topia.framework.TopiaQuery;
+import org.nuiton.topia.persistence.TopiaEntity;
/**
* ContactFilterImpl
@@ -47,12 +49,21 @@
if (getObserver() != null) {
query.add(contact + "." + Contact.USER, getObserver());
- } else if (getCompany() != null) {
- query.add(contact + "." + Contact.USER + "." + User.COMPANY, getCompany());
}
+ // Company filter is managed by SamplingFilter cause the company is linked with the sampleRow instead of contact user
+// else if (getCompany() != null) {
+// query.add(contact + "." + Contact.USER + "." + User.COMPANY, getCompany());
+// }
- query = prepareQueryForSampling(query, query.getMainAlias() + "." + Contact.SAMPLE_ROW);
- query = prepareQueryForBoat(query, query.getMainAlias() + "." + Contact.BOAT);
+ if (isSamplingFiltered() || getFromDate() != null) {
+ // Seems to be necessary to have distinct on sampleRows in case of
+ // fishingZone join. Otherwise multiple contacts for sames sampleRow
+ // will be returned (Bad count).
+ TopiaQuery<SampleRow> subquery = TopiaQuery.createQuery(SampleRow.class, "S").setSelect("S").addDistinct();
+ subquery = prepareQueryForSampling(subquery, "S");
+ query.add(contact + "." + Contact.SAMPLE_ROW + " IN (" + subquery.fullQuery() + ")").addParams(subquery.getParams());
+ }
+ query = prepareQueryForBoat(query, contact + "." + Contact.BOAT);
if (getMammalsObservation() && getMammalsCapture()) {
query.add(contact + ".mammalsObservation = :mammals OR " + contact + ".mammalsCapture = :mammals").
@@ -85,6 +96,14 @@
query.add(contact + "." + Contact.STATE, getState().toString());
}
+ if (getFromDate() != null) {
+ String tideBeginDate = contact + "." + Contact.TIDE_BEGIN_DATE;
+ String createDate = contact + "." + TopiaEntity.TOPIA_CREATE_DATE;
+ query.add("(" + tideBeginDate + " IS NOT NULL AND " + tideBeginDate + " >= :fromDate)" +
+ " OR (" + tideBeginDate + " IS NULL AND " + createDate + " >= :fromDate)");
+ query.addParam("fromDate", getFromDate());
+ }
+
return query;
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -52,10 +52,10 @@
query.add(main, getSampleRow());
} else if (StringUtils.isNotEmpty(getSectorName())) {
query.addFrom(FishingZone.class.getName() + " F");
- query.add("F." + FishingZone.SECTOR_NAME, getSectorName()).add(main + " IN elements(F." + FishingZone.SAMPLE_ROW + ")");
+ query.add("F." + FishingZone.SECTOR_NAME, getSectorName()).add("F IN elements(" + main + "." + SampleRow.FISHING_ZONE + ")");
} else if (StringUtils.isNotEmpty(getFacadeName())) {
query.addFrom(FishingZone.class.getName() + " F");
- query.add("F." + FishingZone.FACADE_NAME, getFacadeName()).add(main + " IN elements(F." + FishingZone.SAMPLE_ROW + ")");
+ query.add("F." + FishingZone.FACADE_NAME, getFacadeName()).add("F IN elements(" + main + "." + SampleRow.FISHING_ZONE + ")");
}
// Profession filter
@@ -68,10 +68,16 @@
getPeriod().initDayOfMonthExtremities();
query.add(main + "." + SampleRow.PERIOD_BEGIN, Op.LT, getPeriod().getThruDate()).
add(main + "." + SampleRow.PERIOD_END, Op.GT, getPeriod().getFromDate());
+ } else if (getFromDate() != null) {
+ query.add(main + "." + SampleRow.PERIOD_END, Op.GE, getFromDate());
}
- /** Finished rows constraint only needed if an other filter is set **/
- if (isSamplingFiltered() && getNbMonthFinishedFromToday() != null) {
+ // Company
+ if (getCompany() != null) {
+ query.add(main + "." + SampleRow.COMPANY, getCompany());
+ }
+
+ if (getNbMonthFinishedFromToday() != null) {
// Only rows which are not finished will be kept
// Date current = SuiviObsmerContext.getCurrentDate();
Calendar calendar = new GregorianCalendar();
@@ -85,6 +91,7 @@
@Override
public boolean isSamplingFiltered() {
+ // all field except fromDate
return getSampleRow() != null || StringUtils.isNotEmpty(getSectorName()) || StringUtils.isNotEmpty(getFacadeName()) ||
getPeriod() != null || getProfession() != null;
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactState.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactState.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/states/ContactState.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -91,7 +91,7 @@
* changing state.
* @param context Context to manipulate for validation
* @param transitionNum Number of the transaction to validate
- * @return true if the transition is validate, false either
+ * @return true if the transition is validate, false otherwise
* @throws ContactStateException
*/
protected boolean validate(ContactContext context, int transitionNum) throws ContactStateException {
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/BoatImpl.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -52,7 +52,7 @@
* The state is tested for the last created contact.
* A new contact can be created only if the last state is final and is not 'Refus définitif'.
* @param company which is the creator of the contact
- * @return true if the contact can be created, false either
+ * @return true if the contact can be created, false otherwise
* @throws SuiviObsmerException
*/
@Override
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -55,7 +55,7 @@
/**
* Get a SampleMonth from a date. The month and year of the date must correspond to the SampleMonth to get.
* @param date a Date
- * @return the SampleMonth if it exists in the SampleMonth list or null either
+ * @return the SampleMonth if it exists in the SampleMonth list or null otherwise
*/
@Override
public SampleMonth getSampleMonth(Date date) {
@@ -124,7 +124,7 @@
* Check if the sampleRow has an ElligibleBoat corresponding to the boat in argument.
* The test return true only if it's a global ElligbleBoat set by an admin and not by a user (companyActive).
* @param boat Boat to test
- * @return true if the ElligibleBoat is find, false either
+ * @return true if the ElligibleBoat is find, false otherwise
*/
@Override
public boolean hasElligibleBoat(Boat boat) {
@@ -188,7 +188,7 @@
/**
* Check if SampleMonth of the SampleRow has already realTidesValue set (different from 0).
* It means the SampleRow could'nt be deleted and have some modification constraints.
- * @return true if a SampleMonth have realTidesValue, false either
+ * @return true if a SampleMonth have realTidesValue, false otherwise
*/
@Override
public boolean hasSampleMonthRealTideTime() {
@@ -253,7 +253,7 @@
* Check if a SampleMonth is valid for the date in argument.
*
* @param begin date for testing SampleMonth existence
- * @return true if a SampleMonth exist for this begin date, false either
+ * @return true if a SampleMonth exist for this begin date, false otherwise
*/
@Override
public boolean isValid(Date begin) {
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -216,9 +216,8 @@
}
//String harbourCode = reader.get("SYNA_POR_COD").trim();
- String harbourCode = ImportHelper.read(reader, ACTIVITY_CALENDAR.SYNA_POR_COD);
- boolean active = harbourCode != null && !harbourCode.equals("INA");
- // FIXME-FD20100122 : INA a tester sur le code du métier : YOUPI ONE
+ String professionCode = ImportHelper.read(reader, ACTIVITY_CALENDAR.MET_COD);
+ boolean active = professionCode != null && !professionCode.equals("INA");
ActivityMonth month = calendar.getActivityMonth(monthNum);
@@ -258,6 +257,7 @@
Integer nbBoardingPersons = ImportHelper.readInteger(reader, ACTIVITY_CALENDAR.SYNA_NOMHE);
int harbourId = ImportHelper.readInt(reader, ACTIVITY_CALENDAR.SYNA_TPOR_COD);
+ String harbourCode = ImportHelper.read(reader, ACTIVITY_CALENDAR.SYNA_POR_COD);
String harbourLibelle = ImportHelper.read(reader, ACTIVITY_CALENDAR.SYNA_POR_LIB);
month.setHarbourId(harbourId);
@@ -274,7 +274,6 @@
// Can be equals to -1 if set to NA in Csv File (not a problem for ordering Profession)
int professionOrder = ImportHelper.readInt(reader, ACTIVITY_CALENDAR.META_ORDRE);
- String professionCode = ImportHelper.read(reader, ACTIVITY_CALENDAR.MET_COD);
int professionId = ImportHelper.readInt(reader, ACTIVITY_CALENDAR.MET_ID);
String professionLibelle = ImportHelper.read(reader, ACTIVITY_CALENDAR.MET_LIB);
@@ -334,6 +333,8 @@
transaction.commitTransaction();
availableCalendars.clear();
+ // Force garbage collector
+ System.gc();
tic2 = System.currentTimeMillis();
if (log.isDebugEnabled()) {
@@ -348,9 +349,6 @@
long stopTime = System.currentTimeMillis();
- // Force garbage collector
- System.gc();
-
String execTime = DurationFormatUtils.formatDurationHMS(stopTime - startTime);
info("Nombre de ligne ajouté : " + result, -1);
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -109,13 +109,8 @@
protected TopiaQuery<Boat> createQueryForBoatFilter(TopiaQuery<Boat> query, BoatFilter filter) {
String main = query.getMainAlias();
- query = filter.prepareQueryForBoat(query, main);
+ query = filter.prepareQueryForBoat(query, main).addDistinct();
-// boolean sampleRowCodeFiltered = !StringUtils.isEmpty(filter.getSampleRowCode());
-// boolean professionFiltered = filter.getProfession() != null;
-// boolean fishingZoneFiltered = filter.getFishingZone() != null;
-// boolean sampleRowFiltered = sampleRowCodeFiltered || professionFiltered || fishingZoneFiltered;
-
// Sampling filter
if (filter.isSamplingFiltered()) {
// Add join for ElligibleBoat
@@ -125,21 +120,13 @@
// Company
if (filter.getCompany() != null) {
- query.add("E." + ElligibleBoat.SAMPLE_ROW + "." + SampleRow.COMPANY, filter.getCompany());
+ //query.add("E." + ElligibleBoat.SAMPLE_ROW + "." + SampleRow.COMPANY, filter.getCompany());
// Test only valid ElligibleBoat for that company
query.add("E." + ElligibleBoat.COMPANY_ACTIVE + " = :booleanTrue " +
"OR (E." + ElligibleBoat.COMPANY_ACTIVE + " IS NULL AND E." + ElligibleBoat.GLOBAL_ACTIVE + " = :booleanTrue)");
query.addParam("booleanTrue", Boolean.TRUE);
}
}
-// // SampleRowCode
-// if (sampleRowCodeFiltered) {
-// query.add("E.sampleRow.code", filter.getSampleRowCode());
-// }
-// // Profession
-// if (professionFiltered) {
-// query.add("E.sampleRow.profession", filter.getProfession());
-// }
return query;
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -100,7 +100,7 @@
ContactDAO dao = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
- TopiaQuery<Contact> query = dao.createQuery("C");
+ TopiaQuery<Contact> query = dao.createQuery("C").addDistinct();
query = filter.prepareQueryForContact(query);
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImpl.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImpl.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -30,6 +30,8 @@
import fr.ifremer.suiviobsmer.entity.FishingZoneDAO;
import fr.ifremer.suiviobsmer.entity.Profession;
import fr.ifremer.suiviobsmer.entity.ProfessionDAO;
+import fr.ifremer.suiviobsmer.entity.SampleRow;
+import fr.ifremer.suiviobsmer.entity.User;
import fr.ifremer.suiviobsmer.services.ServiceReferential;
import java.io.InputStream;
import java.nio.charset.Charset;
@@ -64,15 +66,23 @@
}
@Override
- public List<String> getFacades() throws SuiviObsmerException {
+ public List<String> getFacadesByUser(User user) throws SuiviObsmerException {
TopiaContext transaction = null;
List<String> results = new ArrayList<String>();
try {
transaction = rootContext.beginTransaction();
FishingZoneDAO dao = SuiviObsmerModelDAOHelper.getFishingZoneDAO(transaction);
- results = (List<String>)dao.createQuery().setSelect("DISTINCT " + FishingZone.FACADE_NAME).execute();
+ TopiaQuery<FishingZone> query = dao.createQuery("F");
+ if (!user.getAdmin()) {
+ query.addFrom(SampleRow.class.getName() + " S").
+ add("S IN elements(F." + FishingZone.SAMPLE_ROW + ")").
+ add("S." + SampleRow.COMPANY, user.getCompany());
+ }
+
+ results = (List<String>)query.setSelect("DISTINCT F." + FishingZone.FACADE_NAME).execute();
+
transaction.closeContext();
} catch (Exception eee) {
SuiviObsmerContext.serviceException(transaction, "Impossible de charger la liste des facades", eee);
@@ -81,20 +91,26 @@
}
@Override
- public List<String> getSectors(String facadeName) throws SuiviObsmerException {
+ public List<String> getSectorsByUser(User user, String facadeName) throws SuiviObsmerException {
TopiaContext transaction = null;
List<String> results = new ArrayList<String>();
try {
transaction = rootContext.beginTransaction();
FishingZoneDAO dao = SuiviObsmerModelDAOHelper.getFishingZoneDAO(transaction);
- TopiaQuery<FishingZone> query = dao.createQuery();
+ TopiaQuery<FishingZone> query = dao.createQuery("F");
+ if (!user.getAdmin()) {
+ query.addFrom(SampleRow.class.getName() + " S").
+ add("S IN elements(F." + FishingZone.SAMPLE_ROW + ")").
+ add("S." + SampleRow.COMPANY, user.getCompany());
+ }
+
if (!StringUtils.isEmpty(facadeName)) {
- query.add(FishingZone.FACADE_NAME, facadeName);
+ query.add("F." + FishingZone.FACADE_NAME, facadeName);
}
- results = (List<String>)query.setSelect("DISTINCT " + FishingZone.SECTOR_NAME).execute();
+ results = (List<String>)query.setSelect("DISTINCT F." + FishingZone.SECTOR_NAME).execute();
transaction.closeContext();
} catch (Exception eee) {
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -341,19 +341,23 @@
SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
- TopiaQuery<SampleRow> query = dao.createQuery("S");
+ TopiaQuery<SampleRow> query = dao.createQuery("S").addDistinct().addOrder("S." + SampleRow.CODE);
query = filter.prepareQueryForSampling(query, "S");
+ if (log.isDebugEnabled()) {
+ log.debug("Query : " + query);
+ }
+
// if (finished) {
// // Only rows which are not finished will be kept
// Date current = SuiviObsmerContext.getCurrentDate();
// query.add(SampleRow.PERIOD_END, Op.GE, current);
// }
- if (filter.getCompany() != null) {
- query.add("S." + SampleRow.COMPANY, filter.getCompany());
- }
+// if (filter.getCompany() != null) {
+// query.add("S." + SampleRow.COMPANY, filter.getCompany());
+// }
results = query.executeToEntityList();
@@ -683,21 +687,22 @@
protected void updateRow(TopiaContext transaction, SampleRow sampleRow, CsvReader reader)
throws IOException, TopiaException, ParseException {
- String fishingZoneInfos = reader.get(SAMPLING.PECHE_AUTRE.name()).trim();
- int nbObservants = Integer.parseInt(reader.get(SAMPLING.PLAN_NB_OBSERV.name()).trim());
- String averageStr = reader.get(SAMPLING.PLAN_DUREE_MOY.name()).trim();
+ String fishingZoneInfos = ImportHelper.read(reader, SAMPLING.PECHE_AUTRE);
+ int nbObservants = ImportHelper.readInt(reader, SAMPLING.PLAN_NB_OBSERV);
+ String averageStr = ImportHelper.read(reader, SAMPLING.PLAN_DUREE_MOY);
averageStr = averageStr.replaceAll(",", ".");
double averageTideTime = Double.parseDouble(averageStr);
- String programName = reader.get(SAMPLING.PROGRAMME_CODE.name()).trim();
+ String programName = ImportHelper.read(reader, SAMPLING.PROGRAMME_CODE);
+ String comment = ImportHelper.read(reader, SAMPLING.PLAN_COMMENT);
PeriodDates period = ImportHelper.readPeriod(reader, SAMPLING.PROGRAMME_DEBUT, SAMPLING.PROGRAMME_FIN);
- // Problem : not imported yet ??
sampleRow.setFishingZonesInfos(fishingZoneInfos);
sampleRow.setNbObservants(nbObservants);
sampleRow.setAverageTideTime(averageTideTime);
sampleRow.setProgramName(programName);
sampleRow.setPeriodBegin(period.getFromDate());
sampleRow.setPeriodEnd(period.getThruDate());
+ sampleRow.setComment(comment);
// 16 fixed columns : 13 before months and 3 after
final int nbFixedColumns = 16;
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -111,9 +111,9 @@
// }
// }
- if (filter.getCompany() != null) {
- query.add("M." + SampleMonth.SAMPLE_ROW + "." + SampleRow.COMPANY, filter.getCompany());
- }
+// if (filter.getCompany() != null) {
+// query.add("M." + SampleMonth.SAMPLE_ROW + "." + SampleRow.COMPANY, filter.getCompany());
+// }
if (log.isTraceEnabled()) {
log.trace("Exec query : " + query);
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImplTest.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceReferentialImplTest.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -25,6 +25,8 @@
import fr.ifremer.suiviobsmer.SuiviObsmerRunner;
import fr.ifremer.suiviobsmer.business.SuiviObsmerRunnerTest;
import fr.ifremer.suiviobsmer.entity.FishingZone;
+import fr.ifremer.suiviobsmer.entity.User;
+import fr.ifremer.suiviobsmer.entity.UserImpl;
import java.io.InputStream;
import java.util.List;
import org.junit.After;
@@ -80,8 +82,10 @@
InputStream input = getClass().getResourceAsStream("/import/zonesPeche.csv");
service.importFishingZoneCsv(input);
+ User user = new UserImpl();
+ user.setAdmin(true);
- List<String> facades = service.getFacades();
+ List<String> facades = service.getFacadesByUser(user);
assertEquals(3, facades.size());
assertTrue(facades.contains("Atlantique"));
assertTrue(facades.contains("Mer du Nord"));
@@ -94,8 +98,10 @@
InputStream input = getClass().getResourceAsStream("/import/zonesPeche.csv");
service.importFishingZoneCsv(input);
+ User user = new UserImpl();
+ user.setAdmin(true);
- List<String> sectors = service.getSectors(null);
+ List<String> sectors = service.getSectorsByUser(user, null);
assertEquals(5, sectors.size());
assertTrue(sectors.contains("Manche"));
assertTrue(sectors.contains("Mer du Nord"));
@@ -103,7 +109,7 @@
assertTrue(sectors.contains("Golfe de Gascogne"));
assertTrue(sectors.contains("Méditerranée"));
- sectors = service.getSectors("Atlantique");
+ sectors = service.getSectorsByUser(user, "Atlantique");
assertEquals(2, sectors.size());
assertTrue(sectors.contains("Manche Ouest"));
assertTrue(sectors.contains("Golfe de Gascogne"));
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-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -34,11 +34,9 @@
import java.util.List;
import org.apache.tapestry5.OptionModel;
import org.apache.tapestry5.SelectModel;
-import org.apache.tapestry5.annotations.Log;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;
-import org.apache.tapestry5.corelib.components.Zone;
import org.apache.tapestry5.internal.OptionModelImpl;
import org.apache.tapestry5.internal.SelectModelImpl;
import org.apache.tapestry5.ioc.annotations.Inject;
@@ -134,17 +132,6 @@
*/
protected void initSelectFilters(boolean companySelect, boolean observerSelect) throws SuiviObsmerException {
- if (log.isDebugEnabled()) {
- log.debug("Filters : " + getFilter());
- }
-
- facadeSelectModel = null;
- getFacadeSelectModel();
- sectorSelectModel = null;
- getSectorSelectModel();
- sampleRowSelectModel = null;
- getSampleRowSelectModel();
-
if (getFilter().getSampleRow() != null) {
if (log.isDebugEnabled()) {
log.debug("SampleRow filtered : " + getFilter().getSampleRow());
@@ -173,15 +160,34 @@
observerId = getFilter().getObserver().getTopiaId();
}
}
+
+ resetFacadeSelect();
+ resetSectorSelect();
+ resetSampleRowSelect();
}
+ protected void resetFacadeSelect() throws SuiviObsmerException {
+ facadeSelectModel = null;
+ getFacadeSelectModel();
+ }
+
+ protected void resetSectorSelect() throws SuiviObsmerException {
+ sectorSelectModel = null;
+ getSectorSelectModel();
+ }
+
+ protected void resetSampleRowSelect() throws SuiviObsmerException {
+ sampleRowSelectModel = null;
+ getSampleRowSelectModel();
+ }
+
public SelectModel getFacadeSelectModel() throws SuiviObsmerException {
if (facadeSelectModel == null) {
if (log.isInfoEnabled()) {
log.info("BUSINESS REQUEST [getFacades]");
}
List<OptionModel> options = new ArrayList<OptionModel>();
- for (String facadeName : serviceReferential.getFacades()) {
+ for (String facadeName : serviceReferential.getFacadesByUser(user)) {
options.add(new OptionModelImpl(facadeName,facadeName));
}
facadeSelectModel = new SelectModelImpl(null, options);
@@ -195,7 +201,7 @@
log.info("BUSINESS REQUEST [getSectors]");
}
List<OptionModel> options = new ArrayList<OptionModel>();
- for (String sectorName : serviceReferential.getSectors(getFilter().getFacadeName())) {
+ for (String sectorName : serviceReferential.getSectorsByUser(user, getFilter().getFacadeName())) {
options.add(new OptionModelImpl(sectorName,sectorName));
}
sectorSelectModel = new SelectModelImpl(null, options);
@@ -259,7 +265,7 @@
/**
* Used to show only active company and observers.
*
- * @return true if only active users will be showed, false either
+ * @return true if only active users will be showed, false otherwise
*/
protected abstract boolean getAvailableDataForFiltersOnly();
@@ -314,10 +320,39 @@
if (user.getAdmin()) {
Company company = getCompanySelectModel().findObject(companyId);
getFilter().setCompany(company);
+ } else {
+ getFilter().setCompany(user.getCompany());
}
User observer = getObserverSelectModel().findObject(observerId);
getFilter().setObserver(observer);
}
+
+ private boolean edited;
+
+ public void onSelectedFromRefreshByFacade() throws SuiviObsmerException {
+ getFilter().setSectorName(null);
+ onSelectedFromRefreshBySector();
+ resetSectorSelect();
+ }
+
+ public void onSelectedFromRefreshBySector() throws SuiviObsmerException {
+ onSelectedFromSearch();
+ getFilter().setSampleRow(null);
+ resetSampleRowSelect();
+ edited = true;
+ }
+
+ public void onSelectedFromRefreshByCompany() throws SuiviObsmerException {
+ onSelectedFromSearch();
+ getFilter().setObserver(null);
+ observerSelectModel = null;
+ getObserverSelectModel();
+ edited = true;
+ }
+
+ protected boolean isEdited() {
+ return edited;
+ }
}
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/AbstractMappedGridDataSource.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/AbstractMappedGridDataSource.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/AbstractMappedGridDataSource.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -56,8 +56,8 @@
if (nbRows < 0) {
try {
nbRows = count();
- if (log.isDebugEnabled()) {
- log.debug("Count : " + nbRows);
+ if (log.isTraceEnabled()) {
+ log.trace("Count : " + nbRows);
}
} catch (SuiviObsmerException eee) {
throw new TapestryException("", eee);
@@ -68,8 +68,8 @@
@Override
public void prepare(int startIndex, int endIndex, List<SortConstraint> sortConstraints) {
- if (log.isDebugEnabled()) {
- log.debug("Prepare results : " + startIndex + ", " + endIndex);
+ if (log.isTraceEnabled()) {
+ log.trace("Prepare results : " + startIndex + ", " + endIndex);
}
nbRowsPerPage = endIndex - startIndex + 1;
try {
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -156,6 +156,14 @@
return result-1;
}
+ /** Hack for pagelink to Boats page
+ *
+ * @return null
+ */
+ public String getNorow() {
+ return null;
+ }
+
// public boolean hasZones() {
// return getZoneIndexMax() != -1;
// }
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -31,14 +31,12 @@
import fr.ifremer.suiviobsmer.entity.Company;
import fr.ifremer.suiviobsmer.entity.Contact;
import fr.ifremer.suiviobsmer.entity.ElligibleBoat;
-import fr.ifremer.suiviobsmer.entity.FishingZone;
import fr.ifremer.suiviobsmer.entity.Profession;
import fr.ifremer.suiviobsmer.entity.SampleRow;
import fr.ifremer.suiviobsmer.entity.User;
import fr.ifremer.suiviobsmer.services.ServiceBoat;
import fr.ifremer.suiviobsmer.services.ServiceReferential;
import fr.ifremer.suiviobsmer.services.ServiceSampling;
-import fr.ifremer.suiviobsmer.services.ServiceUser;
import fr.ifremer.suiviobsmer.ui.base.AbstractFilteredPage;
import fr.ifremer.suiviobsmer.ui.data.BusinessUtils;
import fr.ifremer.suiviobsmer.ui.base.GenericSelectModel;
@@ -68,7 +66,6 @@
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;
-import org.apache.tapestry5.corelib.components.Form;
import org.apache.tapestry5.corelib.components.Zone;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.services.PropertyAccess;
@@ -120,6 +117,10 @@
@Property
private String sampleRowContextId;
+ /** Selected boat immatriculation for showing boatInfos */
+ @Property
+ private Integer boatSelectedImmatriculation;
+
@InjectComponent
private FeedBack filterFeedback;
@@ -142,21 +143,22 @@
// Initialize filters using AbstractFilteredPage superclass
initSelectFilters(true, false);
- // Only rows which are not finished nearly one month
- getFilter().setNbMonthFinishedFromToday(-1);
companyBoatInfos = null;
- boatSelectedImmatriculation = null;
+ //boatSelectedImmatriculation = null;
}
void onActivate(EventContext ec) {
if (ec.getCount() > 0) {
sampleRowContextId = ec.get(String.class, 0);
+ if (ec.getCount() > 1) {
+ boatSelectedImmatriculation = ec.get(Integer.class, 1);
+ }
}
}
- String onPassivate() {
- return sampleRowContextId;
+ Object[] onPassivate() {
+ return new Object[] { sampleRowContextId, boatSelectedImmatriculation };
}
/**************************** Import Forms ********************************/
@@ -277,7 +279,12 @@
@Override
public BoatFilter getFilter() throws SuiviObsmerException {
if (boatFilter == null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Create filter");
+ }
boatFilter = new BoatFilterImpl();
+ // Only rows which are not finished nearly one month
+ boatFilter.setNbMonthFinishedFromToday(-1);
}
return boatFilter;
}
@@ -374,15 +381,20 @@
/**
* EVENT_SUCCESS :: for filtersForm. Reset persitant data to have new data using filters selected.
*
+ * @return the filtersZone if it's a refresh data for select, or the page otherwise
* @throws SuiviObsmerException for business errors
*/
- void onSuccessFromFiltersForm() throws SuiviObsmerException {
+ Object onSuccessFromFiltersForm() throws SuiviObsmerException {
+ if (isEdited()) {
+ return filtersZone.getBody();
+ }
// Suppress persistant boats list to get new one with filter
boats = null;
// Suppress persistant immatriculation for boat selected
boatSelectedImmatriculation = null;
// Suppress persistant boat informations for boat selected
companyBoatInfos = null;
+ return this;
}
/**************************** Boats List *****************************************/
@@ -392,9 +404,9 @@
private BoatDataSource boats;
/** Selected boat immatriculation for showing boatInfos */
- @Property
- @Persist
- private Integer boatSelectedImmatriculation;
+// @Property
+// @Persist
+// private Integer boatSelectedImmatriculation;
/** Current boat in the Grid */
@Property
@@ -477,7 +489,7 @@
private ElligibleBoat elligibleBoat;
@Property
- private String boatInfosSampleRowCode;
+ private String boatInfosSampleRowId;
private boolean boatInfosEditable;
@@ -603,8 +615,13 @@
return boatInfosZone.getBody();
}
- Block onActionFromEditBoatInfos() {
+ Block onActionFromEditBoatInfos() throws SuiviObsmerException {
boatInfosEditable = true;
+ // WARNING :: Reset sampleRow select for edition mode, no limit for
+ // showing sampleRows instead of filters
+ getFilter().setNbMonthFinishedFromToday(null);
+ resetSampleRowSelect();
+ getFilter().setNbMonthFinishedFromToday(-1);
return boatInfosZone.getBody();
}
@@ -625,8 +642,8 @@
void onSelectedFromAddBoatInfosSampleRow() throws SuiviObsmerException {
// We stay in edition mode
boatInfosEditable = true;
- if (!StringUtils.isEmpty(boatInfosSampleRowCode)) {
- SampleRow row = getSampleRowSelectModel().findObject(boatInfosSampleRowCode);
+ if (StringUtils.isNotEmpty(boatInfosSampleRowId)) {
+ SampleRow row = getSampleRowSelectModel().findObject(boatInfosSampleRowId);
companyBoatInfos.setNewElligibleBoat(row);
}
}
@@ -671,7 +688,8 @@
// Get selected boat from BoatInfos
boat = getBoatInfos().getBoat();
// Get sampleRow from elligibleBoat list
- sampleRow = getSampleRowSelectModel().findObject(sampleRowCode);
+ ElligibleBoat elligible = getCompanyBoatInfos().getElligibleBoat(sampleRowCode);
+ sampleRow = elligible.getSampleRow();
contacts.createNewContact(boat, sampleRow);
return contacts;
}
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -49,7 +49,6 @@
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
-import java.util.Map;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.tapestry5.ComponentResources;
@@ -70,6 +69,7 @@
import org.apache.tapestry5.services.BeanModelSource;
import org.apache.tapestry5.services.Response;
import org.apache.tapestry5.upload.services.UploadedFile;
+import org.nuiton.util.DateUtils;
import org.slf4j.Logger;
/**
@@ -150,9 +150,15 @@
private boolean reset;
+ @Property
+ private ContactState stateFilter;
+
public ContactFilter getContactFilter() throws SuiviObsmerException {
if (contactFilter == null) {
contactFilter = new ContactFilterImpl();
+ // Initialized to 12 months before the current day
+ Date fromDate = DateUtils.createDateAfterToday(0, -12, 0);
+ contactFilter.setFromDate(fromDate);
}
return contactFilter;
}
@@ -162,25 +168,11 @@
return getContactFilter();
}
-// @Override
-// protected Zone getSampleRowFilterZone() {
-// return filtersZone;
-// }
-//
-// @Override
-// protected Zone getObserverFilterZone() {
-// return filtersZone;
-// }
-
@Override
protected boolean getAvailableDataForFiltersOnly() {
return true;
}
- void onSuccessFromSearchBoat() {
-
- }
-
Object onActionFromShowFilters() {
contactFilter = null;
return filtersZone.getBody();
@@ -195,13 +187,14 @@
}
@Log
- void onSuccessFromFiltersForm() throws SuiviObsmerException {
+ Object onSuccessFromFiltersForm() throws SuiviObsmerException {
+ if (isEdited()) {
+ return filtersZone.getBody();
+ }
if (reset) {
contactFilter = null;
- filtersVisible = false;
- } else {
- filtersVisible = true;
}
+ return this;
}
/**************************** CONTACT IMPORT/EXPORT ***********************/
@@ -264,8 +257,8 @@
private ContactModelFactory contactModelFactory;
@Persist
-// private ContactDataSource contacts;
- private Map<String, Contact> contacts;
+ private ContactDataSource contacts;
+// private Map<String, Contact> contacts;
@Property
private Contact contact;
@@ -285,26 +278,26 @@
private boolean even = true;
-// public ContactDataSource getContacts() throws SuiviObsmerException {
-// if (contacts == null) {
-// if (log.isInfoEnabled()) {
-// log.info("Create DataSource");
-// }
-// contacts = new ContactDataSource(getContactFilter(), serviceContact);
-// }
-// return contacts;
-// }
-
- public Map<String, Contact> getContacts() throws SuiviObsmerException {
+ public ContactDataSource getContacts() throws SuiviObsmerException {
if (contacts == null) {
if (log.isInfoEnabled()) {
- log.info("BUSINESS REQUEST [getContactsByFilter]");
+ log.info("Create DataSource");
}
- contacts = serviceContact.getContactsByFilter(getContactFilter());
+ contacts = new ContactDataSource(getContactFilter(), serviceContact);
}
return contacts;
}
+// public Map<String, Contact> getContacts() throws SuiviObsmerException {
+// if (contacts == null) {
+// if (log.isInfoEnabled()) {
+// log.info("BUSINESS REQUEST [getContactsByFilter]");
+// }
+// contacts = serviceContact.getContactsByFilter(getContactFilter());
+// }
+// return contacts;
+// }
+
public BeanModel<Contact> getContactModel() {
if (contactModel == null) {
contactModel = user.getAdmin() ?
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-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -87,11 +87,8 @@
private BoatFilter dataSamplingFilter;
@InjectComponent
- private Zone sampleRowZone;
+ private Zone filtersZone;
- @InjectComponent
- private Zone observerZone;
-
@Persist
private ChartType dataSamplingChartType;
@@ -113,16 +110,6 @@
return dataSamplingFilter;
}
-// @Override
-// protected Zone getSampleRowFilterZone() {
-// return sampleRowZone;
-// }
-//
-// @Override
-// protected Zone getObserverFilterZone() {
-// return observerZone;
-// }
-
@Override
protected boolean getAvailableDataForFiltersOnly() {
return false;
@@ -167,10 +154,14 @@
reset = true;
}
- void onSuccessFromFiltersForm() {
+ Object onSuccessFromFiltersForm() {
+ if (isEdited()) {
+ return filtersZone.getBody();
+ }
if (reset) {
dataSamplingFilter = null;
}
+ return this;
}
}
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/ContactModelFactory.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/ContactModelFactory.java 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/services/ContactModelFactory.java 2010-01-23 17:59:23 UTC (rev 262)
@@ -55,8 +55,10 @@
// New properties for contactModel
contactModel.add("createdBy", null);
- contactModel.add(Contact.SAMPLE_ROW, getSampleRowPropertyConduit());
- contactModel.add(Contact.BOAT, getBoatPropertyConduit());
+// contactModel.add(Contact.SAMPLE_ROW, getSampleRowPropertyConduit());
+// contactModel.add(Contact.BOAT, getBoatPropertyConduit());
+ contactModel.add(Contact.SAMPLE_ROW, null);
+ contactModel.add(Contact.BOAT, null);
contactModel.add("mammals", null);
contactModel.add("validation", null);
contactModel.add("actions", null);
@@ -75,6 +77,14 @@
Contact.COMMENT,
"validation",
"actions");
+
+ contactModel.get(TopiaEntity.TOPIA_CREATE_DATE).sortable(false);
+ contactModel.get(Contact.STATE).sortable(false);
+ contactModel.get(Contact.TIDE_BEGIN_DATE).sortable(false);
+ contactModel.get(Contact.TIDE_END_DATE).sortable(false);
+ contactModel.get(Contact.NB_OBSERVANTS).sortable(false);
+ contactModel.get(Contact.DATA_INPUT_DATE).sortable(false);
+ contactModel.get(Contact.COMMENT).sortable(false);
return contactModel;
}
@@ -93,6 +103,30 @@
contactModel.add(RelativePosition.AFTER, "fishingZoneSector", "fishingZoneDivision", getFishingZoneDivisionPropertyConduit());
contactModel.add(RelativePosition.AFTER, Contact.BOAT, "boatImmatriculation", getBoatImmatriculationPropertyConduit());
contactModel.add(RelativePosition.AFTER, "boatImmatriculation", "boatDistrictCode", getBoatDistrictCodePropertyConduit());
+
+ contactModel.get("observer").sortable(false);
+ contactModel.get(User.COMPANY).sortable(false);
+ contactModel.get("program").sortable(false);
+ contactModel.get("professionCode").sortable(false);
+ contactModel.get("professionLibelle").sortable(false);
+ contactModel.get("professionSpecies").sortable(false);
+ contactModel.get("fishingZoneFacade").sortable(false);
+ contactModel.get("fishingZoneSector").sortable(false);
+ contactModel.get("fishingZoneDivision").sortable(false);
+ contactModel.get("boatImmatriculation").sortable(false);
+ contactModel.get("boatDistrictCode").sortable(false);
+
+// contactModel.add(RelativePosition.AFTER, TopiaEntity.TOPIA_CREATE_DATE, "observer", null);
+// contactModel.add(RelativePosition.AFTER, "observer", User.COMPANY, null);
+// contactModel.add(RelativePosition.AFTER, Contact.SAMPLE_ROW, "program", null);
+// contactModel.add(RelativePosition.AFTER, "program", "professionCode", null);
+// contactModel.add(RelativePosition.AFTER, "professionCode", "professionLibelle", null);
+// contactModel.add(RelativePosition.AFTER, "professionLibelle", "professionSpecies", null);
+// contactModel.add(RelativePosition.AFTER, "professionSpecies", "fishingZoneFacade", null);
+// contactModel.add(RelativePosition.AFTER, "fishingZoneFacade", "fishingZoneSector", null);
+// contactModel.add(RelativePosition.AFTER, "fishingZoneSector", "fishingZoneDivision", null);
+// contactModel.add(RelativePosition.AFTER, Contact.BOAT, "boatImmatriculation", null);
+// contactModel.add(RelativePosition.AFTER, "boatImmatriculation", "boatDistrictCode", null);
return contactModel;
}
Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties
===================================================================
--- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties 2010-01-23 17:59:23 UTC (rev 262)
@@ -2,8 +2,9 @@
activityCalendarsCsvFile-label: Fichier CSV des calendriers d'activit\u00E9
# FILTERS
-sampleRow-label: Ligne du plan
+sampleRow-label: M\u00E9tier
facadeName-label: Fa\u00E7ade
+sectorName-label: Zone
profession-label: M\u00E9tier du plan
boatName-label: Navire
districtCode-label: Quartier
Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties
===================================================================
--- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties 2010-01-23 17:59:23 UTC (rev 262)
@@ -3,6 +3,7 @@
sectorName-label: Secteur
observer-label: Observateur
contactsCsvFile-label: Fichier des contacts
+fromDate-label: Depuis le
# Grid labels
createdBy-label: Observateur
Modified: trunk/suiviobsmer-ui/src/main/webapp/BoatActivityCalendar.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/BoatActivityCalendar.tml 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-ui/src/main/webapp/BoatActivityCalendar.tml 2010-01-23 17:59:23 UTC (rev 262)
@@ -4,6 +4,13 @@
<t:if t:test="activityCalendar">
<h1>Calendrier d'activité ${activityCalendar.year}</h1>
+ <p class="acenter">
+ <a t:type="pagelink" class="return" t:context="[norow,activityCalendar.boat.immatriculation]" t:page="boats" title="Revenir sur les informations du navire">
+ <img src="${asset:context:}/img/boat.png" alt="Navire"/>
+ Retour sur ${activityCalendar.boat.name}
+ <img src="${asset:context:}/img/boat.png" alt="Navire"/>
+ </a>
+ </p>
<table t:type="grid" id="so-activity-calendar-boat" t:source="boats" t:row="boat"
t:include="immatriculation, districtCode, name, boatLength, buildYear" />
Modified: trunk/suiviobsmer-ui/src/main/webapp/Boats.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-01-23 17:59:23 UTC (rev 262)
@@ -65,35 +65,32 @@
</div>
<t:feedback t:id="filterFeedback" />
<div class="so-filters-form ${hiddenStyle}">
- <form t:type="form" t:id="filtersForm">
+ <form t:type="form" t:id="filtersForm" t:zone="so-boats-filters">
<t:errors />
<div class="t-beaneditor">
- <t:beaneditor t:id="filtersEditor" t:object="filter"
- t:include="boatName" t:add="facade, sampleRow, profession" t:reorder="facade, sampleRow, profession, boatName">
- <p:facade>
- <t:label t:for="facadeName" />
- <select t:type="select" t:id="facadeName" t:model="facadeSelectModel" value="filter.facadeName" />
- <span> zone </span>
- <select t:type="select" t:id="sectorName" t:model="sectorSelectModel" value="filter.sectorName" />
- </p:facade>
- <p:sampleRow>
- <t:label t:for="sampleRow" />
- <select t:type="select" t:id="sampleRow" t:disabled="sampleRowExists" t:model="sampleRowSelectModel" value="sampleRowId" />
- </p:sampleRow>
- <p:profession>
- <t:label t:for="profession" />
- <select t:type="select" t:id="profession" t:disabled="sampleRowExists" t:model="professionSelectModel" value="professionId" />
- </p:profession>
- <p:boatName>
- <t:label t:for="boatName" />
- <span> nom </span>
- <input t:type="textfield" t:id="boatName" class="width150" t:value="filter.boatName" t:mixins="Autocomplete" />
- <span> immatriculation </span>
- <input t:type="textfield" t:id="boatImmatriculation" class="width50" t:value="filter.boatImmatriculation" />
- <span> code quartier </span>
- <input t:type="textfield" t:id="boatDistrictCode" class="width50" t:value="filter.boatDistrictCode" />
- </p:boatName>
- </t:beaneditor>
+ <div>
+ <!-- Sampling filter -->
+ <t:label t:for="facadeName" />:
+ <select t:type="select" t:id="facadeName" t:model="facadeSelectModel" value="filter.facadeName" />
+ <input t:type="submit" class="ico22px refresh" t:id="refreshByFacade" value="Refresh"
+ title="Rafraîchir les zones et les métiers en fonction de la façade sélectionnée"/>
+ <t:label t:for="sectorName" />:
+ <select t:type="select" t:id="sectorName" t:model="sectorSelectModel" value="filter.sectorName" />
+ <input t:type="submit" class="ico22px refresh" t:id="refreshBySector" value="Refresh"
+ title="Rafraîchir les métiers en fonction de la zone sélectionnée"/>
+ <t:label t:for="sampleRow" />:
+ <select t:type="select" t:id="sampleRow" t:disabled="sampleRowExists" t:model="sampleRowSelectModel" value="sampleRowId" />
+ </div><p> </p>
+ <div>
+ <!-- Boat filter -->
+ <t:label t:for="boatName" />
+ <span> nom </span>
+ <input t:type="textfield" t:id="boatName" class="width150" t:value="filter.boatName" t:mixins="Autocomplete" />
+ <span> immatriculation </span>
+ <input t:type="textfield" t:id="boatImmatriculation" class="width50" t:value="filter.boatImmatriculation" />
+ <span> code quartier </span>
+ <input t:type="textfield" t:id="boatDistrictCode" class="width50" t:value="filter.boatDistrictCode" />
+ </div>
<div class="t-beaneditor-row aright">
<input t:type="submit" class="ico search-32px" t:id="search" value="Search" />
<input t:type="submit" class="ico undo" t:id="reset" value="Reset" />
@@ -347,7 +344,7 @@
</ul>
<p>
<input t:type="select" t:id="sampleRowSelect" t:model="sampleRowSelectModel"
- t:value="boatInfosSampleRowCode"/>
+ t:value="boatInfosSampleRowId"/>
<input t:type="submit" t:id="addBoatInfosSampleRow" class="ico add" value="Add"
t:title="Associer à une ligne du plan" />
</p>
@@ -361,9 +358,4 @@
</t:if>
</div>
- <!-- Script for filters change -->
- <script type="text/javascript">
- Event.observe('facadeName', 'change', function() { $('filtersForm').submit(); } );
- Event.observe('sectorName', 'change', function() { $('filtersForm').submit(); } );
- </script>
</t:layout>
Modified: trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-23 17:59:23 UTC (rev 262)
@@ -23,21 +23,28 @@
<fieldset>
<legend>Recherche avancée</legend>
<div class="so-filters-form">
- <form t:type="form" t:id="filtersForm">
+ <form t:type="form" t:id="filtersForm" t:zone="so-contacts-filters">
<t:errors />
<div class="t-beaneditor">
<div>
+ <!-- Boat filter -->
<label>Navire </label>
<t:label t:for="boatImmatriculation" />:
<input t:type="textfield" t:id="boatImmatriculation" class="width50" t:value="contactFilter.boatImmatriculation" />
<t:label t:for="boatDistrictCode" />:
<input t:type="textfield" t:id="boatDistrictCode" class="width50" t:value="contactFilter.boatDistrictCode" />
+ <!-- Sampling filter -->
<t:label t:for="facadeName" />:
<select t:type="select" t:id="facadeName" t:model="facadeSelectModel" value="contactFilter.facadeName" />
+ <input t:type="submit" class="ico22px refresh" t:id="refreshByFacade" value="Refresh"
+ title="Rafraîchir les zones et les métiers en fonction de la façade sélectionnée"/>
<t:label t:for="sectorName" />:
<select t:type="select" t:id="sectorName" t:model="sectorSelectModel" value="contactFilter.sectorName" />
+ <input t:type="submit" class="ico22px refresh" t:id="refreshBySector" value="Refresh"
+ title="Rafraîchir les métiers en fonction de la zone sélectionnée"/>
<t:label t:for="sampleRow" />:
<input t:type="select" t:id="sampleRow" t:model="sampleRowSelectModel" value="sampleRowId" />
+ <!-- Contact filter -->
<label>Mammifères: </label>
<input t:type="checkbox" t:id="mammalsObservation1" value="contactFilter.mammalsObservation" />
<t:label t:for="mammalsObservation1">
@@ -49,12 +56,20 @@
</t:label>
</div><p> </p>
<div>
+ <t:label t:for="fromDate" />:
+ <input t:type="datefield" class="width70" t:id="fromDate" value="contactFilter.fromDate" />
<t:if t:test="user.admin">
<t:label t:for="company" />:
<input t:type="select" t:id="company" t:model="companySelectModel" value="companyId"/>
+ <input t:type="submit" class="ico22px refresh" t:id="refreshByCompany" value="Refresh"
+ title="Rafraîchir les observateurs en fonction de la société sélectionnée"/>
</t:if>
<t:label t:for="observer" />:
- <input t:type="select" t:id="observer" t:model="observerSelectModel" value="observerId" />
+ <select t:type="select" t:id="observer" t:model="observerSelectModel" value="observerId" />
+ </div><p> </p>
+ <div>
+ <t:label t:for="state" />:
+ <select t:type="select" t:id="state" value="contactFilter.state"/>
<label>Validation société: </label>
<input t:type="checkbox" t:id="companyAccepted" value="contactFilter.companyAccepted" />
<t:label t:for="companyAccepted">
@@ -112,7 +127,7 @@
<t:zone t:id="gridZone" t:update="show">
<form t:type="form" t:id="contactsForm" t:zone="gridZone">
<t:errors id="so-contact-form-errors" t:banner="message:contactsForm-errors-banner"/>
- <div t:type="grid" t:source="contacts.values()" t:row="contact" class="t-data-grid ${gridClass}" t:model="contactModel" t:rowClass="prop:rowClass"
+ <div t:type="grid" t:source="contacts" t:row="contact" class="t-data-grid ${gridClass}" t:model="contactModel" t:rowClass="prop:rowClass"
t:rowsPerPage="20">
<p:createdByCell>
<t:if t:test="editionMode">
@@ -215,7 +230,7 @@
<img src="${asset:context:}/img/comment-22px.png" alt="Add comment" />
</a>
</span>
- <textarea t:type="textarea" t:id="comment" class="hidden-textarea" cols="0" rows="0" value="contact.comment" />
+ <textarea t:type="textarea" t:id="comment" class="hidden" value="contact.comment" />
<div t:type="ck/Window" t:id="windowComment" show="false" modal="true"
title="literal:Ajouter un commentaire" width="488" height="210">
@@ -279,14 +294,5 @@
</div>
</form>
</t:zone>
-<script type="text/javascript">
- Event.observe('facadeName', 'change', function() { $('filtersForm').submit(); } );
- Event.observe('sectorName', 'change', function() { $('filtersForm').submit(); } );
-</script>
-<t:if t:test="user.admin">
- <script type="text/javascript">
- Event.observe('company', 'change', function() { $('filtersForm').submit(); } );
- </script>
- </t:if>
</t:layout>
Modified: trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-01-23 17:59:23 UTC (rev 262)
@@ -46,9 +46,9 @@
<div class="acenter" id="so-datasampling">
<fieldset>
<legend>Filtres</legend>
- <div class="so-filters-form">
+ <div t:type="zone" t:id="filtersZone" class="so-filters-form" id="so-datasampling-filters" t:update="show">
<!--<div t:type="zone" t:id="dataSamplingFiltersZone" t:update="show" id="so-datasampling-filters">-->
- <form t:type="form" t:id="filtersForm">
+ <form t:type="form" t:id="filtersForm" t:zone="so-datasampling-filters">
<t:errors />
<div class="t-beaneditor">
<div class="filterRow">
@@ -60,33 +60,25 @@
</div>
<div class="filterRow" t:type="zone" t:id="sampleRowZone" t:update="show">
<t:label t:for="facadeName" />:
- <select t:type="select" t:id="facadeName" t:model="facadeSelectModel" value="filter.facadeName"
- />
+ <select t:type="select" t:id="facadeName" t:model="facadeSelectModel" value="filter.facadeName" />
+ <input t:type="submit" class="ico22px refresh" t:id="refreshByFacade" value="Refresh"
+ title="Rafraîchir les zones et les métiers en fonction de la façade sélectionnée"/>
<t:label t:for="sectorName" />:
<select t:type="select" t:id="sectorName" t:model="sectorSelectModel" value="filter.sectorName" />
- <t:label t:for="sampleRow" />:
- <input t:type="select" t:id="sampleRow" t:model="sampleRowSelectModel" value="sampleRowId" />
+ <input t:type="submit" class="ico22px refresh" t:id="refreshBySector" value="Refresh"
+ title="Rafraîchir les métiers en fonction de la zone sélectionnée"/>
+
<!--<t:label t:for="program" />:
<input t:type="select" t:id="program" t:model="programSelectModel" value="programId" />-->
</div>
-<!-- <div class="filterRow">
- <label>Navire: </label>
- <t:label t:for="boatName" />:
- <input t:type="textfield" t:id="boatName" t:value="filter.boatName" t:mixins="Autocomplete" />
- <t:label t:for="boatImmatriculation" />:
- <input t:type="textfield" t:id="boatImmatriculation" class="width50" t:value="filter.boatImmatriculation" />
- <t:label t:for="boatDistrictCode" />:
- <input t:type="textfield" t:id="boatDistrictCode" class="width50" t:value="filter.boatDistrictCode" />
- </div>-->
- <t:if t:test="user.admin">
- <div t:type="zone" t:id="observerZone" t:update="show">
- <!--<t:label t:for="observer" />:
- <input t:type="select" t:id="observer" t:model="observerSelectModel" value="observerId" />-->
-
- <t:label t:for="company" />:
+ <div>
+ <t:label t:for="sampleRow" />:
+ <input t:type="select" t:id="sampleRow" t:model="sampleRowSelectModel" value="sampleRowId" />
+ <t:if t:test="user.admin">
+ <t:label t:for="company" />:
<input t:type="select" t:id="company" t:model="companySelectModel" value="companyId"/>
- </div>
- </t:if>
+ </t:if>
+ </div>
<div class="t-beaneditor-row aright">
<input t:type="submit" class="ico search-32px" t:id="search" value="Search" />
<input t:type="submit" class="ico undo" t:id="reset" value="Reset" />
@@ -109,8 +101,4 @@
</p>
<t:chart t:width="600" t:height="400" t:chart="dataSamplingChart" />
</div>
-<script type="text/javascript">
- Event.observe('facadeName', 'change', function() { $('filtersForm').submit(); } );
- Event.observe('sectorName', 'change', function() { $('filtersForm').submit(); } );
-</script>
</t:layout>
Modified: trunk/suiviobsmer-ui/src/main/webapp/css/boats.css
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/css/boats.css 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-ui/src/main/webapp/css/boats.css 2010-01-23 17:59:23 UTC (rev 262)
@@ -19,6 +19,10 @@
width: 60%;
}
+div#so-boats-filters {
+ width: 70%;
+}
+
/*div.so-filters {
width: 60%;
margin-left: auto;
@@ -197,4 +201,15 @@
table#so-activity-calendar-months tr.profession {
background-color: silver;
+}
+
+div#so-activity-calendar a.return {
+ text-decoration: none;
+ color: #19a28d;
+ font-weight: bold;
+}
+
+div#so-activity-calendar a.return:hover {
+ text-decoration: underline;
+ color: black;
}
\ No newline at end of file
Modified: trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css 2010-01-22 18:48:46 UTC (rev 261)
+++ trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css 2010-01-23 17:59:23 UTC (rev 262)
@@ -168,9 +168,3 @@
input.nbObservants {
width: 18px;
}
-
-textarea.hidden-textarea {
- border: 0;
- width: 0;
- height: 0;
-}
1
0
[Suiviobsmer-commits] r261 - trunk/suiviobsmer-business/src/main/xmi
by fdesbois@users.labs.libre-entreprise.org 22 Jan '10
by fdesbois@users.labs.libre-entreprise.org 22 Jan '10
22 Jan '10
Author: fdesbois
Date: 2010-01-22 18:48:46 +0000 (Fri, 22 Jan 2010)
New Revision: 261
Modified:
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
Log:
- Problem with filters Ano #2033 and #2042
- Ano #2034 : Bad calcul for realTides
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
1
0
22 Jan '10
Author: fdesbois
Date: 2010-01-22 18:48:16 +0000 (Fri, 22 Jan 2010)
New Revision: 260
Modified:
trunk/changelog.txt
trunk/src/site/rst/business-rules.rst
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/SampleRowImplTest.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties
trunk/suiviobsmer-ui/src/main/webapp/Boats.tml
trunk/suiviobsmer-ui/src/main/webapp/css/boats.css
Log:
- Problem with filters Ano #2033 and #2042
- Ano #2034 : Bad calcul for realTides
Modified: trunk/changelog.txt
===================================================================
--- trunk/changelog.txt 2010-01-22 15:45:52 UTC (rev 259)
+++ trunk/changelog.txt 2010-01-22 18:48:16 UTC (rev 260)
@@ -4,6 +4,9 @@
0.1.2
-----
+- [fdesbois] Ano #2033 : Problème avec le filtre sur un code de ligne dans les synthèses
+- [fdesbois] Ano #2034 : Mauvais calcul des marées réels
+- [fdesbois] Ano #2042 : Problème sur les filtres de la page contacts (une validation les enlève)
- [fdesbois] Evol #2017 : Permettre la suppression d'un utilisateur non utilisé dans l'application
- [fdesbois] Evol #1959 : Contacts : Popup pour la sasie d'un commentaire sur une ligne
- [fdesbois] Evol #2030 : Refactoré filtres des navires pour utiliser la partie commune a ceux des contacts et des syntheses
Modified: trunk/src/site/rst/business-rules.rst
===================================================================
--- trunk/src/site/rst/business-rules.rst 2010-01-22 15:45:52 UTC (rev 259)
+++ trunk/src/site/rst/business-rules.rst 2010-01-22 18:48:16 UTC (rev 260)
@@ -101,10 +101,10 @@
- Calcul du nombre de marées réels :
- * Ajout si accepté (validé) par la société
- * Retrait si invalidé par la société après avoir été accepté
- * Retrait si refusé par le programme
- * Ajout si validé par le programme après avoir été refusé
+ * Ajout d'une marée si accepté (validé) par la société
+ * Retrait d'une marée si invalidé par la société après avoir été accepté
+ * Retrait d'une marée si refusé par le programme
+ * Ajout d'une marée si validé par le programme après avoir été refusé
- Unicité : code de la ligne du plan + immatriculation du navire + société + date de création (avec temps)
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java 2010-01-22 15:45:52 UTC (rev 259)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java 2010-01-22 18:48:16 UTC (rev 260)
@@ -63,4 +63,9 @@
public boolean isBoatFiltered() {
return StringUtils.isNotEmpty(getBoatName()) || StringUtils.isNotEmpty(getBoatDistrictCode()) || getBoatImmatriculation() != null;
}
+
+// @Override
+// public boolean isFiltered() {
+// return super.isFiltered() || isBoatFiltered();
+// }
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java 2010-01-22 15:45:52 UTC (rev 259)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java 2010-01-22 18:48:16 UTC (rev 260)
@@ -81,6 +81,19 @@
}
query.add(contact + "." + Contact.VALIDATION_COMPANY, companyValidValues, getCompanyUndefined());
+ if (getState() != null) {
+ query.add(contact + "." + Contact.STATE, getState().toString());
+ }
+
return query;
}
+
+ @Override
+ public boolean isFiltered() {
+ return isBoatFiltered() || isSamplingFiltered() || getObserver() != null ||
+ getMammalsObservation() || getMammalsCapture() ||
+ getProgramAccepted() || getProgramRefused() || getProgramUndefined() ||
+ getCompanyAccepted() || getCompanyRefused() || getCompanyUndefined() ||
+ getState() != null;
+ }
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java 2010-01-22 15:45:52 UTC (rev 259)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java 2010-01-22 18:48:16 UTC (rev 260)
@@ -89,4 +89,9 @@
getPeriod() != null || getProfession() != null;
}
+// @Override
+// public boolean isFiltered() {
+// return super.isFiltered() || isSamplingFiltered();
+// }
+
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactImpl.java 2010-01-22 15:45:52 UTC (rev 259)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactImpl.java 2010-01-22 18:48:16 UTC (rev 260)
@@ -47,13 +47,15 @@
@Override
public void setTideBeginDate(Date beginDate) {
super.setTideBeginDate(beginDate);
- calculTideNbDays();
+ // Temporarly commented, tideNbDays is not used yet
+// calculTideNbDays();
}
@Override
public void setTideEndDate(Date beginDate) {
super.setTideEndDate(beginDate);
- calculTideNbDays();
+ // Temporarly commented, tideNbDays is not used yet
+// calculTideNbDays();
}
/**
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java 2010-01-22 15:45:52 UTC (rev 259)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java 2010-01-22 18:48:16 UTC (rev 260)
@@ -205,13 +205,13 @@
if (contact.getTideEndDate() == null || contact.getTideBeginDate() == null) {
return;
}
- int nbDays = contact.getTideNbDays(); //getDifferenceDays(contact);
+ //int nbDays = contact.getTideNbDays(); //getDifferenceDays(contact);
SampleMonth month = getSampleMonth(contact.getTideBeginDate());
- if (log.isDebugEnabled()) {
- log.debug("Add tide time " + nbDays + " for " +
+ if (log.isTraceEnabled()) {
+ log.trace("Add 1 tide for " +
month.getPeriodMonth() + "/" + month.getPeriodYear() + " [" + this.getCode() + "]");
}
- month.addRealTideTime(nbDays);
+ month.addRealTideTime(1);
}
@Override
@@ -219,13 +219,13 @@
if (contact.getTideEndDate() == null || contact.getTideBeginDate() == null) {
return;
}
- int nbDays = contact.getTideNbDays(); //getDifferenceDays(contact);
+ //int nbDays = contact.getTideNbDays(); //getDifferenceDays(contact);
SampleMonth month = getSampleMonth(contact.getTideBeginDate());
- if (log.isDebugEnabled()) {
- log.debug("Remove tide time " + nbDays + " for " +
+ if (log.isTraceEnabled()) {
+ log.trace("Remove 1 tide for " +
month.getPeriodMonth() + "/" + month.getPeriodYear() + " [" + this.getCode() + "]");
}
- month.addRealTideTime(-nbDays);
+ month.addRealTideTime(-1);
}
@Override
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-22 15:45:52 UTC (rev 259)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-22 18:48:16 UTC (rev 260)
@@ -339,8 +339,6 @@
try {
transaction = rootContext.beginTransaction();
- // TODO-FD20090106 add filters for facadeName and sectorName (in argument) for Boats and Contacts use
-
SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction);
TopiaQuery<SampleRow> query = dao.createQuery("S");
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/SampleRowImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/SampleRowImplTest.java 2010-01-22 15:45:52 UTC (rev 259)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/SampleRowImplTest.java 2010-01-22 18:48:16 UTC (rev 260)
@@ -120,7 +120,7 @@
Contact contact = new ContactImpl();
Date beginDate = DateUtils.createDate(12, 4, 2009);
- Date endDate = DateUtils.createDate(12, 4, 2009);
+ Date endDate = DateUtils.createDate(15, 4, 2009);
contact.setTideBeginDate(beginDate);
contact.setTideEndDate(endDate);
@@ -129,16 +129,15 @@
SampleMonth result = getRowFromContext().getSampleMonth(beginDate);
assertEquals(1, result.getRealTidesValue());
- // Reinit result for next test
- result.addRealTideTime(-1);
-
- // Test with a more than one day interval dates from contact
- endDate = DateUtils.createDate(18, 4, 2009);
- contact.setTideEndDate(endDate);
-
- getRowFromContext().addRealTideTime(contact);
- result = getRowFromContext().getSampleMonth(beginDate);
- assertEquals(7, result.getRealTidesValue());
+// // Reinit result for next test
+// result.addRealTideTime(-1);
+// // Test with a more than one day interval dates from contact
+// endDate = DateUtils.createDate(18, 4, 2009);
+// contact.setTideEndDate(endDate);
+//
+// getRowFromContext().addRealTideTime(contact);
+// result = getRowFromContext().getSampleMonth(beginDate);
+// assertEquals(1, result.getRealTidesValue());
}
@Test
@@ -157,20 +156,19 @@
/** EXEC METHOD **/
row.removeRealTideTime(contact);
SampleMonth result = getRowFromContext().getSampleMonth(beginDate);
- // result stay at 0, can't remove 1 day from 0
+ // result stay at 0, can't remove 1 tide from 0
assertEquals(0, result.getRealTidesValue());
// Reinit result for next test
result.addRealTideTime(12);
- // Test with a more than one day interval dates from contact
+ // Test with a more than one day interval dates from contact : only one tide to remove
endDate = DateUtils.createDate(18, 4, 2009);
contact.setTideEndDate(endDate);
getRowFromContext().removeRealTideTime(contact);
result = getRowFromContext().getSampleMonth(beginDate);
- // result put to 5 : 12 - 7 (diff)
- assertEquals(5, result.getRealTidesValue());
+ assertEquals(11, result.getRealTidesValue());
}
@Test
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-01-22 15:45:52 UTC (rev 259)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java 2010-01-22 18:48:16 UTC (rev 260)
@@ -134,6 +134,10 @@
*/
protected void initSelectFilters(boolean companySelect, boolean observerSelect) throws SuiviObsmerException {
+ if (log.isDebugEnabled()) {
+ log.debug("Filters : " + getFilter());
+ }
+
facadeSelectModel = null;
getFacadeSelectModel();
sectorSelectModel = null;
@@ -142,6 +146,9 @@
getSampleRowSelectModel();
if (getFilter().getSampleRow() != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("SampleRow filtered : " + getFilter().getSampleRow());
+ }
sampleRowId = getFilter().getSampleRow().getTopiaId();
}
@@ -201,7 +208,13 @@
if (log.isInfoEnabled()) {
log.info("BUSINESS REQUEST [getSampleRowsForUser]");
}
+
+ // WARN : no use of sampleRow filter
+ SampleRow rowFiltered = getFilter().getSampleRow();
+ getFilter().setSampleRow(null);
List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(getFilter());
+ getFilter().setSampleRow(rowFiltered);
+
sampleRowSelectModel = new GenericSelectModel<SampleRow>(sampleRows, SampleRow.class,
"code", "topiaId", propertyAccess);
}
@@ -286,8 +299,16 @@
// return null;
// }
- @Log
- public void onSuccess() throws SuiviObsmerException {
+ /**
+ * Called when search submit button is pressed. This method is useful to
+ * refresh all filters data from selects.
+ *
+ * @throws SuiviObsmerException
+ */
+ public void onSelectedFromSearch() throws SuiviObsmerException {
+ if (log.isDebugEnabled()) {
+ log.debug("REFRESH FILTERS DATA");
+ }
SampleRow row = getSampleRowSelectModel().findObject(sampleRowId);
getFilter().setSampleRow(row);
if (user.getAdmin()) {
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-01-22 15:45:52 UTC (rev 259)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-01-22 18:48:16 UTC (rev 260)
@@ -352,9 +352,11 @@
* Other filters are managed by AbstractFilteredPage superclass.
*
* @throws SuiviObsmerException for business errors
- * @see AbstractFilteredPage
+ * @see AbstractFilteredPage#onSelectedFromSearch()
*/
- void onSelectedFromSearch() throws SuiviObsmerException {
+ @Override
+ public void onSelectedFromSearch() throws SuiviObsmerException {
+ super.onSelectedFromSearch();
if (log.isDebugEnabled()) {
log.debug("FILTER : facadeName=" + boatFilter.getFacadeName());
log.debug("FILTER : sectorName=" + boatFilter.getSectorName());
@@ -593,6 +595,8 @@
/** /////////////////////// ACTIONS //////////////////////////////////// **/
Block onSuccessFromCompanySelectForm() throws SuiviObsmerException {
+ // Must be call to refresh company data from select
+ super.onSelectedFromSearch();
companyBoatInfos = null;
// boatSelectedImmatriculation is getting from Persist("flash")
getCompanyBoatInfos();
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-22 15:45:52 UTC (rev 259)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-22 18:48:16 UTC (rev 260)
@@ -123,6 +123,12 @@
contacts = null;
getContacts();
}
+ String boatName = getFilter().getBoatName();
+ boolean companyFiltered = getFilter().getCompany() != null && user.getAdmin();
+ // Show filters only if no boatName is set
+ if ((getContactFilter().isFiltered() || companyFiltered) && StringUtils.isEmpty(boatName)) {
+ filtersVisible = true;
+ }
contactsForm.clearErrors();
}
@@ -139,7 +145,7 @@
@Property
// @Persist(PersistenceConstants.FLASH)
- @Persist
+// @Persist
private boolean filtersVisible;
private boolean reset;
@@ -147,9 +153,6 @@
public ContactFilter getContactFilter() throws SuiviObsmerException {
if (contactFilter == null) {
contactFilter = new ContactFilterImpl();
-// if (!user.getAdmin()) {
-// contactFilter.setCompany(user.getCompany());
-// }
}
return contactFilter;
}
Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties
===================================================================
--- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties 2010-01-22 15:45:52 UTC (rev 259)
+++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties 2010-01-22 18:48:16 UTC (rev 260)
@@ -14,7 +14,7 @@
# BOATS LIST
immatriculation-label: Imma.
buildYear-label: Ann\u00E9e
-boatLength-label: Longueur
+boatLength-label: Long.
# BOAT INFOS
referenceDate-label: Date
Modified: trunk/suiviobsmer-ui/src/main/webapp/Boats.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-01-22 15:45:52 UTC (rev 259)
+++ trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-01-22 18:48:16 UTC (rev 260)
@@ -87,7 +87,7 @@
<p:boatName>
<t:label t:for="boatName" />
<span> nom </span>
- <input t:type="textfield" t:id="boatName" t:value="filter.boatName" t:mixins="Autocomplete" />
+ <input t:type="textfield" t:id="boatName" class="width150" t:value="filter.boatName" t:mixins="Autocomplete" />
<span> immatriculation </span>
<input t:type="textfield" t:id="boatImmatriculation" class="width50" t:value="filter.boatImmatriculation" />
<span> code quartier </span>
Modified: trunk/suiviobsmer-ui/src/main/webapp/css/boats.css
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/css/boats.css 2010-01-22 15:45:52 UTC (rev 259)
+++ trunk/suiviobsmer-ui/src/main/webapp/css/boats.css 2010-01-22 18:48:16 UTC (rev 260)
@@ -7,7 +7,7 @@
*/
div#so-boats {
- width: 90%;
+ width: 100%;
margin-left: auto;
margin-right: auto;
margin-top: 20px;
1
0
[Suiviobsmer-commits] r259 - in trunk: src/site/resources src/site/rst suiviobsmer-business/src/main/filters suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl 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/webapp/css
by fdesbois@users.labs.libre-entreprise.org 22 Jan '10
by fdesbois@users.labs.libre-entreprise.org 22 Jan '10
22 Jan '10
Author: fdesbois
Date: 2010-01-22 15:45:52 +0000 (Fri, 22 Jan 2010)
New Revision: 259
Added:
trunk/src/site/resources/Modele_WAO.png
trunk/src/site/rst/model.rst
Modified:
trunk/suiviobsmer-business/src/main/filters/SuiviObsmer.properties
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.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/Administration.properties
trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties
trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Synthesis.properties
trunk/suiviobsmer-ui/src/main/webapp/Administration.tml
trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml
trunk/suiviobsmer-ui/src/main/webapp/UserProfile.tml
trunk/suiviobsmer-ui/src/main/webapp/css/common.css
Log:
Change some style and text + other minor modifications
Added: trunk/src/site/resources/Modele_WAO.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/site/resources/Modele_WAO.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/src/site/rst/model.rst
===================================================================
--- trunk/src/site/rst/model.rst (rev 0)
+++ trunk/src/site/rst/model.rst 2010-01-22 15:45:52 UTC (rev 259)
@@ -0,0 +1,8 @@
+Modèle de données
+=================
+
+:Author: $Author: fdesbois$
+:Revision: $Revision$
+:Date: $Date$
+
+.. image:: ../Modele_WAO.png
Modified: trunk/suiviobsmer-business/src/main/filters/SuiviObsmer.properties
===================================================================
--- trunk/suiviobsmer-business/src/main/filters/SuiviObsmer.properties 2010-01-22 08:31:08 UTC (rev 258)
+++ trunk/suiviobsmer-business/src/main/filters/SuiviObsmer.properties 2010-01-22 15:45:52 UTC (rev 259)
@@ -16,4 +16,4 @@
suiviobsmer.email.from=admin at suiviobsmer.org
## Version
-suiviobsmer.version=0.1.1
\ No newline at end of file
+suiviobsmer.version=0.1.2
\ No newline at end of file
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2010-01-22 08:31:08 UTC (rev 258)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ActivityCalendarImport.java 2010-01-22 15:45:52 UTC (rev 259)
@@ -218,6 +218,7 @@
//String harbourCode = reader.get("SYNA_POR_COD").trim();
String harbourCode = ImportHelper.read(reader, ACTIVITY_CALENDAR.SYNA_POR_COD);
boolean active = harbourCode != null && !harbourCode.equals("INA");
+ // FIXME-FD20100122 : INA a tester sur le code du métier : YOUPI ONE
ActivityMonth month = calendar.getActivityMonth(monthNum);
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2010-01-22 08:31:08 UTC (rev 258)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2010-01-22 15:45:52 UTC (rev 259)
@@ -176,6 +176,8 @@
dao.update(user);
+ // FIXME-JC20100122 Use REGEX instead of @ to test if the login is
+ // a valid email
if (user.getLogin().contains("@") && user.isPasswordChanged()) {
String subject = "[WAO] ";
String msg = "Bonjour,\n\n";
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-01-22 08:31:08 UTC (rev 258)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java 2010-01-22 15:45:52 UTC (rev 259)
@@ -273,6 +273,7 @@
user.setPasswordChanged(true);
}
try {
+ // TODO return true if mail ok
serviceUser.createUpdateUser(user, generatePassword);
userId = user.getId();
} catch (SuiviObsmerBusinessException eee) {
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-01-22 08:31:08 UTC (rev 258)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-01-22 15:45:52 UTC (rev 259)
@@ -134,8 +134,8 @@
}
List<SortedMap<Date, Integer>> res = serviceSynthesis.getDataSampling(getFilter());
Map<String, SortedMap<Date, Integer>> data = new HashMap<String, SortedMap<Date, Integer>>();
- data.put("Données prévus", res.get(0));
- data.put("Données réels", res.get(1));
+ data.put("Planifié", res.get(0));
+ data.put("Réalisé", res.get(1));
String title = BusinessUtils.getDataSamplingTitle(getFilter());
return ChartUtils.createCategoryChart(title, "Nb marées", getDataSamplingChartType(), data);
}
Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Administration.properties
===================================================================
--- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Administration.properties 2010-01-22 08:31:08 UTC (rev 258)
+++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Administration.properties 2010-01-22 15:45:52 UTC (rev 259)
@@ -1,6 +1,6 @@
fishingZoneCsvFile-label: Fichier CSV des zones de p\u00EAche
companies-label: Liste des soci\u00E9t\u00E9s
-name-label: Nom
+name-label: Nom*
address1-label: Adresse
address2-label: Compl\u00E9ment d'adresse
postalCode-label: Code postal
@@ -8,9 +8,9 @@
phoneNumber-label: T\u00E9l\u00E9phone
email-label: E-mail
users-label: Liste des utilisateurs
-firstName-label: Pr\u00E9nom
-lastName-label: Nom
-login-label: Identifiant de connexion
+firstName-label: Pr\u00E9nom*
+lastName-label: Nom*
+login-label: Identifiant de connexion (email)*
active-label: Actif
generatePassword-label: G\u00E9n\u00E9rer le password
password-label: ou d\u00E9finir manuellement
\ No newline at end of file
Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties
===================================================================
--- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties 2010-01-22 08:31:08 UTC (rev 258)
+++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties 2010-01-22 15:45:52 UTC (rev 259)
@@ -22,6 +22,9 @@
mammals-label: Observations et captures accidentelles
dataInputDate-label: Saisie des donn\u00E9es dans Allegro
comment-label: Com.
+professionCode-label: M\u00E9tier
+professionLibelle-label: Libell\u00E9 m\u00E9tier
+professionSpecies-label: Esp\u00E8ces cibles
# Form labels
contactsForm-errors-banner: Le contact n'a pas \u00E9t\u00E9 sauvegard\u00E9 \u00E0 cause des erreurs suivantes :
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-01-22 08:31:08 UTC (rev 258)
+++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Synthesis.properties 2010-01-22 15:45:52 UTC (rev 259)
@@ -5,4 +5,5 @@
boatDistrictCode-label: Quartier
facadeName-label: Fa\u00E7ade
sectorName-label: Zone
-sampleRow-label: Code ligne
\ No newline at end of file
+sampleRow-label: Code ligne
+company-label: Soci\u00E9t\u00E9
\ No newline at end of file
Modified: trunk/suiviobsmer-ui/src/main/webapp/Administration.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Administration.tml 2010-01-22 08:31:08 UTC (rev 258)
+++ trunk/suiviobsmer-ui/src/main/webapp/Administration.tml 2010-01-22 15:45:52 UTC (rev 259)
@@ -26,7 +26,13 @@
</form>
<fieldset class="user-form clearfix">
- <form t:type="beaneditform" class="clearfix" t:id="company" t:include="name, address1, address2, postalCode, city, phoneNumber, email, active" />
+ <form t:type="beaneditform" class="clearfix" t:id="company"
+ t:include="name, address1, address2, postalCode, city, phoneNumber, email, active">
+ <p:name>
+ <t:label t:for="name" />
+ <input t:type="textfield" t:id="name" t:validate="required" value="company.name" />
+ </p:name>
+ </form>
</fieldset>
<t:if t:test="usersAvailable">
@@ -45,6 +51,14 @@
<fieldset class="user-form clearfix">
<form t:type="beaneditform" class="clearfix" t:id="user" t:include="firstName, lastName, login, password, phoneNumber, admin, active">
+ <p:firstName>
+ <t:label t:for="firstName" />
+ <input t:type="textfield" t:id="firstName" value="user.firstName" t:validate="required" />
+ </p:firstName>
+ <p:lastName>
+ <t:label t:for="lastName" />
+ <input t:type="textfield" t:id="lastName" value="user.lastName" t:validate="required" />
+ </p:lastName>
<p:login>
<t:label t:for="login" />
<input t:type="textfield" t:id="login" value="user.login" t:validate="required" />
Modified: trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml 2010-01-22 08:31:08 UTC (rev 258)
+++ trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml 2010-01-22 15:45:52 UTC (rev 259)
@@ -138,9 +138,9 @@
</t:if>
</td>
</t:loop>
- <td class="width50 aright bright">${totalTidesExpected} (${totalTidesReal})</td>
- <td class="width60 aright">${row.averageTideTime}</td>
- <td class="width60 aright bright">${row.nbObservants}</td>
+ <td class="width50 acenter bright">${totalTidesExpected} (${totalTidesReal})</td>
+ <td class="width60 acenter">${row.averageTideTime}</td>
+ <td class="width60 acenter bright">${row.nbObservants}</td>
<!-- Actions -->
<td class="${actionsClass} bright">
<t:if t:test="canAccessBoats()">
Modified: trunk/suiviobsmer-ui/src/main/webapp/UserProfile.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/UserProfile.tml 2010-01-22 08:31:08 UTC (rev 258)
+++ trunk/suiviobsmer-ui/src/main/webapp/UserProfile.tml 2010-01-22 15:45:52 UTC (rev 259)
@@ -13,6 +13,10 @@
<t:label t:for="password2" />
<input t:type="passwordfield" t:id="password2" value="password2"/>
</p:password2>
+<!-- <p:login>
+ <label>${message:login}</label>
+ ${user.login}
+ </p:login>-->
</form>
</fieldset>
Modified: trunk/suiviobsmer-ui/src/main/webapp/css/common.css
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/css/common.css 2010-01-22 08:31:08 UTC (rev 258)
+++ trunk/suiviobsmer-ui/src/main/webapp/css/common.css 2010-01-22 15:45:52 UTC (rev 259)
@@ -217,6 +217,7 @@
fieldset.user-form div.t-beaneditor span {
color: #007CC2;
font-weight: bold;
+ font-size: 0.8em;
}
fieldset#so-contacts-form div.t-beaneditor input.t-beaneditor-submit,
@@ -289,6 +290,7 @@
width: 120px;
color: #007CC2;
font-weight: bold;
+ font-size: 0.8em;
}
div.t-autocomplete-menu ul {
1
0
[Suiviobsmer-commits] r258 - in trunk: . suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl suiviobsmer-business/src/main/xmi suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/webapp
by fdesbois@users.labs.libre-entreprise.org 22 Jan '10
by fdesbois@users.labs.libre-entreprise.org 22 Jan '10
22 Jan '10
Author: fdesbois
Date: 2010-01-22 08:31:08 +0000 (Fri, 22 Jan 2010)
New Revision: 258
Modified:
trunk/changelog.txt
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java
trunk/suiviobsmer-ui/src/main/webapp/Administration.tml
Log:
Evol #2017 : A user can be deleted if he is not linked with a contact or a sampleRowLog
Modified: trunk/changelog.txt
===================================================================
--- trunk/changelog.txt 2010-01-22 07:39:50 UTC (rev 257)
+++ trunk/changelog.txt 2010-01-22 08:31:08 UTC (rev 258)
@@ -4,6 +4,7 @@
0.1.2
-----
+- [fdesbois] Evol #2017 : Permettre la suppression d'un utilisateur non utilisé dans l'application
- [fdesbois] Evol #1959 : Contacts : Popup pour la sasie d'un commentaire sur une ligne
- [fdesbois] Evol #2030 : Refactoré filtres des navires pour utiliser la partie commune a ceux des contacts et des syntheses
- [fdesbois] Ano #2019 : L'affichage des zones sur le plan d'échantillonnage n'est pas cohérent avec les lignes.
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2010-01-22 07:39:50 UTC (rev 257)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2010-01-22 08:31:08 UTC (rev 258)
@@ -28,6 +28,10 @@
import fr.ifremer.suiviobsmer.SuiviObsmerContext;
import fr.ifremer.suiviobsmer.entity.Company;
import fr.ifremer.suiviobsmer.entity.CompanyDAO;
+import fr.ifremer.suiviobsmer.entity.Contact;
+import fr.ifremer.suiviobsmer.entity.ContactDAO;
+import fr.ifremer.suiviobsmer.entity.SampleRowLog;
+import fr.ifremer.suiviobsmer.entity.SampleRowLogDAO;
import fr.ifremer.suiviobsmer.entity.User;
import fr.ifremer.suiviobsmer.entity.UserDAO;
import fr.ifremer.suiviobsmer.services.ServiceUser;
@@ -204,6 +208,47 @@
}
@Override
+ public void deleteUser(User user) throws SuiviObsmerException {
+ TopiaContext transaction = null;
+ try {
+ transaction = rootContext.beginTransaction();
+
+ String userType = user.getAdmin() ? "administrateur" : "observateur";
+ String msgBegin = "L'" + userType + " '" + user.getLogin() + "' ne peut pas être supprimé";
+ String msgEnd = "Vous pouvez cependant le désactiver pour qu'il ne puisse plus se connecter.";
+
+ if (user.getAdmin()) {
+ SampleRowLogDAO logDAO = SuiviObsmerModelDAOHelper.getSampleRowLogDAO(transaction);
+ List<SampleRowLog> results = logDAO.findAllByUser(user);
+
+ if (!results.isEmpty()) {
+ throw new SuiviObsmerBusinessException(Type.ALREADY_EXISTS, this.getClass(),
+ msgBegin + " car il a participé à la modification du plan d'échantillonnage. " + msgEnd);
+ }
+ } else {
+
+ ContactDAO contactDAO = SuiviObsmerModelDAOHelper.getContactDAO(transaction);
+ List<Contact> results = contactDAO.findAllByUser(user);
+
+ if (!results.isEmpty()) {
+ throw new SuiviObsmerBusinessException(Type.ALREADY_EXISTS, this.getClass(),
+ msgBegin + " car il est lié à plusieurs contacts existants. " + msgEnd);
+ }
+ }
+
+
+ UserDAO dao = SuiviObsmerModelDAOHelper.getUserDAO(transaction);
+
+ dao.delete(user);
+
+ transaction.commitTransaction();
+ transaction.closeContext();
+ } catch (Exception eee) {
+ SuiviObsmerContext.serviceException(transaction, "Impossible de créer ou de mettre à jour l'utilisateur", eee);
+ }
+ }
+
+ @Override
public void createUpdateCompany(Company company) throws SuiviObsmerException {
TopiaContext transaction = null;
try {
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
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-01-22 07:39:50 UTC (rev 257)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java 2010-01-22 08:31:08 UTC (rev 258)
@@ -112,6 +112,7 @@
private boolean addNewCompanySelected;
private boolean addNewUserSelected;
+ private boolean deleteUserSelected;
void setupRender() {
companies = null;
@@ -241,13 +242,24 @@
addNewUserSelected = true;
}
- void onSuccessFromUserActionsForm() {
+ void onSelectedFromDeleteUser() {
+ deleteUserSelected = true;
+ }
+
+ void onSuccessFromUserActionsForm() throws SuiviObsmerException {
if (addNewUserSelected) {
userId = null;
+ } else if (deleteUserSelected && userId != null) {
+ user = getUsersSelectModel().findObject(userId);
+ try {
+ serviceUser.deleteUser(user);
+ user = null;
+ userId = null;
+ layout.getFeedBack().addInfo("Utilisateur supprimé avec succès !");
+ } catch (SuiviObsmerBusinessException eee) {
+ layout.getFeedBack().addError(eee.getMessage());
+ }
}
- // If login already defined by an other user :
- // popup : "Un autre utilisateur possède le même identifiant, voulez désactiver l'ancien compte ?"
- // Technique : catch exception for alreadyExist user
}
@Log
Modified: trunk/suiviobsmer-ui/src/main/webapp/Administration.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Administration.tml 2010-01-22 07:39:50 UTC (rev 257)
+++ trunk/suiviobsmer-ui/src/main/webapp/Administration.tml 2010-01-22 08:31:08 UTC (rev 258)
@@ -37,7 +37,9 @@
</div>
<div class="icons fleft">
<input t:type="submit" t:id="showUser" class="ico search" value="Show Details" t:title="Afficher détails" />
- <input t:type="submit" t:id="addNewUser" class="ico add" value="Add new company" t:title="Ajouter une nouvelle société" />
+ <input t:type="submit" t:id="deleteUser" class="ico22px delete" value="Delete user" t:title="Supprimer cet utilisateur"
+ t:mixins="Confirm" t:message="Etes-vous sûr de vouloir supprimer définitivement cet utilisateur ?" />
+ <input t:type="submit" t:id="addNewUser" class="ico add" value="Add new company" t:title="Ajouter un nouvel utilisateur" />
</div>
</form>
1
0
22 Jan '10
Author: fdesbois
Date: 2010-01-22 07:39:50 +0000 (Fri, 22 Jan 2010)
New Revision: 257
Modified:
trunk/changelog.txt
Log:
update changelog
Modified: trunk/changelog.txt
===================================================================
--- trunk/changelog.txt 2010-01-22 07:37:49 UTC (rev 256)
+++ trunk/changelog.txt 2010-01-22 07:39:50 UTC (rev 257)
@@ -4,6 +4,8 @@
0.1.2
-----
+- [fdesbois] Evol #1959 : Contacts : Popup pour la sasie d'un commentaire sur une ligne
+- [fdesbois] Evol #2030 : Refactoré filtres des navires pour utiliser la partie commune a ceux des contacts et des syntheses
- [fdesbois] Ano #2019 : L'affichage des zones sur le plan d'échantillonnage n'est pas cohérent avec les lignes.
0.1.1
1
0
[Suiviobsmer-commits] r256 - in trunk/suiviobsmer-ui/src/main: java/fr/ifremer/suiviobsmer/ui/pages resources/fr/ifremer/suiviobsmer/ui/pages webapp webapp/css
by fdesbois@users.labs.libre-entreprise.org 22 Jan '10
by fdesbois@users.labs.libre-entreprise.org 22 Jan '10
22 Jan '10
Author: fdesbois
Date: 2010-01-22 07:37:49 +0000 (Fri, 22 Jan 2010)
New Revision: 256
Modified:
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties
trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css
Log:
Evol #1959 : Add popup for comment using chenilleKit Window component + Js directly in tml page.
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-21 12:23:50 UTC (rev 255)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-22 07:37:49 UTC (rev 256)
@@ -113,10 +113,16 @@
@Persist(PersistenceConstants.FLASH)
private String editableContactId;
+ @Log
void setupRender() throws SuiviObsmerException {
- initSelectFilters(true ,true);
- contacts = null;
- getContacts();
+ if (StringUtils.isEmpty(editableContactId)) {
+ if (log.isDebugEnabled()) {
+ log.debug("RESET DATA");
+ }
+ initSelectFilters(true ,true);
+ contacts = null;
+ getContacts();
+ }
contactsForm.clearErrors();
}
@@ -328,6 +334,13 @@
this.contactState = contactState;
}
+ public String getCommentDisplayed() {
+ if (contact.getComment() != null && contact.getComment().length() > 20) {
+ return contact.getComment().substring(0, 20) + "...";
+ }
+ return contact.getComment();
+ }
+
public String getSampleRowDescription() {
return BusinessUtils.getTooltipSampleRow(contact.getSampleRow());
}
@@ -369,6 +382,9 @@
private boolean contactDeleted;
+ @Persist
+ private String oldComment;
+
public boolean hasActions() {
return !user.getAdmin() && contact.getValidationCompany() == null;
}
@@ -425,7 +441,8 @@
}
contact.setValidationProgram(null);
} else {
- // For company unvalidate from previous accepted validation, removeRealTideTime
+ // For company unvalidate from previous accepted validation,
+ // removeRealTideTime
if (BooleanUtils.isTrue(contact.getValidationCompany())) {
contact.getSampleRow().removeRealTideTime(contact);
}
@@ -438,6 +455,7 @@
contactUserId = contact.getUser().getTopiaId();
editableContactId = contactId;
contactSelectedId = contactId;
+ oldComment = contact.getComment();
contactEdited = true;
}
@@ -451,6 +469,10 @@
contact.setState(contactState.toString());
User contactUser = getUserSelectModel().findObject(contactUserId);
contact.setUser(contactUser);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Comment : " + contact.getComment());
+ }
}
void onSelectedFromCancelEditContact() throws SuiviObsmerException {
@@ -483,8 +505,8 @@
@InjectComponent
private Field nbObservants;
- @InjectComponent
- private Field comment;
+// @InjectComponent
+// private Field comment;
@InjectComponent
private Field inputDate;
@@ -492,7 +514,8 @@
@Log
void onValidateFormFromContactsForm() {
contactsForm.clearErrors();
- // Validation for saving contact depends on contactState (only edition form)
+ // Validation for saving contact depends on contactState (only edition
+ // form)
if (!contactEdited && contactState != null) {
if (log.isInfoEnabled()) {
log.info("For state : " + contactState);
@@ -509,12 +532,6 @@
"La date de début de la marée doit correspondre à un mois valide (non vide) de la ligne " + row.getCode());
}
-// if (end != null && !DateUtils.between(end, row.getPeriodBegin(), row.getPeriodEnd())) {
-// contactsForm.recordError(endDate,
-// "La date de fin de la marée doit être comprise dans la période de la ligne : du " +
-// dateFormat.format(row.getPeriodBegin()) + " au " + dateFormat.format(row.getPeriodEnd()));
-// }
-
if (begin != null && end != null && end.before(begin)) {
contactsForm.recordError(endDate, "La date de fin de la marée ne peut pas être antérieure à celle de début");
}
@@ -535,7 +552,7 @@
// Non abouti, Refus ou Refus Définitif
if (contactState.isUnfinishedState()) {
- if (!StringUtils.isEmpty(contact.getComment())) {
+ if (oldComment != null && StringUtils.isNotEmpty(contact.getComment()) && !oldComment.equals(contact.getComment())) {
// RAZ des champs
contact.setTideBeginDate(null);
contact.setTideEndDate(null);
@@ -544,7 +561,7 @@
contact.setMammalsObservation(false);
contact.setDataInputDate(null);
} else {
- contactsForm.recordError(comment, "Le commentaire est obligatoire pour l'état '" + contactState + "'");
+ contactsForm.recordError("Vous devez ajouter un commentaire pour l'état '" + contactState + "'");
}
// Embarquement Réalisé
} else if (contactState.equals(ContactState.BOARDING_DONE)) {
@@ -570,6 +587,7 @@
}
serviceContact.saveContact(contact, contactDeleted);
contactSelectedId = contact.getTopiaId();
+ oldComment = null;
} catch (SuiviObsmerException eee) {
layout.getFeedBack().addError(eee.getMessage());
}
@@ -582,7 +600,8 @@
if (log.isDebugEnabled()) {
log.debug("Contact can't be saved with errors");
}
- // The contact is not saved, the contact must be editable to show form and correct errors
+ // The contact is not saved, the contact must be editable to show form
+ // and correct errors
contactEdited = true;
editableContactId = contact.getTopiaId();
return contactsForm;
Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties
===================================================================
--- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties 2010-01-21 12:23:50 UTC (rev 255)
+++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties 2010-01-22 07:37:49 UTC (rev 256)
@@ -8,6 +8,8 @@
createdBy-label: Observateur
company-label: Soci\u00E9t\u00E9
sampleRow-label: M\u00E9tier
+boat-label: Navire
+state-label: Etat
topiaCreateDate-label: Cr\u00E9ation
tideBeginDate-label: D\u00E9but de la mar\u00E9e
tideEndDate-label: Fin de la mar\u00E9e
@@ -19,7 +21,7 @@
boatDistrictCode-label: CQ
mammals-label: Observations et captures accidentelles
dataInputDate-label: Saisie des donn\u00E9es dans Allegro
-comment-label: Commentaire
+comment-label: Com.
# Form labels
contactsForm-errors-banner: Le contact n'a pas \u00E9t\u00E9 sauvegard\u00E9 \u00E0 cause des erreurs suivantes :
Modified: trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-21 12:23:50 UTC (rev 255)
+++ trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-22 07:37:49 UTC (rev 256)
@@ -208,20 +208,32 @@
<input t:type="textarea" t:id="comment" cols="5" rows="3" value="contact.comment" />
</t:form>
</t:block>-->
- <input t:type="textarea" t:id="comment" cols="10" rows="1" value="contact.comment" />
-<!-- <a href="#" onclick="window1.showCenter(true)"><img src="${asset:context:}/img/comment-22px.png" alt="Add comment" /></a>
+ <!--<input t:type="hidden" t:id="comment" id="commentHidden" value="contact.comment"/>-->
+
+ <span t:type="ck/Tooltip" title="Commentaire" t:value="prop:contact.comment" t:effect="appear">
+ <a href="#" onclick="windowComment.showCenter(true); $('commentPopup').setValue($F('comment'))">
+ <img src="${asset:context:}/img/comment-22px.png" alt="Add comment" />
+ </a>
+ </span>
+ <textarea t:type="textarea" t:id="comment" class="hidden-textarea" cols="0" rows="0" value="contact.comment" />
- <div t:type="ck/Window" t:id="window1" style="bluelighting" show="false" modal="true" title="literal:Window 1">
- <h3>Test Window</h3>
+ <div t:type="ck/Window" t:id="windowComment" show="false" modal="true"
+ title="literal:Ajouter un commentaire" width="488" height="210">
<p>
- <input t:type="textarea" t:id="comment" cols="20" rows="6" value="contact.comment" />
- <input t:type="submit" t:id="saveComment" class="ico22px save22px" value="Save"
- t:context="contact.topiaId" title="Enregistrer le commentaire" />
+ <textarea id="commentPopup" cols="50" rows="7" />
</p>
- </div>-->
+ <p> </p>
+ <p class="aright">
+ <a onclick="$('comment').setValue($F('commentPopup')); windowComment.close()" class="save">
+ <img src="${asset:context:}/img/save-22px.png" alt="Save comment" title="Enregistrer le commentaire"/>
+ </a>
+ </p>
+ </div>
<p:else>
- ${contact.comment}
+ <span t:type="ck/Tooltip" title="Commentaire" t:value="prop:contact.comment" t:effect="appear">
+ ${commentDisplayed}
+ </span>
</p:else>
</t:if>
</p:commentCell>
Modified: trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css 2010-01-21 12:23:50 UTC (rev 255)
+++ trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css 2010-01-22 07:37:49 UTC (rev 256)
@@ -129,6 +129,16 @@
white-space: nowrap;
}
+div#so-contacts table.t-data-grid tbody tr td.comment {
+ white-space: normal;
+ width: 100px;
+ text-align: center;
+}
+
+a.save {
+ cursor: pointer;
+}
+
td.validation, td.mammals, /* TEMP */
div#so-contacts table.t-data-grid tbody td.validation,
div#so-contacts table.t-data-grid tbody td.mammals {
@@ -158,3 +168,9 @@
input.nbObservants {
width: 18px;
}
+
+textarea.hidden-textarea {
+ border: 0;
+ width: 0;
+ height: 0;
+}
1
0
21 Jan '10
Author: fdesbois
Date: 2010-01-21 12:23:50 +0000 (Thu, 21 Jan 2010)
New Revision: 255
Modified:
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.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/BusinessUtils.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.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/Boats.properties
trunk/suiviobsmer-ui/src/main/webapp/Boats.tml
trunk/suiviobsmer-ui/src/main/webapp/css/common.css
trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css
Log:
Evol #2030 : Refactor boats using AbstractFilteredPage + improve and add javadoc
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java 2010-01-21 09:39:18 UTC (rev 254)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java 2010-01-21 12:23:50 UTC (rev 255)
@@ -46,29 +46,34 @@
@Override
public TopiaQuery prepareQueryForSampling(TopiaQuery query, String main) {
- //query = super.prepareQuery(query);
- //String sampleRow = main + ".sampleRow";
-
+ // SampleRow filter depends on SampleRow or sectorName or facadeName
if (getSampleRow() != null) {
query.add(main, getSampleRow());
- } else if (!StringUtils.isEmpty(getSectorName())) {
+ } else if (StringUtils.isNotEmpty(getSectorName())) {
query.addFrom(FishingZone.class.getName() + " F");
query.add("F." + FishingZone.SECTOR_NAME, getSectorName()).add(main + " IN elements(F." + FishingZone.SAMPLE_ROW + ")");
- } else if (!StringUtils.isEmpty(getFacadeName())) {
+ } else if (StringUtils.isNotEmpty(getFacadeName())) {
query.addFrom(FishingZone.class.getName() + " F");
query.add("F." + FishingZone.FACADE_NAME, getFacadeName()).add(main + " IN elements(F." + FishingZone.SAMPLE_ROW + ")");
}
+ // Profession filter
+ if (getProfession() != null) {
+ query.add(main + "." + SampleRow.PROFESSION, getProfession());
+ }
+
+ // Period filter on sampleRow dates
if (getPeriod() != null) {
getPeriod().initDayOfMonthExtremities();
query.add(main + "." + SampleRow.PERIOD_BEGIN, Op.LT, getPeriod().getThruDate()).
add(main + "." + SampleRow.PERIOD_END, Op.GT, getPeriod().getFromDate());
}
- if (getNbMonthFinishedFromToday() != null) {
+ /** Finished rows constraint only needed if an other filter is set **/
+ if (isSamplingFiltered() && getNbMonthFinishedFromToday() != null) {
// Only rows which are not finished will be kept
- //Date current = SuiviObsmerContext.getCurrentDate();
+ // Date current = SuiviObsmerContext.getCurrentDate();
Calendar calendar = new GregorianCalendar();
calendar.setTime(SuiviObsmerContext.getCurrentDate());
calendar.add(Calendar.MONTH, getNbMonthFinishedFromToday());
@@ -78,4 +83,10 @@
return query;
}
+ @Override
+ public boolean isSamplingFiltered() {
+ return getSampleRow() != null || StringUtils.isNotEmpty(getSectorName()) || StringUtils.isNotEmpty(getFacadeName()) ||
+ getPeriod() != null || getProfession() != null;
+ }
+
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-01-21 09:39:18 UTC (rev 254)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImpl.java 2010-01-21 12:23:50 UTC (rev 255)
@@ -111,33 +111,35 @@
String main = query.getMainAlias();
query = filter.prepareQueryForBoat(query, main);
- boolean sampleRowCodeFiltered = !StringUtils.isEmpty(filter.getSampleRowCode());
- boolean professionFiltered = filter.getProfession() != null;
- boolean fishingZoneFiltered = filter.getFishingZone() != null;
- boolean sampleRowFiltered = sampleRowCodeFiltered || professionFiltered || fishingZoneFiltered;
+// boolean sampleRowCodeFiltered = !StringUtils.isEmpty(filter.getSampleRowCode());
+// boolean professionFiltered = filter.getProfession() != null;
+// boolean fishingZoneFiltered = filter.getFishingZone() != null;
+// boolean sampleRowFiltered = sampleRowCodeFiltered || professionFiltered || fishingZoneFiltered;
- // Add join for ElligibleBoat
- if (sampleRowFiltered) {
+ // Sampling filter
+ if (filter.isSamplingFiltered()) {
+ // Add join for ElligibleBoat
String elligibleBoatClassName = ElligibleBoat.class.getName();
query.addFrom(elligibleBoatClassName + " E").add("E.boat = " + main);
- }
- // SampleRowCode
- if (sampleRowCodeFiltered) {
- query.add("E.sampleRow.code", filter.getSampleRowCode());
- }
- // Profession
- if (professionFiltered) {
- query.add("E.sampleRow.profession", filter.getProfession());
- }
+ query = filter.prepareQueryForSampling(query, "E." + ElligibleBoat.SAMPLE_ROW);
- // TODO FishingZone
-
- // Company : only if an other filter is set for the sampleRow
- if (filter.getCompany() != null && sampleRowFiltered) {
- query.add("E.sampleRow.company", filter.getCompany());
- query.add("E.companyActive = :booleanTrue OR (E.companyActive IS NULL AND E.globalActive = :booleanTrue)").
- addParam("booleanTrue", Boolean.TRUE);
+ // Company
+ if (filter.getCompany() != null) {
+ query.add("E." + ElligibleBoat.SAMPLE_ROW + "." + SampleRow.COMPANY, filter.getCompany());
+ // Test only valid ElligibleBoat for that company
+ query.add("E." + ElligibleBoat.COMPANY_ACTIVE + " = :booleanTrue " +
+ "OR (E." + ElligibleBoat.COMPANY_ACTIVE + " IS NULL AND E." + ElligibleBoat.GLOBAL_ACTIVE + " = :booleanTrue)");
+ query.addParam("booleanTrue", Boolean.TRUE);
+ }
}
+// // SampleRowCode
+// if (sampleRowCodeFiltered) {
+// query.add("E.sampleRow.code", filter.getSampleRowCode());
+// }
+// // Profession
+// if (professionFiltered) {
+// query.add("E.sampleRow.profession", filter.getProfession());
+// }
return query;
}
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java
===================================================================
--- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2010-01-21 09:39:18 UTC (rev 254)
+++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/impl/ServiceBoatImplTest.java 2010-01-21 12:23:50 UTC (rev 255)
@@ -152,7 +152,7 @@
// Exec with filter on SampleRowCode and company
filter = new BoatFilterImpl();
- filter.setSampleRowCode("2009_03");
+ filter.setSampleRow(rows.get(0)); // Code = 2009_03
filter.setCompany(company);
boats = service.getBoatsByFilter(filter);
assertEquals(2, boats.size());
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-01-21 09:39:18 UTC (rev 254)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java 2010-01-21 12:23:50 UTC (rev 255)
@@ -67,6 +67,7 @@
* - Select change, use JavaScript :
* <script type="text/javascript">
* Event.observe('facadeName', 'change', function() { $('filtersForm').submit(); } );
+ * Event.observe('sectorName', 'change', function() { $('filtersForm').submit(); } );
* Event.observe('company', 'change', function() { $('filtersForm').submit(); } );
* </script>
* </pre>
@@ -124,7 +125,14 @@
@Property
private String observerId;
- protected void initFilter() throws SuiviObsmerException {
+ /**
+ * Initialize all select for filters. By default, only facade, sector and sampleRow selects will be initialized.
+ *
+ * @param companySelect if true, company select will be initialized
+ * @param observerSelect if true, observer select will be initialized
+ * @throws SuiviObsmerException
+ */
+ protected void initSelectFilters(boolean companySelect, boolean observerSelect) throws SuiviObsmerException {
facadeSelectModel = null;
getFacadeSelectModel();
@@ -137,7 +145,7 @@
sampleRowId = getFilter().getSampleRow().getTopiaId();
}
- if (user.getAdmin()) {
+ if (user.getAdmin() && companySelect) {
companySelectModel = null;
getCompanySelectModel();
if (getFilter().getCompany() != null) {
@@ -150,11 +158,13 @@
getFilter().setCompany(user.getCompany());
}
- observerSelectModel = null;
- getObserverSelectModel();
+ if (observerSelect) {
+ observerSelectModel = null;
+ getObserverSelectModel();
- if (getFilter().getObserver() != null) {
- observerId = getFilter().getObserver().getTopiaId();
+ if (getFilter().getObserver() != null) {
+ observerId = getFilter().getObserver().getTopiaId();
+ }
}
}
@@ -229,12 +239,15 @@
protected abstract BoatFilter getFilter() throws SuiviObsmerException;
- protected abstract void resetFilter();
-
// protected abstract Zone getSampleRowFilterZone();
//
// protected abstract Zone getObserverFilterZone();
+ /**
+ * Used to show only active company and observers.
+ *
+ * @return true if only active users will be showed, false either
+ */
protected abstract boolean getAvailableDataForFiltersOnly();
public String[] onProvideCompletionsFromBoatName(String input) throws SuiviObsmerException {
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BusinessUtils.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BusinessUtils.java 2010-01-21 09:39:18 UTC (rev 254)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/BusinessUtils.java 2010-01-21 12:23:50 UTC (rev 255)
@@ -120,7 +120,7 @@
return result;
}
- public static String getCSSColorClassForContact(Contact contact, boolean admin) {
+ public static String getContactStyle(Contact contact, boolean admin) {
String result = "";
ContactState state = ContactState.createContactStateEnum(contact.getState());
if (BooleanUtils.isFalse(contact.getValidationProgram()) ||
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-01-21 09:39:18 UTC (rev 254)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-01-21 12:23:50 UTC (rev 255)
@@ -27,8 +27,6 @@
import fr.ifremer.suiviobsmer.entity.Boat;
import fr.ifremer.suiviobsmer.bean.BoatFilter;
import fr.ifremer.suiviobsmer.bean.CompanyBoatInfos;
-import fr.ifremer.suiviobsmer.bean.SamplingFilter;
-import fr.ifremer.suiviobsmer.bean.SamplingFilterImpl;
import fr.ifremer.suiviobsmer.entity.BoatInfos;
import fr.ifremer.suiviobsmer.entity.Company;
import fr.ifremer.suiviobsmer.entity.Contact;
@@ -41,6 +39,7 @@
import fr.ifremer.suiviobsmer.services.ServiceReferential;
import fr.ifremer.suiviobsmer.services.ServiceSampling;
import fr.ifremer.suiviobsmer.services.ServiceUser;
+import fr.ifremer.suiviobsmer.ui.base.AbstractFilteredPage;
import fr.ifremer.suiviobsmer.ui.data.BusinessUtils;
import fr.ifremer.suiviobsmer.ui.base.GenericSelectModel;
import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage;
@@ -89,7 +88,7 @@
* par : $Author$
*/
@IncludeStylesheet("context:css/boats.css")
-public class Boats implements SuiviObsmerPage {
+public class Boats extends AbstractFilteredPage implements SuiviObsmerPage {
@Override
public boolean isOnlyForAdmin() {
@@ -119,7 +118,7 @@
private PropertyAccess propertyAccess;
@Property
- private String sampleRowCode;
+ private String sampleRowContextId;
@InjectComponent
private FeedBack filterFeedback;
@@ -127,57 +126,45 @@
void setupRender() throws SuiviObsmerException {
sampleRow = null;
getSampleRow();
+ // Profession select reset
professionSelectModel = null;
getProfessionSelectModel();
- fishingZoneSelectModel = null;
- getFishingZoneSelectModel();
- sampleRowSelectModel = null;
- getSampleRowSelectModel();
- // Suppress persistant boat informations for selected boat
- //boatInfos = null;
- companyBoatInfos = null;
- boatSelectedImmatriculation = null;
+ // Manage sampleRow from context
if (isSampleRowExists()) {
+ // Filters will be set and displayed
+ getFilter().setSampleRow(sampleRow);
filtersHidden = false;
boats = null;
filterFeedback.addInfo("Vous êtes en cours de sélection d'un navire pour la ligne du plan " + sampleRow.getCode());
professionId = getSampleRow().getProfession().getTopiaId();
- // FIXME FD-20100121 Missing filter for fishingZone --> Need use of AbstratFilteredPage
- //fishingZoneId = getSampleRow().getFirstFishingZone().getTopiaId();
- getBoatFilter().setSampleRowCode(getSampleRow().getCode());
}
+
+ // Initialize filters using AbstractFilteredPage superclass
+ initSelectFilters(true, false);
+ // Only rows which are not finished nearly one month
+ getFilter().setNbMonthFinishedFromToday(-1);
+
+ companyBoatInfos = null;
+ boatSelectedImmatriculation = null;
}
void onActivate(EventContext ec) {
if (ec.getCount() > 0) {
- sampleRowCode = ec.get(String.class, 0);
+ sampleRowContextId = ec.get(String.class, 0);
}
}
String onPassivate() {
- return sampleRowCode;
+ return sampleRowContextId;
}
/**************************** Import Forms ********************************/
- /**
- * Fichier CSV contenant une liste de navires.
- */
+ /** Csv file for boats import */
@Property
private UploadedFile boatsCsvFile;
- @InjectComponent
- private Form importBoatsForm;
-
- /**
- * Récupération des exceptions du champs d'upload de fichier.
- */
- /*Object onUploadException(FileUploadException ex) {
- createListForm.recordError("Upload exception: " + ex.getMessage());
- return this;
- }*/
-
@Log
void onSuccessFromImportBoatsForm() {
//importBoatsForm.clearErrors();
@@ -189,9 +176,9 @@
} catch (SuiviObsmerException eee) {
layout.getFeedBack().addError(eee.getMessage());
}
- //return importBoatsForm.getHasErrors() ? importBoatsForm : this;
}
+ /** Csv file for activityCalendar import, can be a Gzip file */
@Property
private UploadedFile activityCalendarsCsvFile;
@@ -258,55 +245,61 @@
/**************************** Filters Form *****************************************/
+ /** Filters to apply on boats list */
@Persist
private BoatFilter boatFilter;
+ /** Current sampleRow from context */
@Persist
private SampleRow sampleRow;
+ /** Profession select */
@Persist
- private GenericSelectModel<SampleRow> sampleRowSelectModel;
-
- @Persist
private GenericSelectModel<Profession> professionSelectModel;
@Property
private String professionId;
+ /** Used to manage view of filters zone */
@Persist
- private GenericSelectModel<FishingZone> fishingZoneSelectModel;
-
- @Property
- private String fishingZoneId;
-
- @Persist
private boolean filtersHidden;
@InjectComponent
private Zone filtersZone;
- public BoatFilter getBoatFilter() throws SuiviObsmerException {
+ /**
+ * Filters to apply on boats list. Method used by AbstractFilteredPage superclass.
+ *
+ * @return the current BoatFilter to apply
+ * @throws SuiviObsmerException
+ * @see AbstractFilteredPage
+ */
+ @Override
+ public BoatFilter getFilter() throws SuiviObsmerException {
if (boatFilter == null) {
boatFilter = new BoatFilterImpl();
- if (log.isDebugEnabled()) {
- log.debug("new BoatFilter");
- }
- if (!user.getAdmin()) {
- if (log.isDebugEnabled()) {
- log.debug("set company for boatFilter");
- }
- boatFilter.setCompany(user.getCompany());
- }
}
return boatFilter;
}
+ @Override
+ protected boolean getAvailableDataForFiltersOnly() {
+ return true;
+ }
+
+ /**
+ * Retrieve sampleRow from business with id from url context. The sampleRowId from context is set by SamplingPlan page.
+ * When the sampleRow is not null, the filters are disabled to optimize searching boats for this row.
+ *
+ * @return the sampleRow from business
+ * @throws SuiviObsmerException
+ */
public SampleRow getSampleRow() throws SuiviObsmerException {
- if (sampleRow == null && !StringUtils.isEmpty(sampleRowCode)) {
+ if (sampleRow == null && !StringUtils.isEmpty(sampleRowContextId)) {
if (log.isInfoEnabled()) {
log.info("BUSINESS REQUEST [getSampleRow]");
}
- sampleRow = serviceSampling.getSampleRow(sampleRowCode);
+ sampleRow = serviceSampling.getSampleRow(sampleRowContextId);
}
return sampleRow;
}
@@ -315,25 +308,6 @@
return getSampleRow() != null;
}
- public GenericSelectModel<SampleRow> getSampleRowSelectModel() throws SuiviObsmerException {
- if (sampleRowSelectModel == null) {
- if (log.isInfoEnabled()) {
- log.info("BUSINESS REQUEST [getSampleRowsForUser]");
- }
- // FIXME-FD20100118 Refactor filter system using AbstractFilteredPage
- SamplingFilter filter = new SamplingFilterImpl();
- // Used to test if the rows are finished with a gap of 1 month (today - 1 month)
- filter.setNbMonthFinishedFromToday(-1);
- if (!user.getAdmin()) {
- filter.setCompany(user.getCompany());
- }
- List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(filter);
- sampleRowSelectModel = new GenericSelectModel<SampleRow>(sampleRows, SampleRow.class,
- "code", "code", propertyAccess);
- }
- return sampleRowSelectModel;
- }
-
public GenericSelectModel<Profession> getProfessionSelectModel() throws SuiviObsmerException {
if (professionSelectModel == null) {
if (log.isInfoEnabled()) {
@@ -346,28 +320,11 @@
return professionSelectModel;
}
- public GenericSelectModel<FishingZone> getFishingZoneSelectModel() throws SuiviObsmerException {
- if (fishingZoneSelectModel == null) {
- if (log.isInfoEnabled()) {
- log.info("BUSINESS REQUEST [getFishingZones]");
- }
- List<FishingZone> fishingZones = null;
- if (isSampleRowExists()) {
- fishingZones = getSampleRow().getFishingZone();
- } else {
- fishingZones = serviceReferential.getFishingZones();
- }
- fishingZoneSelectModel = new GenericSelectModel<FishingZone>(fishingZones, FishingZone.class,
- "code", "topiaId", propertyAccess);
- }
- return fishingZoneSelectModel;
- }
-
public boolean isFiltersHidden() {
return filtersHidden;
}
- public String getHiddenClass() {
+ public String getHiddenStyle() {
return isFiltersHidden() ? "hidden" : "";
}
@@ -380,18 +337,28 @@
filtersHidden = true;
return filtersZone.getBody();
}
-
+
+ /**
+ * EVENT_SELECTED :: reset submit button for filtersForm. Reset filters and sampleRow from context.
+ */
void onSelectedFromReset() {
- // Suppress persistant boat filter
+ // Suppress persistant boat filter and sampleRowId in url context.
boatFilter = null;
- sampleRowCode = null;
+ sampleRowContextId = null;
}
+ /**
+ * EVENT_SELECTED :: search sumit button for filtersForm. Get profession from selectModel to add it in filters.
+ * Other filters are managed by AbstractFilteredPage superclass.
+ *
+ * @throws SuiviObsmerException for business errors
+ * @see AbstractFilteredPage
+ */
void onSelectedFromSearch() throws SuiviObsmerException {
if (log.isDebugEnabled()) {
- //log.debug("SUBMIT : facadeChange=" + facadeChangeSelected);
- log.debug("FILTER : fishingZone=" + boatFilter.getFishingZone());
- log.debug("FILTER : sampleRowCode=" + boatFilter.getSampleRowCode());
+ log.debug("FILTER : facadeName=" + boatFilter.getFacadeName());
+ log.debug("FILTER : sectorName=" + boatFilter.getSectorName());
+ log.debug("FILTER : sampleRow=" + boatFilter.getSampleRow());
log.debug("FILTER : profession=" + boatFilter.getProfession());
log.debug("FILTER : boatName=" + boatFilter.getBoatName());
log.debug("FILTER : boatImmatriculation=" + boatFilter.getBoatImmatriculation());
@@ -399,57 +366,66 @@
log.debug("FILTER : company=" + boatFilter.getCompany());
}
Profession profession = getProfessionSelectModel().findObject(professionId);
- FishingZone fishingZone = getFishingZoneSelectModel().findObject(fishingZoneId);
boatFilter.setProfession(profession);
- boatFilter.setFishingZone(fishingZone);
}
+ /**
+ * EVENT_SUCCESS :: for filtersForm. Reset persitant data to have new data using filters selected.
+ *
+ * @throws SuiviObsmerException for business errors
+ */
void onSuccessFromFiltersForm() throws SuiviObsmerException {
// Suppress persistant boats list to get new one with filter
boats = null;
// Suppress persistant immatriculation for boat selected
boatSelectedImmatriculation = null;
// Suppress persistant boat informations for boat selected
- //boatInfos = null;
companyBoatInfos = null;
}
/**************************** Boats List *****************************************/
-
+
+ /** DataSource containing the boats */
@Persist
-// private Map<Integer, Boat> boats;
private BoatDataSource boats;
+ /** Selected boat immatriculation for showing boatInfos */
@Property
@Persist
private Integer boatSelectedImmatriculation;
+ /** Current boat in the Grid */
@Property
private Boat boat;
+ /** Used to change style a line on two */
private boolean even = true;
+ /** Used to refresh boats Grid */
@InjectComponent
private Zone boatsZone;
+ /**
+ * Get dataSource which contains current boats to show on the page. Depends on filters sets by user.
+ * BoatDataSource uses serviceBoat to retrieve boats with filters.
+ *
+ * @return the BoatDataSource which contains the boats map
+ * @throws SuiviObsmerException
+ * @see BoatDataSource
+ */
public BoatDataSource getBoats() throws SuiviObsmerException {
if (boats == null) {
- boats = new BoatDataSource(getBoatFilter(), serviceBoat);
+ boats = new BoatDataSource(getFilter(), serviceBoat);
}
return boats;
}
-// public Map<Integer, Boat> getBoats() throws SuiviObsmerException {
-// if (boats == null) {
-// if (log.isInfoEnabled()) {
-// log.info("BUSINESS REQUEST [getBoatsByFilter]");
-// }
-// boats = serviceBoat.getBoatsByFilter(boatFilter);
-// }
-// return boats;
-// }
-
- public String getRowClass() {
+ /**
+ * Initialized row CSS style depends on selection in the list. The style is also changed a line on two.
+ *
+ * @return the CSS style class to used for the current row in the Grid
+ */
+ public String getRowStyle() {
String result = "";
even = !even;
if (boatSelectedImmatriculation != null &&
@@ -469,9 +445,6 @@
public boolean canCreateNewContactFromList() throws SuiviObsmerException {
if (!user.getAdmin() && isSampleRowExists()) {
-// if (getSampleRow().isFinished()) {
-// return false;
-// }
return boat.canCreateContact(user.getCompany());
}
return false;
@@ -480,15 +453,7 @@
Block onActionFromShowBoatInfos(Integer boatImma) {
boatSelectedImmatriculation = boatImma;
// Suppress persistant boat informations
- //boatInfos = null;
- companyBoatInfos = null;
- //companyId = null;
-
- // Initialize from Date for boarding calcul in BoatInfos
- Calendar calendar = new GregorianCalendar();
- calendar.add(Calendar.MONTH, -12);
- boardingFromDate = calendar.getTime();
-
+ companyBoatInfos = null;
return boatsZone.getBody();
}
@@ -514,15 +479,6 @@
private boolean boatInfosEditable;
- @Inject
- private ServiceUser serviceUser;
-
- private GenericSelectModel<Company> companySelectModel;
-
- @Property
- private String companyId;
-
- @Property
private Date boardingFromDate;
/*@Persist
@@ -534,10 +490,6 @@
return SuiviObsmerContext.isActivityCalendarImportRun();
}
- public boolean canShowActiveBoatInfos() {
- return (user.getAdmin() && companyId != null) || !user.getAdmin();
- }
-
public Block getActiveBoatInfosBlock() {
if (boatInfosEditable) {
return editBoatInfos;
@@ -545,52 +497,74 @@
return displayBoatInfos;
}
- public Company getCompany() throws SuiviObsmerException {
- if (user.getAdmin() && companyId != null) {
- return getCompanySelectModel().findObject(companyId);
- }
- return user.getCompany();
- }
-
- public GenericSelectModel<Company> getCompanySelectModel() throws SuiviObsmerException {
- if (companySelectModel == null) {
- if (log.isDebugEnabled()) {
- log.debug("BUSINESS REQUEST [getCompanies]");
- }
- List<Company> companies = serviceUser.getCompanies(true);
- companySelectModel = new GenericSelectModel<Company>(companies,Company.class,
- "name","topiaId",propertyAccess);
- }
- return companySelectModel;
- }
-
public CompanyBoatInfos getCompanyBoatInfos() throws SuiviObsmerException {
if (companyBoatInfos == null && boatSelectedImmatriculation != null) {
if (log.isInfoEnabled()) {
log.info("BUSINESS REQUEST [getElligibleBoats]");
}
+ // Use filter to retrieve company
+ Company company = getFilter().getCompany() != null ? getFilter().getCompany() : user.getCompany();
companyBoatInfos =
- serviceBoat.getCompanyBoatInfos(boatSelectedImmatriculation, getCompany());
+ serviceBoat.getCompanyBoatInfos(boatSelectedImmatriculation, company);
}
return companyBoatInfos;
}
+ /**
+ * Used to get the selected boat name. This method is useful to avoid problems when using only boatInfos.
+ * Actually, the name is displayed when the boat is selected.
+ *
+ * @return
+ * @throws SuiviObsmerException
+ */
public String getBoatName() throws SuiviObsmerException {
- Boat boat = null;
+ Boat selectedBoat = null;
if (getBoatInfos() != null) {
- boat = getBoatInfos().getBoat();
+ selectedBoat = getBoatInfos().getBoat();
+ } else {
+ selectedBoat = getBoats().get(boatSelectedImmatriculation);
}
- boat = getBoats().get(boatSelectedImmatriculation);
- return boat.getName();
+ return selectedBoat.getName();
}
+ /**
+ * Date for calculate boardings done for the selected boat. All boardings (number of contacts) will be calculated from this date.
+ * Initialized as 12 months from today, but can be set by user.
+ *
+ * @return the Date used to calculate boardings done on the selected boat
+ */
+ public Date getBoardingFromDate() {
+ if (boardingFromDate == null) {
+ Calendar calendar = new GregorianCalendar();
+ calendar.add(Calendar.MONTH, -12);
+ boardingFromDate = calendar.getTime();
+ }
+ return boardingFromDate;
+ }
+
+ /**
+ * Used by Tapestry to set the boardingFromDate from calculateBoardings form.
+ *
+ * @param boardingFromDate used to calculate boardings done on the selected boat
+ */
+ public void setBoardingFromDate(Date boardingFromDate) {
+ this.boardingFromDate = boardingFromDate;
+ }
+
public BoatInfos getBoatInfos() throws SuiviObsmerException {
return getCompanyBoatInfos().getBoatInfos();
}
- public String getlastContactClass() throws SuiviObsmerException {
+ /**
+ * Get CSS style class to apply on lastContact depends on its state.
+ *
+ * @return the CSS style to apply on contact block
+ * @throws SuiviObsmerException
+ * @see BusinessUtils#getContactStyle(Contact, boolean)
+ */
+ public String getlastContactStyle() throws SuiviObsmerException {
Contact contact = getCompanyBoatInfos().getLastContact();
- return BusinessUtils.getCSSColorClassForContact(contact, user.getAdmin());
+ return BusinessUtils.getContactStyle(contact, user.getAdmin());
}
/** /////////////////////// FOR EACH ELLIGIBLEBOAT ROW ///////////////// **/
@@ -604,20 +578,15 @@
}
public boolean canCreateNewContactFromElligibleBoat() throws SuiviObsmerException {
- if (!user.getAdmin() && !isElligibleBoatCompanyActiveFalse()) {
-// SampleRow row = elligibleBoat.getSampleRow();
-// if (row.isFinished()) {
-// return false;
-// }
+ if (!user.getAdmin() && !isElligibleBoatCompanyActiveFalse()) {
Boat boat = getBoatInfos().getBoat();
return boat.canCreateContact(user.getCompany());
}
return false;
}
- public String getElligibleRowClass() {
+ public String getElligibleRowStyle() {
boolean condition1 = elligibleBoat.getCompanyActive() == null && !elligibleBoat.getGlobalActive();
-
return condition1 || isElligibleBoatCompanyActiveFalse() ? "line-through" : "";
}
@@ -677,10 +646,6 @@
}
Block onSuccessFromCalculateBoardings() throws SuiviObsmerException {
- // Reinitialiaze companyId for select (admin only)
- if (user.getAdmin()) {
- companyId = getCompanyBoatInfos().getCompany().getTopiaId();
- }
return boatInfosZone.getBody();
}
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-21 09:39:18 UTC (rev 254)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-21 12:23:50 UTC (rev 255)
@@ -114,7 +114,7 @@
private String editableContactId;
void setupRender() throws SuiviObsmerException {
- initFilter();
+ initSelectFilters(true ,true);
contacts = null;
getContacts();
contactsForm.clearErrors();
@@ -152,12 +152,6 @@
protected BoatFilter getFilter() throws SuiviObsmerException {
return getContactFilter();
}
-
- @Override
- protected void resetFilter() {
- contactFilter = null;
- filtersVisible = false;
- }
// @Override
// protected Zone getSampleRowFilterZone() {
@@ -347,7 +341,7 @@
}
public String getRowClass() {
- String result = BusinessUtils.getCSSColorClassForContact(contact, user.getAdmin());
+ String result = BusinessUtils.getContactStyle(contact, user.getAdmin());
if (contact.getTopiaId().equals(contactSelectedId)) {
result = "selected";
}
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-01-21 09:39:18 UTC (rev 254)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-01-21 12:23:50 UTC (rev 255)
@@ -77,7 +77,7 @@
private User user;
void setupRender() throws SuiviObsmerException {
- initFilter();
+ initSelectFilters(true, false);
//getFilter().setUnfinishedRowsOnly(false);
}
@@ -113,11 +113,6 @@
return dataSamplingFilter;
}
- @Override
- protected void resetFilter() {
- dataSamplingFilter = null;
- }
-
// @Override
// protected Zone getSampleRowFilterZone() {
// return sampleRowZone;
@@ -174,7 +169,7 @@
void onSuccessFromFiltersForm() {
if (reset) {
- resetFilter();
+ dataSamplingFilter = null;
}
}
Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties
===================================================================
--- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties 2010-01-21 09:39:18 UTC (rev 254)
+++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties 2010-01-21 12:23:50 UTC (rev 255)
@@ -3,7 +3,7 @@
# FILTERS
sampleRow-label: Ligne du plan
-fishingZone-label: Zone de p\u00EAche
+facadeName-label: Fa\u00E7ade
profession-label: M\u00E9tier du plan
boatName-label: Navire
districtCode-label: Quartier
Modified: trunk/suiviobsmer-ui/src/main/webapp/Boats.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-01-21 09:39:18 UTC (rev 254)
+++ trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-01-21 12:23:50 UTC (rev 255)
@@ -64,20 +64,22 @@
</t:if>
</div>
<t:feedback t:id="filterFeedback" />
- <div class="so-filters-form ${hiddenClass}">
+ <div class="so-filters-form ${hiddenStyle}">
<form t:type="form" t:id="filtersForm">
<t:errors />
<div class="t-beaneditor">
- <t:beaneditor t:id="filtersEditor" t:object="boatFilter"
- t:include="boatName" t:add="sampleRow, fishingZone, profession" t:reorder="sampleRow, fishingZone, profession, boatName">
+ <t:beaneditor t:id="filtersEditor" t:object="filter"
+ t:include="boatName" t:add="facade, sampleRow, profession" t:reorder="facade, sampleRow, profession, boatName">
+ <p:facade>
+ <t:label t:for="facadeName" />
+ <select t:type="select" t:id="facadeName" t:model="facadeSelectModel" value="filter.facadeName" />
+ <span> zone </span>
+ <select t:type="select" t:id="sectorName" t:model="sectorSelectModel" value="filter.sectorName" />
+ </p:facade>
<p:sampleRow>
<t:label t:for="sampleRow" />
- <select t:type="select" t:id="sampleRow" t:disabled="sampleRowExists" t:model="sampleRowSelectModel" value="boatFilter.sampleRowCode" />
+ <select t:type="select" t:id="sampleRow" t:disabled="sampleRowExists" t:model="sampleRowSelectModel" value="sampleRowId" />
</p:sampleRow>
- <p:fishingZone>
- <t:label t:for="fishingZone" />
- <select t:type="select" t:id="fishingZone" t:model="fishingZoneSelectModel" value="fishingZoneId" />
- </p:fishingZone>
<p:profession>
<t:label t:for="profession" />
<select t:type="select" t:id="profession" t:disabled="sampleRowExists" t:model="professionSelectModel" value="professionId" />
@@ -85,11 +87,11 @@
<p:boatName>
<t:label t:for="boatName" />
<span> nom </span>
- <input t:type="textfield" t:id="boatName" t:value="boatFilter.boatName" />
+ <input t:type="textfield" t:id="boatName" t:value="filter.boatName" t:mixins="Autocomplete" />
<span> immatriculation </span>
- <input t:type="textfield" t:id="boatImmatriculation" class="width50" t:value="boatFilter.boatImmatriculation" />
+ <input t:type="textfield" t:id="boatImmatriculation" class="width50" t:value="filter.boatImmatriculation" />
<span> code quartier </span>
- <input t:type="textfield" t:id="boatDistrictCode" class="width50" t:value="boatFilter.boatDistrictCode" />
+ <input t:type="textfield" t:id="boatDistrictCode" class="width50" t:value="filter.boatDistrictCode" />
</p:boatName>
</t:beaneditor>
<div class="t-beaneditor-row aright">
@@ -108,7 +110,7 @@
<div class="fleft" id="so-boats-list">
<h1>Liste des navires</h1>
<div t:type="grid" t:source="boats" t:row="boat"
- t:include="name, immatriculation, districtCode, boatLength, buildYear" t:rowClass="prop:rowClass" t:rowsPerPage="20">
+ t:include="name, immatriculation, districtCode, boatLength, buildYear" t:rowClass="prop:rowStyle" t:rowsPerPage="20">
<p:nameCell>
<t:if t:test="canCreateNewContactFromList()">
<a t:type="actionlink" t:id="addNewContactFromBoat" t:context="boat.immatriculation">
@@ -137,7 +139,7 @@
</form>
</t:if>
<!-- BODY - delegator -->
- <t:if t:test="canShowActiveBoatInfos()">
+ <t:if t:test="filter.company">
<t:delegate to="activeBoatInfosBlock" />
</t:if>
<!-- BODY - activity calendar -->
@@ -194,7 +196,7 @@
<t:if t:test="companyBoatInfos.lastContact">
<fieldset id="so-boats-boat-infos-lastcontact">
<legend>Dernier contact avec le navire pour votre société</legend>
- <div class="${lastContactClass}">
+ <div class="${lastContactStyle}">
<dl t:type="beandisplay" t:id="boatInfosLastContact" t:object="companyBoatInfos.lastContact"
t:include="referenceDate, state" t:add="createdBy, sampleRowCode">
<p:createdBy>
@@ -233,7 +235,7 @@
</p>
<p class="sep"> </p>
<p>
- <form t:type="form" t:id="CalculateBoardings" t:zone="so-boats-boat-infos">
+ <form t:type="form" t:id="calculateBoardings" t:zone="so-boats-boat-infos">
<t:label t:for="fromDate"/> :
<input t:type="datefield" t:id="fromDate" class="width70" value="boardingFromDate" />
<input t:type="submit" class="ico refresh" t:id="refreshBoardings" value="Refresh" title="Recalculer les embarquements"/>
@@ -249,7 +251,7 @@
<ul>
<li t:type="loop" t:source="companyBoatInfos.elligibleBoatsValues" t:value="elligibleBoat">
<span t:type="ck/Tooltip" title="Infos" t:value="prop:elligibleRowInfos" t:effect="appear">
- <span class="${elligibleRowClass}">
+ <span class="${elligibleRowStyle}">
${elligibleBoat.sampleRow.code}
</span>
</span>
@@ -329,7 +331,7 @@
<ul>
<li t:type="loop" t:source="companyBoatInfos.elligibleBoatsValues" volatile="true" t:value="elligibleBoat">
<span t:type="ck/Tooltip" title="Infos" t:value="prop:elligibleRowInfos" t:effect="appear">
- <span class="${elligibleRowClass}">
+ <span class="${elligibleRowStyle}">
${elligibleBoat.sampleRow.code}
</span>
</span>
@@ -359,7 +361,9 @@
</t:if>
</div>
-
-
-
+ <!-- Script for filters change -->
+ <script type="text/javascript">
+ Event.observe('facadeName', 'change', function() { $('filtersForm').submit(); } );
+ Event.observe('sectorName', 'change', function() { $('filtersForm').submit(); } );
+ </script>
</t:layout>
Modified: trunk/suiviobsmer-ui/src/main/webapp/css/common.css
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/css/common.css 2010-01-21 09:39:18 UTC (rev 254)
+++ trunk/suiviobsmer-ui/src/main/webapp/css/common.css 2010-01-21 12:23:50 UTC (rev 255)
@@ -291,7 +291,11 @@
font-weight: bold;
}
+div.t-autocomplete-menu ul {
+ background-color: #19a28d;
+}
+
/***** ZONE IMPORT *****/
div.so-import {
width: 60%;
Modified: trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css 2010-01-21 09:39:18 UTC (rev 254)
+++ trunk/suiviobsmer-ui/src/main/webapp/css/contacts.css 2010-01-21 12:23:50 UTC (rev 255)
@@ -46,9 +46,9 @@
border: 1px outset black;
}
-div#so-contacts-search div.t-autocomplete-menu ul {
+/*div#so-contacts-search div.t-autocomplete-menu ul {
background-color: #19a28d;
-}
+}*/
div#so-contacts-search a {
text-decoration: none;
1
0
21 Jan '10
Author: fdesbois
Date: 2010-01-21 09:39:18 +0000 (Thu, 21 Jan 2010)
New Revision: 254
Modified:
trunk/changelog.txt
Log:
- Ano #2019 : Add header for multiple zone in samplingPlan (refactor getFirstFishingZone by two methods getFacade and getSectors)
Modified: trunk/changelog.txt
===================================================================
--- trunk/changelog.txt 2010-01-21 09:37:59 UTC (rev 253)
+++ trunk/changelog.txt 2010-01-21 09:39:18 UTC (rev 254)
@@ -1,6 +1,11 @@
Release note
============
+0.1.2
+-----
+
+- [fdesbois] Ano #2019 : L'affichage des zones sur le plan d'échantillonnage n'est pas cohérent avec les lignes.
+
0.1.1
-----
1
0