Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: e7470af2 by Tony Chemit at 2021-09-23T15:19:51+02:00 fix menu action fires when editing a text field - - - - - 6c519609 by Tony Chemit at 2021-09-23T16:39:18+02:00 fix number renderer (if <1 won't display it) - - - - - 91895f04 by Tony Chemit at 2021-09-23T16:46:03+02:00 fix enumeration decoration - - - - - b932e830 by Tony Chemit at 2021-09-23T16:46:15+02:00 fix i18n - - - - - bfe74226 by Tony Chemit at 2021-09-23T16:46:36+02:00 remove batch validation since now with the computed value we can have both - - - - - cfe587d0 by Tony Chemit at 2021-09-23T16:47:03+02:00 fix reset computed value and remove for the moment auto-consolidation - - - - - 8c23e69a by Tony Chemit at 2021-09-23T16:47:20+02:00 move origin field to a normal text editor - - - - - 5e81b40b by Tony Chemit at 2021-09-23T17:10:58+02:00 fix typo - - - - - 1f076526 by Tony Chemit at 2021-09-23T18:10:54+02:00 ps logbook Activity.time may be not null - - - - - 1e6cb46c by Tony Chemit at 2021-09-23T18:27:08+02:00 Problème de reset sur l'éditeur de temps (ps logbook activity) - Closes #2000 - - - - - 18 changed files: - client/core/src/main/java/fr/ird/observe/client/main/ObserveMainUIHandler.java - client/core/src/main/java/fr/ird/observe/client/util/JMenuWithAccelerator.java - client/core/src/main/java/fr/ird/observe/client/util/table/JXTableUtil.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/ContentTableUIModelStates.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/menu/DataSourceEditorNavigationMenuHandler.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/menu/DataSourceEditorNavigationModuleContext.java - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/localmarket/TripBatchUI.jaxx - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/localmarket/TripBatchUIModelStates.java - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/logbook/ActivityUIHandler.java - models/definition/src/main/models/Observe/dto/attribute/mayNotNull.properties - models/dto/java/src/main/java/fr/ird/observe/dto/data/ps/localmarket/BatchWeightComputedValueSource.java - models/dto/java/src/main/resources/observe-reports.properties - pom.xml - services/api-test/src/main/resources/fixtures/fr/ird/observe/services/service/actions/report/ReportService.properties - services/i18n/src/main/i18n/translations/services_en_GB.properties - services/i18n/src/main/i18n/translations/services_fr_FR.properties - services/validation/src/main/validation/fr/ird/observe/dto/data/ps/localmarket/BatchDto-create-warning-validation.xml - services/validation/src/main/validation/fr/ird/observe/dto/data/ps/localmarket/BatchDto-update-warning-validation.xml Changes: ===================================== client/core/src/main/java/fr/ird/observe/client/main/ObserveMainUIHandler.java ===================================== @@ -38,6 +38,8 @@ import org.nuiton.jaxx.runtime.swing.action.JAXXObjectActionSupport; import org.nuiton.jaxx.widgets.error.ErrorDialogUI; import javax.swing.JComponent; +import javax.swing.event.MenuEvent; +import javax.swing.event.MenuListener; import java.util.Locale; import static io.ultreia.java4all.i18n.I18n.t; @@ -103,6 +105,23 @@ public class ObserveMainUIHandler implements UIHandler<ObserveMainUI>, WithClien busyModel.addPropertyChangeListener(BusyModel.BUSY_PROPERTY_NAME, evt -> reload(model, config, busyModel)); + ui.getMenuLanguage().disabled(); + ui.getMenuHelp().addMenuListener(new MenuListener() { + @Override + public void menuSelected(MenuEvent e) { + ui.getMenuLanguage().enabled(); + } + + @Override + public void menuDeselected(MenuEvent e) { + ui.getMenuLanguage().disabled(); + } + + @Override + public void menuCanceled(MenuEvent e) { + ui.getMenuLanguage().disabled(); + } + }); } public void destroy() { ===================================== client/core/src/main/java/fr/ird/observe/client/util/JMenuWithAccelerator.java ===================================== @@ -39,10 +39,25 @@ public class JMenuWithAccelerator extends JMenu { private static final Logger log = LogManager.getLogger(JMenuWithAccelerator.class); private KeyStroke accelerator; + private boolean accessible; @Override public KeyStroke getAccelerator() { - return accelerator; + return accessible ? accelerator : null; + } + + public void enabled() { + KeyStroke oldValue = getAccelerator(); + accessible = true; + repaint(); + revalidate(); + firePropertyChange("accelerator", oldValue, getAccelerator()); + } + + public void disabled() { + KeyStroke oldValue = getAccelerator(); + accessible = false; + firePropertyChange("accelerator", oldValue, getAccelerator()); } @Override ===================================== client/core/src/main/java/fr/ird/observe/client/util/table/JXTableUtil.java ===================================== @@ -116,7 +116,7 @@ public class JXTableUtil { return null; } Number reference = (Number) value; - if (reference.intValue() == 0) { + if (reference.doubleValue() == 0) { return null; } return reference.toString(); ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/table/ContentTableUIModelStates.java ===================================== @@ -61,7 +61,7 @@ public class ContentTableUIModelStates<D extends DataDto, C extends ContainerChi */ private boolean canResetRow; /** - * Pour savoir si on peut voir les données du l'écran. + * Pour savoir si on peut voir les données de l'écran. * <p> * Cela diffère du mode de l'écran, à utiliser par exemple pour les écrans * d'échantillons lorsque aucune discarded n'est effectuée. on se retrouve en ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/menu/DataSourceEditorNavigationMenuHandler.java ===================================== @@ -31,6 +31,8 @@ import io.ultreia.java4all.i18n.I18n; import org.nuiton.jaxx.runtime.spi.UIHandler; import javax.swing.JMenuItem; +import javax.swing.event.MenuEvent; +import javax.swing.event.MenuListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -65,6 +67,26 @@ public class DataSourceEditorNavigationMenuHandler implements UIHandler<DataSour psContext = new DataSourceEditorNavigationModuleContext(ui, editModel.getPs()); llContext = new DataSourceEditorNavigationModuleContext(ui, editModel.getLl()); + ui.addMenuListener(new MenuListener() { + @Override + public void menuSelected(MenuEvent e) { + psContext.rootMenu.enabled(); + llContext.rootMenu.enabled(); + } + + @Override + public void menuDeselected(MenuEvent e) { + psContext.rootMenu.disabled(); + llContext.rootMenu.disabled(); + } + + @Override + public void menuCanceled(MenuEvent e) { + psContext.rootMenu.disabled(); + llContext.rootMenu.disabled(); + } + }); + selectCommonReferential = new JMenuItem(); ObserveBusinessProject project = ObserveBusinessProject.get(); SelectReferentialAction.install(ui, ui.getPopupMenu(), selectCommonReferential, project.getCommonBusinessModule(), project.getCommonBusinessModule().getCommonBusinessSubModule()); ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/menu/DataSourceEditorNavigationModuleContext.java ===================================== @@ -64,8 +64,9 @@ public class DataSourceEditorNavigationModuleContext implements PropertyChangeLi JMenuWithAccelerator rootMenu = new JMenuWithAccelerator(); KeyStroke keyStroke = MenuAction.getMenuKeyStroke(ui.getPopupMenu()); rootMenu.setAccelerator(keyStroke); - rootMenu.setMnemonic(keyStroke.getKeyChar()); + rootMenu.setMnemonic((char) keyStroke.getKeyCode()); this.rootMenu = rootMenu; + this.rootMenu.disabled(); rootMenu.setText(I18n.t("observe.ui.menu.navigation." + editModel.getModel().toLowerCase())); ui.add(rootMenu); NavigationModelNode<?> node = editModel.getNode(1); @@ -75,7 +76,7 @@ public class DataSourceEditorNavigationModuleContext implements PropertyChangeLi for (BusinessSubModule subModule : module.getSubModules()) { for (EditNode<?> editNode : nodes) { //FIXME We need to get a better order from persistence model - if (editNode.getSubModule().equals(subModule)) { + if (editNode.getSubModule().equals(subModule) && editNode.getLevel() > 0) { JMenuItem item = new JMenuItem(); dataItems.add(item); SelectEditDataAction.install(ui, rootMenu.getPopupMenu(), item, editNode); ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/localmarket/TripBatchUI.jaxx ===================================== @@ -111,8 +111,11 @@ </row> <!-- origin --> <row> - <cell columns='2'> - <BigTextEditor id="origin"/> + <cell> + <JLabel id='originLabel'/> + </cell> + <cell weightx='1' anchor='east'> + <NormalTextEditor id="origin"/> </cell> </row> </Table> ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/localmarket/TripBatchUIModelStates.java ===================================== @@ -53,10 +53,11 @@ import java.util.Set; @GenerateJavaBeanDefinition public class TripBatchUIModelStates extends GeneratedTripBatchUIModelStates { - public static final Set<String> COMPUTE_PROPERTIES = Set.of(BatchDto.PROPERTY_WEIGHT, BatchDto.PROPERTY_PACKAGING); + public static final Set<String> COMPUTE_PROPERTIES = Set.of(BatchDto.PROPERTY_COUNT, BatchDto.PROPERTY_WEIGHT, BatchDto.PROPERTY_PACKAGING); private static final Logger log = LogManager.getLogger(TripBatchUIModelStates.class); private final ConsolidateDataService psConsolidateDataService; private TripDto trip; + private boolean computing; public TripBatchUIModelStates(GeneratedTripBatchUIModel model) { super(model); @@ -70,11 +71,19 @@ public class TripBatchUIModelStates extends GeneratedTripBatchUIModelStates { if (context.getSelectModel().getPs().getCommonTrip().isEnabled()) { trip = context.getCurrentPsCommonTrip(); } - getTableEditBean().addPropertyChangeListener(this::recomputeComputedValues); + getTableEditBean().addPropertyChangeListener(BatchDto.PROPERTY_WEIGHT, this::resetComputedValues); + //TODO Do not compute it for the moment +// getTableEditBean().addPropertyChangeListener(this::recomputeComputedValues); //FIXME Should come from node context not from here... // setShowData(getBean().isNotAvailablePackagingsEmpty()); } + public void resetComputedValues(PropertyChangeEvent event) { + if (event.getNewValue() == null && getTableModel().isCanConsolidate()) { + getTableEditBean().setWeightComputedSource(null); + } + } + public void recomputeComputedValues(PropertyChangeEvent event) { String propertyName = event.getPropertyName(); if (!COMPUTE_PROPERTIES.contains(propertyName) || !getTableModel().isCanConsolidate()) { @@ -84,15 +93,29 @@ public class TripBatchUIModelStates extends GeneratedTripBatchUIModelStates { } public void recomputeComputedValues() { - BatchConsolidateRequest request = new BatchConsolidateRequest(); - request.setBatch(getTableEditBean()); - request.setOceanId(trip.getOcean().getId()); - request.setDate(trip.getEndDate()); - request.setFailIfLengthWeightParameterNotFound(getClientConfig().isValidationLengthWeightEnable()); - BatchConsolidateResult result = psConsolidateDataService.consolidateLocalmarketBatch(request); - if (result != null) { - log.info("Flush consolidate batch changes..."); - result.flushToDto(getTableEditBean()); + if (computing) { + return; + } + computing = true; + + try { + log.info("Will recompute some values..."); + BatchConsolidateRequest request = new BatchConsolidateRequest(); + request.setBatch(getTableEditBean()); + request.setOceanId(trip.getOcean().getId()); + request.setDate(trip.getEndDate()); + request.setFailIfLengthWeightParameterNotFound(false); + BatchConsolidateResult result = psConsolidateDataService.consolidateLocalmarketBatch(request); + if (result != null) { + log.info("Flush consolidate batch changes..."); + result.flushToDto(getTableEditBean()); + String lengthWeightParameterNotFound = result.getLengthWeightParameterNotFound(); + if (lengthWeightParameterNotFound != null) { + log.warn(lengthWeightParameterNotFound); + } + } + } finally { + computing = false; } } ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/logbook/ActivityUIHandler.java ===================================== @@ -43,8 +43,6 @@ class ActivityUIHandler extends GeneratedActivityUIHandler { String text = t("observe.Common.vesselActivity.comment", label); ui.vesselActivityInformation.setText(text); ui.vesselActivityInformation.setToolTipText(text); - //FIXME if dto.time is null, then we have the current time :( - ui.getTime().reset(); } @Override ===================================== models/definition/src/main/models/Observe/dto/attribute/mayNotNull.properties ===================================== @@ -56,6 +56,7 @@ data.ps.localmarket.SampleSampleSpecies.attribute.sampleSpecies=true data.ps.logbook.Activity.attribute.currentDirection=true data.ps.logbook.Activity.attribute.relatedObservedActivity=true data.ps.logbook.Activity.attribute.seaSurfaceTemperature=true +data.ps.logbook.Activity.attribute.time=true data.ps.logbook.Activity.attribute.wind=true data.ps.logbook.Catch.attribute.weightCategory=true data.ps.logbook.Route.attribute.comment=true ===================================== models/dto/java/src/main/java/fr/ird/observe/dto/data/ps/localmarket/BatchWeightComputedValueSource.java ===================================== @@ -49,6 +49,6 @@ public enum BatchWeightComputedValueSource { } @Override public String toString() { - return super.toString(); + return getLabel(); } } ===================================== models/dto/java/src/main/resources/observe-reports.properties ===================================== @@ -1298,7 +1298,7 @@ Date départ,\ Date arrivée,\ Date de l'échantillon,\ Cuves,\ -Composition du l'échantillon (tuple espèce - type de mesure - classe de taille - effectif),\ +Composition de l'échantillon (tuple espèce - type de mesure - classe de taille - effectif),\ Commentaire report.psLocalmarketSample.operations.1=ComputeLocalmarketSampleWellAndSpeciesMeasure report.psLocalmarketSample.repeatVariable.sampleId=java.lang.String|\ ===================================== pom.xml ===================================== @@ -24,7 +24,7 @@ <parent> <groupId>io.ultreia.maven</groupId> <artifactId>pom</artifactId> - <version>2021.95</version> + <version>2021.96</version> </parent> <groupId>fr.ird.observe</groupId> ===================================== services/api-test/src/main/resources/fixtures/fr/ird/observe/services/service/actions/report/ReportService.properties ===================================== @@ -355,7 +355,7 @@ psLocalmarketSample.result.1=483^CAP BOJADOR^30/3/2019^8/4/2019^27/3/2021^3B, 3T psLocalmarketSample.result.columns=8 psLocalmarketSample.result.rows=2 psLocalmarketSample.syntax.columns=8 -psLocalmarketSample.syntax.columnsHeader=Code bateau^Nom bateau^Date départ^Date arrivée^Date de l'échantillon^Cuves^Composition du l'échantillon (tuple espèce - type de mesure - classe de taille - effectif)^Commentaire +psLocalmarketSample.syntax.columnsHeader=Code bateau^Nom bateau^Date départ^Date arrivée^Date de l'échantillon^Cuves^Composition de l'échantillon (tuple espèce - type de mesure - classe de taille - effectif)^Commentaire psLocalmarketSample.syntax.description=Marché local - Échantillons psLocalmarketSample.syntax.name=Marché local - Échantillons psLocalmarketSample.syntax.nbRequests=1 ===================================== services/i18n/src/main/i18n/translations/services_en_GB.properties ===================================== @@ -408,7 +408,7 @@ observe.common.exist.on.remote=%1$s (already exist) observe.constant.AcquisitionMode.individual=By individu observe.constant.AcquisitionMode.number=By effectif observe.constant.BatchWeightComputedValueSource.fromPackagingMeanWeight=Computed from packaging mean weight -observe.constant.BatchWeightComputedValueSource.fromSpeciesMeanWeight=Computed from species mean weight +<F extends DataDto&FloatingObjectAware, P extends DataDto&FloatingObjectPartAware>Computed from species mean weight observe.constant.CatchAcquisitionMode.GROUPED=Batch observe.constant.CatchAcquisitionMode.INDIVIDUAL=Individual observe.constant.CatchComputedValueSource.fromData=Computed from data ===================================== services/i18n/src/main/i18n/translations/services_fr_FR.properties ===================================== @@ -408,7 +408,7 @@ observe.common.exist.on.remote=%1$s (déjà existante) observe.constant.AcquisitionMode.individual=Saisie par individu observe.constant.AcquisitionMode.number=Saisie par nombre observe.constant.BatchWeightComputedValueSource.fromPackagingMeanWeight=Calculé depuis le poids moyen du conditionnement -observe.constant.BatchWeightComputedValueSource.fromSpeciesMeanWeight=Calculé depuis le poids moyen de l'espèceobserve.constant.BatchWeightComputedValueSource.fromPackagingMeanWeight\= +observe.constant.BatchWeightComputedValueSource.fromSpeciesMeanWeight=Calculé depuis le poids moyen de l'espèce observe.constant.CatchAcquisitionMode.GROUPED=Groupé observe.constant.CatchAcquisitionMode.INDIVIDUAL=Par individu observe.constant.CatchComputedValueSource.fromData=calculé à partir des autres données ===================================== services/validation/src/main/validation/fr/ird/observe/dto/data/ps/localmarket/BatchDto-create-warning-validation.xml ===================================== @@ -23,15 +23,6 @@ "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> - <field name="count"> - <!-- count is mandatory except if countOrWeightValid --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ countOrWeightValid ]]> - </param> - <message>observe.data.ps.localmarket.Batch.count.validation.required</message> - </field-validator> - </field> <field name="date"> <!-- date >= trip.endDate and max delay is 5 days --> <field-validator type="dayAfter" short-circuit="true"> @@ -41,14 +32,5 @@ <message>observe.data.ps.localmarket.Batch.validation.date.after.currentTrip.endDate##${startDate}##${endDate}</message> </field-validator> </field> - <field name="weight"> - <!-- weight is mandatory except if countOrWeightValid --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ countOrWeightValid ]]> - </param> - <message>observe.data.ps.localmarket.Batch.count.validation.required</message> - </field-validator> - </field> </validators> ===================================== services/validation/src/main/validation/fr/ird/observe/dto/data/ps/localmarket/BatchDto-update-warning-validation.xml ===================================== @@ -23,15 +23,6 @@ "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> - <field name="count"> - <!-- count is mandatory except if countOrWeightValid --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ countOrWeightValid ]]> - </param> - <message>observe.data.ps.localmarket.Batch.count.validation.required</message> - </field-validator> - </field> <field name="date"> <!-- date >= trip.endDate and max delay is 5 days --> <field-validator type="dayAfter" short-circuit="true"> @@ -41,14 +32,5 @@ <message>observe.data.ps.localmarket.Batch.validation.date.after.currentTrip.endDate##${startDate}##${endDate}</message> </field-validator> </field> - <field name="weight"> - <!-- weight is mandatory except if countOrWeightValid --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ countOrWeightValid ]]> - </param> - <message>observe.data.ps.localmarket.Batch.count.validation.required</message> - </field-validator> - </field> </validators> View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/196f745c2e0eaaf30e0769661... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/196f745c2e0eaaf30e0769661... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT (@tchemit)