Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: c1d31997 by Tony Chemit at 2022-04-19T11:05:28+02:00 Déplacement des routes d’observation depuis le nœud ‘Observations’ - Closes ultreiaio/ird-observe#2267 - - - - - 24 changed files: - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/ObserveKeyStrokesEditorApi.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/move/layout/MoveLayoutAction.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/move/layout/MoveLayoutRequestBuilder.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/layout/ContentLayoutUI.jaxx - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/ropen/ContentRootOpenableUI.jaxx - client/datasource/editor/ps/src/main/i18n/getters/navigation.getter - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/common/TripGearUseFeaturesUI.jaxx - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/landing/TripLandingUI.jaxx - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/RouteListUI.jaxx - + client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/RouteListUIHandler.java - + client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/RouteListUIModel.java - + client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/RouteUIMoveAllTreeAdapter.java - client/datasource/editor/ps/src/main/resources/fr/ird/observe/client/datasource/editor/ps/data/common/TripLocalmarketUINavigationNode.scope - client/datasource/editor/ps/src/main/resources/fr/ird/observe/client/datasource/editor/ps/data/common/TripLogbookUINavigationNode.scope - client/datasource/editor/ps/src/main/resources/fr/ird/observe/client/datasource/editor/ps/data/common/TripUINavigationNode.scope - client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/GenerateContentUISupport.java - client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/data/layout/GenerateContentLayoutUINavigationScope.java - client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/data/ropen/GenerateContentRootOpenableUINavigationScope.java - client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/helper/ContentUIHandlerHelper.java - core/api/services/src/main/i18n/getters/labels.getter - core/services/i18n/src/main/i18n/translations/services_en_GB.properties - core/services/i18n/src/main/i18n/translations/services_es_ES.properties - core/services/i18n/src/main/i18n/translations/services_fr_FR.properties - model/src/main/models/Observe/dto/class/i18nLabels.properties Changes: ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/ObserveKeyStrokesEditorApi.java ===================================== @@ -88,7 +88,8 @@ public class ObserveKeyStrokesEditorApi extends ObserveKeyStrokesSupport { public static final KeyStroke KEY_STROKE_SAVE_DATA = KeyStroke.getKeyStroke("pressed F5"); public static final KeyStroke KEY_STROKE_DELETE_DATA_GLOBAL = KeyStroke.getKeyStroke("pressed F6"); public static final KeyStroke KEY_STROKE_MOVE = KeyStroke.getKeyStroke("pressed F7"); - public static final KeyStroke KEY_STROKE_DUPLICATE = KeyStroke.getKeyStroke("pressed F7"); + + public static final KeyStroke KEY_STROKE_MOVE_LAYOUT = KeyStroke.getKeyStroke("pressed F8"); public static final KeyStroke KEY_STROKE_ADD_PRESET = KeyStroke.getKeyStroke("pressed F9"); public static final KeyStroke KEY_STROKE_FIX = KeyStroke.getKeyStroke("pressed F9"); public static final KeyStroke KEY_STROKE_GENERATE = KeyStroke.getKeyStroke("pressed F9"); ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/move/layout/MoveLayoutAction.java ===================================== @@ -116,10 +116,10 @@ public class MoveLayoutAction<D extends DataDto, U extends ContentUI> extends Co } protected MoveLayoutAction(Class<D> dataType, MoveLayoutExecutor executor) { - super(null, null, "move", ObserveKeyStrokesEditorApi.KEY_STROKE_MOVE); + super(null, null, "move", ObserveKeyStrokesEditorApi.KEY_STROKE_MOVE_LAYOUT); this.executor = Objects.requireNonNull(executor); - setText(I18n.t(I18nDecoratorHelper.getPropertyI18nKey(dataType, "action.move"))); - setTooltipText(I18n.t(I18nDecoratorHelper.getPropertyI18nKey(dataType, "action.move"))); + setText(I18n.t(I18nDecoratorHelper.getPropertyI18nKey(dataType, "action.move.all"))); + setTooltipText(I18n.t(I18nDecoratorHelper.getPropertyI18nKey(dataType, "action.move.all"))); } @Override ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/move/layout/MoveLayoutRequestBuilder.java ===================================== @@ -248,10 +248,10 @@ public class MoveLayoutRequestBuilder { parentTargetDtoType = oldParentId.getType(); } if (askNewParentTitle == null) { - askNewParentTitle = I18nDecoratorHelper.getPropertyI18nKey(dtoType, "action.move.choose.parent.title"); + askNewParentTitle = I18nDecoratorHelper.getPropertyI18nKey(dtoType, "action.move.all.choose.parent.title"); } if (askNewParentMessage == null) { - askNewParentMessage = I18nDecoratorHelper.getPropertyI18nKey(dtoType, "action.move.choose.parent.message"); + askNewParentMessage = I18nDecoratorHelper.getPropertyI18nKey(dtoType, "action.move.all.choose.parent.message"); } Objects.requireNonNull(availableLayoutTypes, "No availableLayoutTypes declared in builder"); DataGroupByParameter groupBy = Objects.requireNonNull(this.groupByValueSupplier, "No groupByValue supplier set.").get(); ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/layout/ContentLayoutUI.jaxx ===================================== @@ -60,6 +60,6 @@ public void resetEdit() { <JPanel id='showForm' decorator="boxed"/> </JPanel> <JMenuItem id='delete' styleClass='showData'/> - <JMenuItem id='move' styleClass='showData'/> + <JMenuItem id='moveAll' styleClass='showData'/> <JMenuItem id='showTechnicalInformations'/> </fr.ird.observe.client.datasource.editor.api.content.ContentUI> ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/ropen/ContentRootOpenableUI.jaxx ===================================== @@ -63,7 +63,7 @@ public void resetEdit() { </row> </Table> <JMenuItem id='delete' styleClass='editableAndNotModified'/> - <JMenuItem id='move' styleClass='editableAndNotModified'/> + <JMenuItem id='moveAll' styleClass='editableAndNotModified'/> <JMenuItem id='showTechnicalInformations'/> </fr.ird.observe.client.datasource.editor.api.content.ContentUI> ===================================== client/datasource/editor/ps/src/main/i18n/getters/navigation.getter ===================================== @@ -41,7 +41,16 @@ observe.data.Trip.message.not.open observe.data.Trip.navigation.unsaved observe.data.Trip.title observe.data.Trip.type +observe.data.ps.common.Trip.action.move.all +observe.data.ps.common.Trip.action.move.all.choose.parent.message +observe.data.ps.common.Trip.action.move.all.choose.parent.title +observe.data.ps.common.TripLocalmarket.action.move.all +observe.data.ps.common.TripLocalmarket.action.move.all.choose.parent.message +observe.data.ps.common.TripLocalmarket.action.move.all.choose.parent.title observe.data.ps.common.TripLocalmarket.type +observe.data.ps.common.TripLogbook.action.move.all +observe.data.ps.common.TripLogbook.action.move.all.choose.parent.message +observe.data.ps.common.TripLogbook.action.move.all.choose.parent.title observe.data.ps.common.TripLogbook.type observe.data.ps.landing.Landing.action.create observe.data.ps.landing.Landing.action.save ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/common/TripGearUseFeaturesUI.jaxx ===================================== @@ -110,5 +110,5 @@ </cell> </row> </Table> - <JMenuItem id='move' styleClass='editableAndNotModifiedAndTableNotEmpty'/> + <JMenuItem id='moveAll' styleClass='editableAndNotModifiedAndTableNotEmpty'/> </fr.ird.observe.client.datasource.editor.api.content.data.table.ContentTableUI> ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/landing/TripLandingUI.jaxx ===================================== @@ -121,5 +121,5 @@ </cell> </row> </Table> - <JMenuItem id='move' styleClass='editableAndNotModifiedAndTableNotEmpty'/> + <JMenuItem id='moveAll' styleClass='editableAndNotModifiedAndTableNotEmpty'/> </fr.ird.observe.client.datasource.editor.api.content.data.table.ContentTableUI> ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/RouteListUI.jaxx ===================================== @@ -28,4 +28,5 @@ <RouteListUIModel id='model' constructorParams='@override:getNavigationSource(this)'/> <RouteListUIModelStates id='states'/> <TripDto id='bean'/> + <JMenuItem id='moveAll' styleClass='editableAndNotModified'/> </fr.ird.observe.client.datasource.editor.api.content.data.list.ContentListUI> ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/RouteListUIHandler.java ===================================== @@ -0,0 +1,48 @@ +package fr.ird.observe.client.datasource.editor.ps.data.observation; + +/*- + * #%L + * ObServe Client :: DataSource :: Editor :: PS + * %% + * Copyright (C) 2008 - 2022 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + + +import fr.ird.observe.client.datasource.editor.api.content.actions.move.layout.MoveLayoutAction; +import fr.ird.observe.dto.data.ps.common.TripDto; +import fr.ird.observe.dto.data.ps.observation.RouteDto; + +/** + * Created on 19/04/2022. + * + * @author Tony Chemit - dev@tchemit.fr + * @since 9.0.0 + */ +public class RouteListUIHandler extends GeneratedRouteListUIHandler { + + @Override + protected void installMoveAction() { + super.installMoveAction(); + MoveLayoutAction + .create(ui, RouteDto.class) + .on(() -> ui.getModel().toMoveAllRequest().setParentCandidates((groupBy, parentId) -> getRootOpenableService().getBrothers(groupBy, parentId))) + .call(r -> getRootOpenableService().moveLayout(TripDto.class, r)) + .then(RouteUIMoveAllTreeAdapter::create) + .install(ui::getMoveAll); + } +} ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/RouteListUIModel.java ===================================== @@ -0,0 +1,49 @@ +package fr.ird.observe.client.datasource.editor.ps.data.observation; + +/*- + * #%L + * ObServe Client :: DataSource :: Editor :: PS + * %% + * Copyright (C) 2008 - 2022 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + + +import fr.ird.observe.client.datasource.editor.api.content.actions.move.layout.MoveLayoutRequestBuilder; +import fr.ird.observe.dto.data.ps.observation.RouteDto; + +/** + * Created on 19/04/2022. + * + * @author Tony Chemit - dev@tchemit.fr + * @since 9.0.0 + */ +public class RouteListUIModel extends GeneratedRouteListUIModel { + + public RouteListUIModel(RouteListUINavigationNode source) { + super(source); + } + + public MoveLayoutRequestBuilder.StepSetParentCandidates toMoveAllRequest() { + return MoveLayoutRequestBuilder + .create(RouteDto.class, getStates().selectedParent()) + .setAvailableLayoutType(RouteDto.class) + .setEditNode(getSource().getInitializer().getEditNode()) + .setGroupByValue(this::getGroupByValue); + } + +} ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/RouteUIMoveAllTreeAdapter.java ===================================== @@ -0,0 +1,57 @@ +package fr.ird.observe.client.datasource.editor.ps.data.observation; + +/*- + * #%L + * ObServe Client :: DataSource :: Editor :: PS + * %% + * Copyright (C) 2008 - 2022 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.datasource.editor.api.content.actions.move.layout.MoveLayoutTreeAdapter; +import fr.ird.observe.client.datasource.editor.ps.data.common.TripUINavigationNode; +import fr.ird.observe.services.service.data.MoveLayoutRequest; + +import java.util.function.Function; + +/** + * Created on 19/04/2022. + * + * @author Tony Chemit - dev@tchemit.fr + * @since 9.0.0 + */ +public class RouteUIMoveAllTreeAdapter extends MoveLayoutTreeAdapter<TripUINavigationNode, RouteListUINavigationNode> { + + public static Function<MoveLayoutRequest, RouteUIMoveAllTreeAdapter> create(RouteListUI ui) { + return r -> new RouteUIMoveAllTreeAdapter(ui.getModel().getSource()); + } + + public RouteUIMoveAllTreeAdapter(RouteListUINavigationNode incomingNode) { + super(incomingNode::getParent); + } + + @Override + public final TripUINavigationNode getNewParentNode(TripUINavigationNode oldParentNode, String newParentId) { + return oldParentNode.findSibling(newParentId); + } + + @Override + public final RouteListUINavigationNode getNodeToSelect(TripUINavigationNode parentNode) { + return parentNode.getRouteObsListUINavigationNode(); + } + +} ===================================== client/datasource/editor/ps/src/main/resources/fr/ird/observe/client/datasource/editor/ps/data/common/TripLocalmarketUINavigationNode.scope ===================================== @@ -5,6 +5,9 @@ "ui.iconPath": "navigation.ps.data.common.TripLocalmarket" }, "i18nMapping": { + "action.move.all": "observe.data.ps.common.TripLocalmarket.action.move.all", + "action.move.all.choose.parent.message": "observe.data.ps.common.TripLocalmarket.action.move.all.choose.parent.message", + "action.move.all.choose.parent.title": "observe.data.ps.common.TripLocalmarket.action.move.all.choose.parent.title", "type": "observe.data.ps.common.TripLocalmarket.type" }, "types": { ===================================== client/datasource/editor/ps/src/main/resources/fr/ird/observe/client/datasource/editor/ps/data/common/TripLogbookUINavigationNode.scope ===================================== @@ -5,6 +5,9 @@ "ui.iconPath": "navigation.ps.data.common.TripLogbook" }, "i18nMapping": { + "action.move.all": "observe.data.ps.common.TripLogbook.action.move.all", + "action.move.all.choose.parent.message": "observe.data.ps.common.TripLogbook.action.move.all.choose.parent.message", + "action.move.all.choose.parent.title": "observe.data.ps.common.TripLogbook.action.move.all.choose.parent.title", "type": "observe.data.ps.common.TripLogbook.type" }, "types": { ===================================== client/datasource/editor/ps/src/main/resources/fr/ird/observe/client/datasource/editor/ps/data/common/TripUINavigationNode.scope ===================================== @@ -7,6 +7,9 @@ }, "i18nMapping": { "action.create": "observe.data.Trip.action.create", + "action.move.all": "observe.data.ps.common.Trip.action.move.all", + "action.move.all.choose.parent.message": "observe.data.ps.common.Trip.action.move.all.choose.parent.message", + "action.move.all.choose.parent.title": "observe.data.ps.common.Trip.action.move.all.choose.parent.title", "message.not.open": "observe.data.Trip.message.not.open", "navigation.unsaved": "observe.data.Trip.navigation.unsaved", "title": "observe.data.Trip.title", ===================================== client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/GenerateContentUISupport.java ===================================== @@ -159,6 +159,7 @@ public abstract class GenerateContentUISupport extends GenerateJavaFileSupport { && !getClass().getSimpleName().endsWith("OpenableUIHandler") && !getClass().getSimpleName().endsWith("OpenableUIMoveTreeAdapter") && !getClass().getSimpleName().endsWith("OpenableUIModelStates") + && !getClass().getSimpleName().endsWith("ListUIModel") && !getClass().getSimpleName().endsWith("ListUIHandler") && !getClass().getSimpleName().endsWith("ListUINavigationCapability") && !getClass().getSimpleName().endsWith("SimpleUIHandler") ===================================== client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/data/layout/GenerateContentLayoutUINavigationScope.java ===================================== @@ -88,6 +88,9 @@ public class GenerateContentLayoutUINavigationScope extends GenerateContentLayou @Override protected String generateConcreteContent(Path path, String packageName, String namePrefix) { addI118nProperty(dtoType, "type"); + addI118nProperty(dtoType, "action.move.all"); + addI118nProperty(dtoType, "action.move.all.choose.parent.message"); + addI118nProperty(dtoType, "action.move.all.choose.parent.title"); NavigationScopeDescriptor descriptor = scopeBuilder.build(i18nMapping, iconPath); return serializeDescriptor(descriptor); } ===================================== client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/data/ropen/GenerateContentRootOpenableUINavigationScope.java ===================================== @@ -26,6 +26,7 @@ import fr.ird.observe.client.datasource.editor.api.content.data.open.ContentOpen import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationScope; import fr.ird.observe.client.datasource.editor.spi.content.NavigationScopeBuilder; import fr.ird.observe.client.datasource.editor.spi.content.NavigationScopeDescriptor; +import fr.ird.observe.dto.data.UsingLayout; import java.nio.file.Path; @@ -78,6 +79,11 @@ public class GenerateContentRootOpenableUINavigationScope extends GenerateConten addI118nProperty(dtoType, "message.not.open"); addI118nProperty(dtoType, "navigation.unsaved"); addI118nProperty(dtoType, "action.create"); + if (UsingLayout.class.isAssignableFrom(dtoType)) { + addI118nProperty(dtoType, "action.move.all"); + addI118nProperty(dtoType, "action.move.all.choose.parent.message"); + addI118nProperty(dtoType, "action.move.all.choose.parent.title"); + } NavigationScopeDescriptor descriptor = scopeBuilder.build(i18nMapping, iconPath); return serializeDescriptor(descriptor); } ===================================== client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/helper/ContentUIHandlerHelper.java ===================================== @@ -93,7 +93,7 @@ public class ContentUIHandlerHelper extends ContentUIHelperSupport { " .on(() -> ui.getModel().toMoveRequest().setParentCandidates((groupBy, parentId) -> getRootOpenableService().getBrothers(groupBy, parentId)))\n" + " .call(r -> getRootOpenableService().moveLayout(%1$s.class, r))\n" + " .then(%3$sMoveTreeAdapter::create)\n" + - " .install(ui::getMove);\n" + + " .install(ui::getMoveAll);\n" + " }\n\n"; public static final String INSTALL_DELETE_SIMPLE_ACTION = "" + " @Override\n" + @@ -203,7 +203,7 @@ public class ContentUIHandlerHelper extends ContentUIHelperSupport { " .on(() -> ui.getModel().toMoveRequest().setParentCandidates((groupBy, parentId) -> getRootOpenableService().getBrothers(groupBy, parentId)))\n" + " .call(r -> getRootOpenableService().moveLayout(%1$s.class, r))\n" + " .then(%2$sMoveTreeAdapter::create)\n" + - " .install(ui::getMove);\n" + + " .install(ui::getMoveAll);\n" + " }\n\n"; public static String generateCreateNewAction(List<String> imports, GenerateJavaFileSupport generator) { ===================================== core/api/services/src/main/i18n/getters/labels.getter ===================================== @@ -754,9 +754,9 @@ observe.data.ll.observation.Tdr.type observe.data.ll.observation.WeightMeasure.type observe.data.ll.observation.WeightMeasure.weight observe.data.ll.observation.WeightMeasure.weight.short -observe.data.ps.common.Trip.action.move -observe.data.ps.common.Trip.action.move.choose.parent.message -observe.data.ps.common.Trip.action.move.choose.parent.title +observe.data.ps.common.Trip.action.move.all +observe.data.ps.common.Trip.action.move.all.choose.parent.message +observe.data.ps.common.Trip.action.move.all.choose.parent.title observe.data.ps.common.Trip.action.openLinkFormsUrl.tip observe.data.ps.common.Trip.action.openLinkReportsUrl.tip observe.data.ps.common.Trip.advancedSamplingAcquisitionStatus @@ -779,13 +779,13 @@ observe.data.ps.common.Trip.routeObs observe.data.ps.common.Trip.routeObsSize observe.data.ps.common.Trip.targetWellsSamplingAcquisitionStatusLabel.tip observe.data.ps.common.Trip.timeAtSea -observe.data.ps.common.TripGearUseFeatures.action.move -observe.data.ps.common.TripGearUseFeatures.action.move.choose.parent.message -observe.data.ps.common.TripGearUseFeatures.action.move.choose.parent.title +observe.data.ps.common.TripGearUseFeatures.action.move.all +observe.data.ps.common.TripGearUseFeatures.action.move.all.choose.parent.message +observe.data.ps.common.TripGearUseFeatures.action.move.all.choose.parent.title observe.data.ps.common.TripGearUseFeatures.type -observe.data.ps.common.TripLocalmarket.action.move -observe.data.ps.common.TripLocalmarket.action.move.choose.parent.message -observe.data.ps.common.TripLocalmarket.action.move.choose.parent.title +observe.data.ps.common.TripLocalmarket.action.move.all +observe.data.ps.common.TripLocalmarket.action.move.all.choose.parent.message +observe.data.ps.common.TripLocalmarket.action.move.all.choose.parent.title observe.data.ps.common.TripLocalmarket.type observe.data.ps.common.TripLocalmarketCommon.localMarketAcquisitionStatus observe.data.ps.common.TripLocalmarketCommon.localMarketSurveySamplingAcquisitionStatus @@ -793,9 +793,9 @@ observe.data.ps.common.TripLocalmarketCommon.localMarketWellsSamplingAcquisition observe.data.ps.common.TripLocalmarketCommon.localmarketBatchSize observe.data.ps.common.TripLocalmarketCommon.localmarketSampleSize observe.data.ps.common.TripLocalmarketCommon.localmarketSurveySize -observe.data.ps.common.TripLogbook.action.move -observe.data.ps.common.TripLogbook.action.move.choose.parent.message -observe.data.ps.common.TripLogbook.action.move.choose.parent.title +observe.data.ps.common.TripLogbook.action.move.all +observe.data.ps.common.TripLogbook.action.move.all.choose.parent.message +observe.data.ps.common.TripLogbook.action.move.all.choose.parent.title observe.data.ps.common.TripLogbook.type observe.data.ps.common.TripLogbookCommon.logbookAcquisitionStatus observe.data.ps.common.TripLogbookCommon.routeLogbookSize @@ -815,9 +815,9 @@ observe.data.ps.landing.Landing.title observe.data.ps.landing.Landing.type observe.data.ps.landing.Landing.weight observe.data.ps.landing.Landing.weight.short -observe.data.ps.landing.TripLanding.action.move -observe.data.ps.landing.TripLanding.action.move.choose.parent.message -observe.data.ps.landing.TripLanding.action.move.choose.parent.title +observe.data.ps.landing.TripLanding.action.move.all +observe.data.ps.landing.TripLanding.action.move.all.choose.parent.message +observe.data.ps.landing.TripLanding.action.move.all.choose.parent.title observe.data.ps.landing.TripLanding.type observe.data.ps.localmarket.Batch.action.create observe.data.ps.localmarket.Batch.action.save @@ -1079,6 +1079,9 @@ observe.data.ps.observation.ObjectSchoolEstimate.totalWeight.short observe.data.ps.observation.ObjectSchoolEstimate.type observe.data.ps.observation.Route.action.create observe.data.ps.observation.Route.action.move +observe.data.ps.observation.Route.action.move.all +observe.data.ps.observation.Route.action.move.all.choose.parent.message +observe.data.ps.observation.Route.action.move.all.choose.parent.title observe.data.ps.observation.Route.action.move.choose.parent.message observe.data.ps.observation.Route.action.move.choose.parent.title observe.data.ps.observation.Route.action.move.tip ===================================== core/services/i18n/src/main/i18n/translations/services_en_GB.properties ===================================== @@ -879,9 +879,9 @@ observe.data.ps.Route.validation.duplicated.date=There is already another route observe.data.ps.Route.validation.invalid.quadrant=Activity quadrant at position %1$s is not consistent with trip ocean (%2$s) of trip (indian\: 1 or 2, atlantic\: 1,2,3 or 4). observe.data.ps.Route.validation.invalid.time=Observation time cant' be after the one of the previous activity (activity at position %1$s is not correct). observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Measure count (%s) must be the sum of frequencies count (%s) -observe.data.ps.common.Trip.action.move=Change trip -observe.data.ps.common.Trip.action.move.choose.parent.message=Select target trip -observe.data.ps.common.Trip.action.move.choose.parent.title=Move data to another trip +observe.data.ps.common.Trip.action.move.all=Change trip +observe.data.ps.common.Trip.action.move.all.choose.parent.message=Select target trip +observe.data.ps.common.Trip.action.move.all.choose.parent.title=Move data to another trip observe.data.ps.common.Trip.action.openLinkFormsUrl.tip=View forms in a web browser observe.data.ps.common.Trip.action.openLinkReportsUrl.tip=View reports in a web browser observe.data.ps.common.Trip.advancedSamplingAcquisitionStatus=Advanced sampling @@ -906,13 +906,13 @@ observe.data.ps.common.Trip.routeObs=Observations observe.data.ps.common.Trip.routeObsSize=Count of observation routes observe.data.ps.common.Trip.targetWellsSamplingAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for well sampling on target catches observe.data.ps.common.Trip.timeAtSea=Time at sea (h) -observe.data.ps.common.TripGearUseFeatures.action.move=Change trip -observe.data.ps.common.TripGearUseFeatures.action.move.choose.parent.message=Select target trip -observe.data.ps.common.TripGearUseFeatures.action.move.choose.parent.title=Move data to another trip +observe.data.ps.common.TripGearUseFeatures.action.move.all=Change trip +observe.data.ps.common.TripGearUseFeatures.action.move.all.choose.parent.message=Select target trip +observe.data.ps.common.TripGearUseFeatures.action.move.all.choose.parent.title=Move data to another trip observe.data.ps.common.TripGearUseFeatures.type=Trip Gear uses features -observe.data.ps.common.TripLocalmarket.action.move=Change trip -observe.data.ps.common.TripLocalmarket.action.move.choose.parent.message=Select target trip -observe.data.ps.common.TripLocalmarket.action.move.choose.parent.title=Move data to another trip +observe.data.ps.common.TripLocalmarket.action.move.all=Change trip +observe.data.ps.common.TripLocalmarket.action.move.all.choose.parent.message=Select target trip +observe.data.ps.common.TripLocalmarket.action.move.all.choose.parent.title=Move data to another trip observe.data.ps.common.TripLocalmarket.type=Local market observe.data.ps.common.TripLocalmarketCommon.localMarketAcquisitionStatus=Local market collection observe.data.ps.common.TripLocalmarketCommon.localMarketSurveySamplingAcquisitionStatus=Local market dock survey @@ -920,9 +920,9 @@ observe.data.ps.common.TripLocalmarketCommon.localMarketWellsSamplingAcquisition observe.data.ps.common.TripLocalmarketCommon.localmarketBatchSize=Count of batches observe.data.ps.common.TripLocalmarketCommon.localmarketSampleSize=Count of samples observe.data.ps.common.TripLocalmarketCommon.localmarketSurveySize=Count of survey -observe.data.ps.common.TripLogbook.action.move=Change trip -observe.data.ps.common.TripLogbook.action.move.choose.parent.message=Select target trip -observe.data.ps.common.TripLogbook.action.move.choose.parent.title=Move data to another trip +observe.data.ps.common.TripLogbook.action.move.all=Change trip +observe.data.ps.common.TripLogbook.action.move.all.choose.parent.message=Select target trip +observe.data.ps.common.TripLogbook.action.move.all.choose.parent.title=Move data to another trip observe.data.ps.common.TripLogbook.type=Logbook and associate data observe.data.ps.common.TripLogbookCommon.logbookAcquisitionStatus=Logbook collection observe.data.ps.common.TripLogbookCommon.routeLogbookSize=Count of logbook routes @@ -945,9 +945,9 @@ observe.data.ps.landing.Landing.validation.date.after.currentPsCommonTrip.startD observe.data.ps.landing.Landing.validation.date.delay.too.long=Delay in days with trip end date is %d and can not be more than %s days. observe.data.ps.landing.Landing.weight=Weight (t) observe.data.ps.landing.Landing.weight.short=Weight -observe.data.ps.landing.TripLanding.action.move=Change trip -observe.data.ps.landing.TripLanding.action.move.choose.parent.message=Select target trip -observe.data.ps.landing.TripLanding.action.move.choose.parent.title=Move data to another trip +observe.data.ps.landing.TripLanding.action.move.all=Change trip +observe.data.ps.landing.TripLanding.action.move.all.choose.parent.message=Select target trip +observe.data.ps.landing.TripLanding.action.move.all.choose.parent.title=Move data to another trip observe.data.ps.landing.TripLanding.type=Trip landing observe.data.ps.localmarket.Batch.action.create=Add a new batch observe.data.ps.localmarket.Batch.action.save=Insert this batch @@ -1251,6 +1251,9 @@ observe.data.ps.observation.ObjectSchoolEstimate.totalWeight.short=Total weight observe.data.ps.observation.ObjectSchoolEstimate.type=Object school estimate observe.data.ps.observation.Route.action.create=Next road observe.data.ps.observation.Route.action.move=Change trip +observe.data.ps.observation.Route.action.move.all=Change trip +observe.data.ps.observation.Route.action.move.all.choose.parent.message=Select target trip +observe.data.ps.observation.Route.action.move.all.choose.parent.title=Move routes to another trip observe.data.ps.observation.Route.action.move.choose.parent.message=Select target trip observe.data.ps.observation.Route.action.move.choose.parent.title=Move routes to another trip observe.data.ps.observation.Route.action.move.tip=Change trip of route(s) ===================================== core/services/i18n/src/main/i18n/translations/services_es_ES.properties ===================================== @@ -879,9 +879,9 @@ observe.data.ps.Route.validation.duplicated.date=Ya existe otra ruta en esa fech observe.data.ps.Route.validation.invalid.quadrant=El cuadrante de la actividad %1$s no es coherente con el océano (%2$s) de la marea (indico \: 1,2, atlántico \: 1, 2, 3, 4) observe.data.ps.Route.validation.invalid.time=La hora de la observación de la actividad debe ser superior a la de la actividad anterior (actividad %1$s incorrecta). observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Measure count (%s) must be the sum of frequencies count (%s) -observe.data.ps.common.Trip.action.move=Change trip -observe.data.ps.common.Trip.action.move.choose.parent.message=Select target trip -observe.data.ps.common.Trip.action.move.choose.parent.title=Move data to another trip +observe.data.ps.common.Trip.action.move.all=Change trip +observe.data.ps.common.Trip.action.move.all.choose.parent.message=Select target trip +observe.data.ps.common.Trip.action.move.all.choose.parent.title=Move data to another trip observe.data.ps.common.Trip.action.openLinkFormsUrl.tip=Acceder a los formularios en un navegador web observe.data.ps.common.Trip.action.openLinkReportsUrl.tip=Accéder aux rapports dans un navigateur web observe.data.ps.common.Trip.advancedSamplingAcquisitionStatus=Advanced sampling TODO @@ -906,13 +906,13 @@ observe.data.ps.common.Trip.routeObs=Observations \#TODO observe.data.ps.common.Trip.routeObsSize=Count of observation routes observe.data.ps.common.Trip.targetWellsSamplingAcquisitionStatusLabel.tip=Only choices that indicate existence of data allow acquisition for well sampling on target catches observe.data.ps.common.Trip.timeAtSea=Time at sea (h) -observe.data.ps.common.TripGearUseFeatures.action.move=Change trip -observe.data.ps.common.TripGearUseFeatures.action.move.choose.parent.message=Select target trip -observe.data.ps.common.TripGearUseFeatures.action.move.choose.parent.title=Move data to another trip +observe.data.ps.common.TripGearUseFeatures.action.move.all=Change trip +observe.data.ps.common.TripGearUseFeatures.action.move.all.choose.parent.message=Select target trip +observe.data.ps.common.TripGearUseFeatures.action.move.all.choose.parent.title=Move data to another trip observe.data.ps.common.TripGearUseFeatures.type=Trip Gear uses features -observe.data.ps.common.TripLocalmarket.action.move=Cambiar de marea -observe.data.ps.common.TripLocalmarket.action.move.choose.parent.message=Select target trip -observe.data.ps.common.TripLocalmarket.action.move.choose.parent.title=Move data to another trip +observe.data.ps.common.TripLocalmarket.action.move.all=Cambiar de marea +observe.data.ps.common.TripLocalmarket.action.move.all.choose.parent.message=Select target trip +observe.data.ps.common.TripLocalmarket.action.move.all.choose.parent.title=Move data to another trip observe.data.ps.common.TripLocalmarket.type=Local market observe.data.ps.common.TripLocalmarketCommon.localMarketAcquisitionStatus=Local market collection observe.data.ps.common.TripLocalmarketCommon.localMarketSurveySamplingAcquisitionStatus=Local market dock survey TODO @@ -920,9 +920,9 @@ observe.data.ps.common.TripLocalmarketCommon.localMarketWellsSamplingAcquisition observe.data.ps.common.TripLocalmarketCommon.localmarketBatchSize=Count of batches observe.data.ps.common.TripLocalmarketCommon.localmarketSampleSize=Count of samples observe.data.ps.common.TripLocalmarketCommon.localmarketSurveySize=Count of survey -observe.data.ps.common.TripLogbook.action.move=Cambiar de marea -observe.data.ps.common.TripLogbook.action.move.choose.parent.message=Select target trip -observe.data.ps.common.TripLogbook.action.move.choose.parent.title=Move data to another trip +observe.data.ps.common.TripLogbook.action.move.all=Cambiar de marea +observe.data.ps.common.TripLogbook.action.move.all.choose.parent.message=Select target trip +observe.data.ps.common.TripLogbook.action.move.all.choose.parent.title=Move data to another trip observe.data.ps.common.TripLogbook.type=Logbook and associate data observe.data.ps.common.TripLogbookCommon.logbookAcquisitionStatus=Logbook collection TODO observe.data.ps.common.TripLogbookCommon.routeLogbookSize=Count of logbook routes @@ -945,9 +945,9 @@ observe.data.ps.landing.Landing.validation.date.after.currentPsCommonTrip.startD observe.data.ps.landing.Landing.validation.date.delay.too.long=Delay in days with trip end date is %d and can not be more than %s days. observe.data.ps.landing.Landing.weight=Weight (t) \#TODO observe.data.ps.landing.Landing.weight.short=Weight \#TODO -observe.data.ps.landing.TripLanding.action.move=Change trip -observe.data.ps.landing.TripLanding.action.move.choose.parent.message=Select target trip -observe.data.ps.landing.TripLanding.action.move.choose.parent.title=Move data to another trip +observe.data.ps.landing.TripLanding.action.move.all=Change trip +observe.data.ps.landing.TripLanding.action.move.all.choose.parent.message=Select target trip +observe.data.ps.landing.TripLanding.action.move.all.choose.parent.title=Move data to another trip observe.data.ps.landing.TripLanding.type=TripLanding observe.data.ps.localmarket.Batch.action.create=Add a new batch observe.data.ps.localmarket.Batch.action.save=Insert this batch @@ -1251,6 +1251,9 @@ observe.data.ps.observation.ObjectSchoolEstimate.totalWeight.short=total weight observe.data.ps.observation.ObjectSchoolEstimate.type=Estimación banco de objetos observe.data.ps.observation.Route.action.create=Ruta siguiente observe.data.ps.observation.Route.action.move=Cambiar de marea +observe.data.ps.observation.Route.action.move.all=Cambiar de marea +observe.data.ps.observation.Route.action.move.all.choose.parent.message=A qué marea quierer asociar las rutas seleccionadas ? +observe.data.ps.observation.Route.action.move.all.choose.parent.title=Cambiar la marea de las rutas observe.data.ps.observation.Route.action.move.choose.parent.message=A qué marea quierer asociar las rutas seleccionadas ? observe.data.ps.observation.Route.action.move.choose.parent.title=Cambiar la marea de las rutas observe.data.ps.observation.Route.action.move.tip=Cambiar la marea de las rutas seleccionadas ===================================== core/services/i18n/src/main/i18n/translations/services_fr_FR.properties ===================================== @@ -879,9 +879,9 @@ observe.data.ps.Route.validation.duplicated.date=Il existe déjà une autre rout observe.data.ps.Route.validation.invalid.quadrant=Le quadrant de l’activité à la position %1$s n'est pas cohérent par rapport à l'océan (%2$s) de la marée (indien \: 1 observe.data.ps.Route.validation.invalid.time=L'heure d'observation d'une activité doit être supérieure à celle de l'activité précédente (activité de position %1$s incorrecte). observe.data.ps.SampleSpecies.validation.mismatch.measuredCount=Le nombre mesuré (%s) doit valoir la somme des effectifs de fréquences (%s) -observe.data.ps.common.Trip.action.move=Changer de marée -observe.data.ps.common.Trip.action.move.choose.parent.message=À quelle marée voulez-vous associer les données sélectionnées ? -observe.data.ps.common.Trip.action.move.choose.parent.title=Changer la marée des données sélectionnées +observe.data.ps.common.Trip.action.move.all=Déplacer des données +observe.data.ps.common.Trip.action.move.all.choose.parent.message=À quelle marée voulez-vous associer les données sélectionnées ? +observe.data.ps.common.Trip.action.move.all.choose.parent.title=Changer la marée des données sélectionnées observe.data.ps.common.Trip.action.openLinkFormsUrl.tip=Accéder aux formulaires dans un navigateur web observe.data.ps.common.Trip.action.openLinkReportsUrl.tip=Accéder aux rapports dans un navigateur web observe.data.ps.common.Trip.advancedSamplingAcquisitionStatus=Échantillonnage avancé @@ -906,13 +906,13 @@ observe.data.ps.common.Trip.routeObs=Route « Observations » observe.data.ps.common.Trip.routeObsSize=Nombre de routes « Observation » observe.data.ps.common.Trip.targetWellsSamplingAcquisitionStatusLabel.tip=Seuls les choix reflétant l'existence des données permettront la saisie de l'échantillonnage des cuves d'espèces cibles observe.data.ps.common.Trip.timeAtSea=Heures en mer -observe.data.ps.common.TripGearUseFeatures.action.move=Changer de marée -observe.data.ps.common.TripGearUseFeatures.action.move.choose.parent.message=À quelle marée voulez-vous associer les équipements ? -observe.data.ps.common.TripGearUseFeatures.action.move.choose.parent.title=Changer la marée des équipements +observe.data.ps.common.TripGearUseFeatures.action.move.all=Tout déplacer +observe.data.ps.common.TripGearUseFeatures.action.move.all.choose.parent.message=À quelle marée voulez-vous associer les équipements ? +observe.data.ps.common.TripGearUseFeatures.action.move.all.choose.parent.title=Changer la marée des équipements observe.data.ps.common.TripGearUseFeatures.type=Équipement -observe.data.ps.common.TripLocalmarket.action.move=Changer de marée -observe.data.ps.common.TripLocalmarket.action.move.choose.parent.message=À quelle marée voulez-vous associer les données du marché local . -observe.data.ps.common.TripLocalmarket.action.move.choose.parent.title=Changer la marée des données du marché local +observe.data.ps.common.TripLocalmarket.action.move.all=Tout déplacer +observe.data.ps.common.TripLocalmarket.action.move.all.choose.parent.message=À quelle marée voulez-vous associer les données du marché local ? +observe.data.ps.common.TripLocalmarket.action.move.all.choose.parent.title=Changer la marée des données du marché local observe.data.ps.common.TripLocalmarket.type=Marché local observe.data.ps.common.TripLocalmarketCommon.localMarketAcquisitionStatus=Collecte du marché local observe.data.ps.common.TripLocalmarketCommon.localMarketSurveySamplingAcquisitionStatus=Échantillonnage du marché local à quai (sondages) @@ -920,9 +920,9 @@ observe.data.ps.common.TripLocalmarketCommon.localMarketWellsSamplingAcquisition observe.data.ps.common.TripLocalmarketCommon.localmarketBatchSize=Nombre de lots observe.data.ps.common.TripLocalmarketCommon.localmarketSampleSize=Nombre d'échantillonnages observe.data.ps.common.TripLocalmarketCommon.localmarketSurveySize=Nombre d'enquètes -observe.data.ps.common.TripLogbook.action.move=Changer de marée -observe.data.ps.common.TripLogbook.action.move.choose.parent.message=A quelle marée voulez-vous associer les données du livre de bord ? -observe.data.ps.common.TripLogbook.action.move.choose.parent.title=Changer la marée des données du livre de bord +observe.data.ps.common.TripLogbook.action.move.all=Tout déplacer +observe.data.ps.common.TripLogbook.action.move.all.choose.parent.message=A quelle marée voulez-vous associer les données du livre de bord ? +observe.data.ps.common.TripLogbook.action.move.all.choose.parent.title=Changer la marée des données du livre de bord observe.data.ps.common.TripLogbook.type=Livre de bord et données associées observe.data.ps.common.TripLogbookCommon.logbookAcquisitionStatus=Collecte du logbook observe.data.ps.common.TripLogbookCommon.routeLogbookSize=Nombre de routes « Livre de Bord » @@ -945,9 +945,9 @@ observe.data.ps.landing.Landing.validation.date.after.currentPsCommonTrip.startD observe.data.ps.landing.Landing.validation.date.delay.too.long=Le délai avec la date de fin de marée est de %s jour(s) et ne doit pas dépasser %s jour(s). observe.data.ps.landing.Landing.weight=Poids (en t) observe.data.ps.landing.Landing.weight.short=Poids (en t) -observe.data.ps.landing.TripLanding.action.move=Changer de marée -observe.data.ps.landing.TripLanding.action.move.choose.parent.message=À quelle marée voulez-vous associer les débarquements ? -observe.data.ps.landing.TripLanding.action.move.choose.parent.title=Changer la marée des débarquements +observe.data.ps.landing.TripLanding.action.move.all=Tout déplacer +observe.data.ps.landing.TripLanding.action.move.all.choose.parent.message=À quelle marée voulez-vous associer les débarquements ? +observe.data.ps.landing.TripLanding.action.move.all.choose.parent.title=Changer la marée des débarquements observe.data.ps.landing.TripLanding.type=Débarquement observe.data.ps.localmarket.Batch.action.create=Nouveau lot observe.data.ps.localmarket.Batch.action.save=Insérer ce lot @@ -967,7 +967,7 @@ observe.data.ps.localmarket.Batch.weight.observed.tip=Le poids estimé a été o observe.data.ps.localmarket.Batch.weight.short=Poids observe.data.ps.localmarket.Batch.weight.validation.required=Le nombre ou le poids doit être renseigné (mais pas les deux). observe.data.ps.localmarket.Sample.action.create=Échantillonnage au port suivant -observe.data.ps.localmarket.Sample.action.move=Changer de marée +observe.data.ps.localmarket.Sample.action.move=Changer de marée observe.data.ps.localmarket.Sample.action.move.choose.parent.message=A quelle marée voulez-vous associer les échantillonnages sélectionnés ? observe.data.ps.localmarket.Sample.action.move.choose.parent.title=Changer la marée des échantillonnages observe.data.ps.localmarket.Sample.action.move.tip=Changer la marée des échantillonnages sélectionnés @@ -1251,6 +1251,9 @@ observe.data.ps.observation.ObjectSchoolEstimate.totalWeight.short=Poids total observe.data.ps.observation.ObjectSchoolEstimate.type=Estimation banc objet observe.data.ps.observation.Route.action.create=Route suivante observe.data.ps.observation.Route.action.move=Changer de marée +observe.data.ps.observation.Route.action.move.all=Tout déplacer +observe.data.ps.observation.Route.action.move.all.choose.parent.message=A quelle marée voulez-vous associer toutes les routes ? +observe.data.ps.observation.Route.action.move.all.choose.parent.title=Changer la marée des routes observe.data.ps.observation.Route.action.move.choose.parent.message=A quelle marée voulez-vous associer les routes sélectionnées ? observe.data.ps.observation.Route.action.move.choose.parent.title=Changer la marée des routes observe.data.ps.observation.Route.action.move.tip=Changer la marée des routes sélectionnées ===================================== model/src/main/models/Observe/dto/class/i18nLabels.properties ===================================== @@ -86,7 +86,7 @@ data.ps.observation.FloatingObject=materialsValid,objectOperation,supportVesselN data.ps.observation.NonTargetCatchRelease=comment,conformity,count,length,lengthMeasureMethod,releasingTime,sex,status,species,speciesGroupReleaseMode,message.cantAdd data.ps.observation.ObjectObservedSpecies=count,species,speciesStatus data.ps.observation.ObjectSchoolEstimate=species,totalWeight,weightMeasureMethod -data.ps.observation.Route=activity,comment,date,endLogValue,startLogValue,choice.create.fin.veille.activity,choice.not.create.fin.veille.activity.and.continue,message.need.fin.veille.activity +data.ps.observation.Route=activity,comment,date,endLogValue,startLogValue,choice.create.fin.veille.activity,choice.not.create.fin.veille.activity.and.continue,message.need.fin.veille.activity,action.move.all,action.move.all.choose.parent.message,action.move.all.choose.parent.title data.ps.observation.Sample=species,sampleMeasure,speciesFate,length.computed.tip,length.observed.tip,message.cantAdd,weight.computed.tip,weight.observed.tip data.ps.observation.SampleMeasure=comment,count,length,lengthMeasureMethod,picturesReferences,sex,sizeMeasureType,species,speciesFate,tagNumber,weight,weightMeasureMethod,weightMeasureType,type data.ps.observation.SchoolEstimate=meanWeight,species,totalWeight,weightMeasureMethod View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/c1d3199775cb1da16abc61e72b... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/c1d3199775cb1da16abc61e72b... You're receiving this email because of your account on gitlab.com.