Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Configuration dynamique du frontend #2205

Closed
2 of 3 tasks
bouttier opened this issue Dec 12, 2022 · 2 comments
Closed
2 of 3 tasks

Configuration dynamique du frontend #2205

bouttier opened this issue Dec 12, 2022 · 2 comments

Comments

@bouttier
Copy link
Contributor

bouttier commented Dec 12, 2022

Le sujet a pu déjà être abordé dans d’autres issues, cette issue ce concentre sur ce problème précis (notamment #2088).

Actuellement, la configuration du frontend est constituée de fichiers typescript, généré à l’aide de la commande geonature, et qui nécessite leur ré-génération et rebuild du frontend à chaque modification.

Nous souhaitons pouvoir modifier la configuration sans rebuilder le frontend, ceci à la fois par praticité, ainsi que pour pouvoir fournir une image Docker du frontend générique directement prête à être utilisée.

L’idée est d’utiliser une configuration JSON en lieu et place de la configuration typescript actuel. Cette configuration JSON serait récupéré directement depuis le backend via son API. Le frontend devra tout de même conserver un fichier de configuration JSON local contenant l’URI de l’API.

Cette évolution a pas mal d’impact sur le code actuel : il ne faudra plus utiliser AppConfig mais un service en charge de récupérer la configuration depuis l’API (service qui s’exécutera au démarrage de l’application via APP_INITIALIZER). Ceci veut également dire que les attributs de classe ne pourront être initialisé statiquement à partir de la configuration ; ceci devra être fait dynamiquement dans la méthode ngOnInit.

Afin d’aller dans cette direction, nous voulons :

  • Mettre en place le service de récupération dynamique de la configuration.
  • Migrer progressivement le code frontend (GeoNature et modules externes) de AppConfig vers ce service dynamique.
  • Supprimer AppConfig et les commandes GeoNature de génération de la configuration frontend version.

Il n’est pas exclu qu’une version de GeoNature soit releasée avec le service de config dynamique, tout en maintenant la configuration statique, dans le but de se laisser assez de temps pour migrer le code existant.

@bouttier
Copy link
Contributor Author

La configuration dynamique a été mergé. Le code backend de génération de la config frontend statique reste présent afin d’assurer une rétro-compatibilité avec les modules qui l’utilise encore. La configuration statique sera définitivement supprimé dans GeoNature 2.13.

Pour migrer vos modules, il vous faut utiliser le ConfigService :

import { ConfigService } from '@geonature/services/config.service';
constructor(public config: ConfigService) {}
this.config.MODULE_CODE.PARAMETER_NAME

Voir pour exemple import ou export.

@camillemonchicourt
Copy link
Member

La suppression de l'ancien système de configuration AppConfig a été supprimé dans cette PR : #2748 pour être définitivement supprimé finalement dans la 2.14.

Il est nécessaire de bien mettre à jour les modules pour qu'ils ne l'utilisent plus.
Par exemple, malgré le nettoyage du module, il en restait un peu dans le module ZH - PnX-SI/gn_module_ZH@efd62ae

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

No branches or pull requests

2 participants