Od verze 4D v17 lze obsah víceúrovňové kolekce snadno zobrazit v různých rámečcích seznamu. To znamená, že můžete svázat několik seznamových boxů a zobrazit vnořené detaily… bez jediného řádku kódu! Toho lze dosáhnout prostým použitím objektu nebo kolekce jako zdroje dat pro jiný box seznamu!
S novým typem kolekce seznam boxů byly přidány vlastnosti „Aktuální položka“ a „Vybrané položky „. Mějte na paměti, že vlastnost „Aktuální položka“ umožňuje získat objekt, zatímco vlastnost „Vybrané položky“ vrací kolekci.
Podívejme se na konkrétní příklad a uvidíme, jak můžeme zobrazit výsledky krevního testu!
Co je uvnitř?
Na první úrovni máme jméno pacienta, datum vyšetření a jméno lékaře. Dále jsou výsledky rozděleny podle kategorií. U každé kategorie je seznam vyšetření s hodnotou výsledku, minima, maxima a jednotky.
Z hlediska struktury dat máme k dispozici objekt s některými atributy první úrovně( tj. jméno, příjmení atd.) a také kolekci objektů kategorií. Pro každý objekt kategorie pak máme kolekci objektů testů. Abychom to shrnuli:
{ "lastname": "Beal", "firstname": "Estele", ..., "results": [{ "category": "Metabolic", "test": [ { "name": "Albumin", "value": ... }, { "name": ... }] }, { "category": "Lipoprotein", "test": [ { "name": "HDL", "value": ... }, { "name": ... }] }, {...}] }
Níže uvedené schéma popisuje, jak se výsledky zobrazují ve dvou seznamových polích vedle vstupních objektů. To vše … bez jediného řádku kódu! Ve skutečnosti jsou všechny vlastnosti definovány v objektech formuláře, jediná část, kde je potřeba nějaké kódování, je při načítání výsledku. To je vše, přátelé! ?
Jak vidíte, tento příklad usnadňuje čtení a pochopení výsledků krevních testů, zejména když jsou nesprávné údaje zvýrazněny barevným nádechem.
K tomu jsme přiřadili následující metodu Decorate s meta výrazem ve vlastnosti pole seznamu:
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