branch develop updated (4acd504 -> b1db4c7)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository coser. See http://git.codelutin.com/coser.git from 4acd504 [jgitflow-maven-plugin]Updating develop poms back to pre merge state new b1db4c7 fixes #6444: Problème de cohérence de l'écran d'extraction des données The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit b1db4c72b300c4c8b47107f5fa1afdbf191b08f1 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Jan 12 18:46:04 2015 +0100 fixes #6444: Problème de cohérence de l'écran d'extraction des données Summary of changes: .../request/ExtractRawDataAndResultsRequest.java | 27 ++++- .../main/java/fr/ifremer/coser/util/DataType.java | 48 +++++++- .../coser/web/actions/search/ExtractAction.java | 133 +++++---------------- .../WEB-INF/content/search/extract-input.jsp | 120 +++++++++---------- 4 files changed, 149 insertions(+), 179 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository coser. See http://git.codelutin.com/coser.git commit b1db4c72b300c4c8b47107f5fa1afdbf191b08f1 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Jan 12 18:46:04 2015 +0100 fixes #6444: Problème de cohérence de l'écran d'extraction des données --- .../request/ExtractRawDataAndResultsRequest.java | 27 ++++- .../main/java/fr/ifremer/coser/util/DataType.java | 48 +++++++- .../coser/web/actions/search/ExtractAction.java | 133 +++++---------------- .../WEB-INF/content/search/extract-input.jsp | 120 +++++++++---------- 4 files changed, 149 insertions(+), 179 deletions(-) diff --git a/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java b/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java index e6d1d97..521ee4f 100644 --- a/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java +++ b/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java @@ -59,12 +59,27 @@ public class ExtractRawDataAndResultsRequest implements CoserRequest, CoserReque @Override public boolean isFilled() { - return !(CollectionUtils.isEmpty(extractTypeList) || - CollectionUtils.isEmpty(zoneList) || - CollectionUtils.isEmpty(speciesList) || - (CollectionUtils.isEmpty(populationIndicatorList) && - CollectionUtils.isEmpty(communityIndicatorList)) - ); + boolean filled = CollectionUtils.isNotEmpty(extractTypeList) + && CollectionUtils.isNotEmpty(zoneList); + + if (filled) { + if (DataType.isNeedSpecies(extractTypeList)) { + filled = CollectionUtils.isNotEmpty(speciesList); + } + } + + if (filled) { + if (extractTypeList.contains(DataType.COMMUNITY)) { + filled = CollectionUtils.isNotEmpty(communityIndicatorList); + } + } + if (filled) { + if (extractTypeList.contains(DataType.POPULATION)) { + filled = CollectionUtils.isNotEmpty(populationIndicatorList); + } + } + + return filled; } @Override diff --git a/coser-business/src/main/java/fr/ifremer/coser/util/DataType.java b/coser-business/src/main/java/fr/ifremer/coser/util/DataType.java index bb8ce66..a97075a 100644 --- a/coser-business/src/main/java/fr/ifremer/coser/util/DataType.java +++ b/coser-business/src/main/java/fr/ifremer/coser/util/DataType.java @@ -22,10 +22,13 @@ package fr.ifremer.coser.util; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; +import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Set; import static org.nuiton.i18n.I18n.l; import static org.nuiton.i18n.I18n.n; @@ -38,15 +41,20 @@ import static org.nuiton.i18n.I18n.n; * @since 1.4 */ public enum DataType { - MAP(n("coser.business.data.type.map")), - POPULATION(n("coser.business.data.type.population")), - COMMUNITY(n("coser.business.data.type.community")), - SOURCE(n("coser.business.data.type.source")); + MAP(n("coser.business.data.type.map"), true, false), + POPULATION(n("coser.business.data.type.population"), true, true), + COMMUNITY(n("coser.business.data.type.community"), true, true), + SOURCE(n("coser.business.data.type.source"), false, false); private final String i18nKey; - DataType(String i18nKey) { + private final boolean needSpecies; + private final boolean indicator; + + DataType(String i18nKey, boolean needSpecies, boolean indicator) { this.i18nKey = i18nKey; + this.needSpecies = needSpecies; + this.indicator=indicator; } public String getLabel(Locale locale) { @@ -60,4 +68,34 @@ public enum DataType { } return result; } + + public static boolean isNeedSpecies(List<DataType> types) { + + boolean result = false; + + for (DataType type : types) { + if (type.needSpecies) { + result = true; + break; + } + } + + return result; + + } + + public static boolean isIndicator(List<DataType> types) { + + boolean result = false; + + for (DataType type : types) { + if (type.indicator) { + result = true; + break; + } + } + + return result; + + } } diff --git a/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java b/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java index 4729157..61fb4fa 100644 --- a/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java +++ b/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java @@ -52,10 +52,10 @@ import java.util.Map; * @since 1.4 */ @InterceptorRefs({ - @InterceptorRef("defaultStack"), - @InterceptorRef(value = "execAndWait", - params = {"excludeMethods", "execute,quality"}) - }) + @InterceptorRef("defaultStack"), + @InterceptorRef(value = "execAndWait", + params = {"excludeMethods", "execute,quality"}) +}) public class ExtractAction extends AbstractCoserJspAction implements ServletRequestAware { /** serialVersionUID. */ @@ -194,32 +194,33 @@ public class ExtractAction extends AbstractCoserJspAction implements ServletRequ toRequest(); zones = getService().toMap(zonesRequest); - if (CollectionUtils.isNotEmpty(selectZones)) { + if (CollectionUtils.isNotEmpty(selectZones) && CollectionUtils.isNotEmpty(selectTypes)) { - GetSpeciesForExtractRawDataAndResultsRequest speciesRequest = - requestBuilder(GetSpeciesForExtractRawDataAndResultsRequest.class). + GetIndicatorsForExtractRawDataAndResultsRequest indicatorsRequest = + requestBuilder(GetIndicatorsForExtractRawDataAndResultsRequest.class). addZoneList(selectZones). - addExtractTypeList(selectTypes). toRequest(); - species = getService().toMap(speciesRequest); - if (selectTypes != null) { + if (selectTypes.contains(DataType.COMMUNITY)) { - GetIndicatorsForExtractRawDataAndResultsRequest indicatorsRequest = - requestBuilder(GetIndicatorsForExtractRawDataAndResultsRequest.class). - addZoneList(selectZones). - toRequest(); + indicatorsRequest.setExtractTypeList(Lists.newArrayList(DataType.COMMUNITY)); + comIndicators = getService().toMap(indicatorsRequest); + } - if (selectTypes.contains(DataType.COMMUNITY)) { + if (selectTypes.contains(DataType.POPULATION)) { + indicatorsRequest.setExtractTypeList(Lists.newArrayList(DataType.POPULATION)); + popIndicators = getService().toMap(indicatorsRequest); + } - indicatorsRequest.setExtractTypeList(Lists.newArrayList(DataType.COMMUNITY)); - comIndicators = getService().toMap(indicatorsRequest); - } + if (DataType.isNeedSpecies(selectTypes)) { + + GetSpeciesForExtractRawDataAndResultsRequest speciesRequest = + requestBuilder(GetSpeciesForExtractRawDataAndResultsRequest.class). + addZoneList(selectZones). + addExtractTypeList(selectTypes). + toRequest(); + species = getService().toMap(speciesRequest); - if (selectTypes.contains(DataType.POPULATION)) { - indicatorsRequest.setExtractTypeList(Lists.newArrayList(DataType.POPULATION)); - popIndicators = getService().toMap(indicatorsRequest); - } } } } @@ -304,87 +305,9 @@ public class ExtractAction extends AbstractCoserJspAction implements ServletRequ return "Indicateurs_Ifremer.zip"; } - // @Action(value = "extract-quality", -// results = { -// @Result(location = "/WEB-INF/content/search/extract-success.jsp"), -// @Result(name = DOWNLOAD, type = "redirect", params = { -// "location", "${location}"})}) -// public String quality() { -// String result; -// if (!accepted) { -// addFieldError("accepted", getText("message.quality.notaccepted")); -// result = SUCCESS; -// } else { -// -// // petit hack pour mettre la locale dans la session car -// // après, on n'a plus accès au context dans le executeAndWait -// request.getSession().setAttribute("locale", getLocale()); -// result = DOWNLOAD; -// } -// return result; -// } -// -// protected File zipFile; -// -// @Override -// public String execute() { -// -// String result; -// -// if (StringUtils.isNotBlank(submitAction)) { -// result = SUCCESS; -// } else { -// result = INPUT; -// Locale locale = getLocale(); -// WebService webService = ServiceFactory.getWebService(); -// -// try { -// // renvoi la liste des id subzone-survey et leurs label associé -// zones = webService.getZoneForFacade(null, false, false); -// if (CollectionUtils.isNotEmpty(selectZones)) { -// species = webService.getSpecies(selectZones, false); -// -// if (selectTypes != null && selectTypes.contains(DataType.COMMUNITY)) { -// comIndicators = webService.getIndicators(selectZones, DataType.COMMUNITY, locale); -// } -// if (selectTypes != null && selectTypes.contains(DataType.POPULATION)) { -// popIndicators = webService.getIndicators(selectZones, DataType.POPULATION, locale); -// } -// } -// } catch (CoserBusinessException ex) { -// throw new CoserWebException("Can't get zone map", ex); -// } -// } -// -// return result; -// } -// -// public String download() { -// try { -// Locale locale = (Locale)request.getSession().getAttribute("locale"); -// WebService webService = ServiceFactory.getWebService(); -// -// zipFile = webService.extractData(selectZones, selectTypes, selectSpecies, -// selectComIndicators, selectPopIndicators, locale); -// } catch (Exception ex) { -// if (log.isErrorEnabled()) { -// log.error("Can't extract data", ex); -// } -// throw new CoserWebException("Can't extract data", ex); -// } -// return "success"; -// } -// -// public InputStream getInputStream() { -// InputStream is = null; -// try { -// is = new FileInputStream(zipFile); -// } catch (Exception ex) { -// if (log.isErrorEnabled()) { -// log.error("Can't extract data", ex); -// } -// throw new CoserWebException("Can't extract data", ex); -// } -// return is; -//} + public boolean isNeedSpeciesOrIndicators() { + return CollectionUtils.isNotEmpty(selectTypes) && + (DataType.isNeedSpecies(selectTypes) || DataType.isIndicator(selectTypes)); + } + } diff --git a/coser-web/src/main/webapp/WEB-INF/content/search/extract-input.jsp b/coser-web/src/main/webapp/WEB-INF/content/search/extract-input.jsp index 7301740..fffebd1 100644 --- a/coser-web/src/main/webapp/WEB-INF/content/search/extract-input.jsp +++ b/coser-web/src/main/webapp/WEB-INF/content/search/extract-input.jsp @@ -30,11 +30,11 @@ } </style> <script type="text/javascript"> - var checkNextAction= function() { + var checkNextAction = function() { - var valid = $('#selectZones option:selected').length>0; + var valid = $('#selectZones option:selected').length > 0; if (valid) { - valid = $('#selectTypes option:selected').length >0; + valid = $('#selectTypes option:selected').length > 0; } var action = $('#nextAction'); if (valid) { @@ -42,15 +42,12 @@ } else { action.attr('disabled', 'disabled'); } - return valid; + $('#extractPart').hide(); }; var checkSubmitAction = function() { - var valid = checkNextAction(); + var valid = $('#selectSpecies option:selected').length > 0; - if (valid) { - valid = $('#selectSpecies option:selected').length > 0; - } if (valid && $('#selectComIndicators').is(":visible")) { valid = $('#selectComIndicators option:selected').length > 0; } @@ -66,15 +63,25 @@ return valid; }; <s:if test="!selectZones.empty"> - var f = checkSubmitAction; + + $(document).ready(function () { + $('.select1').change(checkNextAction).trigger( "change" ); + $('.select2').change(checkSubmitAction).trigger( "change" ); + checkNextAction(); + checkSubmitAction(); + $('#extractPart').show(); + }); + </s:if> <s:else> - var f = checkNextAction; + $(document).ready(function () { + $('.select1').change(checkNextAction).trigger( "change" ); + + checkNextAction(); + }); + </s:else> - $(document).ready(function () { - $('select').change(f).trigger( "change" ); - f(); - }); + </script> </head> <body> @@ -88,7 +95,7 @@ <td><s:text name="message.common.zones" /> :</td> <td> <select name="selectZones" multiple="multiple" id="selectZones" - class="select"> + class="select select1"> <s:iterator value="zones" var="zone"> <option value="<s:property value="key" />" <s:if test="selectZones.contains(#zone.key)"> @@ -110,7 +117,7 @@ <td><s:text name="message.common.datatypes" /> :</td> <td> <select name="selectTypes" multiple="multiple" id="selectTypes" - class="select"> + class="select select1"> <s:iterator value="types" var="type"> <option value="<s:property value="key" />" <s:if test="selectTypes.contains(#type.key)"> @@ -119,28 +126,7 @@ <s:property value="value" /></option> </s:iterator> </select> - </td><%-- - <option value="<s:property value="@fr.ifremer.coser.util.DataType@MAP" />" - <s:if test="selectTypes.contains(@fr.ifremer.coser.util.DataType@MAP)"> - selected="selected" - </s:if>> - <s:text name="message.index.datatypemap" /></option> - <option value="<s:property value="@fr.ifremer.coser.util.DataType@POPULATION" />" - <s:if test="selectTypes.contains(@fr.ifremer.coser.util.DataType@POPULATION)"> - selected="selected" - </s:if>> - <s:text name="message.index.datatypepop" /></option> - <option value="<s:property value="@fr.ifremer.coser.util.DataType@COMMUNITY" />" - <s:if test="selectTypes.contains(@fr.ifremer.coser.util.DataType@COMMUNITY)"> - selected="selected" - </s:if>> - <s:text name="message.index.datatypecom" /></option> - <option value="<s:property value="@fr.ifremer.coser.util.DataType@SOURCE" />" - <s:if test="selectTypes.contains(@fr.ifremer.coser.util.DataType@SOURCE)"> - selected="selected" - </s:if>> - <s:text name="message.index.datatypesource.short" /></option> - </select></td>--%> + </td> <td style="vertical-align:top"> <img src="<s:url value='/images/stock_select_table.png' />" onClick="javascript:coserSelectAll($('#selectTypes'))" @@ -148,7 +134,8 @@ <br /> <img src="<s:url value='/images/stock_select_clear.png' />" onClick="javascript:coserUnSelectAll($('#selectTypes'))" - title="<s:text name="message.common.selectnone" />" /></td> + title="<s:text name="message.common.selectnone" />" /> + </td> </tr> <tr> <td colspan="2"><s:submit id='nextAction' @@ -157,6 +144,9 @@ </table> <s:if test="!selectZones.empty"> +<span id="extractPart"> + <s:if test="needSpeciesOrIndicators"> + <h2><s:text name="message.search.extract.speciesindicators" /></h2> <table style="width:100%"> @@ -166,7 +156,7 @@ <s:text name="message.common.community" /> :</td> <td> <select name="selectComIndicators" multiple="multiple" - class="select" size="10" id="selectComIndicators"> + class="select select2" size="10" id="selectComIndicators"> <s:iterator value="comIndicators" var="comIndicator"> <option value="<s:property value="key" />" <s:if test="selectComIndicators.contains(#comIndicator.key)"> @@ -191,7 +181,7 @@ <s:text name="message.common.population" /> :</td> <td> <select name="selectPopIndicators" multiple="multiple" - class="select" size="10" id="selectPopIndicators"> + class="select select2" size="10" id="selectPopIndicators"> <s:iterator value="popIndicators" var="popIndicator"> <option value="<s:property value="key" />" <s:if test="selectPopIndicators.contains(#popIndicator.key)"> @@ -210,28 +200,31 @@ title="<s:text name="message.common.selectnone" />" /></td> </tr> </s:if> - <tr> - <td><s:text name="message.common.species" /> :</td> - <td> - <select name="selectSpecies" multiple="multiple" - class="select" size="10" id="selectSpecies"> - <s:iterator value="species" var="specy"> - <option value="<s:property value="key" />" - <s:if test="selectSpecies.contains(#specy.key)"> - selected="selected" - </s:if>> - <s:property value="value" /></option> - </s:iterator> - </select></td> - <td style="vertical-align:top"> - <img src="<s:url value='/images/stock_select_table.png' />" - onClick="javascript:coserSelectAll($('#selectSpecies'))" - title="<s:text name="message.common.selectall" />" /> - <br /> - <img src="<s:url value='/images/stock_select_clear.png' />" - onClick="javascript:coserUnSelectAll($('#selectSpecies'))" - title="<s:text name="message.common.selectnone" />" /></td> - </tr> + <s:if test="species != null"> + <tr> + <td><s:text name="message.common.species" /> :</td> + <td> + <select name="selectSpecies" multiple="multiple" + class="select select2" size="10" id="selectSpecies"> + <s:iterator value="species" var="specy"> + <option value="<s:property value="key" />" + <s:if test="selectSpecies.contains(#specy.key)"> + selected="selected" + </s:if>> + <s:property value="value" /></option> + </s:iterator> + </select></td> + <td style="vertical-align:top"> + <img src="<s:url value='/images/stock_select_table.png' />" + onClick="javascript:coserSelectAll($('#selectSpecies'))" + title="<s:text name="message.common.selectall" />" /> + <br /> + <img src="<s:url value='/images/stock_select_clear.png' />" + onClick="javascript:coserUnSelectAll($('#selectSpecies'))" + title="<s:text name="message.common.selectnone" />" /></td> + </tr> + </s:if> + </s:if> <tr> <td colspan="2"><s:submit name="submitAction" value="%{getText('message.search.extract.extract')}" @@ -239,6 +232,7 @@ </tr> </table> </s:if> +</span> </form> </body> </html> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm