r1763 - in trunk: wao-persistence/src/main/java/fr/ifremer/wao/entity wao-persistence/src/main/resources/i18n wao-services/src/main/java/fr/ifremer/wao/services wao-services/src/main/java/fr/ifremer/wao/services/service wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer wao-web/src/main/webapp/WEB-INF/content/obsmer wao-web/src/main/webapp/WEB-INF/decorators wao-web/src/main/webapp/css wao-web/src/main/webapp/js
Author: bleny Date: 2014-03-27 11:36:13 +0100 (Thu, 27 Mar 2014) New Revision: 1763 Url: http://forge.codelutin.com/projects/wao/repository/revisions/1763 Log: refs #4483 translate dcfs code labels in ui Added: trunk/wao-services/src/main/java/fr/ifremer/wao/services/WaoCacheElement.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/LocalizedSampleRowsFilterValues.java Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/TargetSpeciesDCFImpl.java trunk/wao-persistence/src/main/resources/i18n/wao-persistence_en_GB.properties trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SampleRowsFilterValuesJsonAction.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SamplingPlanAction.java trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/sampling-plan.jsp trunk/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp trunk/wao-web/src/main/webapp/css/wao.css trunk/wao-web/src/main/webapp/js/wao.js Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/TargetSpeciesDCFImpl.java =================================================================== --- trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/TargetSpeciesDCFImpl.java 2014-03-26 17:16:44 UTC (rev 1762) +++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/TargetSpeciesDCFImpl.java 2014-03-27 10:36:13 UTC (rev 1763) @@ -79,6 +79,6 @@ @Override public String getI18nKey() { - return "fr.ifr.mer.wao.entity.TargetSpeciesDCF." + getCode(); + return "fr.ifremer.wao.entity.TargetSpeciesDCF." + getCode(); } } Modified: trunk/wao-persistence/src/main/resources/i18n/wao-persistence_en_GB.properties =================================================================== --- trunk/wao-persistence/src/main/resources/i18n/wao-persistence_en_GB.properties 2014-03-26 17:16:44 UTC (rev 1762) +++ trunk/wao-persistence/src/main/resources/i18n/wao-persistence_en_GB.properties 2014-03-27 10:36:13 UTC (rev 1763) @@ -67,6 +67,7 @@ fr.ifremer.wao.entity.FishingGearDCF.FWR=Barriers, fences, weirs, etc. fr.ifremer.wao.entity.FishingGearDCF.FYK=Fyke nets fr.ifremer.wao.entity.FishingGearDCF.GEN=Gillnets and entangling nets (not specified) +fr.ifremer.wao.entity.FishingGearDCF.GES= fr.ifremer.wao.entity.FishingGearDCF.GN=Gillnets (not specified) fr.ifremer.wao.entity.FishingGearDCF.GNC=Encircling gillnets fr.ifremer.wao.entity.FishingGearDCF.GND=Driftnets Added: trunk/wao-services/src/main/java/fr/ifremer/wao/services/WaoCacheElement.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/WaoCacheElement.java (rev 0) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/WaoCacheElement.java 2014-03-27 10:36:13 UTC (rev 1763) @@ -0,0 +1,7 @@ +package fr.ifremer.wao.services; + +import java.io.Serializable; + +public interface WaoCacheElement extends Serializable { + +} Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java 2014-03-26 17:16:44 UTC (rev 1762) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java 2014-03-27 10:36:13 UTC (rev 1763) @@ -5,6 +5,7 @@ import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.SamplingStrategy; import fr.ifremer.wao.entity.TerrestrialLocation; +import org.apache.commons.lang3.tuple.Pair; import java.io.Serializable; import java.util.HashMap; @@ -33,11 +34,11 @@ protected Map<String, String> terrestrialDistricts = new HashMap<>(); - /** Values are the i18n keys. */ - protected Map<String, String> fishingGearDcfs = new HashMap<>(); + /** Values are the code and the label i18n key. */ + protected Map<String, Pair<String, String>> fishingGearDcfs = new HashMap<>(); - /** Values are the i18n keys. */ - protected Map<String, String> targetSpeciesDcfs = new HashMap<>(); + /** Values are the code and the label i18n key. */ + protected Map<String, Pair<String, String>> targetSpeciesDcfs = new HashMap<>(); public void addSampleRow(SampleRow sampleRow) { for (FishingZone fishingZone : sampleRow.getFishingZone()) { @@ -53,9 +54,15 @@ terrestrialDistricts.put(terrestrialDistrict.getTopiaId(), terrestrialDistrict.getDescription()); } for (DCF5Code dcf5Code : sampleRow.getdCF5Code()) { - fishingGearDcfs.put(dcf5Code.getFishingGearDCF().getTopiaId(), dcf5Code.getFishingGearDCF().getI18nKey()); + fishingGearDcfs.put( + dcf5Code.getFishingGearDCF().getTopiaId(), + Pair.of(dcf5Code.getFishingGearDCF().getCode(), + dcf5Code.getFishingGearDCF().getI18nKey())); if (dcf5Code.getTargetSpeciesDCF() != null) { - targetSpeciesDcfs.put(dcf5Code.getTargetSpeciesDCF().getTopiaId(), dcf5Code.getTargetSpeciesDCF().getI18nKey()); + targetSpeciesDcfs.put( + dcf5Code.getTargetSpeciesDCF().getTopiaId(), + Pair.of(dcf5Code.getTargetSpeciesDCF().getCode(), + dcf5Code.getTargetSpeciesDCF().getI18nKey())); } } } @@ -88,12 +95,11 @@ return terrestrialDistricts; } - public Map<String, String> getFishingGearDcfs() { + public Map<String, Pair<String, String>> getFishingGearDcfs() { return fishingGearDcfs; } - public Map<String, String> getTargetSpeciesDcfs() { + public Map<String, Pair<String, String>> getTargetSpeciesDcfs() { return targetSpeciesDcfs; } - } Added: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/LocalizedSampleRowsFilterValues.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/LocalizedSampleRowsFilterValues.java (rev 0) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/LocalizedSampleRowsFilterValues.java 2014-03-27 10:36:13 UTC (rev 1763) @@ -0,0 +1,82 @@ +package fr.ifremer.wao.web.action.obsmer; + +import fr.ifremer.wao.entity.SampleRow; +import fr.ifremer.wao.entity.SamplingStrategy; +import fr.ifremer.wao.services.WaoCacheElement; +import fr.ifremer.wao.services.service.SampleRowsFilterValues; +import org.apache.commons.lang3.tuple.Pair; +import org.nuiton.i18n.I18n; + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.Set; + +public class LocalizedSampleRowsFilterValues implements WaoCacheElement { + + protected Locale locale; + + protected SampleRowsFilterValues decorated; + + public LocalizedSampleRowsFilterValues(Locale locale, SampleRowsFilterValues decorated) { + this.locale = locale; + this.decorated = decorated; + } + + public void addSampleRow(SampleRow sampleRow) { + decorated.addSampleRow(sampleRow); + } + + public Set<String> getSampleRowCodes() { + return decorated.getSampleRowCodes(); + } + + public Set<SamplingStrategy> getSamplingStrategies() { + return decorated.getSamplingStrategies(); + } + + public Set<String> getFishingZoneSectorNames() { + return decorated.getFishingZoneSectorNames(); + } + + public Set<String> getProgramNames() { + return decorated.getProgramNames(); + } + + public Set<String> getFishingZoneFacadeNames() { + return decorated.getFishingZoneFacadeNames(); + } + + public Map<String, String> getCompanies() { + return decorated.getCompanies(); + } + + public Map<String, String> getTerrestrialDistricts() { + return decorated.getTerrestrialDistricts(); + } + + public Map<String, String> getFishingGearDcfs() { + Map<String, String> translated = new HashMap<>(); + for (Map.Entry<String, Pair<String, String>> entry : + decorated.getFishingGearDcfs().entrySet()) { + String topiaId = entry.getKey(); + String code = entry.getValue().getLeft(); + String i18nKey = entry.getValue().getRight(); + translated.put(topiaId, code + " " + I18n.l(locale, i18nKey)); + } + return translated; + } + + public Map<String, String> getTargetSpeciesDcfs() { + Map<String, String> translated = new HashMap<>(); + for (Map.Entry<String, Pair<String, String>> entry : + decorated.getTargetSpeciesDcfs().entrySet()) { + String topiaId = entry.getKey(); + String code = entry.getValue().getLeft(); + String i18nKey = entry.getValue().getRight(); + translated.put(topiaId, code + " " + I18n.l(locale, i18nKey)); + } + return translated; + } + +} Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SampleRowsFilterValuesJsonAction.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SampleRowsFilterValuesJsonAction.java 2014-03-26 17:16:44 UTC (rev 1762) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SampleRowsFilterValuesJsonAction.java 2014-03-27 10:36:13 UTC (rev 1763) @@ -15,7 +15,7 @@ protected transient SampleRowsFilter filter; - protected SampleRowsFilterValues filterValues; + protected LocalizedSampleRowsFilterValues filterValues; public void setService(ObsMerSamplingPlanService service) { this.service = service; @@ -40,12 +40,14 @@ ObsMerSamplingPlan samplingPlan = service.getSamplingPlan(filter); - filterValues = samplingPlan.getFilterValues(); + SampleRowsFilterValues filterValues = samplingPlan.getFilterValues(); + this.filterValues = new LocalizedSampleRowsFilterValues(getLocale(), filterValues); + return SUCCESS; } - public SampleRowsFilterValues getFilterValues() { + public LocalizedSampleRowsFilterValues getFilterValues() { return filterValues; } Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SamplingPlanAction.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SamplingPlanAction.java 2014-03-26 17:16:44 UTC (rev 1762) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SamplingPlanAction.java 2014-03-27 10:36:13 UTC (rev 1763) @@ -71,4 +71,11 @@ return getSession().getSampleRowToHighlightId(); } + public LocalizedSampleRowsFilterValues getFilterValues() { + LocalizedSampleRowsFilterValues filterValues = + new LocalizedSampleRowsFilterValues( + getLocale(), + getSamplingPlan().getFilterValues()); + return filterValues; + } } Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/sampling-plan.jsp =================================================================== --- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/sampling-plan.jsp 2014-03-26 17:16:44 UTC (rev 1762) +++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/sampling-plan.jsp 2014-03-27 10:36:13 UTC (rev 1763) @@ -34,7 +34,7 @@ $(document).ready(function () { - var sampleRowsFilterController = new SampleRowsFilterController(SAMPLE_ROWS_FILTER_VALUES_JSON_URL); + var sampleRowsFilterController = new SampleRowsFilterController(SAMPLE_ROWS_FILTER_VALUES_JSON_URL, $('#sampling-plan-filters-form')); sampleRowsFilterController.init(); }); @@ -43,6 +43,8 @@ </head> + <content tag="mainClass">large</content> + <h1> <s:text name="wao.ui.page.SamplingPlan.title" /> </h1> @@ -54,81 +56,86 @@ </s:a> </s:if> - <s:form method="GET"> + <s:form method="GET" id="sampling-plan-filters-form" cssClass="filters-form"> - <s:textfield name="filter.periodFrom" - label="%{getText('wao.ui.form.periodFrom')}" - placeholder="04/2014" - cssClass="input-small" /> + <fieldset> - <s:textfield name="filter.periodTo" - label="%{getText('wao.ui.form.period.to')}" - placeholder="03/2015" - cssClass="input-small" /> + <s:textfield name="filter.periodFrom" + label="%{getText('wao.ui.form.periodFrom')}" + placeholder="04/2014" + cssClass="input-small" /> + <s:textfield name="filter.periodTo" + label="%{getText('wao.ui.form.period.to')}" + placeholder="03/2015" + cssClass="input-small" /> + + </fieldset> + + <fieldset> + <s:select name="filter.companyIds" label="%{getText('wao.ui.entity.Company')}" - list="samplingPlan.filterValues.companies" + list="filterValues.companies" multiple="true" - dataBinding="companies" - cssClass="input-xlarge" /> + dataBinding="companies" /> <s:select name="filter.programNames" label="%{getText('wao.ui.field.SampleRow.programName')}" - list="samplingPlan.filterValues.programNames" + list="filterValues.programNames" multiple="true" - dataBinding="programNames" - cssClass="input-xlarge" /> + dataBinding="programNames" /> <s:select name="filter.fishingZoneFacadeNames" label="%{getText('wao.ui.field.FishingZone.facadeName')}" - list="samplingPlan.filterValues.fishingZoneFacadeNames" + list="filterValues.fishingZoneFacadeNames" multiple="true" - dataBinding="fishingZoneFacadeNames" - cssClass="input-xlarge" /> + dataBinding="fishingZoneFacadeNames" /> <s:select name="filter.fishingZoneSectorNames" label="%{getText('wao.ui.field.FishingZone.sectorName')}" - list="samplingPlan.filterValues.fishingZoneSectorNames" + list="filterValues.fishingZoneSectorNames" multiple="true" - dataBinding="fishingZoneSectorNames" - cssClass="input-xlarge" /> + dataBinding="fishingZoneSectorNames" /> <s:select name="filter.sampleRowCodes" label="%{getText('wao.ui.field.SampleRow.code')}" - list="samplingPlan.filterValues.sampleRowCodes" + list="filterValues.sampleRowCodes" multiple="true" - dataBinding="sampleRowCodes" - cssClass="input-xlarge" /> + dataBinding="sampleRowCodes" /> <s:select name="filter.fishingGearDcfIds" label="%{getText('wao.ui.entity.fishingGearDCF')}" - list="samplingPlan.filterValues.fishingGearDcfs" + list="filterValues.fishingGearDcfs" value="%getText(#value)" multiple="true" - dataBinding="fishingGearDcfs" - cssClass="input-xlarge" /> + dataBinding="fishingGearDcfs" /> <s:select name="filter.targetSpeciesDcfIds" label="%{getText('wao.ui.entity.targetSpeciesDCF')}" - list="samplingPlan.filterValues.targetSpeciesDcfs" + list="filterValues.targetSpeciesDcfs" multiple="true" - dataBinding="targetSpeciesDcfs" - cssClass="input-xlarge" /> + dataBinding="targetSpeciesDcfs" /> - <s:url action="sampling-plan" id="samplingPlanUrl" /> - <s:a href="%{samplingPlanUrl}" cssClass="btn"> - <i class="icon-reset"></i> <s:text name="wao.ui.action.reset" /> - </s:a> + </fieldset> - <s:submit type="button" cssClass="btn"> - <i class="icon-filter"></i> <s:text name="wao.ui.action.filter" /> - </s:submit> + <div class="form-actions" style="clear: both;"> - <s:submit action="export-sampling-plan" type="button" cssClass="btn"> - <i class="icon-download"></i> <s:text name="wao.ui.action.csvExport" /> - </s:submit> + <s:url action="sampling-plan" id="samplingPlanUrl" /> + <s:a href="%{samplingPlanUrl}" cssClass="btn"> + <i class="icon-reset"></i> <s:text name="wao.ui.action.reset" /> + </s:a> + <s:submit type="button" cssClass="btn"> + <i class="icon-filter"></i> <s:text name="wao.ui.action.filter" /> + </s:submit> + + <s:submit action="export-sampling-plan" type="button" cssClass="btn"> + <i class="icon-download"></i> <s:text name="wao.ui.action.csvExport" /> + </s:submit> + + </div> + </s:form> <s:set var="estimatedTides" value="true"/> Modified: trunk/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp =================================================================== --- trunk/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp 2014-03-26 17:16:44 UTC (rev 1762) +++ trunk/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp 2014-03-27 10:36:13 UTC (rev 1763) @@ -28,7 +28,7 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><decorator:title default="Wao"/> - Wao</title> - <sj:head locale="fr" jqueryui="true" /> + <sj:head locale="fr" loadFromGoogle="true" jqueryui="true" /> <sb:head /> <script type="text/javascript" src="<s:url value='/js/moment-js-2.5.1/moment-with-langs.js' />"></script> <script type="text/javascript" src="<s:url value='/js/select2-3.4.5/select2.min.js' />"></script> @@ -48,13 +48,13 @@ <div class="navbar-inner"> <a class="brand" href="#">Wao <s:property value="getText(obsProgram)" /></a> <ul class="nav"> - <li class="active"> + <li> <s:url namespace="/%{obsProgram.name().toLowerCase()}" action="news" id="newsUrl" /> <s:a href="%{newsUrl}"> <i class="icon-home"></i> <s:text name="wao.ui.page.Index.title" /> </s:a> </li> - <li> + <li class="active"> <s:url namespace="/%{obsProgram.name().toLowerCase()}" action="sampling-plan" id="samplingPlanUrl" /> <s:a href="%{samplingPlanUrl}"> <i class="icon-tasks"></i> <s:text name="wao.ui.page.SamplingPlan.title" /> @@ -163,7 +163,7 @@ </div> </div> - <main> + <main class="<decorator:getProperty property="page.mainClass"/>"> <s:actionerror theme="bootstrap" /> <s:actionmessage theme="bootstrap" /> <s:fielderror theme="bootstrap" /> Modified: trunk/wao-web/src/main/webapp/css/wao.css =================================================================== --- trunk/wao-web/src/main/webapp/css/wao.css 2014-03-26 17:16:44 UTC (rev 1762) +++ trunk/wao-web/src/main/webapp/css/wao.css 2014-03-27 10:36:13 UTC (rev 1763) @@ -53,6 +53,13 @@ margin-right: auto; } +main.large { + width: 100%; + max-width: 100%; + margin-left: 10px; + margin-right: 10px; +} + /** * Le style général des formulaires */ @@ -111,9 +118,25 @@ } /** - * Styles spécifiques pour certainse pages de l'appli + * Les filtres */ +form.filters-form { + width: auto; + margin-left: auto; + margin-right: auto; +} + +form.filters-form .control-group { + float: left; + margin-left: 5px; + margin-right: 5px; +} + +/** + * Styles spécifiques pour certaines pages de l'appli + */ + #expectedObservationsByMonthsTable th { white-space: nowrap; } Modified: trunk/wao-web/src/main/webapp/js/wao.js =================================================================== --- trunk/wao-web/src/main/webapp/js/wao.js 2014-03-26 17:16:44 UTC (rev 1762) +++ trunk/wao-web/src/main/webapp/js/wao.js 2014-03-27 10:36:13 UTC (rev 1763) @@ -40,15 +40,18 @@ }; -var SampleRowsFilterView = function (sampleRowsFilterModel) { +var SampleRowsFilterView = function (sampleRowsFilterModel, $filtersForm) { var self = this; this.model = sampleRowsFilterModel; + this.$filtersForm = $filtersForm; + this.$selects = $filtersForm.find('select'); + this.$inputs = $filtersForm.find('input[type=text]'); this.getFilter = function () { var filter = {}; - $('select').each(function (index, select) { + this.$selects.each(function (index, select) { var $select = $(select); var parameterName = $select.prop('name'); var parameterValues = []; @@ -57,7 +60,7 @@ }); filter[parameterName] = parameterValues; }); - $('input[type=text]').each(function (index, input) { + this.$inputs.each(function (index, input) { var $input = $(input); var parameterName = $(input).prop('name'); var parameterValue = $(input).prop('value'); @@ -70,7 +73,7 @@ // store options selected by user to re-select them after update var filter = this.getFilter(); var filterValues = this.model.filterValues; - $('select').each(function (index, select) { + this.$selects.each(function (index, select) { var $select = $(select).empty(); var name = $select.prop('name'); // FIXME brendan 26/03/14 should be data-binding but freemarker break the template :-( @@ -88,6 +91,7 @@ $select.find('option[value="' + selectedOption + '"]').prop('selected', 'selected'); }); }); + this.$filtersForm.effect( "highlight", "slow" ); } $(this.model).on('updated', function () { @@ -96,12 +100,12 @@ }; -var SampleRowsFilterController = function (filterValuesUrl) { +var SampleRowsFilterController = function (filterValuesUrl, $filtersForm) { var self = this; this.model = new SampleRowsFilterModel(filterValuesUrl); - this.view = new SampleRowsFilterView(this.model); + this.view = new SampleRowsFilterView(this.model, $filtersForm); this.onFilterChange = function () { var filter = this.view.getFilter(); @@ -109,10 +113,10 @@ }; this.init = function () { - $('input').change(function () { + this.view.$selects.blur(function () { self.onFilterChange(); }); - $('select').change(function () { + this.view.$inputs.blur(function () { self.onFilterChange(); }); } @@ -121,6 +125,6 @@ $(document).ready(function () { - $('select').select2(); + // $('select').select2(); }); \ No newline at end of file
participants (1)
-
bleny@users.forge.codelutin.com