8.3. Popis funkcionality
Generátor náhodného čísla je dodán prostřednictvím instance funkčního objektu třídy
com.tilioteo.hypothesis.core.RandomGenerator. Instance je vytvořena při
inicializaci proměnné generator. Stejným způsobem je také použita třída pro konverzi
datových typů com.tilioteo.hypothesis.core.Convertor, jejíž instance je vytvořena
s proměnnou convert.
Slide vyžaduje zadání celočíselné hodnoty do textového pole pupil_countuvedeného textem
“Interval generování”. Pole má nastaveny validátory, které vyžadují zadání celého čísla
v rozsahu <1, 50>. Stiskem tlačítka “Generovat” dojde k provedení akce generate.
V této akci se nejprve vyhodnotí platnost zadaného čísla a pokud není zadání správné, bude
deaktivováno tlačítko “Další”. V opačném případě se načte aktuální řetězec z pole
pupil_countpomocí referencované proměnné pupilCountdo proměnné str. Řetězec je
zkonvertován na celé číslo pomocí metody stringToInt()objektové proměnné converta
přiřazen do proměnné count. Číslo v proměnné count slouží jako vstup metody
getInteger() volané na objektové proměnné generator. Metoda vrací náhodné číslo
v intervalu <0, count1>, které je předáno do proměnné number. Následně je přičtena 1, aby se
srovnal rozsah generovaného čísla se vstupním intervalem. Výsledné číslo je předáno do pole
gen_num prostřednictvím referencované proměnné genNum a metody setValue().
V posledním kroku je aktivováno tlačítko “Další”.
33
9. Struktura exportu
Exportovat data může přihlášený uživatel s rolí MANAGER nebo SUPERUSER, vždy však jen u
těch testů a balíčků, které náleží skupině, jejímž je členem. Data jsou stažena ve formě
tabulkového souboru xlsx. Jeden řádek představuje jednu událost, ke které během vykonávání
testu došlo.
9.1. Popis exportovaných sloupců
9.1.1. Mandatorní sloupce
Následující sloupce jsou v exportu přítomné vždy a to v pevném pořadí zleva.
test_id id realizace testu, neměnné u všech událostí v rámci jednoho testu
date datum a čas (serverový) události
user_id id (číslo) přihlášeného uživatele, který test vykonal, v případě
nepřihlášeného hosta bude prázdné, neměnné u všech událostí
v rámci jednoho testu
event_id id (číslo) události, unikátní v rámci systému
pack_id id (číslo) testové baterie na které byl test realizován
pack_name název testové baterie
branch_id id (číslo) větve (branche) v testové baterii, u některých systémových
událostí může být prázdné
branch_name textová poznámka větve, doplňuje id větve
task_id id (číslo) úlohy (tasku) v testové baterii, u některých systémových
událostí může být prázdné
task_name textová poznámka úlohy, doplňuje id úlohy
slide_id id (číslo) slidy v testové baterii, u některých systémových událostí
může být prázdné
slide_name textová poznámka slidy, doplňuje id slidy
branch_order_pack absolutní pořadí větve v rámci realizace testu
branch_order relativní pořadí (počet průchodů) větví s daným branch_id
task_order_pack absolutní pořadí úlohy v rámci realizace testu
slide_order_task pořadí slidy v rámci úlohy
34
slide_order relativní pořadí (počet průchodů) slidou s daným slide_id v rámci
tasku
event_timestamp relativní čas události v ms vztažený k času startu testu
event_time_diff rozdílový čas v ms vztažený k času předchozí události
client_timestamp časové razítko klienta při vzniku události (pouze u některých událostí)
event_type id (číslo) typu události
event_name id (text) typu události
event_data textový výpis všech informací o události v XML formátu
output_value1 první volitelná výstupní hodnota ze slidy
output_value2 druhá volitelná výstupní hodnota ze slidy
output_value3 třetí volitelná výstupní hodnota ze slidy
output_value4 čtvrtá volitelná výstupní hodnota ze slidy
output_value5 pátá volitelná výstupní hodnota ze slidy
output_value6 šestá volitelná výstupní hodnota ze slidy
output_value7 sedmá volitelná výstupní hodnota ze slidy
output_value8 osmá volitelná výstupní hodnota ze slidy
output_value9 devátá volitelná výstupní hodnota ze slidy
output_value10 desátá volitelná výstupní hodnota ze slidy
Volitelné výstupní proměnné (output_value1 až output_value10) se uplatňují jen u
událostí typu ACTION a FINISH_SLIDE.
V rámci pokračujícího vývoje softwaru došlo k optimalizaci databázových tabulek a v exportu se
proto již nevyskytuje sloupec slide_output, jehož funkci plní některý ze sloupců
output_valueX(nejčastěji 1. v pořadí) a sloupec slide_data, jehož funkci plní obsahově
shodný sloupec event_data.
9.1.2. Občasné sloupce
Přítomnost těchto sloupců v exportu je závislá na definici jednotlivých slidů, které jsou zahrnuty
v exportovaném souboru. Jedná se o sloupce generované z XML obsahu sloupce event_data
událostí typu FINISH_SLIDE. Název je dán identifikátorem komponent typu TextField,
ComboBox, SelectPanelapod. Pořadí občasných sloupců je dáno jejich prvním výskytem
35
v exportovaném souboru a nelze ho předem stanovit. Hodnoty z komponent se stejným
identifikátorem napříč všechny slidy v exportu jsou ukládány do stejného sloupce.
36
10. Identifikace stavových proměnných v exportu v případě
využití CAT
10.1. CAT na úrovni slidy
Adaptivní funkce ve slidu jsou zabezpečovány větvením pomocí konstrukcí IFTHENELSEa
SWITCHCASE. Pro přehlednost algoritmů implementovaných v rámci XML definice slidy je
doporučeno využívat pro každou větev volání předdefinovaných subrutin ACTION. Tyto
umožňují před začátkem svého vykonávání uložit libovolná data do výstupních proměnných
OutputValue1 až OutputValue10, které jsou následně v exportu přepsány do sloupců
output_value1 a output_value10.
10.1.1. Příklad
Předpokládejme, že máme definovány proměnné pocetCelkem, pocetSpravne,
pocetSpatneceločíselného typu a při volání akce vyberexistují hodnoty proměnných neco
a spravne.
...
pocetCelkem=pocetCelkem+1neco==spravnepocetSpravne=pocetSpravne+1...
...
pocetSpatne=pocetSpatne+1...
...
...
37
Při každém volání akce vyber je inkrementována hodnota proměnné pocetCelkem a
výsledek uložen do výstupní proměnné OutputValue2. Dle výsledku vyhodnocení výrazu
neco==spravne je následně volána akce spravnyVyber nebo spatnyVyber. Každá
z těchto akcí si inkrementuje svoji vlastní proměnou pocetSpravne či pocetSpatne a
rovněž výsledek uloží do výstupní proměnné OutputValue2.
Tímto způsobem lze zaznamenat stav při větvení v rámci slidy.
10.2. CAT na úrovni úloh (task)
Do exportu testů byl zařazen sloupec slide_order, který uchovává počet opakování slidů se
stejným id v rámci jedné úlohy.
10.3. CAT na úrovni větví (branch)
Do exportu testů byl zařazen sloupec branch_order, který uchovává pořadí průchodu větví
se stejným id v rámci jedné testové realizace. Z informací uložených v exportovaných sloupcích
branch_id, branch_order_packa branch_orderlze jednoznačně identifikovat stav při
větvení pomocí branche i v případě cirkularit.
38
11. Ukončení zadávání lomené linie a polygonu, stylování
Varianty pro ukončení zadávání lomené linie a polygonu jsou nyní dvě. Tvůrce slidy je může
zvolit pomocí vlastnosti FinishStrategy v definici nástroje DrawPath nebo DrawPolygon.
a. Základní a výchozí nastavení je strategie AltClick. Zadávání lomené linie je ukončeno
kliknutím myši do prostoru mapové komponenty za současného přidržení klávesy “Alt”.
Posledním vrcholem lomené linie je místo, ve kterém došlo k ukončení zadávání.
Lomenou linii lze ukončit také jejím uzavřením. Toho lze docílit kliknutím myši v okolí
počátečního bodu zadávané lomené linie se současným přidržením klávesy “Shift” (“⇧”).
Rozhodné okolí počátečního bodu je zvýrazněno kružnicí kolem tohoto bodu. Poloměr
okolí může být nastaven změnou stylu (viz dále).
Zadávání polygonu je znázorněno rovněž lomenou linií a ukončení jeho zadávání se
provádí stejným způsobem. Rozdíl je pouze v tom, že vždy dojde k uzavření lomené
linie, a to pouze při zadání 3 a více bodů. Uzavřít polygon lze při této strategii dvěma
způsoby. Při použití klávesy “Alt” je vytvořen nový vrchol v místě kliknutí a od tohoto
vrcholu je dokončeno uzavření linie polygonu. Za použití klávesy “Shift” v okolí prvního
bodu se další vrchol nevytvoří a dojde k uzavření od předchozího zadaného vrcholu.
b. Novým nastavením je strategie DoubleClick. Zadávání lomené linie je vždy ukončeno
dvojitým kliknutím tlačítka myši v prostoru mapové komponenty. Posledním vrcholem
lomené linie je místo, ve kterém došlo ke dvojkliku.
Lomená linie může být také ukončena jejím uzavřením, a to provedením dvojkliku myši
v okolí počátečního bodu zadávané lomené linie se současným přidržením klávesy
“Shift”.
Zadávání polygonu lze opět ukončit dvěma způsoby, při kterých dojde automaticky
k uzavření linie za předpokladu splnění podmínek pro polygon. První způsob je
dvojklikem v prostoru mapové komponenty, při kterém dojde k vytvoření nového vrcholu
a dokončení uzavření polygonu. Za použití klávesy “Shift” a dvojkliku v okolí prvního
bodu se další vrchol nevytvoří a dojde k uzavření od předchozího zadaného vrcholu.
Příklad:
Nastavení strategie DoubleClick pro zadávání lomené linie:
…
...
...
39
V rámci mapové komponenty lze nastavovat různé styly pro vektorové objekty. Style je
definován jako samostatná datová struktura s několika položkami.
...
...
Přehled atributů pro definování stylů:
Název Typ Výchozí
hodnota
Platné hodnoty Popis
StrokeColor řetězec black CSS barvy Barva čáry, ohraničení; barvy můžou být zadány jménem dle
CSS, nebo jako hex hodnota #000000 #ffffff
(http://www.w3schools.com/cssref/css_colorsfull.asp)
StrokeWidth celé číslo 1 >= 0 Tloušťka čáry, ohraničení; 0 = bez ohraničení
StrokeOpacity číslo 1,0 0,0 1,0 Průhlednost čáry, ohraničení; 1 úplně neprůhledná
FillColor řetězec white CSS barvy Barva výplně plošných objektů
FillOpacity číslo 1,0 0,0 1,0 Průhlednost výplně plošných objektů
TextColor řetězec black CSS barvy Barva písma
TextStrokeColor řetězec CSS barvy Barva ohraničení písma
TextStrokeWidth celé číslo 0 >= 0 Tloušťka ohraničení písma
TextOpacity číslo 1,0 0,0 1,0 Průhlednost písma
TextFillOpacity číslo 1,0 0,0 1,0 Průhlednost výplně písma
FontFamily řetězec Arial systémové fonty Druh fontu písma; může se lišit v závislosti na systému
FontSize celé číslo 20 > 0 Velikost písma
PointRadius celé číslo 5 >= 0 Poloměr kruhu, který prezentuje bod; pouze ve spojení s
tvarem Circle; 0 = žádný bod
PointShape řetězec Circle Circle, Square,
Cross, XCross,
Asterisk,
Tvar bodu; ○, □, +, ×, ✳, △, ▽, ◇
40
TriangleUp,
TriangleDown,
Diamond
PointShapeScale číslo 5,0 > 0,0 Měřítko tvaru
Styl lze přiřadit vektorové vrstvě i jednotlivým vektorovým objektům. Styly jsou základní nebo
zvýrazňovací. Dále je možno pomocí stylu přiřazeného nástrojům pro zadávání bodu, lomené
linie a polygonu změnit vzhled zadávaného objektu a styl zvýraznění kurzoru myši při
aktivovaném nástroji.
Příklad:
Nastavení stylu vektorové vrstvy
...
...
Příklad:
Nastavení stylu vektorového objektu
...
...
...
41
Vlastnost Style definuje základní styl, zatímco vlastnost HoverStyle definuje přechodný styl
objektu, nad kterým se nachází kurzor myši. Hodnota Value představuje id stylu definovaného
v mapové komponentě.
Všechny vektorové objekty, které jsou umístěné ve vektorové vrstvě a nemají definovány své
vlastní styly, přejímají tyto z vektorové vrstvy.
Příklad:
Nastavení stylu zvýraznění kurzoru při aktivovaném nástroji pro zadávání vektorového objektu
...
...
Pro nastavení stylu kurzoru jsou relevantní jen atributy StrokeColor, StrokeWidth,
StrokeOpacity, FillColor, FillOpacity a PointRadius. Kurzor se vždy vykresluje jako kruh, při
nastavení PointRadius na hodnotu 0 nebude tento kruh zobrazen.
Výchozí styl zobrazení kurzoru vychází z výchozích hodnot atributů a má přepsány následující
hodnoty atributů:
Název Hodnota
StrokeColor blue
FillColor cyan
FillOpacity 0,3
Příklad:
Nastavení stylů zadávané lomené linie (polygonu)
...
...
42
Vlastnost StartPointStyle určuje styl zobrazení počátečního bodu zadávané lomené linie
(polygonu). Relevantní jsou atributy stylu StrokeColor, StrokeWidth, StrokeOpacity,
FillColor, FillOpacity a PointRadius. Nastavení hodnoty PointRadius zde má také význam pro
definování poloměru okolí pro funkci uzavření lomené linie.
Výchozí styl zobrazení počátečního bodu lomené linie má přepsány následující atributy:
Název Hodnota
FillColor cyan
FillOpacity 0,3
Vlastnost LineStyle určuje styl zobrazení spojnice zadávané lomené linie. Relevantní jsou
atributy StrokeColor, StrokeWidth a StrokeOpacity.
Výchozí styl zobrazení spojnice lomené linie má přepsány následující atributy:
Název Hodnota
StrokeColor cyan
FillOpacity 0
Vlastnost VertexStyle určuje styl zobrazení vrcholů zadávané lomené linie (polygonu).
Relevantní jsou atributy stylu StrokeColor, StrokeWidth, StrokeOpacity, FillColor,
FillOpacity a PointRadius. Nastavením atributu PointRadius na hodnotu 0 nebudou vrcholy
zvýrazněny.
Výchozí styl zobrazení vrcholů lomené linie má přepsány následující atributy:
Název Hodnota
StrokeColor blue
FillOpacity 0
PointRadius 2
43