Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe

Commits:

8 changed files:

Changes:

  • client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/ObserveMapPaneLegendItem.java
    ... ... @@ -84,14 +84,14 @@ public class ObserveMapPaneLegendItem {
    84 84
             String label = this.label;
    
    85 85
             if (addPointCount && validCount > 0) {
    
    86 86
                 if (validCount == 1) {
    
    87
    -                label += " " + I18n.t("observe.ui.datasource.editor.content.map.legend.valid.count", validCount);
    
    87
    +                label += " " + I18n.t("observe.ui.datasource.editor.content.map.legend.valid.count");
    
    88 88
                 } else {
    
    89 89
                     label += " " + I18n.t("observe.ui.datasource.editor.content.map.legend.valid.counts", validCount);
    
    90 90
                 }
    
    91 91
             }
    
    92 92
             if (notValidCount > 0) {
    
    93 93
                 if (notValidCount == 1) {
    
    94
    -                label += " " + I18n.t("observe.ui.datasource.editor.content.map.legend.not.valid.count", notValidCount);
    
    94
    +                label += " " + I18n.t("observe.ui.datasource.editor.content.map.legend.not.valid.count");
    
    95 95
                 } else {
    
    96 96
                     label += " " + I18n.t("observe.ui.datasource.editor.content.map.legend.not.valid.counts", notValidCount);
    
    97 97
     
    

  • client/runner/src/main/i18n/translations/client-runner_en_GB.properties
    ... ... @@ -715,16 +715,16 @@ observe.ui.datasource.editor.content.map.legend.logbook.hauling=Logbook - Haulin
    715 715
     observe.ui.datasource.editor.content.map.legend.logbook.setting=Logbook - Setting
    
    716 716
     observe.ui.datasource.editor.content.map.legend.logbook.trip=Logbook - Route
    
    717 717
     observe.ui.datasource.editor.content.map.legend.logbook.tripSegment=Logbook - Segment
    
    718
    -observe.ui.datasource.editor.content.map.legend.not.valid.count=( %d point are not displayed )
    
    718
    +observe.ui.datasource.editor.content.map.legend.not.valid.count=( one point is not displayed )
    
    719 719
     observe.ui.datasource.editor.content.map.legend.not.valid.counts=( %d points are not displayed )
    
    720 720
     observe.ui.datasource.editor.content.map.legend.obs.hauling=Observation - Hauling
    
    721 721
     observe.ui.datasource.editor.content.map.legend.obs.setting=Observation - Setting
    
    722 722
     observe.ui.datasource.editor.content.map.legend.obs.trip=Observation - Route
    
    723
    -observe.ui.datasource.editor.content.map.legend.obs.tripBetweenTwoDays=Night trip
    
    723
    +observe.ui.datasource.editor.content.map.legend.obs.tripBetweenTwoDays=Observation - Night trip
    
    724 724
     observe.ui.datasource.editor.content.map.legend.obs.tripDay=Observation - Day trip
    
    725 725
     observe.ui.datasource.editor.content.map.legend.tip=To display or hide legend
    
    726
    -observe.ui.datasource.editor.content.map.legend.valid.count=- %d point is displayed
    
    727
    -observe.ui.datasource.editor.content.map.legend.valid.counts=- %d point(s) are displayed
    
    726
    +observe.ui.datasource.editor.content.map.legend.valid.count=- one point is displayed
    
    727
    +observe.ui.datasource.editor.content.map.legend.valid.counts=- %d points are displayed
    
    728 728
     observe.ui.datasource.editor.content.map.legendBottom=Display legend at bottom
    
    729 729
     observe.ui.datasource.editor.content.map.legendBottom.tip=Display legend at bottom
    
    730 730
     observe.ui.datasource.editor.content.map.legendTop=Display legend at top
    

  • client/runner/src/main/i18n/translations/client-runner_es_ES.properties
    ... ... @@ -715,7 +715,7 @@ observe.ui.datasource.editor.content.map.legend.logbook.hauling=Logbook - Arrast
    715 715
     observe.ui.datasource.editor.content.map.legend.logbook.setting=Logbook - Calada
    
    716 716
     observe.ui.datasource.editor.content.map.legend.logbook.trip=Logbook - Trayecto
    
    717 717
     observe.ui.datasource.editor.content.map.legend.logbook.tripSegment=Logbook - Trayecto
    
    718
    -observe.ui.datasource.editor.content.map.legend.not.valid.count=( %d point is not displayed )
    
    718
    +observe.ui.datasource.editor.content.map.legend.not.valid.count=( one point is not displayed )
    
    719 719
     observe.ui.datasource.editor.content.map.legend.not.valid.counts=( %d points are not displayed )
    
    720 720
     observe.ui.datasource.editor.content.map.legend.obs.hauling=Observation - Arrastre
    
    721 721
     observe.ui.datasource.editor.content.map.legend.obs.setting=Observation - Calada
    
    ... ... @@ -723,7 +723,7 @@ observe.ui.datasource.editor.content.map.legend.obs.trip=Observation - Route
    723 723
     observe.ui.datasource.editor.content.map.legend.obs.tripBetweenTwoDays=Observation - Trayecto del noche
    
    724 724
     observe.ui.datasource.editor.content.map.legend.obs.tripDay=Observation - Trayecto
    
    725 725
     observe.ui.datasource.editor.content.map.legend.tip=To display or hide legend \#TODO
    
    726
    -observe.ui.datasource.editor.content.map.legend.valid.count=- %d point is displayed \#TODO
    
    726
    +observe.ui.datasource.editor.content.map.legend.valid.count=- one point is displayed \#TODO
    
    727 727
     observe.ui.datasource.editor.content.map.legend.valid.counts=- %d points are displayed \#TODO
    
    728 728
     observe.ui.datasource.editor.content.map.legendBottom=Display legend at bottom
    
    729 729
     observe.ui.datasource.editor.content.map.legendBottom.tip=Display legend at bottom
    

  • core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/logbook/ActivityReader.java
    ... ... @@ -352,12 +352,13 @@ public class ActivityReader extends DataReader<Activity> {
    352 352
             activityObservedSystemTableReader.setPrimaryKey(activityPrimaryKey);
    
    353 353
             while (activityObservedSystemTableReader.hasNext()) {
    
    354 354
                 ResultSet activityObservedSystemRow = activityObservedSystemTableReader.next();
    
    355
    -            String observedSystemCode = activityObservedSystemRow.getString(6);
    
    356
    -            observedSystemCodes.add(observedSystemCode);
    
    357
    -            if (!ObservedSystemInterceptor.CODE_MAPPING.containsKey(observedSystemCode)) {
    
    358
    -                throw new IllegalStateException(String.format("Can't find observedSystem with code: %s from ad-hoc AVDTH to ObServe mapping", observedSystemCode));
    
    355
    +            String avdthSystemCode = activityObservedSystemRow.getString(6);
    
    356
    +            observedSystemCodes.add(avdthSystemCode);
    
    357
    +            if (!ObservedSystemInterceptor.CODE_MAPPING.containsKey(avdthSystemCode)) {
    
    358
    +                throw new IllegalStateException(String.format("Can't find observedSystem with code: %s from ad-hoc AVDTH to ObServe mapping", avdthSystemCode));
    
    359 359
                 }
    
    360
    -            ObservedSystem observedSystem = dataContext.getObservedSystem(observedSystemCode);
    
    360
    +            String observeSystemCode = ObservedSystemInterceptor.CODE_MAPPING.get(avdthSystemCode);
    
    361
    +            ObservedSystem observedSystem = dataContext.getObservedSystem(observeSystemCode);
    
    361 362
                 observedSystems.add(observedSystem);
    
    362 363
             }
    
    363 364
             return observedSystemCodes;
    

  • core/persistence/avdth/src/main/java/fr/ird/observe/persistence/avdth/data/logbook/FloatingObjectReader.java
    ... ... @@ -383,30 +383,36 @@ public class FloatingObjectReader extends DataReader<FloatingObject> {
    383 383
                 // add ObjectMaterial FOB
    
    384 384
                 addObjectMaterial(vesselActivityCode, objectMaterialUsed, dataContext.getObjectMaterialFOB(), whenArriving, whenLeaving, entity);
    
    385 385
                 addDefaultObjectMaterialOnUnknownObjectType = false;
    
    386
    -        } else if (observedSystemCodes.contains("21")) {
    
    386
    +        }
    
    387
    +        if (observedSystemCodes.contains("21")) {
    
    387 388
                 // add ObjectMaterial 2-1-1 VNLOG
    
    388 389
                 addObjectMaterial(vesselActivityCode, objectMaterialUsed, dataContext.getObjectMaterialVNLOG(), whenArriving, whenLeaving, entity);
    
    389 390
                 addDefaultObjectMaterialOnUnknownObjectType = false;
    
    390
    -        } else if (observedSystemCodes.contains("22")) {
    
    391
    +        }
    
    392
    +        if (observedSystemCodes.contains("22")) {
    
    391 393
                 // add ObjectMaterial 2-1-1 VNLOG + 1-1 DFAD
    
    392 394
                 addObjectMaterial(vesselActivityCode, objectMaterialUsed, dataContext.getObjectMaterialVNLOG(), whenArriving, whenLeaving, entity);
    
    393 395
                 addObjectMaterial(vesselActivityCode, objectMaterialUsed, dataContext.getObjectMaterialDFAD(), whenArriving, whenLeaving, entity);
    
    394 396
                 addDefaultObjectMaterialOnUnknownObjectType = false;
    
    395 397
                 addBuoyFromObservedSystem = true;
    
    396
    -        } else if (observedSystemCodes.contains("23")) {
    
    398
    +        }
    
    399
    +        if (observedSystemCodes.contains("23")) {
    
    397 400
                 // add ObjectMaterial 2-2 ALOG
    
    398 401
                 addObjectMaterial(vesselActivityCode, objectMaterialUsed, dataContext.getObjectMaterialALOG(), whenArriving, whenLeaving, entity);
    
    399 402
                 addDefaultObjectMaterialOnUnknownObjectType = false;
    
    400
    -        } else if (observedSystemCodes.contains("24")) {
    
    403
    +        }
    
    404
    +        if (observedSystemCodes.contains("24")) {
    
    401 405
                 // add ObjectMaterial 1-1 DFAD
    
    402 406
                 addObjectMaterial(vesselActivityCode, objectMaterialUsed, dataContext.getObjectMaterialDFAD(), whenArriving, whenLeaving, entity);
    
    403 407
                 addDefaultObjectMaterialOnUnknownObjectType = false;
    
    404 408
                 addBuoyFromObservedSystem = true;
    
    405
    -        } else if (observedSystemCodes.contains("25")) {
    
    409
    +        }
    
    410
    +        if (observedSystemCodes.contains("25")) {
    
    406 411
                 // add ObjectMaterial 1-2 AFAD
    
    407 412
                 addObjectMaterial(vesselActivityCode, objectMaterialUsed, dataContext.getObjectMaterialAFAD(), whenArriving, whenLeaving, entity);
    
    408 413
                 addDefaultObjectMaterialOnUnknownObjectType = false;
    
    409
    -        } else if (observedSystemCodes.contains("81")) {
    
    414
    +        }
    
    415
    +        if (observedSystemCodes.contains("81")) {
    
    410 416
                 // add ObjectMaterial 2-1-2-1 Carrion
    
    411 417
                 addObjectMaterial(vesselActivityCode, objectMaterialUsed, dataContext.getObjectMaterialCarrion(), whenArriving, whenLeaving, entity);
    
    412 418
                 addDefaultObjectMaterialOnUnknownObjectType = false;
    

  • doc/specs/ird-2024/observe-ird-2024.md
    1
    +---
    
    2
    +title:  Chiffrage IRD-2024 (v9.4)
    
    3
    +author: Tony Chemit, société Ultreia.io
    
    4
    +geometry: margin=1.2cm
    
    5
    +---
    
    6
    +
    
    7
    +# Introduction
    
    8
    +
    
    9
    +* Ce document décrit un chiffrage suite à la demande de développements complémentaires et de documentation sur le logiciel *ObServe* (v9.4) par l'IRD.
    
    10
    +* Rédigé le 22/05/2024 à Saint Cybardeaux (16170)
    
    11
    +
    
    12
    +\newpage
    
    13
    +
    
    14
    +# Détail des développements demandés
    
    15
    +
    
    16
    +## [#2826](https://gitlab.com/ultreiaio/ird-observe/-/issues/2826) Permettre de renommer et de supprimer une présélection FOB
    
    17
    +
    
    18
    +Nous proposons de pouvoir renommer, supprimer et réordonner, mais pas d'éditer le contenu (car cela requière trop de développement pour la partie matériaux et bouées et des formulaires existent déjà pour cela).
    
    19
    +
    
    20
    +Cette fonctionnalité sera disponible depuis le menu Configuration > Gérer les présélections FOB.
    
    21
    +
    
    22
    +Les présélections peuvent se retrouver à trois niveaux (commun, observation ou logbook), voir si il est pertinent de ré-impacter cela dans la nouvelle interface graphique.
    
    23
    +
    
    24
    +**2J**
    
    25
    +
    
    26
    +On peut ajouter une option de développement pour afficher le détail de chaque présélection (uniquement si une base est connectée car on doit aller chercher en base les label des différents référentiels utilisés).
    
    27
    +
    
    28
    +**1J**
    
    29
    +
    
    30
    +## [#2834](https://gitlab.com/ultreiaio/ird-observe/-/issues/2834) Permettre à l’utilisateur de sauvegarder ses choix quant au mode de classement des listes déroulantes
    
    31
    +
    
    32
    +### Rappel
    
    33
    +
    
    34
    +En préambule, rappelons qu'il existe déjà un mécanisme qui permet de modifier la configuration des listes déroulantes des formulaires dans l'application.
    
    35
    +
    
    36
    +Il s'agit d'un fichier de propriétés nommé **observe-swing-preferences.properties** embarqué dans l'application, qui est recopié dans le répertoire des ressources de l'utilisateur.
    
    37
    +
    
    38
    +Seul un utilisateur expert peut actuellement le modifier (connaissance requise du code des interfaces graphiques JAXX/Java).
    
    39
    +
    
    40
    +### Amélioration du fichier de configuration
    
    41
    +
    
    42
    +Nous proposons dans un premier temps de consolider ce fichier pour que toutes les valeurs possibles y soient (comme 
    
    43
    +nous l'avons déjà fait pour les fichiers de configuration) et d'effectuer une sauvegarde qui conserve les valeurs non modifiées.
    
    44
    +
    
    45
    +Le format du fichier va peut-être évoluer pour répondre à d'autres besoins préssentis sur les configurations de ces listes déroulantes.  
    
    46
    +
    
    47
    +**2J**
    
    48
    +
    
    49
    +### Adaptation de l'interface graphique
    
    50
    +
    
    51
    +Dans un formulaire pour une liste déroulante dont la configuration est modifiée par l'utilisateur, il faudra lui indiquer 
    
    52
    +
    
    53
    + - avec un nouvel icône (à droite de celui de modification de la configuration) 
    
    54
    + - ou bien en changeant la couleur du contour de l'icône de modification de configuration (peut-être plus léger)
    
    55
    +
    
    56
    +La popup de configuration d'une liste déroulante ainsi que son menu d'accès seront revus pour pouvoir prendre en compte les nouvelles actions :
    
    57
    +
    
    58
    + - **Mettre en préférence**
    
    59
    + - **Retirer des préférences**
    
    60
    +
    
    61
    +**3J**
    
    62
    +
    
    63
    +## [#2347](https://gitlab.com/ultreiaio/ird-observe/-/issues/2347) Permettre à l’utilisateur de pré régler ses propres valeurs par défaut de listes déroulantes
    
    64
    +
    
    65
    +### Enrichissement du fichier de configuration
    
    66
    +
    
    67
    +En reprenant le principe de la fonctionnalité précédente, on peut enrichir le fichier de configuration des listes déroulantes et associer un identifiant technique (*topiaId*) à chaque liste possible.
    
    68
    +
    
    69
    +**1J**
    
    70
    +
    
    71
    +### Adaptation de l'interface graphique
    
    72
    +
    
    73
    +Les actions suivantes seront rajoutées au menu de configuration:
    
    74
    +
    
    75
    + - **Appliquer cette valeur par défaut**
    
    76
    + - **Supprimer la valeur par défaut**
    
    77
    +
    
    78
    +À noter que ce nouveau mécanisme ne sera utilisable que pour des données en mode création. 
    
    79
    +
    
    80
    +**2J**
    
    81
    +
    
    82
    +### Utilisation de ces valeurs par défaut
    
    83
    +
    
    84
    +Se pose la question de l'utilisation de ces valeurs par défaut. Il peut sembler pertinent d'envoyer ces valeurs par 
    
    85
    +défaut au service pour que celui-ci nous retourne l'objet bien initialisé, plutôt que de le récupéré «vide» et que le formulaire remplisse ensuite les valeurs par défaut.
    
    86
    +
    
    87
    +Il faudra aussi se poser la question de déporter toutes les valeurs par défaut qui sont fournis (en dure dans le code) par les services, elles pourrait ainsi devenir des valeurs par défaut.
    
    88
    +
    
    89
    +Afin de palier au fait que certains référentiels utilisés dans cette nouvelle configuration puissent ne pas exister 
    
    90
    +dans une base, à chaque ouverture d'une source de données, on reprendra la configuration pour en supprimer les valeurs
    
    91
    +manquantes, sans pour autant modifier la configuration.
    
    92
    +
    
    93
    +**3J**
    
    94
    +
    
    95
    +## [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) Sur tous les widgets position, présélectionner le quadrant de la saisie précédente
    
    96
    +
    
    97
    +### Mise en place de la nouvelle donnée à récupérer 
    
    98
    +Deux choix techniques sont possibles :
    
    99
    +
    
    100
    + - Cette règle de gestion devrait-elle être réalisée au niveau service car faire cela au niveau de l'application cela ne semble pas pertinent (quid de l'API publique), sauf qu'à ce niveau là nous ne possédons par l'information quadrant (il est calculé depuis les coordonnées).
    
    101
    + - Faire cela au niveau de l'application, mais cela sous-entend aussi d'avoir cette information depuis la couche service...
    
    102
    +
    
    103
    +Il semble alors indispensable de calculer cette information et de la rajouter dans les DTO du service (champ **defaultQuadrant** ou **xxxDefaultQuadrant**) qui ne sera utilisé dans le formulaire que si la coordonnée associée n'est pas renseignée.
    
    104
    +
    
    105
    +**3J**
    
    106
    +
    
    107
    +### Utilisation de cette nouvelle donnée dans le formulaire
    
    108
    +
    
    109
    +À noter que ce nouveau mécanisme ne sera utilisable que pour des données en mode création.
    
    110
    +
    
    111
    +**2J**
    
    112
    +
    
    113
    +## [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) LL observations/logbook : mise à jour auto de la date de fin de marée en fonction des dates activités (comme en PS)
    
    114
    +
    
    115
    +Le mécanisme proposé se fera sur toutes les dates possibles lorsqu'elles existent (activité et calée).
    
    116
    +
    
    117
    +On renforcera donc aussi pour le module Seine.
    
    118
    +
    
    119
    +Cela doit être réalisé au niveau service.
    
    120
    +
    
    121
    +**1J**
    
    122
    +
    
    123
    +On propose aussi en option d'en faire règle de consolidation.
    
    124
    +
    
    125
    +**2J**
    
    126
    +
    
    127
    +## [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) LL observations/logbook : filage: mettre par défaut date de dernière activité (ou dernier virage ?) + 1
    
    128
    +
    
    129
    +Uniquement en mode création et remplit depuis le service.
    
    130
    +
    
    131
    +**0.5J**
    
    132
    +
    
    133
    +## [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) LL observations/logbook : virage : mettre date de virage à J+1 par rapport à celle du filage
    
    134
    +
    
    135
    +Uniquement en mode création et remplit depuis le service.
    
    136
    +
    
    137
    +**0.5J**
    
    138
    +
    
    139
    +## [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) LL observations/composition détaillée : on nous signale une forte latence dans la V9 lors de la sélection de sections/paniers, inexistante en V7 (sûrement due à la normalisation du modèle). Possibilité de retrouver une meilleure réactivité ? (si techniquement possible)
    
    140
    +
    
    141
    +Il est vrai que la validation à ce niveau n'est pas très performante... Elle valide tous les objects alors que l'on ne devrait valider que ceux affichés dans les tableaux...
    
    142
    +
    
    143
    +Nous proposons dans ce cadre de rajouter le ticket suivant qui remplace la validation utilisant la technologie **XWorks** qui est la source de ces lenteurs.
    
    144
    +
    
    145
    +**2J**
    
    146
    +
    
    147
    +## [#2594](https://gitlab.com/ultreiaio/ird-observe/-/issues/2594) Suppression de la technologie XWorks (utilisé pour la validation)
    
    148
    +
    
    149
    +La technologie de remplacement est déjà disponible et la migration est effective. 
    
    150
    +
    
    151
    +La solution de remplaçement a été développée par nos soins et répond parfaitement à nos besoin et est performante.
    
    152
    +
    
    153
    +**3J**
    
    154
    +
    
    155
    +## [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) LL observations : amélioration du focus sur form captures (à voir plus précisément ensemble), et ajout de champs (actuellement existants mais masqués) dans le tableau récapitulatif
    
    156
    +
    
    157
    +**1J**
    
    158
    +
    
    159
    +## [#2669](https://gitlab.com/ultreiaio/ird-observe/-/issues/2669) PS logbook : Automatiser la calcul des sample.minus10Weight et sample.plus10Weight par sommation des lots du plan de cuves
    
    160
    +
    
    161
    +Il faut ici reprendre le principe déjà en place pour les données calculées, à savoir :
    
    162
    +
    
    163
    + - ajouter un champs booléan **minus10WeightComputed** et **plus10WeightComputed** pour consigner le fait que la données a été observée ou calculée
    
    164
    + - utiliser le widget (icône œil ou roue) pour pouvoir supprimer le drapeau **computed** dans le formulaire
    
    165
    +
    
    166
    +On propose aussi de rajouter une règle de validation pour n'autoriser au niveau des échantillons que les identifiants de cuves disponibles sur le plan de cuve (et ceci uniquement si le plan de cuve est saisi).
    
    167
    +
    
    168
    +**3J**
    
    169
    +
    
    170
    +## [#2799](https://gitlab.com/ultreiaio/ird-observe/-/issues/2799) PS logbook : Automatiser les associations Échantillon  Activités 
    
    171
    +
    
    172
    +Cette évolution est incluse dans une autre que nous vous proposons de réaliser à la place, à savoir [#2734](https://gitlab.com/ultreiaio/ird-observe/-/issues/2734) La liste des activités associées à un échantillon pourrait être déduite du plan de cuves, et inversément.
    
    173
    +
    
    174
    + - Ajout du bouton sur le formulaire échantillons et récupération des activités depuis le plan de cuve (l'action ne sera accessible que si le plan de cuve existe et que la cuve décrite dans l'échantillonnage est bien présente) 1J 
    
    175
    + - Ajout du bouton sur le formulaire plan de cuve et récupération des activités depuis l'échantillonnage correspondant (l'action ne sera accessible que si un échantillonnage existe sur la cuve en question) 1J 
    
    176
    + - Mise en place via la consolidation 2J
    
    177
    +
    
    178
    +Il faudra bien veiller à ne rien modifier si le plan de cuve n'existe pas ou bien que les échantillons n'existent pas afin de ne pas altérer les données existantes.
    
    179
    +
    
    180
    +On devra aussi en cascade calculer au niveau des échantillons les pondérations des cuves-calées (**1J**).
    
    181
    +
    
    182
    +## [#2726](https://gitlab.com/ultreiaio/ird-observe/-/issues/2726) Amélioration de la gestion des types date
    
    183
    +
    
    184
    +Actuellement tous les types de dates dans le code *Java* utilise un simple **java.util.Date**, ce qui ne permet pas de connaître sa granularité temporelle (date, heure ou horodatage).
    
    185
    +
    
    186
    +On se propose alors de les remplacer par des types java plus précis et qui ont été introduits en *Java 8* (sans time zone).
    
    187
    +
    
    188
    +Pour ce qui est des horodatages techniques (topiaCreateDate et lastUpdateDate), on passera sur un type horodatage avec tome zone.
    
    189
    +
    
    190
    +**5J**
    
    191
    +
    
    192
    +## [#2875](https://gitlab.com/ultreiaio/ird-observe/-/issues/2875) Dates activités toujours affichées sur carte LL 
    
    193
    +
    
    194
    +Ajout des dates sur toutes les activités, ajout de nouvelles options de configuration (mapLlStyleLogbookTextColor et mapLlStyleLogbookTextSize) comme fait pour le module Ps.
    
    195
    +
    
    196
    +Ici on ne travaille que sur la partie Logbook.
    
    197
    +
    
    198
    +**2J**
    
    199
    +
    
    200
    +## [#2603](https://gitlab.com/ultreiaio/ird-observe/-/issues/2603) Améliorer la reconnexion à un serveur distant utilisé comme connexion d’un assistant 
    
    201
    +
    
    202
    +Actuellement, seule la source de données principale propose une reconnexion, il faut étendre cela à toutes les sources de données ouvertes via les assistants.
    
    203
    +
    
    204
    +**3J**
    
    205
    +
    
    206
    +## [#2818](https://gitlab.com/ultreiaio/ird-observe/-/issues/2818) Ajouter quelques champs de référence dans common.Vessel
    
    207
    +
    
    208
    + - Ajout du référentiel EngineMake **0.5J**
    
    209
    + - Ajout du référentiel HullMaterial **0.5J**
    
    210
    + - Ajout des deux champs engineMake et hullMaterial dans le référentiel Vessel **0.5J**
    
    211
    + - Import via la migration des deux nouveaux référentiels (via le fichier Turbobat) **1J**
    
    212
    + - Ajout d'un champs **GT** dans le référentiel Vessel **0.5J**
    
    213
    + - 
    
    214
    +## [#2816](https://gitlab.com/ultreiaio/ird-observe/-/issues/2816) Fonction de changement de programme en masse
    
    215
    +
    
    216
    +Cela est tout à fait réalisable; Nous vous proposons de procéder de la sorte :
    
    217
    +
    
    218
    + - l'utilisateur sélectionne la liste de ces marées via le formulaire de liste de marées
    
    219
    + - une nouvelle action **Modification en masse** devient accessible, elle ouvre une une boite de dialogue composée de deux composants :
    
    220
    +   - le premier pour choisir quelle propriété modifier via une liste déroulante (par défaut elle prendre la modalité sélectionnée dans la configuration de l'arbre de navigation)
    
    221
    +   - le second pour éditer la valeur à utiliser, selon le type de la modalité sélectionnée (on reprend ici le principe utilisé dans l'écran de recherche de marées)
    
    222
    +
    
    223
    + **Note :** Il faudra penser à rester cohérent avec les status de collecte, par exemple il ne sera pas possible de modifier le capitaine si au moins une marée n'a pas de collecte des observations.
    
    224
    +
    
    225
    + - réalisation de la boite de dialogue **2J**
    
    226
    + - enregistrement via un nouveau service dédié **1J**
    
    227
    + - mise à jour de l'arbre de navigation **2J**
    
    228
    +
    
    229
    +Dans cette première version, on se limitera aux modalités qualitatives.
    
    230
    +
    
    231
    +## [#2846](https://gitlab.com/ultreiaio/ird-observe/-/issues/2846) Corriger un effet de bord indésirable lors de la désactivation ou la suppression d’une référence et la réattribution de ses données liées à une autre référence 
    
    232
    +
    
    233
    +### Rappel des trois actions possibles
    
    234
    +Pour rappel, le comportement d'une suppression est le suivant :
    
    235
    +
    
    236
    +1. on calcule les utilisations du référentiel
    
    237
    +2. si pas de résultat, on peut supprimer directement
    
    238
    +3. sinon on affiche les utilisations et on demande un remplacement
    
    239
    +4. si l'utilisateur renseigne le remplaçant et valide on procède 
    
    240
    +   1. remplacement du référentiel partout
    
    241
    +   2. suppression du référentiel
    
    242
    +
    
    243
    +Le comportement d'une désactivation au moment de la sauvegarde :
    
    244
    +
    
    245
    +1. on calcule les utilisations du référentiel
    
    246
    +2. si pas de résultat, on peut désactiver directement
    
    247
    +3. sinon on affiche les utilisations et on demande un remplacement
    
    248
    +4. si l'utilisateur renseigne le remplaçant et valide on procède
    
    249
    +   1. remplacement du référentiel partout
    
    250
    +   2. désactivation du référentiel
    
    251
    +
    
    252
    +Enfin le comportement d'un remplacement :
    
    253
    +
    
    254
    +1. on calcule les utilisations du référentiel
    
    255
    +2. si pas de résultat, il n'y a rien à faire
    
    256
    +3. sinon on affiche les utilisations et on demande un remplacement
    
    257
    +4. si l'utilisateur renseigne le remplaçant et valide on procède au remplacement du référentiel partout
    
    258
    +
    
    259
    +### Nouveau besoin
    
    260
    +
    
    261
    +Dans certains cas, on voit bien que le remplacement n'est pas pertinent et qu'il faudrait en fait effectuer 
    
    262
    +les remplacements des référentiels impactés.
    
    263
    +
    
    264
    +Ce besoin est induit par la logique métier et non par la structuration des données; il nous faut donc trouver un moyen 
    
    265
    +élégant de le décrire.
    
    266
    +
    
    267
    +Nous vous proposons de le décrire via une nouvelle tag-value sur les classes du modèle de type booléen :
    
    268
    +
    
    269
    + - la valeur **false** (celle par défaut) conservera le comportement actuel de remplacement
    
    270
    + - la valeur **true** permettra de mettre en place un remplacement en profondeur, i.e de demander le remplacement des 
    
    271
    +   référentiels visés dans les autres données du modèle
    
    272
    +
    
    273
    +Dans l'exemple des espèces, on cherchera alors les occurrences des RTP et RTT (il n'y en a aucune puisque ces données 
    
    274
    +ne sont pas utilisées dans aucune autre donnée); pour les catégories de poids, on proposera alors un remplacement par 
    
    275
    +une autre catégorie de poids dans le sous-ensemble de celles utilisant la nouvelle espèce de remplacement. 
    
    276
    +   
    
    277
    +**0.5J**
    
    278
    +
    
    279
    +Il faudra bien distinguer une désactivation, d'un remplacement et d'une suppression :
    
    280
    +
    
    281
    + * dans le cas d'une désactivation, on devra alors désactiver les référentiels ciblés
    
    282
    + * dans le cas d'une suppression, les supprimer
    
    283
    + * dans le cas d'une remplacement, probablement ne rien faire
    
    284
    +
    
    285
    +### Réorganisation de l'interface graphique
    
    286
    +
    
    287
    +Pour que cela soit compréhensible pour l'utilisateur, il faut que nous distinguons plusieurs zones selon ce qu'il y a a faire :
    
    288
    +
    
    289
    +1. celle déjà existant ou un remplacement  est possible
    
    290
    +2. une nouvelle zone qui indique les objets qui ne doivent pas être remplacés et qui seront supprimés
    
    291
    +3. une troisième zone qui liste les utilisations qui doivent être elles-même remplacées
    
    292
    +
    
    293
    +Une organisation en onglet est peut-être envisageable ?
    
    294
    +
    
    295
    +**4.5J**
    
    296
    +
    
    297
    +### Adaptation du code de réalisation des actions
    
    298
    +
    
    299
    +On doit alors effectuer toutes les suppressions et remplacements de second niveau, puis ensuite le code actuel peut-être appliqué tel quel.
    
    300
    +
    
    301
    +**1J**
    
    302
    +
    
    303
    +### Cas des doublons lors de remplacement sur une liste d'association
    
    304
    +
    
    305
    +Effectivement comme décrit dans le ticket, on pourrait avoir des erreurs lors de l'exécution de l'action puisque les 
    
    306
    +couples sont des clefs primaires.
    
    307
    +
    
    308
    +Pour y remédier, nous pouvons améliorer le code sql généré dans ce but pour tenir compte de ce cas.
    
    309
    +
    
    310
    +**0.5J**
    
    311
    +
    
    312
    +## [#1203](https://gitlab.com/ultreiaio/ird-observe/-/issues/1203) Tableaux de saisie (captures, échantillons, équipements...) - Classement en cliquant sur les en-têtes de colonnes
    
    313
    +
    
    314
    +On rajoute de plus une colonne **index** au début pour bien voir l'ordre.
    
    315
    +
    
    316
    +Lors de l'ajout ou suppression, il faudra maintenir cohérent cet ordre induit.
    
    317
    +
    
    318
    +Se pose la question des actions de changement de position ?
    
    319
    +
    
    320
    +Avant d'enregistrer, on réordonnera la liste via cet index.
    
    321
    +
    
    322
    +**3J**
    
    323
    +
    
    324
    +# Détail de la documentation demandée
    
    325
    +
    
    326
    +
    
    327
    +## [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) Écriture de tutoriels pratiques
    
    328
    +
    
    329
    +Avant de pouvoir proposer des tutoriels de modification du projet, il faut en écrire quelques uns pour avoir une bonne compréhension de l'architecture de celui-ci :
    
    330
    +
    
    331
    + - un tutoriel pour mettre en place l'environnement de développement
    
    332
    + - un tutoriel pour expliquer l'organisation du projet et de ses modules Maven
    
    333
    + - un tutoriel pour expliquer le modèle et tous ce que l'on peut faire dessus (description détaillée de chaque tag-value)
    
    334
    + - un tutoriel pour expliquer comment fonctionne les migrations
    
    335
    + - un tutoriel pour expliquer comment fonctionne les décorations
    
    336
    + - un tutoriel pour expliquer comment fonctionne la validation
    
    337
    + - un tutoriel pour expliquer comment fonctionne les services
    
    338
    + - un tutoriel pour expliquer comment fonctionne l'API publique
    
    339
    + - un tutoriel pour expliquer comment fonctionne le serveur
    
    340
    + - un tutoriel pour expliquer comment fonctionne les rapports
    
    341
    + - un tutoriel pour expliquer comment fonctionne l'application lourde
    
    342
    + - un tutoriel pour expliquer comment fonctionne les interfaces graphiques
    
    343
    + - un tutoriel pour expliquer comment fonctionne l'éditeur de source de données
    
    344
    + - un tutoriel pour expliquer comment fonctionne les actions longues
    
    345
    +
    
    346
    +Une fois cela réalisé, on pourra penser à écrire des tutoriels de modification du projet.
    
    347
    +
    
    348
    +Nous vous proposons de travailler **5J** sur le sujet pour commencer ce travail.
    
    349
    +
    
    350
    +## [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) Mise à jour de la documentation des librairies
    
    351
    +
    
    352
    +Dans un premier temps, il nous faut lister toutes les technologies utilisées dans le projet et que nous supportons, à savoir :
    
    353
    +
    
    354
    +  - java4all.java-util
    
    355
    +  - java4all.java-lang
    
    356
    +  - java4all.java-bean
    
    357
    +  - java4all.jaxx
    
    358
    +  - java4all.eugene
    
    359
    +  - java4all.http
    
    360
    +  - java4all.validation
    
    361
    +
    
    362
    +Un certain nombres d'entre-elles ont directement été intégrée dans le projet (dans le module **toolkit**) car elles 
    
    363
    +n'étaient plus maintenues, à savoir 
    
    364
    +  - topia (gestion de la persistence)
    
    365
    +  - webMotion (serveur web)
    
    366
    +
    
    367
    +Nous vous proposons de travailler **5J** sur le sujet pour commencer ce travail.
    
    368
    +
    
    369
    +## [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) Ajout d'une documentation dans la base de données
    
    370
    +
    
    371
    +Pour réaliser cela nous allons utiliser une nouvelle tag-value sur le modèle de persistence, on pourra la renseigner à 
    
    372
    +différents niveaux :
    
    373
    +
    
    374
    + - sur un schéma
    
    375
    + - sur une table
    
    376
    + - sur la colonne d'une table
    
    377
    +
    
    378
    +Lors de la génération d'une nouvelle base ou d'une migration, cette documentation sera insérée dans la base juste après la création de la base.
    
    379
    +
    
    380
    +Cela s'applique sur les bases H2 et Postgres.
    
    381
    +
    
    382
    +**4J**
    
    383
    +
    
    384
    +### Intégration de cette documentation dans l'API publique
    
    385
    +
    
    386
    +Cette nouvelle documentation pourra être intégrée au niveau de la documentation de chaque entité.
    
    387
    +
    
    388
    +**2J**
    
    389
    +
    
    390
    +### Production d'un rapport de cette documentation dans le site de l'application
    
    391
    +
    
    392
    +On peut aussi proposer un rapport généré dans le site de l'application et qui reprend cette fois via une vue physique de
    
    393
    +la documentation déjà réalisé et indique le pourcentage de réalisation sur le sujet.
    
    394
    +
    
    395
    +**3J**
    
    396
    +
    
    397
    +### Production d'une documentation du schéma de base
    
    398
    +
    
    399
    +Mettre en place la génération de la documentation du schéma de la base via probablement la librairie **SchemaSpy**.
    
    400
    +
    
    401
    +La documentation produite sera alors placée dans la documentation du projet.
    
    402
    +
    
    403
    +**4J**
    
    404
    +
    
    405
    +\newpage
    
    406
    +
    
    407
    +# Chiffrage global
    
    408
    +
    
    409
    +**Tous les prix sont affichés HT.** et le prix journalier est de **540€**.
    
    410
    +
    
    411
    +| Tâche                                                                                                                                                                                                                                                                                                         | Jours |
    
    412
    +|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------:|
    
    413
    +| [#2826](https://gitlab.com/ultreiaio/ird-observe/-/issues/2826) Permettre de renommer et de supprimer une présélection FOB                                                                                                                                                                                    |     3 |
    
    414
    +| [#2834](https://gitlab.com/ultreiaio/ird-observe/-/issues/2834) Permettre à l’utilisateur de sauvegarder ses choix quant au mode de classement des listes déroulantes                                                                                                                                         |     5 |
    
    415
    +| [#2347](https://gitlab.com/ultreiaio/ird-observe/-/issues/2347) Permettre à l’utilisateur de pré régler ses propres valeurs par défaut de listes déroulantes                                                                                                                                                  |     6 |
    
    416
    +| [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) Sur tous les widgets position, présélectionner le quadrant de la saisie précédente                                                                                                                                                                |     5 |
    
    417
    +| [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) LL observations/logbook : mise à jour auto de la date de fin de marée en fonction des dates activités (comme en PS)                                                                                                                               |     3 |
    
    418
    +| [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) LL observations/logbook : filage: mettre par défaut date de dernière activité (ou dernier virage ?) + 1                                                                                                                                           |   0.5 |
    
    419
    +| [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) LL observations/logbook : virage : mettre date de virage à J+1 par rapport à celle du filage                                                                                                                                                      |   0.5 |
    
    420
    +| [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) LL observations/composition détaillée : on nous signale une forte latence dans la V9 lors de la sélection de sections/paniers, inexistante en V7 (sûrement due à la normalisation du modèle). Possibilité de retrouver une meilleure réactivité ? |     2 |
    
    421
    +| [#2594](https://gitlab.com/ultreiaio/ird-observe/-/issues/2594) Suppression de la technologie XWorks (utilisé pour la validation)                                                                                                                                                                             |     3 |
    
    422
    +| [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) LL observations : amélioration du focus sur form captures (à voir plus précisément ensemble), et ajout de champs (actuellement existants mais masqués) dans le tableau récapitulatif                                                              |     1 |
    
    423
    +| [#2669](https://gitlab.com/ultreiaio/ird-observe/-/issues/2669) PS logbook : Automatiser la calcul des sample.minus10Weight et sample.plus10Weight par sommation des lots du plan de cuves                                                                                                                    |     3 |
    
    424
    +| [#2799](https://gitlab.com/ultreiaio/ird-observe/-/issues/2799) PS logbook : Automatiser les associations Échantillon  Activités                                                                                                                                                                              |     5 |
    
    425
    +| [#2726](https://gitlab.com/ultreiaio/ird-observe/-/issues/2726) Amélioration de la gestion des types date                                                                                                                                                                                                     |     5 |
    
    426
    +| [#2875](https://gitlab.com/ultreiaio/ird-observe/-/issues/2875) Dates activités toujours affichées sur carte LL                                                                                                                                                                                               |     2 |
    
    427
    +| [#2603](https://gitlab.com/ultreiaio/ird-observe/-/issues/2603) Améliorer la reconnexion à un serveur distant utilisé comme connexion d’un assistant                                                                                                                                                          |     3 |
    
    428
    +| [#2818](https://gitlab.com/ultreiaio/ird-observe/-/issues/2818) Ajouter quelques champs de référence dans common.Vessel                                                                                                                                                                                       |   1.5 |
    
    429
    +| [#2816](https://gitlab.com/ultreiaio/ird-observe/-/issues/2816) Fonction de changement de programme en masse                                                                                                                                                                                                  |     6 |
    
    430
    +| [#2846](https://gitlab.com/ultreiaio/ird-observe/-/issues/2846) Corriger un effet de bord indésirable lors de la désactivation ou la suppression d’une référence et la réattribution de ses données liées à une autre référence                                                                               |     6 |
    
    431
    +| [#1203](https://gitlab.com/ultreiaio/ird-observe/-/issues/1203) Tableaux de saisie (captures, échantillons, équipements...) - Classement en cliquant sur les en-têtes de colonnes                                                                                                                             |     3 |
    
    432
    +| [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) Écriture de tutoriels pratiques                                                                                                                                                                                                                   |     5 |
    
    433
    +| [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) Mise à jour de la documentation des librairies                                                                                                                                                                                                    |     5 |
    
    434
    +| [#TODO](https://gitlab.com/ultreiaio/ird-observe/-/issues/) Ajout d'une documentation dans la base de données                                                                                                                                                                                                 |    13 |
    
    435
    +| Total                                                                                                                                                                                                                                                                                                         |  86.5 |
    
    436
    +
    
    437
    +* Prix total : **46 170** (**43250€** à **500€/J**)

  • pom.xml
    ... ... @@ -23,7 +23,7 @@
    23 23
       <parent>
    
    24 24
         <groupId>io.ultreia.maven</groupId>
    
    25 25
         <artifactId>pom</artifactId>
    
    26
    -    <version>2024.25</version>
    
    26
    +    <version>2024.26</version>
    
    27 27
       </parent>
    
    28 28
       <groupId>fr.ird.observe</groupId>
    
    29 29
       <artifactId>ird-observe</artifactId>
    
    ... ... @@ -254,12 +254,6 @@
    254 254
             <groupId>commons-beanutils</groupId>
    
    255 255
             <artifactId>commons-beanutils</artifactId>
    
    256 256
             <version>${lib.version.commons-beanutils}</version>
    
    257
    -        <exclusions>
    
    258
    -          <exclusion>
    
    259
    -            <groupId>commons-collections</groupId>
    
    260
    -            <artifactId>commons-collections</artifactId>
    
    261
    -          </exclusion>
    
    262
    -        </exclusions>
    
    263 257
           </dependency>
    
    264 258
           <dependency>
    
    265 259
             <groupId>commons-codec</groupId>
    

  • src/site/markdown/avdth/logbook.md
    ... ... @@ -75,7 +75,7 @@ Voir mapping [REF_VESSEL_ACTIVITY_TYPE](./referential.html#REF_VESSEL_ACTIVITY_T
    75 75
     
    
    76 76
     Voir mapping  [REF_SCHOOL_TYPE](./referential.html#REF_SCHOOL_TYPE).
    
    77 77
     
    
    78
    -**À noter que cette donée est renseignée uniquement si l'activité est une activité de pêche ```ACTIVITE_C_OPERA in (0, 1, 2, 14)```** 
    
    78
    +**À noter que cette donnée est renseignée uniquement si l'activité est une activité de pêche ```ACTIVITE_C_OPERA in (0, 1, 2, 14)```** 
    
    79 79
     
    
    80 80
     * Note 6 <a name="n_0_6"></a>
    
    81 81
     
    
    ... ... @@ -137,7 +137,7 @@ Dans ce cas on rajoute aussi le système observé **110**.
    137 137
     Dans **AVDTH**, il existe trois notions à considéder :
    
    138 138
     
    
    139 139
     1. ```ACTIVITE.C_TYP_OBJET``` donne le type de DCP (la valeur ```NULL``` ou ```999``` indique pas de DCP déclaré dans **AVDTH**)
    
    140
    -2. ```ACTIVITE.C_TYP_BALISE``` donne le type de balise (la valeur ```NULL``` ou ```999``` indique pas de bouée délcarée dans **AVDTH**)
    
    140
    +2. ```ACTIVITE.C_TYP_BALISE``` donne le type de balise (la valeur ```NULL``` ou ```999``` indique pas de bouée déclarée dans **AVDTH**)
    
    141 141
     3. Les valeurs ```20,21,22,23,24,25,81``` de la table ```ACT_ASSOC.C_ASSOC``` permettent de définir aussi un DCP (et de renseigner les matériaux associés)
    
    142 142
     
    
    143 143
     On va alors interdire l'ajout d'un DCP, si aucune des trois notions précédentes n'est satisfaite, en clair on ne peut pas ajouté un DPC si :
    
    ... ... @@ -236,12 +236,12 @@ Dans tous les autres cas, on peut ajouter un système observé en utilisant la t
    236 236
     La valeur des champs ```FloatingObject.floatingObjectPart.whenArriving``` et ```FloatingObject.floatingObjectPart.whenLeaving``` 
    
    237 237
     est déduite du référentiel  ```ps_common.ObjectOperation``` et n'est plus récupéré d'**AVDTH**.
    
    238 238
     
    
    239
    -##### Matériel Bioadégradable
    
    239
    +##### Matériel Biodégradable
    
    240 240
     
    
    241 241
     Si le DCP est déclaré dans **AVDTH** et que la valeur de la colonne ```ACTIVITE.F_DCP_ECO``` vaut **2**, on ajoute alors
    
    242
    -le matériel **4-2 (Biodegradable materials)**.
    
    242
    +le matériel **4-1 (Biodegradable materials)**.
    
    243 243
     
    
    244
    -##### Matériaux provenants des systèmes observés d'AVDTH
    
    244
    +##### Matériaux provenant des systèmes observés d'AVDTH
    
    245 245
     
    
    246 246
     Les systèmes observés d'**AVDTH** permettent de caractériser les matériaux à ajouter au DCP comme indiqué dans le 
    
    247 247
     tableau suivant :
    
    ... ... @@ -263,7 +263,7 @@ cas où la balise n'est pas déclarée dans AVDTH**.
    263 263
     
    
    264 264
     ##### Matériaux ajouté si le DCP est déclaré dans AVDTH
    
    265 265
     
    
    266
    -Dans ce cas, on peut ajouter un éventel matériel en utilisant la table de correspondance suivante :
    
    266
    +Dans ce cas, on peut ajouter un éventuel matériel en utilisant la table de correspondance suivante :
    
    267 267
     
    
    268 268
     | ACTIVITE.C_TYP_OBJET | ObjectMaterial |
    
    269 269
     |:---------------------|:---------------|
    
    ... ... @@ -386,7 +386,7 @@ On ajoute ici une balise avec les caractéristiques suivantes :
    386 386
     * **TransmittingBuoyType** 98 (Balise inconnue ou indéterminée)
    
    387 387
     * **TransmittingBuoyOperation** 1 (Visite)
    
    388 388
     
    
    389
    -**FIXME** Ne devrait pas plutot mettre une opération à **99** (qui a été introduite en 9.1) ?
    
    389
    +**FIXME** Ne devrait pas plutôt mettre une opération à **99** (qui a été introduite en 9.1) ?
    
    390 390
     
    
    391 391
     ### Table ACT_ASSOC
    
    392 392