Univerza v Ljubljani Fakulteta za racunalniˇ ˇstvo in informatiko

Vladimir Bajt Vizualizacija podatkov v JavaScriptu

DIPLOMSKO DELO

VISOKOSOLSKIˇ STROKOVNI STUDIJSKIˇ PROGRAM PRVE STOPNJE RACUNALNIˇ STVOˇ IN INFORMATIKA

Mentor: doc. dr. TomaˇzDobravec

Ljubljana 2014

Rezultati diplomskega dela so intelektualna lastnina avtorja. Za objavljanje ali izkoriˇsˇcanjerezultatov diplomskega dela je potrebno pisno soglasje avtorja, Fakul- tete za raˇcunalniˇstvo in informatiko ter mentorja.

Besedilo je oblikovano z urejevalnikom besedil LATEX.

Fakulteta za raˇcunalniˇstvo in informatiko izdaja naslednjo nalogo:

Tematika naloge:

Javascript je programski jezik, ki omogoˇcaizvajanje programov na strani odje- malca. Jezik podpira veˇcinaspletnih brskalnikov, zato njegova uporaba omogoˇca zanesljivo in nemoteno delovanje spletnih strani. V diplomskem delu preglejte moˇznostuporabe programskega jezika Javascript za vizualizacijo podatkov v brskalniku. Predstavite spletne tehnologije in stan- darde (HTML, DOM, JSON, , ...) ter orodja (Flask, Bootstrap, jQuery, ...), ki se pogosto uporabljajo pri izdelavi javascript spletnih aplikacij. Na osnovi knjiˇznicC3.js in D3.js izdelajte spletno aplikacijo za izdelavo poizvedb v sistemu ALGator in za prikaz rezultatov teh poizvedb v grafiˇcniobliki. Opiˇsitetudi pri- mere uporabe izdelane aplikacije.

Izjava o avtorstvu diplomskega dela

Spodaj podpisani Vladimir Bajt, z vpisno ˇstevilko 63050006, sem avtor diplom- skega dela z naslovom:

Vizualizacija podatkov v JavaScriptu

S svojim podpisom zagotavljam, da:

• sem diplomsko delo izdelal samostojno pod mentorstvom doc. dr. Tomaˇza Dobravca,

• so elektronska oblika diplomskega dela, naslov (slov., angl.), povzetek (slov., angl.) ter kljuˇcnebesede (slov., angl.) identiˇcnis tiskano obliko diplomskega dela,

• soglaˇsamz javno objavo elektronske oblike diplomskega dela na svetovnem spletu preko univerzitetnega spletnega arhiva.

V Ljubljani, dne 22. septembra 2014 Podpis avtorja:

Zahvaljujem se mentorju doc. dr. TomaˇzuDobravcu za strokovno pomoˇcin svetovanje pri pisanju diplomskega dela.

Kazalo

Povzetek

Abstract

1 Uvod 1

2 Spletne tehnologije 3 2.1 HTML ...... 3 2.2 DOM ...... 4 2.3 CSS ...... 4 2.4 JavaScript ...... 5 2.5 JSON ...... 5 2.6 AJAX ...... 5 2.7 Python ...... 6 2.8 SVG...... 7

3 Programske knjiˇznicein orodja 13 3.1 Flask ...... 13 3.2 Bootstrap ...... 14 3.3 jQuery ...... 16 3.4 JSFiddle ...... 19 3.5 JSHint ...... 19 3.6 ALGator ...... 20 3.7 C3.js ...... 21 3.8 D3.js ...... 21 KAZALO

4 Razvoj aplikacije 25 4.1 Arhitektura aplikacije ...... 25 4.2 Datoteˇcnastruktura ...... 26 4.3 Komponenta za sestavljanje poizvedb ...... 28 4.4 Komponenta za risanje grafov ...... 28 4.5 Interakcija med komponentama ...... 29 4.6 Prilagajanje komponent ...... 30 4.7 Uporaba aplikacije ...... 33

5 Nastavitve in namestitev 37 5.1 Zahteve ...... 37 5.2 Nastavitve ...... 37 5.3 Namestitev ...... 38

6 Sklepne ugotovitve 41

A Opis metod 45 Seznam uporabljenih kratic

kratica angleˇsko slovensko HTTP HyperText Transfer Protocol protokol za izmenjavo nadbesedila HTML HyperText Markup Language jezik za oznaˇcevanje nadbesedila DOM objektni model dokumenta SVG umerljiva vektorska grafika CSS Cascading Style Sheets kaskadna slogovna predloga AJAX Asynchronous JavaScript and XML asinhroni JavaScript in XML JSON JavaScript Object Notation JavaScript objektna notacija URL Uniform Resource Locator enoliˇcnikrajevnik vira API Application programming interface programski vmesnik

Povzetek

Diplomsko delo obravnava temo vizualizacije podatkov v spletnih aplikacijah z uporabo programskega jezika JavaScript. Glavni cilj vizualizacije podatkov je grafiˇcnapredstavitev podatkov na naˇcin,ki uporabniku omogoˇcauˇcinkovito ra- zumevanje posredovane informacije. Delo obsega predstavitev navadno uporablje- nih tehnologij za razvoj modernih spletnih aplikacij, predvsem smo si podrobneje ogledali delovanje tehnologije SVG (ang. Scalable Vector Graphics) in programsko knjiˇznicoD3.js. Z uporabo predstavljenih tehnologij in orodij smo razvili spletno aplikacijo za grafiˇcniin tabelariˇcniprikaz podatkov. Aplikacijo sestavljata dve glavni komponenti, komponenta za sestavljanje poizvedb in komponenta za risa- nje razliˇcnihvrst grafov. Izmenjava podatkov med spletno aplikacijo in streˇznikom poteka asinhrono v ozadju z uporabo tehnike poimenovane AJAX. Komponente aplikacije smo zasnovali modularno, kar pomeni, da se lahko posamezne kompo- nente uporabi samostojno, neodvisno od ostalih modulov.

Kljuˇcnebesede: D3.js, jQuery, vizualizacija podatkov, JavaScript, SVG.

Abstract

This thesis presents the topic of data visualization in web applications using the programming language JavaScript. Main goal of data visualization is to commu- nicate information to the user effectively and clearly through graphical means. Thesis includes an overview of technologies and tools commonly used for devel- oping modern web-based applications. In particular, we take a closer look at SVG (Scalable Vector Graphics) and D3.js, a JavaScript library for manipulating documents. Using the presented technologies and tools we developed a web-based application for graphic and tabular display of data. The application consists of two main components, a query editor, which provides an interface for creating queries, and a graph component that is used to draw different types of graphs. Data between the and the server is exchanged asynchronously using AJAX technique. Application components are designed to be modular, meaning that individual components can be used independently.

Keywords: D3.js, jQuery, data visualization, JavaScript, SVG.

Poglavje 1

Uvod

Spletne aplikacije so v zadnjih nekaj letih doˇzivele korenite spremembe. Iz zbirke preprostih in statiˇcnihspletnih strani so zrasle v interaktivne in dinamiˇcneapli- kacije z bogatimi uporabniˇskimivmesniki, ki izgledajo in delujejo, kot tisti v tra- dicionalnih namiznih aplikacijah. V preteklosti [1] je interaktivnost v spletnih aplikacijah bila doseˇzenapredvsem z uporabo orodij kot je Flash. StarejˇsiJava- Script pogoni so bili neuˇcinkoviti in neprimerni za izvajanje kompleksnih operacij, prikaz vektorske grafike in animacij. V spletnih aplikacijah je bila uporaba Ja- vaScripta veˇcinomaomejena na validacijo obrazcev in druge preproste operacije. Danes so sodobni brskalniki precej bolj uˇcinkoviti in se zato JavaScript v vedno veˇcjimeri uporablja za razvoj interaktivnih spletnih aplikacij. Diplomsko delo obravnava temo vizualizacije podatkov v spletnih aplikacijah z uporabo programskega jezika JavaScript. Ogledali smo si delovanje tehnologij in programskih knjiˇzic,ki se danes uporabljajo za razvoj modernih spletnih aplika- cij. V ospredje smo postavili predvsem delovanje tehnologije SVG (ang. Scalable Vector Graphics) in programske knjiˇzniceD3.js za namen grafiˇcnegaprikaza po- datkov. Kot praktiˇcnidel diplomske naloge, smo razvili spletno aplikacijo, ki nam omogoˇcavizualizacijo in enostavno primerjavo rezultatov med razliˇcnimialgoritmi pri reˇsevanju nekega problema. V uvodnem poglavju je na kratko predstavljeno diplomsko delo in njegova zgradba. V poglavjih dve in tri sledi predstavitev spletnih tehnologij in program- skih knjiˇznicter orodij uporabljenih za izdelavo diplomskega dela. Jedro dela predstavlja opis izdelave spletne aplikacije kjer je podrobneje opisan namen, struk-

1 2 POGLAVJE 1. UVOD tura in prikaz uporabe aplikacije. V poglavju pet je predstavljena konfiguracija in namestitve razvite reˇsitve. Na koncu se nahaja ˇsezakljuˇcek. Poglavje 2

Spletne tehnologije

2.1 HTML

HTML (ang. HyperText Markup Language) je oznaˇcevalni jezik namenjen izdelavi spletnih aplikacij. Vsebino HTML dokumenta oznaˇcimos pomoˇcjoznaˇck,katere uporabimo za doloˇcanje semantiˇcnestrukture naˇsegadokumenta. Znaˇcke se lahko pojavljajo v parih, v takem primeru se naˇsavsebina nahaja med zaˇcetnoin konˇcno znaˇcko, npr. znaˇcka za odstavke

. Preprost HTML dokument je videti tako:

Naslov strani

Prvi odstavek

HTML5 [16] je naslednja generacija HTML jezika, ki nadomeˇsˇcastare verzije. Prinaˇsanovosti in spremembe na veˇcihpodroˇcjih:

• nove znaˇcke namenjene boljˇsisemantiˇcnipodpori dokumentov (

,