[Suiviobsmer-commits] r125 - in trunk: suiviobsmer-business/src/main/xmi suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/webapp suiviobsmer-ui/src/main/webapp/css
Author: fdesbois Date: 2009-12-16 18:26:29 +0000 (Wed, 16 Dec 2009) New Revision: 125 Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java trunk/suiviobsmer-ui/src/main/webapp/BoatActivityCalendar.tml trunk/suiviobsmer-ui/src/main/webapp/Boats.tml trunk/suiviobsmer-ui/src/main/webapp/css/boats.css Log: Page BoatActivityCalendar finished Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo =================================================================== (Binary files differ) 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 2009-12-16 13:47:02 UTC (rev 124) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/BoatActivityCalendar.java 2009-12-16 18:26:29 UTC (rev 125) @@ -3,11 +3,20 @@ import fr.ifremer.suiviobsmer.SuiviObsmerException; import fr.ifremer.suiviobsmer.entity.ActivityCalendar; +import fr.ifremer.suiviobsmer.entity.ActivityMonth; +import fr.ifremer.suiviobsmer.entity.ActivityProfession; +import fr.ifremer.suiviobsmer.entity.ActivityZone; import fr.ifremer.suiviobsmer.entity.Boat; import fr.ifremer.suiviobsmer.services.ServiceBoat; import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage; +import java.util.Collections; +import java.util.List; +import org.apache.commons.lang.StringUtils; +import org.apache.tapestry5.annotations.IncludeStylesheet; import org.apache.tapestry5.annotations.Persist; +import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.ioc.annotations.Inject; +import org.nuiton.util.DateUtils; import org.slf4j.Logger; /** @@ -21,6 +30,7 @@ * Mise a jour: $Date$ * par : $Author$ */ + at IncludeStylesheet("context:css/boats.css") public class BoatActivityCalendar implements SuiviObsmerPage { @Inject @@ -31,6 +41,18 @@ private ActivityCalendar activityCalendar; +// @Property +// private ActivityMonth activityMonth; + + @Property + private int month; + + @Property + private int professionIndex; + + @Property + private int zoneIndex; + @Persist private Boat boat; @@ -47,13 +69,85 @@ this.boat = boat; } + public Boat getBoat() { + return this.boat; + } + + public List<Boat> getBoats() { + return Collections.singletonList(boat); + } + public ActivityCalendar getActivityCalendar() throws SuiviObsmerException { if (activityCalendar == null) { if (log.isInfoEnabled()) { log.info("BUSINESS REQUEST [getLastActivityCalendar]"); } - this.activityCalendar = serviceBoat.getLastActivityCalendar(boat); + this.activityCalendar = serviceBoat.getLastActivityCalendar(getBoat()); } return activityCalendar; } + + public ActivityMonth getActivityMonth() throws SuiviObsmerException { + return getActivityCalendar().getActivityMonth(month); + } + + public String getMonthName() { + String libelle = DateUtils.getMonthLibelle(month); + return StringUtils.capitalize(libelle); + } + + public int getProfessionIndexMax() { + int result = 0; + for (ActivityMonth month : activityCalendar.getActivityMonth()) { + int nbProfessions = month.sizeActivityProfession(); + if (nbProfessions > result) { + result = nbProfessions; + } + } + return result-1; + } + + public boolean hasProfessions() { + return getProfessionIndexMax() != -1; + } + + public ActivityProfession getActivityProfession() throws SuiviObsmerException { + if (getActivityMonth() == null) { + return null; + } + if (professionIndex >= getActivityMonth().sizeActivityProfession()) { + return null; + } + return getActivityMonth().getActivityProfession().get(professionIndex); + } + + public int getZoneIndexMax() throws SuiviObsmerException { + int result = 0; + for (ActivityMonth activityMonth : activityCalendar.getActivityMonth()) { + month = activityMonth.getMonth(); + ActivityProfession profession = getActivityProfession(); + if (profession != null) { + int nbZones = profession.sizeActivityZone(); + if (nbZones > result) { + result = nbZones; + } + } + } + return result-1; + } + +// public boolean hasZones() { +// return getZoneIndexMax() != -1; +// } + + public ActivityZone getActivityZone() throws SuiviObsmerException { + ActivityProfession profession = getActivityProfession(); + if (profession == null) { + return null; + } + if (zoneIndex >= profession.sizeActivityZone()) { + return null; + } + return profession.getActivityZone().get(zoneIndex); + } } Modified: trunk/suiviobsmer-ui/src/main/webapp/BoatActivityCalendar.tml =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/BoatActivityCalendar.tml 2009-12-16 13:47:02 UTC (rev 124) +++ trunk/suiviobsmer-ui/src/main/webapp/BoatActivityCalendar.tml 2009-12-16 18:26:29 UTC (rev 125) @@ -3,7 +3,119 @@ xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter"> <t:if t:test="activityCalendar"> - <h1>Calendrier d'activité ${activityCalendar.year} du navire ${activityCalendar.boat.name}</h1> + <h1>Calendrier d'activité ${activityCalendar.year}</h1> + + <table t:type="grid" id="so-activity-calendar-boat" t:source="boats" t:row="boat" + t:include="immatriculation, districtCode, name, boatLength, buildYear" /> + + <table id="so-activity-calendar-months"> + <thead> + <tr> + <td class="none"> </td> + <td t:type="loop" class="month" t:source="1..12" t:value="month"> + ${monthName} + </td> + </tr> + </thead> + <tbody> + <tr> + <td class="title">Port exploit.</td> + <td t:type="loop" class="month" t:source="1..12" t:value="month"> + <t:if t:test="activityMonth"> + <span t:type="ck/Tooltip" title="Libelle" + t:value="prop:activityMonth.harbourLibelle" t:effect="appear"> + ${activityMonth.harbourCode} + </span> + <p:else> </p:else> + </t:if> + </td> + </tr> + <tr> + <td class="title">Actif/Inactif</td> + <td t:type="loop" class="month" t:source="1..12" t:value="month"> + <t:if t:test="activityMonth"> + <t:booleanImage t:value="activityMonth.active" t:trueTitle="Actif" t:falseTitle="Inactif"/> + <p:else> </p:else> + </t:if> + </td> + </tr> + <tr> + <td class="title">Hommes emb.</td> + <td t:type="loop" class="month" t:source="1..12" t:value="month"> + <t:if t:test="activityMonth"> + ${activityMonth.nbBoardingPersons} + <p:else> </p:else> + </t:if> + </td> + </tr> + <tr> + <td class="title">J. Mer eff.</td> + <td t:type="loop" class="month" t:source="1..12" t:value="month"> + <t:if t:test="activityMonth"> + ${activityMonth.nbSeaDays} + <p:else> </p:else> + </t:if> + </td> + </tr> + <tr> + <td class="title">J. Pêche eff.</td> + <td t:type="loop" class="month" t:source="1..12" t:value="month"> + <t:if t:test="activityMonth"> + ${activityMonth.nbFishingDays} + <p:else> </p:else> + </t:if> + </td> + </tr> + <t:if t:test="hasProfessions()"> + <t:loop t:source="0..${professionIndexMax}" t:index="professionIndex"> + <tr class="profession"> + <td class="title">Métier</td> + <td t:type="loop" class="month" t:source="1..12" t:value="month"> + <t:if t:test="activityProfession"> + <span t:type="ck/Tooltip" title="Libelle" + t:value="prop:activityProfession.libelle" t:effect="appear"> + ${activityProfession.code} + </span> + <p:else> </p:else> + </t:if> + </td> + </tr> + <tr t:type="loop" t:source="0..${zoneIndexMax}" t:index="zoneIndex"> + <td class="title">Zone/Grad.</td> + <td t:type="loop" class="zone month" t:source="1..12" t:value="month"> + <t:if t:test="activityZone"> + <span t:type="ck/Tooltip" title="Libelle" + t:value="prop:activityZone.zoneLibelle" t:effect="appear"> + ${activityZone.zoneCode} + </span> | + ${activityZone.gradiantLibelle} + <p:else> </p:else> + </t:if> + </td> + </tr> + </t:loop> + </t:if> + </tbody> + </table> + + +<!-- <p>Fiability : ${activityCalendar.fiability}</p> + <div t:type="loop" t:source="activityCalendar.activityMonth" t:value="activityMonth"> + <p>Month : ${activityMonth.month}</p> + <p>Harbour : ${activityMonth.harbourCode} - ${activityMonth.harbourLibelle}</p> + <p>Nb Observants : ${activityMonth.nbBoardingPersons}</p> + <p>Nb Sea Days : ${activityMonth.nbSeaDays}</p> + <p>Nb Fishing Days : ${activityMonth.nbFishingDays}</p> + <p>Active : ${activityMonth.active}</p> + <div t:type="loop" t:source="activityMonth.activityProfession" t:value="activityProfession"> + <p>Order : ${activityProfession.professionOrder}</p> + <p>Profession : ${activityProfession.code} - ${activityProfession.libelle}</p> + <div t:type="loop" t:source="activityProfession.activityZone" t:value="activityZone"> + <p>Zone : ${activityZone.zoneCode} - ${activityZone.zoneLibelle}</p> + <p>Gradiant : ${activityZone.gradiantCode} - ${activityZone.gradiantLibelle}</p> + </div> + </div> + </div>--> <p:else> <div class="fb-error"> Aucun calendrier d'activité chargé ! Modified: trunk/suiviobsmer-ui/src/main/webapp/Boats.tml =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2009-12-16 13:47:02 UTC (rev 124) +++ trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2009-12-16 18:26:29 UTC (rev 125) @@ -233,30 +233,33 @@ </t:if> </p> <p class="sep"> </p> + <p><label>Embarquements :</label></p> <p> <strong>${boatInfos.nbBoarding}</strong> embarquements dont <strong>${boatInfos.nbBoardingForCompany}</strong> pour votre société depuis le <strong><t:output value="boatInfos.firstBoardingDate" format="dateFormat" /></strong> </p> - <p class="sep"> </p> - <label>Ligne(s) du plan :</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"> - <span class="${elligibleRowClass}"> - ${elligibleBoat.sampleRow.code} - </span> - </span> - <t:if t:test="canCreateNewContactFromElligibleBoat()"> - <a t:type="actionlink" t:id="addNewContactFromSampleRow" t:context="elligibleBoat.sampleRow.code"> - <img src="${asset:context:}/img/contact-22px.png" title="Créer un nouveau contact pour ce navire et cette ligne du plan"/> - </a> - </t:if> - </li> - </ul> + <t:if t:test="companyBoatInfos.elligibleBoatsValues.size()"> + <p class="sep"> </p> + <label>Ligne(s) du plan :</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"> + <span class="${elligibleRowClass}"> + ${elligibleBoat.sampleRow.code} + </span> + </span> + <t:if t:test="canCreateNewContactFromElligibleBoat()"> + <a t:type="actionlink" t:id="addNewContactFromSampleRow" t:context="elligibleBoat.sampleRow.code"> + <img src="${asset:context:}/img/contact-22px.png" title="Créer un nouveau contact pour ce navire et cette ligne du plan"/> + </a> + </t:if> + </li> + </ul> + </t:if> <t:if t:test="boatInfos.comment"> <p class="sep"> </p> - <label>Commentaires : </label> + <label>Commentaire : </label> <p class="comment">${boatInfos.comment}</p> </t:if> </div> Modified: trunk/suiviobsmer-ui/src/main/webapp/css/boats.css =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/css/boats.css 2009-12-16 13:47:02 UTC (rev 124) +++ trunk/suiviobsmer-ui/src/main/webapp/css/boats.css 2009-12-16 18:26:29 UTC (rev 125) @@ -129,4 +129,69 @@ clear: both; font-size: 0.8em; font-weight: bold; +} + +/***** ACTIVITY CALENDAR ******/ +div#so-activity-calendar { + width: 80%; + margin-left: auto; + margin-right: auto; + margin-top: 20px; +} + +div#so-activity-calendar h1 { + text-align: center; +} + +table#so-activity-calendar-boat { + width: 80%; + margin-left: auto; + margin-right: auto; + margin-top: 10px; +} + +table#so-activity-calendar-months { + margin-top: 20px; + border-collapse: collapse; + font-size: 0.8em; +} + +table#so-activity-calendar-months tr, +table#so-activity-calendar-months td { + border: 1px solid silver; + padding: 2px; +} + +table#so-activity-calendar-months thead { + background-color: #19a28d; + color: white; + font-weight: bold; + padding: 3px; + text-align: center; +} + +table#so-activity-calendar-months thead tr { + border: 0; +} + +table#so-activity-calendar-months td.none { + background-color: white; + border: 0; +} + +table#so-activity-calendar-months td.month { + width: 200px; +} + +table#so-activity-calendar-months td.title { + width: 180px; + font-weight: bold; +} + +table#so-activity-calendar-months td.zone { + white-space: nowrap; +} + +table#so-activity-calendar-months tr.profession { + background-color: silver; } \ No newline at end of file
participants (1)
-
fdesbois@users.labs.libre-entreprise.org