Skip to content

Commit

Permalink
Merge branch 'release/2.2.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
sgrimault committed May 31, 2022
2 parents db5a899 + 0bfbc57 commit 08e7d96
Show file tree
Hide file tree
Showing 56 changed files with 1,499 additions and 512 deletions.
103 changes: 103 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,108 @@
# Changelog

## [2.2.0](https://github.com/PnX-SI/gn_mobile_occtax/releases/tag/2.2.0) (2022-05-31, release)

### 🚀 Nouveautés

* Ajout de la possibilité de renseigner la date de fin ainsi que les heures du relevé (https://github.com/PnX-SI/gn_mobile_occtax/issues/104)
* Ajout des contraintes de validation sur les champs date de début et de fin. La date de fin est
automatiquement fixée selon la date de début. Possibilité de définir la même date de début et de
fin (https://github.com/PnX-SI/gn_mobile_occtax/issues/104).
* Configuration des dates et des heures du relevé via le fichier de paramétrage (https://github.com/PnX-SI/gn_mobile_occtax/issues/104).
La description du paramétrage est décrite dans le [README.md](https://github.com/PnX-SI/gn_mobile_occtax/tree/master#input-settings).
* Possibilité de définir plusieurs observateurs par défaut (https://github.com/PnX-SI/gn_mobile_occtax/issues/110).
* Légère refonte ergonomique des formulaires d'édition.

### 🐛 Corrections

* Amélioration de la disposition du clavier par rapport aux champs de saisie sur l'écran de login (https://github.com/PnX-SI/gn_mobile_occtax/issues/155).
* Défilement des libellés des jeux de données (https://github.com/PnX-SI/gn_mobile_occtax/issues/120).
* Prise en compte du dénombrement réalisé par taxon dans le récapitulatif.
* Taille des libellés sur les boutons "flottants" (https://github.com/PnX-SI/gn_mobile_occtax/issues/114).
* Corrections sur la résolution des fonds de carte embarqués sur le terminal (https://github.com/PnX-SI/gn_mobile_occtax/issues/151),
en privilégiant d'abord la carte mémoire externe (si présente) puis l'espace de stockage interne
(cf. [README.md](https://github.com/PnX-SI/gn_mobile_maps/tree/develop/maps#base-path) du module)

### ⚠️ Notes de version

* Code de version : 3020

## [2.2.0-rc5](https://github.com/PnX-SI/gn_mobile_occtax/releases/tag/2.2.0-rc5) (2022-05-26, pre-release)

### 🐛 Corrections

* Ajout des contraintes de validation sur les champs date de début et de fin. La date de fin est
automatiquement fixée selon la date de début. Possibilité de définir la même date de début et de
fin (https://github.com/PnX-SI/gn_mobile_occtax/issues/104).

### ⚠️ Notes de version

* Code de version : 3015

## [2.2.0-rc4](https://github.com/PnX-SI/gn_mobile_occtax/releases/tag/2.2.0-rc4) (2022-05-24, pre-release)

### 🐛 Corrections

* Ajout des contraintes de validation sur les champs date de début et de fin (https://github.com/PnX-SI/gn_mobile_occtax/issues/104).

### ⚠️ Notes de version

* Code de version : 2985

## [2.2.0-rc3](https://github.com/PnX-SI/gn_mobile_occtax/releases/tag/2.2.0-rc3) (2022-05-24, pre-release)

### 🐛 Corrections

* Rendre "cliquable" l'indicateur de sélection des listes déroulantes (https://github.com/PnX-SI/gn_mobile_occtax/issues/158).
* Prise en compte du fuseau horaire sur les champs date lors de l'envoi d'un relevé (https://github.com/PnX-SI/gn_mobile_occtax/issues/104).
* Prise en compte du dénombrement réalisé par taxon dans le récapitulatif.

### ⚠️ Notes de version

* Code de version : 2965

## [2.2.0-rc2](https://github.com/PnX-SI/gn_mobile_occtax/releases/tag/2.2.0-rc2) (2022-05-23, pre-release)

### 🐛 Corrections

* Gestion des attributs `hour_min` et `hour_max` lors de l'envoi d'un relevé (https://github.com/PnX-SI/gn_mobile_occtax/issues/104).
* Configuration de la date et de l'heure du relevé via le fichier de paramétrage (https://github.com/PnX-SI/gn_mobile_occtax/issues/104).
* Corrections sur la résolution des fonds de carte embarqués sur le terminal, en privilégiant
d'abord la carte mémoire externe (si présente) puis l'espace de stockage interne
(cf. [README.md](https://github.com/PnX-SI/gn_mobile_maps/tree/develop/maps#base-path) du module)

### ⚠️ Notes de version

* Code de version : 2945

## [2.2.0-rc1](https://github.com/PnX-SI/gn_mobile_occtax/releases/tag/2.2.0-rc1) (2022-05-18, pre-release)

### 🐛 Corrections

* Rendre "cliquable" l'indicateur de sélection des listes déroulantes (https://github.com/PnX-SI/gn_mobile_occtax/issues/158).
* Disposition du clavier par rapport aux champs de saisie sur l'écran de login (https://github.com/PnX-SI/gn_mobile_occtax/issues/155).
* Défilement des libellés des jeux de données (https://github.com/PnX-SI/gn_mobile_occtax/issues/120).
* Taille des libellés sur les boutons "flottants" (https://github.com/PnX-SI/gn_mobile_occtax/issues/114).
* Mise à jour de la sélection des observateurs par défaut sur l'écran "Observateurs & Date" (https://github.com/PnX-SI/gn_mobile_occtax/issues/110).
* Gestion des attributs `hour_min` et `hour_max` lors de l'envoi d'un relevé (https://github.com/PnX-SI/gn_mobile_occtax/issues/104).

### ⚠️ Notes de version

* Code de version : 2905

## [2.2.0-rc0](https://github.com/PnX-SI/gn_mobile_occtax/releases/tag/2.2.0-rc0) (2022-05-16, pre-release)

### 🚀 Nouveautés

* Configuration de la date et de l'heure du relevé via le fichier de paramétrage (https://github.com/PnX-SI/gn_mobile_occtax/issues/104).
La description du paramétrage est décrite dans le [README.md](https://github.com/PnX-SI/gn_mobile_occtax/tree/develop#input-settings).
* Possibilité de définir plusieurs observateurs par défaut (https://github.com/PnX-SI/gn_mobile_occtax/issues/110).
* Légère refonte ergonomique des formulaires lors de l'édition d'un relevé.

### ⚠️ Notes de version

* Code de version : 2870

## [2.1.0](https://github.com/PnX-SI/gn_mobile_occtax/releases/tag/2.1.0) (2022-05-05, release)

### 🚀 Nouveautés
Expand Down
60 changes: 53 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Example:
"sync": {
"geonature_url": "https://demo.geonature/geonature",
"taxhub_url": "https://demo.geonature/taxhub",
"uh_application_id": 3,
"gn_application_id": 3,
"observers_list_id": 1,
"taxa_list_id": 100,
"code_area_type": "M1",
Expand All @@ -39,20 +39,42 @@ Example:
"show_scale": true,
"show_compass": true,
"max_bounds": [
[47.253369, -1.605721],
[47.173845, -1.482811]
[52.0, -6.0],
[41.0, 9.0]
],
"center": [47.225827, -1.55447],
"center": [46.0, 3.0],
"start_zoom": 10.0,
"min_zoom": 8.0,
"max_zoom": 19.0,
"min_zoom_editing": 12.0,
"base_path": "Offline_maps",
"layers": [
{
"label": "Nantes",
"source": "nantes.mbtiles"
"source": "plan.mbtiles",
"label": "IGN plan"
},
{
"source": "ortho.mbtiles",
"label": "IGN ortho"
},
{
"label": "OpenStreetMap",
"source": "https://a.tile.openstreetmap.org/",
"properties": {
"attribution": "© OSM contributors"
}
},
{
"label": "Mailles 5x5",
"source": "mailles.geojson"
}
]
},
"input": {
"date": {
"enable_end_date": true,
"enable_hours": true
}
}
}
```
Expand All @@ -64,11 +86,35 @@ Example:
| `area_observation_duration` | ☐ | Area observation duration period (in days) | 365 |
| `sync` | ☐ | Data synchronization settings (cf. https://github.com/PnX-SI/gn_mobile_core/tree/develop/datasync) | |
| `map` | ☐ | Maps settings (cf. https://github.com/PnX-SI/gn_mobile_maps/tree/develop/maps) | |
| `input` | ☐ | Input form settings | |
| `input/date` | ☐ | Date settings | |
| `nomenclature` | ☐ | Nomenclature settings | |
| `nomenclature/information` | ☐ | Information settings (as array) | |
| `nomenclature/counting` | ☐ | Counting settings (as array) | |

#### Nomenclature settings
### Input settings

Allows to configure settings related to user input.

**Date settings**

How the user can set the start and end date of the input:

| Parameter | Description | Default value |
| ----------------- | ---------------------------------------------------------------------------- | ------------- |
| `enable_end_date` | Whether to edit as well the end date of the input | `false` |
| `enable_hours` | Whether to edit as well the hour part of the start and end date (if enabled) | `false` |

The combination of these parameters gives the following configuration:

- `enable_end_date` and `enable_hours` are set to `false`: only the start date without the hour part is editable
- only `enable_end_date` is set to `true`: the start and end date without the hour part are editable
- only `enable_hours` is set to `true`: only the start date including the hour part is editable
- `enable_end_date` and `enable_hours` are set to `true`: the start and end date with the hour part are editable

If nothing is configured, only the start date without the hour part is editable.

### Nomenclature settings

Allows to define if fields are displayed by default and if they are editable (visible). If a field is not editable (visible),
it will use the default value set in Occtax database.
Expand Down
6 changes: 3 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
ext.kotlin_version = '1.6.10'
ext.kotlin_version = '1.6.21'
ext.androidx_hilt_version = '1.0.0'
ext.hilt_version = '2.40.5'
ext.hilt_version = '2.41'
ext.retrofit_version = '2.9.0'
ext.tinylog_version = '2.4.1'

Expand All @@ -16,7 +16,7 @@ buildscript {
}

dependencies {
classpath 'com.android.tools.build:gradle:7.1.2'
classpath 'com.android.tools.build:gradle:7.1.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
classpath "org.jlleitschuh.gradle:ktlint-gradle:9.4.1"
Expand Down
19 changes: 7 additions & 12 deletions docs/installation-fr.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ image::{gitplant}/arch.puml[Architecture]
=== Installation et configuration centralisées

Il est nécessaire de gérer les fichiers de configuration, l'installation et la mise à jour des applications au niveau du serveur GeoNature.
Voir https://github.com/PnX-SI/gn_mobile_core/issues/8[PnX-SI/gn_mobile_core#8].

L'application *_Occtax-mobile_* se chargera alors de récupérer automatiquement sur le serveur GeoNature la dernière version du fichier de configuration des applications et détectera les éventuelles mises à jour disponibles pour l'application.

Expand Down Expand Up @@ -107,7 +106,7 @@ Le fichier de configuration sur le serveur écrasera celui sur le terminal à ch

* Détail des paramètres du fichier de configuration : https://github.com/PnX-SI/gn_mobile_occtax#settings

Le paramètre `page_size` permettent de paginer les appels aux routes renvoyant de nombreux résultats et ainsi les récupérer par lots (voir https://github.com/PnX-SI/gn_mobile_occtax/issues/37[#37]).
Le paramètre `page_size` permet de paginer les appels aux routes renvoyant de nombreux résultats et ainsi les récupérer par lots.

Exemples des routes paginées :

Expand All @@ -125,11 +124,11 @@ Les conditions d'arrêt de l'interrogation de ces routes sont :
Le paramètre `code_area_type` correspond au type de zonage de votre référentiel géographique de GeoNature (champs `type_code` de la table `ref_geo.bib_areas_types`) utilisé pour les unités géographiques.
Voir https://github.com/PnX-SI/gn_mobile_core/issues/15[PnX-SI/gn_mobile_core#15].

Le paramètre `gn_application_id` permet de renseigner l'`id_application` de GeoNature dans la table `utilisateurs.t_applications` pour l'authentification des utilisateurs et leurs droits.
Le paramètre `gn_application_id` permet de renseigner l' `id_application` de GeoNature dans la table `utilisateurs.t_applications` pour l'authentification des utilisateurs et leurs droits.

Le paramètre `observers_list_id` permet de renseigner l`id_liste` des observateurs d'Occtax dans la table `utilisateurs.t_listes`.
Le paramètre `observers_list_id` permet de renseigner l' `id_liste` des observateurs d'Occtax dans la table `utilisateurs.t_listes`.

Le paramètre `taxa_list_id` permet de renseigner l'`id_liste` des taxons saisissables dans Occtax dans la table `taxonomie.bib_listes`.
Le paramètre `taxa_list_id` permet de renseigner l' `id_liste` des taxons saisissables dans Occtax dans la table `taxonomie.bib_listes`.

Le paramètre `area_observation_duration` est lié aux couleurs des taxons dans chaque unités géographiques en fonction de la date de dernière observation du taxon dans l'unité géographique.

Expand Down Expand Up @@ -268,20 +267,16 @@ Par exemple :
Il est possible de tester l'application mobile en la connectant sur le https://demo.geonature.fr[serveur de démonstration].

Pour cela, télécharger l'application *_Occtax-mobile_* et installez-la sur un terminal mobile.
Renseignez dans ses paramètres l'URL du serveur de démo de GeoNature et TaxHub :

* URL de GeoNature : https://demo.geonature.fr/geonature
* URL de TaxHub : https://demo.geonature.fr/taxhub
Lancez l'application et renseignez dans ses paramètres l'URL du serveur de démo de GeoNature (https://demo.geonature.fr/geonature).

Authentifiez-vous avec l'utilisateur de démo (_admin_ / _admin_).
L'application se chargera de télécharger le fichier de configuration puis lancera automatiquement une première synchronisation des données.

Vous pouvez aussi utiliser les fichiers d'exemple de fond de carte et d'unités géographiques (mailles 10x10km), disponibles dans le dossier https://geonature.fr/data/maps/.
À placer dans un répertoire `DCIM/maps` du stockage interne.
Vous pouvez aussi utiliser les fichiers d'exemple de fond de carte et d'unités géographiques (mailles 10x10km), disponibles dans le dossier https://geonature.fr/data/maps/ et en les copiant dans le dossier que vous souhaitez sur le stockage interne ou la carte SD du terminal.

== Logs

Pour obtenir des logs de l'application mobile, on peut soit utiliser l'utilitaire `adb` (https://developer.android.com/studio/command-line/adb[Android Debug Bridge], il est intégré au kit de développement d'https://developer.android.com/studio#downloads[Android Studio] mais peut aussi être installé à part) ou les récupérer directement dans le répertoire des logs de l'application.
Pour obtenir des logs de l'application mobile, on peut soit utiliser l'utilitaire `adb` (https://developer.android.com/studio/command-line/adb[Android Debug Bridge], il est intégré au kit de développement d'https://developer.android.com/studio#downloads[Android Studio] mais peut aussi être installé à part) ou les récupérer directement sur l'appareil mobile, dans le répertoire des logs de l'application.

=== adb

Expand Down
2 changes: 1 addition & 1 deletion gn_mobile_core
Submodule gn_mobile_core updated 25 files
+3 −3 build.gradle
+6 −6 commons/build.gradle
+23 −13 commons/src/main/java/fr/geonature/commons/input/AbstractInput.kt
+12 −3 commons/src/main/java/fr/geonature/commons/input/IInputManager.kt
+56 −35 commons/src/main/java/fr/geonature/commons/input/InputManagerImpl.kt
+16 −5 commons/src/main/java/fr/geonature/commons/input/InputViewModel.kt
+26 −12 commons/src/main/java/fr/geonature/commons/input/io/InputJsonWriter.kt
+73 −25 commons/src/main/java/fr/geonature/commons/util/DateHelper.kt
+65 −0 commons/src/main/java/fr/geonature/commons/util/JsonHelper.kt
+0 −49 commons/src/main/java/fr/geonature/commons/util/JsonReaderHelper.kt
+80 −12 commons/src/test/java/fr/geonature/commons/input/InputManagerTest.kt
+54 −18 commons/src/test/java/fr/geonature/commons/input/InputTest.kt
+6 −4 commons/src/test/java/fr/geonature/commons/input/InputViewModelTest.kt
+43 −11 commons/src/test/java/fr/geonature/commons/input/io/InputJsonWriterTest.kt
+11 −9 commons/src/test/java/fr/geonature/commons/interactor/BaseUseCaseTest.kt
+108 −19 commons/src/test/java/fr/geonature/commons/util/DateHelperTest.kt
+165 −0 commons/src/test/java/fr/geonature/commons/util/JsonHelperTest.kt
+2 −2 commons/version.properties
+6 −6 datasync/build.gradle
+1 −0 datasync/src/main/res/layout/activity_login.xml
+2 −2 datasync/version.properties
+3 −2 mountpoint/build.gradle
+2 −2 mountpoint/version.properties
+3 −2 viewpager/build.gradle
+2 −2 viewpager/version.properties
6 changes: 2 additions & 4 deletions occtax/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ plugins {
id 'kotlin-kapt'
}

version = "2.1.0"
version = "2.2.0"

android {
compileSdkVersion 31
Expand Down Expand Up @@ -88,8 +88,6 @@ dependencies {
runtimeOnly "org.tinylog:tinylog-impl:$tinylog_version"

// Testing dependencies
testImplementation 'androidx.test:core:1.4.0'
testImplementation "com.google.dagger:hilt-android-testing:$hilt_version"
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.robolectric:robolectric:4.7.3'
testImplementation 'org.robolectric:robolectric:4.8.1'
}
2 changes: 1 addition & 1 deletion occtax/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
android:name="fr.geonature.datasync.ui.login.LoginActivity"
android:label="@string/activity_login_title"
android:theme="@style/AppTheme.Login"
android:windowSoftInputMode="adjustResize" />
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".ui.settings.PreferencesActivity"
android:label="@string/activity_preferences_title"
Expand Down
5 changes: 1 addition & 4 deletions occtax/src/main/java/fr/geonature/occtax/MainApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -127,10 +127,7 @@ class MainApplication : Application(), Configuration.Provider {
}

private class TinylogUncaughtExceptionHandler : Thread.UncaughtExceptionHandler {
override fun uncaughtException(
thread: Thread?,
ex: Throwable?
) {
override fun uncaughtException(thread: Thread, ex: Throwable) {
Logger.error(ex)
exitProcess(1)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import fr.geonature.commons.input.IInputManager
import fr.geonature.commons.input.InputManagerImpl
import fr.geonature.occtax.input.io.OnInputJsonReaderListenerImpl
import fr.geonature.occtax.input.io.OnInputJsonWriterListenerImpl
import fr.geonature.occtax.settings.AppSettings
import javax.inject.Singleton

/**
Expand All @@ -27,7 +28,7 @@ object InputModule {
fun provideInputManager(
@ApplicationContext appContext: Context,
@ContentProviderAuthority authority: String
): IInputManager<Input> {
): IInputManager<Input, AppSettings> {
return InputManagerImpl(
appContext,
authority,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package fr.geonature.occtax.input

import dagger.hilt.android.lifecycle.HiltViewModel
import fr.geonature.commons.input.IInputManager
import fr.geonature.occtax.settings.AppSettings
import javax.inject.Inject
import fr.geonature.commons.input.InputViewModel as BaseInputModel

Expand All @@ -11,5 +12,5 @@ import fr.geonature.commons.input.InputViewModel as BaseInputModel
* @author S. Grimault
*/
@HiltViewModel
class InputViewModel @Inject constructor(inputManager: IInputManager<Input>) :
BaseInputModel<Input>(inputManager)
class InputViewModel @Inject constructor(inputManager: IInputManager<Input, AppSettings>) :
BaseInputModel<Input, AppSettings>(inputManager)
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ import fr.geonature.occtax.input.PropertyValue
import java.io.Serializable
import java.util.Date
import java.util.Locale
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.collections.forEach
import kotlin.collections.mutableListOf
import kotlin.collections.mutableMapOf
import kotlin.collections.set

/**
* Default implementation of [InputJsonReader.OnInputJsonReaderListener].
Expand Down Expand Up @@ -66,9 +72,12 @@ class OnInputJsonReaderListenerImpl : InputJsonReader.OnInputJsonReaderListener<
) {
reader.beginObject()

val now = Date()

while (reader.hasNext()) {
when (reader.nextName()) {
"date_min" -> input.date = toDate(reader.nextString()) ?: Date()
"date_min" -> input.startDate = toDate(reader.nextString()) ?: now
"date_max" -> input.endDate = toDate(reader.nextString()) ?: now
"id_dataset" -> {
if (reader.peek() != JsonToken.NULL) {
input.datasetId = reader.nextLong()
Expand Down
Loading

0 comments on commit 08e7d96

Please sign in to comment.