Download as pdf or txt
Download as pdf or txt
You are on page 1of 55

FAKULTA INFORMATIKY

Vybrané komponenty platformy


A.D.A.P.T.

Bakalárska práca

RADOSLAV BEŇA

Brno, jar 2022


FAKULTA INFORMATIKY

Vybrané komponenty platformy


A.D.A.P.T.

Bakalárska práca

RADOSLAV BEŇA

Vedúci práce: Mgr. Adriana Strejčková

Brno, jar 2022


Vyhlásenie

Vyhlasujem, že táto bakalárska práca je mojím pôvodným autorským


dielom, ktoré som vypracoval samostatne. Všetky zdroje, pramene
a literatúru, ktoré som pri vypracovaní používal alebo z nich čerpal,
v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj.

Radoslav Beňa

Vedúci práce: Mgr. Adriana Strejčková

iii
Poďakovanie

Ďakujem vedúcej mojej bakalárskej práce Mgr. Adriane Strejčkovej za


pomoc pri vypracovaní práce a množstvo času stráveného pri konzul-
táciách.

iv
Zhrnutie

Pri výrobe ochranných pomôcok je dôležité zohľadniť rozmerovú


a tvarovú rozmanitosť ľudského tela. Cieľom projektu Ministerstva
vnútra ČR A.D.A.P.T. – Antropologická Databáza Proporcií Tela je zber
telesných morfologických dát českej populácie. Súčasťou projektu je
webová aplikácia, ktorá slúži na ukladanie a spracovanie týchto dát.
Táto práca sa zaoberá implementáciou vybraných častí aplikácie:
modulu na filtrovanie dát na základe demografických parametrov,
štatistického modulu slúžiaceho na rôzne štatistické analýzy dát a mo-
dulu na administráciu autorizácie, v ktorom správca nastavuje opráv-
nenia a kontroluje prístup k citlivým dátam.

Kľúčové slová

štatistika, filtrovanie, C#, Blazor, webová aplikácia

v
Obsah

Úvod 1

1 Špecifikácia aplikácie 2
1.1 Filtračný modul . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.1 Kritériá výberu . . . . . . . . . . . . . . . . . . . 2
1.2 3D modul . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Panel projektov . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Štatistický modul . . . . . . . . . . . . . . . . . . . . . . 3
1.4.1 Popisná štatistika . . . . . . . . . . . . . . . . . . 4
1.4.2 Korelácia . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.3 Lineárna regresia . . . . . . . . . . . . . . . . . . 6
1.4.4 Kontingenčná tabuľka . . . . . . . . . . . . . . . 6
1.4.5 Dvojvýberové a párové testy . . . . . . . . . . . 7
1.5 Administrátorský modul . . . . . . . . . . . . . . . . . . 7
1.5.1 Modul na administráciu autorizácie . . . . . . . 7

2 Použité technológie 9
2.1 Blazor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Blazor Web Assembly . . . . . . . . . . . . . . . 9
2.1.2 Blazor server-side . . . . . . . . . . . . . . . . . . 9
2.1.3 Vkladanie závislostí . . . . . . . . . . . . . . . . 10
2.2 MudBlazor . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Accord.NET . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Math.NET Numerics . . . . . . . . . . . . . . . . . . . . 11
2.5 PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6 Plotly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3 Návrh aplikácie ako celku 13


3.1 Navigácia . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Databáza . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4 Filtračný modul 16
4.1 Analýza požiadaviek . . . . . . . . . . . . . . . . . . . . 16
4.2 Návrh používateľského rozhrania . . . . . . . . . . . . . 16
4.3 Implementácia . . . . . . . . . . . . . . . . . . . . . . . . 17

vi
4.3.1 Výber parametrov . . . . . . . . . . . . . . . . . 17
4.3.2 Vyfiltrované dáta . . . . . . . . . . . . . . . . . . 20
4.3.3 Komunikácia s databázou . . . . . . . . . . . . . 21
4.3.4 Lokalizácia . . . . . . . . . . . . . . . . . . . . . 22

5 Štatistický modul 24
5.1 Analýza požiadaviek . . . . . . . . . . . . . . . . . . . . 24
5.2 Návrh používateľského rozhrania . . . . . . . . . . . . . 24
5.3 Implementácia . . . . . . . . . . . . . . . . . . . . . . . . 24
5.3.1 Ovládanie modulu . . . . . . . . . . . . . . . . . 25
5.3.2 Popisná štatistika . . . . . . . . . . . . . . . . . . 27
5.3.3 Vzťahy viacerých premenných . . . . . . . . . . 30
5.3.4 Jednorozmerná štatistika . . . . . . . . . . . . . 34
5.3.5 Komunikácia s databázou . . . . . . . . . . . . . 36
5.3.6 Lokalizácia . . . . . . . . . . . . . . . . . . . . . 37

6 Modul na administráciu autorizácie 38


6.1 Nastavovanie oprávnení . . . . . . . . . . . . . . . . . . 38
6.2 Spravovanie skupín . . . . . . . . . . . . . . . . . . . . . 40
6.3 Komunikácia s databázou . . . . . . . . . . . . . . . . . 40

7 Testovanie 42

8 Záver 43

Bibliografia 44

A Prílohy 45

vii
Zoznam tabuliek

1.1 Príklad kontingenčnej tabuľky . . . . . . . . . . . . . . . . 6


1.2 Autorizačná tabuľka – prístup k dátam . . . . . . . . . . . 8
1.3 Autorizačná tabuľka – oprávnenia k operáciám . . . . . . 8

viii
Zoznam obrázkov

1.1 Krabicový graf . . . . . . . . . . . . . . . . . . . . . . . . . 5


2.1 Blazor Server-side model [5] . . . . . . . . . . . . . . . . . 10
3.1 Navigácia aplikácie . . . . . . . . . . . . . . . . . . . . . . 13
4.1 Filtračný formulár (ľavý stĺpec) . . . . . . . . . . . . . . . 18
4.2 Filtračný formulár (pravý stĺpec) . . . . . . . . . . . . . . 18
4.3 Príklad rozbaľovacej ponuky . . . . . . . . . . . . . . . . . 19
4.4 Textová reprezentácia vybraných hodnôt . . . . . . . . . . 20
4.5 Zobrazenie vyfiltrovaných dát . . . . . . . . . . . . . . . . 21
5.1 Návrh grafického rozhrania štatistického modulu . . . . . 25
5.2 Štatistický modul . . . . . . . . . . . . . . . . . . . . . . . 26
5.3 Tabuľka popisnej štatistiky . . . . . . . . . . . . . . . . . . 28
5.4 Tabuľka percentilov . . . . . . . . . . . . . . . . . . . . . . 28
5.5 Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.6 Krabicový graf . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.7 Vzťahy viacerých premenných – výber operácií . . . . . . 31
5.8 Bodový graf . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.9 Výstup lineárnej regresie . . . . . . . . . . . . . . . . . . . 33
5.10 Nepárové testy – výber premenných . . . . . . . . . . . . 34
5.11 Výstup T-testu . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.12 ANOVA test – výber premenných . . . . . . . . . . . . . . 35
6.1 Modul na administráciu autorizácie (ľavý stĺpec) . . . . . 39
6.2 Modul na administráciu autorizácie (pravý stĺpec) . . . . 39

ix
Úvod

Zbieranie telesných morfologických znakov populácie je podstatné


pre dizajn a výrobu produktov, napríklad ochranných pomôcok. Pri
výrobe takýchto pomôcok je dôležitá rozmerová a tvarová rozmanitosť
ľudského tela. Cieľom projektu Ministerstva vnútra ČR A.D.A.P.T. –
Antropologická Databáza Proporcií Tela (ďalej už len ADAPT) je zber
a spracovanie takýchto dát. Súčasťou projektu je vývoj webovej apliká-
cie, ktorý realizuje Ústav výpočetní techniky Masarykovy univerzity.
Aplikácia umožňuje prácu s dátami získanými vyšetrením tiel
dobrovoľníkov. Dáta obsahujú 3D fotogrametrické záznamy ľudskej
postavy a rôzne rozmery ľudského tela, napríklad výšku, šírku ramien
či obvod predlaktia v kontrakcii.
Cieľom mojej bakalárskej práce je do aplikácie implementovať fil-
tračný modul, štatistický modul a modul na administráciu autorizácie.
Filtračný modul slúži na filtrovanie dát na základe demografických
parametrov, typu stavby tela a profesijného zamerania. Vyfiltrované
dáta sa analyzujú pomocou štatistického modulu alebo 3D modulu.
V module na administráciu autorizácie správcovia aplikácie udeľujú
používateľom oprávnenia a nastavujú citlivosť dát.
Bakalárska práca sa skladá zo siedmich kapitol. V prvej kapitole sú
opísané jednotlivé moduly, ktoré tvoria celú aplikáciu. Druhá kapitola
obsahuje zoznam použitých technológií. V tretej kapitole je opísaný
návrh aplikácie. Štvrtá kapitola vysvetľuje postup vývoja filtračného
modulu, piata štatistického modulu a šiesta modulu na administráciu
autorizácie. V siedmej kapitole je opísaný postup a výsledky testovania
aplikácie.

1
1 Špecifikácia aplikácie

Aplikáciu ADAPT tvoria tri hlavné moduly: 3D modul, štatistický


modul, filtračný modul a dva vedľajšie moduly: modul pre správcu
aplikácie a modul pre používateľov na správu svojich projektov. Jed-
notlivé moduly spolu súvisia, komunikujú a odovzdávajú si medzi
sebou dáta.
Dôležité sú pojmy proband a séria. Proband je osoba, ktorá sa dob-
rovoľne prihlási na vyšetrenie antropometrickými metódami. Dáta
z tohto vyšetrenia sú uložené v rámci aplikácie ADAPT. Osoba môže
podstúpiť viacero vyšetrení v rôznych časových intervaloch. Séria
obsahuje dáta z rôznych typov vyšetrení. Dáta tvoria údaje o mor-
fologických znakoch probanda, záznam o type zamestnania, 3D fo-
togrametrické záznamy tela a ďalšie údaje. Opakovaním rovnakých
vyšetrení s dlhším časovým odstupom vznikne nová séria. Na jedného
probanda sa môže viazať viacero sérií.

1.1 Filtračný modul

Pomocou filtračného modulu si používateľ vytriedi série spolu s pro-


bandmi na základe špecifických kritérií podľa svojej potreby. Tieto dáta
skúma v 3D module a štatistickom module, následne si ich môže ulo-
žiť ako jeden projekt, ktorý obsahuje len vybrané dáta, a kedykoľvek
s nimi ďalej pracovať.

1.1.1 Kritériá výberu

Hlavnou požiadavkou na tento modul bol výber na základe niekoľ-


kých parametrov, ktoré opisujem v tejto časti:
• pohlavie – muž, žena, nebinárny

• národnosť

• dátum narodenia

• vek – v deň konania vyšetrenia

• kategória zamestnania – sedavé, nesedavé

2
1. Špecifikácia aplikácie

• konkrétne zamestnanie
• typ skenu
• identifikátor probanda
• morfologické znaky – váha, výška, šírka ramien a približne šty-
ridsať ďalších mier podľa normy ISO 7250-1

1.2 3D modul

V rámci 3D modulu používateľ pracuje s 3D modelom osoby v interak-


tívnom prostredí. Prostredie mu umožňuje bližšie skúmať sken osoby,
definovať vlastné miery, prevádzať rôzne merania, rezy a iné operácie.
V 3D module si používateľ vyberá, či si chce niektoré vyfiltrované
dáta uložiť ako projekt s konkrétnym názvom a popisom. Modul nie
je predmetom tejto bakalárskej práce.

1.3 Panel projektov

V tejto časti sa používateľovi zobrazujú jeho uložené projekty, ktoré


si môže jednoducho načítať a pracovať s nimi aj bez použitia filtrač-
ného modulu. Panel zároveň slúži na správu projektov, napríklad
úpravu názvu alebo odstránenie projektu. Modul nie je predmetom
bakalárskej práce.

1.4 Štatistický modul

Ťažiskom bakalárskej práce je štatistický modul, ktorý slúži na rôzne


štatistické analýzy a vizualizáciu dát. V prípade projektu ADAPT pat-
ria medzi tieto dáta kvalitatívne aj kvantitatívne znaky. Medzi kvanti-
tatívne znaky patria telesné miery podľa štandardu ISO. Kvalitatívne
znaky sú pohlavie, typ zamestnania, veková kategória a národnosť.
Existujú štatistické programy, ktoré sú voľne dostupné a poskytujú
rozsiahle dátové analýzy. Jedným z takýchto programov je program
PAST1 , ktorý v tejto práci slúžil ako inšpirácia. Taktiež sú dostupné on-

1. https://past.en.lo4d.com/windows

3
1. Špecifikácia aplikácie

line nástroje, ktoré poskytujú potrebnú funkcionalitu. Jedným z nich


je napríklad Social Science Statistics2 , ktorý bol použitý ako testo-
vací nástroj. Tieto nástroje by používateľ mohol využiť na štatistickú
analýzu dát, ak by si mohol dáta z aplikácie stiahnuť. Kvôli ochrane
osobných údajov a vedeckých dát však nie je používateľom umožnené
exportovať si dáta, a preto je štatistický modul dôležitou súčasťou
aplikácie.
V štatistickom module je k dispozícii viacero typov analýz, ktoré
zjednodušene opisujem v tejto kapitole. Na základe týchto analýz
používateľ zistí hodnoty potrebné pre výrobu pomôcky, napríklad
priemernú výšku istej časti populácie. Môže taktiež skúmať vzťahy
medzi rôznymi telesnými mierami alebo napríklad určiť probanda,
ktorý svojimi vlastnosťami vyčnieva zo súboru. Podľa analýz môže
dospieť aj k záveru, že nevybral vhodnú vzorku probandov a potrebuje
zmeniť parametre výberu vo filtračnom module.

1.4.1 Popisná štatistika

Popisná štatistika opisuje hlavné vlastnosti súboru dát [1, s. 4]. Použí-
vateľovi poskytuje základný obraz o dátach, s ktorými pracuje v 3D
module.
Štatistický modul umožňuje výpočet vlastností kvantitatívnych
znakov, konkrétne ide o tieto funkcie:
• aritmetický priemer
• medián, modus
• smerodajná odchýlka
• percentilové rozpätie, hodnota konkrétneho percentilu
• minimum, maximum
• variačný koeficient
• šikmosť, špičatosť
• test normality

2. https://www.socscistatistics.com

4
1. Špecifikácia aplikácie

Dôležitým prvkom popisnej štatistiky sú grafy. Súčasťou modulu je


histogram (graf početností) a krabicový graf. Krabicový graf zobra-
zuje dáta pomocou kvartilov. Hlavné parametre sú prvý kvartil, druhý
kvartil (medián) a tretí kvartil. Krabicový diagram ešte zobrazuje mi-
nimum, maximum a odľahlé hodnoty, teda hodnoty, ktoré sa výrazne
líšia od ostatných hodnôt v súbore [2]. Krabicový graf je znázornený
na obrázku 1.1.
K analýze kvalitatívnych znakov (kategórií) patrí modus a počty
v jednotlivých kategóriách. Používateľ si môže dáta rozdeliť podľa
jednotlivých kategórií a nechať vypočítať štatistiky samostatne pre
mužov a ženy.

Obr. 1.1: Krabicový graf

1.4.2 Korelácia

Základným parametrom, ktorý opisuje vzťah dvoch premenných, je


korelácia. Korelácia nadobúda hodnoty medzi −1 a 1, hodnota bližšia
−1 naznačuje nepriamu úmeru a hodnota bližšie 1 znamená priamo
úmernú závislosť. Nulová hodnota korelácie znamená nezávislosť
premenných [1, s. 33].
Súčasťou požiadaviek je výpočet dvoch korelačných koeficientov,
ktoré umožňujú používateľovi zistiť mieru závislosti dvoch premen-
ných.

5
1. Špecifikácia aplikácie

Najpoužívanejší koeficient určujúci mieru korelácie je Pearsonov


korelačný koeficient. Pearsonov korelačný koeficient opisuje lineárnu
závislosť dvoch premenných. Naopak Spearmanov korelačný koefi-
cient opisuje aj monotónnu závislosť, ktorá nemusí byť lineárna [1,
s. 33–34].

1.4.3 Lineárna regresia

Ak používateľ pri korelácii zistí istú mieru závislosti, často je dôležité


určiť, o aký typ závislosti ide. Pomocou lineárnej regresie je možné
zistiť presný predpis funkcie danej závislosti, a teda či ide o lineárnu
závislosť alebo inú monotónnu závislosť [1, s. 37]. Predpis funkcie
umožňuje predpovedať hodnoty jednej premennej na základe hodnôt
iných premenných.
Štatistický modul poskytuje výpočet dvoch typov lineárnej regre-
sie – viacnásobnú a jednoduchú lineárnu regresiu. Viacnásobná regre-
sia opisuje vzťah jednej premennej k viacerým premenným, jednodu-
chá regresia opisuje vzťah dvoch premenných medzi sebou.

1.4.4 Kontingenčná tabuľka

Kontingenčná tabuľka slúži na reprezentáciu kategorických dát. Zo-


brazuje početnosti v konkrétnych podkategóriách. V aplikácii ADAPT
existuje viacero kategórií: národnosť, veková kategória, pohlavie a typ
zamestnania. Napríklad ak by používateľ chcel zistiť zastúpenie mužov
a žien v jednotlivých národnostiach, výstupom by bola tabuľka 1.1.
Pri kontingenčnej tabuľke je dôležitý test dobrej zhody, ktorý testuje,
či sa napočítané hodnoty v tabuľke zhodujú s predpokladanými hod-
notami [1, s. 40]. Najpoužívanejší je test chí-kvadrát, ktorý je použitý
aj v tomto module.

Tabuľka 1.1: Príklad kontingenčnej tabuľky

Slovenská Česká Nemecká Súčet


Muž 10 6 9 25
Žena 5 7 6 18
Súčet 15 13 15 43

6
1. Špecifikácia aplikácie

1.4.5 Dvojvýberové a párové testy

Dvojvýberové a párové testy umožňujú porovnávať dve skupiny ná-


hodných premenných. Ak sú premenné nezávislé, používa sa dvojvý-
berový nepárový test, pre závislé premenné sa používa párový test [1,
s. 22]. Pomocou dvojvýberového testu používatelia porovnávajú jednu
premennú rozdelenú podľa kategórie, napr. výšku mužov s výškou
žien. Pri párovom teste porovnávajú dve premenné, napr. dĺžku pravej
ruky a dĺžku ľavej ruky.
V štatistickom module sú k dispozícii tri dvojvýberové testy: F-test
rovnosti rozptylov, Studentov dvojvýberový T-test a Mann-Whitneyho
test. Na analýzu viac ako dvoch štatistických súborov sa používa
ANOVA test. Ako párový test som použil Wilcoxonov párový test.
Nasledujúce testy sú podrobnejšie opísané v tomto zdroji [3].
Mann-Whitneyho test je nepárový test, ktorý porovnáva dva rôzne
súbory dát. Testuje, či sú súbory rovnaké, alebo jeden zo súborov
nadobúda väčšie hodnoty.
F-test rovnosti rozptylov je nepárový test, ktorý zisťuje, či sa rov-
najú rozptyly dvoch rôznych súborov.
Studentov nepárový T-test porovnáva taktiež dva rôzne súbory.
Testuje rovnosť stredných hodnôt.
ANOVA test porovnáva stredné hodnoty viacerých nezávislých
súborov.
Wilcoxonov párový test porovnáva dve merania v rámci jedného
súboru. Testuje rovnosť distribučných funkcií týchto súborov.

1.5 Administrátorský modul

Prostredníctvom tohto modulu môže používateľ importovať nových


probandov so sériami, upravovať lokalizáciu, obnoviť zmazané pro-
jekty a spravovať autorizáciu. Implementácia modulu na spravovanie
autorizácie je súčasťou bakalárskej práce.

1.5.1 Modul na administráciu autorizácie

Modul slúži na nastavenie úrovne oprávnenia používateľovi a kla-


sifikáciu probandov. Umožňuje vytvárať skupiny, pridávať do nich
používateľov a probandov.

7
1. Špecifikácia aplikácie

V aplikácii sa pracuje s citlivými dátami, preto sa v aplikácii obme-


dzuje prístup k dátam a operáciám s nimi. Autentizácia v aplikácii je
zabezpečená pomocou jednotného prihlásenia MUNI.
Používatelia môžu mať jednu zo štyroch úrovní oprávnení. Klasi-
fikácia probandov je reprezentovaná príznakmi. Tabuľka 1.3 zobra-
zuje oprávnenia k operáciám s dátami a používateľmi. Tabuľka 1.2
zobrazuje oprávnenie prístupu k probandom podľa ich klasifikácie
a oprávnení používateľa. Probandi s príznakom average su dostupní
všetkým používateľom. Ak má proband príznak protected, umožnenie
prístupu záleží na oprávnení používateľa. V prípade, že má použí-
vateľ úroveň Group policy, kontroluje sa, či je proband a používateľ
v rovnakej skupine. Skupiny nie sú preddefinované, môže ich vytvárať
používateľ, ktorý na to má oprávnenie.

Tabuľka 1.2: Autorizačná tabuľka – prístup k dátam

Úroveň oprávnenia Prístup k dátam (probandi)


average protected
Promo X X
Group policy X skupinová politika
Data upload X X
Admin X X

Tabuľka 1.3: Autorizačná tabuľka – oprávnenia k operáciám

Úroveň oprávnenia Oprávnenie k operáciám


upload delete accounts download
Promo X X X X
Group policy X X X X
Data upload X X X X
Admin X X X X

8
2 Použité technológie

Ako programovací jazyk bol zvolený objektovo orientovaný jazyk


C#. V nasledujúcej kapitole sú stručne opísané ďalšie technológie
využívané pri vývoji jednotlivých modulov.

2.1 Blazor

Blazor je webový framework, vyvíjaný spoločnosťou Microsoft, s ot-


voreným zdrojovým kódom. Slúži na vývoj webových aplikácii s po-
užitím programovacieho jazyka C# a značkovacieho jazyka HTML
spojeného s CSS štýlmi. Umožňuje zdielať knižnice a kód medzi ser-
verom a klientom. Blazor poskytuje dva hostovacie modely webovej
aplikácie [4, 5].

2.1.1 Blazor Web Assembly

Pri tomto type beží celá aplikácia na strane klienta, v prehliadači.


Výhodou je, že takáto aplikácia funguje v off-line režime, až na ko-
munikáciu so serverom, a teda získavanie dát.
Nevýhodou je, že pri prvom spustení aplikácie sa všetky potrebné
knižnice musia stiahnuť, čo spomaľuje štart aplikácie. Celkovo je beh
aplikácie pomalší, k čomu prispieva podpora využitia len jedného
vlákna [6].

2.1.2 Blazor server-side

Pre platformu ADAPT bol zvolený Blazor server-side model, ktorý


predtým ako pošle obsah do klientskeho prehliadača ho predrenderuje.
Čo znamená, že veľká časť kódu sa nevykonáva na strane klienta, ale
na strane servera a na komunikáciu sa používa SignalR, komunikáciu
znázorňuje obrázok 2.1.
Nevýhodou môže byť preťaženie servera, ktorý poskytuje svoje
zdroje všetkým používateľom naraz, preto je dôležité mať dostatočne
výkonný server [6].

9
2. Použité technológie

2.1.3 Vkladanie závislostí

Vkladanie závislostí, známejšie ako Dependency injection, poskytuje


rôznym častiam aplikácie prístup k službám, nakonfigurovaným pri
spustení aplikácie. Medzi ne patria preddefinované služby ako naprí-
klad HttpClient1 . Blazor aplikácie umožňujú aj definovanie vlastných
služieb, ktoré su ďalej dostupné pre celú aplikáciu [7].

Obr. 2.1: Blazor Server-side model [5]

2.2 MudBlazor

MudBlazor je framework, určený pre Blazor, ktorý poskytuje kompo-


nenty pre vytvorenie webovej stránky. Výhodou je, že pri vytváraní
stránky programátor nemusí nutne písať HTML a CSS kód, ale pou-
žíva preddefinované komponenty alebo si vytvorí vlastné. Niektoré
komponenty zároveň poskytujú aj komunikáciu medzi používateľ-
ským rozhraním a kódom [8].

1. https://docs.microsoft.com/en-us/dotnet/api/system.net.http.
httpclient?view=net-6.0

10
2. Použité technológie

2.3 Accord.NET

Accord.NET2 je rozsiahly framework, ktorý poskytuje nielen štatis-


tickú analýzu, ale aj metódy pre strojové učenie, spracovanie obrazu
a počítačové videnie.
Framework je dostupný pod licenciou GNU Lesser Public License
v2.13 , ktorá umožňuje voľné používanie.
Pre potreby projektu ADAPT som používal z tohto frameworku
časť s názvom Accord.Statistics určenú na štatistickú analýzu dát.

2.4 Math.NET Numerics

Math.NET Numerics4 je ďalší framework poskytujúci viacero metód


a algoritmov týkajúcich sa štatistiky, regresie, náhodných čísel a pod.
Niektoré operácie, ako napríklad Spearmanov korelačný koeficient,
neposkytoval framework Accord.NET, preto som použil aj framework
Math.NET, ktorý je distribuovaný pod licenciou MIT5 , teda je taktiež
voľne dostupný.

2.5 PostgreSQL

PostgreSQL6 je objektovo-relačný databázový systém s otvoreným


zdrojovým kódom. Je distribuovaný pod flexibilnou licenciou BSD,
preto je často používaný pri výskumoch, no čoraz viac sa začína pou-
žívať aj v komerčnej sfére.
Medzi jeho výhody patrí spoľahlivosť, škálovateľnosť a rôzne ná-
stroje na správu databázy ako napríklad pgAdmin [9, 10].

2. http://accord-framework.net
3. http://accord-framework.net/license.html
4. https://numerics.mathdotnet.com
5. https://numerics.mathdotnet.com/License.html
6. https://www.postgresql.org

11
2. Použité technológie

2.6 Plotly

Plotly je súbor knižníc na vykresľovanie grafov v rôznych programova-


cích jazykoch. V tejto práci bola použitá knižnica Plotly.Blazor7 , ktorá
je určená pre Blazor projekty.

7. https://github.com/LayTec-AG/Plotly.Blazor

12
3 Návrh aplikácie ako celku

Celkový návrh aplikácie nie je predmetom tejto bakalárskej práce.


Návrh sa tvoril a konzultoval v spolupráci s antropológmi, ktorí sú
zodpovední za celý projekt ADAPT. V tejto kapitole sú opísané časti
návrhu, ktoré súvisia s prácou.

3.1 Navigácia

Navigácia v aplikácii nie je realizovaná cez navigačnú lištu, ale vychá-


dza z postupu spracovania dát. Po prihlásení je používateľ presmero-
vaný na obrazovku s uloženými projektmi. Následne si môže vybrať,
či si chce založiť nový projekt alebo chce pracovať s uloženým projek-
tom a načítať dáta projektu priamo do 3D modulu. V prvom prípade
je presmerovaný do filtračného modulu. Po výbere probandov a sérií
vo filtračnom module, si používateľ tieto dáta načíta do 3D modulu.
Z 3D modulu môže prejsť do štatistického modulu. Zo všetkých častí
aplikácie sa dá dostať naspäť na panel s projektmi a do správcovského
modulu. Navigáciu v aplikácii znázorňuje obrázok 3.1

Obr. 3.1: Navigácia aplikácie

13
3. Návrh aplikácie ako celku

3.2 Databáza

V rámci práce som spolupracoval na návrhu niektorých tabuliek, pre-


važne tabuliek týkajúcich sa autorizácie. Dôležitá je ale aj štruktúra
iných tabuliek, pretože každý modul komunikuje s databázou. Názvy
tabuliek a stĺpcov sú zmenené alebo neuvedené z bezpečnostných
dôvodov.
Tabuľka s názvom LOCALIZATION obsahuje dáta lokalizované
do českého a anglického jazyka. Tabuľku tvoria tri stĺpce: kľúč, preklad
do češtiny a preklad do angličtiny. Lokalizujú sa tri typy textových
reťazcov. Hodnoty kvalitatívnych premenných z databázy majú v kľúči
prefix v_, textové popisy v menu a výstupoch operácií majú prefix t_
a názvy ISO mier prefix nemajú.
Tabuľka PROBAND_INFO obsahuje informácie o probandovi. Tieto
informácie zahŕňajú jedinečné ID probanda, dátum narodenia, národ-
nosť a príznak slúžiaci na overenie prístupu.
Na tabuľku PROBAND_INFO sa viaže tabuľka SERIE_INFO, ktorá
obsahuje dáta konkrétnej série. Tabuľku tvoria tieto stĺpce:
• ID probanda, ku ktorému séria patrí
• kód série – určuje poradie série v rámci jedného probanda
• ID série – kombinácia ID probanda a kódu série
• pohlavie
• vek v deň konania vyšetrenia
• kategória zamestnania
• konkrétne zamestnanie
• dátum, kedy bol vykonaný sken tela
• dátum, kedy bola vykonaná magnetická rezonancia
• dátum, kedy bol vykonaný sken tváre
• dátum vyšetrenia
• dostupné skeny
• miery podľa ISO štandardu – každá v samostatnom stĺpci

14
3. Návrh aplikácie ako celku

Tieto tabuľky sú vo vzťahu 1:N, teda na jedného probanda sa môže


viazať viacero sérií.
Tabuľka USER_INFO obsahuje informácie o používateľoch, ktorí
sa aspoň raz prihlásili do aplikácie. Tvorí ju šesť stĺpcov:

• ID používateľa

• používateľské meno

• úroveň oprávnenia

• ID používateľa, ktorý mu udelil oprávnenie

• dátum udelenia oprávnenia

• jazyk lokalizácie

Tabuľka PERMISSION_LEVELS obsahuje úrovne oprávnenia pou-


žívateľa a tabuľka DATA_ACCESS_LEVELS obsahuje možné hodnoty
príznakov pre probanda. Z týchto tabuliek sa vyberajú hodnoty pri
nastavovaní oprávnení. Tabuľka PERMISSION_CLASSIFICATION vy-
chádza z definície tabuliek 1.2 a 1.3. Na základe tejto tabuľky sa určujú
oprávnenia k operáciám a dátam. V tabuľke DEFINITION_GROUP
sú uložené skupiny, ktoré boli vytvorené. Tabuľka USER_GROUPS
má dva stĺpce, jeden stĺpec obsahuje názov skupiny z tabuľky DEFI-
NITION_GROUP a druhý používateľské meno. Tabuľka s názvom
PROBAND_GROUPS obsahuje namiesto používateľského mena ID
probanda. Tieto dve tabuľky predstavujú príslušnosť používateľa alebo
probanda do skupiny.

15
4 Filtračný modul

V tejto kapitole je opísaný celý postup vývoja filtračného modulu.


Filtračný modul sa vyvíjal ako prvý, pretože slúži ako vstupný bod
do aplikácie.

4.1 Analýza požiadaviek

Medzi hlavné požiadavky patria parametre, na základe ktorých sa


majú dáta filtrovať. Tieto parametre boli definované antropológmi.
Parametre je možné po analýze rozdeliť podľa dvoch kritérií. Prvým
kritériom je reprezentácia dát:
• textová – národnosť, pohlavie, zamestnanie, typ skenu, kód pro-
banda
• numerická – vek, dátum narodenia, ISO miery na tele
Niektoré parametre je ešte možné rozdeliť podľa toho, či je množina
hodnôt, ktoré nadobúdajú nemenná alebo variabilná:
• nemenná – pohlavie, typ skenu
• variabilná – zamestnanie, národnosť
Hodnoty variabilných parametrov pribúdajú alebo ubúdajú podľa
toho, koľko probandov rôznych národností a zamestnania podstúpilo
vyšetrenie. Na základe týchto rozdelení boli pri implementácii zvolené
vhodné komponenty na výber hodnôt.

4.2 Návrh používateľského rozhrania

Cieľom návrhu je jednoduché ovládanie a výber parametrov. Modul


je rozdelený na tri časti. Hlavnou časťou je formulár na vyplnenie
parametrov filtrovania. Základom bolo vhodne usporiadať parametre
vo formulári. Formulár je rozdelený na dva stĺpce a parametre sú
zoradené od najčastejšie používaných.
Pod formulárom sa nachádza prehľad zvolených parametrov v zro-
zumiteľnejšej textovej forme. Poslednou časťou je zoznam vyfiltrova-
ných probandov a sérií so základnými informáciami.

16
4. Filtračný modul

4.3 Implementácia

Súčasťou implementácie je frontend aj backend modulu.


Na frontend sú použité MudBlazor komponenty v spojení s vlast-
nými CSS štýlmi. Aby bol kód prehľadný, je rozdelený do niekoľkých
MudBlazor komponentov, ktoré sú spojené do hlavného komponentu.
MudBlazor komponenty umožňujú do seba vložiť okrem HTML
aj C# kód, ktorý súvisí s daným komponentom. Backend kód je buď
v samotných MudBlazor komponentoch alebo je vyčlenený do samos-
tatných tried, ktoré umožnia použitie ich funkcionality aj na iných
miestach. Niektoré triedy sú vložené ako závislosť, aby boli dostupné
pre všetky komponenty a triedy, ktoré pomocou nich komunikujú.
Nasledujúce sekcie opisujú jednotlivé časti implementácie.

4.3.1 Výber parametrov

Po prepnutí do filtračného modulu sa používateľovi zobrazí formu-


lár. Celý formulár je vložený do komponentu <MudForm>, ktorý
umožňuje jednoduchú validáciu. Formulár je rozdelený pomocou
komponentu <MudGrid> na dva stĺpce, ktoré sú zobrazené na obráz-
koch 4.1 a 4.2.
Numerické parametre sa zadávajú prostredníctvom komponen-
tov, ktoré predstavujú interval od–do, vrátane hraníc. Ak používateľ
nič nezmení, interval je <0,∞). Nevyplnené políčko hornej hranice
znamená zhora neohraničený interval. Minimum spodnej hranice je
nula. Inak to je pri výbere dátumu, kde je maximum hornej hranice
aktuálny dátum a nevyplnené políčko dolnej hranice znamená zdola
neohraničený interval. Zároveň prebieha validácia korektnosti inter-
valu, musí platiť nerovnosť: spodná hranica <= horná hranica. Pri
výbere dátumu sa ešte overuje korektný formát YYYY-MM-DD. Ak chce
používateľ filtrovať na základe hodnôt ISO mier, rozklikne si položku
s názvom ISO parametry, kde sa mu zobrazia rovnaké komponenty
pre každú mieru samostatne.

17
4. Filtračný modul

Obr. 4.1: Filtračný formulár (ľavý stĺpec)

Obr. 4.2: Filtračný formulár (pravý stĺpec)

18
4. Filtračný modul

Pohlavie a typ skenu sa vyberá pomocou zaškrtávacieho políčka.


Používateľ si vyberie pohlavia, ktoré chce zahrnúť vo výsledku. Výber
typu skenu funguje inak, pretože jedna séria môže obsahovať viac
skenov. Ak sú zaškrtnuté všetky alebo žiaden, bude séria vybraná
bez ohľadu na to, aké skeny obsahuje. V opačnom prípade musí séria
obsahovať všetky zaškrtnuté skeny.
Parametre s variabilnými hodnotami sa vyberajú prostredníctvom
rozbaľovacej ponuky. Na obrázku 4.3 je zobrazená ponuka národ-
ností. Používateľ si môže vybrať všetky možnosti naraz alebo vybrať
konkrétne možnosti. Rovnako to funguje aj pri kategórii a type za-
mestnania. Možnosti sa získavajú priamo z databázy, z konkrétnych
hodnôt pri probandoch a sériách.

Obr. 4.3: Príklad rozbaľovacej ponuky

Parametre sú rozdelené na povinné a voliteľné. Medzi povinné pa-


rametre patrí pohlavie, národnosť a kategória zamestnania. V prípade,
že používateľ nevyberie niektorý z povinných parametrov, nie je mu
umožnené dáta filtrovať a zobrazí sa mu upozornenie, ako vidno aj
na obrázku 4.1.
Rovnako mu nie je umožnené dáta filtrovať, ak nie je splnená nie-
ktorá z validačných podmienok. Veľkú časť validácie vykonáva sa-
motný komponent <MudForm>, v ktorom sa dajú nastaviť povinné
parametre. V niektorých prípadoch bolo potrebné zadefinovať pod-
mienku, napríklad nerovnosť pri intervaloch.
Pod formulárom sa používateľovi zobrazuje textová reprezentácia
vybraných hodnôt spolu s tlačidlom na potvrdenie filtrovania dát, viď
obrázok 4.4. Tlačidlo môže používateľ stlačiť, len ak sú splnené všetky
validačné podmienky.

19
4. Filtračný modul

Vybrané hodnoty, okrem hodnôt ISO mier, sa ukladajú do triedy


FilterValues. Hodnoty ISO mier sa ukladajú do triedy ISOParametersFil-
ter, ktorá predstavuje slovník, kde kľúč je názov ISO miery a hodnota
je trieda NumericIntervalModel, reprezentujúca interval. Tieto triedy sa
po stlačení tlačidla odovzdajú funkcii komunikujúcej s databázou.

Obr. 4.4: Textová reprezentácia vybraných hodnôt

4.3.2 Vyfiltrované dáta

Vyfiltrované dáta sa používateľovi zobrazia vo forme stromovej štruk-


túry, zobrazenej na obrázku 4.5. Pri každom probandovi a sérii sú
základné informácie. Ak používateľovi vyhovuje výber, dáta si pomo-
cou tlačidla zobrazí v 3D module.

20
4. Filtračný modul

Obr. 4.5: Zobrazenie vyfiltrovaných dát

4.3.3 Komunikácia s databázou

Komunikáciu s databázou zabezpečuje funkcia FilterProjects, ktorá ako


parametre berie triedy FilterValues, ISOParametersFilter a FilteredPro-
jects.
Komunikácia sa vykonáva pomocou knižnice Npgsql1 , ktorá umož-
ňuje jednoduchú komunikáciu s PostgreSQL databázou.
Vzhľadom na to, že aplikácia je lokalizovaná a údaje v databáze sú
uložené v českom jazyku, si funkcia najprv preloží vybrané národnosti
a zamestnania do češtiny. SQL dotaz pre ISO miery sa pre ich veľký
počet vytvára dynamicky, na základe toho aké miery používateľ zvo-
lil. Dotaz sa vytvára tak, že sa prechádza slovník ISOParametersFilter
a do dotazu sa pridá podmienka s ISO mierou, ktorá má interval iný
ako < 0, ∞). Tento SQL dotaz sa potom pripojí ku hlavnému dotazu,
kde sú zadefinované všetky podmienky pre vyhľadávanie a dosadia
sa tam hodnoty z triedy FilterValues.
Vyhľadáva sa vo virtuálnej tabuľke PROBAND_SERIES_INFO,
v ktorej sú spojené tabuľky PROBAND_INFO a SERIES_INFO, na zá-

1. https://www.npgsql.org

21
4. Filtračný modul

klade ID probanda. Jeden riadok obsahuje dáta série a aj probanda,


ku ktorému patrí.
Probandi so sériami, ktorí spľňajú kritéria výberu sa ukladajú
do triedy FilteredProjects definovanej takto:

public class FilteredProjects :


Dictionary<ProbandModel, List<SeriesFilterModel>>

Kľúč je trieda ProbandModel, ktorá obsahuje ID probanda a dátum


narodenia. Trieda má prepísanú metódu Equals, tak aby porovnávala
inštancie len na základe ID probanda. Hodnota je zoznam obsahujúci
inštancie triedy SeriesFilterModel, každá inštancia v poli reprezentuje
jednu sériu, ktorá sa viaže na probanda v kľúči. Slovník ešte obsahuje
metódu AddOrUpdate(ProbandModel, SeriesFilterModel), ktorá ak už
existuje v slovníku daný proband, tak aktualizuje pole sérií, inak
vytvorí nový záznam v slovníku.
Takto vyfiltrované dáta sa potom pošlú naspäť do filtračného mo-
dulu, kde sa vytriedia probandi a série, ku ktorým má používateľ
prístup.

4.3.4 Lokalizácia

Lokalizácia v aplikácii je realizovaná prostredníctvom triedy Localizer,


ktorá funguje ako slovník. Slovník odzrkadľuje databázovú tabuľku
LOCALIZATION, kľúče sú rovnaké ako v tabuľke a hodnoty sú prelo-
žené texty, podľa toho akú lokalizáciu má používateľ zvolenú. Hod-
noty sa do slovníka načítajú z databázy pri spustení aplikácie alebo
pri zmene lokalizácie. Používateľ si lokalizáciu volí v pravom hornom
rohu obrazovky.
V kóde sa potom na mieste, kde má byť preložený text, napíše
formula Localizer[kľúč] a v aplikácii sa na danom mieste zobrazí text
podľa jazyka lokalizácie. Ak kľúč v databáze nie je, tak sa na mieste
zobrazí text "key=kľúč" a kľúč s preloženými hodnotami sa môže
pridať do databázy cez správcovský modul. Rovnako sa tam môžu
upravovať už existujúce preklady.
Vo filtračnom module sa špecificky riešia hodnoty, ktoré nie sú
statický text, ale sú to hodnoty z databázy, ako napríklad národnosť.
Tie sa pri zobrazovaní používateľovi musia najprv preložiť do jazyka

22
4. Filtračný modul

vybranej lokalizácie. Pri dotazovaní do databázy sa zvolené hodnoty


musia preložiť do českého jazyka, aby korešpondovali s hodnotami
uloženými v databáze, ktoré sú v českom jazyku.

23
5 Štatistický modul

V tejto kapitole je opísaný postup vývoja štatistického modulu.

5.1 Analýza požiadaviek

Pred implementáciou modulu prebehla analýza všetkých požadova-


ných funkcií a štatistických analýz. Pre každú funkciu bolo potrebné
zistiť, na čo daná funkcia slúži, čo je jej výstupom a aké sú jej vstupné
parametre. Prehľad funkcií so špecifikáciou je opísaný v kapitole 1.4.
Súčasťou analýzy je aj identifikácia premenných, s ktorými sa v mo-
dule pracuje. Na základe nej je možné rozdeliť premenné na kvali-
tatívne a kvantitatívne. Typy premenných sú opísané v kapitole 1.4.
Funkcie je možné rozdeliť na základe toho, s akými dátami pracujú.
Väčšina funkcií pracuje s kvantitatívnymi znakmi. Kvalitatívne znaky
slúžia prevažne na špecifikáciu a členenie štatistického súboru.
Po tejto analýze bolo potrebné nájsť vhodnú knižnicu, ktorá po-
krýva čo najväčšie množstvo funkcií, spĺňa špecifikáciu funkcií a je
voľne dostupná. Tieto požiadavky spĺňajú knižnice Accord.NET, Plotly
a Math.NET Numerics opísané v kapitole 2.

5.2 Návrh používateľského rozhrania

Pri návrhu bolo potrebné modul rozdeliť na logické celky, oddeliť


od seba špecifikáciu súboru dát, výber operácií s premennými a výsle-
dok štatistík spolu s grafmi. Modul je rozdelený na tri stĺpce, z ktorých
každý predstavuje jeden celok. Rozloženie vzniklo v spolupráci s an-
tropológmi a je zobrazené na obrázku 5.1.
V ľavom stĺpci si používateľ špecifikuje súbor, v pravom si vyberá
operácie a premenné. V strede sú zobrazené výsledné výpočty a grafy.

5.3 Implementácia

Súčasťou implementácie je frontend aj backend modulu. Kód modulu


je štruktúrovaný rovnako, ako je opísané pri filtračnom module, no je
rozsiahlejší. Pri prechádzaní z 3D modulu do štatistického modulu sa

24
5. Štatistický modul

odovzdajú do modulu kódy sérií, s ktorými sa má v module pracovať.


Tieto série predstavujú štatistický súbor.
Nasledujúce sekcie opisujú jednotlivé časti implementácie.

Obr. 5.1: Návrh grafického rozhrania štatistického modulu

5.3.1 Ovládanie modulu

Po prepnutí do modulu sa používateľovi zobrazí obrazovka na ob-


rázku 5.2. Ako je opísané v návrhu, obrazovka je rozdelená na tri časti
pomocou komponentu <MudGrid>. Veľkosť stĺpcov je v pomere 2:7:3.
V strede si používateľ vyberá typ štatistiky. Tento výber je rea-
lizovaný prostredníctvom komponentu MudTabs, ktorý predstavuje
záložky. Pri vstupe do modulu je vybraná záložka s popisnou štatis-
tikou, ďalšie možnosti sú vzťahy viac premenných a jednorozmerná
štatistika. Pre každý typ štatistiky sa vyberajú iné funkcie a parametre,
preto sú v pravom stĺpci tiež záložky. Tieto záložky korešpondujú
s výberom štatistiky v strednom stĺpci a zobrazujú operácie pre zvo-
lený typ štatistiky. Záložky umožňujú zároveň zachovanie vybraných
parametrov a operácií po prepnutí na iný typ štatistiky.

25
5. Štatistický modul

Obr. 5.2: Štatistický modul

26
5. Štatistický modul

5.3.2 Popisná štatistika

Pri popisnej štatistike si používateľ v pravom paneli vyberá len ISO


miery, pre ktoré chce túto štatistiku spočítať. V ľavom paneli si môže
používateľ vybrať kategórie, podľa ktorých chce štatistický súbor roz-
deliť na menšie podmnožiny. Táto funkcionalita je dostupná len pri
popisnej štatistike. Napríklad, ak si používateľ vyberie ako ISO mieru
hmotnosť a zaškrtne muža a ženu, spočíta sa mu popisná štatistika
samostatne pre hmotnosť mužov a hmotnosť žien (príklad je na ob-
rázku 5.3).
Vytvoril som komponent <MultiSelectIsoParameters>, ktorý sa pou-
žíva aj v ostatných častiach modulu a predstavuje rozbaľovaciu ponuku
na výber ISO mier. Umožňuje vybrať viac ISO mier naraz. V ľavom
paneli sa vyberajú hodnoty kategórií pomocou zaškrtávacieho po-
líčka a rozbaľovacích ponúk. Je povolené vyberať maximálne z dvoch
kategórií súčasne. Dôvodom je, že pri rozdeľovaní sa tvoria všetky
kombinácie vybraných hodnôt a počet podmnožín súboru tak násobne
rastie, čo spôsobuje neprehľadnosť.
Po výbere aspoň jednej ISO miery sa vytvorí slovník GroupedSeries,
ktorý reprezentuje rozdelenie súboru podľa vybraných hodnôt. Kľúč
je reťazec so štruktúrou: "ISO-miera pohlavie veková-kategória národnosť".
Hodnota je zoznam SeriesList zdedený z triedy List, ktorý obsahuje
inštancie triedy SeriesStatisticModel. Táto trieda obsahuje narozdiel
od triedy SeriesFilterModel z predchádzajúcej kapitoly ešte hodnotu
jednej ISO miery a ID probanda. Pre vyššiu efektivitu sa slovník kon-
štruuje s konkrétnou veľkosťou, veľkosť sa spočíta ako počet kombiná-
cií vybraných hodnôt. Vo vnorených cykloch sa potom tvoria všetky
kombinácie a do slovníka sa ku kľúčom pridajú série, ktoré spadajú
do danej kombinácie. Ak používateľ nevyberie žiadne kategórie, len
ISO mieru, tak je postup rovnaký, ale kľúč obsahuje len názov ISO
miery a hodnota obsahuje všetky série.
Po vytvorení slovníka sa pre každý záznam v slovníku spočíta
popisná štatistika. Popisnú štatistiku pre jednu podmnožinu reprezen-
tuje trieda DescriptiveStatistics. Konštruktor triedy berie ako parametre
kľúč podmnožiny zo slovníka a zoznam číselných hodnôt, z ktorých sa
má štatistika počítať. V konštruktore sa spočítajú všetky funkcie, ktoré
sú súčasťou popisnej štatistiky. Všetky funkcie počítajú metódy z kniž-
nice Accord.NET, konkrétne metódy triedy Measures. Pri testovaní

27
5. Štatistický modul

normality sa overuje, či zoznam obsahuje aspoň štyri hodnoty a či je


aspoň jedna hodnota nenulová. V opačnom prípade by funkcia z kniž-
nice skončila s chybou. Napočítané štatistiky sa uložia do zoznamu,
ktorý sa ďalej používa pri zobrazovaní výsledkov používateľovi.
Výstup je rozdelený na tri časti. Prvá časť je tabuľka, ktorá zobra-
zuje výsledky všetkých funkcií. Druhá časť je percentilová tabuľka
a posledná časť sú grafy.
Komponent <DescriptiveStatisticsTable> vykreslí tabuľku zobra-
zenú na obrázku 5.3. Komponent berie ako parameter zoznam inštancií
triedy DescriptiveStatistics, z ktorých každá reprezentuje jeden riadok
v tabuľke. Prvý stĺpec, v ktorom je popis podmnožiny, má nastavený
css atribút white-space: nowrap, aby sa popis v medzerách nerozdeľoval
a bol tak dobre čitateľný.

Obr. 5.3: Tabuľka popisnej štatistiky

Komponent <PercentilesTable> vykreslí tabuľku zobrazenú na ob-


rázku 5.4. Do tabuľky si používateľ môže pridať vlastnú hodnotu
percentilu prostredníctvom poľa pod tabuľkou. Zadaný percentil sa
spočíta a pridá na koniec tabuľky.

Obr. 5.4: Tabuľka percentilov

Popisná štatistika poskytuje dva typy grafov – histogram a krabi-


cový graf. Grafy sa vykresľujú do záložiek MudTabs, každá záložka

28
5. Štatistický modul

predstavuje graf pre jednu ISO mieru. Graf môže byť rozdelený podľa
kategórií vybraných v ľavom paneli.
Komponent <Histograms> vykresľuje záložky s histogramami zo-
brazenými na obrázku 5.5. Ako parameter berie aktuálne vybrané
ISO miery a slovník GroupedSeries. Pre každú ISO mieru sa vytvorí
záložka, do ktorej sa vykreslí komponent PlotlyChart z knižnice Plotly.
Komponentu sa odovzdajú parametre grafu a dáta, ktoré sa majú vy-
kresliť. Dáta sú zoznam objektov typu ITrace, rozhranie je definované
v knižnici a predstavuje rôzne typy grafov. V tomto prípade to je trieda
Histogram. Funkcia CreateHistogramData(string isoParameter) pre ISO
mieru vyberie zo slovníka GroupedSeries všetky záznamy, ktoré v kľúči
obsahujú danú ISO mieru. Pre každý z vybraných záznamov sa vy-
tvorí inštancia triedy Histogram a pridá sa do výsledného zoznamu.
Triede Histogram sa pri inicializácii odovzdá kľúč záznamu, ktorý po-
tom predstavuje popis vo vykreslenom grafe a číselné hodnoty ISO
miery zo zoznamu SeriesList. Toto zabezpečí, že pre jednu ISO mieru sa
graf rozdelí podľa kategórií. Každá farba v grafe predstavuje jednu in-
štanciu triedy Histogram. Postup sa opakuje v cykle pre každú vybranú
ISO mieru. Po úprave parametrov v ľavom paneli je potrebné vyvolať
prekreslenie grafu, pretože graf na zmenu nereaguje. Funkcia React
zavolaná na graf vyvolá jeho prekreslenie s aktuálnymi parametrami.

Obr. 5.5: Histogram

29
5. Štatistický modul

Komponent <BoxPlots> funguje podobne, ale vykresľuje krabi-


cové grafy, obrázok 5.6. Rozdiel je v tom, že dáta sú zoznam inštancií
triedy Box. Tá naviac berie ako parameter ID probandov zo zoznamu
SeriesList, vďaka tomu je možné pomocou myši ukázať na konkrétny
bod a zobraziť ID odpovedajúceho probanda. Graf taktiež zobrazuje
hodnoty kvartilov. V oboch prípadoch sa dá graf priblížiť, posúvať
alebo stiahnuť vo formáte png.

Obr. 5.6: Krabicový graf

5.3.3 Vzťahy viacerých premenných

Súčasťou tejto štatistickej analýzy je korelácia, lineárna regresia a kon-


tingenčná tabuľka. Vstupné hodnoty sa vyberajú pre každú z troch
metód samostatne, ako vidno na obrázku 5.7.
Pre vzťah dvoch premenných, koreláciu, sa vyberajú dve ISO miery.
Miery sa vyberajú cez komponent <SingeSelectIsoParameter>, ktorý
narozdiel od <MultiSelectIsoParameter> umožňuje vybrať len jednu
mieru. Ak sú vybrané obidve miery, pre obe z nich sa z databázy
vyberú série a vytvorí sa SeriesList. Tieto zoznamy sa odovzdajú triede
CorrelationAnalysis, ktorá spočíta potrebné koeficienty. Pearsonov a Spe-
armanov korelačný koeficient počítajú funkcie z knižnice Math.NET

30
5. Štatistický modul

Numerics. Významnosť korelácie sa počíta pomocou T-testu. Kniž-


nica Accord.NET neposkytuje priamo T-test pre výpočet významnosti
korelácie, preto sa t-štatistika, ktorá je vstupom do T-testu spočíta
samostatne, pomocou vzorca:

Pearson
√ ∗ n −2
1− Pearson2

Pearson je Pearsonov korelačný koeficient a n je počet sérií. Použí-


vateľovi sa zobrazia výsledné hodnoty spolu s bodovým grafom, ktorý
je zobrazený na obrázku 5.8. Graf sa vykresľuje rovnako ako v predoš-
lých prípadoch. Komponentu PlotlyChart sa ako dáta odovzdá jediná
inštancia triedy Scatter. Triede sa pri inicializácii nastavuje parameter,
aby zobrazovala len body a nespájala ich čiarou.

Obr. 5.7: Vzťahy viacerých premenných – výber operácií

Pri lineárnej regresii si používateľ vyberá aspoň jednu nezávislú


premennú a jednu závislú premennú. Premenné sú ISO miery. Podľa
toho, či si vyberie jednu alebo viac nezávislých premenných, sa počíta

31
5. Štatistický modul

buď jednoduchá lineárna regresia alebo viacnásobná lineárna regre-


sia. Regresia sa počíta v triede LinearRegression, ktorá má preťažený
konštruktor. Konštruktory sú definované takto:

LinearRegression(IList<double> input, IList<double> output)


LinearRegression(double[][] input, IList<double> output)

V prvom z nich sa počíta jednoduchá lineárna regresia a v druhom


viacnásobná. Pri viacnásobnej sa hodnoty nezávislých premenných
ukladajú do dvojrozmerného poľa. Pole sa najprv inicializuje podľa po-
čtu vybraných premenných a následne sa doň vložia hodnoty ISO mier.
Dôvodom ukladania hodnôt do dvojrozmerného poľa je, že funkcia
z knižnice Accord.NET, ktorá počíta viacnásobnú lineárnu regresiu
berie ako parameter dvojrozmerné pole. Výstup viacnásobnej lineárnej
regresie je zobrazený na obrázku 5.9. Používateľ môže predpovedať
hodnotu závislej premennej tak, že vyplní hodnoty nezávislých pre-
menných, ktoré sa dosadia do vypísanej funkcie.

Obr. 5.8: Bodový graf

Pri kontingenčnej tabuľke si používateľ vyberá dve kategórie s hod-


notami. Komponenty na výber hodnôt sa zobrazujú postupne. Najprv
sa zvolí kategória a následne hodnoty kategórie, potom rovnako pre
druhú kategóriu. Jednu kategóriu reprezentuje trieda Category, ktorá
nesie názov kategórie a hodnoty. Kategórie a ich hodnoty spravuje
trieda CategoryManager. Trieda pomocou slovníka mapuje názvy ka-
tegórii na názvy stĺpcov v databáze, ktoré sa použijú v SQL dotaze
(bližšie opísané v sekcii 5.3.5). V prípade vekovej kategórie konver-

32
5. Štatistický modul

tuje textovú reprezentáciu intervalu na triedu NumericIntervalModel.


Pomocou nej sa taktiež prekladajú hodnoty pre vybranú kategóriu.

Obr. 5.9: Výstup lineárnej regresie

Po výbere hodnôt sa vytvorí matica, kde riadky predstavujú jednu


kategóriu a stĺpce druhú. V cykloch sa prechádza celá matica a podľa
pozície sa z databázy získa počet sérií s danou kombináciou hodnôt.
Z matice a vybraných kategórií sa vytvorí trieda ContingencyTable,
v ktorej sa ešte počíta chí-kvadrát test. Pre výpočet testu musí byť spl-
nená podmienka, že obe kategórie majú vybrané aspoň dve hodnoty.
Najprv sa spočíta chí-štatistika, ktorá je vstupom testu. Pri výpočte chí-
štatistiky sa využíva takzvaná očakávaná hodnota pre každú bunku
v matici, ktorá sa počíta pomocou vzorca:
sucet v riadku∗sucet v stl pci
celkovy sucet

Chí-štatistika je suma hodnôt spočítaných pre každú bunku vzor-


com:
(realna hodnota−ocakavana hodnota)2
ocakavana hodnota

Samotný test sa počíta cez funkciu z knižnice. Výstupom je tabuľka


podobná tabuľke 1.1 a výsledok testu v textovej forme.

33
5. Štatistický modul

5.3.4 Jednorozmerná štatistika

V tejto sekcii sa počítajú nepárové testy, párový test a ANOVA test.


Na výpočet všetkých testov sa používa knižnica Accord.NET.
Pri nepárových testoch si používateľ vyberá ISO mieru, kategóriu
a dve hodnoty tejto kategórie, ako je zobrazené na obrázku 5.10.

Obr. 5.10: Nepárové testy – výber premenných

Všetky hodnoty sa vyberajú prostredníctvom už spomínaných


komponentov, ktoré sa postupne zobrazujú. Z databázy sa vyberú
série, ktoré spadajú do príslušnej kategórie a vytvorí sa SeriesList pre
obe kategórie. Triede UnpairedTests sa odovzdajú ISO hodnoty z vy-
braných sérií. Skontroluje sa, či nie je niektorá zo vzoriek prázdna,
ak áno, používateľ je informovaný. Ak vzorky nie sú prázdne, spočíta
sa Mann-Whitney test, T-test a F-test. Pre F-test je potrebné najprv
spočítať rozptyl vzoriek. Pre všetky testy vyzerá výstup rovnako, ob-
rázok 5.11. Výstup obsahuje popis testu, ktorý je zároveň aj nulovou
hypotézou1 . Na základe výsledku testu používateľ rozhoduje, či nu-
lová hypotéza platí alebo nie. Všetky tri testy sa počítajú pre vybrané
hodnoty spolu.

1. Testovaná hypotéza, ktorú test potvrdí alebo zamietne.

34
5. Štatistický modul

Obr. 5.11: Výstup T-testu

Vstupom párového, Wilcoxonovho, testu sú hodnoty dvoch ISO


mier. Keďže výber neobsahuje žiadne podmienky, z databázy sa vy-
berú všetky série a z hodnôt dvoch ISO mier sa spočíta Wilcoxonov
test. Výstup testu je rovnaký ako pri nepárových testoch.
Ak používateľovi nestačia nepárové testy a potrebuje testovať vzťahy
viac ako dvoch vzoriek, použije ANOVA test. Výber hodnôt je zobra-
zený na obrázku 5.12.

Obr. 5.12: ANOVA test – výber premenných

Rozdiel oproti nepárovým testom je, že sa vyberá viac hodnôt pre


kategóriu. Používateľ musí vybrať aspoň tri hodnoty, aby sa spočítal
ANOVA test. Vytvorí sa dvojrozmerné pole, v ktorom každý riadok
predstavuje jednu vybranú kategóriu. Z databázy sa vyberú série
podľa kategórie a do riadku sa pridajú hodnoty ISO miery z týchto sérií.

35
5. Štatistický modul

Z takto vytvoreného poľa sa spočíta ANOVA test. Pri výpočte testu sa


overuje, či metóda, ktorá počíta test neskončila s chybou a v prípade že
áno, je o tom používateľ informovaný. Výstup testu je opäť rovnaký.

5.3.5 Komunikácia s databázou

V štatistickom module sa na komunikáciu s databázou používajú tri


funkcie: GetStatisticSeries, GetStatisticSeriesByCategory a GetCountInCa-
tegory. Všetky funkcie berú ako parameter zoznam ID sérií, s ktorými
sa má v štatistickom module pracovať. V každom SQL dotaze je tak
podmienka, ktorá overuje, či ID série je v zozname. Funkcie vyhľadá-
vajú vo virtuálnej tabuľke PROBAND_SERIES_INFO.
Funkcia GetStatisticSeries berie ako parametre názov ISO miery,
pohlavie, národnosť, vekovú kategóriu a kategóriu zamestnania. Po-
sledné štyri sú implicitne nastavené na prázdne. V prípade, že žiaden
z týchto parametrov nie je zmenený, funkcia z databázy vyberie série
a vytvorí SeriesList pre danú ISO mieru. Ak niektorý z parametrov
obsahuje hodnotu, tak sa táto hodnota dosadí do SQL dotazu a vyberú
sa len série, ktoré spĺňajú podmienky. Funkcia sa používa prevažne pri
výpočtoch popisnej štatistiky, kde sa využíva delenie podľa kategórií.
Používa sa aj tam, kde sa pracuje len s ISO mierami, bez ohľadu na
kategórie.
Funkcia GetStatisticSeriesByCategory berie ako parametre názov ISO
miery, názov kategórie a hodnotu kategórie. Názov kategórie je názov
stĺpca v databáze získaný pomocou triedy CategoryManager. Do SQL
dotazu sa dosadí názov stĺpca a hodnota kategórie. V prípade, ak je
kategória vek, tak sa do SQL dotazu pridá intervalová podmienka.
Funkcia vytvorí SeriesList zo sérií, ktoré spadajú do danej kategórie.
Táto funkcia sa používa pri výpočtoch jednorozmernej štatistiky, kde
je potrebné vyberať série podľa kategórií vybraných používateľom.
Funkcia GetCountInCategory sa používa len pre kontingenčnú ta-
buľku. Ako parametre berie názvy dvoch kategórií spolu s ich hod-
notami. Názvy sú opäť mená stĺpcov v databáze, ktoré sa dosadia
do SQL dotazu spolu s hodnotami. Funkcia vracia počet sérií, ktoré
spadajú do kategórií.

36
5. Štatistický modul

5.3.6 Lokalizácia

Lokalizácia je realizovaná rovnako ako vo filtračnom module, pro-


stredníctvom triedy Localizer.
Rozdiel je pri lokalizácii názvov ISO mier. Pri dotazovaní do da-
tabázy sa musí pracovať s názvom ISO miery, ktorý korešponduje
s názvom stĺpca v databáze. Názvy stĺpcov v databáze sú rovnaké ako
kľúče pre ISO miery v tabuľke LOCALIZATION. Používateľovi sa síce
zobrazí preložená hodnota, no ak ju vyberie, tak sa uloží ako kľúč. Pre
lepšie pochopenie uvediem úryvok kódu:

<MudSelectItem Value="@key">@localizer[key]</MudSelectItem>

Value predstavuje hodnotu, ktorá sa uloží po výbere položky v rozba-


ľovacej ponuke a používateľovi sa zobrazí preložená hodnota vďaka
časti kódu @localizer[key].

37
6 Modul na administráciu autorizácie

V tejto kapitole je opísaná implementácia modulu na administráciu


autorizácie. Náročnosť vývoja tohto modulu je v porovnaní s ostatnými
menšia, preto je zmenená aj štruktúra kapitoly.
Súčasťou implementácie je frontend aj backend modulu. Väčšinu
kódu tvorí backend, keďže prostredníctvom modulu sa primárne vy-
tvárajú, aktualizujú a odstraňujú záznamy v databáze. Kód nie je tak
rozsiahly ako pri ostatných moduloch, preto nie je rozdelený do tried
a komponentov. Používateľské rozhranie modulu je zobrazené na ob-
rázkoch 6.1 a 6.2.

6.1 Nastavovanie oprávnení

Oprávnenia používateľa sa nastavujú pomocou dvoch rozbaľovacích


ponúk. V prvej ponuke používateľ vyberá používateľské meno a v dru-
hej úroveň oprávnenia. Ponuka umožňuje zvoliť len jedného použí-
vateľa, aby sa zmenšilo riziko udelenia práv nezamýšľanému pou-
žívateľovi. Po voľbe používateľa sa zobrazí aktuálna úroveň opráv-
nenia. Kliknutím na tlačidlo uložiť sa aktualizuje hodnota v tabuľke
USER_INFO. Aj v prípade klasifikácie probandov sa po kliknutí na
tlačidlo aktualizuje hodnota v tabuľke PROBAND_INFO. Ak je aktu-
alizovanie hodnoty úspešné, zobrazí sa dialógové okno s potvrdením.
V prípade chyby je používateľ informovaný o chybe.

38
6. Modul na administráciu autorizácie

Obr. 6.1: Modul na administráciu autorizácie (ľavý stĺpec)

Obr. 6.2: Modul na administráciu autorizácie (pravý stĺpec)

39
6. Modul na administráciu autorizácie

6.2 Spravovanie skupín

Používateľ vytvára novú skupinu prostredníctvom textového poľa,


do ktorého vyplní názov skupiny. Po stlačení tlačidla sa v tabuľke
DEFINITION_GROUP vytvorí nová skupina. Ak skupina už existuje,
nič sa nezmení a používateľovi sa zobrazí dialógové okno, ktoré ho
o tom informuje.
Pridávanie používateľov a probandov do skupín funguje rovnako.
Opíšem pridávanie používateľov do skupiny. Po výbere skupiny z roz-
baľovacej ponuky sa zobrazí ďalšia rozbaľovacia ponuka s používateľ-
skými menami. Rozbaľovacia ponuka umožňuje vybrať viac používa-
teľov naraz. V ponuke sú automaticky zaškrtnutí používatelia, ktorí už
sú členmi skupiny. Mená týchto používateľov sa v ponuke zobrazujú
spolu v hornej časti. Po výbere používateľov a stlačení tlačidla uložiť
sa v databáze odstránia pôvodní používatelia v skupine a nahradia
sa aktuálne vybratými. Ak chce používateľ niekoho odstrániť zo sku-
piny, stačí ho odškrtnúť v rozbaľovacej ponuke. Po úspešnej zmene sa
zobrazí dialógové okno.

6.3 Komunikácia s databázou

Funkcie na komunikáciu s databázou sa dajú rozdeliť do dvoch skupín,


tie ktoré dáta získavajú a tie ktoré dáta upravujú.
Funkcie na získavanie dát obsahujú jednoduché SQL dotazy. Po-
mocou týchto funkcií sa získavajú mená všetkých používateľov, pro-
bandov, aktuálne oprávnenia a členovia skupín. Funkcie GetAllUsers
a GetAllProbands majú voliteľný parameter. Tento parameter obsahuje
mená, ktoré sa pri výbere majú vynechať. To sa využíva pri inicializá-
cii rozbaľovacej ponuky, kde sú zaškrnutí členovia vybranej skupiny.
Najprv sa z databázy vyberú členovia skupiny, tí sa odovzdajú ako
parameter funkcii, ktorá získa mená ostatných a vynechá členov sku-
piny.
Oprávnenia sa menia pomocou dvoch funkcií, ktoré konkrétnemu
používateľovi/probandovi aktualizujú oprávnenie/príznak. Skupiny
sa vytvárajú pomocou funkcie CreateNewGroup, ktorá má v SQL do-
taze formulu "ON CONFLICT DO NOTHING". Toto zabezpečí, že ak
už skupina existuje, nič sa nezmení a program nespadne s chybou.

40
6. Modul na administráciu autorizácie

Funkcie AddUsersToGroup a AddProbandsToGroup fungujú identicky.


Funkcia berie ako parametre mená, ktoré sa majú pridať a názov sku-
piny. Najprv sa vytvorí zoznam dvojíc (názov skupiny, používateľské
meno), ktoré sa pridajú do SQL dotazu. Zo skupiny sa potom odstránia
všetci používatelia a pridajú sa používatelia, ktorí sú v parametri.

41
7 Testovanie

V čase vývoja aplikácie neboli dostupné reálne dáta z vyšetrení. Za


účelom testovania som vytvoril šestnásť fiktívnych probandov so sé-
riami. Údaje pri probandoch a sériách sú vyplnené tak, aby spadali
do rôznych kategórií. Série obsahujú vyplnené hodnoty troch ISO
mier: výška, váha a výška v sede. Hodnoty týchto ISO mier sú postaču-
júce na testovanie štatistických funkcií. Testovanie modulov prebehlo
manuálne.
Pri testovaní štatistického modulu som použil online nástroj Social
Science Statistics 1 . Nástroj poskytuje výpočet rovnakých funkcií ako
štatistický modul. Po implementácií funkcie som porovnal výsledky
implementovanej funkcie s online nástrojom, do ktorého som vložil
rovnaké dáta. Keďže všetky použité štatistické funkcie sú z knižníc,
ktoré sú otestované, výsledky boli väčšinou rovnaké. V niektorých
prípadoch však bolo potrebné zmeniť parametre funkcie, aby sa použil
iný postup výpočtu alebo inak interpretoval výsledok.
Na testovanie filtračného modulu a modulu na administráciu auto-
rizácie som použil nástroj pgAdmin2 , čo je grafické rozhranie na správu
PostgreSQL databázy. Pomocou tohto nástroja je možné prehľadne
vidieť uložené dáta a taktiež dáta filtrovať pomocou SQL dotazov. Dáta
som si najprv vyfiltroval vo filtračnom module a rovnaké podmienky
som zadal v nástroji pgAdmin, výsledky som porovnal. Bolo potrebné
otestovať niekoľko hraničných prípadov. Pri parametroch, ktorých
hodnoty sú reálne čísla som testoval, či hraničné hodnoty (napríklad
hodnota 3,99) spadajú do správnych intervalov. Rovnako tak nastá-
vali hraničné prípady pri výbere typov skenov. Výber funguje špeci-
ficky, preto bolo potrebné otestovať, či fungujú správne prípady, ak
sú vybrané všetky skeny alebo žiaden. Hraničný je aj prípad, kedy sú
vybrané skeny podmnožina skenov uložených pri sérii alebo opačne.
Všetky tieto prípady fungujú správne.
Aplikáciu priebežne testujú antropológovia, pretože termín ukon-
čenia projektu je až koniec roka 2022.

1. https://www.socscistatistics.com
2. https://www.pgadmin.org

42
8 Záver

Cieľom tejto bakalárskej práce bola implementácia vybraných modu-


lov do webovej aplikácie ADAPT. Aplikácia slúži v rámci projektu
ADAPT na ukladanie, spracovávanie a analýzu vedeckých dát, získa-
ných z vyšetrení dobrovoľníkov. Získané dáta sa využívajú pri výrobe
ochranných pomôcok.
Filtračný modul umožní používateľovi triediť dáta podľa rôznych
parametrov. Pomocou štatistického modulu používateľ dáta analy-
zuje. Štatistický modul poskytuje niekoľko typov analýz a vizualizácií
dát. Na základe týchto analýz používateľ získa obraz o hodnotách
a mierach, ktoré sú dôležité pre výrobu ochrannej pomôcky. V module
na administráciu autorizácie správca nastavuje oprávnenia používate-
ľom a klasifikuje dáta.
Výsledkom práce sú funkčné moduly, ktoré spolu s ostatnými
časťami tvoria celú aplikáciu ADAPT. V tejto fáze moduly slúžia na na-
plnenie aplikácie reálnymi dátami z vyšetrení. Neskôr bude aplikácia
slúžiť výrobcom ochranných pomôcok a odevov pri návrhu produktov
pre rôzne profesijné odvetvia, kde sú takéto pomôcky nevyhnutné.
Výrobcovia budú mať v aplikácii k dispozícii rozmanité dáta z rôz-
nych častí populácie. Tieto dáta uľahčia výrobcom návrh pomôcky pre
špecifickú skupinu ľudí, napríklad zdravotné sestry.
Moduly sú navrhnuté tak, aby bolo jednoduché pridávať ďalšiu fun-
kcionalitu. Do štatistického modulu pribudne detekcia sérii, ktorým
chýbajú niektoré miery z vyšetrení. Ďalším rozšírením bude možnosť
pracovať s vlastnými mierami, nameranými v 3D module. Vzhľadom
na to, že aplikácia je stále v testovacej fáze, budú vznikať požiadavky
na opravu prípadných chýb a pridávanie novej funkcionality, naprí-
klad grafov do štatistického modulu.

43
Bibliografia

1. MOŠNA, František. Základní statistické metody. Praha, 2018. isbn


9788072909728.
2. MCLEOD, Saul. What does a box plot tell you? [Online]. 2019
[cit. 2022-03-15]. Dostupné z: https://www.simplypsychology.
org/boxplots.html.
3. Biostatistika [online]. Brno: CIT VFU [cit. 2022-03-15]. Dostupné
z: https://cit.vfu.cz/statpotr/POTR/prednasky.htm.
4. Blazor University [online]. Brno [cit. 2022-02-03]. Dostupné z:
https://blazor-university.com/overview/what-is-blazor/.
5. Microsoft documentation [online]. Brno: Microsoft [cit. 2022-02-
03]. Dostupné z: https://dotnet.microsoft.com/en-us/apps/
aspnet/web-apps/blazor.
6. Blazor University [online]. Brno [cit. 2022-02-03]. Dostupné z:
https://blazor-university.com/overview/blazor-hosting-
models/.
7. Microsoft documentation [online]. Brno: Microsoft [cit. 2022-02-
03]. Dostupné z: https://docs.microsoft.com/en-us/aspnet/
core / blazor / fundamentals / dependency - injection ? view =
aspnetcore-6.0.
8. MudBlazor [online]. Brno [cit. 2022-02-03]. Dostupné z: https:
//mudblazor.com.
9. JUBA, Salahaldin; VANNAHME, Achim; VOLKOV, Andrey. Le-
arning postgresql: Create, develop, and manage relational databases
in real-world applications using PostgreSQL. Birmingham: Packt
Publishing, 2015. isbn 9781783989188.
10. IBRAR, Ahmed; ASIF, Fayyaz; AMJAD, Shahzad; ADITHI, Shetty;
DEEPA, Nambiar; SHIVANGI, Chaturvedi; JULIAN, Ursell. Post-
greSQL Developer’s Guide. Birmingham: Packt Publishing, 2015.
isbn 9781783989027.

44
A Prílohy

Zdrojový kód je dostupný vo formáte ZIP v archíve záverečnej práce.

45

You might also like