This is an automated email from the git hooks/post-receive script. New commit to branch feature/8180 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit aec1002786b98ef516a906bb0c95d3fdf3ccb189 Author: Julien Ruchaud <julien.ruchaud@debux.org> Date: Thu Jun 23 12:08:32 2016 +0200 Add support to display a mooring --- .../echobase/ui/actions/dbeditor/GetEntities.java | 2 - .../ui/actions/workingDb/GetImportLogDetail.java | 14 ++- .../{GetImportLogDetail.java => GetMooring.java} | 46 +++----- .../src/main/resources/config/struts-workingDb.xml | 9 +- .../resources/i18n/echobase-ui_en_GB.properties | 3 + .../resources/i18n/echobase-ui_fr_FR.properties | 3 + .../webapp/WEB-INF/jsp/workingDb/dashboard.jsp | 118 ++++++++++++++------- 7 files changed, 113 insertions(+), 82 deletions(-) diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java index 6a1871a..ac6083c 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/dbeditor/GetEntities.java @@ -23,10 +23,8 @@ package fr.ifremer.echobase.ui.actions.dbeditor; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Maps; import com.google.common.collect.Multimap; -import com.google.common.collect.Multimaps; import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; import fr.ifremer.echobase.entities.ImportLog; -import fr.ifremer.echobase.entities.ImportLogs; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.services.service.DbEditorService; import fr.ifremer.echobase.services.service.DecoratorService; diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetImportLogDetail.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetImportLogDetail.java index 9a18313..79a52e8 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetImportLogDetail.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetImportLogDetail.java @@ -51,7 +51,13 @@ public class GetImportLogDetail extends EchoBaseActionSupport { public void setImportLogId(String importLogId) { this.importLogId = importLogId; } + + protected String entityId; + public void setEntityId(String entityId) { + this.entityId = entityId; + } + protected Map data; public Map<?, ?> getData() { @@ -71,11 +77,9 @@ public class GetImportLogDetail extends EchoBaseActionSupport { data.put(ImportLog.PROPERTY_IMPORT_TYPE, importTypes.get(importType)); // decorate foreign keys - String id = (String) data.get(ImportLog.PROPERTY_ENTITY_ID); - if (id != null && !id.isEmpty()) { - TopiaEntity entity = userDbPersistenceService.getEntity(id); - decoratorService.decorateForeignKey(data, ImportLog.PROPERTY_ENTITY_ID, entity, null); - } + TopiaEntity entity = userDbPersistenceService.getEntity(entityId); + String entityName = decoratorService.decorate(entity, null); + data.put("entityName", entityName); // get import files Collection<ImportFile> importFiles = userDbPersistenceService.getImportFiles(importLogId); diff --git a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetImportLogDetail.java b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetMooring.java similarity index 59% copy from echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetImportLogDetail.java copy to echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetMooring.java index 9a18313..87f9adc 100644 --- a/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetImportLogDetail.java +++ b/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/GetMooring.java @@ -22,9 +22,9 @@ package fr.ifremer.echobase.ui.actions.workingDb; */ import fr.ifremer.echobase.entities.EchoBaseUserEntityEnum; -import fr.ifremer.echobase.entities.ImportFile; import fr.ifremer.echobase.entities.ImportLog; -import fr.ifremer.echobase.entities.ImportType; +import fr.ifremer.echobase.entities.data.Mooring; +import fr.ifremer.echobase.entities.references.Mission; import fr.ifremer.echobase.services.service.DbEditorService; import fr.ifremer.echobase.services.service.DecoratorService; import fr.ifremer.echobase.services.service.UserDbPersistenceService; @@ -32,24 +32,22 @@ import fr.ifremer.echobase.ui.actions.EchoBaseActionSupport; import org.nuiton.topia.persistence.metadata.TableMeta; import javax.inject.Inject; -import java.util.Collection; import java.util.Map; -import org.nuiton.topia.persistence.TopiaEntity; /** * Obtain details of a given {@link ImportLog}. * - * @author Tony Chemit - chemit@codelutin.com - * @since 1.3 + * @author Julien Ruchaud - ruchaud@codelutin.com + * @since 4.0 */ -public class GetImportLogDetail extends EchoBaseActionSupport { +public class GetMooring extends EchoBaseActionSupport { private static final long serialVersionUID = 1L; - protected String importLogId; + protected String mooringId; - public void setImportLogId(String importLogId) { - this.importLogId = importLogId; + public void setMooringId(String mooringId) { + this.mooringId = mooringId; } protected Map data; @@ -61,28 +59,14 @@ public class GetImportLogDetail extends EchoBaseActionSupport { @Override public String execute() throws Exception { - TableMeta<EchoBaseUserEntityEnum> tableMeta = - dbEditorService.getTableMeta(EchoBaseUserEntityEnum.ImportLog); - data = dbEditorService.getData(tableMeta, importLogId); - - // decorate import type - Map<String, String> importTypes = decoratorService.decorateEnums(ImportType.values()); - String importType = (String) data.get(ImportLog.PROPERTY_IMPORT_TYPE); - data.put(ImportLog.PROPERTY_IMPORT_TYPE, importTypes.get(importType)); + TableMeta<EchoBaseUserEntityEnum> tableMeta = dbEditorService.getTableMeta(EchoBaseUserEntityEnum.Mooring); + data = dbEditorService.getData(tableMeta, mooringId); // decorate foreign keys - String id = (String) data.get(ImportLog.PROPERTY_ENTITY_ID); - if (id != null && !id.isEmpty()) { - TopiaEntity entity = userDbPersistenceService.getEntity(id); - decoratorService.decorateForeignKey(data, ImportLog.PROPERTY_ENTITY_ID, entity, null); - } - - // get import files - Collection<ImportFile> importFiles = userDbPersistenceService.getImportFiles(importLogId); - data.put(ImportLog.PROPERTY_IMPORT_FILE, importFiles); + Mission mission = userDbPersistenceService.getMission((String) data.get(Mooring.PROPERTY_MISSION)); + decoratorService.decorateForeignKey(data, Mooring.PROPERTY_MISSION, mission, null); return SUCCESS; - } //------------------------------------------------------------------------// @@ -91,10 +75,8 @@ public class GetImportLogDetail extends EchoBaseActionSupport { @Inject protected transient UserDbPersistenceService userDbPersistenceService; - - @Inject - protected transient DbEditorService dbEditorService; - @Inject protected transient DecoratorService decoratorService; + @Inject + protected transient DbEditorService dbEditorService; } diff --git a/echobase-ui/src/main/resources/config/struts-workingDb.xml b/echobase-ui/src/main/resources/config/struts-workingDb.xml index 60d5979..1e58547 100644 --- a/echobase-ui/src/main/resources/config/struts-workingDb.xml +++ b/echobase-ui/src/main/resources/config/struts-workingDb.xml @@ -175,13 +175,18 @@ <result type="json"/> </action> - <!-- Get voyage detail --> + <!-- Get entity detail --> <action name="getDashboardVoyage" method="execute" class="fr.ifremer.echobase.ui.actions.workingDb.GetVoyage"> <interceptor-ref name="basicStackLogguedWithdb"/> <result type="json"/> </action> - + <action name="getDashboardMooring" method="execute" + class="fr.ifremer.echobase.ui.actions.workingDb.GetMooring"> + <interceptor-ref name="basicStackLogguedWithdb"/> + <result type="json"/> + </action> + <!-- Show dashboard --> <action name="dashboard" method="execute" class="fr.ifremer.echobase.ui.actions.workingDb.DashBoard"> diff --git a/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties b/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties index c81e67d..59e0086 100644 --- a/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties +++ b/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties @@ -105,6 +105,7 @@ echobase.common.importDataMode=Import type echobase.common.importDate=Import date echobase.common.importDbFile= echobase.common.importDbMode=Import db mode +echobase.common.importEntity= echobase.common.importError=Error\: echobase.common.importLogToDelete=Voyage %s - Import type %s - Date %s echobase.common.importNotes=Import notes @@ -414,6 +415,7 @@ echobase.message.no.spatial.database.support=The working db you are using is not echobase.message.noEntrySelection=No field selected echobase.message.noImportFilesFound=No import file found (import was done before version 2.8) echobase.message.noImportLogSelected=No import selected +echobase.message.noMooringSelected= echobase.message.noVoyageSelected=No voyage selected echobase.message.removeData.result=Data import removalwas successful in %s\:\n%s echobase.message.warnEmbeddedApplicationInProgress=Please do not close the window to access the new portable database file @@ -457,6 +459,7 @@ echobase.title.importLogs=Import logs echobase.title.importTable=Import a table echobase.title.login=Connection echobase.title.modification.detail=Modification details +echobase.title.mooring.detail= echobase.title.newLibreOfficeQuery=Translate a SQL query from Libre Office echobase.title.removeDataProgress=Remove import data echobase.title.removeDataResult=Result of remove import data diff --git a/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties b/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties index 36c6a70..8c9e6df 100644 --- a/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties +++ b/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties @@ -105,6 +105,7 @@ echobase.common.importDataMode=Type d'import echobase.common.importDate=Date de l'import echobase.common.importDbFile= echobase.common.importDbMode=Mode d'import +echobase.common.importEntity= echobase.common.importError=Une erreur est survenue pendant l'import \: echobase.common.importLogToDelete=Campagne %s - Type d'import %s - Date %s echobase.common.importNotes=Remarques sur l'import @@ -417,6 +418,7 @@ echobase.message.no.spatial.database.support=La base de travail que vous utilise echobase.message.noEntrySelection=Pas de champ sélectionné echobase.message.noImportFilesFound=Pas de fichiers conservés (import effectué avant la version 2.8) echobase.message.noImportLogSelected=Pas d'import sélectionné +echobase.message.noMooringSelected= echobase.message.noVoyageSelected=Pas de campagne sélectionné echobase.message.removeData.result=La suppression de l'import s'est déroule avec succès en %s \:\n%s echobase.message.warnEmbeddedApplicationInProgress=Merci de ne pas fermer la fenêtre pour pouvoir accéder aux résultats de la création de l'application embarquée @@ -460,6 +462,7 @@ echobase.title.importLogs=Liste des imports echobase.title.importTable=Importer une table echobase.title.login=Connexion echobase.title.modification.detail=Détails de la modification +echobase.title.mooring.detail= echobase.title.newLibreOfficeQuery=Traduire une requête SQL issue de Libre Office echobase.title.removeDataProgress=Suppression d'un import en cours... echobase.title.removeDataResult=Résultat de la suppression d'un import diff --git a/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp b/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp index f9d674f..a2bbd38 100644 --- a/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp +++ b/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/dashboard.jsp @@ -31,11 +31,14 @@ <script type="text/javascript"> - function loadImportLogDetail(importLogId) { + function loadImportLogDetail(importLogId, entityId) { $.ajax( { url:'<s:url action="getDashboardImportLog" namespace="/workingDb"/>', - data:{importLogId:importLogId}, + data:{ + importLogId: importLogId, + entityId: entityId + }, async:false, dataType:"json", success:function (data, textStatus) { @@ -44,13 +47,7 @@ $('.importLogDetail').show(); var json = data.data; - if ($('#noVoyageDetail').is(":visible")) { - - // need to load voyage - loadVoyageDetail(json['voyageId']); - } - - $('#importLogVoyage').html(json['voyageId_lbl']); + $('#importLogEntity').html(json['entityName']); $('#importLogText').html(json['importText']); $('#importLogUser').html(json['importUser']); $('#importLogDate').html(json['importDate']); @@ -92,7 +89,6 @@ } }); - return false; } function loadVoyageDetail(voyageId) { @@ -103,9 +99,6 @@ async:false, dataType:"json", success:function (data, textStatus) { - - $('#noVoyageDetail').hide(); - $('#voyageDetail').show(); var json = data.data; $('#voyageMission').html(json['mission_lbl']); @@ -115,27 +108,46 @@ $('#voyageDatum').html(json['datum']); $('#voyageName').html(json['name']); $('#voyageDescription').html(json['description']); - } }); return false; } + function loadMooringDetail(mooringId) { + $.ajax( + { + url:'<s:url action="getDashboardMooring" namespace="/workingDb"/>', + data:{mooringId: mooringId}, + async:false, + dataType:"json", + success:function (data, textStatus) { + var json = data.data; + + $('#mooringMission').html(json['mission_lbl']); + $('#mooringCode').html(json['code']); + $('#mooringDescription').html(json['description']); + } + }); + return false; + } + function formatImportLogs(cellvalue, options, rowObject) { var result = "<ul>"; - var importMapping = rowObject['importLogs']; + var importMapping = rowObject.importLogs; + var entityId = rowObject.id; $(cellvalue).each(function () { var importId = this; var val = importMapping[importId]; - result += "<li><a href='#' title='${importTooltip}' onclick='return loadImportLogDetail(\"" + importId + - "\")' class='fontsize11'>" + val + "</a></li>"; + result += "<li><a href='#' title='${importTooltip}' " + + "onclick='loadImportLogDetail(\"" + importId + "\", \"" + entityId + "\")' " + + "class='fontsize11'>" + val + "</a></li>"; }); result += "</ul>"; return result; } - function formatVoyageName(cellvalue, options, rowObject) { - return rowObject['id_lbl']; + function formatName(cellvalue, options, rowObject) { + return rowObject.id_lbl; } jQuery(document).ready(function () { @@ -146,14 +158,20 @@ loadVoyageDetail(voyageId); }); - $.addClearSelectTopic('voyages', function (event) { - - $('.noImportLogDetail').show(); - $('.importLogDetail').hide(); - $('#noVoyageDetail').show(); - $('#voyageDetail').hide(); + // display mooring infos + $.addRowSelectTopic('moorings', function () { + var mooringId = $("tr[aria-selected=true] td[aria-describedby='moorings_id']").text(); + loadMooringDetail(mooringId); }); - $.addEvenAndOddClasses('voyages'); + +// $.addClearSelectTopic('voyages', function (event) { +// +// $('.noImportLogDetail').show(); +// $('.importLogDetail').hide(); +// $('#noVoyageDetail').show(); +// $('#voyageDetail').hide(); +// }); +// $.addEvenAndOddClasses('voyages'); }); </script> @@ -170,7 +188,7 @@ onCompleteTopics="voyages-clearSelect,voyages-CompleteTopics"> <sjg:gridColumn name="id" title="id" hidden="true"/> - <sjg:gridColumn name="name" sortable="true" formatter="formatVoyageName" + <sjg:gridColumn name="name" sortable="true" formatter="formatName" title="%{getText('echobase.common.voyage')}"/> <s:iterator value="%{importVoyageTypes}" var="entry"> @@ -188,12 +206,12 @@ navigatorEdit="false" navigatorSearch="false" navigatorDelete="false" navigatorAdd="false" rowList="10,15,20,50,100,250,500" rowNum="10" - onSelectRowTopics="voyages-rowSelect" - onCellSelectTopics="voyages-rowSelect" - onCompleteTopics="voyages-clearSelect,voyages-CompleteTopics"> + onSelectRowTopics="moorings-rowSelect" + onCellSelectTopics="moorings-rowSelect" + onCompleteTopics="moorings-clearSelect,moorings-CompleteTopics"> <sjg:gridColumn name="id" title="id" hidden="true"/> - <sjg:gridColumn name="name" sortable="true" formatter="formatVoyageName" + <sjg:gridColumn name="name" sortable="true" formatter="formatName" title="%{getText('echobase.common.mooring')}"/> <s:iterator value="%{importMooringTypes}" var="entry"> @@ -247,6 +265,32 @@ </fieldset> <fieldset> + <legend><s:text name="echobase.title.mooring.detail"/></legend> + + <div id="noMooringDetail"> + <pre> + <s:text name="echobase.message.noMooringSelected"/> + </pre> + </div> + <div id="mooringDetail"> + + <s:label key='echobase.common.name' value=''/> + <pre id='mooringCode' style="font-weight: bold;"></pre> + <br/> + + <s:label key='echobase.common.description' value=''/> + <pre id='mooringDescription' style="font-weight: bold;"></pre> + <br/> + + <s:label key='echobase.common.mission' value=''/> + <pre id='mooringMission' style="font-weight: bold;"></pre> + <br/> + + </div> + +</fieldset> + +<fieldset> <legend><s:text name="echobase.title.importLog.detail"/></legend> <div class="noImportLogDetail"> @@ -260,8 +304,8 @@ <pre id='importLogImportType' style="font-weight: bold;"></pre> <br/> - <s:label key='echobase.common.voyage' value=''/> - <pre id='importLogVoyage' style="font-weight: bold;"></pre> + <s:label key='echobase.common.importEntity' value=''/> + <pre id='importLogEntity' style="font-weight: bold;"></pre> <br/> <s:label key='echobase.common.importDate' value=''/> @@ -290,12 +334,8 @@ </pre> </div> <div class="importLogDetail"> - <ul id='importLogFiles' style="font-weight: bold;"></ul> - </div> - - </fieldset> <fieldset id="exportLogFilesFieldset"> @@ -307,10 +347,6 @@ </pre> </div> <div class="importLogDetail"> - <ul id='exportLogFiles' style="font-weight: bold;"></ul> - </div> - - </fieldset> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.