A partir de 4D v17, le contenu d’une collection multi-niveaux peut facilement être affiché dans différentes boîtes de liste. Cela signifie que vous pouvez lier plusieurs boîtes de liste pour afficher des détails imbriqués… sans une seule ligne de code! Pour ce faire, il suffit d’utiliser un objet ou une collection comme source de données pour une autre boîte de liste !
Avec le nouveau type de collection de boîtes de liste, les propriétés « Current item » et « Selected items » ont été ajoutées. Gardez à l’esprit que la propriété « Current item » vous permet d’obtenir un objet, tandis que la propriété « Selected item » renvoie une collection.
Prenons un exemple concret et voyons comment nous pouvons afficher les résultats d’une analyse de sang !
Qu’est-ce qu’il y a dedans ?
Au premier niveau, nous avons le nom du patient, la date de l’examen et le nom du médecin. Ensuite, les résultats sont classés par catégorie. Pour chaque catégorie, il y a une liste de tests avec la valeur du résultat, le min, le max, et l’unité.
En termes de structure de données, nous avons un objet avec des attributs de premier niveau(i.e. prénom, nom, etc.), ainsi qu’une collection d’objets catégories. Ensuite, pour chaque objet catégorie, nous avons une collection d’objets test. Pour résumer :
{ "lastname": "Beal", "firstname": "Estele", ..., "results": [{ "category": "Metabolic", "test": [ { "name": "Albumin", "value": ... }, { "name": ... }] }, { "category": "Lipoprotein", "test": [ { "name": "HDL", "value": ... }, { "name": ... }] }, {...}] }
Le schéma ci-dessous décrit comment les résultats sont affichés dans deux boîtes de liste à côté de la saisie des objets. Tout cela … sans une seule ligne de code ! En fait, toutes les propriétés sont définies dans les objets du formulaire, la seule partie où un peu de codage est nécessaire est lors du chargement du résultat. C’est tout, les amis ! ?
Comme vous pouvez le constater, cet exemple rend les résultats des tests sanguins plus faciles à lire et à comprendre, surtout lorsque les données incorrectes sont mises en évidence par une touche de couleur.
Pour ce faire, nous avons associé la méthode Decorate suivante à la méta-expression dans la propriété de la boîte de liste :
If (This.value>(This.max*2))
$0 :=Form.meta.doubleOutOfRange
Else
If ((This.value>This.max) | (This.value<This.min))
$0 :=Form.meta.outOfRange
Else
$0 :=Form.meta.perfectValue
End if
End if