Tony CHEMIT pushed to branch feature/issue-2907 at ultreiaio / ird-observe Commits: db656bff by Tony Chemit at 2024-09-16T09:55:28+02:00 [ui] Add a way to not create an empty row when data is empty... - - - - - a5aa662b by Tony Chemit at 2024-09-16T09:55:34+02:00 [ui] Need to validate inline models when edit them - - - - - fd17f34c by Tony Chemit at 2024-09-16T12:11:59+02:00 [persistence] add activity points except if settingStart is a valid point (Obs & Logbook) - - - - - 674fa7bd by Tony Chemit at 2024-09-16T12:12:41+02:00 [ui] Remove date from any zone - - - - - e8808563 by Tony Chemit at 2024-09-16T12:13:22+02:00 [ui] Add date on activity point and settingStart one - - - - - 57d997b6 by Tony Chemit at 2024-09-16T12:31:41+02:00 [ui] Use Setting and Hauling line colors for setting and hauling points as well - - - - - 220b5523 by Tony Chemit at 2024-09-16T12:32:14+02:00 Merge branch 'feature/feature/issue-2875' into develop-9.3.x A propos des dates d'activités sur la carte LL - Closes #2875 - - - - - 85ff10fc by Tony Chemit at 2024-09-16T12:56:28+02:00 Fix decorator in table for location on branchline - - - - - 9f04456c by Tony Chemit at 2024-09-16T12:56:28+02:00 New design of form - - - - - c65391b4 by Tony Chemit at 2024-09-16T12:56:28+02:00 Fix focus owner to number (but should review this in Focus session) - - - - - 9 changed files: - client/core/src/main/java/fr/ird/observe/client/util/table/EditableTableModel.java - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUI.jaxx - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUI.jcss - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUIHandler.java - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUITableModel.java - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SizeMeasureTableModel.java - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/WeightMeasureTableModel.java - client/datasource/editor/ll/src/main/resources/map/ll-style.xml - core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/common/TripTopiaDao.java Changes: ===================================== client/core/src/main/java/fr/ird/observe/client/util/table/EditableTableModel.java ===================================== @@ -214,7 +214,7 @@ public abstract class EditableTableModel<E extends InlineDataDto> extends Abstra this.data.clear(); this.data.addAll(data); addDecorator(this.data); - if (this.data.isEmpty() && editable && canAddRow) { + if (isCanAddEmptyRow()) { // add an empty row (no fire and select: will be done just below) addNewRow(0, false); } @@ -566,4 +566,14 @@ public abstract class EditableTableModel<E extends InlineDataDto> extends Abstra rows.forEach(r -> r.registerDecorator(rowDecorator)); } } + + /** + * FIXME We should stop trying to add a default empty row when data is empty, user must do it, not we... + * + * @return {@code true} if can add a new empty row if data is empty. + */ + protected boolean isCanAddEmptyRow() { + return this.data.isEmpty() && editable && canAddRow; + } + } ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUI.jaxx ===================================== @@ -120,17 +120,27 @@ <JTabbedPane id='mainTabbedPane'> <tab id='caracteristicTab' i18nProperty=""> <Table id='editForm' fill='both' insets='1'> - <row> - <cell columns="2"> - <!-- acquisition Mode --> + <cell columns="2" rows="2"> <JPanel id='acquisitionMode'> <JRadioButton id='acquisitionModeIndividual'/> <JRadioButton id='acquisitionModeGrouped'/> </JPanel> </cell> - <cell columns="2" rows="2"> - <!-- location on longline --> + <cell> + <JLabel id='numberLabel'/> + </cell> + <cell weightx='1' anchor='east'> + <NumberEditor id='number' styleClass="int6"/> + </cell> + </row> + <row> + <cell> + <JPanel/> + </cell> + </row> + <row> + <cell columns="2" rows="4"> <Table id="locationOnLonglinePanel"> <row> <cell anchor="west"> @@ -158,9 +168,6 @@ </row> </Table> </cell> - </row> - <!-- species --> - <row> <cell> <JLabel id='speciesLabel'/> </cell> @@ -168,16 +175,7 @@ <FilterableComboBox id='species' genericType='SpeciesReference'/> </cell> </row> - - <!-- tagNumber --> - <!-- count --> <row> - <cell anchor='west'> - <JLabel id='tagNumberLabel'/> - </cell> - <cell anchor='east' weightx="1" fill="both"> - <NormalTextEditor id='tagNumber'/> - </cell> <cell> <JLabel id='countLabel'/> </cell> @@ -185,22 +183,6 @@ <NumberEditor id='count' styleClass="int6"/> </cell> </row> - - <!-- number --> - <row> - <cell> - <JLabel id='numberLabel'/> - </cell> - <cell weightx='1' anchor='east'> - <NumberEditor id='number' styleClass="int6"/> - </cell> - <cell columns="2"> - <JPanel/> - </cell> - </row> - - <!-- total weight --> - <!-- weightMeasureMethod --> <row> <cell> <JLabel id='totalWeightLabel'/> @@ -208,6 +190,8 @@ <cell weightx='1' anchor='east'> <NumberEditor id='totalWeight' styleClass="float3"/> </cell> + </row> + <row> <cell> <JLabel id='weightMeasureMethodLabel'/> </cell> @@ -215,9 +199,6 @@ <FilterableComboBox id='weightMeasureMethod' genericType='WeightMeasureMethodReference'/> </cell> </row> - - <!-- catch healthStatus --> - <!-- hook position --> <row> <cell> <JLabel id='catchHealthStatusLabel'/> @@ -225,16 +206,7 @@ <cell weightx='1' anchor='east'> <FilterableComboBox id='catchHealthStatus' genericType='HealthStatusReference'/> </cell> - <cell> - <JLabel id='hookPositionLabel'/> - </cell> - <cell weightx='1' anchor='east'> - <FilterableComboBox id='hookPosition' genericType='HookPositionReference'/> - </cell> </row> - - <!-- catch fate --> - <!-- discard healthStatus --> <row> <cell> <JLabel id='catchFateLabel'/> @@ -249,24 +221,44 @@ <FilterableComboBox id='discardHealthStatus' genericType='HealthStatusReference'/> </cell> </row> - - <!-- hookWhenDiscarded --> - <!-- photoReferences --> <row> + <cell> + <JLabel id='hookPositionLabel'/> + </cell> + <cell weightx='1' anchor='east'> + <FilterableComboBox id='hookPosition' genericType='HookPositionReference'/> + </cell> <cell anchor="west"> <JLabel id='hookWhenDiscardedLabel'/> </cell> <cell anchor='west' fill="both"> <BooleanEditor id='hookWhenDiscarded'/> </cell> + </row> + <row> <cell anchor='west'> <JLabel id='photoReferencesLabel'/> </cell> <cell anchor='east' weightx="1" fill="both"> <NormalTextEditor id='photoReferences'/> </cell> + <cell columns="2"/> + <!-- <cell anchor='west'>--> + <!-- <JLabel id='sampleReferencesLabel'/>--> + <!-- </cell>--> + <!-- <cell anchor='east' weightx="1" fill="both">--> + <!-- <NormalTextEditor id='sampleReferences'/>--> + <!-- </cell>--> </row> + <row> + <cell anchor='west'> + <JLabel id='tagNumberLabel'/> + </cell> + <cell anchor='east' weightx="1" fill="both"> + <NormalTextEditor id='tagNumber'/> + </cell> + </row> </Table> </tab> ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUI.jcss ===================================== @@ -26,7 +26,7 @@ } #mainTabbedPane { - _focusComponent:{newComponentArray(acquisitionModeIndividual,depredated,beatDiameter)}; + _focusComponent:{newComponentArray(number,depredated,beatDiameter)}; } /* ***************************************************************************** */ ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUIHandler.java ===================================== @@ -43,7 +43,6 @@ import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.validator.swing.SwingValidator; import javax.swing.AbstractAction; -import javax.swing.JComponent; import javax.swing.JToolBar; import java.awt.Component; import java.awt.event.ActionEvent; @@ -74,19 +73,20 @@ public class SetCatchUIHandler extends GeneratedSetCatchUIHandler { @Override protected Component getFocusComponentOnSelectedRow(SetCatchUI ui, boolean notPersisted, boolean newRow, CatchDto tableEditBean, CatchDto previousRowBean) { - JComponent requestFocus; - if (newRow) { - requestFocus = ui.getSpecies(); - } else { - int acquisitionMode = tableEditBean.getAcquisitionMode(); - CatchAcquisitionMode acquisitionModeEnum = CatchAcquisitionMode.valueOf(acquisitionMode); - if (acquisitionModeEnum.equals(CatchAcquisitionMode.GROUPED)) { - requestFocus = ui.getCount(); - } else { - requestFocus = ui.getCatchHealthStatus(); - } - } - return requestFocus; + //FIXME Review this on Focus clean session +// JComponent requestFocus; +// if (newRow) { +// requestFocus = ui.getNumber(); +// } else { +// int acquisitionMode = tableEditBean.getAcquisitionMode(); +// CatchAcquisitionMode acquisitionModeEnum = CatchAcquisitionMode.valueOf(acquisitionMode); +// if (acquisitionModeEnum.equals(CatchAcquisitionMode.GROUPED)) { +// requestFocus = ui.getCount(); +// } else { +// requestFocus = ui.getCatchHealthStatus(); +// } +// } + return ui.getNumber(); } @Override @@ -351,6 +351,9 @@ public class SetCatchUIHandler extends GeneratedSetCatchUIHandler { boolean enableInlineModels = newValue && (ui.getModel().getStates().isReadingMode() || ui.getModel().getStates().isEditing()); getTableModel().inlineModels().keySet().forEach(i -> { i.setEditable(enableInlineModels); + if (newValue && (!ui.getModel().getStates().isReadingMode() || ui.getModel().getStates().isEditing())) { + i.validate(); + } if (!enableInlineModels) { int selectedRow = ui.getTableModel().getSelectedRow(); if (selectedRow != -1) { ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUITableModel.java ===================================== @@ -23,6 +23,7 @@ package fr.ird.observe.client.datasource.editor.ll.data.observation; */ import fr.ird.observe.client.util.table.EditableListProperty; +import fr.ird.observe.client.util.table.renderer.DecoratorTableRenderer; import fr.ird.observe.dto.data.CatchAcquisitionMode; import fr.ird.observe.dto.data.ll.observation.CatchDto; import fr.ird.observe.dto.data.ll.observation.SizeMeasureDto; @@ -30,6 +31,8 @@ import fr.ird.observe.dto.data.ll.observation.WeightMeasureDto; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import javax.swing.JTable; +import javax.swing.table.TableColumnModel; import java.util.Collection; import java.util.List; @@ -79,6 +82,15 @@ public class SetCatchUITableModel extends GeneratedSetCatchUITableModel { return weightMeasuresTableModel; } + @Override + public void initTableUISize(JTable table) { + super.initTableUISize(table); + TableColumnModel columnModel = table.getColumnModel(); + ((DecoratorTableRenderer) columnModel.getColumn(2).getCellRenderer()).getDecorator().setIndex(1); + ((DecoratorTableRenderer) columnModel.getColumn(3).getCellRenderer()).getDecorator().setIndex(1); + ((DecoratorTableRenderer) columnModel.getColumn(4).getCellRenderer()).getDecorator().setIndex(1); + } + @Override protected void onBeforeResetRow(int row) { super.onBeforeResetRow(row); ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SizeMeasureTableModel.java ===================================== @@ -105,4 +105,8 @@ public class SizeMeasureTableModel extends EditableTableModelWithCache<SizeMeasu return SizeMeasureDto.newDto(new Date()); } + @Override + protected boolean isCanAddEmptyRow() { + return false; + } } ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/WeightMeasureTableModel.java ===================================== @@ -103,4 +103,8 @@ public class WeightMeasureTableModel extends EditableTableModelWithCache<WeightM return !Objects.equals(oldValue, aValue); } + @Override + protected boolean isCanAddEmptyRow() { + return false; + } } ===================================== client/datasource/editor/ll/src/main/resources/map/ll-style.xml ===================================== @@ -37,7 +37,7 @@ <CssParameter name="fill-opacity">0.5</CssParameter> </Fill> </PolygonSymbolizer> - <TextSymbolizer> + <!--TextSymbolizer> <Label> <ogc:PropertyName>label</ogc:PropertyName> </Label> @@ -57,7 +57,7 @@ <Fill> <CssParameter name="fill">#000000</CssParameter> </Fill> - </TextSymbolizer> + </TextSymbolizer--> </Rule> </FeatureTypeStyle> </UserStyle> @@ -76,7 +76,7 @@ <CssParameter name="fill-opacity">0.5</CssParameter> </Fill> </PolygonSymbolizer> - <TextSymbolizer> + <!--TextSymbolizer> <Label> <ogc:PropertyName>label</ogc:PropertyName> </Label> @@ -96,7 +96,7 @@ <Fill> <CssParameter name="fill">#220000</CssParameter> </Fill> - </TextSymbolizer> + </TextSymbolizer--> </Rule> </FeatureTypeStyle> </UserStyle> @@ -250,6 +250,27 @@ <Size>8</Size> </Graphic> </PointSymbolizer> + <TextSymbolizer> + <Label> + <ogc:PropertyName>label</ogc:PropertyName> + </Label> + <Font> + <CssParameter name="font-size">14</CssParameter> + <CssParameter name="font-style">normal</CssParameter> + <CssParameter name="font-weight">bold</CssParameter> + </Font> + <LabelPlacement> + <PointPlacement> + <Displacement> + <DisplacementX>5</DisplacementX> + <DisplacementY>5</DisplacementY> + </Displacement> + </PointPlacement> + </LabelPlacement> + <Fill> + <CssParameter name="fill">#000000</CssParameter> + </Fill> + </TextSymbolizer> </Rule> </FeatureTypeStyle> @@ -267,7 +288,7 @@ <Mark> <WellKnownName>Triangle</WellKnownName> <Fill> - <CssParameter name="fill">${mapLlStyleObservationsPointColor}</CssParameter> + <CssParameter name="fill">${mapLlStyleObservationsLineSettingColor}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -277,6 +298,27 @@ <Size>16</Size> </Graphic> </PointSymbolizer> + <TextSymbolizer> + <Label> + <ogc:PropertyName>label</ogc:PropertyName> + </Label> + <Font> + <CssParameter name="font-size">14</CssParameter> + <CssParameter name="font-style">normal</CssParameter> + <CssParameter name="font-weight">bold</CssParameter> + </Font> + <LabelPlacement> + <PointPlacement> + <Displacement> + <DisplacementX>5</DisplacementX> + <DisplacementY>5</DisplacementY> + </Displacement> + </PointPlacement> + </LabelPlacement> + <Fill> + <CssParameter name="fill">#000000</CssParameter> + </Fill> + </TextSymbolizer> </Rule> </FeatureTypeStyle> <FeatureTypeStyle> @@ -293,7 +335,7 @@ <Mark> <WellKnownName>Square</WellKnownName> <Fill> - <CssParameter name="fill">${mapLlStyleObservationsPointColor}</CssParameter> + <CssParameter name="fill">${mapLlStyleObservationsLineSettingColor}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -319,7 +361,7 @@ <Mark> <WellKnownName>Circle</WellKnownName> <Fill> - <CssParameter name="fill">${mapLlStyleObservationsPointColor}</CssParameter> + <CssParameter name="fill">${mapLlStyleObservationsLineHaulingColor}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -345,7 +387,7 @@ <Mark> <WellKnownName>X</WellKnownName> <Fill> - <CssParameter name="fill">${mapLlStyleObservationsPointColor}</CssParameter> + <CssParameter name="fill">${mapLlStyleObservationsLineHaulingColor}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -464,6 +506,27 @@ <Size>8</Size> </Graphic> </PointSymbolizer> + <TextSymbolizer> + <Label> + <ogc:PropertyName>label</ogc:PropertyName> + </Label> + <Font> + <CssParameter name="font-size">16</CssParameter> + <CssParameter name="font-style">normal</CssParameter> + <CssParameter name="font-weight">bold</CssParameter> + </Font> + <LabelPlacement> + <PointPlacement> + <Displacement> + <DisplacementX>5</DisplacementX> + <DisplacementY>5</DisplacementY> + </Displacement> + </PointPlacement> + </LabelPlacement> + <Fill> + <CssParameter name="fill">#000000</CssParameter> + </Fill> + </TextSymbolizer> </Rule> </FeatureTypeStyle> @@ -481,7 +544,7 @@ <Mark> <WellKnownName>Triangle</WellKnownName> <Fill> - <CssParameter name="fill">${mapLlStyleLogbookPointColor}</CssParameter> + <CssParameter name="fill">${mapLlStyleLogbookLineSettingColor}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -491,6 +554,27 @@ <Size>16</Size> </Graphic> </PointSymbolizer> + <TextSymbolizer> + <Label> + <ogc:PropertyName>label</ogc:PropertyName> + </Label> + <Font> + <CssParameter name="font-size">14</CssParameter> + <CssParameter name="font-style">normal</CssParameter> + <CssParameter name="font-weight">bold</CssParameter> + </Font> + <LabelPlacement> + <PointPlacement> + <Displacement> + <DisplacementX>5</DisplacementX> + <DisplacementY>5</DisplacementY> + </Displacement> + </PointPlacement> + </LabelPlacement> + <Fill> + <CssParameter name="fill">#000000</CssParameter> + </Fill> + </TextSymbolizer> </Rule> </FeatureTypeStyle> @@ -508,7 +592,7 @@ <Mark> <WellKnownName>Square</WellKnownName> <Fill> - <CssParameter name="fill">${mapLlStyleLogbookPointColor}</CssParameter> + <CssParameter name="fill">${mapLlStyleLogbookLineSettingColor}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -535,7 +619,7 @@ <Mark> <WellKnownName>Circle</WellKnownName> <Fill> - <CssParameter name="fill">${mapLlStyleLogbookPointColor}</CssParameter> + <CssParameter name="fill">${mapLlStyleLogbookLineHaulingColor}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> @@ -562,7 +646,7 @@ <Mark> <WellKnownName>X</WellKnownName> <Fill> - <CssParameter name="fill">${mapLlStyleLogbookPointColor}</CssParameter> + <CssParameter name="fill">${mapLlStyleLogbookLineHaulingColor}</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#000000</CssParameter> ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/common/TripTopiaDao.java ===================================== @@ -71,9 +71,14 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { return; } + TripMapPoint activityPoint = Entities.addPointWithTimestamp(TripMapPointType.llActivityObs, resultSet, 0, points); + log.debug(String.format("[LL-Logbook] Added activity point: %s", activityPoint)); + TripMapPoint settingStart = Entities.addPointWithTimestamp(TripMapPointType.llActivityObsWithSettingStart, resultSet, 5, points); log.debug(String.format("[LL-Observation] Added set settingStart point: %s", settingStart)); - + if (settingStart.isValid()) { + points.remove(activityPoint); + } TripMapPoint settingEnd = Entities.addPointWithTimestamp(TripMapPointType.llActivityObsWithSettingEnd, resultSet, 8, points); log.debug(String.format("[LL-Observation] Added set settingEnd point: %s", settingEnd)); @@ -101,9 +106,14 @@ public class TripTopiaDao extends AbstractTripTopiaDao<Trip> { return; } + TripMapPoint activityPoint = Entities.addPointWithTimestamp(TripMapPointType.llActivityLogbook, resultSet, 0, points); + log.debug(String.format("[LL-Logbook] Added activity point: %s", activityPoint)); + TripMapPoint settingStart = Entities.addPointWithTimestamp(TripMapPointType.llActivityLogbookWithSettingStart, resultSet, 5, points); log.debug(String.format("[LL-Logbook] Added set settingStart point: %s", settingStart)); - + if (settingStart.isValid()) { + points.remove(activityPoint); + } TripMapPoint settingEnd = Entities.addPointWithTimestamp(TripMapPointType.llActivityLogbookWithSettingEnd, resultSet, 8, points); log.debug(String.format("[LL-Logbook] Added set settingEnd point: %s", settingEnd)); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/8200828c1ef6485ce3e6a5e82... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/8200828c1ef6485ce3e6a5e82... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT (@tchemit)