VYSOKÉ UCEN͡ TECHNICKÉ V BRNEˇ BRNO UNIVERSITY OF TECHNOLOGY

FAKULTA INFORMACNÍCHˇ TECHNOLOGIÍ ÚSTAV POCÍTAˇ COVɡ GRAFIKY A MULTIMÉDIÍ

FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA

ANOTACE VE WYSIWYG TEXTOVÝCH EDITORECH

BAKALÁRSKÁˇ PRÁCE BACHELOR’S THESIS

AUTOR PRÁCE PETR LOUKOTA AUTHOR

BRNO 2012 VYSOKÉ UCEN͡ TECHNICKÉ V BRNEˇ BRNO UNIVERSITY OF TECHNOLOGY

FAKULTA INFORMACNÍCHˇ TECHNOLOGIÍ ÚSTAV POCÍTAˇ COVɡ GRAFIKY A MULTIMÉDIÍ

FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA

ANOTACE VE WYSIWYG TEXTOVÝCH EDITORECH ANNOTATIONS IN WYSIWYG TEXT EDITORS

BAKALÁRSKÁˇ PRÁCE BACHELOR’S THESIS

AUTOR PRÁCE PETR LOUKOTA AUTHOR

VEDOUCÍ PRÁCE Ing. JAROSLAV DYTRYCH SUPERVISOR

BRNO 2012

Abstrakt Tato bakal´aˇrsk´apr´acese zab´yv´an´avrhem oprav a vylepˇsen´ıdostupn´eho editoru anotac´ı a jejich implementac´ı. Editor anotac´ıpro WYSIWYG textov´eeditory je naps´anv jazyce JavaScript a vyv´ıjen v prostˇred´ıeditoru TinyMCE. Je nez´avisl´yna webov´em prohl´ıˇzeˇci a v budoucnu jej bude moˇzn´epouˇz´ıt s dalˇs´ımi WYSIWYG editory jako CKEditor ˇciAloha. N´avrh je zamˇeˇren na manipulaci s atributy typ˚u, zab´yv´ase vˇsak i nov´ym konceptem nasta- ven´ıeditoru anotac´ı. Souˇc´ast´ıˇreˇsen´ıje tak´ezpracov´an´ınab´ıdek anotac´ızas´ılan´ych serverem. Tato pr´acepopisuje n´avrh a implementaci zm´ınˇen´ych vylepˇsen´ıa ve sv´em z´avˇeru se vˇenuje moˇznostem dalˇs´ıho v´yvoje.

Abstract This bachelor’s thesis deals with the design of fixes and improvements of available annotations editor and their implementation. The annotations editor for WYSIWYG text editors is created in JavaScript language and developed in the environment of TinyMCE editor. It is independent on a and it will be possible to use it with other WYSIWYG editors like CKEditor or Aloha in future. The design is focused on manipulation with attributes of types but it also deals with the new concept of settings of annotations editor. The processing of suggested annotations that are sent by a server is also part of the solution. This thesis describes the design and implementation of mentioned improvements and pay attention to the possible ways of another development at its end.

Kl´ıˇcov´aslova JavaScript, WYSIWYG, textov´y,editor, TinyMCE, editor anotac´ı, anotace, web, rozˇs´ıˇren´ı, vylepˇsen´ı

Keywords JavaScript, WYSIWYG, text, editor, TinyMCE, annotations editor, annotation, web, extension, improvement

Citace Petr Loukota: Anotace ve WYSIWYG textov´ych editorech, bakal´aˇrsk´apr´,Brno, FIT VUT v Brnˇe,2012 Anotace ve WYSIWYG textov´ych editorech

Prohl´aˇsen´ı Prohlaˇsuji, ˇze jsem tuto bakal´aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım Ing. Jaroslava Dytrycha. Uvedl jsem vˇsechny liter´arn´ı prameny a publikace, ze kter´ych jsem ˇcerpal.

...... Petr Loukota 8. kvˇetna 2012

Podˇekov´an´ı R´adbych podˇekoval vedouc´ımu m´ebakal´aˇrsk´epr´aceIng. Jaroslavu Dytrychovi za vˇecn´e pˇripom´ınky k n´avrh˚umvylepˇsen´ıa rychlou odbornou pomoc pˇri ˇreˇsen´ıprobl´em˚u.

c Petr Loukota, 2012. Tato pr´ace vznikla jako ˇskoln´ıd´ılo na Vysok´em uˇcen´ıtechnick´em v Brnˇe, Fakultˇeinformaˇc- n´ıch technologi´ı. Pr´ace je chr´anˇena autorsk´ym z´akonem a jej´ıuˇzit´ıbez udˇelen´ıopr´avnˇen´ı autorem je nez´akonn´e, s v´yjimkou z´akonem definovan´ych pˇr´ıpad˚u. Obsah

1 Uvod´ 3

2 Anal´yza dostupn´eho editoru anotac´ı4 2.1 WYSIWYG textov´eeditory...... 4 2.1.1 TinyMCE a jeho rozˇs´ıˇren´ı...... 5 2.2 4A Framework...... 5 2.3 Editor anotac´ı...... 5 2.3.1 Rozhran´ıpro spolupr´acis WYSIWYG editory...... 6 2.3.2 Manipulace s atributy typ˚u...... 7 2.3.3 Nastaven´ı...... 7 2.3.4 Nab´ızen´ıanotac´ı...... 8

3 Pouˇzit´etechnologie9 3.1 HTTP...... 9 3.1.1 Identifik´ator zdroje...... 9 3.1.2 Hypertextov´ydokument...... 10 3.2 HTML a XHTML...... 10 3.3 XML...... 10 3.4 XPath...... 11 3.5 DOM...... 11 3.6 CSS...... 11 3.7 JavaScript...... 12 3.8 AJAX...... 12 3.9 Comet...... 13

4 N´avrh oprav a vylepˇsen´ı 14 4.1 Manipulace s atributy typ˚u...... 14 4.1.1 Strukturovan´eatributy...... 16 4.1.2 Odkaz na existuj´ıc´ıanotaci...... 16 4.1.3 Zmˇena typ˚uatribut˚u...... 16 4.1.4 Kontrola hodnot atribut˚u...... 17 4.1.5 Pˇrid´av´an´ıa odstraˇnov´an´ıatribut˚u...... 17 4.2 Nastaven´ı...... 18 4.2.1 Barvy typ˚uanotac´ı...... 19 4.3 Nab´ızen´ıanotac´ı...... 19 4.3.1 Z´adostˇ o nab´ızen´ıanotac´ı...... 20 4.3.2 Zobrazen´ınab´ıdnut´ych anotac´ı...... 21

1 5 Implementace 22 5.1 Manipulace s atributy typ˚u...... 22 5.1.1 Atribut typu jak´akoliv anotace“...... 23 ” 5.1.2 Pomocn´emetody...... 24 5.2 Nastaven´ı...... 24 5.2.1 V´ybˇerbarvy typ˚u...... 25 5.2.2 Pˇrevod mezi decim´aln´ıa hexadecim´aln´ısoustavou...... 25 5.3 Nab´ızen´ıanotac´ı...... 26 5.3.1 Zobrazen´ınab´ıdnut´ych anotac´ı...... 27

6 Testov´an´ı 29 6.1 Testovac´ıprostˇred´ı...... 29 6.1.1 Pouˇzit´en´astroje...... 29 6.1.2 Inicializaˇcn´ıskript datab´aze...... 30 6.1.3 Testovac´ıdokument...... 30 6.1.4 Alternativn´ıtestov´an´ı...... 30 6.2 Odhalen´enedostatky...... 30 6.2.1 Lokalizace jednoduch´ych typ˚u...... 30 6.2.2 Reakce tlaˇc´ıtek na stisk kl´avesy...... 32

7 Z´avˇer 33

Literatura 34

Pˇr´ılohy 37 Seznam pˇr´ıloh...... 38

A Obsah pˇriloˇzen´eho DVD 39

2 Kapitola 1

Uvod´

C´ılem t´eto bakal´aˇrsk´epr´ace je navrhnout opravy a vylepˇsen´ıdostupn´eho editoru anotac´ı. N´avrh je zamˇeˇren pˇredevˇs´ımna manipulaci s atributy typ˚u, zab´yv´ase vˇsak i nov´ym kon- ceptem nastaven´ıeditoru anotac´ı.Souˇc´ast´ıˇreˇsen´ıje tak´ezpracov´an´ınab´ıdek anotac´ı, kter´e jsou zas´ıl´any serverem. Tato pr´ace popisuje nejen samotn´yn´avrh, ale tak´eimplementaci a testov´an´ınavrˇzen´ych oprav a vylepˇsen´ı. Z´avˇerem se pak vˇenuje moˇznostem, kter´ymi by se editor anotac´ımohl vyv´ıjet do budoucna. Kapitola 2 se zab´yv´aanal´yzou dostupn´eho editoru anotac´ıs d˚urazem na jeho nedos- tatky, moˇzn´eopravy a vylepˇsen´ı. Jej´ı´uvodn´ıˇc´astje zamˇeˇrena na popis WYSIWYG editor˚u a zejm´ena na editor TinyMCE, v jehoˇzprostˇred´ıje editor anotac´ıvyv´ıjen. Definuje tak´e4A Framework coby n´avrh syst´emu pro kolaborativn´ıpoloautomatick´estrukturov´an´ıznalost´ı. V dalˇs´ıˇc´asti jsou pops´any nedostatky editoru anotac´ıt´ykaj´ıc´ıse manipulace s atributy typ˚u, nastaven´ıa nab´ızen´ıanotac´ı. Popis technologi´ı, kter´ebyly vyuˇzity pro dosavadn´ıv´yvoj editoru anotac´ı, a tak jsou vyuˇzity tak´epro jeho opravy a vylepˇsen´ı, je k dispozici v kapitole 3. Tato kapitola se vˇenuje technologi´ım HTTP, HTML, XHTML, XML, XPath, DOM, CSS, JavaScript, AJAX a Comet. V kapitole 4 je pops´ann´avrh oprav a vylepˇsen´ıdostupn´eho editoru anotac´ı. Prvn´ıˇc´ast kapitoly se zab´yv´amanipulac´ı s atributy typ˚ua navrhuje ˇreˇsen´ı vˇsech probl´em˚u, kter´e s touto problematikou souvisej´ı, dalˇs´ıˇc´astje vˇenov´ana n´avrhu nastaven´ıeditoru anotac´ı. V posledn´ıˇc´asti kapitoly je pops´ann´avrh nab´ızen´ıanotac´ı, kter´eby editor anotac´ımˇel umoˇzˇnovat. Kapitola 5 je vˇenov´ana implementaci nejd˚uleˇzitˇejˇs´ıch oprav a vylepˇsen´ıeditoru anotac´ı, bl´ıˇze se pak zab´yv´az´avaˇznˇejˇs´ımi probl´emy, kter´ese pˇriimplementaci vyskytly a kter´e bylo tˇreba ˇreˇsit. Jedn´ase napˇr´ıklad o validaci data a ˇcasu v jazyce JavaScript nebo pr´aci s atributy typu anyAnnotation. Kapitola 6 se zab´yv´amoˇznostmi testov´an´ınavrˇzen´ych oprav a vylepˇsen´ıeditoru anotaci a n´astroji, kter´ek testov´an´ıbyly vyuˇzity. D´ale popisuje nˇekolik vybran´ych nedostatk˚u, kter´e byly pˇritestov´an´ıodhaleny, spolu s jejich ˇreˇsen´ımi. Z´avˇercel´epr´ace pˇrin´aˇs´ısouhrn poznatk˚uz´ıskan´ych studiem technologi´ıa dostupn´eho editoru anotac´ı, shrnuje tak´ev´ysledky, kter´ych bylo implementac´ınavrˇzen´ych oprav a vy- lepˇsen´ıdosaˇzeno, a moˇznosti dalˇs´ıho v´yvoje.

3 Kapitola 2

Anal´yza dostupn´eho editoru anotac´ı

Tato kapitola se vˇenuje anal´yze dostupn´eho editoru anotac´ı, jehoˇzv´yvojem se zab´yval Ing. Martin Kleban ve sv´ediplomov´epr´aci [11]. D˚uleˇzitou souˇc´ast´ıt´eto bakal´aˇrsk´epr´ace je zhodnocen´ısouˇcasn´eho stavu editoru anotac´ı,kter´epom˚uˇze odhalit nedostatky a rovnˇeˇz pˇredpokl´adan´efunkce, kter´evˇsak v implementaci prozat´ımzcela chyb´ı. D´ıky t´eto anal´yze pak bude moˇzn´enavrhnout opravy a vylepˇsen´ı tak, aby takto vylepˇsen´yeditor anotac´ı splˇnoval vybran´epoˇzadavky uˇzivatel˚u. Uvodn´ı´ ˇc´ast t´eto kapitoly je vˇenov´ana WYSIWYG editor˚um, a to s d˚urazem na TinyMCE editor, se kter´ym v souˇcasn´edobˇeeditor anotac´ıpracuje a kter´yje tak vyuˇzit jako v´yvojov´eprostˇred´ıeditoru anotac´ı. N´aslednˇeje pops´ano propojen´ı, d´ıky nˇemuˇzeditor anotac´ıkomunikuje s editorem TinyMCE, a tak´e4A framework, kter´yobsahuje mimo jin´e i n´avrh vizu´aln´ıpodoby klient˚u, tedy i editoru anotac´ıpro WYSIWYG textov´eeditory. Zbytek kapitoly je pak vˇenov´ansamotn´emu editoru anotac´ıa jeho souˇcasn´emu stavu.

2.1 WYSIWYG textov´eeditory

WYSIWYG (What You See Is What You Get) textov´ymi editory rozum´ıme editory, kter´e uˇzivateli psan´ytext zobrazuj´ıv takov´epodobˇe,jakou bude skuteˇcnˇem´ıt v´ysledn´ydokument. WYSIWYG je zp˚usob editace dokumentu, d´ıky nˇemuˇzje ´uprava dan´eho dokumentu rychl´a a pˇrehledn´a,a dnes jsou t´ımto pojmem nejˇcastˇeji oznaˇcov´any textov´eprocesory. Pojmem WYSIWYG editory obvykle ch´apeme editory pro tvorbu cel´ych webov´ych str´anek takov´ym zp˚usobem, ˇzeHTML k´odje generov´anautomaticky. Teprve WYSIWYG textov´eeditory umoˇzˇnuj´ıtvorbu pouze n´aplnˇewebov´ych str´anek. V praxi maj´ıpojmy WYSIWYG editor a WYSIWYG textov´yeditor ˇcasto stejn´yv´yznam plynouc´ız kontextu, v t´eto pr´acijsou oba pojmy pouˇzity pro WYSIWYG textov´eeditory napsan´ev jazyce JavaScript. [26] WYSIWYG textov´eeditory jsou tedy vyuˇz´ıv´any pˇredevˇs´ım pˇri tvorbˇeobsahu webov´ych str´anek, napˇr.ˇcl´ank˚u. Tyto editory rovnˇeˇztvoˇr´ıHTML k´od, kter´yje uˇzivatel˚um skryt´y, a text zobrazuj´ıtak, jak bude na str´ance skuteˇcnˇevypadat. WYSIWYG textov´eeditory jsou dnes souˇc´ast´ı vˇetˇsiny redakˇcn´ıch syst´em˚u(CMS – Content Management Systems), pˇriˇcemˇzexistuje nˇekolik volnˇedostupn´ych editor˚u,kter´em˚uˇzezdarma vyuˇz´ıt kter´ykoliv CMS. Mezi ty nejpopul´arnˇejˇs´ıdnes patˇr´ınapˇr´ıklad TinyMCE [14], CKEditor [1] ˇciAloha [5].

4 2.1.1 TinyMCE a jeho rozˇs´ıˇren´ı TinyMCE je v souˇcasn´edobˇejeden z nejpopul´arnˇejˇs´ıch WYSIWYG textov´ych editor˚u.Je napsan´yv jazyce JavaScript a dnes jej vyuˇz´ıv´aˇrada ´uspˇeˇsn´ych redakˇcn´ıch syst´em˚u. Podle domovsk´ych str´anek [14] je TinyMCE aktu´alnˇeve verzi 3.5b3. S ohledem na popularitu TinyMCE byl pr´avˇetento editor zvolen jako WYSIWYG editor, v jehoˇzprostˇred´ıje vyv´ıjen editor anotac´ı. Tato volba vyˇzadovala nejprve vytvoˇren´ı jednoduch´eho rozˇs´ıˇren´ıeditoru TinyMCE, kter´eumoˇzn´ıpˇredevˇs´ım spouˇstˇet editor anotac´ı z jeho n´astrojov´eho panelu. Toto rozˇs´ıˇren´ıbude v budoucnu tˇreba vytvoˇrit pro kaˇzd´ydalˇs´ı zvolen´yWYSIWYG editor. Zm´ınˇen´erozˇs´ıˇren´ıeditoru TinyMCE je zobrazeno na obr´azku 2.1.

Obr´azek 2.1: Rozˇs´ıˇren´ıeditoru TinyMCE, kter´eumoˇzˇnuje spouˇstˇet editor anotac´ı

2.2 4A Framework

4A Framework [20] vznikl jako souˇc´astdisertaˇcn´ıpr´ace na Fakultˇeinformaˇcn´ıch technologi´ı VUT v Brnˇe.Koncept samotn´edisertaˇcn´ıpr´aceje pops´anv pojedn´an´ık t´ematu diser- taˇcn´ıpr´ace[2], pˇriˇcemˇz4A Frameworku se bl´ıˇzevˇenuje tak´esamostatn´aprezentace [3]. Souˇc´ast´ıdisertaˇcn´ıpr´aceje vytvoˇren´ısyst´emu, kter´yby umoˇzˇnoval kolaborativn´ıpoloau- tomatick´estrukturov´an´ıznalost´ıv re´aln´emˇcase, a 4A Framework tento syst´emnavrhuje. 4A Framework zahrnuje nejen n´avrh jednotliv´ych klient˚u, ale tak´especifikaci protokolu pro komunikaci se serverem a d´ale popis form´atu anotac´ı. Klientem je ch´ap´aneditor anotac´ı,kter´yuˇzivateli umoˇzˇnuje anotovat dokument nebo jeho ˇc´asti a zas´ılat vytvoˇren´eanotace serveru. Server pak prov´ad´ınejen spr´avu anotac´ı, ale tak´espr´avu typ˚uanotac´ıa jejich atribut˚u,uˇzivatel˚u,skupin i nastaven´ı. Tato bakal´aˇr- sk´apr´acese tedy zab´yv´avylepˇsen´ımdostupn´eho editoru anotac´ı, pˇriˇcemˇzpojmem editor anotac´ı je v t´eto pr´aci vˇzdy myˇslen editor anotac´ıpro WYSIWYG textov´eeditory. Ne- z´avisle na tomto klientovi je vyv´ıjen i editor anotac´ıjako rozˇs´ıˇren´ıpro webov´yprohl´ıˇzeˇc a dalˇs´ı.

2.3 Editor anotac´ı

Editor anotac´ıpro WYSIWYG textov´eeditory umoˇzˇnuje anotov´an´ıpr´avˇevytv´aˇren´eho do- kumentu. V dostupn´everzi je hotov´az´akladn´ıkonstrukce editoru, editor lze tedy spustit, pˇripojit se k serveru a rovnˇeˇzs n´ım komunikovat. Editor anotac´ıdisponuje hlavn´ımi funk- cemi, je moˇzn´evytvoˇrit, editovat ˇci smazat anotaci. Zat´ımco anotace vytvoˇren´epro urˇcitou ˇc´ast dokumentu se zobrazuj´ıpˇr´ımo v textu zv´yraznˇen´ım dan´eho fragmentu, anotace cel´eho dokumentu lze nal´ezt v samostatn´emdialogu. Pˇri anotov´an´ıse doposud nepracuje s atri- buty typ˚u, kter´euˇzivatel˚umznaˇcnˇeusnadn´ıvytv´aˇren´ıa editaci anotac´ı. Atribut˚um typ˚u se v´ıce vˇenuje kapitola 4.

5 Dostupn´yeditor anotac´ıd´ale obsahuje jednoduch´enastaven´ı, kter´evˇsaknen´ıpro bˇeˇzn´e pouˇz´ıv´an´ızcela ide´aln´ı.K dispozici je tak´ez´akladn´ıspr´ava uˇzivatel˚ua skupin. Uˇzivatele je moˇzn´efiltrovat dle jm´ena a aktu´alnˇepˇrihl´aˇsen´yuˇzivatel se m˚uˇzepˇridat ˇci odebrat ze zvo- len´eskupiny. Anotovan´ydokument lze manu´alnˇesynchronizovat se serverem. V takov´em pˇr´ıpadˇeeditor odstran´ıvˇsechny zobrazen´eanotace a vytvoˇr´ıje znovu podle XML zasla- n´eho serverem. Editor anotac´ıje pˇripraven pro lokalizaci, nyn´ıvˇsakexistuje pouze jeho verze v anglick´emjazyce. Nab´ızen´ıanotac´ı, kter´eje v´ıce pops´ano v kapitole 4, dostupn´y editor anotac´ıneum´ı. Na obr´azku 2.2 je zobrazeno uˇzivatelsk´erozhran´ı, kter´ebylo navrˇzeno tak, aby edi- tor anotac´ımohl poskytovat vˇsechny poˇzadovan´efunkce. Grafick´apodoba dialog˚u, kter´e prozat´ımneposkytuj´ıfunkˇcnost dle specifikace, nen´ıdokonˇcena.

Obr´azek 2.2: Dostupn´yeditor anotac´ı

2.3.1 Rozhran´ıpro spolupr´aci s WYSIWYG editory Pˇrestoˇzesouˇcasn´yeditor anotac´ıpracuje pouze s editorem TinyMCE, jeho n´avrh byl vy- tvoˇren tak, aby jej v budoucnu bylo moˇzn´epouˇz´ıvat i s kter´ymkoliv jin´ym WYSIWYG editorem. Aby editor anotac´ınebyl pˇr´ımo z´avisl´yna zvolen´em WYSIWYG editoru, bylo nezbytn´emimo rozˇs´ıˇren´ı pro dan´yeditor vytvoˇrit tak´erozhran´ı pro spolupr´acieditoru anotac´ı s WYSIWYG editory. Toto rozhran´ı umoˇzˇnuje jednotn´yzp˚usob pr´acese vˇsemi WYSIWYG editory, pro kaˇzd´ydalˇs´ızvolen´yWYSIWYG editor tedy postaˇc´ıvytvoˇrit roz- ˇs´ıˇren´ıimplementuj´ıc´ıtoto rozhran´ı.

6 2.3.2 Manipulace s atributy typ˚u Manipulace s atributy typ˚uusnadn´ıuˇzivateli vytv´aˇren´ıa editaci anotac´ı. S v´ybˇerem typu anotace se maj´ınaˇc´ıst jeho atributy, kter´ym uˇzuˇzivatel pouze pˇriˇrad´ıhodnotu, nemus´ıtedy kaˇzd´yatribut pˇrid´avat manu´alnˇe. Dostupn´yeditor anotac´ıˇz´adn´ym zp˚usobem nepracuje s atributy typ˚u. Atributy typ˚umohou b´yt jednoduch´enebo strukturovan´e. Editor anotac´ınab´ız´ısedm jednoduch´ych typ˚uatribut˚u(Integer, String, Date a dalˇs´ı), pˇriˇcemˇzkaˇzd´yatribut m˚uˇze ob- sahovat pouze povolen´ehodnoty. Strukturovan´yatribut naopak obsahuje vnoˇrenou anotaci nebo odkaz na jiˇzexistuj´ıc´ıanotaci, pˇriˇcemˇztento m˚uˇze m´ıti dalˇs´ıatributy – jednoduch´e ˇcistrukturovan´e.Dostupn´yeditor anotac´ıneˇreˇs´ımanipulaci s atributy typ˚u, proto ani ne- oˇsetˇruje povolen´ehodnoty, nezab´yv´ase zmˇenou strukturovan´eho atributu na jednoduch´y, kdy je tˇreba odstranit vˇsechny vnoˇren´eatributy strukturovan´eho atributu, neˇreˇs´ıani na- ˇcten´ıatribut˚uodkazovan´eanotace, kter´evˇsaknesmˇej´ıb´yt editov´any, a dalˇs´ı. Uˇzivatel by tak´emˇel m´ıt moˇznost pˇrid´avat atributy k dan´ym typ˚umnebo je mazat. Manipulace s atributy typ˚uje rozs´ahl´yprobl´em, kter´yse svou implementac´ıbude vyˇza- dovat z´asahdo v´ıce ˇc´ast´ıeditoru. Jiˇzhotovou funkcionalitu bude tˇreba opravit a vylepˇsit. Editor anotac´ıje navrˇzentak, aby manipulaci s atributy typ˚ubylo moˇzn´edoplnit.

2.3.3 Nastaven´ı Dostupn´yeditor anotac´ı umoˇzˇnuje uˇzivateli zadat zn´am´enastaven´ı pomoc´ı jeho jm´ena a hodnoty, jak je patrn´ez obr´azku 2.3. Pokud uˇzivatel nezn´apˇresn´yn´azev nastaven´ı, nem˚uˇzetakov´enastaven´ı pouˇz´ıt. Editor anotac´ı by ale mˇelv jednom dialogu uˇzivateli umoˇznit zadat pouze hodnoty vˇsech zn´am´ych nastaven´ı, a to tak, aby kaˇzd´enastaven´ıbylo co nejl´epe pˇrizp˚usoben´e. Nastaven´ıhlavn´ıuˇzivatelsk´eskupiny by mˇelo j´ıtvybrat ze skupin, do kter´ych je uˇzivatel pˇrihl´aˇsen, nastaven´ıbarev typ˚uanotaci by mˇelo b´yt moˇzn´ezadat v´ybˇerem zvolen´ebarvy a tak d´ale. Uˇzivateli souˇcasnˇemus´ıb´yt zachov´anamoˇznost zadat nov´e, pro editor anotac´ınezn´am´enastaven´ı.

Obr´azek 2.3: Nastaven´ıdostupn´eho editoru anotac´ı

7 2.3.4 Nab´ızen´ıanotac´ı Editor anotac´ım´aumˇetzobrazit nab´ıdky anotac´ı,kter´emu zaˇsle server, podobnˇe, jako jsou zobrazov´any anotace. Uˇzivatel nejprve mus´ım´ıt moˇznost urˇcit, zda chce nab´ıdky obdrˇzet pro cel´ydokument nebo jeho ˇc´asta anotace jak´eho typu mu maj´ıb´ytnab´ıdnuty. Pot´e, co server zaˇsle nab´ıdky anotac´ı, editor anotac´ı mus´ı nab´ıdky zobrazit v textu (nab´ıdky anotac´ıcel´eho dokumentu souˇcasn´yn´avrh nezahrnuje) a uˇzivateli dovolit nab´ıdnut´eanotace pˇrijmout, odm´ıtnout ˇcipˇrijmout po editaci. Po pˇrijet´ınab´ıdky m´adoj´ıt k vytvoˇren´ıbˇeˇzn´e anotace, po odm´ıtnut´ık odstranˇen´ınab´ıdky. Pokud se nav´ıcjedn´ao nab´ıdku vnoˇrenou v jin´enab´ıdce, nesm´ı b´ytmoˇzn´etakovou nab´ıdku samostatnˇepˇrijmout ani odm´ıtnout. Dostupn´yeditor anotac´ınem´aimplementov´anu ˇz´adnou ˇc´ast nutnou pro spr´avn´efungov´an´ı nab´ızen´ıanotac´ı.

8 Kapitola 3

Pouˇzit´etechnologie

N´asleduj´ıc´ıkapitola shrnuje technologie, kter´ebyly vyuˇzity pro v´yvoj editoru anotac´ı. Tyto technologie byly voleny s ohledem na poˇzadavky v´ysledn´eho ˇreˇsen´ı a jedn´ase zejm´ena o technologie bˇeˇznˇepouˇz´ıvan´epro tvorbu webov´ych str´anek a webov´ych aplikac´ı. Tato bakal´aˇrsk´apr´acese vˇenuje dalˇs´ımu rozˇs´ıˇren´ıa vylepˇsen´ıdostupn´eho editoru anotac´ı, proto tak´evyuˇz´ıv´ajiˇzdˇr´ıve zvolen´etechnologie. U kaˇzd´ez technologi´ıse zamˇeˇr´ım na jej´ıstruˇcn´ypopis a vznik, zm´ın´ımse tak´eo ak- tu´aln´ıverzi dan´etechnologie. Tato kapitola popisuje protokol HTTP, jazyk HTML, CSS, JavaScript, XML a XPath, zab´yv´ase vˇsaki zajiˇstˇen´ım asynchronn´ıkomunikace pomoc´ı AJAX a Comet.

3.1 HTTP

HTTP (Hypertext Transfer Protocol) je v souˇcasn´edobˇenejpouˇz´ıvanˇejˇs´ım protokolem pro pˇrenos dat mezi klientem a serverem. Cinnostˇ tohoto protokolu je zaloˇzena na prin- cipu dotaz-odpovˇed’, pˇriˇcemˇzje urˇcen pro v´ymˇenu hypertextov´ych dokument˚uve form´atu HTML. D´ıky standardu MIME (Multipurpose Internet Mail Extensions) je vˇsakmoˇzn´e t´ımto protokolem pˇren´aˇset i libovoln´ejin´esoubory. [6] Klient, kter´ypo serveru poˇzaduje nˇejak´ydokument, vytvoˇr´ıpoˇzadavek, kter´ymimo jin´eobsahuje identifik´ator poˇzadovan´eho dokumentu. Server pak na takovou ˇz´adost od- pov´ıa za odpovˇed´ızaˇsle poˇzadovan´ydokument. Pˇri opakovan´em poˇzadavku klienta server nepozn´a,zda nov´ypoˇzadavek souvis´ıs pˇredchoz´ım, proto protokol HTTP naz´yv´amebez- stavov´ym protokolem. [6] Prvn´ıverze protokolu HTTP vznikla v roce 1991 a nesla oznaˇcen´ıHTTP/0.9. Server tehdy pos´ılal pˇr´ımo poˇzadovan´ydokument, jednalo se tedy o v˚ubec nejjednoduˇsˇs´ıimplemen- taci. Verze HTTP/1.0, kter´amimo jin´evyuˇz´ıv´ainternetov´ystandard MIME pro identifikaci typu dokumentu, poch´az´ız roku 1996. Aktu´aln´ıverze tohoto protokolu HTTP/1.1, kter´aje stabiln´ı, a tak se jiˇzd´ale nevyv´ıj´ı[34], vˇsakvznikla jeˇstˇeo rok pozdˇeji, pˇreps´ana pak byla v roce 1999 a jej´ıspecifikace je d´ana normou RFC 2616 [12].

3.1.1 Identifik´ator zdroje Jednotliv´am´ısta v prostˇred´ıInternetu jsou oznaˇcov´ana zdroje. Kaˇzd´ytakov´yzdroj posky- tuje nˇejak´adata a kaˇzd´yzdroj m´atak´esv˚uj jednoznaˇcn´yidentifik´ator. V souˇcasn´edobˇeexis- tuj´ıdva typy identifik´ator˚u– URL (Uniform Resource Locator) a URN (Uniform Resource Name). Oba typy identifik´ator˚use souhrnnˇeoznaˇcuj´ıURI (Uniform Resource Identifier),

9 pˇriˇcemˇzprotokol HTTP pro identifikaci zdroj˚uvyuˇz´ıv´aURL. URL specifikuje m´ısto v s´ıti, jde tedy o identifik´ator z´avisl´yna um´ıstˇen´ıv s´ıti. Oproti tomu URN pojmenov´av´azdroj, a tak je na um´ıstˇen´ıv s´ıti nez´avisl´y. [6]

3.1.2 Hypertextov´ydokument Hypertext je takov´ytext, kter´yve sv´emobsahu zahrnuje odkazy. Hypertextov´ymdoku- mentem pak tedy rozum´ıme dokument, ve kter´empˇrevl´ad´abˇeˇzn´ytext, avˇsakdoplnˇen´y o odkazy na dalˇs´ıhypertextov´edokumenty. [27]

3.2 HTML a XHTML

HTML (Hypertext Markup Language) je znaˇckovac´ı jazyk, kter´yje z´akladn´ım jazykem vyuˇz´ıvan´ym pˇritvorbˇewebov´ych str´anek. Jedn´ase o nejzn´amˇejˇs´ıaplikaci univerz´aln´ıho znaˇckovac´ıho jazyka SGML (Standard Generalized Markup Language). Pro HTML je cha- rakteristick´amnoˇzina znaˇcek a atribut˚u,kter´eud´avaj´ıv´yznam jednotliv´ych ˇc´ast´ıdoku- mentu. Dokument ve form´atu HTML je hypertextov´ydokument. Kaˇzd´aznaˇcka v jazyce HTML m˚uˇze b´ytp´arov´aˇcinep´arov´a.Nep´arov´aznaˇcka m´aspecifick´yv´yznam v dan´emm´ıstˇe dokumentu, p´arov´aznaˇcka pak strukturuje obsah dokumentu nach´azej´ıc´ıse mezi poˇc´ateˇcn´ı a koncovou znaˇckou dle v´yznamu znaˇcky a jej´ıch atribut˚u.[29] V´yvoj jazyka HTML zaˇcalv roce 1991, kdy byla vyd´ana jeho prvn´ıverze s oznaˇcen´ım HTML 0.9. Do roku 1999 pak vzniklo nˇekolik dalˇs´ıch verz´ıvˇcetnˇeHTML 4.0, do jej´ıˇzspeci- fikace pˇribyly nov´eznaˇcky. Chyby t´eto verze byly opraveny v n´asledn´emHTML 4.01, kter´e je dodnes tak´enejˇcastˇeji pouˇz´ıvanou verz´ıjazyka HTML. Od roku 2007 se d´ale pˇripravuje HTML 5, kter´epˇrid´av´adalˇs´ınov´eznaˇcky napˇr´ıklad pro podporu pˇrehr´av´an´ıvide´ı. Dokon- ˇcen´ıspecifikace je vˇsak i dnes ot´azkou jeˇstˇenˇekolika let. Ani podpora HTML 5 ze strany webov´ych prohl´ıˇzeˇc˚unen´ı´upln´a,proto je jeho pouˇzit´ıpˇri v´yvoji webov´ych str´anek mnohdy problematick´e. [28] Pod pojmem XHTML se rozum´ıvarianta jazyka HTML, kter´aje aplikac´ıjazyka XML (Extensible Markup Language) [29]. P˚uvodnˇese pˇredpokl´adalo, ˇze jazyk XHTML nah- rad´ıHTML, nakonec se tak ale nestalo. S v´yvojem HTML 5 se pracuje tak´ena variantˇe XHTML 5. Aktu´aln´ıverze XHTML oznaˇcena XHTML 1.1 poch´az´ız roku 2010 [28].

3.3 XML

XML (Extensible Markup Language) je jazyk vyvinut´ya standardizovan´ykonsorciem W3C, kter´yslouˇz´ıjako jednoduch´ytextov´yform´atna reprezentaci strukturovan´ych dat. Jak jiˇz ze samotn´eho n´azvu vypl´yv´a,XML je snadno rozˇs´ıˇriteln´y, byl odvozen od jazyka SGML jeho zjednoduˇsen´ım. Jazyk XML je urˇcen pˇredevˇs´ım pro v´ymˇenu dat mezi aplikacemi. Od vzniku jazyka XML se vyvinulo nˇekolik souvisej´ıc´ıch technologi´ı. Mezi nˇepatˇr´ınap- ˇr´ıklad XLS [32] slouˇz´ıc´ıpro transformaci XML dokumentu na jin´yXML, HTML ˇcitextov´y dokument, d´ale jazyk XQuery [31], kter´yumoˇzˇnuje pokl´ad´an´ıdotaz˚unad daty ve form´atu XML, nebo technologie XPath, kterou se budeme zab´yvat v samostatn´ekapitole. Posledn´ı verze jazyka XML je p´at´arevize verze 1.0 poch´azej´ıc´ız roku 2008. [35]

10 3.4 XPath

XPath (XML Path Language) je jazyk, kter´yumoˇzˇnuje zpracovat hodnoty odpov´ıdaj´ıc´ı datov´emu modelu XDM (XQuery and XPath Data Model). Datov´ymodel reprezentuje XML dokument v podobˇestromu a z´aroveˇnvymezuje povolen´ehodnoty v´yraz˚uv jazyce XPath. V´ysledkem v´yrazu v jazyce XPath m˚uˇze b´yt v´ybˇeruzl˚uze vstupn´ıho dokumentu, atomick´ahodnota nebo libovoln´asekvence povolen´adatov´ym modelem. XPath 1.0 je podmnoˇzinou XPath 2.0, pˇriˇcemˇzXPath 2.0 rozˇsiˇruje pˇredchoz´ı verzi napˇr´ıklad o ˇsirˇs´ıpodporu datov´ych typ˚u.XPath 2.0 je zpˇetnˇekompatibiln´ıs XPath 1.0 a t´emˇeˇrvˇsechny v´yrazy v XPath 1.0 vracej´ıstejn´ev´ysledky i v XPath 2.0. [30]

3.5 DOM

DOM (Document Object Model) neboli objektov´ymodel dokumentu je objektovˇeoriento- van´areprezentace dokument˚uve form´atech HTML a XML. Pomoc´ıDOM je moˇzn´epˇristu- povat k dan´emu dokumentu jako ke stromu a modifikovat tak jeho obsah. Jedn´ase o plat- formnˇea jazykovˇenez´avisl´erozhran´ı,kter´ebylo jako reakce na nekompatibilitu p˚uvodn´ıch rozhran´ıv r˚uzn´ych webov´ych prohl´ıˇzeˇc´ıch standardizov´ano konsorciem W3C. V souˇcasn´e dobˇetak lze vytv´aˇret skripty, kter´espr´avnˇefunguj´ıve vˇetˇsinˇewebov´ych prohl´ıˇzeˇc˚u. Pˇrestoˇzezm´ınˇen´ystandard W3C definuje vazbu DOM na jazyky JavaScript a Java [41], nen´ıDOM na tˇechto jazyc´ıch pˇr´ımo z´avisl´ya jeho implementace existuje i pro ˇradu dalˇs´ıch programovac´ıch jazyk˚u.Prvn´ıverze standardu W3C vznikla v roce 1998 a od t´edoby byl standard d´ale upravov´an. V souˇcasn´edobˇese dle verz´ıdˇel´ıdo nˇekolika ´urovn´ı, pˇriˇcemˇz existuj´ı´urovnˇeDOM Level 0 aˇzDOM Level 3. Kaˇzd´aaplikace, kter´apodporuje urˇcitou ´uroveˇn(DOM Level), pak mus´ıimplementovat vˇsechny povinn´emoduly t´eto ´urovnˇei vˇsech niˇzˇs´ıch ´urovn´ı. [8]

3.6 CSS

CSS (Cascading Style Sheets) je jazyk, kter´yslouˇz´ıpro popis zp˚usobu zobrazen´ıwebov´ych str´anek. Pomoc´ıCSS je moˇzn´edefinovat rozloˇzen´ıstr´anky, barvy a p´ısmo a pˇrizp˚usobit tak str´anku r˚uzn´ym typ˚um zobrazen´ı. Jazyk CSS je nez´avisl´yna jazyce HTML a lze jej pouˇz´ıt i s jak´ymkoliv jin´ym jazykem zaloˇzen´ym napˇr´ıklad na jazyce XML. Hlavn´ıv´yhodou CSS je oddˇelen´ıobsahu dokumentu od jeho vizu´aln´ıpodoby, kter´aje tak definov´ana v samostatn´em CSS souboru. Jedin´ystyl pak lze nav´ıc vyuˇz´ıtpro v´ıce nez´avisl´ych dokument˚u. [29] Syntaxe jazyka CSS sest´av´az pravidel, z nichˇzkaˇzd´eobsahuje selektor a d´ale v´yˇcet vlastnost´ı, kter´ese k nˇemu vztahuj´ı. Selektor urˇcuje, kter´ym element˚umv dokumentu bu- dou pˇriˇrazeny dan´evlastnosti, pˇriˇcemˇzselektory je moˇzn´er˚uznˇekombinovat. Deklarace vlastnosti je pak vˇzdy sloˇzena z n´azvu a hodnoty vlastnosti, kter´ejsou od sebe navz´ajem oddˇeleny dvojteˇckou. Prvn´ın´avrh jazyka CSS vznikl v roce 1994 a jeho autorem byl H˚akon Wium Lie [13]. V souˇcasn´edobˇeje CSS udrˇzov´ano konsorciem W3C. Aktu´aln´ıverze CSS poch´az´ız ˇcervna roku 2011 [33], kdy byla vyd´ana prvn´ırevize CSS verze 2 obsahuj´ıc´ırozˇs´ıˇren´ı, kter´ajiˇzdnes podporuje vˇetˇsina webov´ych prohl´ıˇzeˇc˚u.Vedle CSS2.1 se d´ale pracuje tak´ena CSS3, jehoˇz nˇekter´evlastnosti jiˇznyn´ılze pˇri tvorbˇewebov´ych str´anek vyuˇz´ıt.

11 3.7 JavaScript

JavaScript je interpretovan´y, objektovˇe-orientovan´yprogramovac´ıjazyk, kter´yje svou syn- tax´ıpodobn´yjazyku C, C++ ˇciJava. Zde vˇsakpodobnost konˇc´ı,JavaScript m´apotlaˇcenu typovou kontrolu a mnoh´edalˇs´ımyˇslenky pˇreb´ır´az jazyka Perl – pˇr´ıkladem m˚uˇze b´yt pr´ace s poli ˇciregul´arn´ımi v´yrazy. JavaScript se dnes vyuˇz´ıv´apˇri tvorbˇewebov´ych str´anek, vkl´ad´a se pˇr´ımo do HTML dokumentu a lze pomoc´ınˇejvytvoˇrit animace, efekty, ale t´eˇzjedno- duch´eGUI s tlaˇc´ıtky a textov´ymi poli. Klientsk´yJavaScript je dnes podporov´anvˇetˇsinou webov´ych prohl´ıˇzeˇc˚u.[7] JavaScript se nejprve vyv´ıjel pod oznaˇcen´ım LiveScript, v produktech Microsoft je tak´e oznaˇcov´anjako JScript. Na poˇc´atku vzniku jazyka JavaScript st´ala spoleˇcnost Netscape a pozdˇeji tak´eSun Microsystems. Organizace ECMA vytvoˇrila a publikovala nˇekolik verz´ı standardu jazyka JavaScript, v roce 1997 pak vznikl standard ECMA-262, kter´yJavaScript definoval, ovˇsem pod oznaˇcen´ım ECMAScript [40]. Pod pojmem JavaScript dnes tedy ro- zum´ıme jeden jazyk, byt’ ne se zcela ust´alen´ym n´azvem, pr´avˇen´azev JavaScript se vˇsak nejv´ıce prosadil. Nejnovˇejˇs´ıverz´ıstandardu ECMA-262 je edice 5.1 vydan´av ˇcervnu roku 2011 [16]. Pojem klientsk´yJavaScript vznikl integrac´ıJavaScriptu do webov´ych prohl´ıˇzeˇc˚u. Kromˇe univerz´aln´ıch prostˇredk˚ujazyka vyuˇz´ıv´aklientsk´yJavaScript tak´eDOM, kter´yumoˇzˇnuje pracovat s obsahem dokument˚u, a d´alerozhran´ıpro interakci s ud´alostmi webov´eho proh- l´ıˇzeˇce. Klientsk´yJavaScript je tak´emoˇzn´eobohatit o dalˇs´ıknihovny, JavaScript lze vˇsak pouˇz´ıti na stranˇeserveru. [7] Zaj´ımavost´ı jazyka JavaScript je zp˚usob implementace tˇr´ıd, kter´e jsou typick´e pro objektovˇe-orientovan´ejazyky. JavaScript nem´atˇr´ıdy, jak je zn´amez jin´ych jazyk˚u, za tˇr´ıdu vˇsakpovaˇzujeme samotn´ykonstruktor, kter´yvyuˇz´ıv´avlastnost prototype.[25] Pˇriv´yvoji editoru anotac´ıbude ˇcasto potˇreba manipulovat s textov´ymi ˇretˇezci, k ˇce- muˇzv jazyce JavaScript slouˇz´ıobjekt String [37]. Tento objekt mimo jin´enab´ız´ımetodu substr(), kterou lze vyuˇz´ıt pro zjiˇstˇen´ı, ˇc´ım urˇcit´ytextov´yˇretˇezec konˇc´ı[21]. D˚uleˇzit´aje tak´e manipulace s ˇc´ıseln´ymi hodnotami, kter´elze rozpoznat napˇr´ıklad pomoc´ıfunkce isFinite() [36].

3.8 AJAX

AJAX (Asynchronous JavaScript and XML) je technologie, kter´aumoˇzˇnuje mˇenit obsah webov´ych str´anek, aniˇzby str´anka musela b´yt opˇetovnˇenaˇctena. Tato technologie se vyuˇz´ıv´a pˇriv´yvoji webov´ych aplikac´ıa dnes ji podporuje vˇetˇsina webov´ych prohl´ıˇzeˇc˚u.Pod poj- mem AJAX ch´apeme nˇekolik technologi´ı, kter´ese vyuˇz´ıvaj´ısouˇcasnˇe,jde zejm´ena o HTML (XHTML), CSS, DOM, JavaScript a objekt XMLHttpRequest - slouˇz´ı pro asynchronn´ı komunikaci se serverem. Za autora pojmu AJAX je povaˇzov´anJesse James Garrett, kter´yjej v roce 2005 pˇreds- tavil ve sv´emˇcl´anku nazvan´em Ajax: A New Approach to Web Applications [4]. AJAX dnes pouˇz´ıvaj´ınapˇr´ıklad nˇekter´eaplikace spoleˇcnosti Google, kter´ese t´eˇzzaslouˇzily o jeho popularitu. Mezi nev´yhody technologie AJAX patˇr´ıvyˇsˇs´ıpoˇcet HTTP poˇzadavk˚u,a tedy vˇetˇs´ıobjem pˇren´aˇsen´ych dat. [9]

12 3.9 Comet

Comet je koncept, kter´yse vyuˇz´ıv´apˇritvorbˇewebov´ych aplikac´ıa kter´yumoˇzˇnuje zas´ıl´an´ı dat ze serveru klient˚um v libovoln´emokamˇziku. Klient nejprve provede inicializaci komuni- kace, odpovˇed’ serveru pak pˇrijde jako reakce na ud´alost serveru, tedy bez dalˇs´ıakce klienta. Jednou z moˇznost´ıpˇrenosu dat je vytvoˇren´ıjednoho udrˇzovan´eho spojen´ı, coˇzv´yraznˇesni- ˇzuje dobu odezvy. Comet je podobn´ytechnologii AJAX, je tedy zaloˇzen´yna asynchronn´ı komunikaci mezi klientem a serverem. Koncept Comet je vhodn´ypro v´ıceuˇzivatelsk´ewebov´e aplikace, kter´evyˇzaduj´ıkomunikaci v re´aln´emˇcase. Autorem pojmu Comet je Alex Russell, kter´yjej v roce 2006 pˇredstavil v jednom z ˇcl´ank˚una sv´emblogu [19].

13 Kapitola 4

N´avrh oprav a vylepˇsen´ı

V t´eto kapitole se zab´yv´amn´avrhem oprav a vylepˇsen´ıdostupn´eho editoru anotac´ı, kter´e vych´azej´ız anal´yzy jeho souˇcasn´eho stavu popsan´ev kapitole 2. Vylepˇsen´ıeditoru jsem navrhoval dle jeho poˇzadovan´ych vlastnost´ıa nejd˚uleˇzitˇejˇs´ıch nedostatk˚u, kter´ejsem objevil v dostupn´emeditoru anotac´ı. Prvn´ıˇc´astt´eto kapitoly je zamˇeˇrena na n´avrh manipulace s atributy typ˚u.Bez n´ıje ano- tov´an´ıdokumentu zdlouhav´ea nenab´ız´ımoˇznosti dle specifikace, nebot’ uˇzivatel mus´ıkaˇzd´y atribut manu´alnˇevytvoˇrit. V kapitole se d´ale vˇenuji n´avrhu nov´eho nastaven´ıeditoru ano- tac´ı, kter´em´aza c´ıl skr´yt pˇred uˇzivatelem implementaˇcn´ıdetaily a poskytnout pˇrizp˚usoben´e nastaven´ı. Posledn´ıˇc´astje vˇenov´ana nab´ızen´ıanotac´ı,kde se kromˇemoˇznostem implemen- tace vˇenuji n´avrhu dialogu pro odesl´an´ıˇz´adost´ıo nab´ızen´ıserveru, dialogu pro zobrazen´ı nab´ıdnut´ych anotac´ıa tak´ezobrazen´ınab´ıdnut´ych anotac´ıv textu dokumentu.

4.1 Manipulace s atributy typ˚u

Manipulace s atributy typ˚uuˇzivateli usnadn´ıvytv´aˇren´ınov´ych anotac´ı. Atributy typ˚ujsou uloˇzeny u kaˇzd´eho typu a pˇri vytv´aˇren´ıanotace dan´eho typu by s nimi mˇelo b´ytmoˇzn´e manipulovat. Manipulace zahrnuje nejen naˇcten´ıatribut˚u,ale tak´ezmˇeny jejich typ˚u, pˇri- d´av´an´ıˇciodstraˇnov´an´ıatribut˚uz dan´eho typu a v nˇekter´ych pˇr´ıpadech i pˇresun atribut˚u mezi ´urovnˇemi stromu atribut˚u.Uˇzivatel bude m´ıt moˇznost ke kaˇzd´emu typu pˇridat atributy a pˇridalˇs´ım vytv´aˇren´ıanotace tohoto typu uˇzpouze vyplnit hodnoty naˇcten´ych atribut˚u. Kaˇzd´yatribut je nˇejak´eho typu. Tento typ m˚uˇze b´yt jednoduch´y, v takov´empˇr´ıpadˇe je typ atributu nˇekter´yze sedmi jednoduch´ych typ˚u, kter´eeditor anotac´ıpodporuje, nebo strukturovan´y. Kter´ykoliv uˇzivatelem vytvoˇren´ytyp je strukturovan´ytyp. Atributy jedno- duch´ych typ˚ujsou naz´yv´any jednoduch´eatributy, atributy strukturovan´ych typ˚unaopak strukturovan´eatributy. Atributy strukturovan´eho typu mohou obsahovat vnoˇrenou anotaci nebo odkaz na jiˇzexistuj´ıc´ıanotaci a mohou rovnˇeˇzm´ıtdalˇs´ıatributy. Strom atribut˚utedy m˚uˇzem´ıt libovoln´ypoˇcet´urovn´ı. Naˇc´ıt´an´ıatribut˚udan´eho typu bude nutn´eprov´adˇet jak pˇriv´ybˇeru typu anotace, a to zad´an´ımn´azvu typu nebo v´ybˇerem pomoc´ıdialogu Types, tak pˇri v´ybˇeru ˇc´asti dokumentu pro anotov´an´ı. Bude nutn´ezajistit, aby uˇzivatel mohl anotovat cel´ydokument nebo nˇekterou jeho ˇc´ast a nemohlo tedy doj´ıtk nekonzistentn´ımu stavu. Pˇrizobrazen´ıdialogu Annotate proto bude stisknuto tlaˇc´ıtko Annotate whole document, kter´ebude moˇzn´eodˇskrtnout pouze v´ybˇerem urˇcit´eˇc´asti dokumentu o nenulov´ed´elce. S naˇc´ıt´an´ım atribut˚ubude tˇreba zajistit spr´avn´enaˇcten´ıstrukturovan´ych atribut˚u,kter´e

14 ve sv´evlastnosti nazvan´e Type neobsahuj´ın´azev typu, ale URI dan´eho strukturovan´eho typu. Z t´eto URI bude tˇreba z´ıskat n´azev typu atributu, pˇr´ıpadnˇecestu, je-li typ atributu podtypem nˇekter´eho z typ˚u. Pˇrinaˇc´ıt´an´ıatribut˚ubudou naˇcteny atributy pouze do jedn´e ´urovnˇestromu, nebudou tedy naˇc´ıt´any atributy typ˚ustrukturovan´ych atribut˚u.Kaˇzd´ytyp strukturovan´eho atributu totiˇzm˚uˇzeobsahovat dalˇs´ıstrukturovan´eatributy, a tak by mohlo doj´ıt k nekoneˇcn´emu naˇc´ıt´an´ıatribut˚u.Uˇzivatel pak v poli Selection strukturovan´eho atri- butu bude upozornˇen, ˇzeneanotuje ˇz´adnou ˇc´ast dokumentu, ani nevytv´aˇr´ıodkaz na exis- tuj´ıc´ıanotaci. K naˇcten´ıatribut˚ustrukturovan´eho atributu dojde teprve pˇri v´ybˇeru ˇc´asti ˇcicel´eho dokumentu pro anotov´an´ınebo pˇri zmˇenˇetypu strukturovan´eho atributu. Kaˇzd´yuzel stromu atribut˚ubude reprezentovat pr´avˇejeden atribut, pˇriˇcemˇzhodnoty atribut˚ubudou ukl´ad´any k dan´ym uzl˚uma pˇri pˇrechodu mezi uzly budou spr´avnˇezobrazeny. Kromˇenaˇc´ıt´an´ıatribut˚uje tˇreba zajistit tak´ejejich odstraˇnov´an´ıv pˇr´ıpadˇe,ˇze uˇzivatel napˇr´ıklad dvakr´atpo sobˇevybere jin´ytyp. Budou vˇsakodstraˇnov´any pouze atributy, kter´e nebudou m´ıt vyplnˇenou hodnotu. Podobn´ym zp˚usobem bude zajiˇstˇena tak´emanipulace s atributy strukturovan´ych atribut˚u. Kromˇetoho, ˇze bude moˇzn´evytvoˇrit anotaci obsahuj´ıc´ıatributy dan´eho typu, je nyn´ı tak´emoˇzn´ek anotaci pˇridat libovoln´ynov´yatribut – jednoduch´yi strukturovan´y. Kaˇzd´y atribut pak lze ze stromu atribut˚udan´eanotace tak´eodstranit, toto pˇrid´av´an´ıa odstraˇno- v´an´ıse vˇsakt´yk´apouze atribut˚uvytv´aˇren´eanotace, nikoliv atribut˚uuloˇzen´ych u dan´eho typu. Pˇrid´av´an´ıa odstraˇnov´an´ıatribut˚udan´eho typu bude rovnˇeˇztˇreba zajistit.

Obr´azek 4.1: N´avrh manipulace s atributy typ˚u

15 Na obr´azku 4.1 je zobrazen n´avrh manipulace s atributy typ˚u,kter´yje moˇzn´enal´ezt v prezentaci vˇenuj´ıc´ıse 4A Frameworku [3].

4.1.1 Strukturovan´eatributy Zat´ımco jednoduch´eatributy obsahuj´ıpouze hodnotu dan´eho atributu, strukturovan´eatri- buty mohou obsahovat vnoˇrenou anotaci, odkaz na existuj´ıc´ıanotaci, mohou vˇsakb´yt tak´e bez hodnoty nebo typu anyAnnotation. V pˇr´ıpadˇe, ˇze strukturovan´yatribut m´azadan´ytyp a obsahuje nˇejak´eatributy, mus´ıb´yt vybr´ana ˇc´astdokumentu pro anotov´an´ınebo odkaz na existuj´ıc´ıanotaci. V opaˇcn´empˇr´ıpadˇese jedn´ao chybnˇevyplnˇen´yatribut a vytv´aˇrenou anotaci nebude moˇzn´euloˇzit. Pokud strukturovan´yatribut nem´avyplnˇen´yˇz´adn´ytyp, pak je povaˇzov´anza atribut typu jak´akoliv anotace“ a bude mu pˇriˇrazen typ anyAnnotation. ” V tomto pˇr´ıpadˇevˇsak strukturovan´yatribut nesm´ıodkazovat na jinou anotaci, anotovat ˇz´adnou ˇc´astdokumentu a ani nesm´ıobsahovat ˇz´adn´eatributy. Pˇrieditaci existuj´ıc´ıanotace je nutn´ezobrazit anotaci tak, jak byla vytvoˇrena. Jestliˇze tedy nˇekter´yz atribut˚ubude typu anyAnnotation, bude opˇetnezbytn´evytvoˇrit atribut s nevyplnˇen´ym typem. Pokud strukturovan´yatribut bude obsahovat vnoˇrenou anotac´ı, mus´ı b´ytpˇri editaci v poli Selection tak´espr´avnˇezobrazen text ˇc´asti nebo cel´eho dokumentu, kter´yje anotov´an.

4.1.2 Odkaz na existuj´ıc´ıanotaci Strukturovan´yatribut m˚uˇze obsahovat odkaz na existuj´ıc´ıanotaci, v takov´em pˇr´ıpadˇebude v poli Selection dan´eho atributu zobrazena URI odkazovan´eanotace. Odkazovanou anotaci pˇrivytv´aˇren´ınov´eanotace nebude moˇzn´eˇz´adn´ym zp˚usobem editovat, budou vˇsaknaˇcteny jej´ıatributy. K odkazovan´eanotaci tedy nebude moˇzn´epˇridat nov´yatribut ani odstranit st´avaj´ıc´ı, atributy odkazovan´eanotace vˇsak budou k dispozici ve stromu atribut˚ua bude moˇzn´eje bˇeˇzn´ym zp˚usobem zobrazit. Rovnˇeˇzdojde k naˇcten´ıvlastnosti Content odkazovan´e anotace, ani tu vˇsaknebude moˇzn´eeditovat. Uˇzivatel m˚uˇzevytvoˇrit odkaz pouze na takovou anotaci, kter´aje stejn´eho typu jako strukturovan´yatribut. Jakmile vybere odkazovanou anotaci, dojde k jej´ımu naˇcten´ı. Tomu bude pˇredch´azet odstranˇen´ıvˇsech atribut˚u,kter´epˇr´ıpadnˇedan´ystrukturovan´yatribut m´a, bez ohledu na to, zda maj´ıvyplnˇenou hodnotu ˇcinikoliv. Pokud uˇzivatel zruˇs´ıodkaz na exis- tuj´ıc´ıanotaci napˇr´ıklad v´ybˇerem ˇc´asti dokumentu pro anotov´an´ı,budou odstranˇeny vˇsechny naˇcten´eatributy odkazovan´eanotace. Spr´avn´enaˇcten´ıodkazovan´eanotace bude tˇreba za- jistit tak´epˇri editaci anotace, kter´atakovou anotaci obsahuje.

4.1.3 Zmˇenatyp˚uatribut˚u Kaˇzd´yatribut je nˇekter´eho z jednoduch´ych ˇcistrukturovan´ych typ˚u, typy atribut˚uvˇsak bude moˇzn´emˇenit. Pˇri zmˇenˇetypu atributu bude nezbytn´epˇren´est jeho vyplnˇenou hod- notu. Uˇzivatel bude m´ıt moˇznost zmˇenit typ atributu zad´an´ım nov´eho n´azvu typu nebo v´ybˇerem nov´eho typu pomoc´ı dialogu Types. Pˇri obou tˇechto moˇznostech bude chov´an´ı editoru anotac´ıtotoˇzn´e.Pˇrizad´av´an´ın´azvu typu budou uˇzivateli nab´ızeny typy, kter´eod- pov´ıdaj´ızadan´emu textu, pˇriˇcemˇzbude moˇzn´eodliˇsit, kter´enab´ızen´etypy jsou jednoduch´e a kter´estrukturovan´e. Pokud uˇzivatel zmˇen´ıatribut jednoduch´eho typu na atribut jin´eho jednoduch´eho typu, dojde k pˇrenosu vyplnˇen´ehodnoty atributu. V pˇr´ıpadˇezmˇeny na strukturovan´yatribut bude hodnota vloˇzena do vstupn´ıho pole Content. Podobn´ym zp˚usobem bude tˇreba zajistit

16 pˇresun vyplnˇen´ych hodnot pˇrizmˇenˇestrukturovan´eho atributu na strukturovan´yatribut jin´eho typu. Se zmˇenou typ˚uatribut˚uje tˇreba se zab´yvat pˇresunem atribut˚ustrukturovan´eho atri- butu, a to v pˇr´ıpadˇejeho zmˇeny na jednoduch´yatribut. V takov´em pˇr´ıpadˇebudou vˇsechny atributy, kter´emaj´ıvyplnˇenou hodnotu a jeˇstˇese nenach´azej´ıve stromu o ´uroveˇnv´yˇse, pˇre- sunuty pr´avˇedo t´eto ´urovnˇe. Pokud je nˇekter´yatribut jednoduch´eho typu a tento typ bude zmˇenˇenna nezn´am´yˇci bude ´uplnˇeodstranˇen, bude tento atribut zmˇenˇenna strukturovan´y.

4.1.4 Kontrola hodnot atribut˚u Pˇriuloˇzen´ıanotace bude tˇreba zkontrolovat, zda vˇsechny atributy maj´ıvyplnˇeny korektn´ı hodnoty. Pokud atribut nen´ıvyˇzadovan´y, viz d´ale, nemus´ım´ıt vyplnˇenou hodnotu. Pokud vˇsakvyplnˇenou hodnotu m´a,mus´ıtato hodnota odpov´ıdat typu atributu. Jednoduch´emu atributu typu Integer uˇzivatel bude m´ıt moˇznost vyplnit cel´eˇc´ıslo, jin´ahodnota bude po- vaˇzov´ana za chybnou, u atributu typu GeoPoint pak bude povolen´etak´edesetinn´eˇc´ıslo. Hodnota atributu typu String nebude nijak omezena a hodnoty atribut˚utypu Date, Time a DateTime se budou ˇr´ıdit podle standardu RFC 3339 [17]. Atribut typu Boolean bude m´ıt povoleny pouze hodnoty 0 a 1 ˇciˇretˇezec false nebo true. U kaˇzd´eho jednoduch´eho atributu budou nav´ıc zobrazeny pˇr´ıklady hodnot, kter´elze pro dan´ytyp vyplnit. Strukturovan´yatribut mus´ıvˇzdy bud’ obsahovat vnoˇrenou anotaci, odkaz na anotaci nebo b´yt bez hodnoty ˇcitypu anyAnnotation, jak bylo pops´ano v´yˇse. V jin´empˇr´ıpadˇese bude jednat o chybnˇevyplnˇen´yatribut. Aby anotaci bylo moˇzn´euloˇzit, mus´ıb´yt rovnˇeˇz vyplnˇenjej´ıtyp. Pokud vyplnˇen´ytyp anotace nebo strukturovan´eho atributu neexistuje, bude pˇri uloˇzen´ıanotace vytvoˇren.

4.1.5 Pˇrid´av´an´ıa odstraˇnov´an´ıatribut˚u Uˇzivatel bude m´ıt moˇznost pˇridat nov´eatributy k atribut˚umdan´eho typu. U novˇevytvo- ˇren´eho atributu bude moˇzn´enastavit, zda po uloˇzen´ıanotace m´ab´ytdan´yatribut pˇrid´an k typu ˇcinikoliv. Rovnˇeˇzbude moˇzn´ezvolit, zda atribut m´ab´yt vyˇzadov´an.V takov´em pˇr´ıpadˇebude vˇzdy pˇred uloˇzen´ımanotace nezbytn´evyplnit hodnotu dan´eho atributu. Tato nastaven´ıpak bude moˇzn´ekdykoliv zmˇenit. K pˇrid´av´an´ıatribut˚uk dan´ym typ˚um dojde pˇriuloˇzen´ıanotace, pˇriˇcemˇzatributy budou pˇrid´any jak k typu anotace, tak k typ˚um vˇsech vnoˇren´ych anotac´ı. Pokud uˇzdan´ytyp obsahuje dan´yatribut, bude jej moˇzn´ezmˇenit, tedy nahradit jej atributem stejn´eho jm´ena, avˇsakjin´eho typu. Rovnˇeˇzbude tˇreba zajistit spr´avn´echov´an´ıpˇrid´av´an´ıatribut˚u, pokud v nˇekter´e´urovni stromu budou mˇenˇeny atributy typu, kter´yuˇzbyl zmˇenˇen v nˇekter´ez vyˇsˇs´ıch ´urovn´ı. Pˇrizobrazen´ıkaˇzd´eho atributu bude nezbytn´ekontrolovat, zda tento atribut patˇr´ımezi atributy dan´eho typu ˇci nikoliv. Pokud ne, uˇzivateli bude nab´ızeno nastaven´ı, zda atribut pˇridat. Pokud dan´ytyp jiˇzatribut obsahuje, bude nab´ızeno nastaven´ı s moˇznost´ı jeho zmˇeny. Protoˇzenastaven´ı, zda m´ab´yt atribut pˇrid´ank atribut˚umdan´eho typu, a nastaven´ı, zda atribut m´ab´ytvyˇzadov´an, se k atribut˚umvytv´aˇren´eanotace neukl´adaj´ı, pˇrieditaci anotace bude nezbytn´evˇsem atribut˚umnastavit tato nastaven´ına v´ychoz´ıhodnoty. Nas- taven´ı, zda m´ab´yt atribut vyˇzadov´an,se ukl´ad´apouze k atribut˚um dan´eho typu, odkud bude naˇcteno vˇzdy pˇri naˇc´ıt´an´ıatribut˚utohoto typu. Kaˇzd´yatribut bude tak´emoˇzn´eodstranit z atribut˚udan´eho typu. Pˇri odstraˇnov´an´ı atributu z vytv´aˇren´eanotace se provede kontrola, a pokud atribut n´aleˇz´ıdan´emu typu, uˇzivateli bude nab´ıdnuto tak´eodstranˇen´ız tohoto typu. Atributy typ˚ubude tedy moˇzn´e odstraˇnovat pouze jednotlivˇe.

17 4.2 Nastaven´ı

Nastaven´ıeditoru anotac´ıby mˇelo pˇred uˇzivateli skr´yvat implementaˇcn´ıdetaily a poskytovat pohodln´ezad´av´an´ıhodnot jednotliv´ych nastaven´ı. Za t´ımto ´uˇcelem bude v dialogu Settings k dispozici strom podobn´ytomu, jak´ylze vytv´aˇret pˇrivytv´aˇren´ınov´eanotace. Tento strom, kter´yse bude nach´azet v lev´eˇc´asti dialogu, vˇsaknebude moˇzn´emˇenit a kaˇzd´yuzel bude pˇredstavovat pr´avˇejedno nastaven´ı. V prav´eˇc´asti dialogu pak bude moˇzn´ezadat hodnoty jednotliv´ych nastaven´ı. Strom v dialogu nastaven´ıbude m´ıt koˇrenov´yuzel nazvan´y Settings, kter´ybude obsa- hovat uzly Client, Server, Common a Unknown, jak je zobrazeno na obr´azku 4.2. V kaˇzd´em z tˇechto ˇctyˇruzl˚upak budou k dispozici konkr´etn´ınastaven´ıpodle toho, o jak´enastaven´ıse jedn´a,napˇr´ıklad nastaven´ıt´ykaj´ıc´ıse pouze klienta bude moˇzn´enal´ezt pod uzlem Client. V´yjimku bude tvoˇrit uzel Unknown, kter´ynebude obsahovat dalˇs´ıuzly, ale tabulku se vˇsemi nezn´am´ymi nastaven´ımi, viz d´ale. Pˇrizobrazen´ıdialogu Settings se vytvoˇr´ıuzly pro vˇsechna zn´am´anastaven´ı, kter´ymi v souˇcasn´edobˇejsou DefaultUserGroup (v´ychoz´ıuˇzivatelsk´askupina), ServerLanguage (ja- zyk serveru) a ClientAnnotationTypeColor (barvy typ˚uanotac´ı), a vypln´ıse hodnoty zaslan´e serverem. Pokud server nˇekter´eze zn´am´ych nastaven´ınepoˇsle, vypln´ıse v´ychoz´ıhodnota a nastaven´ıse pˇri prvn´ım uloˇzen´ıvytvoˇr´ı. V pˇr´ıpadˇe,ˇze editor anotac´ıod serveru obdrˇz´ı nˇekter´edalˇs´ı, nezn´am´enastaven´ı,bude toto nastaven´ızobrazeno v tabulce v uzlu nazvan´em Unknown. Kaˇzd´yˇr´adek t´eto tabulky bude obsahovat pr´avˇejedno nezn´am´enastaven´ı. Zat´ımco nastaven´ı ServerLanguage bude obsahovat pouze jedno vstupn´ıpole pro vypl- nˇen´ıhodnoty, v nastaven´ı ClientAnnotationTypeColor bude k dispozici tabulka pro zad´an´ı barev konkr´etn´ıch typ˚uanotac´ıv jednotliv´ych ˇr´adc´ıch t´eto tabulky. Kaˇzd´yˇr´adek bude na- v´ıc obsahovat tak´etlaˇc´ıtko Select, kter´eumoˇzn´ızobrazen´ıdialogu pro pohodln´yv´ybˇer typu a barvy. V nastaven´ı DefaultUserGroup pak budou nab´ızeny k v´ybˇeru vˇsechny skupiny, do kter´ych je uˇzivatel pˇrihl´aˇsen. Pˇred uloˇzen´ım nastaven´ıbudou vˇzdy kontrolov´any hod- noty vˇsech nastaven´ıa v pˇr´ıpadˇe, ˇzenˇekter´az hodnot nebude korektn´ı, nastaven´ınebude moˇzn´euloˇzit. Uˇzivatel tak´ebude upozornˇenna to, kter´enastaven´ıje nespr´avnˇevyplnˇeno. Kaˇzd´yuzel stromu nav´ıc bude obsahovat struˇcn´ypopis, k ˇcemu dan´enastaven´ıslouˇz´ı.

Obr´azek 4.2: N´avrh podoby nastaven´ıvytvoˇren´ypomoc´ın´astroje Firebug

18 4.2.1 Barvy typ˚uanotac´ı Uˇzivatel bude m´ıt moˇznost vybrat barvy typ˚uv samostatn´em dialogu Annotation Type Colors. Tento dialog bude nab´ızet tˇri vstupn´ıpole, pˇriˇcemˇzjedno bude slouˇzit pro zad´an´ı typu, druh´epro v´ybˇerbarvy a tˇret´ıpro zad´an´ıhodnoty alfa. Pˇri zad´av´an´ıtypu budou uˇzivateli nab´ızeny typy, jejichˇzn´azev odpov´ıd´azadan´emu textu, podobnˇe,jako tomu je v dialogu pro vytv´aˇren´ıanotac´ı. Rovnˇeˇzbude moˇzn´evybrat typ zobrazen´ımdialogu Types. Pole pro zad´an´ıbarvy typu by vˇzdy mˇelo m´ıt barvu pozad´ıdle vybran´ebarvy, pˇriˇcemˇz pro v´ybˇerbarvy bude vyuˇzita nˇekter´az volnˇedostupn´ych knihoven nab´ızej´ıc´ıch paletu barev. Hodnota alfa, kter´aslouˇz´ık nastaven´ıpr˚uhlednosti, se bude zad´avat v procentech. Pˇripotvrzen´ıdialogu Annotation Type Colors bude nutn´ezkontrolovat vyplnˇen´ehod- noty a v pˇr´ıpadˇenekorektn´ıhodnoty uˇzivateli nahl´asit chybu. Pokud dialog bude vyplnˇen´y v poˇr´adku, jeho hodnoty bude tˇreba pˇren´est do patˇriˇcn´eho ˇr´adku tabulky. Rovnˇeˇzbude nutn´edo dialogu Annotation Type Colors pˇrijeho zobrazen´ıpˇren´est hodnoty, kter´euˇzivatel jiˇzzadal do dan´eho ˇr´adku tabulky, kde je barva typu oˇcek´av´ana ve form´atu RGBA. T´ım bude zajiˇstˇena interakce mezi dialogem nastaven´ıa dialogem pro snadn´yv´ybˇerbarvy typ˚u.

4.3 Nab´ızen´ıanotac´ı

Editor anotac´ı m´aumoˇzˇnovat nab´ızen´ı anotac´ı. Nab´ıdnutou anotac´ı rozum´ıme anotaci, kter´ase zobraz´ıv textu dokumentu a kterou uˇzivatel mus´ınejprve potvrdit, aby se stala bˇeˇznou anotac´ı.Pokud nab´ıdku odm´ıtne, server uˇzji znovu nepoˇsle. Zobrazen´ınab´ıdnut´ych anotac´ım´ab´yt podobn´ejako zobrazen´ıbˇeˇzn´ych anotac´ı,nab´ıdky vˇsakmusej´ıb´yt od anotac´ı oddˇelen´e, protoˇzes nimi maj´ıb´yt prov´adˇeny jin´eakce a nesm´ıb´yt napˇr´ıklad moˇzn´evytvoˇrit odkaz na nab´ıdnutou anotaci. Editor anotac´ımus´ım´ıt moˇznost nejen zobrazit pˇrijat´enab´ıdky, ale tak´euˇzivateli umoˇz- nit o nab´ızen´ıanotac´ıpoˇz´adat. K tomu bude nezbytn´ezajistit spr´avnou tvorbu XML. Nab´ı- zen´ı anotac´ı si rovnˇeˇz vyˇzaduje vytvoˇren´ı dvou nov´ych nastaven´ı. Nastaven´ı Suggestion confidence slouˇz´ı jako pr´ahd˚uvˇeryhodnosti kaˇzd´e zaslan´e nab´ıdky, pomoc´ı Refuse suggestion pak uˇzivatel m˚uˇzenastavit, zda m´ab´yt vyˇzadov´ano potvrzen´ıpˇri odm´ıt- nut´ınˇekter´ez nab´ıdek, viz d´ale. N´avrh funkcionality nab´ızen´ıanotac´ılze shrnout do n´asle- duj´ıc´ıch ˇc´ast´ı: 1. Z´adostˇ o nab´ızen´ıanotac´ı– Uˇzivatel v dialogu Suggest Annotations poˇz´ad´ao nab´ızen´ı anotac´ı pro cel´ydokument nebo jeho vybranou ˇc´ast. V pˇr´ıpadˇe,ˇzevybere urˇcit´y typ, budou mu nab´ızeny pouze anotace dan´eho typu. Po potvrzen´ı dialogu dojde k vytvoˇren´ıXML a jeho zasl´an´ıserveru. 2. Vytvoˇren´ı nab´ıdnut´ych anotac´ı – Editor anotac´ı jako reakci na odpovˇed’ serveru vytvoˇr´ınab´ıdky anotac´ı, kter´emu server zaslal. Pokud m´anˇekter´az nab´ıdek hod- notu confidence niˇzˇs´ı, neˇzjakou si uˇzivatel zvolil v nastaven´ı Suggestion confidence, dojde k automatick´emu odm´ıtnut´ı nab´ıdky. Z´aroveˇnse uloˇz´ı stav dialogu Suggest Annotations, aby mohl b´yt pˇri opˇetovn´em zobrazen´ı dialogu obnoven. Kaˇzd´ana- b´ıdka bude instanc´ıdan´etˇr´ıdy, pˇriˇcemˇztyto instance bude shromaˇzd’ovat tˇr´ıda, kter´a umoˇzn´ımanipulaci se vˇsemi nab´ıdnut´ymi anotacemi. 3. Zobrazen´ınab´ıdnut´ych anotac´ı– Pˇrium´ıstˇen´ımyˇsi nad urˇcit´yfragment textu se zob- raz´ıdialog dan´enab´ıdnut´eanotace. Ten bude zahrnovat n´azevtypu nab´ıdnut´eano- tace, atributy t´eto nab´ıdky a pˇr´ıpadnˇei moˇznost zobrazen´ıvnoˇren´enab´ıdky. V tomto dialogu bude uˇzivatel m´ıt moˇznost pˇrijmout, odm´ıtnout ˇcieditovat danou nab´ıdku.

19 4. Pˇrijmut´ı nab´ıdnut´eanotace – Pokud uˇzivatel pˇrijme danou nab´ıdku, editor ano- tac´ına ˇz´adost serveru tuto nab´ıdku odstran´ıa vytvoˇr´ınovou anotaci odpov´ıdaj´ıc´ı potvrzen´e nab´ıdce. Pˇri potvrzen´ı bude serveru zasl´ano XML s patˇriˇcn´ymdoˇcas- n´ymidentifik´atorem nab´ıdky. Editor anotac´ımus´ına ˇz´adost serveru nejen vytvoˇrit, ale tak´eodstranit danou nab´ıdku, k ˇcemuˇzbude slouˇzit metoda v tˇr´ıdˇeshromaˇzd’uj´ıc´ı vˇsechny nab´ıdky. 5. Odm´ıtnut´ınab´ıdnut´eanotace – Odm´ıtnut´ıdan´enab´ıdky bude vyˇzadovat potvrzen´ı dle aktu´aln´ıho nastaven´ı Refuse suggestion. V pˇr´ıpadˇeodm´ıtnut´ıbude serveru zas- l´anoXML s identifik´atorem dan´enab´ıdky, server poˇz´ad´aeditor anotac´ıo odstranˇen´ı nab´ıdky a pˇr´ıˇstˇejiˇztuto anotaci nenab´ıdne. 6. Editace nab´ıdnut´eanotace – Kaˇzdou nab´ıdku bude moˇzn´eeditovat podobnˇejako anotaci. Pˇri potvrzen´ıeditovan´enab´ıdky dojde k vytvoˇren´ıXML nov´eanotace, ovˇsem s doˇcasn´ym identifik´atorem dan´enab´ıdky. Server v takov´empˇr´ıpadˇepoˇz´ad´aeditor anotac´ıo odstranˇen´ıdan´enab´ıdky a vytvoˇren´ınov´eanotace. 7. Vnoˇren´anab´ıdnut´aanotace – Vnoˇren´enab´ıdnut´eanotace budou v dokumentu zob- razeny stejnˇejako nab´ıdnut´eanotace, nesm´ıvˇsak b´yt moˇzn´eje samostatnˇepˇrijmout ani odm´ıtnout, jejich editace pak mus´ıpˇrej´ıt na editaci rodiˇcovsk´enab´ıdky. V pˇr´ıpadˇe, ˇzeje nab´ıdka vnoˇrena v´ıcekr´at, dojde k editaci nab´ıdnut´eanotace na nejvyˇsˇs´ı´urovni. 8. Zruˇsen´ı nab´ızen´ı anotac´ı – Uˇzivatel bude m´ıt moˇznost kdykoliv zmˇenit podm´ınky nab´ızen´ıanotac´ı,napˇr´ıklad vybrat jinou ˇc´ast dokumentu ˇci typ nab´ızen´ych anotac´ı. Bude tak´emoˇzn´enab´ızen´ı´uplnˇezruˇsit, v takov´empˇr´ıpadˇedojde k odstranˇen´ıvˇsech zobrazen´ych, nepotvrzen´ych nab´ıdek. Na obr´azku 4.3 je zobrazen n´avrh podoby nab´ıdnut´ych anotac´ı,kter´ylze nal´ezt v pre- zentaci o 4A Frameworku [3].

Obr´azek 4.3: N´avrh podoby nab´ıdnut´ych anotac´ı

4.3.1 Z´adostˇ o nab´ızen´ıanotac´ı Uˇzivatel bude m´ıt moˇznost zaˇz´adato nab´ızen´ıanotac´ıv dialogu Suggest Annotations. Tento dialog bude nab´ızet podobnou funkcionalitu, jakou uˇzdisponuje dialog pro vytv´aˇren´ıano- tac´ı. Jeho hlavn´ıˇc´astbudou tvoˇrit dvˇevstupn´ı pole oznaˇcen´e Selection a Type. V poli Selection se uˇzivateli pouze zobraz´ı, jakou ˇc´astdokumentu m´avybr´anu, do pole Type bude

20 m´ıt moˇznost zadat typ anotac´ı. Pro nab´ızen´ıanotac´ıpro cel´ydokument bude slouˇzit tlaˇc´ıtko Select whole document, pro zruˇsen´ınab´ızen´ıtlaˇc´ıtko No suggestions. V pˇr´ıpadˇe,ˇze bude nˇekter´ez tˇechto tlaˇc´ıtek stisknuto, v poli Selection se zobraz´ıspeci´aln´ıtext. Pˇrizad´av´an´ıtypu se uˇzivateli nab´ıdnou typy, kter´eodpov´ıdaj´ızadan´emu ˇretˇezci, jako je tomu v dialogu Annotate. Typ bude moˇzn´e vybrat tak´epomoc´ıtlaˇc´ıtka Browse, kter´ezobraz´ıdialog typ˚u. Dialog Suggest Annotations mus´ıvˇzdy zobrazovat, pro jakou ˇc´ast dokumentu a jak´eho typu jsou anotace nab´ızeny, proto je tˇreba uchov´avat jeho stav, kter´yse obnov´ıpˇri opˇetov- n´emzobrazen´ıdialogu. K tomu bude potˇreba nov´yobjekt a metody, kter´eprovedou uloˇzen´ı stavu dialogu a pot´ejeho naˇcten´ı.

4.3.2 Zobrazen´ınab´ıdnut´ych anotac´ı Nab´ıdnut´eanotace se v dokumentu zobraz´ıpodobnˇejako bˇeˇzn´eanotace, tedy vyznaˇcen´ım fragmentu textu, ke kter´emu dan´anab´ıdka patˇr´ı. Aby bylo moˇzn´eanotace a nab´ıdky snadno odliˇsit, budou nab´ıdnut´eanotace nav´ıc ˇc´arkovanˇeor´amov´any. Dialog dan´eho fragmentu bude m´ıt stejnou podobu jako dialog fragmentu anotace, k dispozici vˇsak budou jin´atlaˇc´ıtka s jin´ymi akcemi – pˇrijmout, odm´ıtnout, editovat. Nab´ıdky anotac´ı nav´ıc budou k dispozici pohromadˇe v jedin´em dialogu nazvan´em Suggested Annotations. Tento dialog nen´ı ve specifikaci editoru anotac´ı, poskytne vˇsak moˇznost rychl´eho potvrzov´an´ınab´ıdek. Aby u kaˇzd´enab´ıdky v tomto dialogu bylo jasn´e, ke kter´eˇc´asti dokumentu se vztahuje, pˇrium´ıstˇen´ımyˇsinad libovolnou nab´ıdku se zobraz´ı dialog dan´eho fragmentu. Pˇri kliknut´ına nab´ıdku dialog z˚ustane zobrazen´ystejn´ym zp˚u- sobem, jako pˇri kliknut´ına dan´yfragment. S nab´ıdnut´ymi anotacemi v dialogu Suggested Annotations bude moˇzn´eprov´adˇetstejn´eakce jako v dialogu dan´eho fragmentu. Pˇrimanipulaci s nab´ıdnut´ymi anotacemi bude vˇzdy tˇreba zjistit, zda se nejedn´ao vno- ˇrenou nab´ıdku, a pˇr´ıpadnˇem´ıt k dispozici odkaz na rodiˇcovskou nab´ıdku. Pˇri vytv´aˇren´ı nab´ıdek tedy bude tˇreba kaˇzd´evnoˇren´enab´ıdce pˇriˇradit doˇcasn´yidentifik´ator rodiˇcovsk´e nab´ıdky, a t´ım bude moˇzn´eod sebe nab´ıdky snadno rozpoznat.

21 Kapitola 5

Implementace

Tato kapitola struˇcnˇepopisuje implementaci nejd˚uleˇzitˇejˇs´ıch oprav a vylepˇsen´ıdostupn´eho editoru anotac´ı, kter´ebyly navrˇzeny v kapitole 4. Bl´ıˇzese pak vˇenuje z´avaˇznˇejˇs´ım probl´e- m˚um, kter´ese pˇriimplementaci vyskytly a kter´ebylo tˇreba ˇreˇsit.

5.1 Manipulace s atributy typ˚u

Protoˇze poˇzadavek na manipulaci s atributy vznik´avˇetˇsinou jako reakce na akci uˇziva- tele, pˇribyla implementace metod, kter´eobsluhuj´ıdan´eud´alosti. Implementace manipulace s atributy typ˚uvyˇzadovala tak´ez´asah do existuj´ıc´ıho dialogu pro vytv´aˇren´ıanotac´ı, kde bylo tˇreba doplnit st´avaj´ıc´ıfunkcionalitu a rovnˇeˇzpˇridat nov´efunkce. • Tˇr´ıda AEd.ui.DlgAnnotate – implementuje funkcionalitu dialogu pro vytv´aˇren´ıa edi- taci anotac´ı. • Tˇr´ıda AEd.editors.Editor – tˇr´ıda, kter´aslouˇz´ıpro vytvoˇren´ıinstance editoru anotac´ı a obsluhu ud´alost´ıvznikl´ych v r´amci t´eto instance. Hlavn´ı´ulohu pˇrimanipulaci s atributy typ˚u,kter´aje zobrazena na obr´azku 5.1, pln´ıme- toda loadAttrsOfType() prov´adˇej´ıc´ınaˇcten´ıatribut˚u. Tato metoda je vol´ana jak pˇri v´ybˇeru dan´eho typu, tak pˇri oznaˇcen´ıˇc´asti textu pro anotov´an´ınebo v´ybˇeru cel´eho dokumentu, z ˇcehoˇzvypl´yvaj´ıd˚uleˇzit´epoˇzadavky, kter´emetoda mus´ısplˇnovat. T´ımnejd˚uleˇzitˇejˇs´ımje zachov´an´ıpoˇrad´ıatribut˚upˇri opˇetovn´emnaˇcten´ı. Metoda loadAttrsOfType() nejprve odstran´ıatributy, kter´ymuˇzivatel zat´ım nevyplnil hodnotu a kter´ez´aroveˇnnejsou atributy dan´eho typu. To zaruˇcuje, ˇze uˇzivatel nepˇrijde o vyplnˇen´eatributy a z´aroveˇnnebude zmˇenˇeno poˇrad´ıatribut˚uv pˇr´ıpadˇe,ˇze jsou naˇc´ıt´any atributy totoˇzn´eho typu, napˇr´ıklad pˇri oznaˇcen´ıˇc´asti dokumentu. V pˇr´ıpadˇe, ˇzenˇekter´y z atribut˚u,kter´yn´aleˇz´ıdan´emu typu a nebyl tedy odstranˇen, m´azmˇenˇen´ytyp, provede se jeho odstranˇen´ıdodateˇcnˇepˇriproch´azen´ıatribut˚udan´eho typu. Pokud po tomto ovˇeˇren´ı dan´yatribut typu jeˇstˇenen´ıve stromu, pˇrid´ase, v opaˇcn´empˇr´ıpadˇeje ignorov´an. O kontrolu hodnot atribut˚u,kter´euˇzivatel vyplnil, se pˇred uloˇzen´ım nov´eanotace star´a metoda checkAttributes(). Tato metoda proch´az´ıvˇsechny uzly stromu a dle typu kaˇzd´eho atributu ovˇeˇr´ızadanou hodnotu. Protoˇzestrukturovan´yatribut m˚uˇzem´ıt dalˇs´ıatributy, je v takov´em pˇr´ıpadˇenezbytn´emetodu volat rekurzivnˇe,aby byly zkontrolov´any uzly ve vˇsech ´urovn´ıch stromu. Metoda loadAnnotation(), kter´adoposud slouˇzila pouze pro naˇcten´ıexistuj´ıc´ıanotace v pˇr´ıpadˇejej´ıeditace, byla d´ale vylepˇsena tak, aby umoˇzˇnovala tak´enaˇcten´ıodkazovan´e

22 anotace. Metoda rozliˇsuje, zda naˇc´ıt´aanotaci ˇci pouze odkazovanou anotaci. V prvn´ımpˇr´ı- padˇedojde nejprve k odstranˇen´ıst´avaj´ıc´ıho stromu a vytvoˇren´ınov´eho, do jehoˇzkoˇrene je naˇctena dan´aanotace spolu s jej´ımi atributy. V pˇr´ıpadˇeodkazovan´eanotace je strom zacho- v´ana anotace a jej´ıatributy jsou naˇcteny do vybran´eho uzlu (strukturovan´eho atributu). Tˇr´ıda AEd.editors.Editor vytv´aˇr´ıinstance vˇetˇsiny tˇr´ıd a m˚uˇzetedy pˇristupovat k objek- t˚um a volat metody z r˚uzn´ych ˇc´ast´ıeditoru anotac´ı. Tato tˇr´ıda d´ale implementuje obsluˇzn´e metody, jejichˇzfunkcionalita m˚uˇze b´yt zahrnuta pˇr´ımo v tˇechto metod´ach nebo mohou b´ytvol´any metody z jin´ych tˇr´ıd. To z´aleˇz´ıpˇredevˇs´ım na tom, zda dan´aobsluˇzn´ametoda vyˇzaduje pr´acis objekty a metodami dalˇs´ıch tˇr´ıd ˇci nikoliv. U kaˇzd´eho atributu lze nastavit, zda m´a b´yt pˇrid´an mezi atributy dan´eho typu, a v pˇr´ıpadˇe,ˇze dan´ytyp jiˇztakov´yatribut obsahuje, nab´ız´ıse jeho zmˇena. Tento koncept si vyˇz´adalkontrolu atribut˚utypu pˇri kaˇzd´emzobrazen´ıa tak´ekaˇzd´ezmˇenˇekter´ehokoliv z atribut˚udan´eanotace.

Obr´azek 5.1: Manipulace s atributy typ˚u

5.1.1 Atribut typu jak´akoliv anotace“ ” V pr˚ubˇehu implementace oprav a vylepˇsen´ıeditoru anotac´ıvznikl poˇzadavek, aby uˇziva- tel mohl uloˇzit atribut typu jak´akoliv anotace“. Takov´aanotace by byla reprezentov´ana ” strukturovan´ym atributem, kter´yby nemˇel vyplnˇen´ytyp, neanotoval by ˇz´adnou ˇc´ast do- kumentu a ani neodkazoval na jiˇzexistuj´ıc´ıanotaci. Za bˇeˇzn´ych okolnost´ıby takov´yatri- but byl povaˇzov´anza chybn´ya nebylo by moˇzn´ejej uloˇzit, proto bylo nezbytn´ezajistit, aby k takov´emu atributu byl pˇri odesl´an´ıdoplnˇenspeci´aln´ıtyp anyAnnotation. Naopak pˇriobdrˇzen´ıanotace s t´ımto typem atributu klient mus´ızajistit spr´avnou interpretaci atri- butu, tedy opˇet s pr´azdn´ymtypem. Uˇzivatel tak m˚uˇze vytvoˇrit atribut dan´eho jm´ena a aˇz pozdˇeji se rozhodnout, jakou hodnotu bude m´ıt, coˇzje ˇz´adouc´ı pˇredevˇs´ım pˇri importu ontologi´ı. O moˇznost vytvoˇren´ıatributu tohoto typu byl dodateˇcnˇedoplnˇentak´en´avrh manipulace s atributy typ˚uz d˚uvodu jeho kompletnosti.

23 5.1.2 Pomocn´emetody Pˇrimanipulaci s atributy typ˚ubylo tˇreba implementovat tak´enˇekolik pomocn´ych metod vˇcetnˇemetod pro kontrolu form´at˚udata a ˇcasu a metody pro konverzi textov´eho ˇretˇezce na hodnotu typu Boolean. Ovˇeˇren´ıform´at˚udata a ˇcasu si vyˇz´adala kontrola hodnot atribut˚utypu Date, Time a DateTime. Jazyk JavaScript nenab´ız´ıfunkce, kter´eby takovou kontrolu provedly, a tak bylo nezbytn´eimplementovat vlastn´ımetody. Tyto metody prov´adˇej´ızpracov´an´ızadan´eho textov´eho ˇretˇezce a v pˇr´ıpadˇe,ˇzetento ˇretˇezec odpov´ıd´aoˇcek´avan´emu form´atu data nebo ˇcasu, jde o povolenou hodnotu dan´eho typu atributu. Ovˇeˇren´ıhodnoty atributu typu Da- teTime vyˇzadovalo pouˇzit´ımetod pro kontrolu data i ˇcasu, metoda pro kontrolu ˇcasu pak vyuˇz´ıv´atak´emetodu pro ovˇeˇren´ıˇcasov´eho p´asma.[10] V jazyce JavaScript d´ale nen´ımoˇzn´eporovnat textov´yˇretˇezec true ˇci false s tˇemito hodnotami typu Boolean. Tyto hodnoty se nerovnaj´ı a pro jejich spr´avn´eporovn´an´ı je tˇreba prov´est konverzi. Jednou z moˇznost´ı, jak pˇrev´esttextov´yˇretˇezec na hodnotu typu Boolean, je vlastn´ımetoda, kter´avr´at´ı true v pˇr´ıpadˇe, ˇzejej´ım vstupem je textov´yˇretˇezec true, v jin´empˇr´ıpadˇevr´at´ı false.[22]

5.2 Nastaven´ı

Aby dialog nastaven´ıeditoru anotac´ımohl dle n´avrhu nab´ıdnout strom, ve kter´emuzly pˇredstavuj´ıjednotliv´anastaven´ı, bylo nezbytn´eupravit HTML dokument, kter´yud´av´apo- dobu dialogu nastaven´ı, a tak´edoplnit novou funkcionalitu pr´avˇedialogu pˇredstavuj´ıc´ımu nastaven´ıeditoru anotac´ı. • Dokument settings.html – ud´av´apodobu dialogu nastaven´ı. • Tˇr´ıda AEd.ui.DlgSettings – implementuje funkcionalitu dialogu pro nastaven´ıeditoru anotac´ı. Protoˇze je tˇreba, aby i tento dialog reagoval na akce uˇzivatele napˇr´ıklad pˇri potvrzen´ı nastaven´ı, bylo tak´e nezbytn´e implementovat nˇekolik obsluˇzn´ych metod. Metoda checkSettings() se star´ao kontrolu hodnot nastaven´ıa v pˇr´ıpadˇe,ˇzeje nˇekter´enekorektn´ı, nedovol´ınastaven´ıuloˇzit. Tato metoda postupnˇeproch´az´ıkaˇzd´yuzel stromu, kter´ypˇreds- tavuje konkr´etn´ınastaven´ı, a provede ovˇeˇren´ıhodnoty podle toho, o jak´enastaven´ıse jedn´a. Pokud metoda zkontroluje cel´ystrom a nenalezne nekorektn´ıhodnotu, nastaven´ıje v po- ˇr´adku. V opaˇcn´em pˇr´ıpadˇese zastav´ına dan´emuzlu a tento uzel nastav´ıjako vybran´y. Implementace dialogu nastaven´ıvyˇzadovala vylepˇsen´ımetod pro pr´acis tabulkou tak, aby je bylo moˇzn´evyuˇz´ıt pro libovoln´yHTML element table. D´alebylo tˇreba doplnit metodu pro pˇrid´av´an´ıˇr´adk˚utabulky o moˇznost pˇrid´an´ıdalˇs´ıho sloupce pro tabulku s nastaven´ım barev typ˚u, kter´yby obsahoval tlaˇc´ıtko s moˇznost´ı zobrazen´ı dialogu Annotation Type Colors pro snadn´yv´ybˇer barvy. V r´amcilepˇs´ıpr´ace s tabulkami byla tak´eimplementov´ana metoda, kter´aodstran´ıvˇsechny pr´azdn´eˇr´adky dan´etabulky. Protoˇze dialog Annotation Type Colors usnadˇnuje nastaven´ıbarvy typ˚u,mˇel by b´yt mod´aln´ı. Tento dialog vˇsak umoˇzˇnuje zobrazen´ıdalˇs´ıho mod´aln´ıho dialogu pro v´ybˇer typu, a jak jsem zjistil v pr˚ubˇehu implementace, knihovna pro uˇzivatelsk´erozhran´ı nedok´aˇze spr´avnˇezobrazit dva mod´aln´ıdialogy. Z tohoto d˚uvodu je dialog Annotation Type Colors implementov´anjako bˇeˇzn´ydialog. Na obr´azku 5.2 je zobrazen dialog nastaven´ıs tabulkou pro v´ybˇer barvy typ˚u.

24 Obr´azek 5.2: Vylepˇsen´enastaven´ıeditoru anotac´ı

5.2.1 V´ybˇerbarvy typ˚u V nastaven´ıeditoru anotac´ıje moˇzn´ezvolit barvu typ˚u, a tak od sebe odliˇsit anotace jed- notliv´ych typ˚u. K dispozici je samostatn´ydialog Annotation Type Colors, kter´yumoˇzˇnuje pohodln´yv´ybˇer barvy. Implementace tohoto dialogu si vyˇz´adala vytvoˇren´ıHTML doku- mentu pˇredstavuj´ıc´ıho jeho vzhled a tak´etˇr´ıdy, kter´aimplementuje jeho funkcionalitu. • Dokument typecolors.html – ud´av´apodobu dialogu pro v´ybˇerbarvy typ˚uanotac´ı. • Tˇr´ıda AEd.ui.DlgTypeColors – implementuje funkcionalitu dialogu pro v´ybˇer barvy typ˚uanotac´ı. Z´akladem dialogu pro v´ybˇerbarvy typ˚ujsou tˇri vstupn´ıpole, kter´aslouˇz´ıpro zad´an´ı typu, barvy a hodnoty alfa. Stejnˇejako v dialogu pro vytvoˇren´ıanotace jsou i zde uˇzivateli nab´ızeny typy, jejichˇzn´azvy odpov´ıdaj´ızadan´emu textu, barva je pak oˇcek´av´ana v hexade- cim´aln´ım tvaru a alfa v procentech. Pro v´ybˇerbarvy byla vyuˇzita knihovna JSColor [18], kter´auˇzivateli poskytuje jednoduchou paletu barev a nastavuje pozad´ıdan´eho vstupn´ıho pole dle vybran´ebarvy. Dialog s touto knihovnou je zobrazen na obr´azku 5.3.

5.2.2 Pˇrevod mezi decim´aln´ıa hexadecim´aln´ısoustavou Nastaven´ıeditoru anotac´ıpracuje s barvami typ˚uve form´atu RGBA, knihovna JSColor vˇsak podporuje pouze hexadecim´aln´ı tvar. Proto bylo tˇreba zajistit pˇrevod ˇc´ıseln´ych hodnot z decim´aln´ı do hexadecim´aln´ı soustavy [39] a zpˇet[38], k ˇcemuˇzbyly vyuˇzity dostupn´e algoritmy. Uˇzivatel si nyn´ım˚uˇzevybrat, ve kter´em z tˇechto form´at˚ubarvu zad´a.Pˇri pˇrevodu hodnot bylo tˇreba se zab´yvat celoˇc´ıseln´ym dˇelen´ım v jazyce JavaScript, kter´eho jsem dos´ahl pomoc´ızaokrouhlov´an´ı[23].

25 Obr´azek 5.3: V´ybˇer barvy typ˚uanotac´ı

5.3 Nab´ızen´ıanotac´ı

Nab´ızen´ıanotac´ıobn´aˇselo implementaci dialogu Suggest Annotations, kter´yuˇzivateli umoˇz- ˇnuje poˇz´adat server o nab´ızen´ı, ale tak´etˇr´ıd, kter´epˇredstavuj´ıjak jednotliv´enab´ıdky, tak tyto nab´ıdky shromaˇzd’uj´ı. • Dokument suggestanno.html – ud´av´apodobu dialogu pro ˇz´adost o nab´ızen´ıanotac´ı. • Tˇr´ıda AEd.ui.DlgSuggestAnnotations – implementuje funkcionalitu dialogu Suggest Annotations pro ˇz´adost o nab´ızen´ıanotac´ı. • Tˇr´ıda AEd.ui.DlgSuggestedAnnotations – implementuje funkcionalitu dialogu Suggested Annotations, kter´yzobrazuje vˇsechny nab´ıdnut´eanotace. • Tˇr´ıda AEd.entities.Suggestion – pˇredstavuje jednu nab´ıdnutou anotac´ı. • Tˇr´ıda AEd.entities.SuggestionsManager – shromaˇzd’uje a spravuje nab´ıdnut´eanotace, vytv´aˇr´ıinstance tˇr´ıdy AEd.entities.Suggestion. Aby editor anotac´ız˚ustal jednotn´y, zobrazen´ınab´ıdnut´ych anotac´ıje implementov´ano podobnˇejako zobrazen´ıanotac´ı, s nab´ıdkami vˇsak lze prov´adˇet jin´eakce. Nab´ıdnut´eano- tace je moˇzn´ed´ale nal´ezt pohromadˇev jedin´em dialogu Suggested Annotations, kde jsou um´ıstˇeny podobnˇejako anotace cel´eho dokumentu v dialogu Document Annotations. Dialog, kter´yuˇzivateli umoˇzˇnuje zaˇz´adato nab´ızen´ıanotac´ı, mus´ıvˇzdy odpov´ıdat aktu- ´aln´ımu stavu nab´ızen´ıa tedy uchov´avat sv˚uj stav, kter´yse naˇcte pˇri opˇetovn´emzobrazen´ı dialogu. Zmˇenou stavu nab´ızen´ıvˇsaknen´ıpotvrzen´ıdialogu, ale teprve aˇzkladn´aodpovˇed’ serveru. Pouze t´ım je zajiˇstˇeno, ˇzenem˚uˇze doj´ıt k situaci, kdy uˇzivatel zaˇz´ad´ao nab´ı- zen´ıanotac´ı,server vˇsak z d˚uvodu neoˇcek´avan´echyby nab´ıdky nepoˇsle, ale dialog Suggest Annotations uloˇz´ıa zobraz´ıstav, ˇzenab´ıdky jsou zas´ıl´any. Na obr´azku 5.4 je zobrazen dialog Suggest Annotations, kter´yuˇzivateli umoˇzˇnuje zaˇz´adat o nab´ızen´ıanotac´ınebo ˇz´adost zruˇsit. K dispozici je v´ybˇer typu, d´ıky kter´emu mohou b´yt nab´ızeny pouze anotace tohoto typu.

26 Obr´azek 5.4: Dialog pro ˇz´adost o nab´ızen´ıanotac´ı

5.3.1 Zobrazen´ınab´ıdnut´ych anotac´ı Nab´ıdnut´eanotace jsou uˇzivateli zobrazeny jak v textu dokumentu, tak v samostatn´em di- alogu. Ve skuteˇcnosti jde o dvˇer˚uzn´einstance nab´ıdek, nebot’ je tˇreba zajistit jejich odliˇsn´e chov´an´ı. S t´ım vznikl probl´em zajiˇstˇen´ıkonzistence na obou m´ıstech zobrazen´ı, kter´ymse bylo tˇreba zab´yvat. Nab´ıdnut´eanotace, kter´ese zobrazuj´ıv dialogu Suggested Annotations, jsou pˇri kaˇzd´ezmˇenˇe(potvrzen´ıˇciodm´ıtnut´ınab´ıdky uˇzivatelem nebo zasl´an´ınov´ych ˇci odstranˇen´ıst´avaj´ıc´ıch nab´ıdek serverem) smaz´any a vytvoˇreny dle aktu´aln´ıho stavu na- b´ıdek, kter´euchov´av´atˇr´ıda AEd.entities.SuggestionsManager. T´ım je zajiˇstˇeno, ˇze dialog Suggested Annotations vˇzdy zobrazuje aktu´aln´ınab´ıdky, coˇzje patrn´etak´ez obr´azku 5.5.

Obr´azek 5.5: Zobrazen´ınab´ıdnut´ych anotac´ı

27 Pˇrium´ıstˇen´ımyˇsinad nˇekterou z nab´ıdek v dialogu Suggested Annotations bylo nezbytn´e zobrazit dialog dan´eho fragmentu, aby uˇzivatel mˇel pˇrehled o tom, ke kter´eˇc´asti textu dan´a nab´ıdka patˇr´ı. Pˇrivytv´aˇren´ıvˇsech nab´ıdnut´ych anotac´ıv tomto dialogu bylo tedy zapotˇreb´ı v cyklu for vytvoˇrit handler ke kaˇzd´enab´ıdce, kter´yby zobrazil dialog dan´eho fragmentu. K tomu bylo nutn´evyuˇz´ıt vol´an´ıpomocn´emetody, kter´aprovede kopii iteraˇcn´ıpromˇenn´e a zajist´ıtak spr´avn´echov´an´ı[24].

28 Kapitola 6

Testov´an´ı

V t´eto kapitole se zab´yv´amtestov´an´ım navrˇzen´ych oprav a vylepˇsen´ıeditoru anotac´ı. Jej´ı ´uvod je vˇenov´anprostˇred´ı,ve kter´embylo testov´an´ıprov´adˇeno, a n´astroj˚um, kter´ejsem k testov´an´ıvyuˇzil. Zam´yˇsl´ım se zde tak´enad moˇznost´ıladˇen´ıv jin´ych prostˇred´ıch a popisuji testovac´ıdata, nad kter´ymi jsem testy prov´adˇel. V dalˇs´ıˇc´asti kapitoly se pak vˇenuji vybra- n´ymnedostatk˚um, kter´enebylo moˇzn´eodhalit v pr˚ubˇehu n´avrhu, jejich pˇr´ıˇcin´am,a tak´e ˇreˇsen´ı.

6.1 Testovac´ıprostˇred´ı

Jazyk JavaScript je povaˇzov´anza jeden z nejn´aroˇcnˇejˇs´ıch jazyk˚u,co se t´yˇcejeho ladˇen´ı.To je zp˚usobeno nejen jeho dynamick´ymi vlastnostmi, ale tak´et´ım, ˇzemnoh´al´eta neexistovaly kvalitn´ılad´ıc´ın´astroje. Pot´e,co jazyk JavaScript zaˇcal nab´ızet pˇr´ıkazy try-catch a throw, kter´ev´yvoj´aˇr˚um umoˇznily reagovat na chyby jiˇzv pr˚ubˇehu jejich vzniku, se zaˇcaly objevovat tak´ev´yvojov´en´astroje pro r˚uzn´ewebov´eprohl´ıˇzeˇce. V souˇcasn´edobˇejsou tyto n´astroje k dispozici pro vˇetˇsinu nejpouˇz´ıvanˇejˇs´ıch prohl´ıˇzeˇc˚u. [40]

6.1.1 Pouˇzit´en´astroje V´yvoj editoru anotac´ıprob´ıhal ve webov´emprohl´ıˇzeˇci Firefox, a tak byly pouˇzity n´astroje, kter´ejsou pro tento prohl´ıˇzeˇck dispozici. Firefox chyby vznikl´epˇri interpretaci k´odu vypi- suje do chybov´ekonzole, kde lze vˇzdy nal´ezt adresu URL a ˇc´ısla ˇr´adku, na kter´em k chybˇe doˇslo. Jazyk JavaScript disponuje funkc´ı alert(), kter´aje ˇcasto vyuˇz´ıv´ana pˇri ladˇen´ık´odu a odhalov´an´ıchyb, nenab´ız´ıvˇsaktakov´emoˇznosti jako n´astroj Firebug. Firebug [15] je v souˇcasn´edobˇejeden z nejobl´ıbenˇejˇs´ıch v´yvojov´ych n´astroj˚upro webov´y prohl´ıˇzeˇcFirefox, kter´yumoˇzˇnuje sledov´an´ıa editaci HTML, CSS a JavaScriptu. D´ıky to- muto n´astroji je moˇzn´eodhalit chyby webov´ych aplikac´ı, s Firebugem lze prov´adˇet kro- kov´an´ık´odu, vytv´aˇren´ızar´aˇzek ˇci sledov´an´ıhodnot zvolen´ych promˇenn´ych. Firebug nav´ıc ke vˇsem naˇcten´ym str´ank´ampˇrid´av´aglob´aln´ıobjekt nazvan´y console, kter´yobsahuje ˇradu metod slouˇz´ıc´ıch pro odhalen´ı chyb. Metoda console.log(), kter´abyla nejˇcastˇeji vyuˇzita pˇriv´yvoji editoru anotac´ı, slouˇz´ıpro v´ypis textu ˇciobsahu promˇenn´ych do konzole n´astroje Firebug. Tato metoda m˚uˇzeobsahovat libovoln´ypoˇcet argument˚u.

29 6.1.2 Inicializaˇcn´ıskript datab´aze Editor anotac´ıpo celou dobu v´yvoje i testov´an´ıkomunikoval se serverem, jehoˇzobsah da- tab´azebyl vˇzdy stejn´y. Mˇenil se pouze vytv´aˇren´ım typ˚ua anotac´ıpˇr´ımo v editoru anotac´ı, v pˇr´ıpadˇeneoˇcek´avan´eho chov´an´ıbyl znovu obnoven p˚uvodn´ıstav datab´aze. K naplnˇen´ı datab´aze zkuˇsebn´ımi daty poslouˇzil dostupn´yinicializaˇcn´ıskript, ve kter´em byly v pr˚ubˇehu v´yvoje opravov´any drobn´enedostatky t´ykaj´ıc´ıse atribut˚utyp˚u.S takovou datab´az´ıobsa- huj´ıc´ıminim´aln´ıdata pak bylo moˇzn´epˇri v´yvoji pracovat, a tak napˇr´ıklad pˇri vytv´aˇren´ı a editaci anotac´ı, pˇri manipulaci s atributy typ˚unebo pˇri potvrzov´an´ıˇciodm´ıt´an´ınab´ıd- nut´ych anotac´ızhodnotit aktu´aln´ıstav datab´aze a tedy spr´avnost prov´adˇen´ych operac´ı.

6.1.3 Testovac´ıdokument Editoru anotac´ı bude v praxi vˇzdy pˇred´ana adresa dokumentu, kter´yje anotov´an,a to prostˇrednictv´ım dan´eho CMS. V souˇcasn´edobˇeje tato adresa vloˇzena do webov´estr´anky, kter´ad´ale obsahuje TinyMCE editor s moˇznost´ıspustit editor anotac´ı, napevno. Napevno je tak´evloˇzen testovac´ıobsah editoru TinyMCE.

6.1.4 Alternativn´ıtestov´an´ı Editor anotac´ıse prozat´ım vyv´ıj´ıa testuje ve webov´em prohl´ıˇzeˇciFirefox, implementace pro WYSIWYG textov´eeditory je vˇsak nez´avisl´ana prohl´ıˇzeˇci, a tak bude nezbytn´ev budoucnu odladit editor anotac´ıtak´epro dalˇs´ıprohl´ıˇzeˇce.Stejnˇejako ve Firefoxu jsou i zde k dispozici n´astroje, kter´ev´yvoj webov´ych aplikac´ıusnadˇnuj´ı. umoˇzˇnuje ladˇen´ıskript˚unapsan´ych v jazyce JavaScript pomoc´ıinteg- rovan´eho v´yvojov´eho n´astroje. Ten nab´ız´ıchybovou konzoli, zobrazuje m´ısta k´od˚u, na kte- r´ych doˇslo k chyb´am, umoˇzˇnuje krokov´an´ıa dalˇs´ı. Podobnou funkcionalitou dnes disponuje tak´elad´ıc´ın´astroj prohl´ıˇzeˇceOpera nazvan´yDragonfly, pˇriˇcemˇzv obou zm´ınˇen´ych proh- l´ıˇzeˇc´ıch je tˇreba n´astroj aktivovat. Ani vˇsak nez˚ust´av´apozadu a rovnˇeˇz pˇrin´aˇs´ılad´ıc´ın´astroje urˇcen´epro v´yvoj´aˇre webov´ych aplikac´ı.Editor anotac´ıtedy bude moˇzn´eotestovat tak´ev tˇechto dalˇs´ıch, zm´ınˇen´ych prostˇred´ıch.

6.2 Odhalen´enedostatky

D´ıky zm´ınˇen´ym lad´ıc´ım n´astroj˚um a testovac´ımdat˚um bylo moˇzn´eodhalit chyby, kter´e se projevily aˇzv pr˚ubˇehu implementace a bylo nezbytn´eje dodateˇcnˇeodstranit. Castoˇ se jednalo o nedostatky vznikl´epˇri ˇreˇsen´ınˇekter´eho z navrˇzen´ych vylepˇsen´ı, kter´evˇsaknebylo funkˇcn´ıpro st´avaj´ıc´ıimplementaci editoru anotac´ı. Pˇr´ıkladem m˚uˇze b´yt kolize manipulace s atributy typ˚upˇrivytv´aˇren´ınov´ea pˇri editaci existuj´ıc´ıanotace. Za ´uˇcelem testov´an´ıbyly tak´edoplnˇeny nˇekter´epˇripraven´e, avˇsak chybˇej´ıc´ıˇc´asti editoru anotac´ı.

6.2.1 Lokalizace jednoduch´ych typ˚u Aby bylo moˇzn´eodhalit chyby editoru anotac´ı spojen´es jeho lokalizac´ı, bylo nezbytn´e vytvoˇrit lokalizaci pro zvolenou zemi. Za tuto zemi jsem vybrat Ceskouˇ republiku a provedl pˇreklad editoru anotac´ız anglick´eho do ˇcesk´eho jazyka. Tento jazyk na rozd´ıl od angliˇctiny nab´ız´ıdiakritiku, a tak d´ıky nˇemu lze dobˇre otestovat chov´an´ıeditoru anotac´ıpo zmˇenˇe v´ychoz´ıho jazyka.

30 Nedostatek, kter´yjsem v t´eto souvislosti objevil, se t´ykal lokalizace jednoduch´ych typ˚u, kterou editor anotac´ıumoˇzˇnuje. Pokud uˇzivatel zad´av´atyp anotace ˇciatributu, typy jsou mu nab´ızeny dle napsan´eho textu. Typy, kter´eve sv´emn´azvu obsahuj´ıdiakritiku, vˇsak nebyly vyhled´any spr´avnˇe.Proto bylo nezbytn´ez lokalizovan´eho n´azvu typu a textu, kter´y zad´av´auˇzivatel, diakritiku odstranit a teprve pot´edan´etexty porovnat. To zajistilo spr´avn´e chov´an´ı, kdy napˇr´ıklad pˇri zad´an´ıslova ˇret je uˇzivateli nab´ıdnut typ Retˇezecˇ . Protoˇze v ja- zyce JavaScript neexistuje funkce, kter´aby z dan´eho ˇretˇezce odstranila diakritiku, byla implementov´ana vlastn´ı metoda, kter´ap´ısmena s diakritikou vymˇen´ı za stejn´ap´ısmena bez diakritiky. Z´avaˇznˇejˇs´ıprobl´em, kter´yse vyskytl s lokalizac´ıjednoduch´ych typ˚u, byla absence sku- teˇcn´eho jm´ena typu. To bylo d˚uleˇzit´ezachovat, nebot’ se od nˇej odv´ıj´ınapˇr´ıklad povolen´e hodnoty atributu dan´eho typu a obecnˇeeditor anotac´ıpracuje v´yhradnˇese skuteˇcn´ymi n´azvy typ˚u.Lokalizace si proto vyˇz´adala ke kaˇzd´emu napovˇedˇen´emu typu pˇridat vlastnost, kter´aby nesla skuteˇcn´yn´azev - napˇr´ıklad typ String, kter´yuˇzivatel po lokalizaci nalezne jako Retˇezecˇ . Ve chv´ıli, kdy pak z nab´ıdnut´ych typ˚uuˇzivatel vybere typ Retˇezecˇ , naˇcte se skuteˇcn´yn´azevtohoto typu, tedy String a s t´ım se pak d´ale pracuje. Na obr´azku 6.1 je zobrazen dialog pro vytvoˇren´ınov´eho atributu s lokalizac´ıjednodu- ch´ych typ˚uatribut˚u.

Obr´azek 6.1: Lokalizace jednoduch´ych typ˚uatribut˚u

31 6.2.2 Reakce tlaˇc´ıtek na stisk kl´avesy HTML elementy reaguj´ına stisk kl´avesy Enter, coˇzje v pˇr´ıpadˇeeditoru anotac´ıneˇz´adouc´ı. Pokud uˇzivatel prov´ad´ı v´ybˇer typu z nab´ıdnut´ych typ˚u dle zadan´eho textu a k potvrzen´ı pouˇzije pr´avˇekl´avesu Enter, dojde s v´ybˇerem typu tak´eke stisku nˇekte- r´eho z tlaˇc´ıtek v dan´emdialogu. Tato chyba byla odhalena v pr˚ubˇehu testov´an´ı a byla odstranˇena tak, ˇzevˇsemelement˚umv HTML dokumentech pˇr´ısluˇsn´ych dialog˚ubyl pˇrid´an atribut type s hodnotou button. T´ım doˇslo k zamezen´ıreakc´ıtlaˇc´ıtek na stisk potvrzovac´ı kl´avesy.

32 Kapitola 7

Z´avˇer

V r´amcit´eto bakal´aˇrsk´epr´ace jsem provedl anal´yzu dostupn´eho editoru anotac´ı, nastudoval technologie, kter´eeditor anotac´ıvyuˇz´ıv´a,a navrhl jeho opravy a vylepˇsen´ı. Tato vylepˇsen´ı jsem v pr˚ubˇehu letn´ıho semestru implementoval a provedl testov´an´ıa opravy nalezen´ych probl´em˚u. N´avrh vylepˇsen´ıeditoru anotac´ıbyl zamˇeˇren na nejd˚uleˇzitˇejˇs´ınedostatky, kter´ejsem objevil v dostupn´em editoru anotac´ı. Jednalo se o manipulaci s atributy typ˚u,kterou editor anotac´ıˇz´adn´ym zp˚usobem neumoˇzˇnoval, nevyhovuj´ıc´ınastaven´ıeditoru anotac´ıa absenci nab´ızen´ıanotac´ı. D´ıky implementaci tˇechto vylepˇsen´ınyn´ıeditor anotac´ıposkytuje nejd˚u- leˇzitˇejˇs´ıfunkcionalitu, kter´aje uvedena v jeho specifikaci. Vylepˇsen´yeditor anotac´ı, kter´yvznikl v r´amci t´eto bakal´aˇrsk´epr´ace, se nyn´ı bude vyuˇz´ıvat v komponentˇepro s´emantick´eanotov´an´ıv r´amci 4. pracovn´ıho bal´ıˇcku evropsk´eho projektu Decipher (EU-7FP-IST, 270001, 7E11023). Editor anotac´ıpro WYSIWYG textov´eeditory je jedn´ım ze dvou klient˚usyst´emu pro ko- laborativn´ıpoloautomatick´estrukturov´an´ıznalost´ıv re´aln´emˇcase, kter´yjiˇznab´ız´ımini- m´aln´ıspecifikovanou funkcionalitu nutnou pro jeho vyuˇzit´ı. Druh´ym klientem je doplnˇek pro webov´yprohl´ıˇzeˇcFirefox, jehoˇzimplementace sice obsahuje vˇetˇs´ıˇc´astfunkcionality definovan´eve 4A Frameworku, ale v nˇekter´ych ˇc´astech se m´ırnˇeodchyluje od specifikace a napˇr. pr´ace s atributy typ˚uanotac´ıa samotn´ych anotac´ıje zde m´enˇepropracovan´a(oˇset- ˇren´ızmˇen typ˚uatribut˚uapod.). Editor anotac´ıbyl navrˇzentak, aby jej do budoucna bylo moˇzn´ed´ale vyv´ıjet. V souˇcasn´e dobˇeeditor anotac´ıneumoˇzˇnuje pr´aci s dokumentem, kter´ybyl bˇehem anotov´an´ıedito- v´an,bude proto nezbytn´ezajistit zas´ıl´an´ızmˇenproveden´ych v dan´emdokumentu serveru. Editor anotac´ıby mˇelrovnˇeˇzumoˇzˇnovat vytvoˇren´ıseznamu vnoˇren´ych anotac´ıˇci odkaz˚u na existuj´ıc´ıanotace v jedin´em strukturovan´ematributu. I tuto funkcionalitu bude moˇzn´e implementovat v pr˚ubˇehu dalˇs´ıho v´yvoje, na kter´em budu pokraˇcovat v r´amciv´yzkumu ve v´yzkumn´eskupinˇeNLP.

33 Literatura

[1] CKSource - Frederico Knabbe: CKEditor [online]. Dostupn´ez: http://ckeditor.com/, [cit. 2012-04-11].

[2] Dytrych, J.: Webov´esluˇzby a komponentn´ıtechnologie (pojedn´an´ık t´ematu disertaˇcn´ı pr´ace). Brno University of Technology, Faculty of Information Technology, 2011.

[3] Dytrych, J.: 4A Framework - Annotations Anywhere, Annotations Anytime [online]. Posledn´ımodifikace: 2011-04-28 [cit. 2012-04-11].

[4] Garrett, J. J.: Ajax: A New Approach to Web Applications [online]. Dostupn´ez: http://www.adaptivepath.com/ideas/ajax-new-approach-web-applications, Posledn´ımodifikace: 2005-02-18 [cit. 2012-04-09].

[5] Gentics Software GmbH: Aloha Editor - HTML5 WYSIWYG Editor [online]. Dostupn´ez: http://aloha-editor.org/, [cit. 2012-04-11].

[6] Hruˇska, T.: Internetov´eaplikace (WAP) I. ˇc´ast Internet a WWW (Studijn´ıopora). Brno, 2007.

[7] Hruˇska, T.: Internetov´eaplikace (WAP) VI. ˇc´ast Programov´an´ıklienta (JavaScript) (Studijn´ıopora). Brno, 2007.

[8] Hruˇska, T., Burget, R.: Internetov´eaplikace (WAP) II. ˇc´ast SGML, HTML, CSS, DOM (Studijn´ıopora). Brno, 2007.

[9] Hruˇska, T., M´aˇcel, L., Kuˇzela, A.: Internetov´eaplikace (WAP) V. ˇc´ast AJAX (Studijn´ıopora). Brno, 2007.

[10] JavaScript Kit: Cut & Paste Validate Date field script [online]. Dostupn´ez: http://www.javascriptkit.com/script/script2/validatedate.shtml, [cit. 2012-04-18].

[11] Kleban, M.: Editor anotac´ıpro WYSIWYG textov´eeditory napsan´ev jazyce JavaScript, diplomov´apr´ace. Brno, FIT VUT, 2011.

[12] Kolektiv autor˚u: Hypertext Transfer Protocol – HTTP/1.1 (RFC2616) [online]. Dostupn´ez: http://tools.ietf.org/html/rfc2616, Posledn´ımodifikace: ˇcerven 1999 [cit. 2012-04-07].

[13] Lie, H. W.: H˚akon Wium Lie [online]. Dostupn´ez: http://people.opera.com/howcome/, [cit. 2012-04-08].

34 [14] Moxiecode Systems AB: TinyMCE - Javascript WYSIWYG Editor [online]. Dostupn´ez: http://www.tinymce.com/, [cit. 2012-04-11].

[15] Mozilla: Firebug - Web Development Evolved [online]. Dostupn´ez: https://getfirebug.com/, Posledn´ımodifikace: 2012-04-13 [cit. 2012-04-21].

[16] Network, M. D.: JavaScript Language Resources [online]. Dostupn´ez: https://developer.mozilla.org/en/JavaScript_Language_Resources, Posledn´ı modifikace: 2011-09-16 [cit. 2012-04-09].

[17] Network Working Group: RFC 3339 - Date and Time on the Internet: Timestamps [online]. Dostupn´ez: http://www.ietf.org/rfc/rfc3339.txt, Posledn´ımodifikace: 2002-07-01 [cit. 2012-04-30].

[18] Odv´arko, J.: JSColor - JavaScript / HTML Color Picker [online]. Dostupn´ez: http://jscolor.com/, Posledn´ımodifikace: 2012-01-10 [cit. 2012-04-19].

[19] Russell, A.: Comet: Low Latency Data for the Browser [online]. Dostupn´ez: http: //infrequently.org/2006/03/comet-low-latency-data-for-the-browser/, Posledn´ımodifikace: 2006-03-03 [cit. 2012-04-09].

[20] Smrˇz, P., Dytrych, J.: Towards New Scholarly Communication: A Case Study of the 4A Framework. Brno University of Technology, Faculty of Information Technology.

[21] Stackoverflow: endsWith in [online]. Dostupn´ez: http://stackoverflow.com/questions/280634/endswith-in-javascript, [cit. 2012-04-18].

[22] Stackoverflow: How can I convert a string to boolean in JavaScript? [online]. Dostupn´ez: http://stackoverflow.com/questions/263965/how-can-i-convert- a-string-to-boolean-in-javascript, [cit. 2012-04-18].

[23] Stackoverflow: Integer division in JavaScript [online]. Dostupn´ez: http: //stackoverflow.com/questions/4228356/integer-division-in-javascript, [cit. 2012-04-19].

[24] Stackoverflow: Assign click handler in for loop in javascript [online]. Dostupn´ez: http://stackoverflow.com/questions/8881306/assign-click-handler-in-for- loop-in-javascript, [cit. 2012-04-20].

[25] Steigerwald, D.: Tˇr´ıdy, dˇediˇcnost a OOP v Javascriptu - I [online]. Dostupn´ez: http://zdrojak.root.cz/clanky/oop-v-javascriptu-i/, Posledn´ımodifikace: 2010-03-15 [cit. 2012-04-09].

[26] The Tech Terms Computer Dictionary: WYSIWYG [online]. Dostupn´ez: http://www.techterms.com/definition/wysiwyg, Posledn´ımodifikace: 2008-06-11 [cit. 2012-04-11].

[27] W3C: What is HyperText [online]. Dostupn´ez: http://www.w3.org/WhatIs.html, [cit. 2012-04-07].

[28] W3C: HTML Current Status [online]. Dostupn´ez: http://www.w3.org/standards/techs/html#w3c_all, [cit. 2012-04-08].

35 [29] W3C: HTML & CSS [online]. Dostupn´ez: http://www.w3.org/standards/webdesign/htmlcss, [cit. 2012-04-08].

[30] W3C: XML Path Language (XPath) 2.0 (Second Edition) [online]. Dostupn´ez: http://www.w3.org/TR/xpath20/, Posledn´ımodifikace: 2011-01-03 [cit. 2012-04-08].

[31] W3C: XQuery 1.0: An XML Query Language (Second Edition) [online]. Dostupn´ez: http://www.w3.org/Style/XSL/, Posledn´ımodifikace: 2011-01-03 [cit. 2012-04-13].

[32] W3C: The Extensible Stylesheet Language Family (XSL) [online]. Dostupn´ez: http://www.w3.org/Style/XSL/, Posledn´ımodifikace: 2011-05-05 [cit. 2012-04-13].

[33] W3C: Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification [online]. Dostupn´ez: http://www.w3.org/TR/CSS21/, Posledn´ımodifikace: 2011-06-07 [cit. 2012-04-08].

[34] W3C: HTTP - Hypertext Transfer Protocol [online]. Dostupn´ez: http://www.w3.org/Protocols/, Posledn´ımodifikace: 2012-01-04 [cit. 2012-04-07].

[35] W3C: Extensible Markup Language (XML) [online]. Dostupn´ez: http://www.w3.org/XML/, Posledn´ımodifikace: 2012-01-24 [cit. 2012-04-07].

[36] W3C Schools: JavaScript isFinite() Function [online]. Dostupn´ez: http://www.w3schools.com/jsref/jsref_isfinite.asp, [cit. 2012-04-18].

[37] W3C Schools: JavaScript String Object [online]. Dostupn´ez: http://www.w3schools.com/jsref/jsref_obj_string.asp, [cit. 2012-04-18].

[38] wikiHow: How to Convert Hexadecimal to Binary or Decimal [online]. Dostupn´ez: http://www.wikihow.com/Convert-Hexadecimal-to-Binary-or-Decimal, Posledn´ımodifikace: 2012-02-19 [cit. 2012-04-19].

[39] wikiHow: How to Convert from Decimal to Hexadecimal [online]. Dostupn´ez: http://www.wikihow.com/Convert-from-Decimal-to-Hexadecimal, Posledn´ı modifikace: 2012-02-28 [cit. 2012-04-19].

[40] Zakas, N. C.: JavaScript pro webov´ev´yvoj´aˇre. Computer Press, Brno, 2009, ISBN: 978-80-251-2509-0.

[41] Zakhour, S., Hommel, S., Royal, J., Rabinovitch, I., Risser, T., Hoeber, M.: Java 6 - V´yukov´ykurz. Computer Press, 2007, ISBN: 978-80-251-1575-6.

36 Pˇr´ılohy

37 Seznam pˇr´ıloh

A Obsah pˇriloˇzen´eho DVD 39

38 Pˇr´ıloha A

Obsah pˇriloˇzen´eho DVD

Na pˇriloˇzen´em DVD lze nal´ezt: • zdrojov´ek´ody vylepˇsen´eho editoru anotac´ı • zdrojov´ek´ody textu bakal´aˇrsk´epr´ace • text bakal´aˇrsk´epr´aceve form´atuPDF • inicializaˇcn´ıskript datab´azeserveru • zdrojov´ek´ody serveru a manu´alk jeho instalaci

39