FormulaireCapture » Historique » Version 4
Jonathan Schaeffer, 20/07/2015 14:16
1 | 1 | Jonathan Schaeffer | h1. Formulaire de capture |
---|---|---|---|
2 | |||
3 | Cette documentation décrit les technologies et techniques employées pour construire le formulaire de captures |
||
4 | |||
5 | h2. Sélection des champs en fonction des choix précédents |
||
6 | |||
7 | Le formulaire de capture commence par une série de choix proposés à l'utilisateur. Chaque réponse conditionne les choix suivants. |
||
8 | |||
9 | Pour plus de fluidité, on reste toujours sur une seule page web et on veut un minimum de clics. |
||
10 | |||
11 | h3. Principe |
||
12 | |||
13 | On fait de l'unobstrusive javascript. |
||
14 | |||
15 | Chaque événement de changement sur un objet de sélection déclenche une requête au serveur pour calculer la liste des choix dans l'élément suivant. |
||
16 | |||
17 | Un élément du HTML a un identifiant (par exemple @capture_theme_id option@) qui est utilisé par un code javascript pour peupler les choix listés dans cet élément. |
||
18 | |||
19 | 4 | Jonathan Schaeffer | Le serveur route cette requête auprès du contrôleur qui déclenche le calcul d'une vue javascript qui sera a |
20 | 1 | Jonathan Schaeffer | |
21 | h3. Mise en oeuvre |
||
22 | |||
23 | 2 | Jonathan Schaeffer | Les fonctions AJAX sont écrites dans le fichier source:/app/assets/javascripts/captures.js.coffee |
24 | 1 | Jonathan Schaeffer | |
25 | 3 | Jonathan Schaeffer | Un changement @.on 'change'@ sur un élément déclenche une requête @GET@ au format javascript (@.js@) avec l'option @theme_id@ positionnée à la valeur sélectionnée. |
26 | |||
27 | 4 | Jonathan Schaeffer | Dans le controleur de capture source:/app/controllers/captures_controller.rb la fonction update_points permet de donner un retour aux requêtes JS. Cette fonction prépare une liste de points et déclenche la vue liée source:/app/views/captures/update_point.js.coffee |
28 | 3 | Jonathan Schaeffer | |
29 | Dans cette vue, le code remplace toutes les options de l'élément select @#capture_point_id@ par les noms des objets que lui a transmis le controlleur. |
||
30 | 1 | Jonathan Schaeffer | |
31 | h2. Responsive : rendu du formulaire pour des supports smartphone/tablette |