Open DDorch opened 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.
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.
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.
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' .
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
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.
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).