sigrennesmetropole / geor_tabou2_front

Code du front de l'application tabou2 pour georchestra
Other
1 stars 2 forks source link

[Edition] - Fiche OA - Ajout d'attributs complémentaires #174

Closed dcottenc closed 2 years ago

dcottenc commented 2 years ago

Description

En tant que utilisateur Je souhaite éditer la fiche OA avec des attributs complémentaires Afin d'effectuer un suivi étendu des OA

(Si) Règles spécifiques - Règles métiers

Les attributs actuels des OA sont ceux suivis par le SAm (service aménagement, Rennes). L'évolution concerne le suivi des OA sur les autres communes par le SPEU.

La fiche des OA est unique mais doit être complétée par plusieurs attributs. Un bouton permet l'affichage des attributs spécifiques aux vocations (cf. ticket #171).

L'ergonomie de la fiche devra être revue pour s'adapter à l'affichage de nombreux champs complémentaires :
Si l'ergonomie évolue sensiblement il faudra envisager de revoir celle des PA pour des questions d'homogénéité.

BLOC Identification

Attribut Type champ Affichage Read only Mandatory API Nom API Reference
Id_Operation Entier Champ numérique X X /v2/operations id
Code Texte Champ texte X /v2/operations code
Service réfèrent Texte Liste déroulante /v2/operations entiteReferente.libelle
Chargé d'opération Texte Liste déroulante X bouton tiers (même chose que aménageur)
Commune Texte Champ texte X /v2/operations (Méthode actuelle)
Nature Texte Champ texte X X /v2/operations nature.libelle
Nom Texte Champ texte X /v2/operations nom
Consommation espace Texte Liste déroulante /v2/operations consommationEspace.libelle
Etape Texte Liste déroulante X X /v2/operations etape.libelle
N° ADS Texte Champ texte /v2/operations numAds

BLOC Descriptif / objectifs

Attribut Type champ Affichage Read only Mandatory API Nom API Reference
Localisation Texte Champ texte long /v2/operations localisation
Surface totale (ha) Réel Champ numérique /v2/operations Si OA alors surfaceTotale sinon récupérer surfaceTotale OA Parent (uniquement si intersection spatiale donne 1 resultat et un seul sinon 0)
Surface secteur (ha) Réel Champ numérique /v2/operations Si SA alors surfaceTotale sinon 0
Usage actuel Texte Champ texte /v2/operations usageActuel
Vocation Texte Liste déroulante X X /v2/operations vocation.libelle
Enjeux Texte Champ texte long /v2/operations objectifs
'Descriptif' => 'Description' Texte Champ texte long /v2/operations description

BLOC Cadre / montage opérationnel

a) Foncier et occupation Attribut Type champ Affichage Read only Mandatory API Nom API Reference
Maitrise foncière publique texte Champ texte /v2/operations (filtre descriptionsFoncier.typeFoncier.code = 'FONCIER_PUBLIC' ) descriptionsFoncier.description
Niveau (même ligne qu'attribut ci dessus) Entier Champ numérique /v2/operations (filtre descriptionsFoncier.typeFoncier.code = 'FONCIER_PUBLIC' ) descriptionsFoncier.taux
Maitrise foncière privée texte Champ texte /v2/operations (filtre descriptionsFoncier.typeFoncier.code = 'FONCIER_PRIVE' ) descriptionsFoncier.description
Niveau (même ligne qu'attribut ci dessus) Entier Champ numérique /v2/operations (filtre descriptionsFoncier.typeFoncier.code = 'FONCIER_PRIVE' ) descriptionsFoncier.taux
Type d'occupation actuel Texte Liste déroulante /v2/operations typeOccupation.libelle
Outil foncier existant Texte /!\ Liste déroulante /v2/operations outilFoncier.libelle
Adaptations foncier Texte Champ texte long /v2/operations api et champ absent ==> ???
b) PLUi Attribut Type champ Affichage Read only Mandatory API Nom API Reference
Dispositions réglementaires Texte Champ texte long /v2/operations plui.pluiDisposition
Adaptations PLUI Texte Champ texte long /v2/operations plui.pluiAdaptation
c) Procédure opérationnelle Attribut Type champ Affichage Read only Mandatory API Nom API Reference
Etudes à prévoir Texte Champ texte long /v2/operations etude
Date autorisation Date Champ calendar /v2/operations autorisationDate
Date de démarrage Date Champ calendar /v2/operations operationnelDate
Date de clôture Date Champ calendar /v2/operations clotureDate
Type aménageur Texte Liste déroulante /v2/operations amenageurs.typeAmenageur.libelle
Aménageur privé Texte Champ texte /v2/operations amenageurs.nom
Outil d'aménagement Texte Champ texte /v2/operations outilAmenagement
Concertation date début Date Champ calendar /v2/operations concertation.dateDebut
Concertation date fin Date Champ calendar /v2/operations concertation.dateFin
Avancement administratif de l'opération Texte Champ texte long /v2/operations avancementAdministratif
Surface réalisée (ha) Réel Champ numérique /v2/operations surfaceRealisee
Dossiers environnementaux Texte Champ texte long /v2/operations environnement
Type Financement Texte Liste déroulante /v2/operations financements.typeFinancement.libelle
Financement Texte Champ texte long /v2/operations financements.description

BLOC Modalités de réalisation

Attribut Type champ Affichage Read only Mandatory API Nom API Reference
Décision Texte Liste déroulante /v2/operations decision.libelle
'Maîtrise d'ouvrage' => 'Maitrise d'ouvrage urbaine' Texte Liste déroulante /v2/operations maitriseOuvrage.libelle
'Mode d'aménagement' => 'Mode de réalisation' Texte Liste déroulante /v2/operations modeAmenagement.libelle
'Aménageurs' => 'Aménageur/lotisseur/promoteur' Texte Liste déroulante X Boutons Tiers
'Maîtrise d'œuvre' => 'Maîtrise d'œuvre urbaine' Texte Liste déroulante X Boutons Tiers
Actions à mener par RM Texte Champ texte /v2/operations actions.description (Type = 'ACTION')
Services ou personnes internes Texte Champ texte /v2/operations (filtre acteurs.typeActeur.code = 'ACT_INT' ) acteurs.description
Acteurs et partenaires externes Texte Champ texte /v2/operations (filtre acteurs.typeActeur.code = 'ACT_EXT' ) acteurs.description

BLOC liste des programmes (à supprimer)

Tests d'acceptabilité

  1. Ouvrir le plugin Tabou2
  2. Cliquer sur une OA
  3. Voir que la fiche OA permet de visualiser et modifier tous les attributs communs aux opérations et d'accéder à la fenêtre des attributs spécifiques par vocation
Gaetanbrl commented 2 years ago

Pour ce ticket et la revue de l'ergonomie, il faut prévoir l'intervention d'Agathe (courant décembre).

dcottenc commented 2 years ago

@Gaetanbrl Il y a visiblement une incompréhension pour ce ticket qui concerne les attributs complémentaires communs à ajouter dans la fiche opération. C'est notamment lié à la référence à l'affichage par vocation traité dans le ticket #171 et surtout à l’absence du détail des champs à ajouter (car non complètement disponibles dans l'API avant mon arrêt).

Sauf erreur de ma part, la fiche opération n'a pas évolué (à part le bouton vocation). Il manque donc des attributs présents dans l'API et dans l'impression (et des doublons en plus avec le contenu de la popup vocation).

De mon coté, je vais faire un inventaire des champs concernés, évoquer l'organisation pour ce sujet avec Philippe et je propose que nous échangions sur ce point en fin de semaine.

Gaetanbrl commented 2 years ago

Sauf erreur de ma part, la fiche opération n'a pas évolué (à part le bouton vocation). Il manque donc des attributs présents dans l'API et dans l'impression (et des doublons en plus avec le contenu de la popup vocation).

En effet, tel que décrit pour moi ce sont les vocations qui font évoluer la fiche OA car rien n'est spécifié sur les champs à enlever / rajouter / afficher dans ce ticket.

Il faudrait donc détailler ce ticket avec les éléments attendus comme dit avant l'arrêt :

dcottenc commented 2 years ago

Il faudrait donc détailler ce ticket avec les éléments attendus comme dit avant l'arrêt : Quels champs / type / champ API etc.

Oui je vais préparer cela. J'ai un point demain matin avec la MOA qui aurait pu lever cette alerte durant mon absence.

Gaetanbrl commented 2 years ago

@dcottenc est-ce que des modifications sont à apporter sur les specs pour commencer les devs ?

Gaetanbrl commented 2 years ago

Vu par mail avec @dcottenc :

J'ai apporté les dernières retouches à la fiche 174. Tu peux lancer les devs sur ce ticket. Il est en priorité haute.

Pour la MOA, la fiche est disponible ici et elle est basée sur le fichier validé ensemble disponible ici. Si vous avez des remarques, elles sont à faire dans les plus brefs délais.

dcottenc commented 2 years ago

Demande MOA (fiche 109) Modification du libellé "Descriptif" en "Description" (bloc BLOC Descriptif / objectifs) (idem dans fiche programme)

Cette demande arrive tardivement. Je te laisse arbitrer sur la possibilité de l'inclure dans le marché ou pas.

dcottenc commented 2 years ago

Demande MOA (fiche 99) Modifications de libellés demandées par la MOA. Cette demande arrive tardivement. Je te laisse arbitrer sur la possibilité de l'inclure dans le marché ou pas.

BLOC Modalités de réalisation

Attribut Type champ Affichage Read only Mandatory API Nom API Reference
'Maîtrise d'ouvrage' => 'Maitrise d'ouvrage urbaine' Texte Liste déroulante /v2/operations maitriseOuvrage.libelle
'Mode d'aménagement' => 'Mode de réalisation' Texte Liste déroulante /v2/operations modeAmenagement.libelle
'Aménageurs' => 'Aménageur/lotisseur/promoteur' Texte Liste déroulante X Boutons Tiers
'Maîtrise d'œuvre' => 'Maîtrise d'œuvre urbaine' Texte Liste déroulante X Boutons Tiers
Gaetanbrl commented 2 years ago

@dcottenc début des travaux sur cette issue que je passe en VSR.

Gaetanbrl commented 2 years ago

@dcottenc Peux-tu préciser si ces changements sont bien à appliquer Uniquement sur la fiche lors d'un clic sur une OA ? Qu'en est-il pour SA / PA ?

dcottenc commented 2 years ago

Peux-tu préciser si ces changements sont bien à appliquer Uniquement sur la fiche lors d'un clic sur une OA ? Qu'en est-il pour SA / PA ?

@Gaetanbrl , en effet il est intéressant de poser la question. Pour moi il n'y a que deux types de fiche, celle des opérations (OA et SA) et celle des programmes (PA). Les spécifications décrites ici concernent les opérations donc OA et SA. La fiche PA n'est pas impactée.

Gaetanbrl commented 2 years ago

@dcottenc pour le multi select des chargé d'op (bloc identifiacation), il me faudrai le code pour les tiers de ce type. En l'état il n'y a rien en base pour ce type de tiers : https://portail-test.sig.rennesmetropole.fr/tabou2/swagger-ui.html#/type-tiers-api-controller/searchTypeTiers.

J'ai ajouté un bout de code pour préparer mais je le commente je peux pas faire plus je pense.

Gaetanbrl commented 2 years ago

@dcottenc bloc descriptif :

Operation n'apparaît pas dans le tableau. Dois-je le supprimer ?

image

Gaetanbrl commented 2 years ago

@dcottenc BLOC Identification :

Quelle est l'API à utiliser pour le champ Etape (liste déroulante) dans le swagger ? Je ne vois pas de service qui correspondrai, ou pas sous ce nom.

Gaetanbrl commented 2 years ago

2 questions supplémentaires @dcottenc :

  1. le champ Etape (bloc identification) est noté en lecture seule, pourquoi l'afficher en liste déroulante qu'on ne pourra ouvrir et surtout, qui saisi la valeur la première fois ?

Idem pour Chargé d'opération ((bloc identification) ou d'autres champs d'autres blocs.

  1. Pourquoi un champ en lecture seule est parfois obligatoire et défois non ?

Je ne sais pas comment mettre une validation si on ne peut pas saisir la valeur d'un champ par défaut vide et obligatoire, ca risque de bloquer la sauvegarde de saisie d'autre champ modifiable.

dcottenc commented 2 years ago

@dcottenc pour le multi select des chargé d'op (bloc identifiacation), il me faudrai le code pour les tiers de ce type.

En effet, ils ne sont pas encore saisis en test. Je vais regarder cela. Cependant, idéalement, il faudrait qu'il soit configurable dans les propriétés du plugin.

Gaetanbrl commented 2 years ago

Cependant, idéalement, il faudrait qu'il soit configurable dans les propriétés du plugin

Car ce code peut changer ? Ca va devenir compliqué si tous les codes changes du jour au lendemain. Il vaut mieux avoir un code unique par tiers. Si des tiers doivent être rajoutés il faut alors faire une évolution, sinon on va avoir 3 km de config et personne pour la comprendre.

dcottenc commented 2 years ago

Operation n'apparaît pas dans le tableau. Dois-je le supprimer ?

Le champ ne doit pas être supprimé. Soit c'est un oubli de ma part, soit je n'ai mis dans le ticket que les champs ajoutés ou modifiés.

dcottenc commented 2 years ago

Quelle est l'API à utiliser pour le champ Etape (liste déroulante) dans le swagger ? Je ne vois pas de service qui correspondrai, ou pas sous ce nom.

Le champ Etape existe déjà, il n'y a pas de modification

Gaetanbrl commented 2 years ago

Le champ Etape existe déjà, il n'y a pas de modification

ok donc pour peuper la liste j'utilise /operation/etapes :

https://portail-test.sig.rennesmetropole.fr/tabou2/operations/100/etapes

dcottenc commented 2 years ago

le champ Etape (bloc identification) est noté en lecture seule, pourquoi l'afficher en liste déroulante qu'on ne pourra ouvrir et surtout, qui saisi la valeur la première fois ?

C'est une erreur de ma part. J'ai indiqué le champ en lecture seule car on peut uniquement sélectionner la valeur dans la liste déroulante mais c'est faux. On doit pouvoir changer la valeur Etape.

dcottenc commented 2 years ago

ok donc pour peuper la liste j'utilise /operation/etapes :

Oui, c'est bien cela

Gaetanbrl commented 2 years ago

J'ai indiqué le champ en lecture seule car on peut uniquement sélectionner la valeur dans la liste déroulante mais c'est faux. On doit pouvoir changer la valeur Etape.

donc :

dcottenc commented 2 years ago

Idem pour Chargé d'opération ((bloc identification) ou d'autres champs d'autres blocs. Pourquoi un champ en lecture seule est parfois obligatoire et défois non ?

J'ai indiqué en lecture seule les champs tiers (Chargé d'opération, MOA, MOE) et vocation car ils ne sont modifiables que dans les fenêtres modales correspondantes (Tiers et vocation)

dcottenc commented 2 years ago

si readOnly" + liste ==> Ne pas tenir compte (erreur)

Pas tout à fait, :

Désolé pour ces éléments pas si clairs

Gaetanbrl commented 2 years ago

OK c'est noté.

Gaetanbrl commented 2 years ago

@dcottenc l'API de la liste outilFoncier ==> types-fonciers?asc=true ?

dcottenc commented 2 years ago

@dcottenc l'API de la liste outilFoncier ==> types-fonciers?asc=true ?

@Gaetanbrl, je ne comprends pas la question. L'API citée permet bien d'avoir la liste des outils foncier disponibles

Gaetanbrl commented 2 years ago

Dans le champs API tu ne décrit pas l'API mais la source de l'information dans l'OA (je fais avec pour peupler l'info par défaut et la modifier à la saisie). Dans le cas d'une liste j'ai besoin de l'API qui fourni la liste des valeurs et non pas où trouver l'information si elle existe dans l'OA (même si j'ai aussi besoin de cette info).

Donc ma question est :

Est-ce que pour outilFoncier, c'est bien le web service types-fonciers?asc=true?

Je ne pense pas car type-foncier renvoi les types pour descriptionsFoncier (enfin je suis pas sur j'ai pas l'info).

Gaetanbrl commented 2 years ago

@dcottenc en gros dans ton tableau il faudrait ajouter la colonne "Web service" avec l'URL à appeler pour récupérer la liste des codes. Car là c'est noté /v2/operation partout...

Gaetanbrl commented 2 years ago

@dcottenc est-ce que tu peux m'indiquer si ce fonctionnement est normal pour le champ outilFoncier:

  1. Je récupère la liste des types fonciers :

https://portail-test.sig.rennesmetropole.fr/tabou2/types-fonciers?asc=true

  1. Je sélectionne Foncier public
  2. Je sauvegarde avec une modification PUT de l'OA qui contient pour le champ outilFoncier :
    "outilFoncier": {
    "id": 1,
    "code": "FONCIER_PUBLIC",
    "libelle": "Foncier public",
    "dateInactif": null,
    "createUser": null,
    "createDate": null
    },
  3. J'appel l'OA et j'obtiens en réponse pour le champ outilFoncier:
    "outilFoncier": {
    "id": 1,
    "code": "CODE_TBR",
    "libelle": "outil foncier TBR 1",
    "dateInactif": null,
    "createUser": null,
    "createDate": null
  },

Pourquoi le contenu est différent ?

Gaetanbrl commented 2 years ago

relance @dcottenc sur les 3 derniers commentaires de -26 jours.

dcottenc commented 2 years ago

relance @dcottenc sur les 3 derniers commentaires de -26 jours.

Je regarde. Pour info, la base de test a été réinitialisée à partir de la base de prod afin de tester les scripts de déploiements de la bdd.

Gaetanbrl commented 2 years ago

@dcottenc il y a aussi les trois champs dates :

Date autorisation | Date | Champ calendar |   |   | /v2/operations | autorisationDate -- | -- | -- | -- | -- | -- | -- Date de démarrage | Date | Champ calendar |   |   | /v2/operations | operationnelDate Date de clôture | Date | Champ calendar |   |   | /v2/operations | clotureDate

Ils sont déjà dans le Bloc Suivi Opérationnel. Je les déplace dans le BLOC Cadre / montage opérationnel c'est ca ?

Gaetanbrl commented 2 years ago

@dcottenc l'API types-amenageurs est vide,

https://portail-test.sig.rennesmetropole.fr/tabou2/types-amenageurs?asc=true

Est-ce possible d'avoir des valeurs de test ?

dcottenc commented 2 years ago

Est-ce possible d'avoir des valeurs de test ?

En regardant pour te répondre, j'ai vu qu'il manquait des types suite à une mauvaise manip manuelle dans les scripts. Je suis en train de les vérifier et de les renseigner si nécessaire

dcottenc commented 2 years ago

Je les déplace dans le BLOC Cadre / montage opérationnel c'est ca ?

Oui je confirme

Gaetanbrl commented 2 years ago

Pour les aménageur, je vois aussi la structure suivante pour les types aménageur (avec une liste d'aménageurs) :

type aménageur | Texte | Liste déroulante |   |   | /v2/operations | amenageurs.typeAmenageur.libelle -- | -- | -- | -- | -- | -- | --
  "amenageurs": [
    {
      "id": 0,
      "nom": "string",
      "typeAmenageur": {
        "code": "string",
        "createDate": "2022-07-20T09:19:49.062Z",
        "createUser": "string",
        "dateInactif": "2022-07-20T09:19:49.062Z",
        "id": 0,
        "libelle": "string"
      }
    }
  ],

En appelant : https://portail-test.sig.rennesmetropole.fr/tabou2/v2/operations/100

... on voit :

"amenageurs": [],

Cependant, c'est une liste déroulante qui n'affichera que un seul aménageur. Pourquoi la valeur de "amenageurs" dans l'opération est donc une liste alors qu'on en pourra en afficher qu'un seul ?

La structure devrait être :

"amenageur" : {
      "id": 0,
      "nom": "string",
      "typeAmenageur": {
        "code": "string",
        "createDate": "2022-07-20T09:19:49.062Z",
        "createUser": "string",
        "dateInactif": "2022-07-20T09:19:49.062Z",
        "id": 0,
        "libelle": "string"
      }
}

Je refait le parcours pour être précis :

  1. J'ouvre la liste déroulante (chargement des types aménageur via l'API)
  2. Je choisi un aménageur (on ajoute donc un aménageur dans la liste pour l'attribut "amenageurs")
  3. La liste déroulante affiche l'aménageur sélectionné
  4. Je ferme tabou
  5. J'ouvre tabou
  6. Je clic sur l'opération
  7. J'ouvre le bloc cadre
  8. Je vois le nom de l'aménageur sélectionné ==> Pas d'autres affichages, c'est une liste déroulante

Il y a une incohérence ici, le type liste ne peut afficher qu'un seul aménageur même si plusieurs sont sélectionnés.

Gaetanbrl commented 2 years ago

Idem pour :

Aménageur privé | Texte | Champ texte |   |   | /v2/operations | amenageurs.nom -- | -- | -- | -- | -- | -- | --

Je ne comprend pas. Est-ce un champ texte ou multi select qui est souhaité ?

dcottenc commented 2 years ago

... on voit : "amenageurs": [],

Corrigé

Pourquoi la valeur de "amenageurs" dans l'opération est donc une liste alors qu'on en pourra en afficher qu'un seul ?

Pour anticiper une future évolution des besoins de la MOA, la bdd et l'API sont prêtes. LE front sera modifié plus tard selon l'évolution des besoins.

Il y a une incohérence ici, le type liste ne peut afficher qu'un seul aménageur même si plusieurs sont sélectionnés.

Je n'ai pas compris

dcottenc commented 2 years ago

Je ne comprend pas. Est-ce un champ texte ou multi select qui est souhaité ?

Simple, on affiche le type et le libelle. Si le type aménageur nécessite un complément d'info alors l'utilisateur le saisi dans le libellé. Par exemple dans le cas d'un aménageur privé, on renseigne son nom dans libelle

Gaetanbrl commented 2 years ago

Simple, on affiche le type et le libelle. Si le type aménageur nécessite un complément d'info alors l'utilisateur le saisi dans le libellé. Par exemple dans le cas d'un aménageur privé, on renseigne son nom dans libelle

Ok mais de quel aménageur ?

Car là j'ai toujours une liste :

https://portail-test.sig.rennesmetropole.fr/tabou2/v2/operations/100

Retourne :

"amenageurs": [],

Gaetanbrl commented 2 years ago

Vu avec @dcottenc :

Amenageurs est bien une liste mais seul le premier élément est à utiliser (le type liste a été mis en place pour un usage potentiel / futur).

Lors du choix du type aménageur Ajouter un item en index 0 dans la liste "amenageur". Seul cet élément sera utilisé par le front pour le moment.

Lors de la modification du champ texte "Aménageur privé" Modifier le champ amenageurs[0].nom sans tenir compte du type de l'aménageur. Si l'aménageur est de type COMMUNE et non PRIVE alors on modifiera quand même le champ amenageurs[0].nom.

Gaetanbrl commented 2 years ago

@dcottenc PF à jour avec les derniers champs manquants (sauf erreur de ma part).

Il restera donc à fixer l'API pour la sauvegarde des champs amenageur, financement operation, acteur, actions, maitrise fonciere (et autres issues identiques oubliées dans ce commentaire mais saisie dans github) et à tester.

dcottenc commented 2 years ago

@dcottenc PF à jour avec les derniers champs manquants (sauf erreur de ma part).

C'est noté, je vais réceptionner ce ticket

dcottenc commented 2 years ago

Quelques remarques uniquement sur la mise en page :

Gaetanbrl commented 2 years ago

RAF => Bouton Référents (chargé op) à côté du champ

Gaetanbrl commented 2 years ago

image

Gaetanbrl commented 2 years ago

Dernies éléments pris en compte @dcottenc .

Prêt pour test.

dcottenc commented 2 years ago

Testée et validée en PF de Test par MOE

En attente validation par MOA