Le module personnesLors des précédentes leçons, nous avons étudié les différents constituants d'un module, élément par élément. Pour cela, nous avons proposé des version simplifiées de constituants du module organisations. Dans cette leçon, nous allons présenter le module personnes complet. Nous choisissons de commencer par le module personnes, parce que la version complète du module organisations fait appel à certains éléments du module personne. Voici le module personnes complet, prêt à l'emploi. Commencez par le copier coller sur votre site Storga d'expérimentation : Entrez ensuite dans la sous page du module, puis pensez à faire afficher l'ensemble des blocs en cliquant sur 🔧 en haut à gauche. Voyons maintenant ce que contient ce module. Le formulaire de rechercheIl s'agit d'un formulaire applet, comme nous en avions vu un lors de la leçon 'Créer de multiples fiches : un formulaire de création'. Cependant, il est beaucoup plus simple, parce qu'il contient un seul champ et pas de programme. Si l'on affiche les propriété de cet unique champ, on découvre : La ligne 'Type de champ' nous indique qu'il s'agit d'un champ de type 'Référence'. Le type 'Référence' dispose de trois propriétés très pratiques :
Le formulaire de créationCe formulaire a la même architecture générale que celui que celui que nous avions étudié lors de la leçon 'Créer de multiples fiches : un formulaire de création'. Etudions maintenant ce qui change au niveau du programme : if button_name="person_changed" Commençons par les deux premières lignes : if button_name="person_changed" Si vous affichez les propriétés d'un des trois champs 'Prénom', 'Nom' ou 'Supplément', vous constaterez que la ligne 'Bouton virtuel' est renseignée à 'button_changed'. Cela signifie que si la valeur du champ est modifiée, Storga génère automatiquement un appuie sur un bouton virtuel dont le code est 'button_changed', donc exécute ce programme, et la condition de la première ligne est satisfaite, ce qui conduit à exécuter la seconde ligne qui positionne le champ 'person_message'. Au niveau de cette seconde ligne, l'instruction 'shunt' se lit si ... alors ... sinon si ... alors ... sinon si ... alors ... sinon. Ici, cela donne : si le champ 'name' est vide, alors on met la chaîne vide dans 'person_message', sinon si on trouve (shunt first_name<>"" first_name+" " "")+name+(shunt extra<>"" " "+extra "") dans la colonne 'fullname' de l'état listant les personnes alors on met ✘ dans 'person_message' pour indiquer que la fiche existe déjà, sinon on y met ✔ pour indiquer que la fiche n'existe pas. Voyons maintenant plus en détail l'expression : (shunt first_name<>"" first_name+" " "")+name+(shunt extra<>"" " "+extra "") Elle vise à concaténer les trois champs 'first_name', 'name' et 'extra' qui forment un nom complet, en insérant les espaces nécessaires. En effet, si on avait simplement écrit : first_name+name+extra alors le résultat pour le prénom 'Jean' et le nom 'Dupond' avec un champ 'extra' vide serait 'JeanDupont' alors que l'on souhaite 'Jean Dupont' avec un espace entre 'Jean' et 'Dupond'. De la même manière, si l'on avait écrit : first_name+" "+name+" "+extra alors le résultat serait 'Jean Dupond ' avec un espace en trop à la fin. Le reste du programme présente à nouveau le même type de modification par rapport à la version étudiée dans la leçon 'Créer de multiples fiches : un formulaire de création'. La liste des personnesCet état présente plusieurs différences (complications) par rapport à l'état de la liste des organisations que nous avions étudié lors de la leçon 'Un premier état'. Tout d'abord, au niveau de l'onglet 'Spec. collecte' de la définition du formulaire, la ligne 'Nom du champ à utiliser pour trouver les différentes lignes' est positionnée à 'organisation'. En remplissant ce champ au niveau de la définition de l'état, on indique qu'une fiche Stroga peut générer plusieurs lignes dans l'état. Cela suppose que le nom de champ fourni corresponde à l'une des colonnes d'une sous table de la fiche. Dans ce cas, un ligne du formulaire sera générée pour chaque ligne de la sous table. Au niveau de l'onglet 'Champs' maintenant, on constate la présence d'un champ 'full_name' calculé à la collecte. La formule d'un champ calculé à la collecte est évaluée au moment où la fiche est scannée, et son résultat est stocké dans l'état. Aussi, cette formule peut faire appel à tous les champs de la fiche scannée, pas seulement ceux collectés dans l'état. A l'inverse, la formule d'un champ calculé à l'affichage est évaluée à chaque affichage de l'état, et donc ne peut faire appel qu'aux champs collectés dans l'état. Dans le cas présent, la formule est : (shunt first_name<>"" first_name+" " "")+name+(shunt extra<>"" " "+extra "") c'est à dire la même chose que ce que nous venons de voir au niveau du programme de création d'un formulaire, à savoir la concaténation du prénon, du nom et du supplément de nom, en séparant si nécessaire ces différents éléments par des espaces. Au niveau de l'onglet, on a utilisé une formule de tri pour pouvoir trier sur plusieurs champs, mais on a aussi et surtout utilisé une formule de groupage. La formule de groupage calcule une valeur pour chaque ligne de l'état, puis n'affiche qu'une seule ligne quand plusieurs lignes successives de l'état ont la même valeur de groupage. La fiche modèle des personnesPar rapport à ce que nous avions vu dans la leçon 'Une seconde fiche contenant une sous table', la fiche modèle de personne contient deux éléments supplémentaires : Le champ 'Catégories' sert à inscrire un ensemble de mots clés pour indiquer l'appartenance de la personne à différents sous groupes. Ce peut être 'famille', 'ami', ou n'importe quoi d'autre, et cela permet de filtrer au niveau de l'état affichage la liste des personnes. Cela fait légèrement double emploi avec l'appartenance d'une personne à une organisation. Ensuite, la ligne 'Extension de la fiche personne ... Ajouter' est plus puissante et complexe. Elle permet d'ajouter des renseignements à la fiche personne, via l'ajout de sous formulaires. La liste des sous formulaires est visible dans la page 'La mécanique de gestion des extensions pour les fiches personnes' du module personnes. Travaux pratiques
|