DDorch / jacase

JAvascript CAlculators for Scientific Equations
http://hydraulique.g-eau.net/-Calculettes-pour-l-hydraulique-
MIT License
0 stars 0 forks source link

Gestion des erreurs de saisie #9

Open DDorch opened 8 years ago

DDorch commented 8 years ago

Il y a plusieurs tests de validations possibles en fonction des paramètres (La valeur est toujours requise, elle doit être numérique, positive (sauf certains cas), et parfois non nulle). Dans l'ancienne version, la variable saisies contenait les paramètres permettant de savoir quels tests appliquer à chaque paramètre. C'est cette solution qu'il faut réutiliser, éventuellement en reprenant la liste des tests possibles et en les codifiant différemment si ça peut aider à la compréhension.

Dans Angular2, la gestion des erreurs de saisie passe par le mécanisme des validators. Il existe des fonctions de validation prédéfinies et on peut définir ses propres fonctions (voir : http://blog.ng-book.com/the-ultimate-guide-to-forms-in-angular-2/#customvalidations).

Pour se faire, il faut importer les fonctionnalités "forms" d'angular (cf. https://angular.io/docs/ts/latest/guide/forms.html#bootstrap), et s'inspirer du template proposé dans le manuel d'Angular2 (cf. https://angular.io/docs/ts/latest/guide/forms.html#create-an-initial-html-form-template).

Le manuel officiel d'Angular2 propose aussi une façon élégante d'afficher la validité des champs (voir https://angular.io/docs/ts/latest/guide/forms.html#add-custom-css-for-visual-feedback) et l'affichage d'un message d'erreur pour chaque champ (https://angular.io/docs/ts/latest/guide/forms.html#show-and-hide-validation-error-messages).

DDorch commented 8 years ago

Avant de s'attaquer à implémenter de nouvelles calculettes, il serait bon de traiter cet issue qui fait partie du noyau de l'application et qui va conditionner le format des fichier calculette.config.json.

Dans l'ancien code, les contrôles de validité des champs s'effectuaient ici : http://zone.spip.org/trac/spip-zone/browser/_plugins_/hydraulic/trunk/hyd_inc/formulaire.abstract.class.php#L246

A priori, tous les champs sont numériques, il faut donc obligatoirement avoir un test qui vérifie cela systématiquement. J'ai vu un exemple de code qui force la champ numérique au moment de la frappe à l'aide d'un pipe : https://plnkr.co/edit/xCvnJ9682lV0Z1sBcK68?p=preview. Peut-être existe-t-il d'autres ressources sur le sujet.

Ensuite, il nous faut des tests supplémentaires pour certains champs qui devront être strictement positifs ou non nul. Il faut donc paramétrer ces champs à l'aide de leur description dans le fichier json. Je propose le format suivant :

Pour ces tests supplémentaires, plutôt que d'avoir un champ qui empêche par exemple de taper le signe moins, je préfère qu'il y ait un message d'erreur à l'écran pour que l'utilisateur comprenne son erreur.

manalaf commented 8 years ago

Je suis entrain de lire la doc. Après avoir implémenté ces fonctionnalités, je passerai à l'issue #4 puis l'integration des autres calculettes par la suite.

manalaf commented 8 years ago

J'ai eu du mal à faire marcher le pipe hier, quand le mettait les calculettes n'apparaissaient plus après le clic sur le menu et ça renvoyait aucune erreur sur la console. Pour l'instant, j'ai ajouter une fonction dans formulaire.ts qui gère les inputs. Elle bloque toute saisie sauf celle des nombres.

manalaf commented 8 years ago

Sur le code de controle du paramètre de precision du calcul uniforme, je retrouve 'fop'. Je ne sais pas à quoi renvoi le 'f'. Et serait-il possible de me dire les paramètres qui peuvent etre nuls (ie. p seulement) ? Je ne vois que des 'op' .

DDorch commented 8 years ago

Le code "f" n'est pas traité. Ce doit être une scorie d'une ancienne version.

Il y a au moins deux exemples de codes 'opn', ici : http://zone.spip.org/trac/spip-zone/browser/_plugins_/hydraulic/trunk/hyd_inc/form_section.abstract.class.php#L54

DDorch commented 8 years ago

J'ai l'impression que j'ai inversé ici la définition de 'n' par rapport à ce qu'il y avait dans l'ancienne version (cf. http://zone.spip.org/trac/spip-zone/browser/_plugins_/hydraulic/trunk/hyd_inc/formulaire.abstract.class.php#L17). Du coup, quasiment tous les champs se retrouveraient en 'opn'. Peut-être devrait-on adopter la définition de l'ancienne version : "n" ou "null" pour dire qu'on accepte les valeurs nulles.