Author: fdesbois Date: 2010-01-25 19:10:01 +0000 (Mon, 25 Jan 2010) New Revision: 270 Added: trunk/suiviobsmer-ui/src/main/webapp/js/wao.js 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/SamplingPlan.java trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.tml 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/resources/fr/ifremer/suiviobsmer/ui/pages/UserProfile.properties trunk/suiviobsmer-ui/src/main/webapp/Administration.tml 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/SampleRowForm.tml trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml trunk/suiviobsmer-ui/src/main/webapp/css/main.css trunk/suiviobsmer-ui/src/main/webapp/css/news.css trunk/suiviobsmer-ui/src/main/webapp/css/sampling.css Log: - Change some style and text - Improve comment popup 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-25 10:46:47 UTC (rev 269) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-25 19:10:01 UTC (rev 270) @@ -110,19 +110,19 @@ @Inject private ServiceBoat serviceBoat; - @Persist(PersistenceConstants.FLASH) - private String editableContactId; +// @Persist(PersistenceConstants.FLASH) +// private String contactEditedId; @Log void setupRender() throws SuiviObsmerException { - if (StringUtils.isEmpty(editableContactId)) { +// if (contactEdited == null) { if (log.isDebugEnabled()) { log.debug("RESET DATA"); } initSelectFilters(true ,true); contacts = null; getContacts(); - } +// } String boatName = getFilter().getBoatName(); boolean companyFiltered = getFilter().getCompany() != null && user.getAdmin(); // Show filters only if no boatName is set @@ -157,7 +157,7 @@ if (contactFilter == null) { contactFilter = new ContactFilterImpl(); // Initialized to 12 months before the current day - Date fromDate = DateUtils.createDateAfterToday(0, -6, 0); + Date fromDate = DateUtils.createDateAfterToday(0, -3, 0); contactFilter.setFromDate(fromDate); } return contactFilter; @@ -310,7 +310,7 @@ public ContactState getContactState() { if (contactState == null) { // initialization - this.contactState = ContactState.createContactStateEnum(contact.getState()); + this.contactState = ContactState.createContactStateEnum(contactEdited.getState()); } return this.contactState; } @@ -337,6 +337,10 @@ return contact.getComment(); } + public String getCommentTooltip() { + return contact.getComment().replaceAll("\n", "<br />").replaceAll("\r", ""); + } + public String getSampleRowDescription() { return BusinessUtils.getTooltipSampleRow(contact.getSampleRow()); } @@ -362,7 +366,8 @@ } public boolean isEditionMode() { - return contact.getTopiaId().equals(editableContactId); + //return contact.getTopiaId().equals(contactEditedId); + return contactEdited != null && contact.equals(contactEdited); } public boolean isEmpty(Boolean validation) { @@ -374,13 +379,24 @@ /** * Flag to know if it's only edition (=true) or save action (=false) */ - private boolean contactEdited; + private boolean edited; - private boolean contactDeleted; + private boolean deleted; @Persist + @Property + private Contact contactEdited; + + @Persist private String oldComment; + public void prepareContactEdited(String contactId) throws SuiviObsmerException { + if (contactEdited == null) { + contactEdited = getContacts().get(contactId); + } + //contact = contactEdited; + } + public boolean hasActions() { return !user.getAdmin() && contact.getValidationCompany() == null; } @@ -407,72 +423,79 @@ } void onSelectedFromAcceptContact(String contactId) throws SuiviObsmerException { - contact = getContacts().get(contactId); + //contact = getContacts().get(contactId); + prepareContactEdited(contactId); if (user.getAdmin()) { - contact.setValidationProgram(Boolean.TRUE); + contactEdited.setValidationProgram(Boolean.TRUE); } else { // For company accepted, addRealTideTime - contact.getSampleRow().addRealTideTime(contact); - contact.setValidationCompany(Boolean.TRUE); + contactEdited.getSampleRow().addRealTideTime(contactEdited); + contactEdited.setValidationCompany(Boolean.TRUE); } } void onSelectedFromRefuseContact(String contactId) throws SuiviObsmerException { - contact = getContacts().get(contactId); + //contact = getContacts().get(contactId); + prepareContactEdited(contactId); if (user.getAdmin()) { // For program refused, removeRealTideTime - contact.getSampleRow().removeRealTideTime(contact); - contact.setValidationProgram(Boolean.FALSE); + contactEdited.getSampleRow().removeRealTideTime(contactEdited); + contactEdited.setValidationProgram(Boolean.FALSE); } else { - contact.setValidationCompany(Boolean.FALSE); + contactEdited.setValidationCompany(Boolean.FALSE); } } void onSelectedFromUnvalidateContact(String contactId) throws SuiviObsmerException { - contact = getContacts().get(contactId); + //contact = getContacts().get(contactId); + prepareContactEdited(contactId); if (user.getAdmin()) { // For program unvalidate from previous refused validation, addRealTideTime - if (BooleanUtils.isFalse(contact.getValidationProgram())) { - contact.getSampleRow().addRealTideTime(contact); + if (BooleanUtils.isFalse(contactEdited.getValidationProgram())) { + contactEdited.getSampleRow().addRealTideTime(contactEdited); } - contact.setValidationProgram(null); + contactEdited.setValidationProgram(null); } else { // For company unvalidate from previous accepted validation, // removeRealTideTime - if (BooleanUtils.isTrue(contact.getValidationCompany())) { - contact.getSampleRow().removeRealTideTime(contact); + if (BooleanUtils.isTrue(contactEdited.getValidationCompany())) { + contactEdited.getSampleRow().removeRealTideTime(contactEdited); } - contact.setValidationCompany(null); + contactEdited.setValidationCompany(null); } } void onSelectedFromEditContact(String contactId) throws SuiviObsmerException { - contact = getContacts().get(contactId); - contactUserId = contact.getUser().getTopiaId(); - editableContactId = contactId; + //contact = getContacts().get(contactId); + prepareContactEdited(contactId); + contactUserId = contactEdited.getUser().getTopiaId(); + //contactEditedId = contactId; contactSelectedId = contactId; - oldComment = contact.getComment(); - contactEdited = true; + oldComment = contactEdited.getComment(); + edited = true; } void onSelectedFromDeleteContact(String contactId) throws SuiviObsmerException { - contact = getContacts().get(contactId); - contactDeleted = true; + //contact = getContacts().get(contactId); + prepareContactEdited(contactId); + deleted = true; } void onSelectedFromSaveContact(String contactId) throws SuiviObsmerException { - contact = getContacts().get(contactId); - contact.setState(contactState.toString()); + //contact = getContacts().get(contactId); + prepareContactEdited(contactId); + contactEdited.setState(contactState.toString()); User contactUser = getUserSelectModel().findObject(contactUserId); - contact.setUser(contactUser); + contactEdited.setUser(contactUser); if (log.isDebugEnabled()) { - log.debug("Comment : " + contact.getComment()); + log.debug("Comment : " + contactEdited.getComment()); } } void onSelectedFromCancelEditContact() throws SuiviObsmerException { - contactEdited = true; + contactEdited = null; + edited = true; } // @Log @@ -493,6 +516,9 @@ private Form contactsForm; @InjectComponent + private Zone gridZone; + + @InjectComponent private Field beginDate; @InjectComponent @@ -501,8 +527,8 @@ @InjectComponent private Field nbObservants; -// @InjectComponent -// private Field comment; + @InjectComponent + private Field comment; @InjectComponent private Field inputDate; @@ -512,16 +538,16 @@ contactsForm.clearErrors(); // Validation for saving contact depends on contactState (only edition // form) - if (!contactEdited && contactState != null) { + if (!edited && contactState != null) { if (log.isInfoEnabled()) { log.info("For state : " + contactState); } - Date begin = contact.getTideBeginDate(); - Date end = contact.getTideEndDate(); - Date input = contact.getDataInputDate(); - SampleRow row = contact.getSampleRow(); - DateFormat dateFormat = new SimpleDateFormat("MM/yyyy"); + Date begin = contactEdited.getTideBeginDate(); + Date end = contactEdited.getTideEndDate(); + Date input = contactEdited.getDataInputDate(); + SampleRow row = contactEdited.getSampleRow(); + //DateFormat dateFormat = new SimpleDateFormat("MM/yyyy"); if (begin != null && !row.isValid(begin)) { contactsForm.recordError(beginDate, @@ -548,16 +574,16 @@ // Non abouti, Refus ou Refus Définitif if (contactState.isUnfinishedState()) { - if (oldComment != null && StringUtils.isNotEmpty(contact.getComment()) && !oldComment.equals(contact.getComment())) { + if (oldComment != null && StringUtils.isNotEmpty(contactEdited.getComment()) && !oldComment.equals(contactEdited.getComment())) { // RAZ des champs - contact.setTideBeginDate(null); - contact.setTideEndDate(null); - contact.setNbObservants(0); - contact.setMammalsCapture(false); - contact.setMammalsObservation(false); - contact.setDataInputDate(null); + contactEdited.setTideBeginDate(null); + contactEdited.setTideEndDate(null); + contactEdited.setNbObservants(0); + contactEdited.setMammalsCapture(false); + contactEdited.setMammalsObservation(false); + contactEdited.setDataInputDate(null); } else { - contactsForm.recordError("Vous devez ajouter un commentaire pour l'état '" + contactState + "'"); + contactsForm.recordError(comment, "Vous devez ajouter un commentaire pour l'état '" + contactState + "'"); } // Embarquement Réalisé } else if (contactState.equals(ContactState.BOARDING_DONE)) { @@ -567,7 +593,7 @@ if (end == null) { contactsForm.recordError(endDate, "La date de fin de marée est obligatoire pour l'état '" + contactState + "'"); } - if (contact.getNbObservants() == 0) { + if (contactEdited.getNbObservants() == 0) { contactsForm.recordError(nbObservants, "Il ne peut y avoir aucun observateur pour l'état '" + contactState + "'"); } } @@ -576,14 +602,15 @@ @Log Object onSuccessFromContactsForm() { - if (!contactEdited) { + if (!edited) { try { if (log.isDebugEnabled()) { - log.debug("Contact save : " + contact); + log.debug("Contact save : " + contactEdited); } - serviceContact.saveContact(contact, contactDeleted); - contactSelectedId = contact.getTopiaId(); + serviceContact.saveContact(contactEdited, deleted); + contactSelectedId = contactEdited.getTopiaId(); oldComment = null; + contactEdited = null; } catch (SuiviObsmerException eee) { layout.getFeedBack().addError(eee.getMessage()); } @@ -598,14 +625,15 @@ } // The contact is not saved, the contact must be editable to show form // and correct errors - contactEdited = true; - editableContactId = contact.getTopiaId(); + edited = true; + //contactEditedId = contact.getTopiaId(); return contactsForm; + //return gridZone; } public void createNewContact(Boat boat, SampleRow sampleRow) throws SuiviObsmerException { contact = serviceContact.getNewContact(user, sampleRow, boat); serviceContact.saveContact(contact, Boolean.FALSE); - contactSelectedId = contact.getTopiaId(); + contactSelectedId = contact.getTopiaId(); } } Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java 2010-01-25 10:46:47 UTC (rev 269) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java 2010-01-25 19:10:01 UTC (rev 270) @@ -283,6 +283,10 @@ return NumberFormat.getPercentInstance().format(result); } + public NumberFormat getNumberFormat() { + return NumberFormat.getNumberInstance(); + } + /** ------------------------- HTML & STYLE ------------------------------ **/ @Property Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.tml =================================================================== --- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.tml 2010-01-25 10:46:47 UTC (rev 269) +++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/components/Layout.tml 2010-01-25 19:10:01 UTC (rev 270) @@ -5,9 +5,10 @@ <title>WAO - Web Applicatif Obsmer : ${pageTitle}</title> <link rel="stylesheet" type="text/css" href="${asset:context:}/css/common.css" /> <link rel="stylesheet" type="text/css" href="${asset:context:}/css/main.css" /> - </head> - <body> - <t:if t:test="currentUserExists"> + <script type="text/javascript" src="${asset:context:}/js/wao.js"/> + </head> + <t:if t:test="currentUserExists"> + <body> <div id="so-session" class="clearfix"> <div class="fleft"> <a t:type="pagelink" t:page="index" title="Page d'accueil"> @@ -58,7 +59,7 @@ </li> </t:if> </ul> - + <div id="${contentId}"> <t:feedback t:id="contentFeedback" /> <t:if t:test="canShowPage()"> @@ -68,7 +69,7 @@ <div id="so-footer"> <a href="http://suiviobsmer.labs.libre-entreprise.org/suiviobsmer/" title="Documentation de l'application" target="blank"> WAO - </a> + </a> <a href="http://suiviobsmer.labs.libre-entreprise.org/suiviobsmer/release-note.html" title="Modifications faites pour cette version" target="blank"> ${version} </a> - @@ -80,7 +81,7 @@ </a> - <a href="http://www.gnu.org/licenses/gpl.html" title="License GPL v3" target="blank"> GPLv3 - </a> - Copyright 2009-2010 + </a> - Copyright 2009-2010 <a href="http://agriculture.gouv.fr/sections/thematiques/peche-aquaculture" title="Direction des Pêches Maritimes et de l'Aquaculture" target="blank"> DPMA</a>, <a href="http://www.ifremer.fr" title="Ifremer" target="blank"> @@ -93,9 +94,11 @@ Bugs </a>--> </div> + </body> - <!-- Connexion --> - <p:else> + <!-- Connexion --> + <p:else> + <body class="so-connexion"> <div id="so-connexion-feedback"> <t:feedback t:id="connexionFeedback" /> <t:if t:test="hasConnexionErrors()"> @@ -107,7 +110,7 @@ </form> </t:if> </div> - <div class="clearfix" id="so-connexion"> + <div class="clearfix" id="so-connexion-box"> <form t:id="connexionForm" t:type="form"> <div class="fleft clearfix" id="so-connexion-form"> <p><t:label for="login" /> : </p> @@ -115,7 +118,6 @@ <p><t:label for="password" /> : </p> <p><input t:type="passwordfield" t:id="password" t:value="password" /></p> <div class="fright" id="so-connexion-form-buttons"> - <input class="ico refuse" type="reset" value="Annuler" title="Annuler" /> <input class="ico accept" t:type="submit" value="Connexion" title="Connexion à l'application SuiviObsmer" /> </div> </div> @@ -124,10 +126,11 @@ </div> </form> </div> - <!--<div class="acenter"> - <img src="${asset:context:}/img/logo_WAO.png" alt="Logo WAO" title="WAO - Web Applicatif Obsmer"/> - </div>--> - </p:else> - </t:if> - </body> + + </body> + <!--<div class="acenter"> + <img src="${asset:context:}/img/logo_WAO.png" alt="Logo WAO" title="WAO - Web Applicatif Obsmer"/> + </div>--> + </p:else> + </t:if> </html> 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-25 10:46:47 UTC (rev 269) +++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties 2010-01-25 19:10:01 UTC (rev 270) @@ -27,5 +27,5 @@ contactPhoneNumber-label: T\u00E9l\u00E9phone contactEmail-label: E-mail shipOwner-label: Armateur -fromDate-label: Embarquements depuis le +fromDate-label: Sollicitations du navire depuis le dup-label: Capacit\u00E9 d'accueil du navire en personnels sp\u00E9cialis\u00E9s \ 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-25 10:46:47 UTC (rev 269) +++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties 2010-01-25 19:10:01 UTC (rev 270) @@ -26,6 +26,7 @@ professionCode-label: M\u00E9tier professionLibelle-label: Libell\u00E9 m\u00E9tier professionSpecies-label: Esp\u00E8ces cibles +validation-label: Validations # 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/UserProfile.properties =================================================================== --- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/UserProfile.properties 2010-01-25 10:46:47 UTC (rev 269) +++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/UserProfile.properties 2010-01-25 19:10:01 UTC (rev 270) @@ -1,6 +1,8 @@ -login-label: Identifiant de connexion (e-mail) +firstName-label: Pr\u00E9nom +lastName-label: Nom +login-label: Id. connexion (email) name-label: Pr\u00E9nom et nom phoneNumber-label: T\u00E9l\u00E9phone -password-label: Nouveau password -password2-label: V\u00E9rification password +password-label: Nouveau mot de passe +password2-label: V\u00E9rification mot de passe active-label: Actif \ 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-25 10:46:47 UTC (rev 269) +++ trunk/suiviobsmer-ui/src/main/webapp/Administration.tml 2010-01-25 19:10:01 UTC (rev 270) @@ -9,7 +9,7 @@ <t:errors /> <t:label for="fishingZoneCsvFile" /> : <input t:type="upload" t:id="fishingZoneCsvFile" t:validate="required" /> - <input t:type="submit" class="ico import" value="OK" title="Importer des zones de pêche" /> + <input t:type="submit" class="ico import" value="OK" title="Importer des zones de pêche (format CSV avec encodage UTF-8)" /> </form> </fieldset> </div> Modified: trunk/suiviobsmer-ui/src/main/webapp/BoatActivityCalendar.tml =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/BoatActivityCalendar.tml 2010-01-25 10:46:47 UTC (rev 269) +++ trunk/suiviobsmer-ui/src/main/webapp/BoatActivityCalendar.tml 2010-01-25 19:10:01 UTC (rev 270) @@ -5,9 +5,9 @@ <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"> + <a t:type="pagelink" class="return" t:context="[norow,activityCalendar.boat.immatriculation]" t:page="boats" title="Retour sur ${activityCalendar.boat.name}"> <img src="${asset:context:}/img/boat.png" alt="Navire"/> - Retour sur ${activityCalendar.boat.name} + Revenir sur les informations du navire <img src="${asset:context:}/img/boat.png" alt="Navire"/> </a> </p> Modified: trunk/suiviobsmer-ui/src/main/webapp/Boats.tml =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-01-25 10:46:47 UTC (rev 269) +++ trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-01-25 19:10:01 UTC (rev 270) @@ -11,7 +11,7 @@ <t:errors /> <t:label for="boatsCsvFile" /> : <input t:type="upload" t:id="boatsCsvFile" t:validate="required" /> - <input t:type="submit" class="ico import" value="OK" title="Importer une liste de navires (format CSV)" /> + <input t:type="submit" class="ico import" value="OK" title="Importer une liste de navires (format CSV avec encodage UTF-8)" /> </form> <!--/t:zone--> </fieldset> @@ -25,7 +25,7 @@ <t:label for="activityCalendarsCsvFile" /> : <input t:type="upload" t:id="activityCalendarsCsvFile" t:validate="required" /> <input t:type="submit" class="ico import" value="OK" - title="Importer les calendriers d'activité des navires (format CSV)" /> + title="Importer les calendriers d'activité des navires (format CSV avec encodage UTF-8)" /> </form> <t:if t:test="logFileExists"> <div class="fright"> @@ -183,7 +183,7 @@ <!-- ACTIONS --> <div class="fright"> <a t:type="actionlink" t:id="editBoatInfos" t:zone="so-boats-boat-infos"> - <img src="${asset:context:}/img/edit.png" title="Editer les informations"/> + <img src="${asset:context:}/img/edit-32px.png" title="Editer les informations"/> </a> </div> </div> @@ -227,7 +227,7 @@ <label>${message:dup-label} : </label> <t:if t:test="boatInfos.dup"> ${boatInfos.dup} - <p:else>aucun</p:else> + <p:else>non renseigné</p:else> </t:if> </p> <p class="sep"> </p> @@ -239,12 +239,12 @@ </form> </p> <p> - <strong>${boatInfos.getNbBoarding(boardingFromDate)}</strong> embarquements + <strong>${boatInfos.getNbBoarding(boardingFromDate)}</strong> embarquement(s) dont <strong>${boatInfos.getNbBoardingForCompany(boardingFromDate)}</strong> dans votre société </p> <t:if t:test="companyBoatInfos.elligibleBoatsValues.size()"> <p class="sep"> </p> - <label>Ligne(s) du plan :</label> + <label>Ligne(s) du plan associée(s) à ce navire :</label> <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"> @@ -286,10 +286,10 @@ </div> <!-- En-tête - actions --> <div class="fright"> - <input t:type="submit" t:id="saveBoatInfos" class="ico22px save22px" value="Save" + <input t:type="submit" t:id="saveBoatInfos" class="ico save" value="Save" title="Enregistrer les modifications" /> <a t:type="actionlink" t:id="cancelEditBoatInfos" t:zone="so-boats-boat-infos"> - <img src="${asset:context:}/img/undo-22px.png" title="Annuler les modifications"/> + <img src="${asset:context:}/img/undo.png" title="Annuler les modifications"/> </a> </div> </div> Modified: trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-25 10:46:47 UTC (rev 269) +++ trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-25 19:10:01 UTC (rev 270) @@ -57,14 +57,15 @@ <t:label t:for="sampleRow" />: <input t:type="select" t:id="sampleRow" t:model="sampleRowSelectModel" value="sampleRowId" /> <!-- Contact filter --> - <label>Mammifères: </label> + <label>Observations: </label> <input t:type="checkbox" t:id="mammalsObservation1" value="contactFilter.mammalsObservation" /> <t:label t:for="mammalsObservation1"> - <img src="${asset:context:}/img/eye-22px.png" alt="Observations de mammifères" title="Observations de mammifères" /> + <img src="${asset:context:}/img/eye-22px.png" alt="Observations" title="Observations" /> </t:label> + <label>Captures acc.: </label> <input t:type="checkbox" t:id="mammalsCapture1" value="contactFilter.mammalsCapture" /> <t:label t:for="mammalsCapture1"> - <img src="${asset:context:}/img/fishing-net-22px.png" alt="Capture de mammifères" title="Capture de mammifères" /> + <img src="${asset:context:}/img/fishing-net-22px.png" alt="Captures" title="Captures" /> </t:label> </div><p> </p> <div> @@ -116,16 +117,22 @@ <t:errors /> <t:label for="contactsCsvFile" /> : <input t:type="upload" t:id="contactsCsvFile" t:validate="required" /> - <input t:type="submit" class="ico import" value="OK" title="Importer une liste de contacts (format CSV)" /> + <input t:type="submit" class="ico import" value="OK" title="Importer une liste de contacts (format CSV avec encodage UTF-8)" /> <a t:type="actionlink" t:id="exportShowContacts"> - EXPORT + <img src="${asset:context:}/img/file-export-22px.png" alt="Export" + title="Exporter les ${contacts.availableRows} contacts trouvés depuis le ${dateFormat.format(contactFilter.fromDate)}" /> </a> </form> </fieldset> </div> <!-- CONTACT LIST --> -<p><strong>${contacts.availableRows} contacts trouvés</strong></p> -<!--<t:zone t:id="gridZone" t:update="show">--> +<p> + <strong>${contacts.availableRows} contacts trouvés</strong> + <t:if t:test="contactFilter.fromDate"> + depuis le <t:output value="contactFilter.fromDate" format="dateFormat" /> + </t:if> +</p> +<t:zone t:id="gridZone"> <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" t:row="contact" class="t-data-grid ${gridClass}" t:model="contactModel" t:rowClass="prop:rowClass" @@ -157,44 +164,40 @@ </p:stateCell> <p:tideBeginDateCell> <t:if t:test="editionMode"> - <input t:type="datefield" t:id="beginDate" class="date" value="contact.tideBeginDate" /> + <input t:type="datefield" t:id="beginDate" class="date" value="contactEdited.tideBeginDate" /> <p:else><t:output value="contact.tideBeginDate" format="dateFormat" /></p:else> </t:if> </p:tideBeginDateCell> <p:tideEndDateCell> <t:if t:test="editionMode"> - <input t:type="datefield" t:id="endDate" class="date" value="contact.tideEndDate" /> + <input t:type="datefield" t:id="endDate" class="date" value="contactEdited.tideEndDate" /> <p:else><t:output value="contact.tideEndDate" format="dateFormat" /></p:else> </t:if> </p:tideEndDateCell> <p:nbObservantsCell> <t:if t:test="editionMode"> - <input t:type="textfield" t:id="nbObservants" class="nbObservants" value="contact.nbObservants" /> + <input t:type="textfield" t:id="nbObservants" class="nbObservants" value="contactEdited.nbObservants" /> <p:else>${contact.nbObservants}</p:else> </t:if> </p:nbObservantsCell> <p:mammalsCell> <t:if t:test="editionMode"> - <input t:type="checkbox" t:id="mammalsObservation" value="contact.mammalsObservation"/> + <input t:type="checkbox" t:id="mammalsObservation" value="contactEdited.mammalsObservation"/> <t:label t:for="mammalsObservation"> - <img src="${asset:context:}/img/eye-22px.png" alt="Observations de mammifères" - title="Observations de mammifères" /> + <img src="${asset:context:}/img/eye-22px.png" alt="Observations" + title="Observations" /> </t:label> - <input t:type="checkbox" t:id="mammalsCapture" value="contact.mammalsCapture" /> + <input t:type="checkbox" t:id="mammalsCapture" value="contactEdited.mammalsCapture" /> <t:label t:for="mammalsCapture"> - <img src="${asset:context:}/img/fishing-net-22px.png" alt="Capture de mammifères" - title="Capture de mammifères" /> + <img src="${asset:context:}/img/fishing-net-22px.png" alt="Captures" + title="Captures" /> </t:label> <p:else> - <!--t:booleanImage t:value="contact.mammalsObservation" - t:trueTitle="Observations de mammifères" t:falseTitle="Aucune observation faites" /> - <t:booleanImage t:value="contact.mammalsCapture" - t:trueTitle="Capture de mammifères" t:falseTitle="Aucune capture faites" /--> <t:if t:test="contact.mammalsObservation"> - <img src="${asset:context:}/img/eye-22px.png" alt="Observations de mammifères" title="Observations de mammifères" /> + <img src="${asset:context:}/img/eye-22px.png" alt="Observations" title="Observations" /> </t:if> <t:if t:test="contact.mammalsCapture"> - <img src="${asset:context:}/img/fishing-net-22px.png" alt="Capture de mammifères" title="Capture de mammifères" /> + <img src="${asset:context:}/img/fishing-net-22px.png" alt="Captures" title="Captures" /> </t:if> </p:else> </t:if> @@ -209,29 +212,19 @@ </p:validationCell> <p:dataInputDateCell> <t:if t:test="editionMode"> - <input t:type="datefield" t:id="inputDate" class="date" value="contact.dataInputDate" /> + <input t:type="datefield" t:id="inputDate" class="date" value="contactEdited.dataInputDate" /> <p:else><t:output value="contact.dataInputDate" format="dateFormat" /></p:else> </t:if> </p:dataInputDateCell> <p:commentCell> - <t:if t:test="editionMode"> - <!--<img src="${asset:context:}/img/comment-22px.png" alt="Add comment" t:type="any" - t:mixins="popupPageLink" t:title="Commentaire sur le contact" t:page="comment" t:context="contact.topiaId"/>--> -<!-- <img src="${asset:context:}/img/comment-22px.png" alt="Add comment" t:type="any" - t:mixins="window" t:title="Commentaire sur le contact" t:block="comment" /> - <t:block t:id="comment"> - <t:form t:id="commentForm"> - <input t:type="textarea" t:id="comment" cols="5" rows="3" value="contact.comment" /> - </t:form> - </t:block>--> - <!--<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" /> + <t:if t:test="editionMode"> + <!--<span t:type="ck/Tooltip" title="Commentaire" t:value="prop:commentTooltip" t:effect="appear">--> + <a href="#" onclick="openCommentWindow(windowComment, 'commentPopup', 'contact-comment', ${contactstate.isUnfinishedState()})"> + <img src="${asset:context:}/img/comment-22px.png" id="commentImg" alt="Add comment" /> </a> - </span> - <textarea t:type="textarea" t:id="comment" class="hidden" value="contact.comment" /> + <!--</span>--> + + <textarea t:type="textarea" t:id="comment" class="hidden contact-comment" value="contactEdited.comment" /> <div t:type="ck/Window" t:id="windowComment" show="false" modal="true" title="literal:Ajouter un commentaire" width="488" height="210"> @@ -240,16 +233,18 @@ </p> <p> </p> <p class="aright"> - <a onclick="$('comment').setValue($F('commentPopup')); windowComment.close()" class="save"> + <a onclick="closeCommentWindow(windowComment, 'commentPopup', 'contact-comment', ${contactstate.isUnfinishedState()}, 'commentImg', '${asset:context:}')" class="save"> <img src="${asset:context:}/img/save-22px.png" alt="Save comment" title="Enregistrer le commentaire"/> </a> </p> </div> <p:else> - <span t:type="ck/Tooltip" title="Commentaire" t:value="prop:contact.comment" t:effect="appear"> - ${commentDisplayed} - </span> + <t:if t:test="contact.comment"> + <span t:type="ck/Tooltip" title="Commentaire" t:value="prop:commentTooltip" t:effect="appear"> + ${commentDisplayed} + </span> + </t:if> </p:else> </t:if> </p:commentCell> @@ -294,6 +289,6 @@ </p:actionsCell> </div> </form> -<!--</t:zone>--> +</t:zone> </t:layout> Modified: trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml 2010-01-25 10:46:47 UTC (rev 269) +++ trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml 2010-01-25 19:10:01 UTC (rev 270) @@ -75,7 +75,7 @@ <!-- PROGRAM and SAMPLE MONTHS --> <fieldset> - <legend>Programme et données des marées par mois</legend> + <legend>Programme de rattachement et effort d'observation par mois</legend> <t:if t:test="sampleRow.hasSampleMonthRealTideTime()"> <!-- DISPLAY PROGRAM --> <dl class="t-beandisplay"> Modified: trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml 2010-01-25 10:46:47 UTC (rev 269) +++ trunk/suiviobsmer-ui/src/main/webapp/SamplingPlan.tml 2010-01-25 19:10:01 UTC (rev 270) @@ -10,7 +10,7 @@ <t:errors /> <t:label for="samplingPlanCsvFile" /> : <input t:type="upload" t:id="samplingPlanCsvFile" t:validate="required" /> - <input t:type="submit" class="ico import" value="OK" title="Importer un plan d'échantillonnage (format CSV)" /> + <input t:type="submit" class="ico import" value="OK" title="Importer un plan d'échantillonnage (format CSV avec encodage UTF-8)" /> </form> </fieldset> </div> @@ -21,7 +21,7 @@ <form t:type="form" t:id="periodForm"> <t:label t:for="periodBegin" /> : <input t:type="datefield" t:id="periodBegin" /> <t:label t:for="periodEnd" /> : <input t:type="datefield" t:id="periodEnd" /> - <input t:type="submit" class="ico search" value="Search" t:title="Afficher les lignes sur cette période" /> + <input t:type="submit" class="ico search" value="Search" t:title="Affichage des lignes du plan couverte par la période sélectionnée" /> </form> </div> <t:if t:test="user.admin"> @@ -45,7 +45,7 @@ <thead> <tr class="main"> <td colspan="${nbColumnsForProfession}">Métiers échantillonnés</td> - <td colspan="${nbColumnsForMonths}">Nombre de marées</td> + <td colspan="${nbColumnsForMonths}">Effort d'observation en nombre de marées [ planifié <em>(réalisé)</em> ]</td> <td colspan="${nbColumnsForOther}">Autres</td> </tr> <tr> @@ -74,8 +74,9 @@ <td class="width50"><t:output value="month" format="dateFormat" /></td> </t:loop> <td class="width50 bright">total</td> - <td class="width60">Durée moyenne d'une marée</td> - <td colspan="2" class="width60 bright">Nombre d'observateurs</td> + <td class="width60">Durée moyenne d'une marée (J.)</td> + <td class="width60 bright">Nb. d'observateurs</td> + <td> </td> </tr> </thead> <tbody> @@ -89,7 +90,7 @@ </t:if> <t:if t:test="sectorChanged"> <tr> - <td colspan="${nbColumnsTotal}" class="sector"> + <td colspan="${nbColumnsTotal}" class="sector bright bleft"> ${currentSectorName} </td> </tr> @@ -134,12 +135,16 @@ <td class="width50 acenter ${monthCurrentClass}"> ${nbTidesExpected} <t:if t:test="hasNbTidesReal()"> - <span class="${realTidesClass}">(${nbTidesReal})</span> + <span class="${realTidesClass}"><em>(${nbTidesReal})</em></span> </t:if> </td> </t:loop> - <td class="width50 acenter bright">${totalTidesExpected} (${totalTidesReal})<br /><strong>${totalPercentage}</strong></td> - <td class="width60 acenter">${row.averageTideTime}</td> + <td class="width50 acenter bright"> + <span t:type="ck/Tooltip" title="Infos" t:value="Total sur la période du ${dateFormat.format(periodBegin)} au ${dateFormat.format(periodEnd)}" t:effect="appear"> + ${totalTidesExpected} <em>(${totalTidesReal})</em><br /><strong>${totalPercentage}</strong> + </span> + </td> + <td class="width60 acenter"><t:output t:value="row.averageTideTime" t:format="numberFormat" /></td> <td class="width60 acenter bright">${row.nbObservants}</td> <!-- Actions --> <td class="${actionsClass} bright"> Modified: trunk/suiviobsmer-ui/src/main/webapp/css/main.css =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/css/main.css 2010-01-25 10:46:47 UTC (rev 269) +++ trunk/suiviobsmer-ui/src/main/webapp/css/main.css 2010-01-25 19:10:01 UTC (rev 270) @@ -34,6 +34,11 @@ } /* CONNEXION */ +body.so-connexion { + background: url(../img/background.jpg) repeat-x top left; +} + + div#so-connexion-feedback { margin-top: 50px; width: 60%; @@ -42,7 +47,12 @@ text-align: center; } -div#so-connexion { +div#so-connexion-feedback .fb-error, +div#so-connexion-feedback .fb-info { + background-color: #DEE7EC; +} + +div#so-connexion-box { margin-top: 50px; margin-left: auto; margin-right: auto; Modified: trunk/suiviobsmer-ui/src/main/webapp/css/news.css =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/css/news.css 2010-01-25 10:46:47 UTC (rev 269) +++ trunk/suiviobsmer-ui/src/main/webapp/css/news.css 2010-01-25 19:10:01 UTC (rev 270) @@ -24,6 +24,7 @@ div#so-news div.item h2 { margin: 5px; padding: 5px; + color: #007CC2; } div#so-news div.item div.content { Modified: trunk/suiviobsmer-ui/src/main/webapp/css/sampling.css =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/css/sampling.css 2010-01-25 10:46:47 UTC (rev 269) +++ trunk/suiviobsmer-ui/src/main/webapp/css/sampling.css 2010-01-25 19:10:01 UTC (rev 270) @@ -61,6 +61,10 @@ border-right: 2px solid black; } +div#so-sampling table tr.bbottom { + border-bottom: 2px solid black; +} + /* Specific styles for table body rows */ div#so-sampling table tbody td.current { background-color: yellow; Added: trunk/suiviobsmer-ui/src/main/webapp/js/wao.js =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/js/wao.js (rev 0) +++ trunk/suiviobsmer-ui/src/main/webapp/js/wao.js 2010-01-25 19:10:01 UTC (rev 270) @@ -0,0 +1,26 @@ +function openCommentWindow(window, commentPopupId, commentHiddenClass) { + window.showCenter(true); + var hidden = $$('.' + commentHiddenClass)[0]; + var value = hidden.getValue(); +// Tapestry.debug("unfinishedstate : " + unfinishedState); +// if (unfinishedState) { +// value += "\nRaison de l'échec :\n"; +// } + $(commentPopupId).setValue(value); +} + +function closeCommentWindow(window, commentPopupId, commentHiddenClass, unfinishedState, imgId, context) { + var hidden = $$('.' + commentHiddenClass)[0]; + var oldValue = hidden.getValue(); + var newValue = $F(commentPopupId); + var img = $(imgId); + if (oldValue != newValue) { + img.setAttribute('src', context + '/img/comment-valid-22px.png'); + img.setAttribute('title', 'Le commentaire a bien été ajouté'); + } else if (unfinishedState && oldValue == newValue) { + img.setAttribute('src', context + '/img/comment-invalid-22px.png'); + img.setAttribute('title', 'Le commentaire est obligatoire pour un échec'); + } + hidden.setValue(newValue); + window.close(); +} \ No newline at end of file