# Projet de pour le GIREF (Groupe Interdisciplinaire de Recherche en Éléments Finis de l’Université Laval)
## Création d'interface automatique par modeles de schemas .json
#### Date début:
#### Date fin:
## Coûts total:
**300** heures
## Sommaire:
Dans le but d'interagir avec le serveur de simulation du **GIREF**, une application web est prototypé. Une partie importante de cette application est de créer un formulaire basé sur la lecture de schémas json pour représenter les nombreux paramètres de chaque simulation possibles. De plus, un arbre représentant les différents objets du schéma doit être créé au même moment et pouvoir interagir de façon réactive. Cela doit inclure une grande flexibilité pour les évènements d'interaction, le format et les types de données. De plus, les schémas contiennent des structures conditionnelles et référentielles. Une fois les données formaté, elles sont converties dans un format propriétaire du **GIREF** et envoyé au serveur pour être simulé. Les interfaces générées par schémas doivent être créés du côté ***front-end*** exclusivement.
## Incertitudes technologiques:
La possibilité d'utiliser une librairie javascript a été exploré pour créer les interfaces graphiques, mais à soulevé de nombreuse questions.
- Une librairie n'incluent pas non plus la partie arbre hiérarchisé interactive. Est-il possible de se brancher dans la librairie de manière à recevoir des évènements au moment de la création des interfaces graphiques?
- Les proprités conditionelles imbriqués fonctionne t'elle ?
- Est-ce que la librairie peut fonctionner exclusivement du côté ***front-end*** ?
## Surmonter les incertitudes:
### Hypothèse 1
La librairie JsonForm serait suffisantes pour les besoins du GIREF. Cette librairie semble le candidat idéal.
### Problèmes avec l'hypothèse 1.
- JsonForm dépend de react, react-Material et de webpack. Son intégration complexifie le processus de transpilation et de compilation.
- Les interfaces ne sont créé qu'au moment de la compilation et non dynamiquement.
- Bien qu'il y ait un évènement pour les changements de valeurs des controles, il n'y a pas d'évènement au moment de la création qui permettrait de connecter l'arbre hiérarchique.
- Un schéma pour l'affichage ***ui-schema*** supplémentaire doit être fournis pour chaque schéma dans le but de contrôler l'affichage.
### Hypothèse 2
La librairie react-jsonschema-form est plus complète et devrait suffire pour le projet.
### Problèmes avec l'hypothèse 2.
- Comme pour JsonForm, react-jsonSchema-form dépend de react, react-Material et de webpack. Son intégration complexifie le processus de transpilation et de compilation.
- Comme pour JsonForm, un schéma pour l'affichage ***ui-schema*** supplémentaire doit être fournis pour chaque schéma dans le but de contrôler l'affichage.
- Les interfaces ne sont créés qu'au moment de la compilation et non dynamiquement.
##### Les résultats n'étaient pas concluent dans le sens où ils ne répondent pas à toutes les contraintes du projet en plus d'ajouter des problèmes supplémentaires.
### Hypothèse 3
Il sera possible de créer la librairie de lecture de schéma et supporter touts les besoins spécifique du projet.
### Problèmes avec l'hypothèse 3.
- Le temps de développement est imprévisible.
- Les schémas du client contiennent des références de type ***address***, ***définitions de shéma*** et ***références circulaire*** qui risque d'être un autre problème.
### Surmonter les problèmes de l'hypothèse 3
- Les temps de développement ont été assumés par catalyst studio.
- Une librairie appelée ***json-schema-ref-parser*** a été trouvé et permet de régler les problèmes liés aux formats des schémas.
## Avancement technologiques:
- Librairie de lecture de schéma javascript fonctionnant du côté ***front-end*** avec de nombreuse fonctionnalitées.
## Résultas du projet:
- Le projet a été livré et répond au exigeances du client.