From db7cf5f85b7d5a40dda574a2e32f34819634a162 Mon Sep 17 00:00:00 2001 From: josdejong Date: Fri, 7 Jun 2013 14:36:46 +0200 Subject: [PATCH] Created gallery --- .gitignore | 1 - _config.yml | 0 _layouts/default.html | 63 - css/style.css | 178 +- css/style.css.bak | 207 + docs/css/prettify.css | 4 + docs/css/style.css | 6 +- img/gallery/graph/01_basic_usage.png | Bin 0 -> 21769 bytes img/gallery/graph/02_random_nodes.png | Bin 0 -> 59579 bytes img/gallery/graph/03_images.png | Bin 0 -> 90604 bytes img/gallery/graph/04_shapes.png | Bin 0 -> 50756 bytes img/gallery/graph/05_social_network.png | Bin 0 -> 78216 bytes img/gallery/graph/06_groups.png | Bin 0 -> 40966 bytes img/gallery/graph/07_selections.png | Bin 0 -> 14025 bytes img/gallery/graph/08_mobile_friendly.png | Bin 0 -> 45752 bytes img/gallery/graph/09_sizing.png | Bin 0 -> 27283 bytes img/gallery/graph/10_multiline_text.png | Bin 0 -> 40747 bytes img/gallery/graph/11_custom_style.png | Bin 0 -> 60523 bytes img/gallery/graph/12_scalable_images.png | Bin 0 -> 106967 bytes img/gallery/graph/13_dashed_lines.png | Bin 0 -> 26811 bytes img/gallery/graph/14_dot_language.png | Bin 0 -> 13090 bytes .../graph/15_dot_language_playground.png | Bin 0 -> 31298 bytes img/gallery/graph/graphviz_gallery.png | Bin 0 -> 267856 bytes img/gallery/timeline/01_basic.png | Bin 0 -> 9239 bytes img/gallery/timeline/02_dataset.png | Bin 0 -> 9239 bytes img/gallery/timeline/03_much_data.png | Bin 0 -> 13951 bytes img/gallery/timeline/04_html_data.png | Bin 0 -> 15839 bytes img/gallery/timeline/05_groups.png | Bin 0 -> 24442 bytes index.html | 294 + index.md | 151 - vis.js | 12379 ++++++++++++++++ vis.min.js | 29 + 32 files changed, 12942 insertions(+), 370 deletions(-) delete mode 100644 _config.yml delete mode 100644 _layouts/default.html create mode 100644 css/style.css.bak create mode 100644 img/gallery/graph/01_basic_usage.png create mode 100644 img/gallery/graph/02_random_nodes.png create mode 100644 img/gallery/graph/03_images.png create mode 100644 img/gallery/graph/04_shapes.png create mode 100644 img/gallery/graph/05_social_network.png create mode 100644 img/gallery/graph/06_groups.png create mode 100644 img/gallery/graph/07_selections.png create mode 100644 img/gallery/graph/08_mobile_friendly.png create mode 100644 img/gallery/graph/09_sizing.png create mode 100644 img/gallery/graph/10_multiline_text.png create mode 100644 img/gallery/graph/11_custom_style.png create mode 100644 img/gallery/graph/12_scalable_images.png create mode 100644 img/gallery/graph/13_dashed_lines.png create mode 100644 img/gallery/graph/14_dot_language.png create mode 100644 img/gallery/graph/15_dot_language_playground.png create mode 100644 img/gallery/graph/graphviz_gallery.png create mode 100644 img/gallery/timeline/01_basic.png create mode 100644 img/gallery/timeline/02_dataset.png create mode 100644 img/gallery/timeline/03_much_data.png create mode 100644 img/gallery/timeline/04_html_data.png create mode 100644 img/gallery/timeline/05_groups.png create mode 100644 index.html delete mode 100644 index.md create mode 100644 vis.js create mode 100644 vis.min.js diff --git a/.gitignore b/.gitignore index 9a4d5fda..485dee64 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ .idea -_site diff --git a/_config.yml b/_config.yml deleted file mode 100644 index e69de29b..00000000 diff --git a/_layouts/default.html b/_layouts/default.html deleted file mode 100644 index bf6cfbca..00000000 --- a/_layouts/default.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - vis.js | a dynamic, browser-based visualization library - - - - - -
- - - -
- {{ content }} -
-
- - - Fork me on GitHub - - - - diff --git a/css/style.css b/css/style.css index 29d2e08b..5852141a 100644 --- a/css/style.css +++ b/css/style.css @@ -1,105 +1,20 @@ -html, body { - font-family: arial; - font-size: 11pt; - color: #4D4D4D; - line-height: 1.7em; - - padding: 0px; - margin: 0px; - width: 100%; - height: 100%; -} - -body { - overflow-y: scroll; -} - -#container { - margin: 0 auto; - width: 900px; - - /* TODO: cleanup - height: 100%; - */ -} - #menu { - width: 150px; - float: left; - text-align: right; - - /* TODO: cleanup - height: 100%; - position: fixed; - overflow-x: hidden; - overflow-y: auto; - */ -} - -#menu-inner { - padding: 70px 20px 0px 0px; -} - -#contents { - /* TODO: cleanup - margin-left: 150px; - */ - padding: 50px 25px; - - width: 700px; - float: left; -} - -h2 { - padding-top: 20px; - padding-bottom: 10px; - border-bottom: 1px solid #a0c0f0; - color: #2B7CE9; -} - -a { - color: #2B7CE9; - text-decoration: none; -} -a:visited { - color: #2E60A4; -} -a:hover { - color: red; - text-decoration: underline; -} - -/* -ul.nav { - text-decoration: none; - text-transform: uppercase; - - margin-bottom: 30px; - padding-left: 0px; -} -li.nav { - list-style: none; + position: absolute; + left: -150px; + top: 35px; } -ul li.nav { - text-decoration: none; - text-transform: uppercase; - font-weight: bold; - font-size: 11pt; - color: #2B7CE9; - - margin-top: 5px; +#forkme { + position: fixed; + top: 0; + right: 0; + border: 0; } -ul li ul li.nav { - text-decoration: none; - text-transform: none; - font-weight: normal; - font-size: 11pt; - color: #4D4D4D; +div.nav { + text-align: right; } -*/ div.nav ul { text-decoration: none; @@ -115,7 +30,7 @@ li.nav { div.nav ul li { text-decoration: none; text-transform: uppercase; - font-weight: bold; + font-weight: normal; font-size: 11pt; color: #2B7CE9; @@ -141,67 +56,24 @@ a.nav:hover { color: #2B7CE9; } - -table.example { - border-collapse: collapse; -} - -th.example { - font-weight: normal; - border: 1px solid lightgray; - background-color: #E5E5E5; - text-align: left; - vertical-align: top; - padding: 5px; -} -td.example { - border: 1px solid lightgray; - padding: 5px; +.gallery .thumb { + display: inline-block; + text-align: center; + margin-right: 10px; + margin-bottom: 20px; } - -pre { - line-height: 1.5em; - font-size: 10pt; - overflow-x: auto; - background-color: #F5F5F5; - border: 1px solid lightgray; - padding: 5px; +.gallery .thumb img { + border: 1px solid white; + border-radius: 5px; + height: 90px; + margin: 0; } -pre.example { - background-color: transparent; - border: none; - padding: 0px; - margin: 0px; +.gallery .thumb a:hover img { + border-color: lightgray; } - -div.lastupdate { - font-size: 75%; - margin-top: 40px; - - border-top: 1px solid #a0c0f0; - color: #2B7CE9; -} - -img { - border: none; -} - -img.thumb { - border: 1px solid #a0c0f0; - width: 120px; - height: 60px; -} - -img.thumb:hover { - border-color: #2E60A4; -} - -#forkme { - position: fixed; - top: 0; - right: 0; - border: 0; +.gallery .thumb div { + margin: 0; } \ No newline at end of file diff --git a/css/style.css.bak b/css/style.css.bak new file mode 100644 index 00000000..29d2e08b --- /dev/null +++ b/css/style.css.bak @@ -0,0 +1,207 @@ + +html, body { + font-family: arial; + font-size: 11pt; + color: #4D4D4D; + line-height: 1.7em; + + padding: 0px; + margin: 0px; + width: 100%; + height: 100%; +} + +body { + overflow-y: scroll; +} + +#container { + margin: 0 auto; + width: 900px; + + /* TODO: cleanup + height: 100%; + */ +} + +#menu { + width: 150px; + float: left; + text-align: right; + + /* TODO: cleanup + height: 100%; + position: fixed; + overflow-x: hidden; + overflow-y: auto; + */ +} + +#menu-inner { + padding: 70px 20px 0px 0px; +} + +#contents { + /* TODO: cleanup + margin-left: 150px; + */ + padding: 50px 25px; + + width: 700px; + float: left; +} + +h2 { + padding-top: 20px; + padding-bottom: 10px; + border-bottom: 1px solid #a0c0f0; + color: #2B7CE9; +} + +a { + color: #2B7CE9; + text-decoration: none; +} +a:visited { + color: #2E60A4; +} +a:hover { + color: red; + text-decoration: underline; +} + +/* +ul.nav { + text-decoration: none; + text-transform: uppercase; + + margin-bottom: 30px; + padding-left: 0px; +} +li.nav { + list-style: none; +} + +ul li.nav { + text-decoration: none; + text-transform: uppercase; + font-weight: bold; + font-size: 11pt; + color: #2B7CE9; + + margin-top: 5px; +} + +ul li ul li.nav { + text-decoration: none; + text-transform: none; + font-weight: normal; + font-size: 11pt; + color: #4D4D4D; +} +*/ + +div.nav ul { + text-decoration: none; + text-transform: uppercase; + + margin-bottom: 30px; + padding-left: 0px; +} +li.nav { + +} + +div.nav ul li { + text-decoration: none; + text-transform: uppercase; + font-weight: bold; + font-size: 11pt; + color: #2B7CE9; + + list-style: none; + margin-top: 5px; +} + +div.nav ul li ul li { + text-decoration: none; + text-transform: none; + font-weight: normal; + font-size: 11pt; + color: #4D4D4D; + + list-style: none; +} + +a.nav { + color: #4D4D4D; +} + +a.nav:hover { + color: #2B7CE9; +} + + +table.example { + border-collapse: collapse; +} + +th.example { + font-weight: normal; + border: 1px solid lightgray; + background-color: #E5E5E5; + text-align: left; + vertical-align: top; + padding: 5px; +} +td.example { + border: 1px solid lightgray; + padding: 5px; +} + + +pre { + line-height: 1.5em; + font-size: 10pt; + overflow-x: auto; + background-color: #F5F5F5; + border: 1px solid lightgray; + padding: 5px; +} + +pre.example { + background-color: transparent; + border: none; + padding: 0px; + margin: 0px; +} + + +div.lastupdate { + font-size: 75%; + margin-top: 40px; + + border-top: 1px solid #a0c0f0; + color: #2B7CE9; +} + +img { + border: none; +} + +img.thumb { + border: 1px solid #a0c0f0; + width: 120px; + height: 60px; +} + +img.thumb:hover { + border-color: #2E60A4; +} + +#forkme { + position: fixed; + top: 0; + right: 0; + border: 0; +} \ No newline at end of file diff --git a/docs/css/prettify.css b/docs/css/prettify.css index b4ec4ca0..07d25d3f 100644 --- a/docs/css/prettify.css +++ b/docs/css/prettify.css @@ -16,12 +16,16 @@ pre.prettyprint { border: 1px solid lightgray; + box-sizing: border-box; + -moz-box-sizing: border-box; background-color: #fcfcfc; padding: 5px; font-size: 10pt; line-height: 1.5em; font-family: monospace; + overflow-x: auto; + width: 100%; } ol.linenums { diff --git a/docs/css/style.css b/docs/css/style.css index 15554585..5addab9c 100644 --- a/docs/css/style.css +++ b/docs/css/style.css @@ -13,9 +13,12 @@ body, td, th { } #container { + position: relative; margin: 0 auto; - padding-bottom: 50px; + padding: 10px 10px 50px 10px; width: 700px; + max-width: 100%; + box-sizing: border-box; } h1 { @@ -36,7 +39,6 @@ h3 { font-size: 140%; } - a { color: #2B7CE9; text-decoration: none; diff --git a/img/gallery/graph/01_basic_usage.png b/img/gallery/graph/01_basic_usage.png new file mode 100644 index 0000000000000000000000000000000000000000..5fea7b0fa8319a864cab8be44ab7ea5cd47cf98f GIT binary patch literal 21769 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

=pBqryqkC;$W>REY<2 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 literal 0 HcmV?d00001 diff --git a/img/gallery/graph/04_shapes.png b/img/gallery/graph/04_shapes.png new file mode 100644 index 0000000000000000000000000000000000000000..b556c59934c13c565ebb30b04578a61760e85493 GIT binary patch literal 50756 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 P?@&=xhnL7def>WG%s&!z literal 0 HcmV?d00001 diff --git a/img/gallery/graph/05_social_network.png b/img/gallery/graph/05_social_network.png new file mode 100644 index 0000000000000000000000000000000000000000..980ef836d4fef7bb0a444d1a900f3d0e796289e0 GIT binary patch literal 78216 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 literal 0 HcmV?d00001 diff --git a/img/gallery/graph/07_selections.png b/img/gallery/graph/07_selections.png new file mode 100644 index 0000000000000000000000000000000000000000..16e90a4b0fb979e30f7cd5d7ddce3f2f289a7aef GIT binary patch literal 14025 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 hzvvpu{C9bg3Z1NQem10ul}-Ll3D)OG&qM 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 z zW!!_i-49hHi#wd`Rhf4>J~hfNJe2p=cVi@h1(e+0VKCEvLgE=cS+SO$*-zfn)sgZG zSixAwaZ4LZrSq728=)?cP>n>;W~Pq6>>2^r{40%~c6V=toUWV7rT|EK7vp~lfe7B- zr^_y4BF=iGt0_ow+9As|He65L_A}k}GqX51u1Q*vckqj_VjrbhU2?5(-F_5NwO$vs z&F#fioD7XFqw|UKc!Z|J2s*xywSt2GB4r~R?@kQze}&AA(SV%ipe6yc?z9&+U{DSC zkC=lD|86rW&CLW20g2vgY2Ulx`fzso$9QIO4jd3+RtC;Ie%u+ldj$sQS6!eUX|HwE zEfll0Osm+O{#%~{w)0U2nOxs`jS*BuoI!d5&b;LI(>pO9W;R^a=dGuo$*Lgv6qkPQ zMTWF}2z!`ILYDOcIbvNMi6V!aal&W2f})NCcrQ}6`c{tju4IorcabU;*r<|_^& z4;Z<~fVIU=dAkVR)J3|`zx)|;Nen&Wo8C=a*tO(og0vpx-cEJoo&%!g3Zlg}C`ytH zF`Z1U9TZgvNZuQ8TO`siiOeOudB*u0=6J)k88qTE$DmP_UC0-5?!hjLgb2C$1c+3SeOSV-_H9kJ~=|1Cxg+yPZqi+w4QRofaK z=mKWgU(J=;kFFEXUIEojp_b$muqM6&ZaX%SkQ&yd`S4)Z-=C8O^=n@ul>r4Y`q=As zn#1PR4&G<>?rQcP2mmI;rS>ED3tHz~k};U&$I89yEJ44KNE9V}HsA)lr;~`&Hl?{x zK-oZ^kfVoxO$3P)mz9-m-V^9*Z1jcZMQ*x}tQgqnOpPYY-fojvTG?Cp;Ev`|?ya>K zS4|KKJrgX+(|22_{&b}^rpVXlwvhbMgxvaWkz9}P>P?UC-Bct^#PEw3oyw~6%X5KS z1fOn;;Z|aq`CD3nlNy|zZD-Cmz@0EQC-f(!XhF3|o5`Lf=rn>%V^B8o(>Lo8M?&}t z61hi?aA4=+VmVXSMaibkQvx&2e7~NJj!qv718xg#x6mXfvb-cR;eFnxFG*)QUWj+S zRT$kdCW7Ybc=M@~F}T-~KSf1SRKxA|2?BV$P3PYR?|J4=47L;+X(npr92G$(J|Nk% z^Fs3n%^f!v=I(!mLeJ`0_#nw(%=iTo7&rsTuu{GJM#%m|e&t>>J(}aG$8B9y8f`DB zy)0#a-`wW|)AQvz#0^rd{kDd1kGwF?=!naF{1HNHw)Ot%2Z@`01 zo8A}gof{DeNP2o|-sPR|)?4Ver%EnnSaImt`;Mx+2$sT1>hJ~AO$B?ooT`pOFhWrx zL&1&Y1Px$pUw&~5;6dDYYJYo`-xKCAcNVUXRsP~zvA817Uii3r71#@ZcTuBk_l34? z2m6{B{bzu`WA#QWZG!IO=J&&An=62qFiewsIm@;4Pmgf%8~3mRDMezes^Vl@o!6I+ zF5B|Xm+7uUsVv@`Aw&WPkXi%zB3nm)de9#N_}V-d_~NOA`-eqaId)#qJV%cX$k|nH zD0)nTDIDO2I!$z(O`9*M8W{C)(Ai1=3`a+{%tD*oTYgd#w8J|qn{SmXMPi~?a)htM zUwa%to7`Z>4xBi^8S4T@CtBVQQdCRMFUJDg0I;|ySK!M51hCVjBW&IJprd|zyHT56hZ zUD`CjSevPy^87i_Z>bDz=tP|avu4cV(^O%KqWrjC!#n))7^Pw9G0{^Lpw z`6N>6bwXm$SuTjDlyI}Tpc|Ce`(?Hwp7(r$9}Sg$jMZKkf7=EDNhd(#koO4xz6Loi z;~dn0`};32X@AB#t!1|7G7CvEDuDTbwrmNeIn4q2Bl|8H5+fsHN>NKGWVnIQGC*n? zH@;g!w9AttwVuIO-GN}-K(pXmPSKv1adP7vXKn^bp>yt{*nTWv(EQ6V_Z;H5MYVx* zBovK#xgJ;)NcQLrSu{4{(XnnXzn)vIOhY>73}jmZDQ$GlYxE;~Qb&3OMFSvcD=+69 zh@L4$0(^1DEBqFTxYj*Q(^5qt8qw-B3gFH|9e23K=zYq5=fH`;*M8OYSki>Fz^J(H zLn@$6IK74+gNWn~_4lnngp-C1zLT`826Sy5m|6lRzm*PAMcagXxtQZ3q#fXt_+Zbw z{depo>KS~_VN`ABvH1$4!(mtt4G*cFq#xpgR=6O;(@yYXlV?} z9e;m*C{K>i)|Uf$FRx zZ_a)|Br>9-28smV-qzp^!A)qqjmVr{bkw7HW=rXA5QE)>pcF`1F7eF3JenJfeyf67 z;rhUv_%#;zl!4nc8HfOG>n>L8FtO|0!CLZ=v0})4+>*)6yBY?I2#%E=uPZrcg7?wh zHy>r1_?PxPYpA#4BJ*Dz_E9d8fHT?THqwvycJcac6qR&kUUsgpIb#})Kw4h^r!oiQ z{Rlo=sx5j^$KoA#VfZtBWreD3VDen)*MLE4iFciq2Ky+Rh^4R_1&wM9-Sig1W=0gJi>^ z3P!3KIY25!DrKz}Lw*U>(Wiv*N`#@h!Gp9IOiE(7;gGUxkHBZ5j?Ty5woLU%`$x|h znvgz!l47u*dmZ1CgCu&3H2z4J0rm$*7SxF@XdGDEcw+Gwn=hZ1No&{Lxg?Wgq8nn& z7PrwE`Qo*}3EwCknB0MyYdN=b?B&BS5TdCJFb!fZ2 z(f;r@26G-nwr!icDI!Ct_xRvyqw!B0a<2s_RiQMy4?$u^5&$q|91jA3o z(~2wBhM%@ccW?vRM*1UMlf|AOu=mTGjC`&J*k9?D{SeVZzYI|?F+@(bn3U@%AjIc7 zI(Gq<6YzdLr6aSzJ^E)b4s+_polTSYPey(*f45!YZ_j~v^P$0(LZD^3^6`Vx!pl+C*IW{x z_eazL6(Hv&t>gJ@*cRXnb;XXMVBoNI^cIOuIQET^+|+mvW=T7lJUN;`w>38?sjd@n zK8?`_%9~O=T+>uqP)LL&h>8MnZn5Xh3Z{tu9bw99v3*msc%O?)>}X5d$JOPKff20x0P`^|X1P^c~h{KpdIH2)PB%3Rtv=a2{Okpaol=2nGbl@X8R|bdeC9DGH#~ z9Uc4sW>8Y>_FkP9q_ap_XZ`1Q+k8O3V%{GP^+yzBluy&IAQ^aoMZFr!mrsBtz1 zraoZoO#BxQ#*6oavBb`z0{`mzw+!o%E`DXcJko^+@L7Fz`z6PG@10Jn@mNEk5i1cM zg`mcj!9Z9(X1R53TqkR_a)(xjwe28`yBexpAV;xK+0>eVK7CHaQm_x%gCYdBGxmcR zm;vgjZ8>Oh8k13B=7loMYC`mQVMBXh-7xO)^8ma+&)kdD`ZB7RUtTV^(U3w|gR+)gnSw8+?riMN}oX9-D zq00354vHVz?1raV{Zx_6H(p)i_kJ4Cz2AQ6~vMjT>?xk>80 z3K^bn0RybumOXz44d9yz`?fj#jF;dR71n54GLp=7}NgmBlqbTnXg5+irg z6K+QT{D~-EEZb#6B2@?Y*Os&wY|o{8OVG#1J~y8sNP_8@Qmb*H!9I5$Xl+`m4e zod0%IIV-e{V-r9Vd2&SkuNOds69NS%z&62TCg>Gg8GnO=OJ>o`ZPOL{EOPolO8)h@8;qUazMY|Sf2>YJuvsK0hvye zzwGz>mOjENc1~f}x1pk6J@RwYSHMnWqEaVe_1^}%BCiLc2D&)m#bM;|7-i5}WvcBr z3gp^;tknGgRF8y9@qy!{4}e&W-M!Hv54`8JB}z_bd}i~8z&c3*yGLlNCq#xQU=7mJ z3yw>(PFVBdBS7@9D*P!*$l`X8kgXrllgLgCd3OG+gYh}17%-dz#0GHrpfMn>Yrt@5 zDpsOxqg?Q)W@eZWuo;5xoj);jpyBg*Jx}{cAoczxw%B<>JJJp5hG*uUAoOMKY}PSK zxV*?qz4LHYh!Xg)VZcFmzt7j07<*WvL!q~{rw`x?5Qrvb)3^%MT)BA;*8fD_;Ujoc zPI-aPxWQvjAC~SLN4D*dI}yuf$P;JZ)%*J(9Zlv!44)1Bv{I5~&8dZ?9`TuiT+FSG zNpqXQ>(SNlRMF>LAHV=4V5_(3aI->LBEFv}FFQ;-%aj$Bo@+2CBA6H+4B7o?tb!VL zeYMA!aCijrz@@ErnYRD@U|smDN}Ru2F9tZLLWEcog*bpEJh$Zr|l(O!OK z4dmWMg3k*rO9PWhhPEr;%a4PyiR%FmT?u!X6Q@tlX-$2%aaO&b<^+1S zb{a|nnd!xT@}`}3``PZ_FCxtaObj=Y1srA<5}SsP|AehDi+Rt4}5!@Q&)+HgW`eBIE&I^hW*8@BSnGG4Qv#Kt}@+ao~<1&h}r}YH%#$ z*U`jO*Ec91hDYM2Uf@O&^{FWcTm?dnpr0%OqbPjhWvd57=5I$2%tzKl>y6IeZ~#Zu z4QySmlxuD;{kDR!pi1BMWWYuOKSAkzwMjLqIev2crL>tZbKUz9BnId3l4{4lT33PB zN$_%bTBs3BKr>0Vr|=fTi*GT(>L0>3)Ax4XFpANfWzRcaFgzkK6ml$na23Ww5Ez3R zHH7D{Sc2yqMTRZ!KmGdY3}=gL1e0cSf$CEOdfdQotW#JJK6wD_R(1;8N1__OKw9<% zUV+P5)>Wmg`oz7{v~Xwto!$>`feoNkrA~e02DbdB?`kw)^z-UQ2V?u`E3*0-DguU! zXbUKtrQ1&s@|@bLA+ZZMZk0x zS$D-N5zA(q&oKf%W6l}8J2&Eme)5;(J+di;9IJeA*XXmgwbKI7>oc!x9hiNq!KZ%p zdqS=w_ZB_g-@&L`#wDX=urma}-N^pPL^Ls?<)6j5(g>gsrd=Hl2#>dw%eG%m^;<|_ z-n0;hv@b1^f8RFHE?a%Fj`R{sd97XJ4}fZUPL7pUz?nau;FESi^5)XYwFg$Wo-M#0 zaAb1>2Xx}+f8vFHtVIb+q*saFE?>A>pTg6J57;Q-Ff!~PI-A*`s2U7r|9LGb)AYcw zlAh3cYK>@QBnEdI<`4TnG<|nG)$RZPkyIixjCpDl#xA7~&f;u1ZAx zEL@-5rctMwyR@cn-ST#lPG^GdnMED#h0bPvF3oll>cY^Ej8{gQT!Cz%rEg`}*?1iD z?16!HEn0fv+cPuSp#<^I$?F6sDWA?45B8ZqyIZa$HXi1`Uw%bzkdk%s?UJ6RReM!b zRfuxaqwyR|VDS&mGpyD2KAs%2E8L zsJ(FRDNkRu2K=t1`t)zo;L=umk0XziKodkK!?>+6!AKslxa)x)LKnXN_UzZLgEkG! z3s%awCp`*$Oo6e@^oILHEhXuv;k&(2V$Y+Zq)fuRnW>Hc3QSZNH+*c({S2-U{aQVx;Qp)D8!; z$^5ccZhVEV?>G2h!++(RFKBPJpde)L(@v;&={Em(;0%MA)ArUDg{j8vAZx_QsaQLS zj=_PEU6c_Ya018n9o{5wWe5shcl$f(@l|lomhP}SidE(dr)! zlx#{$%KejxTD_;vIHg_jf;}ENJBov~OwW`R^iQcj;Q7mD zy=>dtwx7?J=Rr$}p5l;vLM?vy1nJ=dR@Y9R2<@VMz}_s11SVB}KE784`xW!31RDSHmd~M3fZfrhy&C9Xh}^0T#>ki8y59x?;52DQOk(4NEA6M3;ITU zB}%HGI{5E>mLom&2YhEJF*o3(zQWd&<5VVIo3G~1hL6*2uF!h>q~d#zb%a*RzXnxN zEOqV&jH!O3wX)wwLy5!5=!c&&`)t3(i*i7Jy%^of$(K|rpk7k%x1>68_5$%1A(1N< z^zX`&jwIco)Hx`2`{duM=jCh5NP ze;1`D3z0rHwtHzLvnw(|RPpn>f?LOHV6bQVWPVwa<4kY!tz8jfh2bVVSX*Eb`wY z9=FTR^4Ce_B5|*v_fZ;ZjT&+6-L9+iaOfN7?VlH6)FMPdqm-?132`H?fkapMv~^wHIETIBB7+v=G0bl^gf9OAS@RX1IkdwDNU$GX>RLsxf`<$AASl@ftuz3HX zLJ{XHzIPjv(^}rj{`s}F2UPNnFZj=O*uR*0x)hC!atZOpR2p6c7tV~zlJLr)FPFOc zutLm(;6z$y?uqrY+jwYf9ivkmA?#k4Fj%V_hi%s}GMai4{9ce<3K=XY|79%p`8;68 zW8v!FA?0w!Y!({lHBfp)mHBZTewK8qx9?@4@vj6>Fn-^z)7 z=kB*;y><;V@*(&=3%gWEuuJg0)sdiJbRXx7)C{KzlTnJ@c1`=a%x_hsxyBRuVm07% zc9zcV=qT@8>;@h!jDEkNgv5!*XC`U%-L-2W(iYYwI?tZ{B&sh~m1)BV>kef6iU~d_ zHeuL@Y?}wwgyo5o`7bUZ-Y8`LR9mu0(l^dqv&BJ65ijFS!KX8?jlL~`;NdH*oK2Y0 zJH>FC@lK`ZxgGYH;`Ly#d%V2N?F{0~)H-aL__AN7VNF57ufxh{8;+(fpdVMgsi#}E zYBmsVYt!1jmYOaqJ#csjJa1r8zq)7_<8?-rG!0tgoxPR?+g*{Irjc7sh_;mG4U*7) zffzwydg?fKQ>|RtWny{q2N;#b9?JgOgZ4kUvqdN*>QrI=>)l0Cu*?Uf#JMIzpvzu? zjYuMTm365?_$M=Re!oTj;tub}_GGuhrEbf?r87%QOXCHruTV>`K5{wg#;4h~hVGCTf=JJIs1+*7%Si zBACLw{$22L#MVZDE*lN9`nBSBJiVKA+63WRsOsfy*aBcxDA{o`ZN9Etm1kxQ7zueE zro!R>qHi}MPEJBQGQ&~ZhXI+w_ug)Up= zHNaHV%V37QN=AkxdewI8+YVW!m6oEX|AMcb57$?^?FQMBNB@N*<6G?`o(&7p_Oq&_ zxn~YoUeZ%K>7x@!da9$pOW+F~G~U$p9&m|NoL5%G{J94HQPoy7@Tn~n7G9fK5_6Mz zw8XYd8;-;uN^SEj)!q4I&KsV@Z&-DAEW4iSFW*-i`)DvWd}tSau!lJYn>Gm@ zcteR&!TU`U6O#j+BR_upSQo^w$hJwla8>ePMzR7;lJ)fUQ7aQ28t?I&Q|Y^lTGpA$ zTnq0dcPa+EUb@}#%0Mwu^+!XI1JlkqXE7|#IugIKsZ=&452md9;?`I;=c~IC2nmE& zZ*EXtvx@8$B1!YJ1suWAjJS6I{C>#BbI>k#-YA zq5dsT>HQuH_r89mAB>NbgH)5VjuJ`PTH{-dU;lRIP9;lnEB4COQt@WHFU03c1iKE0 z`*sL~HBfEp?DdJ;wrfkW7vo({F9fx2-ocBmsgTB9eqZ}ucaA-JEmLIYzbpwCZI>5> zA#n&QY8i{OMfiz+XQXl&mSnNUwW;a7<`-7dW{a6h*Nx{^45yY2WZ;LZP8^uKzF1ka zWuVgvKRU2J_Y3wEzpgJRkI>Q8J!p-IiSgGWRPkRuksYW#Jge2imwlHScU-Vm-kN<~ zMM?>$&YeCX^?NZcOC;-o#TGT_1<>uIlT)XP)=X!r=|xSRa1=Xil3j)yYo}b6?G$j7 znD#CO!ELnO%F@kYHBl_zc>j}p8wb0cOdB>7i3C26OL4c!x)ky;?ZvY<@O?>Xq3bE< z+UI9zp2P(1{z&zvf=P`N+ZBKu}bZ`nXFNy%!ePI@`!6vp-cbPp%~A!hu%707Ao*_+ImzkSeJv{IbX@7dlD zx7rf;d6$Kcy2Ka!Fu|2G{CqFv4+AQd4SR05fe$3MrQKa2xmeTMzvFOJt#0RvAuchn$y+>)B z7l&|tGTx_vD)|s4jN97aD5TPJVH#@3F5PtIGs-n_lT{iki`oscveFm)vi8{5!M3TD zwHe_;@vx8zCQK}I8wQXr(JML_)AXYI?Qx1li?GE6TXr_%Kfl>~X|I=s_Ka2?Zk00^ zIZm|V9aLNDRb4*=kS@MhEa-+aUG`O8QrI)tfjDfX>U@$M zW+pCmgF0@+z(OK5q5!`?6@v7hBi$vTnWd8+bH2F7vMHzL`a zZ*I$a%kQ5JsaUpuajfTW&bDcd zckhlGjp8btBJsl=lQ9#)T=wSX#J#*Z*nQr@jr_gdi?B60ZTS!BNDxsMP4s7P#Cjh6? z0X}_54)uGCBwy5sIb5bKa#btL481XFE;BONIYZ%la5Wt1aucq_hkkRz&T9dOj z5fEL!4Og5c@S=(&o$Qni)xOcW94a6&?Sz{(Lt>|? zJKNc+gJhwTDoeRQ40LZ`)I|T>6=4~P{}Prou1QdfK8F3)`PH1b*$dlfDo%aFfN6EL zAC4ifwpVicf-Ji!V(fUiJJ1RKG_yvEIqqTgqo1ibenXHsXxmxE0OQ28h{==eDO!Qg zH{oE1)sl0>G0zPxh!1_+f6@0nB4AuUTl|%9@=5w`Y-$O>)<-P>Wy70_d@TQ-wSkQ> zI|w$1&?iTFx>2`z!Z6s-X5cFn@n*GHD!Mfpx&^#~9&HV^Kr8=>>M z(;&>fVvDG6wAqAQlz>%}^{TDf6-{NG|6qQ>6^~6o=$&Y}~U(mAI!Pe30R(CJI_;)g4Z|_w3cf zwAY_QdBlUZHxv4v*oT|ROK0}TzK4Z*SbIUdX!nKNuvaA6p~Y|img?v*whH8oHyLt2 zoUBCnJRT=sJy-zKa z9Hx(!KI%#PeOWxG@VQb7a#)kV?;mjyMhvSrSarP!Tk+TI)9T05GMKTB1PqT_SoIQ^Pi}OI(y;g^faVF(q45-6FUJcGyp6vEU>48-sdK1FJ>mE=3dXPazQ|((KzsQyIYHwbc<(y>6_94x2wEdpRo{h1P9VJN7;54irh_M9Zi?2DGJh8F$UkC~*5csEJTZQ3QcS z^T#}q5ua4Eubiu@m!zi;#{y~mem*Wv7Fbm1U`n#6U!ihu|CZ?}o(N!6Dv`xUjg5^a zE)=g+ClH#c=*Ka5Rta394lPKgJhccY5#4|~-tlSGdL*5=2JIqp{cwls-*-|Y@p0fH zBc1;o)PQVAeZB&~P%q*zJFSRn)6g^6p_WJfZ#0yFZ(mX{T}v7jj4Wt)v%Dx7vVK^< zlmkTe*(W&4*H+gO9GOv{fQf)LN+(XCU26{1%4{UTUO~4SdXBLl4^AeRg5I ziSsIY=1~_+hzkJo=gTsK+5Tvg;j(7U9fLQB!sfTimCtt9-R(_hQAd|lTat5mbP`>e z*i$)Rd`c_U41l8VV80NuYu^8i zA9W(uFRjv}*9y%ZXKhw<@d>QfBB;6Wm{7)Obq7jX5pDaC( z3*b)H&55{1fKXYj7%*1B@5R}RW!sEznHmyiyCS@U5BTN1NU1Fu0tJ71wxf__+=cN= zUb~#dMzpq@7mG$0yZPBZ!DN<_MO9yVd0;ilwDI;n&#P-X9Vm4=8Yd9xV*GNX>}UNf zraW4c^!Q{Vhv7R|$K~2YC%A$siIl_SD}=9u!zNpO@xxYu;@4q43T+}(o7;Aw+*S;M zA;AVW%#aLbBJ8Fatuud32aH62FkatvD);KFE_iI~s%-e=me<0oKXFvD9)A{uIy~w| zoK9)WEVS&s$f||0&?7V@ z)JZ3RxI75?xy~hw^WIJE6;0oY_2)d}ee9D&75NQpPg@1fdIiFqs5Xh@y=bTbj=wf} zU8g7bKu6w-f*MP;Y1%5F;y0MnKs*Z~y_7{x>_bNW5-8g+VjTZrcQ*2WUVs9p<;4$1 z;(!y>V<|aAVT$59aOJbH1`jGs{`^~yA1!|T>`BXOKFc7db{mlk)5)_#a*@n0#1eSB znuw=$ng_UglMOTowd;}6!XQ;NThW$Bgak_~wvC;3HyklgiwI&Y*k|X%1mR{YEtPlT zvC&3+KfW`8{@Nh%*LyS>DtfXIUpWux1OW65L_9vSyUv^KDkG;=R7-T)3&OW5M}-8# zk1j3S> z4Oxp&iUT(U>?JKtI5_VPPFF~=flrwgDnSjH+g~|a%ta1mDsvWF0O)@GuD?p>^-V3c zqV(<>X{dg#F+z2_=0WSKt8Z&+@4(+(kDxhlA+O@<+V#Wiw)+MK)SGU> zwKu8P1lah#i2Z%F^mQq@G{D05^)a?R1>~)4 z=utY{xd|`OB7in{9%g{-zmh+j&#y3S0^6W|+4l|1 z>zg3-7c5nqCvv|M<{eEMv?#!&}q&ej9`Mgj8v*(71NJD^8 z3sy~@Ypu1)E(Q-m0t)v}`7MW;vZgSD@E98Iwi0kjG`OVVRJzhclT<>V*+&a-uMQk4 z!Wto=19n!_HjpDEMd@HSZ)pis!DOy@7&|jxfcaLZtzYJsIofwl-=E-Pv>ZxA?ILcSAM10#d(d znN5qw_LARRdK1`w6^0)j*F_SwJWkK#<_-g1JnrCl`L-sYq-E7hCd_VxjPn~BC21PU z>~i9a5sWThlXUWNGcxm=i6tI&hk1Z-kFcCO?k|he*@%6r_n_f!j?;DtpYO;wh-S&= zcZU6aFRW*eEcSwpkijmfw|+MJ5L#ULA((NM4buSjR*kDCS`>w)jOClwr z+Ab8ApMNlZ1Au-ATXgMV{y}p9@yeloS%sF=PDQqawU2T)HsIZ*wref(O8DVtSJ;U0 zNtw&fVH=Fc?(k9LtW0j?t=ZRmRAx9F?Gh#6h8~uilldF%PuRTu;?a3jvo!I|KdTY- zk}!l^^BaA)_EBkP&vMRjXu0Y5yyA@k((9F(x{AKmbb63{4EThG&8X!O^Mq!(CQ>$z zRu2v5Nh@hf;9TSF%>j23z)&c(F|ers_w61pE9F}uYynfKCK#^A4JwrMDcPC)o@u24?;A10Gh_+Wwwj?`->(V5FI*!yvxlO>f%wZ7Qb3}$g)%UMU+J-=&(utBdTynkB5_t$;`1WGM1f+(l2 zPnsk*XJN2fx-lKa=SsFMUaZ+Uz)IB_1yr>H+i!E)N=^4&y5m^f2@c}|j=Zl9JAuVsu?8XxDkIwc!QOjWyY8^ipx1!-g*jf{mA zSAzrL6;x&`GV+CGWF;D!HJqQB=4V*p+WMRA_Ljo}b3bf(Y2?_W*J%m)IJHYVyKTty z(*rT3T@M#m@@$VfKEJ)#0q~L)d4F%3QaMyfW=Q4L^Cm1@OH@sLX#6PG%yQ?f4bVkf z-R{xxaRy{sgu8M_js~xHz2KOFC!dg0_#12ilVab;b_x->Y zqLP_u9en@(eNh-SD2RK^gF{t_1bNd@-=Pl=c{|^5?m82rfLrBZBraxlGO*vZ7%d@uvsq4|_}CpqH3$PuXW#)@=oU})Se7ApKS!j9pF5qC5C$Q~n7kq2)4b*j- z9&^`61ngy6yNgWwItCGbxrYIuRsPw80lE6oyn3mcT)0($DfpmH^3##0@<7DY^!9en zidZMJKpo(1LHL1tq0GPJ0x=YJe9NYI-myh=Y|ahxLLZs6+8msYoH`PLVX(HCG2 z$D(EfgHIt5>lKwlm}FZmW8kl=0vKJjaU=8KgS~h`Gmj=%+wRLr>eTdj0JFw4Sc{9% zP?Wu4aHQ?0WoH-jc^I=Fk)UU|K5tQ#ge?EeT6t7{<@MuHptE1ejySPOQksq}8JXrL zdgYur2I;fpBUj{4+V~m++oIx37%bULyZLI3xbELy9F|Cfh#G1E&c72LW7vRvhiC~v zWld%SX-q`&#^)Mo+Bi1}#<&_u+BgxZ8=q-)@FK~A{OSc@D+otQ8u6vRyNFU@eQNMz zM@O|FOJp=sy02$H4Yt~f?8wOgUDahff6KHTx_&5^aWS|QDySVAth^UBOZ)BHH~;Ez zKL`Z1a^f70ez?^UFG%pirQ5HT;jrzhlRnnPt^8~6j=DEfx0cq)hpZ`RCFu;|-$oBa!E%e;J@od86diWUHCW8cIc%u+Kn>@hP~7`D*8jYjF{m#v<)*d2rQJT=Lsb zZz_G8#3OwHR{UYlh;OV6xLK5j7(WD`1BS`Tk^O<04Hx@bMalQL?{QM(FsTb%^_Mb5 zlK5H4U=0~fEo0YK#qrN!@x-DhA3lIr5&$U>Peag~gr(}8zAN&{W;IQ*g09wq#%P)` z`x8y)T~&M4#)Ajh6diWl&50luMvd{fbn;w)WZ^cpOba-lmcJ+^SIU3SpDW%7+>D=G zyDPt9_xyvi6*qm}U+DBArFFL1puMO0mU+N?xdpr^vTfn6-(v;H=aR`qW~g8X53@sg zrC$QyHGoZ156H8A@R@4o+hNZhGez*I$MrDqgoE5r@Ik3gOxPtpTyxhI#@6^0b{hX4O#PYYm9T-CNU@V1M2d3k@2!^$RI z$IpH+99L)NOpxYZu!iA>}Cab0a zvNK^4HQ3{v*5UmB4a+p!EGwX9;Q(lxFw9Yv;Zh%+*N?ACy-?EtxVDB(3t>39D9BY0 z&3Ri2zOAcXvtn*9dCcid#ph<%0l0{aLkf_EL;`IvHlVGb*iUa}Cm}AiZQsk#CCQ1% zY=x~sXYoGFZ`M;vvTdg1!PTxFZZaTUGG8YXvMa*Z>dsNbZ!^s=_ydhG-%MZYiB&#R zrDU_SAsR;gd5@`LH`H^gI7ri^icXzGS5XrGA7^_x4q+|lWC^6Ashh3~7>E(r^DH4Jn95wgzonpR~*eNVrc!_OWQm4fRQd#ODXGqDZmGe3zZZh{`=7F!}pU@c_sgMMYXvpU- ztjt{VQv#Nk0w91yD~B^l`3Zv@w8z#!_uf>g%f)P0sW|T|IoaQ!HQUlj4Gb0R;YqC5 zRccIiN)yxGGhMb=^Tv+yeauKzqlYODP6POg;lyM@!|;o+Lbu3n-lSIQ869 zLD>DYlD3Wl1jde7$99b{)-zSLlZ;-`6d<~Ehq8 zw^xWO&Pjl#zqBZpcd+*0ctj81cUk!Ed}xX{cV#{D&bYy!KUJFm@soxl;ULR-zFURT z{0+|q+AS+c@f3j^#um5w*E<7m$TKm-ZtwMA2o)r+P8hO2ocD}a&Sws0s6-Zdhn0Cg zbXfKG3xorQ%AexK`wbNRA5HTCS}xuV@%C4H<3jhmrlzxCNIps83ANM3HX&4r_y7bE zZ`P!mfsbe}_kdT_s5(nwYD2zol=eC)Km2ved?#PxgA3GgmCOiR28_!M)u-ob&<<+HqQR!1|4_}wB@7y*0Oajw z;Yhdb_dPmV1ojk!)HaR%uNM<&!Gvm~w*T1)dQ`KNr_u!s2T-cuTq`LME_7Btawn1n z*}8oQ@e0q8$XZgLi6A8-oa!KMIIyn}bQ3f9XL2KbAI<=8=`e^v|=M4C+P zB1}s-Up?L396rrhZB%R(Ajj8%fF~O$aT)HOnx5zVo5Y1grz0NZ(9h-;?4d1G$;Ix{ zXKt!yUCNL@g~P|qM^2@4AFh!u-XG^3wTfFY2}{Wo6M^Pq6row#D;_A}+;0D3$F zoUcgv&66?}7oST=pcTKbyHPSx*bM9ypkv=N`}D4zt+A4P9CVo3gFo(d@6Y<@tDfOW zWC*(DO$rgIChg2V729R}qCsFGtX+$rdC@zwr2GQp6nPGtiAzk7-AOKS0N$JqQfL02 zmZiEgNGFH#_KNP4oF&AyPnh<=XOV*CLJ52I1xGn9r*7R?R;Q#RM|L#W)+yPv1 zp&uY39jiTf$B;-+%Vo_2yGrJ(I>%mT6Ld7OE3EF+@Pbw*;^jX#8wVi;gxN{j>({WZ z=Id>1#Xt5P{Rib{Z{rV_d24#fEtW&uPZc%+wNo*1@?q%&`UaxCi*Q;f5*9Sq?F)Tf zw}}Pe<9%0UZ-jbE>(nc@O@bA_#eUbX;#m~FkKXNN_y66>3Q?GFqA9T~yttwqmd2Xz zbkzME5HXx#>!O3q0!igA=M|?4qsVJ90d2;b|4e2--FZ09W<5psJzi-8zODq&vMvWb zQA$H&q$FYutys=6COjXIhCxVHUyySyfU?Rm7CBrzI9K^LswXj94`X19&6;n zAF8!3H~rT?lN0q7)0dq8|KAKjexfeg>!LN8#k@K8b}`-OdVsyFxFpVCmb+Y!yL7ve z@?`!HI0LwQb$rc!d{jzlg*Pkhu5*L=A5-x^0k~__q$J4LK4z>kl7rpCr8H>>JD&D) zGIKfePL&!ENCK9ob-<8wSc+o1?cX9ew5A7-8Dk9+Ik=DWh^VLklWPP)ZT<4?5ng^R zf@7b{Ow1SnSJ0FtdN<7~)jbdILD?^zh69_yPuZbqO+p#xT6)z6q+A^?+5h_p{}e!w z0a3*aAbctuHplB~dI#ApSt0?vsxmmlGSUwVTC+_(rv5@D#=&`%2#s{9@Nj^hB8t`xQcGxD9iDO}o zJ7ghl|K^sGO7uThh3ZS5A-N&GxM`dF#g$9Fz+VWuaoTQm;rnt5fES6g7-ipRu4lUg zoZ2q>zic)x%BSFZ;+W@WZwd=J)-Dw=*sNWameM0=g`@1(yu)u8Bxc8vWr+DUeG4jN z-nUia>NPMngX9m(mPS>VGw^Btz#wX&mRS22HsBr*MeTteDpH!S#y36Mkc3+iNdz7{ zQunn?rEX>cMrXUGcw>u2REc#u@LEw*!*9*9oPJ0D=Nkde>evNtz#!xu)b@yh3fdh@ zg1jw?&w~6tgT!g80~q6mM8O4h;4U5e^3Gl6gEZm~5HBZ*oKkV^WV&oqgK`V@rLv9R zxlkgtABSud>uNFcHM#&heXH*QKK8Za)*yHAbKnJp*sSE{I;$3u3?Nqj=}~RpD~|%O zWmCmRZzTUn?D&U37!Wgk=+aQ!&Gf}aURx3yPnVjml}F~9y%AOI-lNb%Jj=pR!D|bp$*v{QCNg+^K4Y>!iV-j7)5~?}?P~G!q8oG>ysF!8HwJBLT*%ij=T@R_VpBB4J9mi&> z95kJxEk9wyfQbbM(>W90wwm7yKojO?No%HUBp}MX`P#G5;lpT1yMb^Q>Go|k)s`1; zC-i6Tmz+f`S>NW!omU=piHb9bWEd!_|iIWkbqND5h;pv=zHq;YA z_U6#w9%j3*zyejUeDtZmzyEyEZvSFYEMzy$Z|>W_i|MX3RWUxepmn&)52)7mt@4g#X%xnE5V;DsP5?Wnz0sJW7k>*fS-{{aAIbmrni}G3deBlVek93gP-Llu*X_+dh(AALAyQ(M&BOh zF8AYPC}Lc z+>)v36&nRhthrZ$d)hK}o~P#5;`rw@k=MgdP~&l{kU4Xx_I>%gdZkZBJ>5AyXK{=i z+QFZKkguB#Q#j3a&Hh*VunkduBq_0INFL>;x#*s1qE3|#>eO-Gm(36e(uymCPVTT4ucM3{p zfq49umEZakl*DaP%NH&W4jer&D}2PyZ{JDBeE50@lt|5rr6A#ei$(bKsXv|!jY!cl zbORpP&Kpj*qXi!pER*FL>;gZ|rlZLc-4HhgTJ-R`kxS#!o+T}R$!Q{{$c-OC^Nepa zb+j)O3MHRNgh+YsRX=Pdyu{bt;^2-24(^*GzMh9!OCGgimwmsf0TEYfq)8AGD1+Yz znJ}Q&G~cW~X(Itb%VUO;x!DEMRKFX&)mb0x^ck&p9XE9#%;oQp!u8F^zJ0y;H2;Y5 zDzh16)g5X~tmV9CaqZ6$l)IaT#j?-ls5o7NTnU71>d7k^;egW{ys zOIDh^4sqIttpMNx1yF59K?yD~kr)@=YO*f@9K1km_@MI3xnVNsMxX-_2A{Tlr4T8} zGht8#p2HN*Hp)xDqgsYh80uaJjawbl;*f6v$M0HNq7@7I`;GWe>qcpviTE&DouNBT zPqyRy>vE&VSI;h)*@S{2THi65Nee3jlxo{|kD|&s$84;<%1~{d7~ltYKp3jCQ9SoF zhhB%$?nT!o*;`X^#Yvy#wHaM6LGUT;f1NC=YFl;$5&C0Yp7F!cOcCe&R~EHD7$Z?a&?UHXwn2Td(>NsRNKNTO>oMZOIuLsqB~kA{+&)b%xt?soD7i$y-;P z<&H?qR)!$*r9WjDm+a%vgj0~kznlX}yMZJT_0Mn0FOR$Q>@tAhweF#!9621CQdI5? z1_9GPU1g<}khmkIKD_&IrRZ)Zv(Gdm^(Kj@b?8d`ukLvz)t0Sg1jm|w+C<#iIV%|R z|LDtUK>XB&v@3q;$wuHC$ge=njaG+u%>p|U@T|EV0qq(`&DK?SIy5;4H$RW&+P70$ z8>l@fZCJeqD#e>4gOdgK)N(W8&}^oMpqpD{@4L6?7CnoUb<$9vFn2r@uJc*kqyIMt z`QfY$wWB2pM0IV@HUd(ydau_mC6T!|!*qeEB2^N7x7cAj4z?W&V*dn|+TEX=u{R;&*cmnpM4~8Lx+o+M9Pg z3dBJv=*~rj?(ZZiEi!@p(3%8OEY}`a95OZ84t#%o5sdC*PKY)6wrOBrmr`sy432jh zXM;R|Rv==HZd=bTrV_OFO#OL4J;6=*av;`x2yAj{Hr=D>q4oC~N2^*{|K|mWNUF=N za(sSdFAI&WBnJ)fx#GS$ErLT1E>W*PX_I!V;))a8n|x8#J{7;sFRiZ@*KN)=Az1vr zu=yvpy@S(fIsS#A+ucRPiPzTH3gZ4Gy-raGDB3v81d4QK7|1zIPCh2aFG*vjFaQ>- z6BdlgTMtOtn}-$$yqL{a99ji%FFHOQe208KfF1V(JDrY%_VlBXv=eS&kuG2j1n=N^ zwX3ZTnygf14|b1Vc`dpBZuNw6`4ec%>eeZo=;z?%$qTWbIB|pQd`Dvqtqe{#0tI`| z1o|Cny*b&ZS{R;BPe9Q!JZassmGl~Ls8_wOJ>c+{L*D?T*&NbRS5S+@*4`{%Qn^jf z?poKUmq+8j zpwXLiT0-g#dm*Y+n+rBZ8F;uI%UK|(#VBzoGoTDp74B)&d; ze$8=fY^0f#jC~j6tevv61V~+Mb#Sk4+8+aYMWD$=G3hm)hv>zbSrdMdf{yOOV#s&U zzOU}T(u0WxUh7VX`D&vR^3+q}sEj)31TKx9h1OBe*>{hd0r;y5KA>k`v*m7CY3C$! zHnb%6zGnX`S=`5G&lcec6d!f6P|nM@BT;oH^sS4d(^x$HbGJ&RaAdYWQUYIhnU#cj0rbJF&>Z@+VfMkNVMRH*vla z7CT)4a7!LgsCsjzRap}!eIPx>9)x!DJou3+!AI?I>=P7M$F#U*kPCr&NptVtTS>fy zKSEOk|G#VY`B(f?2v9?{YvNG#1@9Z-+6xxM4a+IsV{N0n5e>c~f3$sX25$O>mF0(( zQHu4PA90)6yj4?EOWOwt*bhtdW#LDw1&gS=Ik(di{#*;~DE4JP?qywNh?Bl)>wH=M z+tLJejG9Nl`_;AGy1qM;g1}+|kq3X~tBf^LTFFI!xA;@kS+{jYv%>sdv@=D7gM|NfE@*yNubr=4WqiXK298yz{EdO^b$57jWcZ10@IQk-u}EE|TgCxi>Bp zBy?KqzZ30ers@Ns%-Ey>od-DJw+PLA6;`$z-yGCZcpI|!g+Muyh7K_7=L3uRJ4kaq z=dJ#&0Xt}HMNeP!OJ<(ENgk~GrgwF`gFzgfCLIXQFN5XzYZ~oeXt5{y%>`q4jm9xG zz!C%*R&lOjWyI8*5||MWPn?bc5q$;WlZ)p^f6iBjARGO8WVFLtl=s}@qp3rVlejKq zq%AHi)=B9&`-JP^NQrwEcnui%m%zsy6&}v4aTpC9%LW}wa>OF7gfGBYK4?;Jh{FCd zvw*XViuTOpBq=9N!dr(nXEq#>FmteQZB z8JP(yV_d~Y9E;iZJO~opo2I3Jyg9T2Srv}Ii6_C5f*iDy5+~PUL5`8z>-B1u%Z0#A z!NCV5W*|WanRZmzyB7sq_fVCYsPl~@MnH%H_vqJroLOSZ#Z?g>OL%0^O2^p+m}r@Y zT`ACA8ojrDhiBgHSmsrkMZo1ymejYjHjGAR$~>7UI^tI6vh+bO8%H;#w|@U*MYHb6 zU{=?}^Ia&F+-

K^8Y?acY6J6?D+@_7{1B(@GgWd&Rc=tsxcLbf2Aj+A6k2f-cU; zP6`DW2J=r@2*BRDDiYM>v_chVt)id()=8q^X9%A0xj zdYXM;mnHc>YDV~8gBjY!3iSA#NWR zmkUvUKpgrM47aAW8#7`!kv}|^Gd7!O722gpd#vcfa@@r%Fh^Fi+c^JB7z4^h-aL@J zA(i*H%Oi+LMkw2EFBjHA8kIP`D+mK6a#vvl;PQVZchhX;<*|fvNN~aBjjX3KZ&N4a zVSnwOU%bQ|$|ukBME)m(r#-Ah+#E>7Ls|t{qE+7CA^zx3RhhRDpASmR*L!{o`SrE9 zW5wUZeeH^!OA1Z@-nUMw@jc-etC0i{==P*P>^<8~G2ane;fsak12OGBk|LEM|Zl2;D6&yRVfpkB??hBFL+ zQIM%VPvth-4Yl7Tj(?8iJ?vW$8DLrL_->%v@r0+jwV7;xJ6pQs%bssi~|j`Z-9wg701Md!>HPqq17g=7F5 zT-$22dRS({5FODWuzP2sx%bbkT?8q1FMiviVz4%kWo24Uw*0Heo1s5j3wei9PWRTy zeRwM2hS&yo+)w7z?Njoq=cJyQdkuR%7IKNkYf7+#+m-M}5@yyx7w^i+2;b~FX3_Q; zGUG=+Pu6g>P4Ay6_j`{s#=3rgREGR$Wt;nP(U|yte0^|j)B5N%)uu@BL15FJuG@P? zZ=^6I*X0{;QuAAcrL0~1WNnF#PFkNiiG7+6xJ9k=DVi8T9uA}4c{4u*C7v13f>t|1 zZ_+wk+(mj1ufp0^31K}i8@@ntHs!Eg$#4>GF0Gju<{PA`!U#(*-KGViD#e>+2S_GW zxj7!A!Q|txdgr;5rEf9Lq5U@XB5#V&uaArCDP(ssBNGuMv}P+H?k$E1P6A2`RC-17 z073q3Lkx>a=h3R1GmJ;#L{&-Kq)BW94MGTS&~)Q!|GcQjZeHf+(sg2B0$DH*P>feX*;#p=hY!etM!l7Vaau^BY#9YijkrBx;jCBP{(d5XT_ z$|U7*43)p4rdf{|hoxCQrxvgt7Z$xT4U-%z1OGN0sCxyqq(h-e23~Cds^>GPI@3sL zIBNrig+&zT8|ty*vJY_WJ+zPbVz5p&M#FTV%|KmUe7>0PjZ#u|k`~%Y37-pDwW z^G{TO`HDfla>b}P-^wdrgD9PJOhk5a-J$^KaI3xy;m>yfPC3xA>?L6H+O z8?5;WL2=}V9!u&Y6W~tmHR4H-{F56@wWZ*pbn<$MtZqQE38En7*d4kaEpy=OuzpB3 zt&1FNLMwQ^fYXDtS65hwHTCtyu2R>Gw~E-y9PM#Dgr$?H*PYykF-;DLT&Jh^SaCfS zSGMgEg$M*itP?nDdI{gxL?R`q4Bfk@b$a7sHwJP1yV2Yes*}%wq+xj%3eunV0BJt= zDL_aN@B67K{8)tJ8w-uET1pMMCfgMe>H0~UGx); z8j~_r5(LI$_G;wf>c#dyQITWV^mzT=tEw!(q>C zSp{lY6Ro%-f=kuWAnXJGsN1aiXJUxk$mm!|_1BAT?+QJ4a3lbz zdwOOsGsxWQMtRsoLb^zk#6vk)yPI}d#A1D-7zm&o+Pa&d)?3S^SxG;<)NTB0@B#Kw z2{|KK6MtDj|-IKi_k$Z&+CG$^9+&gsNtVbB>b2)7(@!G%SX#|NcS4wZJ;1*U6l9I{%Y^a>`|rW;h(wp=W-D!^Si;;3O6lNd%AE6icEgi@2^+u0#9ayXRX-6J@{}Qj*d-_O{n{xk8iu# zXvHuE#CQQ(5u*IJ<@zl_7dm6m&BYupFv;xs#f7}J7RO@hrRHK#{sB@(QvH4Iw!OF56iO`Du-zrHBe7}Xs7E0A^K+$rNH#aJ z^YMZT3h=(!(6>uLwh0&%J?0U_q*f#2q`!Xo@~8Wv0q|B?Gg9#K^7i~Zl<`+4n4T(I zS8QXZwZKserfDqYu6elsSKD{LHMu-*$9^oJ5$OUFR1gjzy$UFyN{4`yfE1;7LT@$* zRS^WFN+$_~-a=F9C?F+(RHc(pq<8pkJn!dEc=?6v%JXb_c4ueqxp!uF^r?$W%>2c~ zwQvLG5Azk4ag77F027;R_B_BCWM+0qQlf>tYxY*t3!=G=!)}ZXaDgB)r$*v<%_}Q3 zAlr>fDiF6a3bcM!E#Z zDpdCU$pe}8>_vSbZEs$%T+*&Rx(dQHD}lSYY@8OpiU??0y+@&H^4>K2VK+pErCM(#Gf!2~R7auz0C%L(sA3&=y)SlpZ{?K;pFX_?ec0#RO)moq=^O;I*B6gYwpXMz zu%r?CT{{=FZlu6-!PaCG)3bJxdEIVnacc1|lH_-wbTpk8Q43bxfN-zs* zZF%$Sr}GL>o9~+PRLBb6X>kOVG`X{3m@bzN zOGoJ&BXK=x)!se**Vqd8kIik=lY|$ALd*{hFy=lcD4AEl^}%{v<;QjB7*)&Hw%Uw! z@=fT}yVu4$@+fm~3tBdn7!kLaE-_U(i)F%u4(^D6V5tb7#d+8?mGMwM{#E3%9y*7bagx)l_sx9wi7N*ZlFX!;>^#S(!r^l6)QW5G$Lf4Ow_ zwAu4W0NZk?nixE-pHj!Ome83M7l>pLYDm2J>PC({_tBEBKnatv2Gt1k_vId|ZT-^9 zszX?P8$A?L5;Y}F6oI(hrl)V)uO43#DqNbyjh0=QuF88hddY1+cCo%dCHrV>Kee`Z z9owLpAL%;XiZrsTUXK(&qGZzPESI|aI=_Ws-7$1IoU=g(9kE2Q@72!COqS2>Ypfk5 z<9QtRJot`%Iyx(trr1ppgasm>&qUu~WOvJCN_DNQ9FcLncmr+*|K49sn=Z~ju{PbN z;|E5jhVWf?g}!0rji3M7rpq@C<3>uBuxC>{4996y%P-5EJFv8u~eW-@Vb3vDTv|6QfFTdfj%m!*~A z0EzhxuJ)eU1;CZ>-necA$pjn4b0fLHl}E}icAx06A?BqTq-XWu`H}?@rTv9vM5MK6 zncjo1bVxexU;h!>Xm?XmoI#Pg=RQooyQf8HLTiZ`y9)jF?tVC@44Hbw!Qsb#49~xT zq)Xw3mh$>m4()_*Ea6Dm!N}BQ>OhZhlJrB6|1uY!6nm9KBFPjLUQ7ARFxtfM zZHP!@$&pOAo2FiEcr*{A!F+z1Vw&#aNQzS&==N5(Cy;#eMG0SyR9K0@U4Ecb%0bR~sze=4}a93UH z-nD;HbnVm#q0?h|a<~4>>&Wl1fZ5{kYTw5{58niW$s>vJ>mrZ4%@GO)IP_atB9RyZ zH8H!vG}_~1ZO^(wvor_y#GfR}MD4A)FKr9Ww~cc0tCpuq$WF)vYSfL}hu00=xW{34 zlGj$AWMXcA+EwDw)&t1R@be=c>RPdP^L31k5AL)MujuGr*GuiudK$^grJkFPlT5Ii zwY!l-2W3Mx%cuyCW;Skdu7d{ zE)@2+y)JNgA>cR&ewxmx>z(&;IO)Knbe69p<_x@PH}hzS+h-EGW4 zs?fc})}yJL1~KXN0n480m%m#kp#X2&S|_Z*2NWJOik~>cI+u2Km_wy?AzaLPQ_LG@ zVEZW}dY}5PG$k6^RsY*`KV7I~m-aR^A%TcuAw{#eGj%#N)P{(|!(?aoe-?BH!7*;sW-^Iyt z3sQtRiGOAmdrJ5z&dcN5Lea*0QibFDHRL&2`XH}2mImex+UXj%GxHXw`(=FX39TRS zUeI37AX~|o;hOcgp(50XQixVs6WZni?c_Uh{%$huO_;Fy0XV5+H6dh-4%?k~{qzet z-NnF!{O%T8X{xne(|)6cx8aSH#k`~tw#~D;+CF}0Wi)ZDrZ{ngE2y(Z>QAhxDQW}> z@)r4i%GyYo8}v-Kokg*ZV$5pwnPQ9D8A4vr@a}t_r=7P{fpK5cj@x%4fK2ogPH4a! zWGMX}GRT4J{kh=vfOOx$2&Noy`h_Ojv19DFv4D6UhUBSB#$tq*gQ+biQR=R5EMn`W z*D78d2MM;O@rc|C@~AOUx}q>aynF2*|61XXfx|4BCMsFXo@oo0!d7eKOGeAl-apVI z%!aWx=GrAqY!zldYP@YID}CH1ebuSF0S>?M&so6it}eR~_Y7)m^$tJQg`qX>z@j?+ z`iSaqv!mvUrm%&mK9s|iE1!Nq;hP5B4UB9V=A{?sTwIx|8YM+fKVD9#%Dv00R=#LrRd3Eib}p?VG?k>Mwk~TP|2bl4 zy6?mn0I7V-EVlCQXOs0nzP6HJYiVRjeTcdLLzGO@k2d|0<)9Y=o_>psHS=*+b2kI` zcQ36UC*e6Tc_qFv=7S7%bvbn#!*q>jGwVk)5r|EbrG7w_!tr``2 zX3yl`h4rmId-2`!-_xa%|jke&X`okJZn62(t{W#(V3ZD z3D1$9Wyj+(QaWG2LcLGEh7Diga9m^wh`te2i>vPg=O8{_yf?kynY&XNnjJ70#gEW)t))uWWTsj<4@4fwRPZ zUC?R#Rq220nhT~O2tgu~!JJAmSe8~+dVaoq?U&{G@;*Kwvo*raiA|=q&&asNk)VO8 zp3Nd0y*)brqwltPb4?cHlC;VL=0)?<^`~X}FO}tXvfaPwBfxLy;g!b^TR|Ytd^r8$ za|DNRYn^Vd# z-?!n;pKZh4CC+v*J%H(}B{FL!NIg7$+BP*rm|@(QvP~VemzC%^*80Lwn^59Em_$VUTA zl`bKhW<+pYxJt9a12A2?5Ph={Qx$cG`lGfe=6Rv+IxRcdUl&u28}DaMQFYx|PAewP zUNY>XEzRcqmr#yg06#Y#nMf~F8;kkLi|X%h7f$9r9@+wlFy~sIialG~CX-KEI3!;6u9luTpbEp_Umv36?2+rzo;diwDy03IXCuQ+}0nBzsd?QN$$_f~lPP}F(xea5`|dY)#^ zY!1(;pkl1Dy-9PO$@eXn%LlASI5+(fsO1u|uOCn5j{oSsh3Jog59kmYVyOMG?T8#Q zBex9Wncz#ab$5i`wC9mt35&#g;Y->@>BhvD2yI*44t#2o{LPDcWsUj&)VLut{VKWsqAwrYjQ9nS-#4__@U{RoYI7KxTjZEKm+MOzn~yD0*w}^#B7$6 zL&Cwy-m`;o&|XQBVb`!ayfJI)4~!0+8T@B{s>jTW;TlrV*)_o#5#S^JOK$>4PNkfvk64$I&$-1;I0r;NQS|TpkF0pNdV! zx=oFQ#v&!@-(v7T^S;jh16Dy#BAX`8#$$EV=$$pMS~h?gLQZj^IKI%+XKV@4){(P} zmg5x_6=qmvPYC3`bd=MuPi9YfDY4Y3BqijbkiuX~O9EoZ$;B#)t|Z7+!yOiIf8L2o zSik(njL&0ZAxZjVGI=&b)VXx&zYi`EZr+V$@3{hjgz$SkIb52eB|b8l}+wI61Z}_ea=eW~x3Nq1OnD9sKGHLaL#QCd_!k zj@TuM_}S*M1gRW4D5F;vaTKJGcLgW$!C#n-T`8VTY(k^>j$Ni{7M+MFGOyFov*$&u6_d?A(HH3cIg96_5;)dJ@j)QJxf3wYf>qKqv?LyJt~0-j3hk-;=%xSOWe&?^p4GC6B8S2bV*~^vG&91B_M>v)*OZ* zn9jmn6U@Ll@bW6~hkC6wI~BQO=H%x@6i)Gl+^^EUYtw9q`O^>xbrwLR7NJW$TOCh; zSM?zGgD$e^m_d6jp*CnXB`+)^N&=(Q;)f;cN8MFV+GK2f@?N0QYpmLJQY-Z;1R{=Z zE0;_#_!6l7>hF~BSS=%vO%2}iCC&>bRtA;%MMH8gMZ(H~L#a1Z#00jotZdP)AS@jW z!9xJSaZI9%Hyx@UWnz>0yxIu|;RjM~ShDbsM1ttg*$A``mTV9OY|NV+_SO@<)XS6x zd&+e*B#!4}f4}~%z`-3z&dz8FfQ}``Dh>qdqK>e=`Py00R*@9~tyYeX%P0T!@^!0% z!^CrIjcl_&s(Ax7v5vrR%xyEhp<*%1m$e!qNpK@n>UrjA>rocGVg?3p zDPj?sYQSW1i2M7I?EX;li{vzAo|9lUH8lWIMfh032u)N!n(~WHHXhX*vMpXa$|+=7 zdAg)ZL=`9k0MgA6A=H{ZxyqI$$p)qx;x$azKg=nN{wZ&FQf;GP+{r@MPiY@tjOx0> zGpYjyY`B{ABDzlMMy)!E1&09kv3RqbC-bkQK+Nt3ma>+(5d)>WUVQB-T(W66nEbE! z77ZufWQ=}DI%SM}sr9}!h91a9icbGl<$rw#akgxppP?cL7lH)%xANM_Yuth~61d%4^;ub4$4-DHGZ#999b>gxik!}4<7!TV*``*`h z48b$NHMC&Spuklhx%1YZO?AaJ)Z!ud?&pyuB9Q`&|D0Vx{GH}teg;{?X;`gCvQVYy zlZN_R72Iq_w_$D<3NiFWE-NW`iX%|_YRVc*e$sWNNgTJCO?Jk*pMpR_f7Bd(BeSW~ z>IMBspc#^lCvCg?y&@%TS*x{6&KJB1^8}QRga2y7Ahm(A37!y*a5`)0;DuRR$7!60 zKyH3!F4gR>`B1nWC7s~J0}d*R#F_6rA&QXSO6~UE3*-~T+KUb|$d0c3d2N}98@Sp! zybe~A|9`Tw3)@bzOCLqG9I;5GMpR(!5v+!QD>CF{Ei3o;d+4i%a~~*NWyKJ}iQV@j z!*URjt5EHzzZ&5b#f=PrO7&J}NE!%+0BvaoFSo5*b_bR4y^2`&l1bJ!t$m@`w4bu6 z)Dncjr^`n^jSP5VSJ#U9+wrf@R%E`h(SDrcC2n~<@32Sqp~E9b%Nw!?if4XPw>Z^0 zAdC^R52UpY|9r8^8!E3R?Ms}qbWp)88WsGNlxt@2F~7M(Z@ZRlQsQKVh2O(8fS=ZY z3s0w_Uf2eXLXQHl*J;05W=XoxaO~gm8k_a9M<2h?h>)Sy56Igy7mH8@Fnfy^r zaCnj)+s~@9{IQO!cSS^@n~jz~imH|GE}v3<11AKM&t;h9esD~X@bq2zmP&i{E4`{l zS0m9r59L%;Sd_qlFqrC(5n-Y~Nvz?+)n$!31{fF6!F)%)Rv1nYPH2x|tlZdIs{Dy_Go}S)>4;i_h!x<5~L>MCR}Jt3bC` zH*I%eSC5{$ijB+lP}g~fHZ)UJF2Wb(l|Nbn^l=85IL8gI+KmvHWV@|P3QNdtILYCU zg|?{?Vs+Bn3VdXx41{3$R)wzkFe{0qS%au{6ma*h*C;*Q@1l)#<_O zL=@(^sjhHjx@8_h?3?VKLhh%J`eWZ{%yf}J@U_~dI6S{6DvqvRYQqCv$++^aB_Ow= znWeN^%BIT&z%FU?Q5RR&0+I=$pTnZ%Z@1rJrzp-zMJUcGB zPXpHt*Xy$7Bo*B$LUmxS-jNc~ z1rl44zY=}5cXKa!MJS>AKQFe)OngebRnI2QOjw@ueiPYiL?0zimx zCT#lRXb36k6h!VBixOOgTNHVM7pGTpU%M*13fxd;lfxin53 zIs4V1cBZfJT#bkQLq6Y%$K8P#-EMC_o}wV(iXE^PSWNpn53;6Ms_r?pge0Arp0bGR zR`A^O+%oo!qY;yhnV5bX-i0Lt`}aX4Jej+~h{Xw$h^3x>W1 zlE|~l>Gwu(juGhNsSCJ~QlJgqlJ>#S%nJ9lCG*fjSybS8(B6?Fya-11M}{4Gft7m@ z->7JJtLTj;12dg9AQo1&#^F@LOky+H(27Ytq%2U+DG^}{>@dQsV-!P42s&Q3gs~mk ztMWm;t3>fyFLI#2c$=t9HB;dNNh_wUA9*MrabN*-gfCzq%l#bu8&5%k(P)i~w2)s8 zEj8j_!r+_20sh{VRezf`EzaM4`w`&!rUSKhrrG(jM8aJUkUc4Ro!7m;vx zjHk8MTG*%CnWv!&n4Q1nWNe_l`n=ZvQVZkj8aY;hxzQ~C2GaW*=)3V9guQNTRO+=lA1ZQ|%f!1rbTs`3N z_30YIST8&-(lXVU<;=Wza8zIPUtg=`2OG=oO63rIm>j+XX)%ngS3rRyR-Y~a>X=3E zuz2!e3#aJ;jy>~D4tbTP*P1&ib%QE9=25@MKP!sgjK$hK$2waAdW+dP4P%cu|F+vH z9_pKB)s;8p35CN$X?n*GkhO3X&+d?1dvwjK!A0xun&nuhwDZh!mwjyEEoO)zCAY?61)1JS`O}~SgB9#V9Ebb1ob0Y zR9Ca?!`)1J^n%9+6^WZkcy`gd)nvUam28BV=Bp^c?Wty6w7w7g9DgGlLP#RTmE!#O z63#Q<`O|qCG3m7TGJNqka33@zxIbeN3rUR_9!p3?txPpk1F-ZQ@U$u@Du5|dsMQV5 zF^rA)&X+OHQVl${n5y$WNPOy0M*DA#0fe;9!=@cm3o3(vHC7Z50p-gqVp(j+loz$(Bm#LC)EunYHEt8oVI4kLJM?S^>r}oC^qZ4UcP6~GZTUHIi_(C& zO>2l{g%La(0H980yhxGPw+Q|6XTtry6=45J56Mia=T#?dxcVSW|8BMRcrJ#=m@wPI zGg2x^ACzA^-IS#_1TH&+JXQAox?L4ua@*N2cU?Z}aTVQ+7holPncYP>~Vic-^R_@q2Et14+{ zK3w&f5!NlQeN+;mHz`Kx&vnbL;h&Q9Cn3atvSqH%9#=Vxy^Br2+kNxq_-}9UT|g4);0!31 zFIf6qO)CZCO1@Zh@BQ>jg>FKj-M6t_Z`E#-gb%%D^Rsnbscv6*Qr)(5HEbK+B~;0# z#(*8irDF|u`~RT`&0#`6;7jxZC_RQy-?DENZXH{BCoo#mdWFwKw;ngo>!!QlC-Ck%R4v?Eo9F;3sr%20`d#SlqGl%{2csy#vZ;2 zrA_8lfuG#UtOt}kduA9(hthinR%(vSLOq9KPoUuFp}i&WO{+z+)Z-wa>mk7p1@niW zpmf&4hK{4}W;Q0^H49x#!2?K>st|25HX$q@Y{;wv()%d~cOtN>kk7>e@6pGv!qth6 z^>xqv7k$Ig(KxODigaqj%Ok)OpZdBv<^iEE#{-vUfmMgxFSw}$H{=%8%iCE`>e1Eg zpDp}f39#*^-V)NuH7!!`$mg$w^R(%@vhfKcDV>nFIr-f}Ff}bZ`IDLVzvl;<*|Jp$ zLrbzT$8rCwKk{~_taeF8(!@9WZAZqK+e@l|34z?ViO3(;b6lF;XUQQqaymp)gy6o- zDQ;1O4@`28W+)n#>GgQXx#0hOa_4XOCNsCFe$cH<{`iJKVdw*+{e35Hyah#|gEfEa z!AkS3zaE~jXFgi&@e5nHg2MdmGCwD@_Xr;MDeZS_6nsYK;|=io|HnT$vtzc|=CB7O SIjT5HGb#!iaQvgEFaHn0T7CZj literal 0 HcmV?d00001 diff --git a/img/gallery/graph/09_sizing.png b/img/gallery/graph/09_sizing.png new file mode 100644 index 0000000000000000000000000000000000000000..1cc1805775f93a9ffc82ce7a16bd220aa60971d6 GIT binary patch literal 27283 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 literal 0 HcmV?d00001 diff --git a/img/gallery/graph/10_multiline_text.png b/img/gallery/graph/10_multiline_text.png new file mode 100644 index 0000000000000000000000000000000000000000..7f95d7a87eef853f19691972d7d292ad33032850 GIT binary patch literal 40747 zcmd?Qg;$hO*Ec-0l%%AjbP59^NC~5Kr__MJP!f{Ts5B}agM=V0B_Yx!QUgdgh;*xz zFvNF;`?=rseD7M{U+}S(3!J&GbN1Q$xAW{BrLCz%O2j|}fj~%AlwrCM2(~fi-wk~5 zNed!v4gz6?sK6fTzsT5`_kBTa`$g_|Vki^LHvSO-UT4adOF~nj6pZ}!uUAE1AL&!q zQOrqDhw6)4=}lC={`xZ-;`n{vm~40Ofw~O zzr7~$%w|t^zX_FX@-^@shNU{=b{)dIGV~L8%y-bt+yc#O#8X$}!j>1a)(Be1aL(=& z^OPi{-b!|g-j85E&GtvolXJt=!Ff~9Cli;sYKVP7f#BT^dP%%X2T8oMq>PTB#GPNu zCw5UoHDv#=k9{mgXFk{(_scx?4o6H$_zgUBJ@1qg^FiC;g3ZZwObWz?)jwr-*X&P_ zI28-W9nfYwu<(#cUSNCoexUa!3LjWB@;mrzR==Js?R&V}negXfi~2>SHo}=N0naqX zc6u+YR1H5WyK-g#BF%nrPJwrQ4m(6&F`J& zM-swA$pj1cIjD?Q`%7b^OPDfp&133l`)iKE{;v2dtz;P;tjur{^ywC^Q#)$@{+m9* zT;UL$W@&7V)4} zY5)l%yK7QT)%zz%)N~7Wd2jzQD}NJs5@{1?cCx2F4%0A&^PH4Pa~KIu8Ev5s_zv)P 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

s*(AIrHpi@3mLmYu#(0mpO^T8q|(9 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°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 K42Wl4qyGo;pgddv literal 0 HcmV?d00001 diff --git a/img/gallery/graph/12_scalable_images.png b/img/gallery/graph/12_scalable_images.png new file mode 100644 index 0000000000000000000000000000000000000000..1d3c7ee7e8751191bef56f5f42002aca27d0116b GIT binary patch literal 106967 zcmeFY^}zh$4?zLve(`av_$mt#UqDEXX_@Hsl#^W2HY zHlN(AY2h+7&A_L>R5XaYySw_gPnMvW3)f*Q^w-tn+MToT^Fcw+Dk7is#se{!sw`_> z{Qv*${}UZtsR;m&P!0i@GoXPoiDe`V3jz!PWmH&nv(S%+O*vioMcu{>@KC0wh2Q)q zEAuYMhFvYMHoj2xoADZ3xTnMyE%rn<;0)D^2v)4`Q}XW|esjq0=Mt&mjm(`nMHL>^ zXTFCqJ(D#HYQDakyt^l>EFQa}$qLi%mXZ0TBqSRo~)!YS^4F8x4`14}IzOQO*`*&wgCZGz5uRS;VXL!3D zkK1IF7Jy(W^@QHAu{^gmlJ^=#M(UTlt$wq3ONDDCViCu zopTnyy|torzxe11Jt*8zxnA%7e6O6~by=q=IrF1)UpmQ|`Gf+W*Vmn5W&0Uu731@P z|NNsWDVQkyZD@fbAnJ#@xwOJXC3fd>yO7ZW!NrOG+A^o>e5A>R2x{i-{W(R4SWrDv zSP#lvSi{T_s`&73GSYNbqzOwa3=&^=zW7h>I~yV(Q&2#wt7|T>rDgu_$qCUtU>N!c z$D(c=Z#5)Z>gc~^yO;>Z_>wiclztY{a7lb*UM})6lRxe3rI;%*ZW3hAhMT)hDouax zQMe=^;&1?Y@nFZdV^ru)vo=mp2ymsX|^)bFe;ql4iw!}+m zRb=qwNNLnza3zHvGRLeQ^oqvy+B=5Xkqk7Y=>O`UONr7b1}4$7!qR*GXO2mQJKMWj z0uE-DEdoC%@5f5%;AgBZCv2-_(Y?9Ws~@3e3Un0;vQvTUtiKg z-Z#1G&bn`W;@z1q-K%`H5#q4bU#iFaVb6c5VJ}M_4`{BJ6C(^*MFf2Y4ihCKCOIOhK<$c6|Mk3ozgwaYVmVr?^4n_ix#h?g?LtC%wn zG=hNjNuRcVCUveu1G_m0o_O4Sw$iQCfY_oIRvC}ZwewLkJFx7CPl^94Nherr&#Q$M z|4D)0Af@#UgHOWYqObADtG=@6cm7mz+Pv>-6|LIU`ZJzt4+jQPaWVq=Gyiw>RP?s* z9yKUlmmwk0*B-B2TdXC^0#d6^75Xw{a$lyqIEke+hsD-quuErAOuwU=en<2x4r9+4M~+mV^k|*V(X$}pUEM#*yX>`%cuQ! zx%QS9)7G3zP-qXr>7QNo0o#)vCJKn`iE2Hly|7i54{(L7N(R-RbbQ*6A1GJx@O#Ik zke55iG)k;mrSVm;7%^L8wok^xoQTwWFL?2+D_MrgU*^(WB;`;f;JSq)uqizZAOVDT1b_{kKX;zj$1Vr)`f72i_lp3yX2ZrvCVyU+WoAg;VhWz z*pZ|ieum2aml9^`hWPgCvVa}tBIb!k?mxuy+o`dM$zW_9v}2pSsp8%u=W(w+TvUpW zkTe_Tkv+ra@j+*FWwpl8ijOBXTP9u&ep0ox7yQ@RlO5%E*L zr=JI3|DnR}#v4F*c6L^)#zwu?alzod*t|w;zFU3?HPh_1U`n-)*QRCP(!gr=!20Ot z6giew-?rE>)cXBSsSB^V+K~nY@w9`n{=;QYlXi?MwaOA-sLM{* z*!JL43RS!f!5?Yy^C1;5qT!tgpw-kkvpnjXr`wTIejS~6bHgJyF4nb7*bIe^J>J(A z{)jPwKpKB0 zf%xolw=<=%$0`hhI$5AZ{a#AynFNs=liUMLoPTrzF4c=Q650bXU3_h3|L)mXbDy>KJC!$UJ z6FJPm3sCTwefhgH5$*5qk5c{ovzW>Q))fZ))NE>Ml5KF?q7(K0YZOf-nkyAeRbtpG zW;;>FQQIAiN8Y#2p$oSR2=i@Nv-eNBU@*Lg(lB=i48)_R=rws^?Ti)ofXY4@H+2xT z?1`f6>grmk@12XR6$H#z*oM$j5)E1gaN(c%o~X z@IpOTw{D+Zz)h>$(I@WU?&dLOnN4@J$Kc|ip+}{~KE$Y>3)%h7`uNIj@+%(MtFIV%WEHXrFG`fNKYjS2{N{U3 z4)oUj@8&R%$?YS>$?^9XUA1QA>Ri>Jtl(!*a=`a@TE>dhSV1uO$G@N!MM!qAi- zWmPp}mOt#hJD14D`Z`l>oAe9yBDa+q@a>4GsKm`pt3s_xI#AVY#>U3DSXeRnN@E)n zjTn8S;ljL4P|4unU>*^XG!+$HVVl_bEH41Fz|2`z1Ne=4-9xdiH?w$niohaOI$;jy7b_zI*q}SiN$mWn?3%y| zkDO4HJSKRstw>smFhQS*KlXP3Tomq_u}#okKL9AYr8($eFl6yN%t$ zf@r;eVo|~Q+KR9xfIl^U8q{s1K>LL$Yzzo!%Cmwz#xddt0s!1iftQX$_H~a;fesr# zTu=Opu%l};A5WkM(sWx8@xN4o%gGkDhPy}ulc^nQL90Mp--FMfmM|M*XnEQ&1D{ci zrrtawVxA*18iSDhsaUD5_krTH@(lslY<^!GuIxj`OU=n&wf)=AfOK#{SwI$u2!`4Y zl7qLIx*QEx!RNMY6${=Y%8si$fSGmHd;7rD?RT37e*bT??v?8>wG;tWBMhNx`!%bS+>Jb5S_i zy~;{>=uz^0_WYv?RaI57CegMcVQcc%v{zMRuiCB(syfnc*)g+dVNpPE=MAML>X$&$ ztb%rSvu}7bm=^epVgMFEgp!QQ`*;U0ixi3Z^3!3@r+Uz{{@iwPM??j%2-uLwD=O~W z9<&ttbfa3tOj|z zo>>Bhs9x9-=*jJA52$tj5|@4pAEHsze4TgqoCtt$?-YnajF{LHQStG||FhKOKRP^n zmYJoDk?^AD3-(y9-l?~0%^Tiv{~sLWKerhoXWSB)_8O{X8u#t~G~n#KcI4tCtNXe+ z9jV>mq7WP(O4R!G(a~SLtl~!I(kMknqVP^*U3-+WLsB9OQ3c$}_8)nS_S|>COg3ndXDokg=|LKec;XjbvWUKnN1@ z6)SwLsyIY5G{7p?zP704gY|EDvfABVqI921(}Oo7u7{%|o}0WB0yj{6s>|=Vq@wRL zyw(kUms0|qdw;y-ar$*K;y777a*c@D9Y2t%-I~_~~iuJeh=?n|FMF@?VtPLlXWXLW6Jb%Hs{LBaHgs(HR&BDURA%yVi6iyyQr5#;FRkZl_;o$^I7%DOs%qw6>6VkvOuOxzG@jQTj8?f4 zyx#d8=}u)suTK8T6fDHG8)WT|@bHPHEQu?%*gvPB-IF5oQuTJdA|JAq)?j0j>ix$? zgp7=gTWUu4qU?Z(ahW81#H2FK-OYpb82^!l*9XGHLX8kYTYihv-~p|jkBKD{C3xf_ zvr%}uKkwCaZrAO#H`+BKtZ%s4CVXIPrrXsYy2x<9u)HPaClJyqO#*g9w3~i1A&rzl ztG(Kgm63rSE7oDf#m4GPgZ?T`gqDR4yCe!)&stqn2tcJ~H@5X)%VZX#9QO{}7 zb0h>W{U37g;J$u{GHPkyod3M=v05gf$#%8xX@hFMjeTgzb9xXxMulnKQKajm!N7dk zRUKg7luvv}|9CpN{Tn;uK9ldwah-}+0bgM7M_w6w)^D(IxjHLc5*WY##}`_nrBBB; z_H`t|R4ZRrA+d~te&X9@OaAPvMw~_Ck-@&3d`cgmcD_qQ^4_?gO_f_hYD5VIeGH+k zbm8XqQGghB*U*-?D!~)Brt96xFgX$uf2bQ_j5-`dM39w{IndR^80yrFz{sk z`}_$9kz8e5c(K(G{?Q@caQK1WN1PfcM;~I(EjK|3>$Bb;kb!X*7bSOJD z$LY>ke00y>#i*1VFPA;G*y>H~%f%GM5{>2;Z{?Ei`4?0)zyR>YP%F3I+iSSphT{`l z`ENMzeb<{1EFTMf%-cVqYjkoCF3=L#!ke%2_lq!Kb&yh+FN3B&deGeb!Fy@mXVxo#!&8 zO}FQ!K~SGPOMp2&O@DKZTp|A%pqhdyPvJe@-EV+NDne zJ7sTY4i3+7z88lOL*fBxj6-bXO!}24SSfC2_Hai`?8kUGSB9JSW<0T`BOmLJy6b5+?3e`X879+`mI05Ch=a ze6tU0E0eYf17Q>tCCj_pieSw5zPk8U-U9i1cvKJ)-KytU=h#|V9xd*N`ibHD2UhEm zET(IB$F90eKRy48Rl%uBBN3(ji$u*hix_Ly&(_sJth|U-M?|jU=j+y|Q`e;70heDa zR~DA@9fOYoRVXL#+Q}kb=*l+PEo?#M3`IbOZ+%Gtvp5GNSWN&n$SagZ+X=QJ&@<<7 z;Ba_Zu(2Lov<-y7%i)Kc{f*Iv3oIMCKeyEMbUr`M`&JNL554-*m_#rq;`i$`aeaO5 zErFw<_w}WmvQtHTRK(Xl!v1PSd2?vJHRaaWmNE38>rU_Go;s1;-Fr^Pdlq>^@Fktk z^;l5AaCK3{c$y$SUi-Oeu=L2Qr90M+=1dh2rFb^o?w3ACCuvvZgCnhP^$Rsi)7~Xu znHm|vyu7aGH$(pA9D@@(CiWqMR#G{z^HEePRQmK7A^bIE{PKj>fLSm@oF ztM+1rQibDl#>PhEb(E}il$e{XtHwlh(UFFK#@tXFSyxrv_>zl!&J@4~5=B$jDe=3h zZQn~*y!_|-O_2Vw>n+1F!5(D;Lh7=inVIL2ErN~k(P4x(J3c-N4Pl!U@M8Kj?19!i zmz9<6!}M%WNKQ`H8V8jQAVnCdfddq2hy-RaJxGynEiH9h@O4g=t4rb^Jnf8`+c|_A z;9aWThg^*R9#6Z_vsCnJCfJCe?l6zbG`>Mr&eoZUoGiDlPBm9+`8v^p98U^J8`Z?d zf@E5C7*bmjVIYIhd4te@!foZLa$$P}}YSF+1Vs~Iw@Wdy7<3rj)nTrUIe zMrU8ciHV!X5;Mi-zH|zGFzFh(b93>?9vem^h6EWxNJyb9aQn7Jy!n2G7 z#jPOrEaJODQ_27hEp~yeMWgJ%FF`;rctVrviEJs$geI zwHvOIgI9>Af6A}eU#!nfg;IpRiEu~D8%iMb{zK>}T9nhdYN)v^v%qb8$vL88tEX>7 zY|&HT@g_J`$wDEoEWXMZehWQl6ld~mQJMnD&nf@=Lar-lXr z5H|Ay15rW$mjp-w1B~B*1+Zn++W$}>-Xfkpd*+AN$pU{XT4H^+|Lwn5FiXfPP`|mj zsJy(p%YcuMzr3`~!q<1ja~DXYTHloUyp**2JKm7AN{5{4&ow;O`IiQ=9s&PNoij3C z>c+$$1c5x=C~uePvj5Gd);!5ro~X(q+_~l9i}yBg;KzT8%6iUX71o0)jeS z!^1CtFyk^60ZNOnYxZ@;53TKLKN9h4JvSoVc6>)CQ5>4UC_rJKbX>i#t$4 z2_aYtkcx6xwZQm5n%tRzDZJqliV; z6}x}jz_z+sI*YhJcNT`Lg&X69*c%55Nrx+9^BwZ|^aHgsUwI~f<8|3QUnQAua`{{g zyh$-r#h_uaKzDj?@XYSs%leBjii6BEw{8nZZ{LFSdMUH(c=8+Vbr&ALCr~3QM)z9n z7UO%(c+of(;hwmedAb1ql-Ubh^F6irN&mEa7t=EckiqD=!=uM5cGUk#B_C}3w@HplgWu#V-9=_bVfR?V5eoYFW-|cc@wUa|_NIQSFPsFE7*O zQ)Q>lQ+h#r6P|zKKqbc{!uCKyZ~Is6r9hDg9iR#FUIu2jqjb)wtBVtq0xgDo4MMuBA;e_8LFTu)3`>&hH?Ka-2OPh_ zI&|jnaB&mBUldJ-YiTszq5KmKqy$R9O1^P#uKZe=1V#&Ret2}AnB+Yc%jVpf$FPq@ z#NiiFU?IYgzKtP!zaE3UEkotv*pbubkC6AunB~!^H%)Uom+J7#4ByR^%}3G@+^`_E zXky`i*xSE027{2m{)L!m(gBA`_A&UXY)<-gK|Z4ewkBFLkh*NhNJ4}T2-^$2a zGE4z)AKGSMJ{0AN;3!vnYCyw}OI$|E(6jEgG|_20+%xwg+~5ao5ROo+bD-8w3liei zImK;t+~?qCJWa+rAOz~CPl^AP$Lztz$ojW1_4w4(ZR>-UIm;qcFG7i>PQJI7r<>jE zp_K2+Hs5HE#3XIhS{z_@2vog=W~596O=z4kPY^IaGoYz!dcW_LG%Ff2dk)urPixKu zU6kT6g{0I(fFWnSl+U#sNwXc`fPQ4wj=>Y~iWBne|7HO=Qpn{jxR`l~VlX#i3m4+R z&XjNY9Ce)VJbhi$8>R@_iD-rujFXNIDM3ehzxNl7JZCix@m-X?=K6?9|5=erQOw#f zljK%%2s_4aimP|o50wsfCwK5eB#Lal_Q)(mU*rIS_I83@#$EApy`Th3VN~&J(MNsD zWjqb0=+J6U!i>y?1j*v7@RG(SMp&LrY_p;&^^R4&caCS@`7Q-N zKJB*qz$)>yTb!ZlM#V*vz{Q+k>d0A+beL9_4rTU{5h-k(d&dNfqN?||BO@c<51t$4 z<>p3IdoJwr@>^7ZzTd~+X)AlQ97V_Gt!i?8vR(9sXDRgRciRcnSJ8TwN-LJY(-g1h`aVMGy3Z$y8^U+*w0;p8IggUW;L%GiV<5UDqj{EYEp{h( zbUXrvwMqDu>$jare*jAhhu~x>mD-{O6 zkK899XWT9CG89dWP|A94_x-uuQ`Si{oQl^|DC{$}H(s*y-nV8`CEK47XFc!EGOnw`nITBpsr zTSOLrLL0%YU_t-Z`&N9xO0@!^@vOfjh*8ivem4QkHhJdQU-!l9hDGjYSgjk``*oHe zYK$4oPbKbzis{dl_PRe?4;_2WvRSD7VWfmwjCZCTe=rZeZu}A+*J%#K0T*wR2EZQP zsgemv_hw_ft<^t4D1bkh71P5uf;!@T;fCVsp`@Ao7Q@Sm?Aj-2N}SY#Z(XmCetX($ z)&FD$o8UZ4=zWQrjvt&sB40Np_|Ft51K6@h2Bq7p&oVkTlZp^dT2vxaipkp(o-<4q zH9FF`PN=#dZT68`|5f9U5Ab1`FKk#C)vf5e?CiuVn6m7IsF_?J{YsP4I`q?|(&mXx zGR-tO3d?8`C=k?aq3DDR{I|8c=`?22ZUE35C0bQX{=fJnUszaJbMVxt`9TcJKEMm3 z%|o1^$M!TwWG!Sk0cs`t)*yN8Lm9gja}W+y%!zod>2OugXWPuj-K`Q+$3?wo&b2~X znPCk6l1u?|GU<#iMrG37bd~BZ#E4Md@W}O2ezscTU*8}J9KErhcDkhau}{WTTvk{F zi{J4i;qVgS5Dezz4iL%QMa_yQRGquV=uhkzH7h!JtC-z#$0Rhbjwn%jIXmbY=+4S; z-cIU81-|6bmM&z$Pd0$b>YH&<^rXg)zEB);0N2ei%7(c_WU{61S)NGm}2KA)(uVg$j zZ@ptcu+q#S4W8_J=l#-=G*to2FQGf{T*krP`oL@{2x`bKFx%ldX;8I@l^I0>wnGdq z;Kan4*1u`7^7osGa2}s z-#Pevn-!dAzk)kfY1{otR?HuyBS7-Sjq)abP3a%VViitAhSIxEB!ASH7pi`2y|3eX z9l2-&hw5GZcibid_TxG3x5;^q~th0!L=1X^5QxlUAl$u!VcI(Kj&Q z&WD?Gi2r6>rQZ(o&OYWg@+;7yHk#B z1;>S6WnKwCl!h#^m0EUhhz4kE6Qn)Z89{wVf#V3@!K@acLyOdtMQF*(7}B^LGB16k z4q{zUi`ZKC4!LGhJ4=Qn+WEY#cYbBAPAzz`)_H6Z%~Gh-7YI~AaAq(6I= zW7Xwn!{a)$K6&G53SPn6MPJv~FI+>DFSYsyj9&QUX>YvnNl3{_XznPPb{I66LMegL zS-bYe9}J{a-l`!$Pw-(5z2PyazhpF?mB>h$31u@VWIOHi3D0aarG?dSTP}Ut^*#kd z6|2unT+cwV1vfxzjHmSCIdEwJFkXSRTM z9a7H*Lsh$9(gCZ2!B%i!su=X~9mqJ!5?FkmUBY3*r{iMS1uCPou4LO) z=c8^^T4lh9Pt>mt@ERo={}y?e6F4sy^*OsB30Cn9q1n;(Iah#iqb4W=dk{OU#+cm&E=ZiI#rwfx10oy!_XDFzQacnQl$mx;*ay35E+kS$Ltc;>V9Uk zpGgci<7j2Xw9S^j@?C0&cKj5K|8p>)`?--x`L!sQrsm(6Sx23|G)t4orqoO=N@cV~ z6r@B2&%Xw%d#jwH;=E@Fu#*M$RDk5VDKN_(o|zGznVQn3C?$H2QQylp*C)6Chsed; zSu@7Hvlm1%#3tr?Dvp>XJHx;%+l<<03uQ(yD7k2))Kt1S$hZs{So?%Iu`;@bYU7Fd zeN5?3c&%%8{*Gr!u&^$DPi-}dayn>RS$`;x?Wc2?A$?rv(SPK-rHUtJxZ=BvXuyYShQ$G!#i zU&lRcBb6LTJ2JXQrKq`!{^*P1+tFL=PO*KqUiQ+~Xswjdbz(BH2X27VpLmf`GmBi3 zy$Y_nrF7|JAu8YQaSf;5NIXiv+{%d*U||0;AS$9Yh=BjX)~f-m0U}f{$~II0Wf%Gc zv@6y|8L$cKoFq~rwKrFH{oyf;NlZ+PD~ZccOq`uv{=ZM3w2JMtJ)&8(E4L!fM?pN5)Fu9l&a|Z-!r@cCo ziy7bwg`+9*C$jIcGiyYc^lcBp#W*!u{Je90^$Ux3zp(c-KQTA64D60Q?9+nQdOALg z-2l%~>(N~I+OxR>*$4U`8p;7+LwN;6Y6GA19WfJ#a)WlY#lb7v@m;q<)x0uzV`I`! z$AuQNn~S5T)a3oQ<*l@Zr86=vUe-(@lCpYU)+s8DEhVW}rMt6_d;aPdL%n9sU4-sL zS@ncfWi?K7N+{{7oa1}flit-v=j`4k$6h4#-jxp&pv2{?JS|W@^JO~j$Ls(r+~v%I z5+7MvlWRmxJ@eYlm8O?nzh-Q+>&tUT-J!^S&Az4-5)!H}Z*E?Y!}fq~6st%7lTCc8HQ+u1q?DY&v8CAtcea(46}ZD(!?I3| z&DbYxbrB2+%H#w%If@lp){%Yb6Bq`t-NF7_b13jTa*6kqx9kWY)}c2 z83A{fdjz6?m1D}w4=%wOu`1J^sN=o51z8)}Fg;;tSZfqihG*yX*FV2i!Fi${lSpKh*il

`Xs2Svpxqo{}~&-WL7Q(baezH8WWva$^H^l!y(4&P$o;N*mdhd;ERsE{z- zKwD64_asDsMsoCTAK)-hu=s<`V%tZKjiJmT$JX1#XH4>oa$L>73Nop>^A*1Bdbo7h z5nHmmyLWkedfJ^HwizfX?VcZha?XL$O^rSarP`ldTMy3E*RSlJBE>1yKsq_KF(gAK zMuCP--v)M!bv2hIZd6X{Wc7YZ=S(z%U}HBqY3bf?+{PX4i;Ih=oSd9ex3{-zQK83Hb=y{Jk;@0a~z=qmuw}Lgezgrr}0*{D%x- zpD1EZgXK#cVy~qeK?4EzcuRu3BP~@C&nR-lfc`e`?UL1cUD+>sd$uF#Z?Z@mm6*nv z9;dmsTBMF(TtU^@VMi#6fq+jKDE~%Kc#_xB2qRVhKu)C*E%6`6U!M=9^U;H6H|5?t zk??lN9{uGX_1fE1NsNy_ytzD)mzQ6SXH}a72Qj_9y)#fNs4W)t2L_W29~$?gTE_Dk zSiz)=KOw&f)&sl_M9(HoiG|&_e?1Ip%EU2&Lynwmnqfi*YoWP|G!*QVp=p~e&p#A@ zGBhn((Ms33C{?tt9xDo6u=&tA{35|A*H>^gDNI5`0vHjQtz1B036~Nv0AJ860E?Of z8DJib8>P+kp}&jAyXo2~?iEbW$5&$ma-Q9W{+DZ;la;0mnA~$VH5Li1YQcV2e~tC@ zD3sELx|Wwsh=_?#wqp#T#_H@isiMddn2`l08gKvj$W35D;cZ&jRVGn$9|uCUjIvk_!rE;Pbq{H9mvJU`Dkdaa$2mM#Z;Yp zj!j+Q3`fbATMDZ+8C{3#ei)^GZI<{wS-o=YQX-wwtTF6{23Q7_k@RD&Y!NMC47+I(yHS+gNvhp>bl;!FQw<(yGj$N% zSE%IUn6@8K`x7y4ZzTvke@{(`6pTTZ7hz8^G1DrvzB*JI;URS+av(oH2^JH=zVT{L zT;CgVy?i;$FDQ5^*U8OE8vL>noc??XWI&w8M@Osc)e01=Y$rGcp~np2VPV=IKCnwl zcDXR}$_@JSr-zWgjumN@K%5YmWEjF$uh6Ay4Pgw|SN-eQgz&rtAVX0p$u=lRRZovy za-!_W%^)M!Ph2i>qKr+qQ|{#$7YyzXiQS==u10@3!S!{^A5t|WuB@T?qj!(1sn;}^ zHfUo|Mn&aGc$vQG(&b6)F@m8ix^STRV|(mAF%8roQrm(iTUIL0+z&Sw3UG+0=KMEnb}5XtxacsC0&T?S?5_3;D+P@lRBH z*N-Xzs;8e(_Z=opDvc^p4+)VX<;FlmhkPm*s%w7d6czE|P=!%DiY?f^eALOU2o8O| zc=_@r*}C1b5jY5@XFr-BDW5Ks&=Z}xm?u}8La*BxACDZRR$PpkcGp@YZ$oJXh%T@1zu}^t%*vs5Von&k#7DZG|om=^-azvGvdmQZNWEm{l&Z{DIjj8UFr;vg4` z=wO`Os7Y{c>J;%+qju+FLd&;-&XpE?dV9agB$Wt0HQkd5nDUU+0kd!_k$Q3@ZyP;k zyQwzOU83pQk)CBnujd*9g&;#@6%iLA0{z|=$b75^6`4qBHP?l*KNE?^SZDf(m}wiR zT#TJs)TI7c-VESx2F0!`sC+0y!S-u*Zr_HD65&Ll^rBQi+B~@}J*hsCnn9;l=8fi`vA!m7bryJgRuB>JWl*ynGrpo6blo}X@ev<%b={cT zye>6G4D_#n`N3op)b;A(A}#Q;Zjwr8Pah_Ri2 zU9ttCg?vyrDin^RJ(=D#64*2{I_{l3!|BPyD+VGMklry^Hx6vvbzD&%_jC6Nu6Xrf~pKe2v z<6tg+YK5kRfXW^THoh?<=_c*uHjr0PXm-co1gDG=upkh~NRhg2nGPWvF_%HCToTUO za$bLv*A@?#K4<*HpEpC_)>eNPT2IzoqFl$XjnZr%k*%@WPb>J-rwZ2r1VveD8qe1rF?W)B0IG> z70-E6j)9oxZhvT0I@Ds?lmE)W_GhFVKD8L#kmxxDn|jeZpvMT~u4eCu{9lg&ODg%2 z-5hX3IedXMJ04I}ly>#(TvA;U7%h2;jd}XH>HO(xPkCF7xOTlyX%J>DoY&J(AV5?( zvcTor$#NxClZy>WI9EiT-W{yzm=L<>b3CnNHq29H#i;!=l|76;e5H4J%xoCD%Bm1P zG&U8_rl#crMJZ1w@9$^MT!+((dWkd&5)^1yj_*6=+j*>wCuo$V*)Q=^f8>h%{CD^B zvNxae@B}8azJAQkB8&kjHctFV0y)8YXP8_q5zttGXKzkC&x5=2-I!z)uk#VS(?Q+% z?zJHJh(Qcj%T25dA~>zp>Bu{$6agkHYr74nF55@`A}X~_6z7MrD;e`5`%8>wTy%IYpsq~Qi%Ki2R^LQO(p96xD6c~T=!maq+kcx zhz4=N&a|4a&)ScE7Nc?xnzYMuDUq~8>Pgfw7~M^2D0Q_jI=C_YMcZR`h`qQy>%^5T zKc7qwAFmebtfmmH!ZTKbR95qx&6YG*$Dpe zI2S3Jk&&^XTjMZbKT}t|_}e%`&_{7FO_aG{C~akncf+AcyoM*SpuuAU(aR&UwU1Dv zGFUHeEYNdgo)d+R%*8R!ib7}S)S}=%$Dc!pm2Ui7?|bI8rKFtq@9(S0iC@(dTYvm+ z&zhH)x9{+?uDLER&%ow49moFuK4*{w4d<^f&*mP<(9qJppY_`~y*7RQ)g?QLO>aMG zp=l7BX=Y(*Vd=4v=9j(!T|ZHFbJxDTKZp+6(vryR~CrPk6szy3yB(pu!kNww0HH2#pjF5E9~!($hE-2 z3YBX}iuff4IDd$uxHD(Z~SCFpAOq7*Qbk!ziN8luD2c zPh_zs=0yxPmzZs=vQ7y?Wi=G3v<0EBI5sFnGV8sOokA33EwC;l`>5@Ap}q zIAR}SKGO5iujeAq10LlqyuGyhp@%beoz?xsCOv!bw!842`Pj0j&|Pz(xErhJyl6vN z3{y5hg7u306wamW=Zt1;+>9kO9~NlKk#b+1ab(&hV3GUBeUF9EUPmSko+1$1Yx3k$ z`W@Ai8uuTC9^)LH6B84&A3U;u8F33RF);kSW%dYAcz51g4gWU_Fyfmj&S@w*IM5`u^)-9-mglq&UQm45xZ`?qxV&M=#Fjo5iwF5mls@+R z;i%_$rQklQ`Yz+yDHc2P6NH^HGoN3BTxWH3Sd~@PV-G!P9PS*t_SmbxR3xrclB_q6 zWeeVR5&f9X?o&AR{~`8hEF^3F@gIudX>pl3h4rB*6<004^6j_z=ko;WKG`5 zwpfBztdLZ1^>z5MbL?e~UvK<*z0{-hj`X!eyaQ$4e8+!9lIh;&Nk2-p33@p)Y?#Hw z?yv&ezZ&)N-gnT7J$b_Qq>$=-%WEw@yfM~`Gr_gcT2@t7jWg@LeoMV;ovO&y%OZ+t z*0FV>54u{)rVeGVlxpDUW9tEWhW1B2?gMp&ulY5jPnc))v}>)VH?9tbec^7uja-=S zeAi}&^72_XR5|rP>#8y|;%3t*Rq;OC9eX9URC~WkoR|G@I6r$8s;>Kll!?yqOE1L} zXNQUR%h#u|$IMhu*G|qq6OR7%+O1?_`^lJxC2EDFK!GZ~ZO2r;L5&{>35zW1{ooK( zWKr0{#5WD&8J3vqZH|nQY7tGvAeB1l0W~^}VkgFPWU2Y{bO~%qbk(76zYi3#bu3 z_IVQeJf^{s$v3*r5g2w3{Y4U6#w4~y&|j!qtM<3os%TnB+1BEHdJ1U`e@wtn{W%4y zouOLzSGe*cA>8=i}G51rrB@Vy%_`qINg6DrX+CtcCjZ zVp|8ct53ElUo49*RbuAW<^;xXzf+Y=-*GDZ()7ZH6%*%@ADxYswte1+8_AoXKbf4C zHoL!Y#U#lTF8y7xp!oi3=73OhX!HUzXodRu8wsb+CfNBbkoG6Cf45J~#6?m^Ufcip zvsIoeTcDQe;@%tuy3btMrAwZHQr`T}$oZd&1&vE$1BTbt=k+3o2C=P|`+e|lWjOa) zPJh;%P(INgict0@?lmUN`(3>dO6QdO4*n_1%M14~LFwuV}tJgZ}3n60X{>{x3| zzUc?#d)CZI)z>(AW*D+ZxDk@0W6upDRRt*XtT1GU<>S9^DgR}A?u!a_%+m8t4*u!? zhoOdPb~xDn7xqP;~)2dzF31>N^R1)CRxJ)2p5m;`A-J7AEkVm%-!H=P zPY=c}LKn|Hckb(VnH$(cWk?3TOHd;#n!K$=e_S8<9^>6RsYo(b2t5ul=^CwOKvMYhRXRH6DaFGeoDlNaBQc;eUQx{YdbJ|pKgv3bs zEmYG*ww*hIoz7SUa^`I2-$;N_ukSaTp>OheSG-g&Fp>U0clGm%G^J#zS&QFz%9x68 z^d$xvsW5u-lHPwQ@xT~g%d;K&%Nqk**i8Io--{W`rr#2N9=6?KM6YZaO}r!S9b78j z_ya~iza89AQng(gblyQkp9Hsk-wcINr~STsl6GHp1-w=Ax7Vj$JR=t=K~qQ3q$rPj zKyA98J~tC^QC!yQ}Z9FQQlmh#_V{7(7eUWQU zg&TyV3?;Yhq)a8pL}uHXB%jc_V>sMffkNUVv{Tkkv5V)&GD)w@(-6+GNbl(KzssdD zzR{;#?CjSy%9(c@_hrVG60dPX6S2%@vBPPv+)|q*RNVGLOUiNl$mGQcSiV&bTV_KA z5q;yaaQNSg@D85fa*0qdZ=QbQqG?9*S=Z?9PoEv$E0uSDr?p9^&wAHw z-M1H)^`VqFLrRYoe2|WNWf(hfoV;NkJBXEe&dl&phUFKgeuFMPHcr}&UG!3srM69} z&x}&yKrG%j{w3-UvX<}Z+-4Ea4mr&fzo_Q6g;XbD(Tpi}Xvt3nhuuwDYM1uZg2Z4d zHv&M}5!2W^u!QEx(29hxWa{cW0(H$?+6TqZuVn>>u8@RlrXqwqvU1k4oMsQ(G7x2pw#QQCn(6cGA1Nm<#6+_Z&2>RT!@>ow*Y-g$2UP zS*L7NL>L&D=}akx0T6~C{v6-Bx9vAz8o+`72LBD*(a}-a?(zBGjAXHHbq+8I2=AmS z#}08jBhoDVDRuwE8Jc|?q9Kmo_Jso*ZB6i0H_lH$Y6v@N;z)r-|2OkHB(73!;m5l2 z!k~bh?SzFDiMS#@bHZsjR9OtR(ESR^0w6k%!;Q=prqDvdFJuVLn91x%Xu>Vseh)Mx zqsT0+!W|7dr}XHSIJF;!@y^Ez*HT%T{Xh>t&N0^fyj-LHbZ4Ssk1VzlRLM1w($)q6_!|ks9~HF)*|yo>#?o$j2^zUAF7_WFt%4qQllL)7N82_Au;?1ja6y| z83?&X$HoePP(SSM-d@iKCn(u5?$D6D1>a#jmq3oI0d7Qnzbc9RbM1YSU5HjabZG#7 zxbjeAZ|a|R`|AJdIE0z)fm1~>TNrKfcOxjKwQl@)wnPGUIrwQXGCPjFzLMCUMdL z_yK1Nhv%=aui+5Bi6r+LXnYb+gsl%@_q}jMTWLHNd1vKVg zkpY28UU&K10Qq_(*MnW4T-MfH;6B0ySIcH#kt<@>+Dyv6tSxuXMqrfpTH>v@IIM2F z5^yasBixUTVk3&#wp9yA?2fKOfB+dQykqPy(`!rx89SHu&g5E#q=3PmM)KG(vN<0E zccz6Ru$9s;tF!;A2 zeESsURn#Wp$BchB^BN^smmk~o()uOsk1qTG3;E?xMSNAnh?mP9OX?IEH}R*EJ+_qW zlOT=HtHSPjbWs1r=*nyc+?h67PbE9b?HVdmAwK{7>K=D7I53fSm$?``M|o|Jw-8^* z89!WWHDw>6YIJoi1JxYrG>B&gdmfw|B#MO%&;8hY07d*MM1}21K6U`5=p?S-Z%Czz z@=kSqEcU<;HC0nfZdQ#SsI0ZkT1TEE(A>8d#^E7r6FbeA4U^`H)Eh-W=JQ+#sP>CI zW|v3pvSOPZ7e{9AA&h5TMY-38EAVe3v1^BnXqc4LHJK{D$3#DGF4$F(#tq`h13ZR= zcyH_YOPq!>=aU{7KJ4c#IXg97-HP`$6uR7lzpQfJoy?c`U2XTu709tJ=r6z&T&mcS zX&{o+&-V(Wqu|p6aVJ@GC;5o{zrStCF4(Dx0?I{gW$D|e>i*rCVEZs1i za(33VG^RJK(hk3wvoQSN3|jNT=icN=(x45uhl|)yKz*G{;|gyt{h|W(SUl0d``puV zH20uZR9#2umrrkg)VMQoH}&+k3b$PL&du$~L`i|vf1Ucu^)b#Q_r?;UoCvke(Z*Tg ze<5|8)jUAoKoS}Ta3Dv5UyN0d z!Y{!ix`@l523mw7nuvN8rvpQI{GJ3o9O4Y@X$RF(cIm9>%a25DnLCS}u{Oo3DK(Y~ zQUD_#UMtluN6JtdA1A(PQ5YmQF_w7RDBP4J5hOQh;lEJhug<&fRISqRWZO z8TNgUSogaKJ6b@5n6{NZzri#C+Df*G)1LON8q1s_;(+=Vf)RY^HgH8Js5y^og45~y ze3n*P$l+B7$6$Kq+l#B$HptDy)gAsa+7k0E`M*EinZD;p)W0gti9E#N`h^UPD3cAg z#(zJO)au0IhRH#vXjjHQljvRP+J9jVUOSbN8%riF@QYk{P`t!%9o9MP*O@yO*? zopNK#vW!AqgxPHuF_I6rM{;ySf6_$tSD6NK_dzj2zqd=fzH&Ip0e*<$-|-8opwzYc z>VMMjc?I1!T5g2X>W0*HcW$oHsjB4HqsLRqtifA0>mw;@H~be#3y9z;=AOR*D0f%- z)M&!)5?_`Hv6`pRZ+t_BBv_NMt;4NDQMVuq^Eq7&H_C1<0N2+X`xmu4eKgkplw+>tt^o_x4s}@jccEF`RNTIn5*MPfE?820YYAQR zDb8^8&>3daWiW`Xa;FhT_Q6~Y4+y(*QwM!3dnUg{6SZ{)p8Je;Z=@q88Of{jlJ*On z>c=Xms;i4Te`lPo($L(ZQp^4j{WxheIrocSDCU#QSG*qEJbi_(BoKv8k&t|t8{x`?bs#0cap#J~Q%_lf)%Iif!?VNz8b zI^c3i=IZaMhr9ev0%3r8)_kMe~>-AdWxQmoHKDZ%VSJ=of=kCdb7-aWc>yj>u@!(`%mPrL7p4VvoaU9 zlFi|7#u9kpC(v~l#MSsxGH}1*F-=;Jx!RP{?$fE{1*j0zFqNzg8FIY3WU%5>0r<`? zC60W(FQPI*rcBshGa;-ud3C!)i_}zlUldh(tyXLVq!mjZ|JU5`(~%=qaLzD|O)2ZW zzJT<{x%hkgIM04Rn8RRoBJ$KJsxzt=6&rcm$%0B!g1(-dk`VJ3O~~(ZlV;h(!K#iYbWxJV&TpbIMLN58p)RQN z2_rIBluMSxe&hP&2Ad9`qxG043^#P1)fr@)Fy?N0opT7BY(fy7OOjuksgoZC6Uw}E{6F0L1G!v(2u?@c|a!}1yS^hW^v=y|b+0a&U`14cxY=W82PGox` z=ZV29DBxlX4cM7{%M22w*>_;LWHGOg;>yVyO<@8b_a)Wv;mLa5G@Q6aG|o|{y6qCy z*v6TF%|+&b`suhW12#nf1^uHtq!wKA<*@(UsvwUHHqpLk4fKdb9(s9{q~_8zq8W`%D9DKXFj;P68_f^Cu=SoxoJ`omXiC5py!p;&10AF z)T;Mrnytu#QNBTgf}4hXb{KicYVXPt@*1L%mQWJHz2RZf^NA!E9o>f-HlNDzvhIy- z6`9b2rL`VvJff4iD~6tYtqp)o55VBp;?vUG|L(5ldkuzZ6cO%Yu{tCLAQ8Pl_0a+R zj0j(Ljrq?$?zKQza`-wq2~yOE4+`@gkS6)^2RTAi560IPXjdU&<20NxP3a^F?W9sQ zwvfhx)%lpY!liwiru{cmR+2;aVdJU(C;R80`>Z{Q{?ws;eLAqTw2rdV#%2Sa{MHjfQL1-9JhyK7oDBY(3kiwrUxfrL1+cgZkj?@ zFU#SYtl?4G_*6VblCpXDMU6qXRf-Ia#Sb=cW4cwN>vpnFI^LZncl+nfJ&v3Hc*EdX z=>!fbJ@~wnaMCSTW9J7G>)zTXz?j=D;@8h#b{)+F%uuyfyrt|trcAmT4lPHz7q4_Om( z!3(#8RCL3h)|y4O63gju@QJv(h3cC}lCZV*rbcu9^U6uWqO*{a!5fN~Yx87fvCugktuPkSu=~bv7GG0f zCtRJ%(o%w+o~VW&H*H^n$5|ZGw7uj00lW8;!K568y}+L_aB~-qICo4~rATZf?H}d`HVH9^a6e{=|r_XObh%MQ$232P=5WKz%VoHbRJ}Cn|>otcVn`1JaaF7y%b3h?5xno}$M~Lg=(` z5v-i4iv?=@gbv>JQJ)0r!v;9vv9bCd9n<3f!HZj>lvZ`akD?~paCk75TUt{3`1I#F z3_4si=-x0PWkJPRO+(mr(jv9=?ED-_+*%HvVK@=eRWMm|LA6bch7OvdVp#$Qp_=H6 z3p?qm6Mbp${M`G!$C?!$_8>g_-F@%zkHU}sLM}9n;4@1BM0|nX=HM{RE^9(%HQVhC z>IToZFc3#?5OI_1blRy!IRx^Ya?z8dZ0%=U+e#3NJ8gJNAenZOinmq2EtPvSk#iV5 zN)*oypF3F~B_>*YN}oN`4SsXM%Y8G z1U`LvAWi;mE#ja$l28h=A)NVzOx;fh=hI-9{WjPLsL-}txc(Oy#H#&-reu%Ek*|s! z11>kiOIf_AvbFzqKR~j(0z@((^(mU}4*u#$vA4J6#j-v02VTgFU@tZu^6y{=xTFRS zwx53$2n}SLI>?K|CPy|3D7^ytfM~qPb$iMTgB}WMaiX@aYxGpt9#VzJh{t)Vq_V)0Ao^o_fM=cK1T z149@$N-7OziXh)=ZRo{gz7unBq?DJ_L`Fr8PELZ(bwhMJ-0EyrSW@UT`#L>uu?75o z$P3)U2MfFRsPFC`EJlY`IoOXF^QqNjbTk<^H%>G( zG*r~o#3Up^!B9vbsyQNu?dm|EXjIzOJ5uMzYzh4HIpukG&Scmc;tn>x2w+AI^?_e{ z=rARzZB?)ml1wANNJE*>P%=3Trwt0!WVv(tRp|8%y0VHZIb-{eWHW3{7fwG(c0SId zW72C4)EN(l$HY)DF(JFVySo9`N7vh&)7dOh(J19i`a)njpAR#CedkWtwD*x1C&ap) zkTds-l`pJp&M9BjIxQbBL(r1EXzxv$vX`9t4(F7T0WmJF@O6S{p^r>+3E2+P@DRCt z7`w9Y`qy@oRN9OB&Y+^wT2~=@ghXvAIqXa1YM+JM8ZhDW>;G(%tV=ec#tV_$REK{@ zjn8222c+}rIcPKJ@Gu~gAr}NI@P(uohG@@u3l5aRNWZS|zp&4;^VyMN@Wn=6xMB1lzJVGv4zW8=6_iDh~{~(I7+u(Y4@H>x7 z_+%z$gU7YeZ<+KyEPbC|{m&Qme@Ny-G5F(qu>w;dA=%@*b36@S_NZYFd}DtX*ihA` zB=uzlWlbU78QfFOP4U4#j{V6xGWQ6DI(?=WXsG~#ph?*TQgM-kpFyOnf|9`mvP*YP=Al7ycs1n`2 zKW^RLFYB|~t#fU9ozdrboM3o$v0!@IerIIZ7;B&L_#uL5$aRC;=DntTVv1B}7H1HX zU?XJQh;tw46)E3LZJ6f&*Up8p{9_`8Vzd4;20ZttvK?5Py@q2ndi=+evmq{#v^3Q8 zw7(0eGI2j4*=&yG4@h`#4$~7mbV|AYE(8^a8L&dLs}Isl=)4OIkZG8QRPG5sVH%z+ z_w@%u;L(oOHO2*#+$5LYUT%z{30ePV|I|@@RvpmI#+nHJ(2Tm)9LnbR-i}-^N#%%k zDhHQ^0zD^GOCUUB`NxMB#gqEo`H!_w9=j2gPj9!==`5zOJ#RN~py1sHJ*+Y4&5q9Zhqcb@A-o@- zZ@0g2*&{z5qw_WrYl!T9hTz7V>nH{S%twS!@%4+h6?n_#)`YSMP$#ytaHO(uh8*w@ zfE-1a$AE>^Fs{Ak?=`nLK9{I~Sn}7}w>5wkJfUdVRQAby4PpOJ1mokGe0YK%X@THS zPLCVz^BwN?UU$brM+~|a8)dX9_#JZ(2R$>^vjqGOd{NF;n8l{1N$6(ES=kcF(`>lQ zk9k&gke+aN`_w=tss_31C!;b~D?jgB$Jp%CtuROuqG;f@cK!Z&{TAB_fgSkUNPg~3F85NC?Q zci7vdS)Hvc*p$nHP7+<$!t8t1bV$jEav-YI0`8?iwkzwB~ZTPOR(krTZe`( zb8rg>(A?aDOelY?ZTpRmd{|o%%>dyWAK5XnB+@rNsic_G`4p2&YstC8FMtj?(gEZt z9eIDT3y0r()6#YR5A>BU2nC`w-Hm6f(GS@jGx^5itM12w9c~wv^WEU|ylz9))<~7F zNd0fUCC9gmY&jbTV|RIgHwF{sq+F5NL5axS>{2fFoOX8nQjG#i|MZw~ypVF^pk4cy zx1f6~T7z4Nv&H4Fp<)867QSk*xm_gi=hVsgTGI95tq~*UPGPbA|6Bb88A+N+Zc4*# z>Y7q2Ux6w0EyLmUrU`MLDoiiw``eKQWr{)f*x;_%zOD-$Fv-IqeH&(El@{YC`j;eL zpGYQ@kjhFrf|j1#Fwf)@(6VORA7JetOoXqq)3a886nGwi(jd0l$zlbT`-UqPNX$A< zyT#50xSk$^&$~NQM@rA@Ita|^ZS;ABTbr|Qi4L@5PPu1 zT-j~gvpl7xz@{xG$W?fUA%C^a6U({*;!M?$uP|5;AEGq3X;wb`FUiEaiics*!s8i@ zC`kg@=^eMO=)eodCTk1&e}NkW9RT0|J~EuExiNXwoFMKewLeN0CN!kn*N@*2Y>Abu zJfJ9$%0n#7o!O>d$U>JwI+fHj72jTP16(}eSsKRdn`RZZ5~bcg588x}Z_CDV{bXDh zJ9FnBzR54CZ9OBPTXh{MxAnGJOrrK%d)Fzs43TdK7_g?eQkwIMBDY+nebDiC=CFYj|$&wQarQ zgKIB)s+RKRyU>x6q>S9QQWj&XFQ%f`6TK8CQoc(B0(nK~Znp3VbNN*=omQKMwF zO#LdEdf@NrzjvOwYqaNCBtF-XRQ;DJUMSS)@umfGeH$PD*Qz$6CPk&X@_M#f5_{hA zk&b6%#3o$|r*zxPGPTtbDY)b_3%gEQrS4eeF=r!x4J7yBy$hBEM6%|6l=|f2U5RrV z*T-8+^o(Q|JU_htW_lmm7hfFB*ZN&E9uxYYHUvHzZ=Tsrc;EGRdJ|5(APNgukYUDl zhivfX&R>MJ{b+F$5NHdn9kyn4^kW@?^9hd3%V7(F8L|lU2!v4Hg@g}cR;t=jJunpg zi0~^S^opE8L*oXvIGRTiKwm_Q8-wVooSK)FHAU*>FY*i2;XIb!pQ-0jc$Q2QRbUN zyC2LN>zuf^hDgTO$59&HZ^ZONAQ;tovEH+mNT~bO5nez#{1bMLPp@Re9k~g`R$*5q zo#cZj0wYNxf9F?@5~X#0OUr)W&QXNBcKGE9>G}1&S&lr_o{q4`n+DV4<>LYHf?&OC zBRG(^3&-w#S~x<1w&lHg$?x14;e%@$)G7D&Z|J7!{ocl^qexAzW4)b zzCo_>+(1aoO1+lRw(Tu(BLnF4nM_$XSu+GI>edQD2wPd7P@}^tTGi}DXDc= zj&nr^YMT|Ad5b?FYg`IdST`aHf%Ha)CTxm=X;~nH5nujx=#cbBodp_c3BBP+$O-(% zgZejr*63Htsh#+faSy{4HU7URBSm}FHm+;p0b95UZvy#523*O+*_Pq;iU)%Z!2>V= zxFII|#m&Pcf)1|;)LD2!13vl zxAZ;C5tFH318eeQ3wZykqlR5Voa_bEd9lg!y0!W@nj#DZgsw8jN`}m*) zGOBNZ*vfEAO;zfX2j%Gos_n3;G0+Tfp^v%fbd$wP>oPy?PPr

>i_?D`x)NZsjG0 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

a_8K;Xp{=U0lS)#0vE0`kqaijHX<7`v*EceT~Ty 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 literal 0 HcmV?d00001 diff --git a/img/gallery/graph/13_dashed_lines.png b/img/gallery/graph/13_dashed_lines.png new file mode 100644 index 0000000000000000000000000000000000000000..bb6779ce0d611a8a7182f2a8b0b9dad38fac8b8f GIT binary patch literal 26811 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 bws%?obX>}y>$_k04Ky{jyhu8KHS|9KB(lzf literal 0 HcmV?d00001 diff --git a/img/gallery/graph/14_dot_language.png b/img/gallery/graph/14_dot_language.png new file mode 100644 index 0000000000000000000000000000000000000000..a0433e173cb0bc35f23893d4718b076f83cc8fb7 GIT binary patch literal 13090 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 literal 0 HcmV?d00001 diff --git a/img/gallery/graph/15_dot_language_playground.png b/img/gallery/graph/15_dot_language_playground.png new file mode 100644 index 0000000000000000000000000000000000000000..7048da501b2c09a3a84763d83bbb9b13a74844e8 GIT binary patch literal 31298 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 MlM^iy{^Iw405Vk#G5`Po literal 0 HcmV?d00001 diff --git a/img/gallery/graph/graphviz_gallery.png b/img/gallery/graph/graphviz_gallery.png new file mode 100644 index 0000000000000000000000000000000000000000..9aacc6128ee036d79b968152727ad03b09f5a540 GIT binary patch literal 267856 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 z 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 literal 0 HcmV?d00001 diff --git a/img/gallery/timeline/01_basic.png b/img/gallery/timeline/01_basic.png new file mode 100644 index 0000000000000000000000000000000000000000..8be3e577e1857bd692d24b9cff0c1ae61bdee57b GIT binary patch literal 9239 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 literal 0 HcmV?d00001 diff --git a/img/gallery/timeline/04_html_data.png b/img/gallery/timeline/04_html_data.png new file mode 100644 index 0000000000000000000000000000000000000000..5b73a37daf5fc00d2a18070c3e7e83c175eb7112 GIT binary patch literal 15839 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 azkEI)(aIRgWruWP15)DhpDINSg8m1_K=Kg) literal 0 HcmV?d00001 diff --git a/img/gallery/timeline/05_groups.png b/img/gallery/timeline/05_groups.png new file mode 100644 index 0000000000000000000000000000000000000000..04234222801ceb41917f9d5f47af82532e6b00d7 GIT binary patch literal 24442 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 00000000..26e4f06b --- /dev/null +++ b/index.html @@ -0,0 +1,294 @@ + + + + + vis.js | a dynamic, browser-based visualization library + + + + + + + + + + + + + + + +

+ + + +

vis.js

+ +

+ Vis.js is a dynamic, browser based visualization library. + The library is designed to be easy to use, to handle large amounts + of dynamic data, and to enable manipulation of the data. + The library consists of the components DataSet, Timeline, and Graph. +

+

+ The vis.js library is developed by Almende B.V. +

+ + +

Install

+ +

npm

+ Install via npm: + +
+npm install vis
+
+ +

bower

+ Install via bower: + +
+bower install vis
+
+ +

download

+ Or download the library from the github project: + https://github.com/almende/vis.git. + +

Example

+ +

+ A basic example demonstrating how to use the vis.js timeline is shown below. +

+ +

+ More examples can be found in the + examples directory. +

+ +
<!doctype html>
+<html>
+<head>
+    <title>Timeline | Basic demo</title>
+    <script src="http://visjs.org/vis.js"></script>
+
+    <style type="text/css">
+        body, html {
+            font-family: sans-serif;
+        }
+    </style>
+</head>
+<body>
+<div id="mytimeline"></div>
+
+<script type="text/javascript">
+    var container = document.getElementById('mytimeline');
+    var data = [
+        {id: 1, content: 'item 1', start: '2013-04-20'},
+        {id: 2, content: 'item 2', start: '2013-04-14'},
+        {id: 3, content: 'item 3', start: '2013-04-18'},
+        {id: 4, content: 'item 4', start: '2013-04-16', end: '2013-04-19'},
+        {id: 5, content: 'item 5', start: '2013-04-25'},
+        {id: 6, content: 'item 6', start: '2013-04-27'}
+    ];
+    var options = {};
+    var timeline = new vis.Timeline(container, data, options);
+</script>
+</body>
+</html>
+
+ + + + +

Timeline

+ + +

Graph

+ + + +

Docs

+ +

+ The following documentation is available: +

+ + + +

License

+ +

+ Copyright (C) 2010-2013 Almende B.V. +

+ +

+ Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at +

+ +

+ http://www.apache.org/licenses/LICENSE-2.0 +

+ +

+ Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +

+ + + Fork me on GitHub + + +
+ + diff --git a/index.md b/index.md deleted file mode 100644 index c5c133ad..00000000 --- a/index.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -layout: default -title: vis.js ---- - -# vis.js - - -Vis.js is a dynamic, browser based visualization library. -The library is designed to be easy to use, to handle large amounts -of dynamic data, and to enable manipulation of the data. -The library consists of Timeline, LineChart, LineChart3d, Graph, and Treegrid. - -Vis.js Library is part of [CHAP](http://chap.almende.com), -the Common Hybrid Agent Platform, developed by [Almende B.V](http://almende.com). - - -## Install - -Install via npm: - - npm install vis - -Install via bower: - - bower install vis - -Or download the library from the github project: -[https://github.com/almende/vis.git](https://github.com/almende/vis.git). - - -## Load - - -To use a component, include the javascript file of vis in your webpage: - - - - - - - - - - - -or load vis.js using require.js: - - require.config({ - paths: { - vis: 'path/to/vis', - } - }); - require(['vis'], function (math) { - // ... load a visualization - }); - - -A timeline can be instantiated as: - - var timeline = new Timeline(container, data, options); - -Where `container` is an HTML element, `data` is an Array with data or a DataSet, -and `options` is an optional object with configuration options for the -component. - - -## Example - -A basic example on loading a Timeline is shown below. More examples can be -found in the [examples directory](https://github.com/almende/vis/tree/master/examples) -of the project. - - - - - Timeline basic demo - - - - - -
- - - - - - -## Build - -To build the library from source, clone the project from github - - git clone git://github.com/almende/vis.git - -The project uses [jake](https://github.com/mde/jake) as build tool. -The build script uses [Browserify](http://browserify.org/) to -bundle the source code into a library, -and uses [UglifyJS](http://lisperator.net/uglifyjs/) to minify the code. -The source code uses the module style of node (require and module.exports) to -organize dependencies. - -To install all dependencies and build the library, run `npm install` in the -root of the project. - - cd vis - npm install - -To be able to run jake from the command line, jake must be installed globally: - - sudo npm install -g jake - -Then, the project can be build by executing jake in the root of the project: - - jake - - -## License - -Copyright (C) 2010-2013 Almende B.V. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - diff --git a/vis.js b/vis.js new file mode 100644 index 00000000..a3917f16 --- /dev/null +++ b/vis.js @@ -0,0 +1,12379 @@ +/** + * vis.js + * https://github.com/almende/vis + * + * A dynamic, browser-based visualization library. + * + * @version 0.0.9 + * @date 2013-06-07 + * + * @license + * Copyright (C) 2011-2013 Almende B.V, http://almende.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +(function(e){if("function"==typeof bootstrap)bootstrap("vis",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeVis=e}else"undefined"!=typeof window?window.vis=e():global.vis=e()})(function(){var define,ses,bootstrap,module,exports; +return (function(e,t,n){function i(n,s){if(!t[n]){if(!e[n]){var o=typeof require=="function"&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);throw new Error("Cannot find module '"+n+"'")}var u=t[n]={exports:{}};e[n][0].call(u.exports,function(t){var r=e[n][1][t];return i(r?r:t)},u,u.exports)}return t[n].exports}var r=typeof require=="function"&&require;for(var s=0;s= 0) { + action = "DOMMouseScroll"; // For Firefox + } + + element.addEventListener(action, listener, useCapture); + } else { + element.attachEvent("on" + action, listener); // IE browsers + } +}; + +/** + * Remove an event listener from an element + * @param {Element} element An html dom element + * @param {string} action The name of the event, for example "mousedown" + * @param {function} listener The listener function + * @param {boolean} [useCapture] + */ +util.removeEventListener = function removeEventListener(element, action, listener, useCapture) { + if (element.removeEventListener) { + // non-IE browsers + if (useCapture === undefined) + useCapture = false; + + if (action === "mousewheel" && navigator.userAgent.indexOf("Firefox") >= 0) { + action = "DOMMouseScroll"; // For Firefox + } + + element.removeEventListener(action, listener, useCapture); + } else { + // IE browsers + element.detachEvent("on" + action, listener); + } +}; + + +/** + * Get HTML element which is the target of the event + * @param {Event} event + * @return {Element} target element + */ +util.getTarget = function getTarget(event) { + // code from http://www.quirksmode.org/js/events_properties.html + if (!event) { + event = window.event; + } + + var target; + + if (event.target) { + target = event.target; + } + else if (event.srcElement) { + target = event.srcElement; + } + + if (target.nodeType != undefined && target.nodeType == 3) { + // defeat Safari bug + target = target.parentNode; + } + + return target; +}; + +/** + * Stop event propagation + */ +util.stopPropagation = function stopPropagation(event) { + if (!event) + event = window.event; + + if (event.stopPropagation) { + event.stopPropagation(); // non-IE browsers + } + else { + event.cancelBubble = true; // IE browsers + } +}; + + +/** + * Cancels the event if it is cancelable, without stopping further propagation of the event. + */ +util.preventDefault = function preventDefault (event) { + if (!event) + event = window.event; + + if (event.preventDefault) { + event.preventDefault(); // non-IE browsers + } + else { + event.returnValue = false; // IE browsers + } +}; + + +util.option = {}; + +/** + * Cast a value as boolean + * @param {Boolean | function | undefined} value + * @param {Boolean} [defaultValue] + * @returns {Boolean} bool + */ +util.option.asBoolean = function (value, defaultValue) { + if (typeof value == 'function') { + value = value(); + } + + if (value != null) { + return (value != false); + } + + return defaultValue || null; +}; + +/** + * Cast a value as number + * @param {Boolean | function | undefined} value + * @param {Number} [defaultValue] + * @returns {Number} number + */ +util.option.asNumber = function (value, defaultValue) { + if (typeof value == 'function') { + value = value(); + } + + if (value != null) { + return Number(value) || defaultValue || null; + } + + return defaultValue || null; +}; + +/** + * Cast a value as string + * @param {String | function | undefined} value + * @param {String} [defaultValue] + * @returns {String} str + */ +util.option.asString = function (value, defaultValue) { + if (typeof value == 'function') { + value = value(); + } + + if (value != null) { + return String(value); + } + + return defaultValue || null; +}; + +/** + * Cast a size or location in pixels or a percentage + * @param {String | Number | function | undefined} value + * @param {String} [defaultValue] + * @returns {String} size + */ +util.option.asSize = function (value, defaultValue) { + if (typeof value == 'function') { + value = value(); + } + + if (util.isString(value)) { + return value; + } + else if (util.isNumber(value)) { + return value + 'px'; + } + else { + return defaultValue || null; + } +}; + +/** + * Cast a value as DOM element + * @param {HTMLElement | function | undefined} value + * @param {HTMLElement} [defaultValue] + * @returns {HTMLElement | null} dom + */ +util.option.asElement = function (value, defaultValue) { + if (typeof value == 'function') { + value = value(); + } + + return value || defaultValue || null; +}; + +/** + * load css from text + * @param {String} css Text containing css + */ +util.loadCss = function (css) { + if (typeof document === 'undefined') { + return; + } + + // get the script location, and built the css file name from the js file name + // http://stackoverflow.com/a/2161748/1262753 + // var scripts = document.getElementsByTagName('script'); + // var jsFile = scripts[scripts.length-1].src.split('?')[0]; + // var cssFile = jsFile.substring(0, jsFile.length - 2) + 'css'; + + // inject css + // http://stackoverflow.com/questions/524696/how-to-create-a-style-tag-with-javascript + var style = document.createElement('style'); + style.type = 'text/css'; + if (style.styleSheet){ + style.styleSheet.cssText = css; + } else { + style.appendChild(document.createTextNode(css)); + } + + document.getElementsByTagName('head')[0].appendChild(style); +}; + + +// Internet Explorer 8 and older does not support Array.indexOf, so we define +// it here in that case. +// http://soledadpenades.com/2007/05/17/arrayindexof-in-internet-explorer/ +if(!Array.prototype.indexOf) { + Array.prototype.indexOf = function(obj){ + for(var i = 0; i < this.length; i++){ + if(this[i] == obj){ + return i; + } + } + return -1; + }; + + try { + console.log("Warning: Ancient browser detected. Please update your browser"); + } + catch (err) { + } +} + +// Internet Explorer 8 and older does not support Array.forEach, so we define +// it here in that case. +// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEach +if (!Array.prototype.forEach) { + Array.prototype.forEach = function(fn, scope) { + for(var i = 0, len = this.length; i < len; ++i) { + fn.call(scope || this, this[i], i, this); + } + } +} + +// Internet Explorer 8 and older does not support Array.map, so we define it +// here in that case. +// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/map +// Production steps of ECMA-262, Edition 5, 15.4.4.19 +// Reference: http://es5.github.com/#x15.4.4.19 +if (!Array.prototype.map) { + Array.prototype.map = function(callback, thisArg) { + + var T, A, k; + + if (this == null) { + throw new TypeError(" this is null or not defined"); + } + + // 1. Let O be the result of calling ToObject passing the |this| value as the argument. + var O = Object(this); + + // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length". + // 3. Let len be ToUint32(lenValue). + var len = O.length >>> 0; + + // 4. If IsCallable(callback) is false, throw a TypeError exception. + // See: http://es5.github.com/#x9.11 + if (typeof callback !== "function") { + throw new TypeError(callback + " is not a function"); + } + + // 5. If thisArg was supplied, let T be thisArg; else let T be undefined. + if (thisArg) { + T = thisArg; + } + + // 6. Let A be a new array created as if by the expression new Array(len) where Array is + // the standard built-in constructor with that name and len is the value of len. + A = new Array(len); + + // 7. Let k be 0 + k = 0; + + // 8. Repeat, while k < len + while(k < len) { + + var kValue, mappedValue; + + // a. Let Pk be ToString(k). + // This is implicit for LHS operands of the in operator + // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk. + // This step can be combined with c + // c. If kPresent is true, then + if (k in O) { + + // i. Let kValue be the result of calling the Get internal method of O with argument Pk. + kValue = O[ k ]; + + // ii. Let mappedValue be the result of calling the Call internal method of callback + // with T as the this value and argument list containing kValue, k, and O. + mappedValue = callback.call(T, kValue, k, O); + + // iii. Call the DefineOwnProperty internal method of A with arguments + // Pk, Property Descriptor {Value: mappedValue, : true, Enumerable: true, Configurable: true}, + // and false. + + // In browsers that support Object.defineProperty, use the following: + // Object.defineProperty(A, Pk, { value: mappedValue, writable: true, enumerable: true, configurable: true }); + + // For best browser support, use the following: + A[ k ] = mappedValue; + } + // d. Increase k by 1. + k++; + } + + // 9. return A + return A; + }; +} + +// Internet Explorer 8 and older does not support Array.filter, so we define it +// here in that case. +// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/filter +if (!Array.prototype.filter) { + Array.prototype.filter = function(fun /*, thisp */) { + "use strict"; + + if (this == null) { + throw new TypeError(); + } + + var t = Object(this); + var len = t.length >>> 0; + if (typeof fun != "function") { + throw new TypeError(); + } + + var res = []; + var thisp = arguments[1]; + for (var i = 0; i < len; i++) { + if (i in t) { + var val = t[i]; // in case fun mutates this + if (fun.call(thisp, val, i, t)) + res.push(val); + } + } + + return res; + }; +} + + +// Internet Explorer 8 and older does not support Object.keys, so we define it +// here in that case. +// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/keys +if (!Object.keys) { + Object.keys = (function () { + var hasOwnProperty = Object.prototype.hasOwnProperty, + hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'), + dontEnums = [ + 'toString', + 'toLocaleString', + 'valueOf', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'constructor' + ], + dontEnumsLength = dontEnums.length; + + return function (obj) { + if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) { + throw new TypeError('Object.keys called on non-object'); + } + + var result = []; + + for (var prop in obj) { + if (hasOwnProperty.call(obj, prop)) result.push(prop); + } + + if (hasDontEnumBug) { + for (var i=0; i < dontEnumsLength; i++) { + if (hasOwnProperty.call(obj, dontEnums[i])) result.push(dontEnums[i]); + } + } + return result; + } + })() +} + +// Internet Explorer 8 and older does not support Array.isArray, +// so we define it here in that case. +// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/isArray +if(!Array.isArray) { + Array.isArray = function (vArg) { + return Object.prototype.toString.call(vArg) === "[object Array]"; + }; +} + +// Internet Explorer 8 and older does not support Function.bind, +// so we define it here in that case. +// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind +if (!Function.prototype.bind) { + Function.prototype.bind = function (oThis) { + if (typeof this !== "function") { + // closest thing possible to the ECMAScript 5 internal IsCallable function + throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); + } + + var aArgs = Array.prototype.slice.call(arguments, 1), + fToBind = this, + fNOP = function () {}, + fBound = function () { + return fToBind.apply(this instanceof fNOP && oThis + ? this + : oThis, + aArgs.concat(Array.prototype.slice.call(arguments))); + }; + + fNOP.prototype = this.prototype; + fBound.prototype = new fNOP(); + + return fBound; + }; +} + +// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/create +if (!Object.create) { + Object.create = function (o) { + if (arguments.length > 1) { + throw new Error('Object.create implementation only accepts the first parameter.'); + } + function F() {} + F.prototype = o; + return new F(); + }; +} + +/** + * Event listener (singleton) + */ +// TODO: replace usage of the event listener for the EventBus +var events = { + 'listeners': [], + + /** + * Find a single listener by its object + * @param {Object} object + * @return {Number} index -1 when not found + */ + 'indexOf': function (object) { + var listeners = this.listeners; + for (var i = 0, iMax = this.listeners.length; i < iMax; i++) { + var listener = listeners[i]; + if (listener && listener.object == object) { + return i; + } + } + return -1; + }, + + /** + * Add an event listener + * @param {Object} object + * @param {String} event The name of an event, for example 'select' + * @param {function} callback The callback method, called when the + * event takes place + */ + 'addListener': function (object, event, callback) { + var index = this.indexOf(object); + var listener = this.listeners[index]; + if (!listener) { + listener = { + 'object': object, + 'events': {} + }; + this.listeners.push(listener); + } + + var callbacks = listener.events[event]; + if (!callbacks) { + callbacks = []; + listener.events[event] = callbacks; + } + + // add the callback if it does not yet exist + if (callbacks.indexOf(callback) == -1) { + callbacks.push(callback); + } + }, + + /** + * Remove an event listener + * @param {Object} object + * @param {String} event The name of an event, for example 'select' + * @param {function} callback The registered callback method + */ + 'removeListener': function (object, event, callback) { + var index = this.indexOf(object); + var listener = this.listeners[index]; + if (listener) { + var callbacks = listener.events[event]; + if (callbacks) { + index = callbacks.indexOf(callback); + if (index != -1) { + callbacks.splice(index, 1); + } + + // remove the array when empty + if (callbacks.length == 0) { + delete listener.events[event]; + } + } + + // count the number of registered events. remove listener when empty + var count = 0; + var events = listener.events; + for (var e in events) { + if (events.hasOwnProperty(e)) { + count++; + } + } + if (count == 0) { + delete this.listeners[index]; + } + } + }, + + /** + * Remove all registered event listeners + */ + 'removeAllListeners': function () { + this.listeners = []; + }, + + /** + * Trigger an event. All registered event handlers will be called + * @param {Object} object + * @param {String} event + * @param {Object} properties (optional) + */ + 'trigger': function (object, event, properties) { + var index = this.indexOf(object); + var listener = this.listeners[index]; + if (listener) { + var callbacks = listener.events[event]; + if (callbacks) { + for (var i = 0, iMax = callbacks.length; i < iMax; i++) { + callbacks[i](properties); + } + } + } + } +}; + +/** + * An event bus can be used to emit events, and to subscribe to events + * @constructor EventBus + */ +function EventBus() { + this.subscriptions = []; +} + +/** + * Subscribe to an event + * @param {String | RegExp} event The event can be a regular expression, or + * a string with wildcards, like 'server.*'. + * @param {function} callback. Callback are called with three parameters: + * {String} event, {*} [data], {*} [source] + * @param {*} [target] + * @returns {String} id A subscription id + */ +EventBus.prototype.on = function (event, callback, target) { + var regexp = (event instanceof RegExp) ? + event : + new RegExp(event.replace('*', '\\w+')); + + var subscription = { + id: util.randomUUID(), + event: event, + regexp: regexp, + callback: (typeof callback === 'function') ? callback : null, + target: target + }; + + this.subscriptions.push(subscription); + + return subscription.id; +}; + +/** + * Unsubscribe from an event + * @param {String | Object} filter Filter for subscriptions to be removed + * Filter can be a string containing a + * subscription id, or an object containing + * one or more of the fields id, event, + * callback, and target. + */ +EventBus.prototype.off = function (filter) { + var i = 0; + while (i < this.subscriptions.length) { + var subscription = this.subscriptions[i]; + + var match = true; + if (filter instanceof Object) { + // filter is an object. All fields must match + for (var prop in filter) { + if (filter.hasOwnProperty(prop)) { + if (filter[prop] !== subscription[prop]) { + match = false; + } + } + } + } + else { + // filter is a string, filter on id + match = (subscription.id == filter); + } + + if (match) { + this.subscriptions.splice(i, 1); + } + else { + i++; + } + } +}; + +/** + * Emit an event + * @param {String} event + * @param {*} [data] + * @param {*} [source] + */ +EventBus.prototype.emit = function (event, data, source) { + for (var i =0; i < this.subscriptions.length; i++) { + var subscription = this.subscriptions[i]; + if (subscription.regexp.test(event)) { + if (subscription.callback) { + subscription.callback(event, data, source); + } + } + } +}; + +/** + * DataSet + * + * Usage: + * var dataSet = new DataSet({ + * fieldId: '_id', + * fieldTypes: { + * // ... + * } + * }); + * + * dataSet.add(item); + * dataSet.add(data); + * dataSet.update(item); + * dataSet.update(data); + * dataSet.remove(id); + * dataSet.remove(ids); + * var data = dataSet.get(); + * var data = dataSet.get(id); + * var data = dataSet.get(ids); + * var data = dataSet.get(ids, options, data); + * dataSet.clear(); + * + * A data set can: + * - add/remove/update data + * - gives triggers upon changes in the data + * - can import/export data in various data formats + * + * @param {Object} [options] Available options: + * {String} fieldId Field name of the id in the + * items, 'id' by default. + * {Object.} [fieldTypes] + * {String[]} [fields] field names to be returned + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * {Array | DataTable} [data] If provided, items will be appended to this + * array or table. Required in case of Google + * DataTable. + * + * @throws Error + */ +DataSet.prototype.get = function (args) { + var me = this; + + // parse the arguments + var id, ids, options, data; + var firstType = util.getType(arguments[0]); + if (firstType == 'String' || firstType == 'Number') { + // get(id [, options] [, data]) + id = arguments[0]; + options = arguments[1]; + data = arguments[2]; + } + else if (firstType == 'Array') { + // get(ids [, options] [, data]) + ids = arguments[0]; + options = arguments[1]; + data = arguments[2]; + } + else { + // get([, options] [, data]) + options = arguments[0]; + data = arguments[1]; + } + + // determine the return type + var type; + if (options && options.type) { + type = (options.type == 'DataTable') ? 'DataTable' : 'Array'; + + if (data && (type != util.getType(data))) { + throw new Error('Type of parameter "data" (' + util.getType(data) + ') ' + + 'does not correspond with specified options.type (' + options.type + ')'); + } + if (type == 'DataTable' && !util.isDataTable(data)) { + throw new Error('Parameter "data" must be a DataTable ' + + 'when options.type is "DataTable"'); + } + } + else if (data) { + type = (util.getType(data) == 'DataTable') ? 'DataTable' : 'Array'; + } + else { + type = 'Array'; + } + + // build options + var fieldTypes = options && options.fieldTypes || this.options.fieldTypes; + var filter = options && options.filter; + var items = [], item, itemId, i, len; + + // cast items + if (id != undefined) { + // return a single item + item = me._getItem(id, fieldTypes); + if (filter && !filter(item)) { + item = null; + } + } + else if (ids != undefined) { + // return a subset of items + for (i = 0, len = ids.length; i < len; i++) { + item = me._getItem(ids[i], fieldTypes); + if (!filter || filter(item)) { + items.push(item); + } + } + } + else { + // return all items + for (itemId in this.data) { + if (this.data.hasOwnProperty(itemId)) { + item = me._getItem(itemId, fieldTypes); + if (!filter || filter(item)) { + items.push(item); + } + } + } + } + + // order the results + if (options && options.order && id == undefined) { + this._sort(items, options.order); + } + + // filter fields of the items + if (options && options.fields) { + var fields = options.fields; + if (id != undefined) { + item = this._filterFields(item, fields); + } + else { + for (i = 0, len = items.length; i < len; i++) { + items[i] = this._filterFields(items[i], fields); + } + } + } + + // return the results + if (type == 'DataTable') { + var columns = this._getColumnNames(data); + if (id != undefined) { + // append a single item to the data table + me._appendRow(data, columns, item); + } + else { + // copy the items to the provided data table + for (i = 0, len = items.length; i < len; i++) { + me._appendRow(data, columns, items[i]); + } + } + return data; + } + else { + // return an array + if (id != undefined) { + // a single item + return item; + } + else { + // multiple items + if (data) { + // copy the items to the provided array + for (i = 0, len = items.length; i < len; i++) { + data.push(items[i]); + } + return data; + } + else { + // just return our array + return items; + } + } + } +}; + +/** + * Get ids of all items or from a filtered set of items. + * @param {Object} [options] An Object with options. Available options: + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * @return {Array} ids + */ +DataSet.prototype.getIds = function (options) { + var data = this.data, + filter = options && options.filter, + order = options && options.order, + fieldTypes = options && options.fieldTypes || this.options.fieldTypes, + i, + len, + id, + item, + items, + ids = []; + + if (filter) { + // get filtered items + if (order) { + // create ordered list + items = []; + for (id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, fieldTypes); + if (filter(item)) { + items.push(item); + } + } + } + + this._sort(items, order); + + for (i = 0, len = items.length; i < len; i++) { + ids[i] = items[i][this.fieldId]; + } + } + else { + // create unordered list + for (id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, fieldTypes); + if (filter(item)) { + ids.push(item[this.fieldId]); + } + } + } + } + } + else { + // get all items + if (order) { + // create an ordered list + items = []; + for (id in data) { + if (data.hasOwnProperty(id)) { + items.push(data[id]); + } + } + + this._sort(items, order); + + for (i = 0, len = items.length; i < len; i++) { + ids[i] = items[i][this.fieldId]; + } + } + else { + // create unordered list + for (id in data) { + if (data.hasOwnProperty(id)) { + item = data[id]; + ids.push(item[this.fieldId]); + } + } + } + } + + return ids; +}; + +/** + * Execute a callback function for every item in the dataset. + * The order of the items is not determined. + * @param {function} callback + * @param {Object} [options] Available options: + * {Object.} [fieldTypes] + * {String[]} [fields] filter fields + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + */ +DataSet.prototype.forEach = function (callback, options) { + var filter = options && options.filter, + fieldTypes = options && options.fieldTypes || this.options.fieldTypes, + data = this.data, + item, + id; + + if (options && options.order) { + // execute forEach on ordered list + var items = this.get(options); + + for (var i = 0, len = items.length; i < len; i++) { + item = items[i]; + id = item[this.fieldId]; + callback(item, id); + } + } + else { + // unordered + for (id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, fieldTypes); + if (!filter || filter(item)) { + callback(item, id); + } + } + } + } +}; + +/** + * Map every item in the dataset. + * @param {function} callback + * @param {Object} [options] Available options: + * {Object.} [fieldTypes] + * {String[]} [fields] filter fields + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * @return {Object[]} mappedItems + */ +DataSet.prototype.map = function (callback, options) { + var filter = options && options.filter, + fieldTypes = options && options.fieldTypes || this.options.fieldTypes, + mappedItems = [], + data = this.data, + item; + + // cast and filter items + for (var id in data) { + if (data.hasOwnProperty(id)) { + item = this._getItem(id, fieldTypes); + if (!filter || filter(item)) { + mappedItems.push(callback(item, id)); + } + } + } + + // order items + if (options && options.order) { + this._sort(mappedItems, options.order); + } + + return mappedItems; +}; + +/** + * Filter the fields of an item + * @param {Object} item + * @param {String[]} fields Field names + * @return {Object} filteredItem + * @private + */ +DataSet.prototype._filterFields = function (item, fields) { + var filteredItem = {}; + + for (var field in item) { + if (item.hasOwnProperty(field) && (fields.indexOf(field) != -1)) { + filteredItem[field] = item[field]; + } + } + + return filteredItem; +}; + +/** + * Sort the provided array with items + * @param {Object[]} items + * @param {String | function} order A field name or custom sort function. + * @private + */ +DataSet.prototype._sort = function (items, order) { + if (util.isString(order)) { + // order by provided field name + var name = order; // field name + items.sort(function (a, b) { + var av = a[name]; + var bv = b[name]; + return (av > bv) ? 1 : ((av < bv) ? -1 : 0); + }); + } + else if (typeof order === 'function') { + // order by sort function + items.sort(order); + } + // TODO: extend order by an Object {field:String, direction:String} + // where direction can be 'asc' or 'desc' + else { + throw new TypeError('Order must be a function or a string'); + } +}; + +/** + * Remove an object by pointer or by id + * @param {String | Number | Object | Array} id Object or id, or an array with + * objects or ids to be removed + * @param {String} [senderId] Optional sender id + */ +DataSet.prototype.remove = function (id, senderId) { + var removedItems = [], + i, len; + + if (util.isNumber(id) || util.isString(id)) { + delete this.data[id]; + delete this.internalIds[id]; + removedItems.push(id); + } + else if (id instanceof Array) { + for (i = 0, len = id.length; i < len; i++) { + this.remove(id[i]); + } + removedItems = items.concat(id); + } + else if (id instanceof Object) { + // search for the object + for (i in this.data) { + if (this.data.hasOwnProperty(i)) { + if (this.data[i] == id) { + delete this.data[i]; + delete this.internalIds[i]; + removedItems.push(i); + } + } + } + } + + if (removedItems.length) { + this._trigger('remove', {items: removedItems}, senderId); + } +}; + +/** + * Clear the data + * @param {String} [senderId] Optional sender id + */ +DataSet.prototype.clear = function (senderId) { + var ids = Object.keys(this.data); + + this.data = {}; + this.internalIds = {}; + + this._trigger('remove', {items: ids}, senderId); +}; + +/** + * Find the item with maximum value of a specified field + * @param {String} field + * @return {Object | null} item Item containing max value, or null if no items + */ +DataSet.prototype.max = function (field) { + var data = this.data, + max = null, + maxField = null; + + for (var id in data) { + if (data.hasOwnProperty(id)) { + var item = data[id]; + var itemField = item[field]; + if (itemField != null && (!max || itemField > maxField)) { + max = item; + maxField = itemField; + } + } + } + + return max; +}; + +/** + * Find the item with minimum value of a specified field + * @param {String} field + * @return {Object | null} item Item containing max value, or null if no items + */ +DataSet.prototype.min = function (field) { + var data = this.data, + min = null, + minField = null; + + for (var id in data) { + if (data.hasOwnProperty(id)) { + var item = data[id]; + var itemField = item[field]; + if (itemField != null && (!min || itemField < minField)) { + min = item; + minField = itemField; + } + } + } + + return min; +}; + +/** + * Find all distinct values of a specified field + * @param {String} field + * @return {Array} values Array containing all distinct values. If the data + * items do not contain the specified field, an array + * containing a single value undefined is returned. + * The returned array is unordered. + */ +DataSet.prototype.distinct = function (field) { + var data = this.data, + values = [], + fieldType = this.options.fieldTypes[field], + count = 0; + + for (var prop in data) { + if (data.hasOwnProperty(prop)) { + var item = data[prop]; + var value = util.cast(item[field], fieldType); + var exists = false; + for (var i = 0; i < count; i++) { + if (values[i] == value) { + exists = true; + break; + } + } + if (!exists) { + values[count] = value; + count++; + } + } + } + + return values; +}; + +/** + * Add a single item. Will fail when an item with the same id already exists. + * @param {Object} item + * @return {String} id + * @private + */ +DataSet.prototype._addItem = function (item) { + var id = item[this.fieldId]; + + if (id != undefined) { + // check whether this id is already taken + if (this.data[id]) { + // item already exists + throw new Error('Cannot add item: item with id ' + id + ' already exists'); + } + } + else { + // generate an id + id = util.randomUUID(); + item[this.fieldId] = id; + this.internalIds[id] = item; + } + + var d = {}; + for (var field in item) { + if (item.hasOwnProperty(field)) { + var type = this.fieldTypes[field]; // type may be undefined + d[field] = util.cast(item[field], type); + } + } + this.data[id] = d; + + return id; +}; + +/** + * Get an item. Fields can be casted to a specific type + * @param {String} id + * @param {Object.} [fieldTypes] Cast field types + * @return {Object | null} item + * @private + */ +DataSet.prototype._getItem = function (id, fieldTypes) { + var field, value; + + // get the item from the dataset + var raw = this.data[id]; + if (!raw) { + return null; + } + + // cast the items field types + var casted = {}, + fieldId = this.fieldId, + internalIds = this.internalIds; + if (fieldTypes) { + for (field in raw) { + if (raw.hasOwnProperty(field)) { + value = raw[field]; + // output all fields, except internal ids + if ((field != fieldId) || !(value in internalIds)) { + casted[field] = util.cast(value, fieldTypes[field]); + } + } + } + } + else { + // no field types specified, no casting needed + for (field in raw) { + if (raw.hasOwnProperty(field)) { + value = raw[field]; + // output all fields, except internal ids + if ((field != fieldId) || !(value in internalIds)) { + casted[field] = value; + } + } + } + } + + return casted; +}; + +/** + * Update a single item: merge with existing item. + * Will fail when the item has no id, or when there does not exist an item + * with the same id. + * @param {Object} item + * @return {String} id + * @private + */ +DataSet.prototype._updateItem = function (item) { + var id = item[this.fieldId]; + if (id == undefined) { + throw new Error('Cannot update item: item has no id (item: ' + JSON.stringify(item) + ')'); + } + var d = this.data[id]; + if (!d) { + // item doesn't exist + throw new Error('Cannot update item: no item with id ' + id + ' found'); + } + + // merge with current item + for (var field in item) { + if (item.hasOwnProperty(field)) { + var type = this.fieldTypes[field]; // type may be undefined + d[field] = util.cast(item[field], type); + } + } + + return id; +}; + +/** + * Get an array with the column names of a Google DataTable + * @param {DataTable} dataTable + * @return {String[]} columnNames + * @private + */ +DataSet.prototype._getColumnNames = function (dataTable) { + var columns = []; + for (var col = 0, cols = dataTable.getNumberOfColumns(); col < cols; col++) { + columns[col] = dataTable.getColumnId(col) || dataTable.getColumnLabel(col); + } + return columns; +}; + +/** + * Append an item as a row to the dataTable + * @param dataTable + * @param columns + * @param item + * @private + */ +DataSet.prototype._appendRow = function (dataTable, columns, item) { + var row = dataTable.addRow(); + + for (var col = 0, cols = columns.length; col < cols; col++) { + var field = columns[col]; + dataTable.setValue(row, col, item[field]); + } +}; + +/** + * DataView + * + * a dataview offers a filtered view on a dataset or an other dataview. + * + * @param {DataSet | DataView} data + * @param {Object} [options] Available options: see method get + * + * @constructor DataView + */ +function DataView (data, options) { + this.id = util.randomUUID(); + + this.data = null; + this.ids = {}; // ids of the items currently in memory (just contains a boolean true) + this.options = options || {}; + this.fieldId = 'id'; // name of the field containing id + this.subscribers = {}; // event subscribers + + var me = this; + this.listener = function () { + me._onEvent.apply(me, arguments); + }; + + this.setData(data); +} + +/** + * Set a data source for the view + * @param {DataSet | DataView} data + */ +DataView.prototype.setData = function (data) { + var ids, dataItems, i, len; + + if (this.data) { + // unsubscribe from current dataset + if (this.data.unsubscribe) { + this.data.unsubscribe('*', this.listener); + } + + // trigger a remove of all items in memory + ids = []; + for (var id in this.ids) { + if (this.ids.hasOwnProperty(id)) { + ids.push(id); + } + } + this.ids = {}; + this._trigger('remove', {items: ids}); + } + + this.data = data; + + if (this.data) { + // update fieldId + this.fieldId = this.options.fieldId || + (this.data && this.data.options && this.data.options.fieldId) || + 'id'; + + // trigger an add of all added items + ids = this.data.getIds({filter: this.options && this.options.filter}); + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + this.ids[id] = true; + } + this._trigger('add', {items: ids}); + + // subscribe to new dataset + if (this.data.subscribe) { + this.data.subscribe('*', this.listener); + } + } +}; + +/** + * Get data from the data view + * + * Usage: + * + * get() + * get(options: Object) + * get(options: Object, data: Array | DataTable) + * + * get(id: Number) + * get(id: Number, options: Object) + * get(id: Number, options: Object, data: Array | DataTable) + * + * get(ids: Number[]) + * get(ids: Number[], options: Object) + * get(ids: Number[], options: Object, data: Array | DataTable) + * + * Where: + * + * {Number | String} id The id of an item + * {Number[] | String{}} ids An array with ids of items + * {Object} options An Object with options. Available options: + * {String} [type] Type of data to be returned. Can + * be 'DataTable' or 'Array' (default) + * {Object.} [fieldTypes] + * {String[]} [fields] field names to be returned + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * {Array | DataTable} [data] If provided, items will be appended to this + * array or table. Required in case of Google + * DataTable. + * @param args + */ +DataView.prototype.get = function (args) { + var me = this; + + // parse the arguments + var ids, options, data; + var firstType = util.getType(arguments[0]); + if (firstType == 'String' || firstType == 'Number' || firstType == 'Array') { + // get(id(s) [, options] [, data]) + ids = arguments[0]; // can be a single id or an array with ids + options = arguments[1]; + data = arguments[2]; + } + else { + // get([, options] [, data]) + options = arguments[0]; + data = arguments[1]; + } + + // extend the options with the default options and provided options + var viewOptions = util.extend({}, this.options, options); + + // create a combined filter method when needed + if (this.options.filter && options && options.filter) { + viewOptions.filter = function (item) { + return me.options.filter(item) && options.filter(item); + } + } + + // build up the call to the linked data set + var getArguments = []; + if (ids != undefined) { + getArguments.push(ids); + } + getArguments.push(viewOptions); + getArguments.push(data); + + return this.data && this.data.get.apply(this.data, getArguments); +}; + +/** + * Get ids of all items or from a filtered set of items. + * @param {Object} [options] An Object with options. Available options: + * {function} [filter] filter items + * {String | function} [order] Order the items by + * a field name or custom sort function. + * @return {Array} ids + */ +DataView.prototype.getIds = function (options) { + var ids; + + if (this.data) { + var defaultFilter = this.options.filter; + var filter; + + if (options && options.filter) { + if (defaultFilter) { + filter = function (item) { + return defaultFilter(item) && options.filter(item); + } + } + else { + filter = options.filter; + } + } + else { + filter = defaultFilter; + } + + ids = this.data.getIds({ + filter: filter, + order: options && options.order + }); + } + else { + ids = []; + } + + return ids; +}; + +/** + * Event listener. Will propagate all events from the connected data set to + * the subscribers of the DataView, but will filter the items and only trigger + * when there are changes in the filtered data set. + * @param {String} event + * @param {Object | null} params + * @param {String} senderId + * @private + */ +DataView.prototype._onEvent = function (event, params, senderId) { + var i, len, id, item, + ids = params && params.items, + data = this.data, + added = [], + updated = [], + removed = []; + + if (ids && data) { + switch (event) { + case 'add': + // filter the ids of the added items + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + item = this.get(id); + if (item) { + this.ids[id] = true; + added.push(id); + } + } + + break; + + case 'update': + // determine the event from the views viewpoint: an updated + // item can be added, updated, or removed from this view. + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + item = this.get(id); + + if (item) { + if (this.ids[id]) { + updated.push(id); + } + else { + this.ids[id] = true; + added.push(id); + } + } + else { + if (this.ids[id]) { + delete this.ids[id]; + removed.push(id); + } + else { + // nothing interesting for me :-( + } + } + } + + break; + + case 'remove': + // filter the ids of the removed items + for (i = 0, len = ids.length; i < len; i++) { + id = ids[i]; + if (this.ids[id]) { + delete this.ids[id]; + removed.push(id); + } + } + + break; + } + + if (added.length) { + this._trigger('add', {items: added}, senderId); + } + if (updated.length) { + this._trigger('update', {items: updated}, senderId); + } + if (removed.length) { + this._trigger('remove', {items: removed}, senderId); + } + } +}; + +// copy subscription functionality from DataSet +DataView.prototype.subscribe = DataSet.prototype.subscribe; +DataView.prototype.unsubscribe = DataSet.prototype.unsubscribe; +DataView.prototype._trigger = DataSet.prototype._trigger; + +/** + * @constructor TimeStep + * The class TimeStep is an iterator for dates. You provide a start date and an + * end date. The class itself determines the best scale (step size) based on the + * provided start Date, end Date, and minimumStep. + * + * If minimumStep is provided, the step size is chosen as close as possible + * to the minimumStep but larger than minimumStep. If minimumStep is not + * provided, the scale is set to 1 DAY. + * The minimumStep should correspond with the onscreen size of about 6 characters + * + * Alternatively, you can set a scale by hand. + * After creation, you can initialize the class by executing first(). Then you + * can iterate from the start date to the end date via next(). You can check if + * the end date is reached with the function hasNext(). After each step, you can + * retrieve the current date via getCurrent(). + * The TimeStep has scales ranging from milliseconds, seconds, minutes, hours, + * days, to years. + * + * Version: 1.2 + * + * @param {Date} [start] The start date, for example new Date(2010, 9, 21) + * or new Date(2010, 9, 21, 23, 45, 00) + * @param {Date} [end] The end date + * @param {Number} [minimumStep] Optional. Minimum step size in milliseconds + */ +TimeStep = function(start, end, minimumStep) { + // variables + this.current = new Date(); + this._start = new Date(); + this._end = new Date(); + + this.autoScale = true; + this.scale = TimeStep.SCALE.DAY; + this.step = 1; + + // initialize the range + this.setRange(start, end, minimumStep); +}; + +/// enum scale +TimeStep.SCALE = { + MILLISECOND: 1, + SECOND: 2, + MINUTE: 3, + HOUR: 4, + DAY: 5, + WEEKDAY: 6, + MONTH: 7, + YEAR: 8 +}; + + +/** + * Set a new range + * If minimumStep is provided, the step size is chosen as close as possible + * to the minimumStep but larger than minimumStep. If minimumStep is not + * provided, the scale is set to 1 DAY. + * The minimumStep should correspond with the onscreen size of about 6 characters + * @param {Date} [start] The start date and time. + * @param {Date} [end] The end date and time. + * @param {int} [minimumStep] Optional. Minimum step size in milliseconds + */ +TimeStep.prototype.setRange = function(start, end, minimumStep) { + if (!(start instanceof Date) || !(end instanceof Date)) { + //throw "No legal start or end date in method setRange"; + return; + } + + this._start = (start != undefined) ? new Date(start.valueOf()) : new Date(); + this._end = (end != undefined) ? new Date(end.valueOf()) : new Date(); + + if (this.autoScale) { + this.setMinimumStep(minimumStep); + } +}; + +/** + * Set the range iterator to the start date. + */ +TimeStep.prototype.first = function() { + this.current = new Date(this._start.valueOf()); + this.roundToMinor(); +}; + +/** + * Round the current date to the first minor date value + * This must be executed once when the current date is set to start Date + */ +TimeStep.prototype.roundToMinor = function() { + // round to floor + // IMPORTANT: we have no breaks in this switch! (this is no bug) + //noinspection FallthroughInSwitchStatementJS + switch (this.scale) { + case TimeStep.SCALE.YEAR: + this.current.setFullYear(this.step * Math.floor(this.current.getFullYear() / this.step)); + this.current.setMonth(0); + case TimeStep.SCALE.MONTH: this.current.setDate(1); + case TimeStep.SCALE.DAY: // intentional fall through + case TimeStep.SCALE.WEEKDAY: this.current.setHours(0); + case TimeStep.SCALE.HOUR: this.current.setMinutes(0); + case TimeStep.SCALE.MINUTE: this.current.setSeconds(0); + case TimeStep.SCALE.SECOND: this.current.setMilliseconds(0); + //case TimeStep.SCALE.MILLISECOND: // nothing to do for milliseconds + } + + if (this.step != 1) { + // round down to the first minor value that is a multiple of the current step size + switch (this.scale) { + case TimeStep.SCALE.MILLISECOND: this.current.setMilliseconds(this.current.getMilliseconds() - this.current.getMilliseconds() % this.step); break; + case TimeStep.SCALE.SECOND: this.current.setSeconds(this.current.getSeconds() - this.current.getSeconds() % this.step); break; + case TimeStep.SCALE.MINUTE: this.current.setMinutes(this.current.getMinutes() - this.current.getMinutes() % this.step); break; + case TimeStep.SCALE.HOUR: this.current.setHours(this.current.getHours() - this.current.getHours() % this.step); break; + case TimeStep.SCALE.WEEKDAY: // intentional fall through + case TimeStep.SCALE.DAY: this.current.setDate((this.current.getDate()-1) - (this.current.getDate()-1) % this.step + 1); break; + case TimeStep.SCALE.MONTH: this.current.setMonth(this.current.getMonth() - this.current.getMonth() % this.step); break; + case TimeStep.SCALE.YEAR: this.current.setFullYear(this.current.getFullYear() - this.current.getFullYear() % this.step); break; + default: break; + } + } +}; + +/** + * Check if the there is a next step + * @return {boolean} true if the current date has not passed the end date + */ +TimeStep.prototype.hasNext = function () { + return (this.current.valueOf() <= this._end.valueOf()); +}; + +/** + * Do the next step + */ +TimeStep.prototype.next = function() { + var prev = this.current.valueOf(); + + // Two cases, needed to prevent issues with switching daylight savings + // (end of March and end of October) + if (this.current.getMonth() < 6) { + switch (this.scale) { + case TimeStep.SCALE.MILLISECOND: + + this.current = new Date(this.current.valueOf() + this.step); break; + case TimeStep.SCALE.SECOND: this.current = new Date(this.current.valueOf() + this.step * 1000); break; + case TimeStep.SCALE.MINUTE: this.current = new Date(this.current.valueOf() + this.step * 1000 * 60); break; + case TimeStep.SCALE.HOUR: + this.current = new Date(this.current.valueOf() + this.step * 1000 * 60 * 60); + // in case of skipping an hour for daylight savings, adjust the hour again (else you get: 0h 5h 9h ... instead of 0h 4h 8h ...) + var h = this.current.getHours(); + this.current.setHours(h - (h % this.step)); + break; + case TimeStep.SCALE.WEEKDAY: // intentional fall through + case TimeStep.SCALE.DAY: this.current.setDate(this.current.getDate() + this.step); break; + case TimeStep.SCALE.MONTH: this.current.setMonth(this.current.getMonth() + this.step); break; + case TimeStep.SCALE.YEAR: this.current.setFullYear(this.current.getFullYear() + this.step); break; + default: break; + } + } + else { + switch (this.scale) { + case TimeStep.SCALE.MILLISECOND: this.current = new Date(this.current.valueOf() + this.step); break; + case TimeStep.SCALE.SECOND: this.current.setSeconds(this.current.getSeconds() + this.step); break; + case TimeStep.SCALE.MINUTE: this.current.setMinutes(this.current.getMinutes() + this.step); break; + case TimeStep.SCALE.HOUR: this.current.setHours(this.current.getHours() + this.step); break; + case TimeStep.SCALE.WEEKDAY: // intentional fall through + case TimeStep.SCALE.DAY: this.current.setDate(this.current.getDate() + this.step); break; + case TimeStep.SCALE.MONTH: this.current.setMonth(this.current.getMonth() + this.step); break; + case TimeStep.SCALE.YEAR: this.current.setFullYear(this.current.getFullYear() + this.step); break; + default: break; + } + } + + if (this.step != 1) { + // round down to the correct major value + switch (this.scale) { + case TimeStep.SCALE.MILLISECOND: if(this.current.getMilliseconds() < this.step) this.current.setMilliseconds(0); break; + case TimeStep.SCALE.SECOND: if(this.current.getSeconds() < this.step) this.current.setSeconds(0); break; + case TimeStep.SCALE.MINUTE: if(this.current.getMinutes() < this.step) this.current.setMinutes(0); break; + case TimeStep.SCALE.HOUR: if(this.current.getHours() < this.step) this.current.setHours(0); break; + case TimeStep.SCALE.WEEKDAY: // intentional fall through + case TimeStep.SCALE.DAY: if(this.current.getDate() < this.step+1) this.current.setDate(1); break; + case TimeStep.SCALE.MONTH: if(this.current.getMonth() < this.step) this.current.setMonth(0); break; + case TimeStep.SCALE.YEAR: break; // nothing to do for year + default: break; + } + } + + // safety mechanism: if current time is still unchanged, move to the end + if (this.current.valueOf() == prev) { + this.current = new Date(this._end.valueOf()); + } +}; + + +/** + * Get the current datetime + * @return {Date} current The current date + */ +TimeStep.prototype.getCurrent = function() { + return this.current; +}; + +/** + * Set a custom scale. Autoscaling will be disabled. + * For example setScale(SCALE.MINUTES, 5) will result + * in minor steps of 5 minutes, and major steps of an hour. + * + * @param {TimeStep.SCALE} newScale + * A scale. Choose from SCALE.MILLISECOND, + * SCALE.SECOND, SCALE.MINUTE, SCALE.HOUR, + * SCALE.WEEKDAY, SCALE.DAY, SCALE.MONTH, + * SCALE.YEAR. + * @param {Number} newStep A step size, by default 1. Choose for + * example 1, 2, 5, or 10. + */ +TimeStep.prototype.setScale = function(newScale, newStep) { + this.scale = newScale; + + if (newStep > 0) { + this.step = newStep; + } + + this.autoScale = false; +}; + +/** + * Enable or disable autoscaling + * @param {boolean} enable If true, autoascaling is set true + */ +TimeStep.prototype.setAutoScale = function (enable) { + this.autoScale = enable; +}; + + +/** + * Automatically determine the scale that bests fits the provided minimum step + * @param {Number} [minimumStep] The minimum step size in milliseconds + */ +TimeStep.prototype.setMinimumStep = function(minimumStep) { + if (minimumStep == undefined) { + return; + } + + var stepYear = (1000 * 60 * 60 * 24 * 30 * 12); + var stepMonth = (1000 * 60 * 60 * 24 * 30); + var stepDay = (1000 * 60 * 60 * 24); + var stepHour = (1000 * 60 * 60); + var stepMinute = (1000 * 60); + var stepSecond = (1000); + var stepMillisecond= (1); + + // find the smallest step that is larger than the provided minimumStep + if (stepYear*1000 > minimumStep) {this.scale = TimeStep.SCALE.YEAR; this.step = 1000;} + if (stepYear*500 > minimumStep) {this.scale = TimeStep.SCALE.YEAR; this.step = 500;} + if (stepYear*100 > minimumStep) {this.scale = TimeStep.SCALE.YEAR; this.step = 100;} + if (stepYear*50 > minimumStep) {this.scale = TimeStep.SCALE.YEAR; this.step = 50;} + if (stepYear*10 > minimumStep) {this.scale = TimeStep.SCALE.YEAR; this.step = 10;} + if (stepYear*5 > minimumStep) {this.scale = TimeStep.SCALE.YEAR; this.step = 5;} + if (stepYear > minimumStep) {this.scale = TimeStep.SCALE.YEAR; this.step = 1;} + if (stepMonth*3 > minimumStep) {this.scale = TimeStep.SCALE.MONTH; this.step = 3;} + if (stepMonth > minimumStep) {this.scale = TimeStep.SCALE.MONTH; this.step = 1;} + if (stepDay*5 > minimumStep) {this.scale = TimeStep.SCALE.DAY; this.step = 5;} + if (stepDay*2 > minimumStep) {this.scale = TimeStep.SCALE.DAY; this.step = 2;} + if (stepDay > minimumStep) {this.scale = TimeStep.SCALE.DAY; this.step = 1;} + if (stepDay/2 > minimumStep) {this.scale = TimeStep.SCALE.WEEKDAY; this.step = 1;} + if (stepHour*4 > minimumStep) {this.scale = TimeStep.SCALE.HOUR; this.step = 4;} + if (stepHour > minimumStep) {this.scale = TimeStep.SCALE.HOUR; this.step = 1;} + if (stepMinute*15 > minimumStep) {this.scale = TimeStep.SCALE.MINUTE; this.step = 15;} + if (stepMinute*10 > minimumStep) {this.scale = TimeStep.SCALE.MINUTE; this.step = 10;} + if (stepMinute*5 > minimumStep) {this.scale = TimeStep.SCALE.MINUTE; this.step = 5;} + if (stepMinute > minimumStep) {this.scale = TimeStep.SCALE.MINUTE; this.step = 1;} + if (stepSecond*15 > minimumStep) {this.scale = TimeStep.SCALE.SECOND; this.step = 15;} + if (stepSecond*10 > minimumStep) {this.scale = TimeStep.SCALE.SECOND; this.step = 10;} + if (stepSecond*5 > minimumStep) {this.scale = TimeStep.SCALE.SECOND; this.step = 5;} + if (stepSecond > minimumStep) {this.scale = TimeStep.SCALE.SECOND; this.step = 1;} + if (stepMillisecond*200 > minimumStep) {this.scale = TimeStep.SCALE.MILLISECOND; this.step = 200;} + if (stepMillisecond*100 > minimumStep) {this.scale = TimeStep.SCALE.MILLISECOND; this.step = 100;} + if (stepMillisecond*50 > minimumStep) {this.scale = TimeStep.SCALE.MILLISECOND; this.step = 50;} + if (stepMillisecond*10 > minimumStep) {this.scale = TimeStep.SCALE.MILLISECOND; this.step = 10;} + if (stepMillisecond*5 > minimumStep) {this.scale = TimeStep.SCALE.MILLISECOND; this.step = 5;} + if (stepMillisecond > minimumStep) {this.scale = TimeStep.SCALE.MILLISECOND; this.step = 1;} +}; + +/** + * Snap a date to a rounded value. The snap intervals are dependent on the + * current scale and step. + * @param {Date} date the date to be snapped + */ +TimeStep.prototype.snap = function(date) { + if (this.scale == TimeStep.SCALE.YEAR) { + var year = date.getFullYear() + Math.round(date.getMonth() / 12); + date.setFullYear(Math.round(year / this.step) * this.step); + date.setMonth(0); + date.setDate(0); + date.setHours(0); + date.setMinutes(0); + date.setSeconds(0); + date.setMilliseconds(0); + } + else if (this.scale == TimeStep.SCALE.MONTH) { + if (date.getDate() > 15) { + date.setDate(1); + date.setMonth(date.getMonth() + 1); + // important: first set Date to 1, after that change the month. + } + else { + date.setDate(1); + } + + date.setHours(0); + date.setMinutes(0); + date.setSeconds(0); + date.setMilliseconds(0); + } + else if (this.scale == TimeStep.SCALE.DAY || + this.scale == TimeStep.SCALE.WEEKDAY) { + //noinspection FallthroughInSwitchStatementJS + switch (this.step) { + case 5: + case 2: + date.setHours(Math.round(date.getHours() / 24) * 24); break; + default: + date.setHours(Math.round(date.getHours() / 12) * 12); break; + } + date.setMinutes(0); + date.setSeconds(0); + date.setMilliseconds(0); + } + else if (this.scale == TimeStep.SCALE.HOUR) { + switch (this.step) { + case 4: + date.setMinutes(Math.round(date.getMinutes() / 60) * 60); break; + default: + date.setMinutes(Math.round(date.getMinutes() / 30) * 30); break; + } + date.setSeconds(0); + date.setMilliseconds(0); + } else if (this.scale == TimeStep.SCALE.MINUTE) { + //noinspection FallthroughInSwitchStatementJS + switch (this.step) { + case 15: + case 10: + date.setMinutes(Math.round(date.getMinutes() / 5) * 5); + date.setSeconds(0); + break; + case 5: + date.setSeconds(Math.round(date.getSeconds() / 60) * 60); break; + default: + date.setSeconds(Math.round(date.getSeconds() / 30) * 30); break; + } + date.setMilliseconds(0); + } + else if (this.scale == TimeStep.SCALE.SECOND) { + //noinspection FallthroughInSwitchStatementJS + switch (this.step) { + case 15: + case 10: + date.setSeconds(Math.round(date.getSeconds() / 5) * 5); + date.setMilliseconds(0); + break; + case 5: + date.setMilliseconds(Math.round(date.getMilliseconds() / 1000) * 1000); break; + default: + date.setMilliseconds(Math.round(date.getMilliseconds() / 500) * 500); break; + } + } + else if (this.scale == TimeStep.SCALE.MILLISECOND) { + var step = this.step > 5 ? this.step / 2 : 1; + date.setMilliseconds(Math.round(date.getMilliseconds() / step) * step); + } +}; + +/** + * Check if the current value is a major value (for example when the step + * is DAY, a major value is each first day of the MONTH) + * @return {boolean} true if current date is major, else false. + */ +TimeStep.prototype.isMajor = function() { + switch (this.scale) { + case TimeStep.SCALE.MILLISECOND: + return (this.current.getMilliseconds() == 0); + case TimeStep.SCALE.SECOND: + return (this.current.getSeconds() == 0); + case TimeStep.SCALE.MINUTE: + return (this.current.getHours() == 0) && (this.current.getMinutes() == 0); + // Note: this is no bug. Major label is equal for both minute and hour scale + case TimeStep.SCALE.HOUR: + return (this.current.getHours() == 0); + case TimeStep.SCALE.WEEKDAY: // intentional fall through + case TimeStep.SCALE.DAY: + return (this.current.getDate() == 1); + case TimeStep.SCALE.MONTH: + return (this.current.getMonth() == 0); + case TimeStep.SCALE.YEAR: + return false; + default: + return false; + } +}; + + +/** + * Returns formatted text for the minor axislabel, depending on the current + * date and the scale. For example when scale is MINUTE, the current time is + * formatted as "hh:mm". + * @param {Date} [date] custom date. if not provided, current date is taken + */ +TimeStep.prototype.getLabelMinor = function(date) { + if (date == undefined) { + date = this.current; + } + + switch (this.scale) { + case TimeStep.SCALE.MILLISECOND: return moment(date).format('SSS'); + case TimeStep.SCALE.SECOND: return moment(date).format('s'); + case TimeStep.SCALE.MINUTE: return moment(date).format('HH:mm'); + case TimeStep.SCALE.HOUR: return moment(date).format('HH:mm'); + case TimeStep.SCALE.WEEKDAY: return moment(date).format('ddd D'); + case TimeStep.SCALE.DAY: return moment(date).format('D'); + case TimeStep.SCALE.MONTH: return moment(date).format('MMM'); + case TimeStep.SCALE.YEAR: return moment(date).format('YYYY'); + default: return ''; + } +}; + + +/** + * Returns formatted text for the major axis label, depending on the current + * date and the scale. For example when scale is MINUTE, the major scale is + * hours, and the hour will be formatted as "hh". + * @param {Date} [date] custom date. if not provided, current date is taken + */ +TimeStep.prototype.getLabelMajor = function(date) { + if (date == undefined) { + date = this.current; + } + + //noinspection FallthroughInSwitchStatementJS + switch (this.scale) { + case TimeStep.SCALE.MILLISECOND:return moment(date).format('HH:mm:ss'); + case TimeStep.SCALE.SECOND: return moment(date).format('D MMMM HH:mm'); + case TimeStep.SCALE.MINUTE: + case TimeStep.SCALE.HOUR: return moment(date).format('ddd D MMMM'); + case TimeStep.SCALE.WEEKDAY: + case TimeStep.SCALE.DAY: return moment(date).format('MMMM YYYY'); + case TimeStep.SCALE.MONTH: return moment(date).format('YYYY'); + case TimeStep.SCALE.YEAR: return ''; + default: return ''; + } +}; + +/** + * @constructor Stack + * Stacks items on top of each other. + * @param {ItemSet} parent + * @param {Object} [options] + */ +function Stack (parent, options) { + this.parent = parent; + + this.options = options || {}; + this.defaultOptions = { + order: function (a, b) { + //return (b.width - a.width) || (a.left - b.left); // TODO: cleanup + // Order: ranges over non-ranges, ranged ordered by width, and + // lastly ordered by start. + if (a instanceof ItemRange) { + if (b instanceof ItemRange) { + var aInt = (a.data.end - a.data.start); + var bInt = (b.data.end - b.data.start); + return (aInt - bInt) || (a.data.start - b.data.start); + } + else { + return -1; + } + } + else { + if (b instanceof ItemRange) { + return 1; + } + else { + return (a.data.start - b.data.start); + } + } + }, + margin: { + item: 10 + } + }; + + this.ordered = []; // ordered items +} + +/** + * Set options for the stack + * @param {Object} options Available options: + * {ItemSet} parent + * {Number} margin + * {function} order Stacking order + */ +Stack.prototype.setOptions = function setOptions (options) { + util.extend(this.options, options); + + // TODO: register on data changes at the connected parent itemset, and update the changed part only and immediately +}; + +/** + * Stack the items such that they don't overlap. The items will have a minimal + * distance equal to options.margin.item. + */ +Stack.prototype.update = function update() { + this._order(); + this._stack(); +}; + +/** + * Order the items. The items are ordered by width first, and by left position + * second. + * If a custom order function has been provided via the options, then this will + * be used. + * @private + */ +Stack.prototype._order = function _order () { + var items = this.parent.items; + if (!items) { + throw new Error('Cannot stack items: parent does not contain items'); + } + + // TODO: store the sorted items, to have less work later on + var ordered = []; + var index = 0; + // items is a map (no array) + util.forEach(items, function (item) { + if (item.visible) { + ordered[index] = item; + index++; + } + }); + + //if a customer stack order function exists, use it. + var order = this.options.order || this.defaultOptions.order; + if (!(typeof order === 'function')) { + throw new Error('Option order must be a function'); + } + + ordered.sort(order); + + this.ordered = ordered; +}; + +/** + * Adjust vertical positions of the events such that they don't overlap each + * other. + * @private + */ +Stack.prototype._stack = function _stack () { + var i, + iMax, + ordered = this.ordered, + options = this.options, + orientation = options.orientation || this.defaultOptions.orientation, + axisOnTop = (orientation == 'top'), + margin; + + if (options.margin && options.margin.item !== undefined) { + margin = options.margin.item; + } + else { + margin = this.defaultOptions.margin.item + } + + // calculate new, non-overlapping positions + for (i = 0, iMax = ordered.length; i < iMax; i++) { + var item = ordered[i]; + var collidingItem = null; + do { + // TODO: optimize checking for overlap. when there is a gap without items, + // you only need to check for items from the next item on, not from zero + collidingItem = this.checkOverlap(ordered, i, 0, i - 1, margin); + if (collidingItem != null) { + // There is a collision. Reposition the event above the colliding element + if (axisOnTop) { + item.top = collidingItem.top + collidingItem.height + margin; + } + else { + item.top = collidingItem.top - item.height - margin; + } + } + } while (collidingItem); + } +}; + +/** + * Check if the destiny position of given item overlaps with any + * of the other items from index itemStart to itemEnd. + * @param {Array} items Array with items + * @param {int} itemIndex Number of the item to be checked for overlap + * @param {int} itemStart First item to be checked. + * @param {int} itemEnd Last item to be checked. + * @return {Object | null} colliding item, or undefined when no collisions + * @param {Number} margin A minimum required margin. + * If margin is provided, the two items will be + * marked colliding when they overlap or + * when the margin between the two is smaller than + * the requested margin. + */ +Stack.prototype.checkOverlap = function checkOverlap (items, itemIndex, + itemStart, itemEnd, margin) { + var collision = this.collision; + + // we loop from end to start, as we suppose that the chance of a + // collision is larger for items at the end, so check these first. + var a = items[itemIndex]; + for (var i = itemEnd; i >= itemStart; i--) { + var b = items[i]; + if (collision(a, b, margin)) { + if (i != itemIndex) { + return b; + } + } + } + + return null; +}; + +/** + * Test if the two provided items collide + * The items must have parameters left, width, top, and height. + * @param {Component} a The first item + * @param {Component} b The second item + * @param {Number} margin A minimum required margin. + * If margin is provided, the two items will be + * marked colliding when they overlap or + * when the margin between the two is smaller than + * the requested margin. + * @return {boolean} true if a and b collide, else false + */ +Stack.prototype.collision = function collision (a, b, margin) { + return ((a.left - margin) < (b.left + b.width) && + (a.left + a.width + margin) > b.left && + (a.top - margin) < (b.top + b.height) && + (a.top + a.height + margin) > b.top); +}; + +/** + * @constructor Range + * A Range controls a numeric range with a start and end value. + * The Range adjusts the range based on mouse events or programmatic changes, + * and triggers events when the range is changing or has been changed. + * @param {Object} [options] See description at Range.setOptions + * @extends Controller + */ +function Range(options) { + this.id = util.randomUUID(); + this.start = 0; // Number + this.end = 0; // Number + + this.options = { + min: null, + max: null, + zoomMin: null, + zoomMax: null + }; + + this.listeners = []; + + this.setOptions(options); +} + +/** + * Set options for the range controller + * @param {Object} options Available options: + * {Number} start Set start value of the range + * {Number} end Set end value of the range + * {Number} min Minimum value for start + * {Number} max Maximum value for end + * {Number} zoomMin Set a minimum value for + * (end - start). + * {Number} zoomMax Set a maximum value for + * (end - start). + */ +Range.prototype.setOptions = function (options) { + util.extend(this.options, options); + + if (options.start != null || options.end != null) { + this.setRange(options.start, options.end); + } +}; + +/** + * Add listeners for mouse and touch events to the component + * @param {Component} component + * @param {String} event Available events: 'move', 'zoom' + * @param {String} direction Available directions: 'horizontal', 'vertical' + */ +Range.prototype.subscribe = function (component, event, direction) { + var me = this; + var listener; + + if (direction != 'horizontal' && direction != 'vertical') { + throw new TypeError('Unknown direction "' + direction + '". ' + + 'Choose "horizontal" or "vertical".'); + } + + //noinspection FallthroughInSwitchStatementJS + if (event == 'move') { + listener = { + component: component, + event: event, + direction: direction, + callback: function (event) { + me._onMouseDown(event, listener); + }, + params: {} + }; + + component.on('mousedown', listener.callback); + me.listeners.push(listener); + } + else if (event == 'zoom') { + listener = { + component: component, + event: event, + direction: direction, + callback: function (event) { + me._onMouseWheel(event, listener); + }, + params: {} + }; + + component.on('mousewheel', listener.callback); + me.listeners.push(listener); + } + else { + throw new TypeError('Unknown event "' + event + '". ' + + 'Choose "move" or "zoom".'); + } +}; + +/** + * Event handler + * @param {String} event name of the event, for example 'click', 'mousemove' + * @param {function} callback callback handler, invoked with the raw HTML Event + * as parameter. + */ +Range.prototype.on = function (event, callback) { + events.addListener(this, event, callback); +}; + +/** + * Trigger an event + * @param {String} event name of the event, available events: 'rangechange', + * 'rangechanged' + * @private + */ +Range.prototype._trigger = function (event) { + events.trigger(this, event, { + start: this.start, + end: this.end + }); +}; + +/** + * Set a new start and end range + * @param {Number} start + * @param {Number} end + */ +Range.prototype.setRange = function(start, end) { + var changed = this._applyRange(start, end); + if (changed) { + this._trigger('rangechange'); + this._trigger('rangechanged'); + } +}; + +/** + * Set a new start and end range. This method is the same as setRange, but + * does not trigger a range change and range changed event, and it returns + * true when the range is changed + * @param {Number} start + * @param {Number} end + * @return {Boolean} changed + * @private + */ +Range.prototype._applyRange = function(start, end) { + var newStart = (start != null) ? util.cast(start, 'Number') : this.start; + var newEnd = (end != null) ? util.cast(end, 'Number') : this.end; + var diff; + + // check for valid number + if (isNaN(newStart)) { + throw new Error('Invalid start "' + start + '"'); + } + if (isNaN(newEnd)) { + throw new Error('Invalid end "' + end + '"'); + } + + // prevent start < end + if (newEnd < newStart) { + newEnd = newStart; + } + + // prevent start < min + if (this.options.min != null) { + var min = this.options.min.valueOf(); + if (newStart < min) { + diff = (min - newStart); + newStart += diff; + newEnd += diff; + } + } + + // prevent end > max + if (this.options.max != null) { + var max = this.options.max.valueOf(); + if (newEnd > max) { + diff = (newEnd - max); + newStart -= diff; + newEnd -= diff; + } + } + + // prevent (end-start) > zoomMin + if (this.options.zoomMin != null) { + var zoomMin = this.options.zoomMin.valueOf(); + if (zoomMin < 0) { + zoomMin = 0; + } + if ((newEnd - newStart) < zoomMin) { + if ((this.end - this.start) > zoomMin) { + // zoom to the minimum + diff = (zoomMin - (newEnd - newStart)); + newStart -= diff / 2; + newEnd += diff / 2; + } + else { + // ingore this action, we are already zoomed to the minimum + newStart = this.start; + newEnd = this.end; + } + } + } + + // prevent (end-start) > zoomMin + if (this.options.zoomMax != null) { + var zoomMax = this.options.zoomMax.valueOf(); + if (zoomMax < 0) { + zoomMax = 0; + } + if ((newEnd - newStart) > zoomMax) { + if ((this.end - this.start) < zoomMax) { + // zoom to the maximum + diff = ((newEnd - newStart) - zoomMax); + newStart += diff / 2; + newEnd -= diff / 2; + } + else { + // ingore this action, we are already zoomed to the maximum + newStart = this.start; + newEnd = this.end; + } + } + } + + var changed = (this.start != newStart || this.end != newEnd); + + this.start = newStart; + this.end = newEnd; + + return changed; +}; + +/** + * Retrieve the current range. + * @return {Object} An object with start and end properties + */ +Range.prototype.getRange = function() { + return { + start: this.start, + end: this.end + }; +}; + +/** + * Calculate the conversion offset and factor for current range, based on + * the provided width + * @param {Number} width + * @returns {{offset: number, factor: number}} conversion + */ +Range.prototype.conversion = function (width) { + var start = this.start; + var end = this.end; + + return Range.conversion(this.start, this.end, width); +}; + +/** + * Static method to calculate the conversion offset and factor for a range, + * based on the provided start, end, and width + * @param {Number} start + * @param {Number} end + * @param {Number} width + * @returns {{offset: number, factor: number}} conversion + */ +Range.conversion = function (start, end, width) { + if (width != 0 && (end - start != 0)) { + return { + offset: start, + factor: width / (end - start) + } + } + else { + return { + offset: 0, + factor: 1 + }; + } +}; + +/** + * Start moving horizontally or vertically + * @param {Event} event + * @param {Object} listener Listener containing the component and params + * @private + */ +Range.prototype._onMouseDown = function(event, listener) { + event = event || window.event; + var params = listener.params; + + // only react on left mouse button down + var leftButtonDown = event.which ? (event.which == 1) : (event.button == 1); + if (!leftButtonDown) { + return; + } + + // get mouse position + params.mouseX = util.getPageX(event); + params.mouseY = util.getPageY(event); + params.previousLeft = 0; + params.previousOffset = 0; + + params.moved = false; + params.start = this.start; + params.end = this.end; + + var frame = listener.component.frame; + if (frame) { + frame.style.cursor = 'move'; + } + + // add event listeners to handle moving the contents + // we store the function onmousemove and onmouseup in the timeaxis, + // so we can remove the eventlisteners lateron in the function onmouseup + var me = this; + if (!params.onMouseMove) { + params.onMouseMove = function (event) { + me._onMouseMove(event, listener); + }; + util.addEventListener(document, "mousemove", params.onMouseMove); + } + if (!params.onMouseUp) { + params.onMouseUp = function (event) { + me._onMouseUp(event, listener); + }; + util.addEventListener(document, "mouseup", params.onMouseUp); + } + + util.preventDefault(event); +}; + +/** + * Perform moving operating. + * This function activated from within the funcion TimeAxis._onMouseDown(). + * @param {Event} event + * @param {Object} listener + * @private + */ +Range.prototype._onMouseMove = function (event, listener) { + event = event || window.event; + + var params = listener.params; + + // calculate change in mouse position + var mouseX = util.getPageX(event); + var mouseY = util.getPageY(event); + + if (params.mouseX == undefined) { + params.mouseX = mouseX; + } + if (params.mouseY == undefined) { + params.mouseY = mouseY; + } + + var diffX = mouseX - params.mouseX; + var diffY = mouseY - params.mouseY; + var diff = (listener.direction == 'horizontal') ? diffX : diffY; + + // if mouse movement is big enough, register it as a "moved" event + if (Math.abs(diff) >= 1) { + params.moved = true; + } + + var interval = (params.end - params.start); + var width = (listener.direction == 'horizontal') ? + listener.component.width : listener.component.height; + var diffRange = -diff / width * interval; + this._applyRange(params.start + diffRange, params.end + diffRange); + + // fire a rangechange event + this._trigger('rangechange'); + + util.preventDefault(event); +}; + +/** + * Stop moving operating. + * This function activated from within the function Range._onMouseDown(). + * @param {event} event + * @param {Object} listener + * @private + */ +Range.prototype._onMouseUp = function (event, listener) { + event = event || window.event; + + var params = listener.params; + + if (listener.component.frame) { + listener.component.frame.style.cursor = 'auto'; + } + + // remove event listeners here, important for Safari + if (params.onMouseMove) { + util.removeEventListener(document, "mousemove", params.onMouseMove); + params.onMouseMove = null; + } + if (params.onMouseUp) { + util.removeEventListener(document, "mouseup", params.onMouseUp); + params.onMouseUp = null; + } + //util.preventDefault(event); + + if (params.moved) { + // fire a rangechanged event + this._trigger('rangechanged'); + } +}; + +/** + * Event handler for mouse wheel event, used to zoom + * Code from http://adomas.org/javascript-mouse-wheel/ + * @param {Event} event + * @param {Object} listener + * @private + */ +Range.prototype._onMouseWheel = function(event, listener) { + event = event || window.event; + + // retrieve delta + var delta = 0; + if (event.wheelDelta) { /* IE/Opera. */ + delta = event.wheelDelta / 120; + } else if (event.detail) { /* Mozilla case. */ + // In Mozilla, sign of delta is different than in IE. + // Also, delta is multiple of 3. + delta = -event.detail / 3; + } + + // If delta is nonzero, handle it. + // Basically, delta is now positive if wheel was scrolled up, + // and negative, if wheel was scrolled down. + if (delta) { + var me = this; + var zoom = function () { + // perform the zoom action. Delta is normally 1 or -1 + var zoomFactor = delta / 5.0; + var zoomAround = null; + var frame = listener.component.frame; + if (frame) { + var size, conversion; + if (listener.direction == 'horizontal') { + size = listener.component.width; + conversion = me.conversion(size); + var frameLeft = util.getAbsoluteLeft(frame); + var mouseX = util.getPageX(event); + zoomAround = (mouseX - frameLeft) / conversion.factor + conversion.offset; + } + else { + size = listener.component.height; + conversion = me.conversion(size); + var frameTop = util.getAbsoluteTop(frame); + var mouseY = util.getPageY(event); + zoomAround = ((frameTop + size - mouseY) - frameTop) / conversion.factor + conversion.offset; + } + } + + me.zoom(zoomFactor, zoomAround); + }; + + zoom(); + } + + // Prevent default actions caused by mouse wheel. + // That might be ugly, but we handle scrolls somehow + // anyway, so don't bother here... + util.preventDefault(event); +}; + + +/** + * Zoom the range the given zoomfactor in or out. Start and end date will + * be adjusted, and the timeline will be redrawn. You can optionally give a + * date around which to zoom. + * For example, try zoomfactor = 0.1 or -0.1 + * @param {Number} zoomFactor Zooming amount. Positive value will zoom in, + * negative value will zoom out + * @param {Number} zoomAround Value around which will be zoomed. Optional + */ +Range.prototype.zoom = function(zoomFactor, zoomAround) { + // if zoomAroundDate is not provided, take it half between start Date and end Date + if (zoomAround == null) { + zoomAround = (this.start + this.end) / 2; + } + + // prevent zoom factor larger than 1 or smaller than -1 (larger than 1 will + // result in a start>=end ) + if (zoomFactor >= 1) { + zoomFactor = 0.9; + } + if (zoomFactor <= -1) { + zoomFactor = -0.9; + } + + // adjust a negative factor such that zooming in with 0.1 equals zooming + // out with a factor -0.1 + if (zoomFactor < 0) { + zoomFactor = zoomFactor / (1 + zoomFactor); + } + + // zoom start and end relative to the zoomAround value + var startDiff = (this.start - zoomAround); + var endDiff = (this.end - zoomAround); + + // calculate new start and end + var newStart = this.start - startDiff * zoomFactor; + var newEnd = this.end - endDiff * zoomFactor; + + this.setRange(newStart, newEnd); +}; + +/** + * Move the range with a given factor to the left or right. Start and end + * value will be adjusted. For example, try moveFactor = 0.1 or -0.1 + * @param {Number} moveFactor Moving amount. Positive value will move right, + * negative value will move left + */ +Range.prototype.move = function(moveFactor) { + // zoom start Date and end Date relative to the zoomAroundDate + var diff = (this.end - this.start); + + // apply new values + var newStart = this.start + diff * moveFactor; + var newEnd = this.end + diff * moveFactor; + + // TODO: reckon with min and max range + + this.start = newStart; + this.end = newEnd; +}; + +/** + * @constructor Controller + * + * A Controller controls the reflows and repaints of all visual components + */ +function Controller () { + this.id = util.randomUUID(); + this.components = {}; + + this.repaintTimer = undefined; + this.reflowTimer = undefined; +} + +/** + * Add a component to the controller + * @param {Component} component + */ +Controller.prototype.add = function add(component) { + // validate the component + if (component.id == undefined) { + throw new Error('Component has no field id'); + } + if (!(component instanceof Component) && !(component instanceof Controller)) { + throw new TypeError('Component must be an instance of ' + + 'prototype Component or Controller'); + } + + // add the component + component.controller = this; + this.components[component.id] = component; +}; + +/** + * Remove a component from the controller + * @param {Component | String} component + */ +Controller.prototype.remove = function remove(component) { + var id; + for (id in this.components) { + if (this.components.hasOwnProperty(id)) { + if (id == component || this.components[id] == component) { + break; + } + } + } + + if (id) { + delete this.components[id]; + } +}; + +/** + * Request a reflow. The controller will schedule a reflow + * @param {Boolean} [force] If true, an immediate reflow is forced. Default + * is false. + */ +Controller.prototype.requestReflow = function requestReflow(force) { + if (force) { + this.reflow(); + } + else { + if (!this.reflowTimer) { + var me = this; + this.reflowTimer = setTimeout(function () { + me.reflowTimer = undefined; + me.reflow(); + }, 0); + } + } +}; + +/** + * Request a repaint. The controller will schedule a repaint + * @param {Boolean} [force] If true, an immediate repaint is forced. Default + * is false. + */ +Controller.prototype.requestRepaint = function requestRepaint(force) { + if (force) { + this.repaint(); + } + else { + if (!this.repaintTimer) { + var me = this; + this.repaintTimer = setTimeout(function () { + me.repaintTimer = undefined; + me.repaint(); + }, 0); + } + } +}; + +/** + * Repaint all components + */ +Controller.prototype.repaint = function repaint() { + var changed = false; + + // cancel any running repaint request + if (this.repaintTimer) { + clearTimeout(this.repaintTimer); + this.repaintTimer = undefined; + } + + var done = {}; + + function repaint(component, id) { + if (!(id in done)) { + // first repaint the components on which this component is dependent + if (component.depends) { + component.depends.forEach(function (dep) { + repaint(dep, dep.id); + }); + } + if (component.parent) { + repaint(component.parent, component.parent.id); + } + + // repaint the component itself and mark as done + changed = component.repaint() || changed; + done[id] = true; + } + } + + util.forEach(this.components, repaint); + + // immediately reflow when needed + if (changed) { + this.reflow(); + } + // TODO: limit the number of nested reflows/repaints, prevent loop +}; + +/** + * Reflow all components + */ +Controller.prototype.reflow = function reflow() { + var resized = false; + + // cancel any running repaint request + if (this.reflowTimer) { + clearTimeout(this.reflowTimer); + this.reflowTimer = undefined; + } + + var done = {}; + + function reflow(component, id) { + if (!(id in done)) { + // first reflow the components on which this component is dependent + if (component.depends) { + component.depends.forEach(function (dep) { + reflow(dep, dep.id); + }); + } + if (component.parent) { + reflow(component.parent, component.parent.id); + } + + // reflow the component itself and mark as done + resized = component.reflow() || resized; + done[id] = true; + } + } + + util.forEach(this.components, reflow); + + // immediately repaint when needed + if (resized) { + this.repaint(); + } + // TODO: limit the number of nested reflows/repaints, prevent loop +}; + +/** + * Prototype for visual components + */ +function Component () { + this.id = null; + this.parent = null; + this.depends = null; + this.controller = null; + this.options = null; + + this.frame = null; // main DOM element + this.top = 0; + this.left = 0; + this.width = 0; + this.height = 0; +} + +/** + * Set parameters for the frame. Parameters will be merged in current parameter + * set. + * @param {Object} options Available parameters: + * {String | function} [className] + * {EventBus} [eventBus] + * {String | Number | function} [left] + * {String | Number | function} [top] + * {String | Number | function} [width] + * {String | Number | function} [height] + */ +Component.prototype.setOptions = function setOptions(options) { + if (options) { + util.extend(this.options, options); + + if (this.controller) { + this.requestRepaint(); + this.requestReflow(); + } + } +}; + +/** + * Get an option value by name + * The function will first check this.options object, and else will check + * this.defaultOptions. + * @param {String} name + * @return {*} value + */ +Component.prototype.getOption = function getOption(name) { + var value; + if (this.options) { + value = this.options[name]; + } + if (value === undefined && this.defaultOptions) { + value = this.defaultOptions[name]; + } + return value; +}; + +/** + * Get the container element of the component, which can be used by a child to + * add its own widgets. Not all components do have a container for childs, in + * that case null is returned. + * @returns {HTMLElement | null} container + */ +Component.prototype.getContainer = function getContainer() { + // should be implemented by the component + return null; +}; + +/** + * Get the frame element of the component, the outer HTML DOM element. + * @returns {HTMLElement | null} frame + */ +Component.prototype.getFrame = function getFrame() { + return this.frame; +}; + +/** + * Repaint the component + * @return {Boolean} changed + */ +Component.prototype.repaint = function repaint() { + // should be implemented by the component + return false; +}; + +/** + * Reflow the component + * @return {Boolean} resized + */ +Component.prototype.reflow = function reflow() { + // should be implemented by the component + return false; +}; + +/** + * Hide the component from the DOM + * @return {Boolean} changed + */ +Component.prototype.hide = function hide() { + if (this.frame && this.frame.parentNode) { + this.frame.parentNode.removeChild(this.frame); + return true; + } + else { + return false; + } +}; + +/** + * Show the component in the DOM (when not already visible). + * A repaint will be executed when the component is not visible + * @return {Boolean} changed + */ +Component.prototype.show = function show() { + if (!this.frame || !this.frame.parentNode) { + return this.repaint(); + } + else { + return false; + } +}; + +/** + * Request a repaint. The controller will schedule a repaint + */ +Component.prototype.requestRepaint = function requestRepaint() { + if (this.controller) { + this.controller.requestRepaint(); + } + else { + throw new Error('Cannot request a repaint: no controller configured'); + // TODO: just do a repaint when no parent is configured? + } +}; + +/** + * Request a reflow. The controller will schedule a reflow + */ +Component.prototype.requestReflow = function requestReflow() { + if (this.controller) { + this.controller.requestReflow(); + } + else { + throw new Error('Cannot request a reflow: no controller configured'); + // TODO: just do a reflow when no parent is configured? + } +}; + +/** + * A panel can contain components + * @param {Component} [parent] + * @param {Component[]} [depends] Components on which this components depends + * (except for the parent) + * @param {Object} [options] Available parameters: + * {String | Number | function} [left] + * {String | Number | function} [top] + * {String | Number | function} [width] + * {String | Number | function} [height] + * {String | function} [className] + * @constructor Panel + * @extends Component + */ +function Panel(parent, depends, options) { + this.id = util.randomUUID(); + this.parent = parent; + this.depends = depends; + + this.options = options || {}; +} + +Panel.prototype = new Component(); + +/** + * Set options. Will extend the current options. + * @param {Object} [options] Available parameters: + * {String | function} [className] + * {String | Number | function} [left] + * {String | Number | function} [top] + * {String | Number | function} [width] + * {String | Number | function} [height] + */ +Panel.prototype.setOptions = Component.prototype.setOptions; + +/** + * Get the container element of the panel, which can be used by a child to + * add its own widgets. + * @returns {HTMLElement} container + */ +Panel.prototype.getContainer = function () { + return this.frame; +}; + +/** + * Repaint the component + * @return {Boolean} changed + */ +Panel.prototype.repaint = function () { + var changed = 0, + update = util.updateProperty, + asSize = util.option.asSize, + options = this.options, + frame = this.frame; + if (!frame) { + frame = document.createElement('div'); + frame.className = 'panel'; + + var className = options.className; + if (className) { + if (typeof className == 'function') { + util.addClassName(frame, String(className())); + } + else { + util.addClassName(frame, String(className)); + } + } + + this.frame = frame; + changed += 1; + } + if (!frame.parentNode) { + if (!this.parent) { + throw new Error('Cannot repaint panel: no parent attached'); + } + var parentContainer = this.parent.getContainer(); + if (!parentContainer) { + throw new Error('Cannot repaint panel: parent has no container element'); + } + parentContainer.appendChild(frame); + changed += 1; + } + + changed += update(frame.style, 'top', asSize(options.top, '0px')); + changed += update(frame.style, 'left', asSize(options.left, '0px')); + changed += update(frame.style, 'width', asSize(options.width, '100%')); + changed += update(frame.style, 'height', asSize(options.height, '100%')); + + return (changed > 0); +}; + +/** + * Reflow the component + * @return {Boolean} resized + */ +Panel.prototype.reflow = function () { + var changed = 0, + update = util.updateProperty, + frame = this.frame; + + if (frame) { + changed += update(this, 'top', frame.offsetTop); + changed += update(this, 'left', frame.offsetLeft); + changed += update(this, 'width', frame.offsetWidth); + changed += update(this, 'height', frame.offsetHeight); + } + else { + changed += 1; + } + + return (changed > 0); +}; + +/** + * A root panel can hold components. The root panel must be initialized with + * a DOM element as container. + * @param {HTMLElement} container + * @param {Object} [options] Available parameters: see RootPanel.setOptions. + * @constructor RootPanel + * @extends Panel + */ +function RootPanel(container, options) { + this.id = util.randomUUID(); + this.container = container; + + this.options = options || {}; + this.defaultOptions = { + autoResize: true + }; + + this.listeners = {}; // event listeners +} + +RootPanel.prototype = new Panel(); + +/** + * Set options. Will extend the current options. + * @param {Object} [options] Available parameters: + * {String | function} [className] + * {String | Number | function} [left] + * {String | Number | function} [top] + * {String | Number | function} [width] + * {String | Number | function} [height] + * {Boolean | function} [autoResize] + */ +RootPanel.prototype.setOptions = Component.prototype.setOptions; + +/** + * Repaint the component + * @return {Boolean} changed + */ +RootPanel.prototype.repaint = function () { + var changed = 0, + update = util.updateProperty, + asSize = util.option.asSize, + options = this.options, + frame = this.frame; + if (!frame) { + frame = document.createElement('div'); + frame.className = 'graph panel'; + + var className = options.className; + if (className) { + util.addClassName(frame, util.option.asString(className)); + } + + this.frame = frame; + changed += 1; + } + if (!frame.parentNode) { + if (!this.container) { + throw new Error('Cannot repaint root panel: no container attached'); + } + this.container.appendChild(frame); + changed += 1; + } + + changed += update(frame.style, 'top', asSize(options.top, '0px')); + changed += update(frame.style, 'left', asSize(options.left, '0px')); + changed += update(frame.style, 'width', asSize(options.width, '100%')); + changed += update(frame.style, 'height', asSize(options.height, '100%')); + + this._updateEventEmitters(); + this._updateWatch(); + + return (changed > 0); +}; + +/** + * Reflow the component + * @return {Boolean} resized + */ +RootPanel.prototype.reflow = function () { + var changed = 0, + update = util.updateProperty, + frame = this.frame; + + if (frame) { + changed += update(this, 'top', frame.offsetTop); + changed += update(this, 'left', frame.offsetLeft); + changed += update(this, 'width', frame.offsetWidth); + changed += update(this, 'height', frame.offsetHeight); + } + else { + changed += 1; + } + + return (changed > 0); +}; + +/** + * Update watching for resize, depending on the current option + * @private + */ +RootPanel.prototype._updateWatch = function () { + var autoResize = this.getOption('autoResize'); + if (autoResize) { + this._watch(); + } + else { + this._unwatch(); + } +}; + +/** + * Watch for changes in the size of the frame. On resize, the Panel will + * automatically redraw itself. + * @private + */ +RootPanel.prototype._watch = function () { + var me = this; + + this._unwatch(); + + var checkSize = function () { + var autoResize = me.getOption('autoResize'); + if (!autoResize) { + // stop watching when the option autoResize is changed to false + me._unwatch(); + return; + } + + if (me.frame) { + // check whether the frame is resized + if ((me.frame.clientWidth != me.width) || + (me.frame.clientHeight != me.height)) { + me.requestReflow(); + } + } + }; + + // TODO: automatically cleanup the event listener when the frame is deleted + util.addEventListener(window, 'resize', checkSize); + + this.watchTimer = setInterval(checkSize, 1000); +}; + +/** + * Stop watching for a resize of the frame. + * @private + */ +RootPanel.prototype._unwatch = function () { + if (this.watchTimer) { + clearInterval(this.watchTimer); + this.watchTimer = undefined; + } + + // TODO: remove event listener on window.resize +}; + +/** + * Event handler + * @param {String} event name of the event, for example 'click', 'mousemove' + * @param {function} callback callback handler, invoked with the raw HTML Event + * as parameter. + */ +RootPanel.prototype.on = function (event, callback) { + // register the listener at this component + var arr = this.listeners[event]; + if (!arr) { + arr = []; + this.listeners[event] = arr; + } + arr.push(callback); + + this._updateEventEmitters(); +}; + +/** + * Update the event listeners for all event emitters + * @private + */ +RootPanel.prototype._updateEventEmitters = function () { + if (this.listeners) { + var me = this; + util.forEach(this.listeners, function (listeners, event) { + if (!me.emitters) { + me.emitters = {}; + } + if (!(event in me.emitters)) { + // create event + var frame = me.frame; + if (frame) { + //console.log('Created a listener for event ' + event + ' on component ' + me.id); // TODO: cleanup logging + var callback = function(event) { + listeners.forEach(function (listener) { + // TODO: filter on event target! + listener(event); + }); + }; + me.emitters[event] = callback; + util.addEventListener(frame, event, callback); + } + } + }); + + // TODO: be able to delete event listeners + // TODO: be able to move event listeners to a parent when available + } +}; + +/** + * A horizontal time axis + * @param {Component} parent + * @param {Component[]} [depends] Components on which this components depends + * (except for the parent) + * @param {Object} [options] See TimeAxis.setOptions for the available + * options. + * @constructor TimeAxis + * @extends Component + */ +function TimeAxis (parent, depends, options) { + this.id = util.randomUUID(); + this.parent = parent; + this.depends = depends; + + this.dom = { + majorLines: [], + majorTexts: [], + minorLines: [], + minorTexts: [], + redundant: { + majorLines: [], + majorTexts: [], + minorLines: [], + minorTexts: [] + } + }; + this.props = { + range: { + start: 0, + end: 0, + minimumStep: 0 + }, + lineTop: 0 + }; + + this.options = options || {}; + this.defaultOptions = { + orientation: 'bottom', // supported: 'top', 'bottom' + // TODO: implement timeaxis orientations 'left' and 'right' + showMinorLabels: true, + showMajorLabels: true + }; + + this.conversion = null; + this.range = null; +} + +TimeAxis.prototype = new Component(); + +// TODO: comment options +TimeAxis.prototype.setOptions = Component.prototype.setOptions; + +/** + * Set a range (start and end) + * @param {Range | Object} range A Range or an object containing start and end. + */ +TimeAxis.prototype.setRange = function (range) { + if (!(range instanceof Range) && (!range || !range.start || !range.end)) { + throw new TypeError('Range must be an instance of Range, ' + + 'or an object containing start and end.'); + } + this.range = range; +}; + +/** + * Convert a position on screen (pixels) to a datetime + * @param {int} x Position on the screen in pixels + * @return {Date} time The datetime the corresponds with given position x + */ +TimeAxis.prototype.toTime = function(x) { + var conversion = this.conversion; + return new Date(x / conversion.factor + conversion.offset); +}; + +/** + * Convert a datetime (Date object) into a position on the screen + * @param {Date} time A date + * @return {int} x The position on the screen in pixels which corresponds + * with the given date. + * @private + */ +TimeAxis.prototype.toScreen = function(time) { + var conversion = this.conversion; + return (time.valueOf() - conversion.offset) * conversion.factor; +}; + +/** + * Repaint the component + * @return {Boolean} changed + */ +TimeAxis.prototype.repaint = function () { + var changed = 0, + update = util.updateProperty, + asSize = util.option.asSize, + options = this.options, + orientation = this.getOption('orientation'), + props = this.props, + step = this.step; + + var frame = this.frame; + if (!frame) { + frame = document.createElement('div'); + this.frame = frame; + changed += 1; + } + frame.className = 'axis ' + orientation; + // TODO: custom className? + + if (!frame.parentNode) { + if (!this.parent) { + throw new Error('Cannot repaint time axis: no parent attached'); + } + var parentContainer = this.parent.getContainer(); + if (!parentContainer) { + throw new Error('Cannot repaint time axis: parent has no container element'); + } + parentContainer.appendChild(frame); + + changed += 1; + } + + var parent = frame.parentNode; + if (parent) { + var beforeChild = frame.nextSibling; + parent.removeChild(frame); // take frame offline while updating (is almost twice as fast) + + var defaultTop = (orientation == 'bottom' && this.props.parentHeight && this.height) ? + (this.props.parentHeight - this.height) + 'px' : + '0px'; + changed += update(frame.style, 'top', asSize(options.top, defaultTop)); + changed += update(frame.style, 'left', asSize(options.left, '0px')); + changed += update(frame.style, 'width', asSize(options.width, '100%')); + changed += update(frame.style, 'height', asSize(options.height, this.height + 'px')); + + // get characters width and height + this._repaintMeasureChars(); + + if (this.step) { + this._repaintStart(); + + step.first(); + var xFirstMajorLabel = undefined; + var max = 0; + while (step.hasNext() && max < 1000) { + max++; + var cur = step.getCurrent(), + x = this.toScreen(cur), + isMajor = step.isMajor(); + + // TODO: lines must have a width, such that we can create css backgrounds + + if (this.getOption('showMinorLabels')) { + this._repaintMinorText(x, step.getLabelMinor()); + } + + if (isMajor && this.getOption('showMajorLabels')) { + if (x > 0) { + if (xFirstMajorLabel == undefined) { + xFirstMajorLabel = x; + } + this._repaintMajorText(x, step.getLabelMajor()); + } + this._repaintMajorLine(x); + } + else { + this._repaintMinorLine(x); + } + + step.next(); + } + + // create a major label on the left when needed + if (this.getOption('showMajorLabels')) { + var leftTime = this.toTime(0), + leftText = step.getLabelMajor(leftTime), + widthText = leftText.length * (props.majorCharWidth || 10) + 10; // upper bound estimation + + if (xFirstMajorLabel == undefined || widthText < xFirstMajorLabel) { + this._repaintMajorText(0, leftText); + } + } + + this._repaintEnd(); + } + + this._repaintLine(); + + // put frame online again + if (beforeChild) { + parent.insertBefore(frame, beforeChild); + } + else { + parent.appendChild(frame) + } + } + + return (changed > 0); +}; + +/** + * Start a repaint. Move all DOM elements to a redundant list, where they + * can be picked for re-use, or can be cleaned up in the end + * @private + */ +TimeAxis.prototype._repaintStart = function () { + var dom = this.dom, + redundant = dom.redundant; + + redundant.majorLines = dom.majorLines; + redundant.majorTexts = dom.majorTexts; + redundant.minorLines = dom.minorLines; + redundant.minorTexts = dom.minorTexts; + + dom.majorLines = []; + dom.majorTexts = []; + dom.minorLines = []; + dom.minorTexts = []; +}; + +/** + * End a repaint. Cleanup leftover DOM elements in the redundant list + * @private + */ +TimeAxis.prototype._repaintEnd = function () { + util.forEach(this.dom.redundant, function (arr) { + while (arr.length) { + var elem = arr.pop(); + if (elem && elem.parentNode) { + elem.parentNode.removeChild(elem); + } + } + }); +}; + + +/** + * Create a minor label for the axis at position x + * @param {Number} x + * @param {String} text + * @private + */ +TimeAxis.prototype._repaintMinorText = function (x, text) { + // reuse redundant label + var label = this.dom.redundant.minorTexts.shift(); + + if (!label) { + // create new label + var content = document.createTextNode(''); + label = document.createElement('div'); + label.appendChild(content); + label.className = 'text minor'; + this.frame.appendChild(label); + } + this.dom.minorTexts.push(label); + + label.childNodes[0].nodeValue = text; + label.style.left = x + 'px'; + label.style.top = this.props.minorLabelTop + 'px'; + //label.title = title; // TODO: this is a heavy operation +}; + +/** + * Create a Major label for the axis at position x + * @param {Number} x + * @param {String} text + * @private + */ +TimeAxis.prototype._repaintMajorText = function (x, text) { + // reuse redundant label + var label = this.dom.redundant.majorTexts.shift(); + + if (!label) { + // create label + var content = document.createTextNode(text); + label = document.createElement('div'); + label.className = 'text major'; + label.appendChild(content); + this.frame.appendChild(label); + } + this.dom.majorTexts.push(label); + + label.childNodes[0].nodeValue = text; + label.style.top = this.props.majorLabelTop + 'px'; + label.style.left = x + 'px'; + //label.title = title; // TODO: this is a heavy operation +}; + +/** + * Create a minor line for the axis at position x + * @param {Number} x + * @private + */ +TimeAxis.prototype._repaintMinorLine = function (x) { + // reuse redundant line + var line = this.dom.redundant.minorLines.shift(); + + if (!line) { + // create vertical line + line = document.createElement('div'); + line.className = 'grid vertical minor'; + this.frame.appendChild(line); + } + this.dom.minorLines.push(line); + + var props = this.props; + line.style.top = props.minorLineTop + 'px'; + line.style.height = props.minorLineHeight + 'px'; + line.style.left = (x - props.minorLineWidth / 2) + 'px'; +}; + +/** + * Create a Major line for the axis at position x + * @param {Number} x + * @private + */ +TimeAxis.prototype._repaintMajorLine = function (x) { + // reuse redundant line + var line = this.dom.redundant.majorLines.shift(); + + if (!line) { + // create vertical line + line = document.createElement('DIV'); + line.className = 'grid vertical major'; + this.frame.appendChild(line); + } + this.dom.majorLines.push(line); + + var props = this.props; + line.style.top = props.majorLineTop + 'px'; + line.style.left = (x - props.majorLineWidth / 2) + 'px'; + line.style.height = props.majorLineHeight + 'px'; +}; + + +/** + * Repaint the horizontal line for the axis + * @private + */ +TimeAxis.prototype._repaintLine = function() { + var line = this.dom.line, + frame = this.frame, + options = this.options; + + // line before all axis elements + if (this.getOption('showMinorLabels') || this.getOption('showMajorLabels')) { + if (line) { + // put this line at the end of all childs + frame.removeChild(line); + frame.appendChild(line); + } + else { + // create the axis line + line = document.createElement('div'); + line.className = 'grid horizontal major'; + frame.appendChild(line); + this.dom.line = line; + } + + line.style.top = this.props.lineTop + 'px'; + } + else { + if (line && axis.parentElement) { + frame.removeChild(axis.line); + delete this.dom.line; + } + } +}; + +/** + * Create characters used to determine the size of text on the axis + * @private + */ +TimeAxis.prototype._repaintMeasureChars = function () { + // calculate the width and height of a single character + // this is used to calculate the step size, and also the positioning of the + // axis + var dom = this.dom, + text; + + if (!dom.measureCharMinor) { + text = document.createTextNode('0'); + var measureCharMinor = document.createElement('DIV'); + measureCharMinor.className = 'text minor measure'; + measureCharMinor.appendChild(text); + this.frame.appendChild(measureCharMinor); + + dom.measureCharMinor = measureCharMinor; + } + + if (!dom.measureCharMajor) { + text = document.createTextNode('0'); + var measureCharMajor = document.createElement('DIV'); + measureCharMajor.className = 'text major measure'; + measureCharMajor.appendChild(text); + this.frame.appendChild(measureCharMajor); + + dom.measureCharMajor = measureCharMajor; + } +}; + +/** + * Reflow the component + * @return {Boolean} resized + */ +TimeAxis.prototype.reflow = function () { + var changed = 0, + update = util.updateProperty, + frame = this.frame, + range = this.range; + + if (!range) { + throw new Error('Cannot repaint time axis: no range configured'); + } + + if (frame) { + changed += update(this, 'top', frame.offsetTop); + changed += update(this, 'left', frame.offsetLeft); + + // calculate size of a character + var props = this.props, + showMinorLabels = this.getOption('showMinorLabels'), + showMajorLabels = this.getOption('showMajorLabels'), + measureCharMinor = this.dom.measureCharMinor, + measureCharMajor = this.dom.measureCharMajor; + if (measureCharMinor) { + props.minorCharHeight = measureCharMinor.clientHeight; + props.minorCharWidth = measureCharMinor.clientWidth; + } + if (measureCharMajor) { + props.majorCharHeight = measureCharMajor.clientHeight; + props.majorCharWidth = measureCharMajor.clientWidth; + } + + var parentHeight = frame.parentNode ? frame.parentNode.offsetHeight : 0; + if (parentHeight != props.parentHeight) { + props.parentHeight = parentHeight; + changed += 1; + } + switch (this.getOption('orientation')) { + case 'bottom': + props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; + props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; + + props.minorLabelTop = 0; + props.majorLabelTop = props.minorLabelTop + props.minorLabelHeight; + + props.minorLineTop = -this.top; + props.minorLineHeight = Math.max(this.top + props.majorLabelHeight, 0); + props.minorLineWidth = 1; // TODO: really calculate width + + props.majorLineTop = -this.top; + props.majorLineHeight = Math.max(this.top + props.minorLabelHeight + props.majorLabelHeight, 0); + props.majorLineWidth = 1; // TODO: really calculate width + + props.lineTop = 0; + + break; + + case 'top': + props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; + props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; + + props.majorLabelTop = 0; + props.minorLabelTop = props.majorLabelTop + props.majorLabelHeight; + + props.minorLineTop = props.minorLabelTop; + props.minorLineHeight = Math.max(parentHeight - props.majorLabelHeight - this.top); + props.minorLineWidth = 1; // TODO: really calculate width + + props.majorLineTop = 0; + props.majorLineHeight = Math.max(parentHeight - this.top); + props.majorLineWidth = 1; // TODO: really calculate width + + props.lineTop = props.majorLabelHeight + props.minorLabelHeight; + + break; + + default: + throw new Error('Unkown orientation "' + this.getOption('orientation') + '"'); + } + + var height = props.minorLabelHeight + props.majorLabelHeight; + changed += update(this, 'width', frame.offsetWidth); + changed += update(this, 'height', height); + + // calculate range and step + this._updateConversion(); + + var start = util.cast(range.start, 'Date'), + end = util.cast(range.end, 'Date'), + minimumStep = this.toTime((props.minorCharWidth || 10) * 5) - this.toTime(0); + this.step = new TimeStep(start, end, minimumStep); + changed += update(props.range, 'start', start.valueOf()); + changed += update(props.range, 'end', end.valueOf()); + changed += update(props.range, 'minimumStep', minimumStep.valueOf()); + } + + return (changed > 0); +}; + +/** + * Calculate the factor and offset to convert a position on screen to the + * corresponding date and vice versa. + * After the method _updateConversion is executed once, the methods toTime + * and toScreen can be used. + * @private + */ +TimeAxis.prototype._updateConversion = function() { + var range = this.range; + if (!range) { + throw new Error('No range configured'); + } + + if (range.conversion) { + this.conversion = range.conversion(this.width); + } + else { + this.conversion = Range.conversion(range.start, range.end, this.width); + } +}; + +/** + * An ItemSet holds a set of items and ranges which can be displayed in a + * range. The width is determined by the parent of the ItemSet, and the height + * is determined by the size of the items. + * @param {Component} parent + * @param {Component[]} [depends] Components on which this components depends + * (except for the parent) + * @param {Object} [options] See ItemSet.setOptions for the available + * options. + * @constructor ItemSet + * @extends Panel + */ +// TODO: improve performance by replacing all Array.forEach with a for loop +function ItemSet(parent, depends, options) { + this.id = util.randomUUID(); + this.parent = parent; + this.depends = depends; + + // one options object is shared by this itemset and all its items + this.options = options || {}; + this.defaultOptions = { + type: 'box', + align: 'center', + orientation: 'bottom', + margin: { + axis: 20, + item: 10 + }, + padding: 5 + }; + + this.dom = {}; + + var me = this; + this.itemsData = null; // DataSet + this.range = null; // Range or Object {start: number, end: number} + + this.listeners = { + 'add': function (event, params, senderId) { + if (senderId != me.id) { + me._onAdd(params.items); + } + }, + 'update': function (event, params, senderId) { + if (senderId != me.id) { + me._onUpdate(params.items); + } + }, + 'remove': function (event, params, senderId) { + if (senderId != me.id) { + me._onRemove(params.items); + } + } + }; + + this.items = {}; // object with an Item for every data item + this.queue = {}; // queue with id/actions: 'add', 'update', 'delete' + this.stack = new Stack(this, Object.create(this.options)); + this.conversion = null; + + // TODO: ItemSet should also attach event listeners for rangechange and rangechanged, like timeaxis +} + +ItemSet.prototype = new Panel(); + +// available item types will be registered here +ItemSet.types = { + box: ItemBox, + range: ItemRange, + point: ItemPoint +}; + +/** + * Set options for the ItemSet. Existing options will be extended/overwritten. + * @param {Object} [options] The following options are available: + * {String | function} [className] + * class name for the itemset + * {String} [type] + * Default type for the items. Choose from 'box' + * (default), 'point', or 'range'. The default + * Style can be overwritten by individual items. + * {String} align + * Alignment for the items, only applicable for + * ItemBox. Choose 'center' (default), 'left', or + * 'right'. + * {String} orientation + * Orientation of the item set. Choose 'top' or + * 'bottom' (default). + * {Number} margin.axis + * Margin between the axis and the items in pixels. + * Default is 20. + * {Number} margin.item + * Margin between items in pixels. Default is 10. + * {Number} padding + * Padding of the contents of an item in pixels. + * Must correspond with the items css. Default is 5. + */ +ItemSet.prototype.setOptions = Component.prototype.setOptions; + +/** + * Set range (start and end). + * @param {Range | Object} range A Range or an object containing start and end. + */ +ItemSet.prototype.setRange = function setRange(range) { + if (!(range instanceof Range) && (!range || !range.start || !range.end)) { + throw new TypeError('Range must be an instance of Range, ' + + 'or an object containing start and end.'); + } + this.range = range; +}; + +/** + * Repaint the component + * @return {Boolean} changed + */ +ItemSet.prototype.repaint = function repaint() { + var changed = 0, + update = util.updateProperty, + asSize = util.option.asSize, + options = this.options, + orientation = this.getOption('orientation'), + defaultOptions = this.defaultOptions, + frame = this.frame; + + if (!frame) { + frame = document.createElement('div'); + frame.className = 'itemset'; + + var className = options.className; + if (className) { + util.addClassName(frame, util.option.asString(className)); + } + + // create background panel + var background = document.createElement('div'); + background.className = 'background'; + frame.appendChild(background); + this.dom.background = background; + + // create foreground panel + var foreground = document.createElement('div'); + foreground.className = 'foreground'; + frame.appendChild(foreground); + this.dom.foreground = foreground; + + // create axis panel + var axis = document.createElement('div'); + axis.className = 'itemset-axis'; + //frame.appendChild(axis); + this.dom.axis = axis; + + this.frame = frame; + changed += 1; + } + + if (!this.parent) { + throw new Error('Cannot repaint itemset: no parent attached'); + } + var parentContainer = this.parent.getContainer(); + if (!parentContainer) { + throw new Error('Cannot repaint itemset: parent has no container element'); + } + if (!frame.parentNode) { + parentContainer.appendChild(frame); + changed += 1; + } + if (!this.dom.axis.parentNode) { + parentContainer.appendChild(this.dom.axis); + changed += 1; + } + + // reposition frame + changed += update(frame.style, 'left', asSize(options.left, '0px')); + changed += update(frame.style, 'top', asSize(options.top, '0px')); + changed += update(frame.style, 'width', asSize(options.width, '100%')); + changed += update(frame.style, 'height', asSize(options.height, this.height + 'px')); + + // reposition axis + changed += update(this.dom.axis.style, 'left', asSize(options.left, '0px')); + changed += update(this.dom.axis.style, 'width', asSize(options.width, '100%')); + if (orientation == 'bottom') { + changed += update(this.dom.axis.style, 'top', (this.height + this.top) + 'px'); + } + else { // orientation == 'top' + changed += update(this.dom.axis.style, 'top', this.top + 'px'); + } + + this._updateConversion(); + + var me = this, + queue = this.queue, + itemsData = this.itemsData, + items = this.items, + dataOptions = { + fields: [(itemsData && itemsData.fieldId || 'id'), 'start', 'end', 'content', 'type'] + }; + // TODO: copy options from the itemset itself? + + // show/hide added/changed/removed items + Object.keys(queue).forEach(function (id) { + //var entry = queue[id]; + var action = queue[id]; + var item = items[id]; + //var item = entry.item; + //noinspection FallthroughInSwitchStatementJS + switch (action) { + case 'add': + case 'update': + var itemData = itemsData && itemsData.get(id, dataOptions); + + if (itemData) { + var type = itemData.type || + (itemData.start && itemData.end && 'range') || + options.type || + 'box'; + var constructor = ItemSet.types[type]; + + // TODO: how to handle items with invalid data? hide them and give a warning? or throw an error? + if (item) { + // update item + if (!constructor || !(item instanceof constructor)) { + // item type has changed, hide and delete the item + changed += item.hide(); + item = null; + } + else { + item.data = itemData; // TODO: create a method item.setData ? + changed++; + } + } + + if (!item) { + // create item + if (constructor) { + item = new constructor(me, itemData, options, defaultOptions); + changed++; + } + else { + throw new TypeError('Unknown item type "' + type + '"'); + } + } + + // force a repaint (not only a reposition) + item.repaint(); + + items[id] = item; + } + + // update queue + delete queue[id]; + break; + + case 'remove': + if (item) { + // remove DOM of the item + changed += item.hide(); + } + + // update lists + delete items[id]; + delete queue[id]; + break; + + default: + console.log('Error: unknown action "' + action + '"'); + } + }); + + // reposition all items. Show items only when in the visible area + util.forEach(this.items, function (item) { + if (item.visible) { + changed += item.show(); + item.reposition(); + } + else { + changed += item.hide(); + } + }); + + return (changed > 0); +}; + +/** + * Get the foreground container element + * @return {HTMLElement} foreground + */ +ItemSet.prototype.getForeground = function getForeground() { + return this.dom.foreground; +}; + +/** + * Get the background container element + * @return {HTMLElement} background + */ +ItemSet.prototype.getBackground = function getBackground() { + return this.dom.background; +}; + +/** + * Get the axis container element + * @return {HTMLElement} axis + */ +ItemSet.prototype.getAxis = function getAxis() { + return this.dom.axis; +}; + +/** + * Reflow the component + * @return {Boolean} resized + */ +ItemSet.prototype.reflow = function reflow () { + var changed = 0, + options = this.options, + marginAxis = options.margin && options.margin.axis || this.defaultOptions.margin.axis, + marginItem = options.margin && options.margin.item || this.defaultOptions.margin.item, + update = util.updateProperty, + asNumber = util.option.asNumber, + asSize = util.option.asSize, + frame = this.frame; + + if (frame) { + this._updateConversion(); + + util.forEach(this.items, function (item) { + changed += item.reflow(); + }); + + // TODO: stack.update should be triggered via an event, in stack itself + // TODO: only update the stack when there are changed items + this.stack.update(); + + var maxHeight = asNumber(options.maxHeight); + var fixedHeight = (asSize(options.height) != null); + var height; + if (fixedHeight) { + height = frame.offsetHeight; + } + else { + // height is not specified, determine the height from the height and positioned items + var visibleItems = this.stack.ordered; // TODO: not so nice way to get the filtered items + if (visibleItems.length) { + var min = visibleItems[0].top; + var max = visibleItems[0].top + visibleItems[0].height; + util.forEach(visibleItems, function (item) { + min = Math.min(min, item.top); + max = Math.max(max, (item.top + item.height)); + }); + height = (max - min) + marginAxis + marginItem; + } + else { + height = marginAxis + marginItem; + } + } + if (maxHeight != null) { + height = Math.min(height, maxHeight); + } + changed += update(this, 'height', height); + + // calculate height from items + changed += update(this, 'top', frame.offsetTop); + changed += update(this, 'left', frame.offsetLeft); + changed += update(this, 'width', frame.offsetWidth); + } + else { + changed += 1; + } + + return (changed > 0); +}; + +/** + * Hide this component from the DOM + * @return {Boolean} changed + */ +ItemSet.prototype.hide = function hide() { + var changed = false; + + // remove the DOM + if (this.frame && this.frame.parentNode) { + this.frame.parentNode.removeChild(this.frame); + changed = true; + } + if (this.dom.axis && this.dom.axis.parentNode) { + this.dom.axis.parentNode.removeChild(this.dom.axis); + changed = true; + } + + return changed; +}; + +/** + * Set items + * @param {vis.DataSet | null} items + */ +ItemSet.prototype.setItems = function setItems(items) { + var me = this, + ids; + + // unsubscribe from current dataset + var current = this.itemsData; + if (current) { + util.forEach(this.listeners, function (callback, event) { + current.unsubscribe(event, callback); + }); + + // remove all drawn items + ids = current.getIds(); + this._onRemove(ids); + } + + // replace the dataset + if (!items) { + this.itemsData = null; + } + else if (items instanceof DataSet || items instanceof DataView) { + this.itemsData = items; + } + else { + throw new TypeError('Data must be an instance of DataSet'); + } + + if (this.itemsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.listeners, function (callback, event) { + me.itemsData.subscribe(event, callback, id); + }); + + // draw all new items + ids = this.itemsData.getIds(); + this._onAdd(ids); + } +}; + +/** + * Get the current items items + * @returns {vis.DataSet | null} + */ +ItemSet.prototype.getItems = function getItems() { + return this.itemsData; +}; + +/** + * Handle updated items + * @param {Number[]} ids + * @private + */ +ItemSet.prototype._onUpdate = function _onUpdate(ids) { + this._toQueue('update', ids); +}; + +/** + * Handle changed items + * @param {Number[]} ids + * @private + */ +ItemSet.prototype._onAdd = function _onAdd(ids) { + this._toQueue('add', ids); +}; + +/** + * Handle removed items + * @param {Number[]} ids + * @private + */ +ItemSet.prototype._onRemove = function _onRemove(ids) { + this._toQueue('remove', ids); +}; + +/** + * Put items in the queue to be added/updated/remove + * @param {String} action can be 'add', 'update', 'remove' + * @param {Number[]} ids + */ +ItemSet.prototype._toQueue = function _toQueue(action, ids) { + var queue = this.queue; + ids.forEach(function (id) { + queue[id] = action; + }); + + if (this.controller) { + //this.requestReflow(); + this.requestRepaint(); + } +}; + +/** + * Calculate the factor and offset to convert a position on screen to the + * corresponding date and vice versa. + * After the method _updateConversion is executed once, the methods toTime + * and toScreen can be used. + * @private + */ +ItemSet.prototype._updateConversion = function _updateConversion() { + var range = this.range; + if (!range) { + throw new Error('No range configured'); + } + + if (range.conversion) { + this.conversion = range.conversion(this.width); + } + else { + this.conversion = Range.conversion(range.start, range.end, this.width); + } +}; + +/** + * Convert a position on screen (pixels) to a datetime + * Before this method can be used, the method _updateConversion must be + * executed once. + * @param {int} x Position on the screen in pixels + * @return {Date} time The datetime the corresponds with given position x + */ +ItemSet.prototype.toTime = function toTime(x) { + var conversion = this.conversion; + return new Date(x / conversion.factor + conversion.offset); +}; + +/** + * Convert a datetime (Date object) into a position on the screen + * Before this method can be used, the method _updateConversion must be + * executed once. + * @param {Date} time A date + * @return {int} x The position on the screen in pixels which corresponds + * with the given date. + */ +ItemSet.prototype.toScreen = function toScreen(time) { + var conversion = this.conversion; + return (time.valueOf() - conversion.offset) * conversion.factor; +}; + +/** + * @constructor Item + * @param {ItemSet} parent + * @param {Object} data Object containing (optional) parameters type, + * start, end, content, group, className. + * @param {Object} [options] Options to set initial property values + * @param {Object} [defaultOptions] default options + * // TODO: describe available options + */ +function Item (parent, data, options, defaultOptions) { + this.parent = parent; + this.data = data; + this.dom = null; + this.options = options || {}; + this.defaultOptions = defaultOptions || {}; + + this.selected = false; + this.visible = false; + this.top = 0; + this.left = 0; + this.width = 0; + this.height = 0; +} + +/** + * Select current item + */ +Item.prototype.select = function select() { + this.selected = true; +}; + +/** + * Unselect current item + */ +Item.prototype.unselect = function unselect() { + this.selected = false; +}; + +/** + * Show the Item in the DOM (when not already visible) + * @return {Boolean} changed + */ +Item.prototype.show = function show() { + return false; +}; + +/** + * Hide the Item from the DOM (when visible) + * @return {Boolean} changed + */ +Item.prototype.hide = function hide() { + return false; +}; + +/** + * Repaint the item + * @return {Boolean} changed + */ +Item.prototype.repaint = function repaint() { + // should be implemented by the item + return false; +}; + +/** + * Reflow the item + * @return {Boolean} resized + */ +Item.prototype.reflow = function reflow() { + // should be implemented by the item + return false; +}; + +/** + * @constructor ItemBox + * @extends Item + * @param {ItemSet} parent + * @param {Object} data Object containing parameters start + * content, className. + * @param {Object} [options] Options to set initial property values + * @param {Object} [defaultOptions] default options + * // TODO: describe available options + */ +function ItemBox (parent, data, options, defaultOptions) { + this.props = { + dot: { + left: 0, + top: 0, + width: 0, + height: 0 + }, + line: { + top: 0, + left: 0, + width: 0, + height: 0 + } + }; + + Item.call(this, parent, data, options, defaultOptions); +} + +ItemBox.prototype = new Item (null, null); + +/** + * Select the item + * @override + */ +ItemBox.prototype.select = function select() { + this.selected = true; + // TODO: select and unselect +}; + +/** + * Unselect the item + * @override + */ +ItemBox.prototype.unselect = function unselect() { + this.selected = false; + // TODO: select and unselect +}; + +/** + * Repaint the item + * @return {Boolean} changed + */ +ItemBox.prototype.repaint = function repaint() { + // TODO: make an efficient repaint + var changed = false; + var dom = this.dom; + + if (!dom) { + this._create(); + dom = this.dom; + changed = true; + } + + if (dom) { + if (!this.parent) { + throw new Error('Cannot repaint item: no parent attached'); + } + var foreground = this.parent.getForeground(); + if (!foreground) { + throw new Error('Cannot repaint time axis: ' + + 'parent has no foreground container element'); + } + var background = this.parent.getBackground(); + if (!background) { + throw new Error('Cannot repaint time axis: ' + + 'parent has no background container element'); + } + var axis = this.parent.getAxis(); + if (!background) { + throw new Error('Cannot repaint time axis: ' + + 'parent has no axis container element'); + } + + if (!dom.box.parentNode) { + foreground.appendChild(dom.box); + changed = true; + } + if (!dom.line.parentNode) { + background.appendChild(dom.line); + changed = true; + } + if (!dom.dot.parentNode) { + axis.appendChild(dom.dot); + changed = true; + } + + // update contents + if (this.data.content != this.content) { + this.content = this.data.content; + if (this.content instanceof Element) { + dom.content.innerHTML = ''; + dom.content.appendChild(this.content); + } + else if (this.data.content != undefined) { + dom.content.innerHTML = this.content; + } + else { + throw new Error('Property "content" missing in item ' + this.data.id); + } + changed = true; + } + + // update class + var className = (this.data.className? ' ' + this.data.className : '') + + (this.selected ? ' selected' : ''); + if (this.className != className) { + this.className = className; + dom.box.className = 'item box' + className; + dom.line.className = 'item line' + className; + dom.dot.className = 'item dot' + className; + changed = true; + } + } + + return changed; +}; + +/** + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. + * @return {Boolean} changed + */ +ItemBox.prototype.show = function show() { + if (!this.dom || !this.dom.box.parentNode) { + return this.repaint(); + } + else { + return false; + } +}; + +/** + * Hide the item from the DOM (when visible) + * @return {Boolean} changed + */ +ItemBox.prototype.hide = function hide() { + var changed = false, + dom = this.dom; + if (dom) { + if (dom.box.parentNode) { + dom.box.parentNode.removeChild(dom.box); + changed = true; + } + if (dom.line.parentNode) { + dom.line.parentNode.removeChild(dom.line); + } + if (dom.dot.parentNode) { + dom.dot.parentNode.removeChild(dom.dot); + } + } + return changed; +}; + +/** + * Reflow the item: calculate its actual size and position from the DOM + * @return {boolean} resized returns true if the axis is resized + * @override + */ +ItemBox.prototype.reflow = function reflow() { + var changed = 0, + update, + dom, + props, + options, + margin, + start, + align, + orientation, + top, + left, + data, + range; + + if (this.data.start == undefined) { + throw new Error('Property "start" missing in item ' + this.data.id); + } + + data = this.data; + range = this.parent && this.parent.range; + if (data && range) { + // TODO: account for the width of the item. Take some margin + this.visible = (data.start > range.start) && (data.start < range.end); + } + else { + this.visible = false; + } + + if (this.visible) { + dom = this.dom; + if (dom) { + update = util.updateProperty; + props = this.props; + options = this.options; + start = this.parent.toScreen(this.data.start); + align = options.align || this.defaultOptions.align; + margin = options.margin && options.margin.axis || this.defaultOptions.margin.axis; + orientation = options.orientation || this.defaultOptions.orientation; + + changed += update(props.dot, 'height', dom.dot.offsetHeight); + changed += update(props.dot, 'width', dom.dot.offsetWidth); + changed += update(props.line, 'width', dom.line.offsetWidth); + changed += update(props.line, 'height', dom.line.offsetHeight); + changed += update(props.line, 'top', dom.line.offsetTop); + changed += update(this, 'width', dom.box.offsetWidth); + changed += update(this, 'height', dom.box.offsetHeight); + if (align == 'right') { + left = start - this.width; + } + else if (align == 'left') { + left = start; + } + else { + // default or 'center' + left = start - this.width / 2; + } + changed += update(this, 'left', left); + + changed += update(props.line, 'left', start - props.line.width / 2); + changed += update(props.dot, 'left', start - props.dot.width / 2); + changed += update(props.dot, 'top', -props.dot.height / 2); + if (orientation == 'top') { + top = margin; + + changed += update(this, 'top', top); + } + else { + // default or 'bottom' + var parentHeight = this.parent.height; + top = parentHeight - this.height - margin; + + changed += update(this, 'top', top); + } + } + else { + changed += 1; + } + } + + return (changed > 0); +}; + +/** + * Create an items DOM + * @private + */ +ItemBox.prototype._create = function _create() { + var dom = this.dom; + if (!dom) { + this.dom = dom = {}; + + // create the box + dom.box = document.createElement('DIV'); + // className is updated in repaint() + + // contents box (inside the background box). used for making margins + dom.content = document.createElement('DIV'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); + + // line to axis + dom.line = document.createElement('DIV'); + dom.line.className = 'line'; + + // dot on axis + dom.dot = document.createElement('DIV'); + dom.dot.className = 'dot'; + } +}; + +/** + * Reposition the item, recalculate its left, top, and width, using the current + * range and size of the items itemset + * @override + */ +ItemBox.prototype.reposition = function reposition() { + var dom = this.dom, + props = this.props, + orientation = this.options.orientation || this.defaultOptions.orientation; + + if (dom) { + var box = dom.box, + line = dom.line, + dot = dom.dot; + + box.style.left = this.left + 'px'; + box.style.top = this.top + 'px'; + + line.style.left = props.line.left + 'px'; + if (orientation == 'top') { + line.style.top = 0 + 'px'; + line.style.height = this.top + 'px'; + } + else { + // orientation 'bottom' + line.style.top = (this.top + this.height) + 'px'; + line.style.height = Math.max(this.parent.height - this.top - this.height + + this.props.dot.height / 2, 0) + 'px'; + } + + dot.style.left = props.dot.left + 'px'; + dot.style.top = props.dot.top + 'px'; + } +}; + +/** + * @constructor ItemPoint + * @extends Item + * @param {ItemSet} parent + * @param {Object} data Object containing parameters start + * content, className. + * @param {Object} [options] Options to set initial property values + * @param {Object} [defaultOptions] default options + * // TODO: describe available options + */ +function ItemPoint (parent, data, options, defaultOptions) { + this.props = { + dot: { + top: 0, + width: 0, + height: 0 + }, + content: { + height: 0, + marginLeft: 0 + } + }; + + Item.call(this, parent, data, options, defaultOptions); +} + +ItemPoint.prototype = new Item (null, null); + +/** + * Select the item + * @override + */ +ItemPoint.prototype.select = function select() { + this.selected = true; + // TODO: select and unselect +}; + +/** + * Unselect the item + * @override + */ +ItemPoint.prototype.unselect = function unselect() { + this.selected = false; + // TODO: select and unselect +}; + +/** + * Repaint the item + * @return {Boolean} changed + */ +ItemPoint.prototype.repaint = function repaint() { + // TODO: make an efficient repaint + var changed = false; + var dom = this.dom; + + if (!dom) { + this._create(); + dom = this.dom; + changed = true; + } + + if (dom) { + if (!this.parent) { + throw new Error('Cannot repaint item: no parent attached'); + } + var foreground = this.parent.getForeground(); + if (!foreground) { + throw new Error('Cannot repaint time axis: ' + + 'parent has no foreground container element'); + } + + if (!dom.point.parentNode) { + foreground.appendChild(dom.point); + foreground.appendChild(dom.point); + changed = true; + } + + // update contents + if (this.data.content != this.content) { + this.content = this.data.content; + if (this.content instanceof Element) { + dom.content.innerHTML = ''; + dom.content.appendChild(this.content); + } + else if (this.data.content != undefined) { + dom.content.innerHTML = this.content; + } + else { + throw new Error('Property "content" missing in item ' + this.data.id); + } + changed = true; + } + + // update class + var className = (this.data.className? ' ' + this.data.className : '') + + (this.selected ? ' selected' : ''); + if (this.className != className) { + this.className = className; + dom.point.className = 'item point' + className; + changed = true; + } + } + + return changed; +}; + +/** + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. + * @return {Boolean} changed + */ +ItemPoint.prototype.show = function show() { + if (!this.dom || !this.dom.point.parentNode) { + return this.repaint(); + } + else { + return false; + } +}; + +/** + * Hide the item from the DOM (when visible) + * @return {Boolean} changed + */ +ItemPoint.prototype.hide = function hide() { + var changed = false, + dom = this.dom; + if (dom) { + if (dom.point.parentNode) { + dom.point.parentNode.removeChild(dom.point); + changed = true; + } + } + return changed; +}; + +/** + * Reflow the item: calculate its actual size from the DOM + * @return {boolean} resized returns true if the axis is resized + * @override + */ +ItemPoint.prototype.reflow = function reflow() { + var changed = 0, + update, + dom, + props, + options, + margin, + orientation, + start, + top, + data, + range; + + if (this.data.start == undefined) { + throw new Error('Property "start" missing in item ' + this.data.id); + } + + data = this.data; + range = this.parent && this.parent.range; + if (data && range) { + // TODO: account for the width of the item. Take some margin + this.visible = (data.start > range.start) && (data.start < range.end); + } + else { + this.visible = false; + } + + if (this.visible) { + dom = this.dom; + if (dom) { + update = util.updateProperty; + props = this.props; + options = this.options; + orientation = options.orientation || this.defaultOptions.orientation; + margin = options.margin && options.margin.axis || this.defaultOptions.margin.axis; + start = this.parent.toScreen(this.data.start); + + changed += update(this, 'width', dom.point.offsetWidth); + changed += update(this, 'height', dom.point.offsetHeight); + changed += update(props.dot, 'width', dom.dot.offsetWidth); + changed += update(props.dot, 'height', dom.dot.offsetHeight); + changed += update(props.content, 'height', dom.content.offsetHeight); + + if (orientation == 'top') { + top = margin; + } + else { + // default or 'bottom' + var parentHeight = this.parent.height; + top = Math.max(parentHeight - this.height - margin, 0); + } + changed += update(this, 'top', top); + changed += update(this, 'left', start - props.dot.width / 2); + changed += update(props.content, 'marginLeft', 1.5 * props.dot.width); + //changed += update(props.content, 'marginRight', 0.5 * props.dot.width); // TODO + + changed += update(props.dot, 'top', (this.height - props.dot.height) / 2); + } + else { + changed += 1; + } + } + + return (changed > 0); +}; + +/** + * Create an items DOM + * @private + */ +ItemPoint.prototype._create = function _create() { + var dom = this.dom; + if (!dom) { + this.dom = dom = {}; + + // background box + dom.point = document.createElement('div'); + // className is updated in repaint() + + // contents box, right from the dot + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.point.appendChild(dom.content); + + // dot at start + dom.dot = document.createElement('div'); + dom.dot.className = 'dot'; + dom.point.appendChild(dom.dot); + } +}; + +/** + * Reposition the item, recalculate its left, top, and width, using the current + * range and size of the items itemset + * @override + */ +ItemPoint.prototype.reposition = function reposition() { + var dom = this.dom, + props = this.props; + + if (dom) { + dom.point.style.top = this.top + 'px'; + dom.point.style.left = this.left + 'px'; + + dom.content.style.marginLeft = props.content.marginLeft + 'px'; + //dom.content.style.marginRight = props.content.marginRight + 'px'; // TODO + + dom.dot.style.top = props.dot.top + 'px'; + } +}; + +/** + * @constructor ItemRange + * @extends Item + * @param {ItemSet} parent + * @param {Object} data Object containing parameters start, end + * content, className. + * @param {Object} [options] Options to set initial property values + * @param {Object} [defaultOptions] default options + * // TODO: describe available options + */ +function ItemRange (parent, data, options, defaultOptions) { + this.props = { + content: { + left: 0, + width: 0 + } + }; + + Item.call(this, parent, data, options, defaultOptions); +} + +ItemRange.prototype = new Item (null, null); + +/** + * Select the item + * @override + */ +ItemRange.prototype.select = function select() { + this.selected = true; + // TODO: select and unselect +}; + +/** + * Unselect the item + * @override + */ +ItemRange.prototype.unselect = function unselect() { + this.selected = false; + // TODO: select and unselect +}; + +/** + * Repaint the item + * @return {Boolean} changed + */ +ItemRange.prototype.repaint = function repaint() { + // TODO: make an efficient repaint + var changed = false; + var dom = this.dom; + + if (!dom) { + this._create(); + dom = this.dom; + changed = true; + } + + if (dom) { + if (!this.parent) { + throw new Error('Cannot repaint item: no parent attached'); + } + var foreground = this.parent.getForeground(); + if (!foreground) { + throw new Error('Cannot repaint time axis: ' + + 'parent has no foreground container element'); + } + + if (!dom.box.parentNode) { + foreground.appendChild(dom.box); + changed = true; + } + + // update content + if (this.data.content != this.content) { + this.content = this.data.content; + if (this.content instanceof Element) { + dom.content.innerHTML = ''; + dom.content.appendChild(this.content); + } + else if (this.data.content != undefined) { + dom.content.innerHTML = this.content; + } + else { + throw new Error('Property "content" missing in item ' + this.data.id); + } + changed = true; + } + + // update class + var className = this.data.className ? ('' + this.data.className) : ''; + if (this.className != className) { + this.className = className; + dom.box.className = 'item range' + className; + changed = true; + } + } + + return changed; +}; + +/** + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. + * @return {Boolean} changed + */ +ItemRange.prototype.show = function show() { + if (!this.dom || !this.dom.box.parentNode) { + return this.repaint(); + } + else { + return false; + } +}; + +/** + * Hide the item from the DOM (when visible) + * @return {Boolean} changed + */ +ItemRange.prototype.hide = function hide() { + var changed = false, + dom = this.dom; + if (dom) { + if (dom.box.parentNode) { + dom.box.parentNode.removeChild(dom.box); + changed = true; + } + } + return changed; +}; + +/** + * Reflow the item: calculate its actual size from the DOM + * @return {boolean} resized returns true if the axis is resized + * @override + */ +ItemRange.prototype.reflow = function reflow() { + var changed = 0, + dom, + props, + options, + margin, + padding, + parent, + start, + end, + data, + range, + update, + box, + parentWidth, + contentLeft, + orientation, + top; + + if (this.data.start == undefined) { + throw new Error('Property "start" missing in item ' + this.data.id); + } + if (this.data.end == undefined) { + throw new Error('Property "end" missing in item ' + this.data.id); + } + + data = this.data; + range = this.parent && this.parent.range; + if (data && range) { + // TODO: account for the width of the item. Take some margin + this.visible = (data.start < range.end) && (data.end > range.start); + } + else { + this.visible = false; + } + + if (this.visible) { + dom = this.dom; + if (dom) { + props = this.props; + options = this.options; + parent = this.parent; + start = parent.toScreen(this.data.start); + end = parent.toScreen(this.data.end); + update = util.updateProperty; + box = dom.box; + parentWidth = parent.width; + orientation = options.orientation || this.defaultOptions.orientation; + margin = options.margin && options.margin.axis || this.defaultOptions.margin.axis; + padding = options.padding || this.defaultOptions.padding; + + changed += update(props.content, 'width', dom.content.offsetWidth); + + changed += update(this, 'height', box.offsetHeight); + + // limit the width of the this, as browsers cannot draw very wide divs + if (start < -parentWidth) { + start = -parentWidth; + } + if (end > 2 * parentWidth) { + end = 2 * parentWidth; + } + + // when range exceeds left of the window, position the contents at the left of the visible area + if (start < 0) { + contentLeft = Math.min(-start, + (end - start - props.content.width - 2 * padding)); + // TODO: remove the need for options.padding. it's terrible. + } + else { + contentLeft = 0; + } + changed += update(props.content, 'left', contentLeft); + + if (orientation == 'top') { + top = margin; + changed += update(this, 'top', top); + } + else { + // default or 'bottom' + top = parent.height - this.height - margin; + changed += update(this, 'top', top); + } + + changed += update(this, 'left', start); + changed += update(this, 'width', Math.max(end - start, 1)); // TODO: reckon with border width; + } + else { + changed += 1; + } + } + + return (changed > 0); +}; + +/** + * Create an items DOM + * @private + */ +ItemRange.prototype._create = function _create() { + var dom = this.dom; + if (!dom) { + this.dom = dom = {}; + // background box + dom.box = document.createElement('div'); + // className is updated in repaint() + + // contents box + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); + } +}; + +/** + * Reposition the item, recalculate its left, top, and width, using the current + * range and size of the items itemset + * @override + */ +ItemRange.prototype.reposition = function reposition() { + var dom = this.dom, + props = this.props; + + if (dom) { + dom.box.style.top = this.top + 'px'; + dom.box.style.left = this.left + 'px'; + dom.box.style.width = this.width + 'px'; + + dom.content.style.left = props.content.left + 'px'; + } +}; + +/** + * @constructor Group + * @param {GroupSet} parent + * @param {Number | String} groupId + * @param {Object} [options] Options to set initial property values + * // TODO: describe available options + * @extends Component + */ +function Group (parent, groupId, options) { + this.id = util.randomUUID(); + this.parent = parent; + + this.groupId = groupId; + this.itemsData = null; // DataSet + this.itemset = null; // ItemSet + this.options = options || {}; + this.options.top = 0; + + this.top = 0; + this.left = 0; + this.width = 0; + this.height = 0; +} + +Group.prototype = new Component(); + +// TODO: comment +Group.prototype.setOptions = Component.prototype.setOptions; + +/** + * Get the container element of the panel, which can be used by a child to + * add its own widgets. + * @returns {HTMLElement} container + */ +Group.prototype.getContainer = function () { + return this.parent.getContainer(); +}; + +/** + * Set item set for the group. The group will create a view on the itemset, + * filtered by the groups id. + * @param {DataSet | DataView} items + */ +Group.prototype.setItems = function setItems(items) { + if (this.itemset) { + // remove current item set + this.itemset.hide(); + this.itemset.setItems(); + + this.parent.controller.remove(this.itemset); + this.itemset = null; + } + + if (items) { + var groupId = this.groupId; + + var itemsetOptions = Object.create(this.options); + this.itemset = new ItemSet(this, null, itemsetOptions); + this.itemset.setRange(this.parent.range); + + this.view = new DataView(items, { + filter: function (item) { + return item.group == groupId; + } + }); + this.itemset.setItems(this.view); + + this.parent.controller.add(this.itemset); + } +}; + +/** + * Repaint the item + * @return {Boolean} changed + */ +Group.prototype.repaint = function repaint() { + return false; +}; + +/** + * Reflow the item + * @return {Boolean} resized + */ +Group.prototype.reflow = function reflow() { + var changed = 0, + update = util.updateProperty; + + changed += update(this, 'top', this.itemset ? this.itemset.top : 0); + changed += update(this, 'height', this.itemset ? this.itemset.height : 0); + + return (changed > 0); +}; + +/** + * An GroupSet holds a set of groups + * @param {Component} parent + * @param {Component[]} [depends] Components on which this components depends + * (except for the parent) + * @param {Object} [options] See GroupSet.setOptions for the available + * options. + * @constructor GroupSet + * @extends Panel + */ +function GroupSet(parent, depends, options) { + this.id = util.randomUUID(); + this.parent = parent; + this.depends = depends; + + this.options = options || {}; + + this.range = null; // Range or Object {start: number, end: number} + this.itemsData = null; // DataSet with items + this.groupsData = null; // DataSet with groups + + this.groups = {}; // map with groups + + // changes in groups are queued key/value map containing id/action + this.queue = {}; + + var me = this; + this.listeners = { + 'add': function (event, params) { + me._onAdd(params.items); + }, + 'update': function (event, params) { + me._onUpdate(params.items); + }, + 'remove': function (event, params) { + me._onRemove(params.items); + } + }; +} + +GroupSet.prototype = new Panel(); + +/** + * Set options for the GroupSet. Existing options will be extended/overwritten. + * @param {Object} [options] The following options are available: + * {String | function} groupsOrder + * TODO: describe options + */ +GroupSet.prototype.setOptions = Component.prototype.setOptions; + +GroupSet.prototype.setRange = function (range) { + // TODO: implement setRange +}; + +/** + * Set items + * @param {vis.DataSet | null} items + */ +GroupSet.prototype.setItems = function setItems(items) { + this.itemsData = items; + + for (var id in this.groups) { + if (this.groups.hasOwnProperty(id)) { + var group = this.groups[id]; + group.setItems(items); + } + } +}; + +/** + * Get items + * @return {vis.DataSet | null} items + */ +GroupSet.prototype.getItems = function getItems() { + return this.itemsData; +}; + +/** + * Set range (start and end). + * @param {Range | Object} range A Range or an object containing start and end. + */ +GroupSet.prototype.setRange = function setRange(range) { + this.range = range; +}; + +/** + * Set groups + * @param {vis.DataSet} groups + */ +GroupSet.prototype.setGroups = function setGroups(groups) { + var me = this, + ids; + + // unsubscribe from current dataset + if (this.groupsData) { + util.forEach(this.listeners, function (callback, event) { + me.groupsData.unsubscribe(event, callback); + }); + + // remove all drawn groups + ids = this.groupsData.getIds(); + this._onRemove(ids); + } + + // replace the dataset + if (!groups) { + this.groupsData = null; + } + else if (groups instanceof DataSet) { + this.groupsData = groups; + } + else { + this.groupsData = new DataSet({ + fieldTypes: { + start: 'Date', + end: 'Date' + } + }); + this.groupsData.add(groups); + } + + if (this.groupsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.listeners, function (callback, event) { + me.groupsData.subscribe(event, callback, id); + }); + + // draw all new groups + ids = this.groupsData.getIds(); + this._onAdd(ids); + } +}; + +/** + * Get groups + * @return {vis.DataSet | null} groups + */ +GroupSet.prototype.getGroups = function getGroups() { + return this.groupsData; +}; + +/** + * Repaint the component + * @return {Boolean} changed + */ +GroupSet.prototype.repaint = function repaint() { + var changed = 0, + update = util.updateProperty, + asSize = util.option.asSize, + options = this.options, + frame = this.frame; + + if (!frame) { + frame = document.createElement('div'); + frame.className = 'groupset'; + + var className = options.className; + if (className) { + util.addClassName(frame, util.option.asString(className)); + } + + this.frame = frame; + changed += 1; + } + + if (!this.parent) { + throw new Error('Cannot repaint groupset: no parent attached'); + } + var parentContainer = this.parent.getContainer(); + if (!parentContainer) { + throw new Error('Cannot repaint groupset: parent has no container element'); + } + if (!frame.parentNode) { + parentContainer.appendChild(frame); + changed += 1; + } + + // reposition frame + changed += update(frame.style, 'height', asSize(options.height, this.height + 'px')); + changed += update(frame.style, 'top', asSize(options.top, '0px')); + changed += update(frame.style, 'left', asSize(options.left, '0px')); + changed += update(frame.style, 'width', asSize(options.width, '100%')); + + var me = this, + queue = this.queue, + groups = this.groups, + groupsData = this.groupsData; + + // show/hide added/changed/removed items + var ids = Object.keys(queue); + if (ids.length) { + ids.forEach(function (id) { + var action = queue[id]; + var group = groups[id]; + + //noinspection FallthroughInSwitchStatementJS + switch (action) { + case 'add': + case 'update': + if (!group) { + var groupOptions = Object.create(me.options); + group = new Group(me, id, groupOptions); + group.setItems(me.itemsData); // attach items data + groups[id] = group; + + me.controller.add(group); + } + + // TODO: update group data + group.data = groupsData.get(id); + + delete queue[id]; + break; + + case 'remove': + if (group) { + group.setItems(); // detach items data + delete groups[id]; + + me.controller.remove(group); + } + + // update lists + delete queue[id]; + break; + + default: + console.log('Error: unknown action "' + action + '"'); + } + }); + + // the groupset depends on each of the groups + //this.depends = this.groups; // TODO: gives a circular reference through the parent + + // TODO: apply dependencies of the groupset + + // update the top positions of the groups in the correct order + var orderedGroups = this.groupsData.getIds({ + order: this.options.groupsOrder + }); + for (var i = 0; i < orderedGroups.length; i++) { + (function (group, prevGroup) { + var top = 0; + if (prevGroup) { + top = function () { + // TODO: top must reckon with options.maxHeight + return prevGroup.top + prevGroup.height; + } + } + group.setOptions({ + top: top + }); + })(groups[orderedGroups[i]], groups[orderedGroups[i - 1]]); + } + + changed++; + } + + return (changed > 0); +}; + +/** + * Get container element + * @return {HTMLElement} container + */ +GroupSet.prototype.getContainer = function getContainer() { + // TODO: replace later on with container element for holding itemsets + return this.frame; +}; + +/** + * Reflow the component + * @return {Boolean} resized + */ +GroupSet.prototype.reflow = function reflow() { + var changed = 0, + options = this.options, + update = util.updateProperty, + asNumber = util.option.asNumber, + asSize = util.option.asSize, + frame = this.frame; + + if (frame) { + var maxHeight = asNumber(options.maxHeight); + var fixedHeight = (asSize(options.height) != null); + var height; + if (fixedHeight) { + height = frame.offsetHeight; + } + else { + // height is not specified, calculate the sum of the height of all groups + height = 0; + + for (var id in this.groups) { + if (this.groups.hasOwnProperty(id)) { + var group = this.groups[id]; + height += group.height; + } + } + } + if (maxHeight != null) { + height = Math.min(height, maxHeight); + } + changed += update(this, 'height', height); + + changed += update(this, 'top', frame.offsetTop); + changed += update(this, 'left', frame.offsetLeft); + changed += update(this, 'width', frame.offsetWidth); + } + + return (changed > 0); +}; + +/** + * Hide the component from the DOM + * @return {Boolean} changed + */ +GroupSet.prototype.hide = function hide() { + if (this.frame && this.frame.parentNode) { + this.frame.parentNode.removeChild(this.frame); + return true; + } + else { + return false; + } +}; + +/** + * Show the component in the DOM (when not already visible). + * A repaint will be executed when the component is not visible + * @return {Boolean} changed + */ +GroupSet.prototype.show = function show() { + if (!this.frame || !this.frame.parentNode) { + return this.repaint(); + } + else { + return false; + } +}; + +/** + * Handle updated groups + * @param {Number[]} ids + * @private + */ +GroupSet.prototype._onUpdate = function _onUpdate(ids) { + this._toQueue(ids, 'update'); +}; + +/** + * Handle changed groups + * @param {Number[]} ids + * @private + */ +GroupSet.prototype._onAdd = function _onAdd(ids) { + this._toQueue(ids, 'add'); +}; + +/** + * Handle removed groups + * @param {Number[]} ids + * @private + */ +GroupSet.prototype._onRemove = function _onRemove(ids) { + this._toQueue(ids, 'remove'); +}; + +/** + * Put groups in the queue to be added/updated/remove + * @param {Number[]} ids + * @param {String} action can be 'add', 'update', 'remove' + */ +GroupSet.prototype._toQueue = function _toQueue(ids, action) { + var queue = this.queue; + ids.forEach(function (id) { + queue[id] = action; + }); + + if (this.controller) { + //this.requestReflow(); + this.requestRepaint(); + } +}; + +/** + * Create a timeline visualization + * @param {HTMLElement} container + * @param {vis.DataSet | Array | DataTable} [items] + * @param {Object} [options] See Timeline.setOptions for the available options. + * @constructor + */ +function Timeline (container, items, options) { + var me = this; + this.options = util.extend({ + orientation: 'bottom', + min: null, + max: null, + zoomMin: 10, // milliseconds + zoomMax: 1000 * 60 * 60 * 24 * 365 * 10000, // milliseconds + // moveable: true, // TODO: option moveable + // zoomable: true, // TODO: option zoomable + showMinorLabels: true, + showMajorLabels: true, + autoResize: false + }, options); + + // controller + this.controller = new Controller(); + + // root panel + if (!container) { + throw new Error('No container element provided'); + } + var mainOptions = Object.create(this.options); + mainOptions.height = function () { + if (me.options.height) { + // fixed height + return me.options.height; + } + else { + // auto height + return me.timeaxis.height + me.content.height; + } + }; + this.root = new RootPanel(container, mainOptions); + this.controller.add(this.root); + + // range + var now = moment().hours(0).minutes(0).seconds(0).milliseconds(0); + this.range = new Range({ + start: now.clone().add('days', -3).valueOf(), + end: now.clone().add('days', 4).valueOf() + }); + // TODO: reckon with options moveable and zoomable + this.range.subscribe(this.root, 'move', 'horizontal'); + this.range.subscribe(this.root, 'zoom', 'horizontal'); + this.range.on('rangechange', function () { + var force = true; + me.controller.requestReflow(force); + }); + this.range.on('rangechanged', function () { + var force = true; + me.controller.requestReflow(force); + }); + + // TODO: put the listeners in setOptions, be able to dynamically change with options moveable and zoomable + + // time axis + var timeaxisOptions = Object.create(mainOptions); + timeaxisOptions.range = this.range; + this.timeaxis = new TimeAxis(this.root, [], timeaxisOptions); + this.timeaxis.setRange(this.range); + this.controller.add(this.timeaxis); + + // create itemset or groupset + this.setGroups(null); + + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet + + // set data + if (items) { + this.setItems(items); + } +} + +/** + * Set options + * @param {Object} options TODO: describe the available options + */ +Timeline.prototype.setOptions = function (options) { + if (options) { + util.extend(this.options, options); + } + + this.controller.reflow(); + this.controller.repaint(); +}; + +/** + * Set items + * @param {vis.DataSet | Array | DataTable | null} items + */ +Timeline.prototype.setItems = function(items) { + var initialLoad = (this.itemsData == null); + + // convert to type DataSet when needed + var newItemSet; + if (!items) { + newItemSet = null; + } + else if (items instanceof DataSet) { + newItemSet = items; + } + if (!(items instanceof DataSet)) { + newItemSet = new DataSet({ + fieldTypes: { + start: 'Date', + end: 'Date' + } + }); + newItemSet.add(items); + } + + // set items + this.itemsData = newItemSet; + this.content.setItems(newItemSet); + + if (initialLoad && (this.options.start == undefined || this.options.end == undefined)) { + // apply the data range as range + var dataRange = this.getItemRange(); + + // add 5% on both sides + var min = dataRange.min; + var max = dataRange.max; + if (min != null && max != null) { + var interval = (max.valueOf() - min.valueOf()); + min = new Date(min.valueOf() - interval * 0.05); + max = new Date(max.valueOf() + interval * 0.05); + } + + // override specified start and/or end date + if (this.options.start != undefined) { + min = new Date(this.options.start.valueOf()); + } + if (this.options.end != undefined) { + max = new Date(this.options.end.valueOf()); + } + + // apply range if there is a min or max available + if (min != null || max != null) { + this.range.setRange(min, max); + } + } +}; + +/** + * Set groups + * @param {vis.DataSet | Array | DataTable} groups + */ +Timeline.prototype.setGroups = function(groups) { + var me = this; + this.groupsData = groups; + + // switch content type between ItemSet or GroupSet when needed + var type = this.groupsData ? GroupSet : ItemSet; + if (!(this.content instanceof type)) { + // remove old content set + if (this.content) { + this.content.hide(); + if (this.content.setItems) { + this.content.setItems(); // disconnect from items + } + if (this.content.setGroups) { + this.content.setGroups(); // disconnect from groups + } + this.controller.remove(this.content); + } + + // create new content set + var options = Object.create(this.options); + util.extend(options, { + top: function () { + if (me.options.orientation == 'top') { + return me.timeaxis.height; + } + else { + return me.root.height - me.timeaxis.height - me.content.height; + } + }, + height: function () { + if (me.options.height) { + return me.root.height - me.timeaxis.height; + } + else { + return null; + } + }, + maxHeight: function () { + if (me.options.maxHeight) { + if (!util.isNumber(me.options.maxHeight)) { + throw new TypeError('Number expected for property maxHeight'); + } + return me.options.maxHeight - me.timeaxis.height; + } + else { + return null; + } + } + }); + this.content = new type(this.root, [this.timeaxis], options); + if (this.content.setRange) { + this.content.setRange(this.range); + } + if (this.content.setItems) { + this.content.setItems(this.itemsData); + } + if (this.content.setGroups) { + this.content.setGroups(this.groupsData); + } + this.controller.add(this.content); + } +}; + +/** + * Get the data range of the item set. + * @returns {{min: Date, max: Date}} range A range with a start and end Date. + * When no minimum is found, min==null + * When no maximum is found, max==null + */ +Timeline.prototype.getItemRange = function getItemRange() { + // calculate min from start filed + var itemsData = this.itemsData, + min = null, + max = null; + + if (itemsData) { + // calculate the minimum value of the field 'start' + var minItem = itemsData.min('start'); + min = minItem ? minItem.start.valueOf() : null; + + // calculate maximum value of fields 'start' and 'end' + var maxStartItem = itemsData.max('start'); + if (maxStartItem) { + max = maxStartItem.start.valueOf(); + } + var maxEndItem = itemsData.max('end'); + if (maxEndItem) { + if (max == null) { + max = maxEndItem.end.valueOf(); + } + else { + max = Math.max(max, maxEndItem.end.valueOf()); + } + } + } + + return { + min: (min != null) ? new Date(min) : null, + max: (max != null) ? new Date(max) : null + }; +}; + +(function(exports) { + /** + * Parse a text source containing data in DOT language into a JSON object. + * The object contains two lists: one with nodes and one with edges. + * @param {String} data Text containing a graph in DOT-notation + * @return {Object} graph An object containing two parameters: + * {Object[]} nodes + * {Object[]} edges + */ + function parseDOT (data) { + dot = data; + return parseGraph(); + } + + // token types enumeration + var TOKENTYPE = { + NULL : 0, + DELIMITER : 1, + IDENTIFIER: 2, + UNKNOWN : 3 + }; + + // map with all delimiters + var DELIMITERS = { + '{': true, + '}': true, + '[': true, + ']': true, + ';': true, + '=': true, + ',': true, + + '->': true, + '--': true + }; + + var dot = ''; // current dot file + var index = 0; // current index in dot file + var c = ''; // current token character in expr + var token = ''; // current token + var tokenType = TOKENTYPE.NULL; // type of the token + + var graph = null; // object with the graph to be build + var nodeAttr = null; // global node attributes + var edgeAttr = null; // global edge attributes + + /** + * Get the first character from the dot file. + * The character is stored into the char c. If the end of the dot file is + * reached, the function puts an empty string in c. + */ + function first() { + index = 0; + c = dot.charAt(0); + } + + /** + * Get the next character from the dot file. + * The character is stored into the char c. If the end of the dot file is + * reached, the function puts an empty string in c. + */ + function next() { + index++; + c = dot.charAt(index); + } + + /** + * Preview the next character from the dot file. + * @return {String} cNext + */ + function nextPreview() { + return dot.charAt(index + 1); + } + + /** + * Test whether given character is alphabetic or numeric + * @param {String} c + * @return {Boolean} isAlphaNumeric + */ + var regexAlphaNumeric = /[a-zA-Z_0-9.#]/; + function isAlphaNumeric(c) { + return regexAlphaNumeric.test(c); + } + + /** + * Merge all properties of object b into object b + * @param {Object} a + * @param {Object} b + * @return {Object} a + */ + function merge (a, b) { + if (!a) { + a = {}; + } + + if (b) { + for (var name in b) { + if (b.hasOwnProperty(name)) { + a[name] = b[name]; + } + } + } + return a; + } + + /** + * Add a node to the current graph object. If there is already a node with + * the same id, their attributes will be merged. + * @param {Object} node + */ + function addNode(node) { + if (!graph.nodes) { + graph.nodes = {}; + } + var current = graph.nodes[node.id]; + if (current) { + // merge attributes + if (node.attr) { + current.attr = merge(current.attr, node.attr); + } + } + else { + // add + graph.nodes[node.id] = node; + if (nodeAttr) { + var attr = merge({}, nodeAttr); // clone global attributes + node.attr = merge(attr, node.attr); // merge attributes + } + } + } + + /** + * Add an edge to the current graph obect + * @param {Object} edge + */ + function addEdge(edge) { + if (!graph.edges) { + graph.edges = []; + } + graph.edges.push(edge); + if (edgeAttr) { + var attr = merge({}, edgeAttr); // clone global attributes + edge.attr = merge(attr, edge.attr); // merge attributes + } + } + + /** + * Get next token in the current dot file. + * The token and token type are available as token and tokenType + */ + function getToken() { + tokenType = TOKENTYPE.NULL; + token = ''; + + // skip over whitespaces + while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { // space, tab, enter + next(); + } + + do { + var isComment = false; + + // skip comment + if (c == '#') { + // find the previous non-space character + var i = index - 1; + while (dot.charAt(i) == ' ' || dot.charAt(i) == '\t') { + i--; + } + if (dot.charAt(i) == '\n' || dot.charAt(i) == '') { + // the # is at the start of a line, this is indeed a line comment + while (c != '' && c != '\n') { + next(); + } + isComment = true; + } + } + if (c == '/' && nextPreview() == '/') { + // skip line comment + while (c != '' && c != '\n') { + next(); + } + isComment = true; + } + if (c == '/' && nextPreview() == '*') { + // skip block comment + while (c != '') { + if (c == '*' && nextPreview() == '/') { + // end of block comment found. skip these last two characters + next(); + next(); + break; + } + else { + next(); + } + } + isComment = true; + } + + // skip over whitespaces + while (c == ' ' || c == '\t' || c == '\n' || c == '\r') { // space, tab, enter + next(); + } + } + while (isComment); + + // check for end of dot file + if (c == '') { + // token is still empty + tokenType = TOKENTYPE.DELIMITER; + return; + } + + // check for delimiters consisting of 2 characters + var c2 = c + nextPreview(); + if (DELIMITERS[c2]) { + tokenType = TOKENTYPE.DELIMITER; + token = c2; + next(); + next(); + return; + } + + // check for delimiters consisting of 1 character + if (DELIMITERS[c]) { + tokenType = TOKENTYPE.DELIMITER; + token = c; + next(); + return; + } + + // check for an identifier (number or string) + // TODO: more precise parsing of numbers/strings + if (isAlphaNumeric(c) || c == '-') { + token += c; + next(); + + while (isAlphaNumeric(c)) { + token += c; + next(); + } + if (token == 'false') { + token = false; // cast to boolean + } + else if (token == 'true') { + token = true; // cast to boolean + } + else if (!isNaN(Number(token))) { + token = Number(token); // cast to number + } + tokenType = TOKENTYPE.IDENTIFIER; + return; + } + + // check for a string enclosed by double quotes + if (c == '"') { + next(); + while (c != '' && (c != '"' || (c == '"' && nextPreview() == '"'))) { + token += c; + if (c == '"') { // skip the escape character + next(); + } + next(); + } + if (c != '"') { + throw newSyntaxError('End of string " expected'); + } + next(); + tokenType = TOKENTYPE.IDENTIFIER; + return; + } + + // something unknown is found, wrong characters, a syntax error + tokenType = TOKENTYPE.UNKNOWN; + while (c != '') { + token += c; + next(); + } + throw new SyntaxError('Syntax error in part "' + chop(token, 30) + '"'); + } + + /** + * Parse a graph. + * @returns {Object} graph + */ + function parseGraph() { + graph = {}; + nodeAttr = null; + edgeAttr = null; + + first(); + getToken(); + + // optional strict keyword + if (token == 'strict') { + graph.strict = true; + getToken(); + } + + // graph or digraph keyword + if (token == 'graph' || token == 'digraph') { + graph.type = token; + getToken(); + } + + // graph id + if (tokenType == TOKENTYPE.IDENTIFIER) { + graph.id = token; + getToken(); + } + + // open angle bracket + if (token != '{') { + throw newSyntaxError('Angle bracket { expected'); + } + getToken(); + + // statements + parseStatements(); + + // close angle bracket + if (token != '}') { + throw newSyntaxError('Angle bracket } expected'); + } + getToken(); + + // end of file + if (token !== '') { + throw newSyntaxError('End of file expected'); + } + getToken(); + + return graph; + } + + /** + * Parse a list with statements. + */ + function parseStatements () { + while (token !== '' && token != '}') { + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Identifier expected'); + } + + parseStatement(); + if (token == ';') { + getToken(); + } + } + } + + /** + * Parse a single statement. Can be a an attribute statement, node + * statement, a series of node statements and edge statements, or a + * parameter. + */ + function parseStatement() { + var attr; + var id = token; // can be as string or a number + getToken(); + + // attribute statements + if (id == 'node') { + // node attributes + attr = parseAttributes(); + if (attr) { + nodeAttr = merge(nodeAttr, attr); + } + } + else if (id == 'edge') { + // edge attributes + attr = parseAttributes(); + if (attr) { + edgeAttr = merge(edgeAttr, attr); + } + } + else if (id == 'graph') { + // graph attributes + attr = parseAttributes(); + if (attr) { + graph.attr = merge(graph.attr, attr); + } + } + else { + if (token == '=') { + // id statement + getToken(); + if (!graph.attr) { + graph.attr = {}; + } + graph.attr[id] = token; + getToken(); + } + else { + // node statement + var node = { + id: String(id) + }; + attr = parseAttributes(); + if (attr) { + node.attr = attr; + } + addNode(node); + + // edge statements + var from = id; + while (token == '->' || token == '--') { + var type = token; + getToken(); + + var to = token; + addNode({ + id: String(to) + }); + getToken(); + attr = parseAttributes(); + + // create edge + var edge = { + from: String(from), + to: String(to), + type: type + }; + if (attr) { + edge.attr = attr; + } + addEdge(edge); + + from = to; + } + } + } + } + + /** + * Parse a set with attributes, + * for example [label="1.000", shape=solid] + * @return {Object | undefined} attr + */ + function parseAttributes() { + if (token == '[') { + getToken(); + var attr = {}; + while (token !== '' && token != ']') { + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Attribute name expected'); + } + var name = token; + + getToken(); + if (token != '=') { + throw newSyntaxError('Equal sign = expected'); + } + getToken(); + + if (tokenType != TOKENTYPE.IDENTIFIER) { + throw newSyntaxError('Attribute value expected'); + } + var value = token; + attr[name] = value; + + getToken(); + if (token ==',') { + getToken(); + } + } + getToken(); + + return attr; + } + else { + return undefined; + } + } + + /** + * Create a syntax error with extra information on current token and index. + * @param {String} message + * @returns {SyntaxError} err + */ + function newSyntaxError(message) { + return new SyntaxError(message + ', got "' + chop(token, 30) + '" (char ' + index + ')'); + } + + /** + * Chop off text after a maximum length + * @param {String} text + * @param {Number} maxLength + * @returns {String} + */ + function chop (text, maxLength) { + return (text.length <= maxLength) ? text : (text.substr(0, 27) + '...'); + } + + /** + * Convert a string containing a graph in DOT language into a map containing + * with nodes and edges in the format of graph. + * @param {String} data Text containing a graph in DOT-notation + * @return {Object} graphData + */ + function DOTToGraph (data) { + // parse the DOT file + var dotData = parseDOT(data); + var graphData = { + nodes: [], + edges: [], + options: {} + }; + + // copy the nodes + if (dotData.nodes) { + for (var id in dotData.nodes) { + if (dotData.nodes.hasOwnProperty(id)) { + var node = { + id: id, + label: id + }; + merge(node, dotData.nodes[id].attr); + if (node.image) { + node.shape = 'image'; + } + graphData.nodes.push(node); + } + } + } + + // copy the edges + if (dotData.edges) { + dotData.edges.forEach(function (dotEdge) { + var graphEdge = { + from: dotEdge.from, + to: dotEdge.to + }; + merge(graphEdge, dotEdge.attr); + graphEdge.style = (dotEdge.type == '->') ? 'arrow' : 'line'; + graphData.edges.push(graphEdge); + }); + } + + // copy the options + if (dotData.attr) { + graphData.options = dotData.attr; + } + + return graphData; + } + + // exports + exports.parseDOT = parseDOT; + exports.DOTToGraph = DOTToGraph; + +})(typeof util !== 'undefined' ? util : exports); + +/** + * Canvas shapes used by the Graph + */ +if (typeof CanvasRenderingContext2D !== 'undefined') { + + /** + * Draw a circle shape + */ + CanvasRenderingContext2D.prototype.circle = function(x, y, r) { + this.beginPath(); + this.arc(x, y, r, 0, 2*Math.PI, false); + }; + + /** + * Draw a square shape + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r size, width and height of the square + */ + CanvasRenderingContext2D.prototype.square = function(x, y, r) { + this.beginPath(); + this.rect(x - r, y - r, r * 2, r * 2); + }; + + /** + * Draw a triangle shape + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius, half the length of the sides of the triangle + */ + CanvasRenderingContext2D.prototype.triangle = function(x, y, r) { + // http://en.wikipedia.org/wiki/Equilateral_triangle + this.beginPath(); + + var s = r * 2; + var s2 = s / 2; + var ir = Math.sqrt(3) / 6 * s; // radius of inner circle + var h = Math.sqrt(s * s - s2 * s2); // height + + this.moveTo(x, y - (h - ir)); + this.lineTo(x + s2, y + ir); + this.lineTo(x - s2, y + ir); + this.lineTo(x, y - (h - ir)); + this.closePath(); + }; + + /** + * Draw a triangle shape in downward orientation + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius + */ + CanvasRenderingContext2D.prototype.triangleDown = function(x, y, r) { + // http://en.wikipedia.org/wiki/Equilateral_triangle + this.beginPath(); + + var s = r * 2; + var s2 = s / 2; + var ir = Math.sqrt(3) / 6 * s; // radius of inner circle + var h = Math.sqrt(s * s - s2 * s2); // height + + this.moveTo(x, y + (h - ir)); + this.lineTo(x + s2, y - ir); + this.lineTo(x - s2, y - ir); + this.lineTo(x, y + (h - ir)); + this.closePath(); + }; + + /** + * Draw a star shape, a star with 5 points + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius, half the length of the sides of the triangle + */ + CanvasRenderingContext2D.prototype.star = function(x, y, r) { + // http://www.html5canvastutorials.com/labs/html5-canvas-star-spinner/ + this.beginPath(); + + for (var n = 0; n < 10; n++) { + var radius = (n % 2 === 0) ? r * 1.3 : r * 0.5; + this.lineTo( + x + radius * Math.sin(n * 2 * Math.PI / 10), + y - radius * Math.cos(n * 2 * Math.PI / 10) + ); + } + + this.closePath(); + }; + + /** + * http://stackoverflow.com/questions/1255512/how-to-draw-a-rounded-rectangle-on-html-canvas + */ + CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) { + var r2d = Math.PI/180; + if( w - ( 2 * r ) < 0 ) { r = ( w / 2 ); } //ensure that the radius isn't too large for x + if( h - ( 2 * r ) < 0 ) { r = ( h / 2 ); } //ensure that the radius isn't too large for y + this.beginPath(); + this.moveTo(x+r,y); + this.lineTo(x+w-r,y); + this.arc(x+w-r,y+r,r,r2d*270,r2d*360,false); + this.lineTo(x+w,y+h-r); + this.arc(x+w-r,y+h-r,r,0,r2d*90,false); + this.lineTo(x+r,y+h); + this.arc(x+r,y+h-r,r,r2d*90,r2d*180,false); + this.lineTo(x,y+r); + this.arc(x+r,y+r,r,r2d*180,r2d*270,false); + }; + + /** + * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + */ + CanvasRenderingContext2D.prototype.ellipse = function(x, y, w, h) { + var kappa = .5522848, + ox = (w / 2) * kappa, // control point offset horizontal + oy = (h / 2) * kappa, // control point offset vertical + xe = x + w, // x-end + ye = y + h, // y-end + xm = x + w / 2, // x-middle + ym = y + h / 2; // y-middle + + this.beginPath(); + this.moveTo(x, ym); + this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + }; + + + + /** + * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + */ + CanvasRenderingContext2D.prototype.database = function(x, y, w, h) { + var f = 1/3; + var wEllipse = w; + var hEllipse = h * f; + + var kappa = .5522848, + ox = (wEllipse / 2) * kappa, // control point offset horizontal + oy = (hEllipse / 2) * kappa, // control point offset vertical + xe = x + wEllipse, // x-end + ye = y + hEllipse, // y-end + xm = x + wEllipse / 2, // x-middle + ym = y + hEllipse / 2, // y-middle + ymb = y + (h - hEllipse/2), // y-midlle, bottom ellipse + yeb = y + h; // y-end, bottom ellipse + + this.beginPath(); + this.moveTo(xe, ym); + + this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + + this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + + this.lineTo(xe, ymb); + + this.bezierCurveTo(xe, ymb + oy, xm + ox, yeb, xm, yeb); + this.bezierCurveTo(xm - ox, yeb, x, ymb + oy, x, ymb); + + this.lineTo(x, ym); + }; + + + /** + * Draw an arrow point (no line) + */ + CanvasRenderingContext2D.prototype.arrow = function(x, y, angle, length) { + // tail + var xt = x - length * Math.cos(angle); + var yt = y - length * Math.sin(angle); + + // inner tail + // TODO: allow to customize different shapes + var xi = x - length * 0.9 * Math.cos(angle); + var yi = y - length * 0.9 * Math.sin(angle); + + // left + var xl = xt + length / 3 * Math.cos(angle + 0.5 * Math.PI); + var yl = yt + length / 3 * Math.sin(angle + 0.5 * Math.PI); + + // right + var xr = xt + length / 3 * Math.cos(angle - 0.5 * Math.PI); + var yr = yt + length / 3 * Math.sin(angle - 0.5 * Math.PI); + + this.beginPath(); + this.moveTo(x, y); + this.lineTo(xl, yl); + this.lineTo(xi, yi); + this.lineTo(xr, yr); + this.closePath(); + }; + + /** + * Sets up the dashedLine functionality for drawing + * Original code came from http://stackoverflow.com/questions/4576724/dotted-stroke-in-canvas + * @author David Jordan + * @date 2012-08-08 + */ + CanvasRenderingContext2D.prototype.dashedLine = function(x,y,x2,y2,dashArray){ + if (!dashArray) dashArray=[10,5]; + if (dashLength==0) dashLength = 0.001; // Hack for Safari + var dashCount = dashArray.length; + this.moveTo(x, y); + var dx = (x2-x), dy = (y2-y); + var slope = dy/dx; + var distRemaining = Math.sqrt( dx*dx + dy*dy ); + var dashIndex=0, draw=true; + while (distRemaining>=0.1){ + var dashLength = dashArray[dashIndex++%dashCount]; + if (dashLength > distRemaining) dashLength = distRemaining; + var xStep = Math.sqrt( dashLength*dashLength / (1 + slope*slope) ); + if (dx<0) xStep = -xStep; + x += xStep; + y += slope*xStep; + this[draw ? 'lineTo' : 'moveTo'](x,y); + distRemaining -= dashLength; + draw = !draw; + } + }; + + // TODO: add diamond shape +} + +/** + * @class Node + * A node. A node can be connected to other nodes via one or multiple edges. + * @param {object} properties An object containing properties for the node. All + * properties are optional, except for the id. + * {number} id Id of the node. Required + * {string} label Text label for the node + * {number} x Horizontal position of the node + * {number} y Vertical position of the node + * {string} shape Node shape, available: + * "database", "circle", "ellipse", + * "box", "image", "text", "dot", + * "star", "triangle", "triangleDown", + * "square" + * {string} image An image url + * {string} title An title text, can be HTML + * {anytype} group A group name or number + * @param {Graph.Images} imagelist A list with images. Only needed + * when the node has an image + * @param {Graph.Groups} grouplist A list with groups. Needed for + * retrieving group properties + * @param {Object} constants An object with default values for + * example for the color + */ +function Node(properties, imagelist, grouplist, constants) { + this.selected = false; + + this.edges = []; // all edges connected to this node + this.group = constants.nodes.group; + + this.fontSize = constants.nodes.fontSize; + this.fontFace = constants.nodes.fontFace; + this.fontColor = constants.nodes.fontColor; + + this.color = constants.nodes.color; + + // set defaults for the properties + this.id = undefined; + this.shape = constants.nodes.shape; + this.image = constants.nodes.image; + this.x = 0; + this.y = 0; + this.xFixed = false; + this.yFixed = false; + this.radius = constants.nodes.radius; + this.radiusFixed = false; + this.radiusMin = constants.nodes.radiusMin; + this.radiusMax = constants.nodes.radiusMax; + + this.imagelist = imagelist; + this.grouplist = grouplist; + + this.setProperties(properties, constants); + + // mass, force, velocity + this.mass = 50; // kg (mass is adjusted for the number of connected edges) + this.fx = 0.0; // external force x + this.fy = 0.0; // external force y + this.vx = 0.0; // velocity x + this.vy = 0.0; // velocity y + this.minForce = constants.minForce; + this.damping = 0.9; // damping factor +}; + +/** + * Attach a edge to the node + * @param {Edge} edge + */ +Node.prototype.attachEdge = function(edge) { + this.edges.push(edge); + this._updateMass(); +}; + +/** + * Detach a edge from the node + * @param {Edge} edge + */ +Node.prototype.detachEdge = function(edge) { + var index = this.edges.indexOf(edge); + if (index != -1) { + this.edges.splice(index, 1); + } + this._updateMass(); +}; + +/** + * Update the nodes mass, which is determined by the number of edges connecting + * to it (more edges -> heavier node). + * @private + */ +Node.prototype._updateMass = function() { + this.mass = 50 + 20 * this.edges.length; // kg +}; + +/** + * Set or overwrite properties for the node + * @param {Object} properties an object with properties + * @param {Object} constants and object with default, global properties + */ +Node.prototype.setProperties = function(properties, constants) { + if (!properties) { + return; + } + + // basic properties + if (properties.id != undefined) {this.id = properties.id;} + if (properties.label != undefined) {this.label = properties.label;} + if (properties.title != undefined) {this.title = properties.title;} + if (properties.group != undefined) {this.group = properties.group;} + if (properties.x != undefined) {this.x = properties.x;} + if (properties.y != undefined) {this.y = properties.y;} + if (properties.value != undefined) {this.value = properties.value;} + + if (this.id === undefined) { + throw "Node must have an id"; + } + + // copy group properties + if (this.group) { + var groupObj = this.grouplist.get(this.group); + for (var prop in groupObj) { + if (groupObj.hasOwnProperty(prop)) { + this[prop] = groupObj[prop]; + } + } + } + + // individual shape properties + if (properties.shape != undefined) {this.shape = properties.shape;} + if (properties.image != undefined) {this.image = properties.image;} + if (properties.radius != undefined) {this.radius = properties.radius;} + if (properties.color != undefined) {this.color = Node.parseColor(properties.color);} + + if (properties.fontColor != undefined) {this.fontColor = properties.fontColor;} + if (properties.fontSize != undefined) {this.fontSize = properties.fontSize;} + if (properties.fontFace != undefined) {this.fontFace = properties.fontFace;} + + + if (this.image != undefined) { + if (this.imagelist) { + this.imageObj = this.imagelist.load(this.image); + } + else { + throw "No imagelist provided"; + } + } + + this.xFixed = this.xFixed || (properties.x != undefined); + this.yFixed = this.yFixed || (properties.y != undefined); + this.radiusFixed = this.radiusFixed || (properties.radius != undefined); + + if (this.shape == 'image') { + this.radiusMin = constants.nodes.widthMin; + this.radiusMax = constants.nodes.widthMax; + } + + // choose draw method depending on the shape + switch (this.shape) { + case 'database': this.draw = this._drawDatabase; this.resize = this._resizeDatabase; break; + case 'box': this.draw = this._drawBox; this.resize = this._resizeBox; break; + case 'circle': this.draw = this._drawCircle; this.resize = this._resizeCircle; break; + case 'ellipse': this.draw = this._drawEllipse; this.resize = this._resizeEllipse; break; + // TODO: add diamond shape + case 'image': this.draw = this._drawImage; this.resize = this._resizeImage; break; + case 'text': this.draw = this._drawText; this.resize = this._resizeText; break; + case 'dot': this.draw = this._drawDot; this.resize = this._resizeShape; break; + case 'square': this.draw = this._drawSquare; this.resize = this._resizeShape; break; + case 'triangle': this.draw = this._drawTriangle; this.resize = this._resizeShape; break; + case 'triangleDown': this.draw = this._drawTriangleDown; this.resize = this._resizeShape; break; + case 'star': this.draw = this._drawStar; this.resize = this._resizeShape; break; + default: this.draw = this._drawEllipse; this.resize = this._resizeEllipse; break; + } + + // reset the size of the node, this can be changed + this._reset(); +}; + +/** + * Parse a color property into an object with border, background, and + * hightlight colors + * @param {Object | String} color + * @return {Object} colorObject + */ +Node.parseColor = function(color) { + var c; + if (util.isString(color)) { + c = { + border: color, + background: color, + highlight: { + border: color, + background: color + } + }; + // TODO: automatically generate a nice highlight color + } + else { + c = {}; + c.background = color.background || 'white'; + c.border = color.border || c.background; + if (util.isString(color.highlight)) { + c.highlight = { + border: color.highlight, + background: color.highlight + } + } + else { + c.highlight = {}; + c.highlight.background = color.highlight && color.highlight.background || c.background; + c.highlight.border = color.highlight && color.highlight.border || c.border; + } + } + return c; +}; + +/** + * select this node + */ +Node.prototype.select = function() { + this.selected = true; + this._reset(); +}; + +/** + * unselect this node + */ +Node.prototype.unselect = function() { + this.selected = false; + this._reset(); +}; + +/** + * Reset the calculated size of the node, forces it to recalculate its size + * @private + */ +Node.prototype._reset = function() { + this.width = undefined; + this.height = undefined; +}; + +/** + * get the title of this node. + * @return {string} title The title of the node, or undefined when no title + * has been set. + */ +Node.prototype.getTitle = function() { + return this.title; +}; + +/** + * Calculate the distance to the border of the Node + * @param {CanvasRenderingContext2D} ctx + * @param {Number} angle Angle in radians + * @returns {number} distance Distance to the border in pixels + */ +Node.prototype.distanceToBorder = function (ctx, angle) { + var borderWidth = 1; + + if (!this.width) { + this.resize(ctx); + } + + //noinspection FallthroughInSwitchStatementJS + switch (this.shape) { + case 'circle': + case 'dot': + return this.radius + borderWidth; + + case 'ellipse': + var a = this.width / 2; + var b = this.height / 2; + var w = (Math.sin(angle) * a); + var h = (Math.cos(angle) * b); + return a * b / Math.sqrt(w * w + h * h); + + // TODO: implement distanceToBorder for database + // TODO: implement distanceToBorder for triangle + // TODO: implement distanceToBorder for triangleDown + + case 'box': + case 'image': + case 'text': + default: + if (this.width) { + return Math.min( + Math.abs(this.width / 2 / Math.cos(angle)), + Math.abs(this.height / 2 / Math.sin(angle))) + borderWidth; + // TODO: reckon with border radius too in case of box + } + else { + return 0; + } + + } + + // TODO: implement calculation of distance to border for all shapes +}; + +/** + * Set forces acting on the node + * @param {number} fx Force in horizontal direction + * @param {number} fy Force in vertical direction + */ +Node.prototype._setForce = function(fx, fy) { + this.fx = fx; + this.fy = fy; +}; + +/** + * Add forces acting on the node + * @param {number} fx Force in horizontal direction + * @param {number} fy Force in vertical direction + * @private + */ +Node.prototype._addForce = function(fx, fy) { + this.fx += fx; + this.fy += fy; +}; + +/** + * Perform one discrete step for the node + * @param {number} interval Time interval in seconds + */ +Node.prototype.discreteStep = function(interval) { + if (!this.xFixed) { + var dx = -this.damping * this.vx; // damping force + var ax = (this.fx + dx) / this.mass; // acceleration + this.vx += ax / interval; // velocity + this.x += this.vx / interval; // position + } + + if (!this.yFixed) { + var dy = -this.damping * this.vy; // damping force + var ay = (this.fy + dy) / this.mass; // acceleration + this.vy += ay / interval; // velocity + this.y += this.vy / interval; // position + } +}; + + +/** + * Check if this node has a fixed x and y position + * @return {boolean} true if fixed, false if not + */ +Node.prototype.isFixed = function() { + return (this.xFixed && this.yFixed); +}; + +/** + * Check if this node is moving + * @param {number} vmin the minimum velocity considered as "moving" + * @return {boolean} true if moving, false if it has no velocity + */ +// TODO: replace this method with calculating the kinetic energy +Node.prototype.isMoving = function(vmin) { + return (Math.abs(this.vx) > vmin || Math.abs(this.vy) > vmin || + (!this.xFixed && Math.abs(this.fx) > this.minForce) || + (!this.yFixed && Math.abs(this.fy) > this.minForce)); +}; + +/** + * check if this node is selecte + * @return {boolean} selected True if node is selected, else false + */ +Node.prototype.isSelected = function() { + return this.selected; +}; + +/** + * Retrieve the value of the node. Can be undefined + * @return {Number} value + */ +Node.prototype.getValue = function() { + return this.value; +}; + +/** + * Calculate the distance from the nodes location to the given location (x,y) + * @param {Number} x + * @param {Number} y + * @return {Number} value + */ +Node.prototype.getDistance = function(x, y) { + var dx = this.x - x, + dy = this.y - y; + return Math.sqrt(dx * dx + dy * dy); +}; + + +/** + * Adjust the value range of the node. The node will adjust it's radius + * based on its value. + * @param {Number} min + * @param {Number} max + */ +Node.prototype.setValueRange = function(min, max) { + if (!this.radiusFixed && this.value !== undefined) { + var scale = (this.radiusMax - this.radiusMin) / (max - min); + this.radius = (this.value - min) * scale + this.radiusMin; + } +}; + +/** + * Draw this node in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + */ +Node.prototype.draw = function(ctx) { + throw "Draw method not initialized for node"; +}; + +/** + * Recalculate the size of this node in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + */ +Node.prototype.resize = function(ctx) { + throw "Resize method not initialized for node"; +}; + +/** + * Check if this object is overlapping with the provided object + * @param {Object} obj an object with parameters left, top, right, bottom + * @return {boolean} True if location is located on node + */ +Node.prototype.isOverlappingWith = function(obj) { + return (this.left < obj.right && + this.left + this.width > obj.left && + this.top < obj.bottom && + this.top + this.height > obj.top); +}; + +Node.prototype._resizeImage = function (ctx) { + // TODO: pre calculate the image size + if (!this.width) { // undefined or 0 + var width, height; + if (this.value) { + var scale = this.imageObj.height / this.imageObj.width; + width = this.radius || this.imageObj.width; + height = this.radius * scale || this.imageObj.height; + } + else { + width = this.imageObj.width; + height = this.imageObj.height; + } + this.width = width; + this.height = height; + } +}; + +Node.prototype._drawImage = function (ctx) { + this._resizeImage(ctx); + + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; + + var yLabel; + if (this.imageObj) { + ctx.drawImage(this.imageObj, this.left, this.top, this.width, this.height); + yLabel = this.y + this.height / 2; + } + else { + // image still loading... just draw the label for now + yLabel = this.y; + } + + this._label(ctx, this.label, this.x, yLabel, undefined, "top"); +}; + + +Node.prototype._resizeBox = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + this.width = textSize.width + 2 * margin; + this.height = textSize.height + 2 * margin; + } +}; + +Node.prototype._drawBox = function (ctx) { + this._resizeBox(ctx); + + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; + + ctx.strokeStyle = this.selected ? this.color.highlight.border : this.color.border; + ctx.fillStyle = this.selected ? this.color.highlight.background : this.color.background; + ctx.lineWidth = this.selected ? 2.0 : 1.0; + ctx.roundRect(this.left, this.top, this.width, this.height, this.radius); + ctx.fill(); + ctx.stroke(); + + this._label(ctx, this.label, this.x, this.y); +}; + + +Node.prototype._resizeDatabase = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + var size = textSize.width + 2 * margin; + this.width = size; + this.height = size; + } +}; + +Node.prototype._drawDatabase = function (ctx) { + this._resizeDatabase(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; + + ctx.strokeStyle = this.selected ? this.color.highlight.border : this.color.border; + ctx.fillStyle = this.selected ? this.color.highlight.background : this.color.background; + ctx.lineWidth = this.selected ? 2.0 : 1.0; + ctx.database(this.x - this.width/2, this.y - this.height*0.5, this.width, this.height); + ctx.fill(); + ctx.stroke(); + + this._label(ctx, this.label, this.x, this.y); +}; + + +Node.prototype._resizeCircle = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + var diameter = Math.max(textSize.width, textSize.height) + 2 * margin; + this.radius = diameter / 2; + + this.width = diameter; + this.height = diameter; + } +}; + +Node.prototype._drawCircle = function (ctx) { + this._resizeCircle(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; + + ctx.strokeStyle = this.selected ? this.color.highlight.border : this.color.border; + ctx.fillStyle = this.selected ? this.color.highlight.background : this.color.background; + ctx.lineWidth = this.selected ? 2.0 : 1.0; + ctx.circle(this.x, this.y, this.radius); + ctx.fill(); + ctx.stroke(); + + this._label(ctx, this.label, this.x, this.y); +}; + +Node.prototype._resizeEllipse = function (ctx) { + if (!this.width) { + var textSize = this.getTextSize(ctx); + + this.width = textSize.width * 1.5; + this.height = textSize.height * 2; + if (this.width < this.height) { + this.width = this.height; + } + } +}; + +Node.prototype._drawEllipse = function (ctx) { + this._resizeEllipse(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; + + ctx.strokeStyle = this.selected ? this.color.highlight.border : this.color.border; + ctx.fillStyle = this.selected ? this.color.highlight.background : this.color.background; + ctx.lineWidth = this.selected ? 2.0 : 1.0; + ctx.ellipse(this.left, this.top, this.width, this.height); + ctx.fill(); + ctx.stroke(); + + this._label(ctx, this.label, this.x, this.y); +}; + +Node.prototype._drawDot = function (ctx) { + this._drawShape(ctx, 'circle'); +}; + +Node.prototype._drawTriangle = function (ctx) { + this._drawShape(ctx, 'triangle'); +}; + +Node.prototype._drawTriangleDown = function (ctx) { + this._drawShape(ctx, 'triangleDown'); +}; + +Node.prototype._drawSquare = function (ctx) { + this._drawShape(ctx, 'square'); +}; + +Node.prototype._drawStar = function (ctx) { + this._drawShape(ctx, 'star'); +}; + +Node.prototype._resizeShape = function (ctx) { + if (!this.width) { + var size = 2 * this.radius; + this.width = size; + this.height = size; + } +}; + +Node.prototype._drawShape = function (ctx, shape) { + this._resizeShape(ctx); + + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; + + ctx.strokeStyle = this.selected ? this.color.highlight.border : this.color.border; + ctx.fillStyle = this.selected ? this.color.highlight.background : this.color.background; + ctx.lineWidth = this.selected ? 2.0 : 1.0; + + ctx[shape](this.x, this.y, this.radius); + ctx.fill(); + ctx.stroke(); + + if (this.label) { + this._label(ctx, this.label, this.x, this.y + this.height / 2, undefined, 'top'); + } +}; + +Node.prototype._resizeText = function (ctx) { + if (!this.width) { + var margin = 5; + var textSize = this.getTextSize(ctx); + this.width = textSize.width + 2 * margin; + this.height = textSize.height + 2 * margin; + } +}; + +Node.prototype._drawText = function (ctx) { + this._resizeText(ctx); + this.left = this.x - this.width / 2; + this.top = this.y - this.height / 2; + + this._label(ctx, this.label, this.x, this.y); +}; + + +Node.prototype._label = function (ctx, text, x, y, align, baseline) { + if (text) { + ctx.font = (this.selected ? "bold " : "") + this.fontSize + "px " + this.fontFace; + ctx.fillStyle = this.fontColor || "black"; + ctx.textAlign = align || "center"; + ctx.textBaseline = baseline || "middle"; + + var lines = text.split('\n'), + lineCount = lines.length, + fontSize = (this.fontSize + 4), + yLine = y + (1 - lineCount) / 2 * fontSize; + + for (var i = 0; i < lineCount; i++) { + ctx.fillText(lines[i], x, yLine); + yLine += fontSize; + } + } +}; + + +Node.prototype.getTextSize = function(ctx) { + if (this.label != undefined) { + ctx.font = (this.selected ? "bold " : "") + this.fontSize + "px " + this.fontFace; + + var lines = this.label.split('\n'), + height = (this.fontSize + 4) * lines.length, + width = 0; + + for (var i = 0, iMax = lines.length; i < iMax; i++) { + width = Math.max(width, ctx.measureText(lines[i]).width); + } + + return {"width": width, "height": height}; + } + else { + return {"width": 0, "height": 0}; + } +}; + +/** + * @class Edge + * + * A edge connects two nodes + * @param {Object} properties Object with properties. Must contain + * At least properties from and to. + * Available properties: from (number), + * to (number), label (string, color (string), + * width (number), style (string), + * length (number), title (string) + * @param {Graph} graph A graph object, used to find and edge to + * nodes. + * @param {Object} constants An object with default values for + * example for the color + */ +function Edge (properties, graph, constants) { + if (!graph) { + throw "No graph provided"; + } + this.graph = graph; + + // initialize constants + this.widthMin = constants.edges.widthMin; + this.widthMax = constants.edges.widthMax; + + // initialize variables + this.id = undefined; + this.style = constants.edges.style; + this.title = undefined; + this.width = constants.edges.width; + this.value = undefined; + this.length = constants.edges.length; + + // Added to support dashed lines + // David Jordan + // 2012-08-08 + this.dash = util.extend({}, constants.edges.dash); // contains properties length, gaph, altLength + + this.stiffness = undefined; // depends on the length of the edge + this.color = constants.edges.color; + this.widthFixed = false; + this.lengthFixed = false; + + this.setProperties(properties, constants); +}; + +/** + * Set or overwrite properties for the edge + * @param {Object} properties an object with properties + * @param {Object} constants and object with default, global properties + */ +Edge.prototype.setProperties = function(properties, constants) { + if (!properties) { + return; + } + + if (properties.from != undefined) {this.from = this.graph._getNode(properties.from);} + if (properties.to != undefined) {this.to = this.graph._getNode(properties.to);} + + if (properties.id != undefined) {this.id = properties.id;} + if (properties.style != undefined) {this.style = properties.style;} + if (properties.label != undefined) {this.label = properties.label;} + if (this.label) { + this.fontSize = constants.edges.fontSize; + this.fontFace = constants.edges.fontFace; + this.fontColor = constants.edges.fontColor; + if (properties.fontColor != undefined) {this.fontColor = properties.fontColor;} + if (properties.fontSize != undefined) {this.fontSize = properties.fontSize;} + if (properties.fontFace != undefined) {this.fontFace = properties.fontFace;} + } + if (properties.title != undefined) {this.title = properties.title;} + if (properties.width != undefined) {this.width = properties.width;} + if (properties.value != undefined) {this.value = properties.value;} + if (properties.length != undefined) {this.length = properties.length;} + + // Added to support dashed lines + // David Jordan + // 2012-08-08 + if (properties.dash) { + if (properties.dash.length != undefined) {this.dash.length = properties.dash.length;} + if (properties.dash.gap != undefined) {this.dash.gap = properties.dash.gap;} + if (properties.dash.altLength != undefined) {this.dash.altLength = properties.dash.altLength;} + } + + if (properties.color != undefined) {this.color = properties.color;} + + if (!this.from) { + throw "Node with id " + properties.from + " not found"; + } + if (!this.to) { + throw "Node with id " + properties.to + " not found"; + } + + this.widthFixed = this.widthFixed || (properties.width != undefined); + this.lengthFixed = this.lengthFixed || (properties.length != undefined); + + this.stiffness = 1 / this.length; + + // set draw method based on style + switch (this.style) { + case 'line': this.draw = this._drawLine; break; + case 'arrow': this.draw = this._drawArrow; break; + case 'arrow-center': this.draw = this._drawArrowCenter; break; + case 'dash-line': this.draw = this._drawDashLine; break; + default: this.draw = this._drawLine; break; + } +}; + +/** + * get the title of this edge. + * @return {string} title The title of the edge, or undefined when no title + * has been set. + */ +Edge.prototype.getTitle = function() { + return this.title; +}; + + +/** + * Retrieve the value of the edge. Can be undefined + * @return {Number} value + */ +Edge.prototype.getValue = function() { + return this.value; +}; + +/** + * Adjust the value range of the edge. The edge will adjust it's width + * based on its value. + * @param {Number} min + * @param {Number} max + */ +Edge.prototype.setValueRange = function(min, max) { + if (!this.widthFixed && this.value !== undefined) { + var factor = (this.widthMax - this.widthMin) / (max - min); + this.width = (this.value - min) * factor + this.widthMin; + } +}; + +/** + * Redraw a edge + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + */ +Edge.prototype.draw = function(ctx) { + throw "Method draw not initialized in edge"; +}; + +/** + * Check if this object is overlapping with the provided object + * @param {Object} obj an object with parameters left, top + * @return {boolean} True if location is located on the edge + */ +Edge.prototype.isOverlappingWith = function(obj) { + var distMax = 10; + + var xFrom = this.from.x; + var yFrom = this.from.y; + var xTo = this.to.x; + var yTo = this.to.y; + var xObj = obj.left; + var yObj = obj.top; + + + var dist = Edge._dist(xFrom, yFrom, xTo, yTo, xObj, yObj); + + return (dist < distMax); +}; + + +/** + * Redraw a edge as a line + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + * @private + */ +Edge.prototype._drawLine = function(ctx) { + // set style + ctx.strokeStyle = this.color; + ctx.lineWidth = this._getLineWidth(); + + var point; + if (this.from != this.to) { + // draw line + this._line(ctx); + + // draw label + if (this.label) { + point = this._pointOnLine(0.5); + this._label(ctx, this.label, point.x, point.y); + } + } + else { + var x, y; + var radius = this.length / 4; + var node = this.from; + if (!node.width) { + node.resize(ctx); + } + if (node.width > node.height) { + x = node.x + node.width / 2; + y = node.y - radius; + } + else { + x = node.x + radius; + y = node.y - node.height / 2; + } + this._circle(ctx, x, y, radius); + point = this._pointOnCircle(x, y, radius, 0.5); + this._label(ctx, this.label, point.x, point.y); + } +}; + +/** + * Get the line width of the edge. Depends on width and whether one of the + * connected nodes is selected. + * @return {Number} width + * @private + */ +Edge.prototype._getLineWidth = function() { + if (this.from.selected || this.to.selected) { + return Math.min(this.width * 2, this.widthMax); + } + else { + return this.width; + } +}; + +/** + * Draw a line between two nodes + * @param {CanvasRenderingContext2D} ctx + * @private + */ +Edge.prototype._line = function (ctx) { + // draw a straight line + ctx.beginPath(); + ctx.moveTo(this.from.x, this.from.y); + ctx.lineTo(this.to.x, this.to.y); + ctx.stroke(); +}; + +/** + * Draw a line from a node to itself, a circle + * @param {CanvasRenderingContext2D} ctx + * @param {Number} x + * @param {Number} y + * @param {Number} radius + * @private + */ +Edge.prototype._circle = function (ctx, x, y, radius) { + // draw a circle + ctx.beginPath(); + ctx.arc(x, y, radius, 0, 2 * Math.PI, false); + ctx.stroke(); +}; + +/** + * Draw label with white background and with the middle at (x, y) + * @param {CanvasRenderingContext2D} ctx + * @param {String} text + * @param {Number} x + * @param {Number} y + * @private + */ +Edge.prototype._label = function (ctx, text, x, y) { + if (text) { + // TODO: cache the calculated size + ctx.font = ((this.from.selected || this.to.selected) ? "bold " : "") + + this.fontSize + "px " + this.fontFace; + ctx.fillStyle = 'white'; + var width = ctx.measureText(text).width; + var height = this.fontSize; + var left = x - width / 2; + var top = y - height / 2; + + ctx.fillRect(left, top, width, height); + + // draw text + ctx.fillStyle = this.fontColor || "black"; + ctx.textAlign = "left"; + ctx.textBaseline = "top"; + ctx.fillText(text, left, top); + } +}; + +/** + * Redraw a edge as a dashed line + * Draw this edge in the given canvas + * @author David Jordan + * @date 2012-08-08 + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + * @private + */ +Edge.prototype._drawDashLine = function(ctx) { + // set style + ctx.strokeStyle = this.color; + ctx.lineWidth = this._getLineWidth(); + + // draw dashed line + ctx.beginPath(); + ctx.lineCap = 'round'; + if (this.dash.altLength != undefined) //If an alt dash value has been set add to the array this value + { + ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y, + [this.dash.length,this.dash.gap,this.dash.altLength,this.dash.gap]); + } + else if (this.dash.length != undefined && this.dash.gap != undefined) //If a dash and gap value has been set add to the array this value + { + ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y, + [this.dash.length,this.dash.gap]); + } + else //If all else fails draw a line + { + ctx.moveTo(this.from.x, this.from.y); + ctx.lineTo(this.to.x, this.to.y); + } + ctx.stroke(); + + // draw label + if (this.label) { + var point = this._pointOnLine(0.5); + this._label(ctx, this.label, point.x, point.y); + } +}; + +/** + * Get a point on a line + * @param {Number} percentage. Value between 0 (line start) and 1 (line end) + * @return {Object} point + * @private + */ +Edge.prototype._pointOnLine = function (percentage) { + return { + x: (1 - percentage) * this.from.x + percentage * this.to.x, + y: (1 - percentage) * this.from.y + percentage * this.to.y + } +}; + +/** + * Get a point on a circle + * @param {Number} x + * @param {Number} y + * @param {Number} radius + * @param {Number} percentage. Value between 0 (line start) and 1 (line end) + * @return {Object} point + * @private + */ +Edge.prototype._pointOnCircle = function (x, y, radius, percentage) { + var angle = (percentage - 3/8) * 2 * Math.PI; + return { + x: x + radius * Math.cos(angle), + y: y - radius * Math.sin(angle) + } +}; + +/** + * Redraw a edge as a line with an arrow halfway the line + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + * @private + */ +Edge.prototype._drawArrowCenter = function(ctx) { + var point; + // set style + ctx.strokeStyle = this.color; + ctx.fillStyle = this.color; + ctx.lineWidth = this._getLineWidth(); + + if (this.from != this.to) { + // draw line + this._line(ctx); + + // draw an arrow halfway the line + var angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); + var length = 10 + 5 * this.width; // TODO: make customizable? + point = this._pointOnLine(0.5); + ctx.arrow(point.x, point.y, angle, length); + ctx.fill(); + ctx.stroke(); + + // draw label + if (this.label) { + point = this._pointOnLine(0.5); + this._label(ctx, this.label, point.x, point.y); + } + } + else { + // draw circle + var x, y; + var radius = this.length / 4; + var node = this.from; + if (!node.width) { + node.resize(ctx); + } + if (node.width > node.height) { + x = node.x + node.width / 2; + y = node.y - radius; + } + else { + x = node.x + radius; + y = node.y - node.height / 2; + } + this._circle(ctx, x, y, radius); + + // draw all arrows + var angle = 0.2 * Math.PI; + var length = 10 + 5 * this.width; // TODO: make customizable? + point = this._pointOnCircle(x, y, radius, 0.5); + ctx.arrow(point.x, point.y, angle, length); + ctx.fill(); + ctx.stroke(); + + // draw label + if (this.label) { + point = this._pointOnCircle(x, y, radius, 0.5); + this._label(ctx, this.label, point.x, point.y); + } + } +}; + + + +/** + * Redraw a edge as a line with an arrow + * Draw this edge in the given canvas + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + * @private + */ +Edge.prototype._drawArrow = function(ctx) { + // set style + ctx.strokeStyle = this.color; + ctx.fillStyle = this.color; + ctx.lineWidth = this._getLineWidth(); + + // draw line + var angle, length; + if (this.from != this.to) { + // calculate length and angle of the line + angle = Math.atan2((this.to.y - this.from.y), (this.to.x - this.from.x)); + var dx = (this.to.x - this.from.x); + var dy = (this.to.y - this.from.y); + var lEdge = Math.sqrt(dx * dx + dy * dy); + + var lFrom = this.from.distanceToBorder(ctx, angle + Math.PI); + var pFrom = (lEdge - lFrom) / lEdge; + var xFrom = (pFrom) * this.from.x + (1 - pFrom) * this.to.x; + var yFrom = (pFrom) * this.from.y + (1 - pFrom) * this.to.y; + + var lTo = this.to.distanceToBorder(ctx, angle); + var pTo = (lEdge - lTo) / lEdge; + var xTo = (1 - pTo) * this.from.x + pTo * this.to.x; + var yTo = (1 - pTo) * this.from.y + pTo * this.to.y; + + ctx.beginPath(); + ctx.moveTo(xFrom, yFrom); + ctx.lineTo(xTo, yTo); + ctx.stroke(); + + // draw arrow at the end of the line + length = 10 + 5 * this.width; // TODO: make customizable? + ctx.arrow(xTo, yTo, angle, length); + ctx.fill(); + ctx.stroke(); + + // draw label + if (this.label) { + var point = this._pointOnLine(0.5); + this._label(ctx, this.label, point.x, point.y); + } + } + else { + // draw circle + var node = this.from; + var x, y, arrow; + var radius = this.length / 4; + if (!node.width) { + node.resize(ctx); + } + if (node.width > node.height) { + x = node.x + node.width / 2; + y = node.y - radius; + arrow = { + x: x, + y: node.y, + angle: 0.9 * Math.PI + }; + } + else { + x = node.x + radius; + y = node.y - node.height / 2; + arrow = { + x: node.x, + y: y, + angle: 0.6 * Math.PI + }; + } + ctx.beginPath(); + // TODO: do not draw a circle, but an arc + // TODO: similarly, for a line without arrows, draw to the border of the nodes instead of the center + ctx.arc(x, y, radius, 0, 2 * Math.PI, false); + ctx.stroke(); + + // draw all arrows + length = 10 + 5 * this.width; // TODO: make customizable? + ctx.arrow(arrow.x, arrow.y, arrow.angle, length); + ctx.fill(); + ctx.stroke(); + + // draw label + if (this.label) { + point = this._pointOnCircle(x, y, radius, 0.5); + this._label(ctx, this.label, point.x, point.y); + } + } +}; + + + +/** + * Calculate the distance between a point (x3,y3) and a line segment from + * (x1,y1) to (x2,y2). + * http://stackoverflow.com/questions/849211/shortest-distancae-between-a-point-and-a-line-segment + * @param {number} x1 + * @param {number} y1 + * @param {number} x2 + * @param {number} y2 + * @param {number} x3 + * @param {number} y3 + * @private + */ +Edge._dist = function (x1,y1, x2,y2, x3,y3) { // x3,y3 is the point + var px = x2-x1, + py = y2-y1, + something = px*px + py*py, + u = ((x3 - x1) * px + (y3 - y1) * py) / something; + + if (u > 1) { + u = 1; + } + else if (u < 0) { + u = 0; + } + + var x = x1 + u * px, + y = y1 + u * py, + dx = x - x3, + dy = y - y3; + + //# Note: If the actual distance does not matter, + //# if you only want to compare what this function + //# returns to other results of this function, you + //# can just return the squared distance instead + //# (i.e. remove the sqrt) to gain a little performance + + return Math.sqrt(dx*dx + dy*dy); +}; + +/** + * Popup is a class to create a popup window with some text + * @param {Element} container The container object. + * @param {Number} [x] + * @param {Number} [y] + * @param {String} [text] + */ +function Popup(container, x, y, text) { + if (container) { + this.container = container; + } + else { + this.container = document.body; + } + this.x = 0; + this.y = 0; + this.padding = 5; + + if (x !== undefined && y !== undefined ) { + this.setPosition(x, y); + } + if (text !== undefined) { + this.setText(text); + } + + // create the frame + this.frame = document.createElement("div"); + var style = this.frame.style; + style.position = "absolute"; + style.visibility = "hidden"; + style.border = "1px solid #666"; + style.color = "black"; + style.padding = this.padding + "px"; + style.backgroundColor = "#FFFFC6"; + style.borderRadius = "3px"; + style.MozBorderRadius = "3px"; + style.WebkitBorderRadius = "3px"; + style.boxShadow = "3px 3px 10px rgba(128, 128, 128, 0.5)"; + style.whiteSpace = "nowrap"; + this.container.appendChild(this.frame); +}; + +/** + * @param {number} x Horizontal position of the popup window + * @param {number} y Vertical position of the popup window + */ +Popup.prototype.setPosition = function(x, y) { + this.x = parseInt(x); + this.y = parseInt(y); +}; + +/** + * Set the text for the popup window. This can be HTML code + * @param {string} text + */ +Popup.prototype.setText = function(text) { + this.frame.innerHTML = text; +}; + +/** + * Show the popup window + * @param {boolean} show Optional. Show or hide the window + */ +Popup.prototype.show = function (show) { + if (show === undefined) { + show = true; + } + + if (show) { + var height = this.frame.clientHeight; + var width = this.frame.clientWidth; + var maxHeight = this.frame.parentNode.clientHeight; + var maxWidth = this.frame.parentNode.clientWidth; + + var top = (this.y - height); + if (top + height + this.padding > maxHeight) { + top = maxHeight - height - this.padding; + } + if (top < this.padding) { + top = this.padding; + } + + var left = this.x; + if (left + width + this.padding > maxWidth) { + left = maxWidth - width - this.padding; + } + if (left < this.padding) { + left = this.padding; + } + + this.frame.style.left = left + "px"; + this.frame.style.top = top + "px"; + this.frame.style.visibility = "visible"; + } + else { + this.hide(); + } +}; + +/** + * Hide the popup window + */ +Popup.prototype.hide = function () { + this.frame.style.visibility = "hidden"; +}; + +/** + * @class Groups + * This class can store groups and properties specific for groups. + */ +Groups = function () { + this.clear(); + this.defaultIndex = 0; +}; + + +/** + * default constants for group colors + */ +Groups.DEFAULT = [ + {border: "#2B7CE9", background: "#97C2FC", highlight: {border: "#2B7CE9", background: "#D2E5FF"}}, // blue + {border: "#FFA500", background: "#FFFF00", highlight: {border: "#FFA500", background: "#FFFFA3"}}, // yellow + {border: "#FA0A10", background: "#FB7E81", highlight: {border: "#FA0A10", background: "#FFAFB1"}}, // red + {border: "#41A906", background: "#7BE141", highlight: {border: "#41A906", background: "#A1EC76"}}, // green + {border: "#E129F0", background: "#EB7DF4", highlight: {border: "#E129F0", background: "#F0B3F5"}}, // magenta + {border: "#7C29F0", background: "#AD85E4", highlight: {border: "#7C29F0", background: "#D3BDF0"}}, // purple + {border: "#C37F00", background: "#FFA807", highlight: {border: "#C37F00", background: "#FFCA66"}}, // orange + {border: "#4220FB", background: "#6E6EFD", highlight: {border: "#4220FB", background: "#9B9BFD"}}, // darkblue + {border: "#FD5A77", background: "#FFC0CB", highlight: {border: "#FD5A77", background: "#FFD1D9"}}, // pink + {border: "#4AD63A", background: "#C2FABC", highlight: {border: "#4AD63A", background: "#E6FFE3"}} // mint +]; + + +/** + * Clear all groups + */ +Groups.prototype.clear = function () { + this.groups = {}; + this.groups.length = function() + { + var i = 0; + for ( var p in this ) { + if (this.hasOwnProperty(p)) { + i++; + } + } + return i; + } +}; + + +/** + * get group properties of a groupname. If groupname is not found, a new group + * is added. + * @param {*} groupname Can be a number, string, Date, etc. + * @return {Object} group The created group, containing all group properties + */ +Groups.prototype.get = function (groupname) { + var group = this.groups[groupname]; + + if (group == undefined) { + // create new group + var index = this.defaultIndex % Groups.DEFAULT.length; + this.defaultIndex++; + group = {}; + group.color = Groups.DEFAULT[index]; + this.groups[groupname] = group; + } + + return group; +}; + +/** + * Add a custom group style + * @param {String} groupname + * @param {Object} style An object containing borderColor, + * backgroundColor, etc. + * @return {Object} group The created group object + */ +Groups.prototype.add = function (groupname, style) { + this.groups[groupname] = style; + if (style.color) { + style.color = Node.parseColor(style.color); + } + return style; +}; + +/** + * @class Images + * This class loads images and keeps them stored. + */ +Images = function () { + this.images = {}; + + this.callback = undefined; +}; + +/** + * Set an onload callback function. This will be called each time an image + * is loaded + * @param {function} callback + */ +Images.prototype.setOnloadCallback = function(callback) { + this.callback = callback; +}; + +/** + * + * @param {string} url Url of the image + * @return {Image} img The image object + */ +Images.prototype.load = function(url) { + var img = this.images[url]; + if (img == undefined) { + // create the image + var images = this; + img = new Image(); + this.images[url] = img; + img.onload = function() { + if (images.callback) { + images.callback(this); + } + }; + img.src = url; + } + + return img; +}; + +/** + * @constructor Graph + * Create a graph visualization, displaying nodes and edges. + * + * @param {Element} container The DOM element in which the Graph will + * be created. Normally a div element. + * @param {Object} data An object containing parameters + * {Array} nodes + * {Array} edges + * @param {Object} options Options + */ +function Graph (container, data, options) { + // create variables and set default values + this.containerElement = container; + this.width = '100%'; + this.height = '100%'; + this.refreshRate = 50; // milliseconds + this.stabilize = true; // stabilize before displaying the graph + this.selectable = true; + + // set constant values + this.constants = { + nodes: { + radiusMin: 5, + radiusMax: 20, + radius: 5, + distance: 100, // px + shape: 'ellipse', + image: undefined, + widthMin: 16, // px + widthMax: 64, // px + fontColor: 'black', + fontSize: 14, // px + //fontFace: verdana, + fontFace: 'arial', + color: { + border: '#2B7CE9', + background: '#97C2FC', + highlight: { + border: '#2B7CE9', + background: '#D2E5FF' + } + }, + borderColor: '#2B7CE9', + backgroundColor: '#97C2FC', + highlightColor: '#D2E5FF', + group: undefined + }, + edges: { + widthMin: 1, + widthMax: 15, + width: 1, + style: 'line', + color: '#343434', + fontColor: '#343434', + fontSize: 14, // px + fontFace: 'arial', + //distance: 100, //px + length: 100, // px + dash: { + length: 10, + gap: 5, + altLength: undefined + } + }, + minForce: 0.05, + minVelocity: 0.02, // px/s + maxIterations: 1000 // maximum number of iteration to stabilize + }; + + var graph = this; + this.nodes = []; // array with Node objects + this.edges = []; // array with Edge objects + + this.groups = new Groups(); // object with groups + this.images = new Images(); // object with images + this.images.setOnloadCallback(function () { + graph._redraw(); + }); + + // properties of the data + this.moving = false; // True if any of the nodes have an undefined position + + this.selection = []; + this.timer = undefined; + + // create a frame and canvas + this._create(); + + // apply options + this.setOptions(options); + + // draw data + this.setData(data); +} + +/** + * Set nodes and edges, and optionally options as well. + * + * @param {Object} data Object containing parameters: + * {Array} [nodes] Array with nodes. + * Required when format is 'vis' + * {Array} [edges] Array with edges + * Required when format is 'vis' + * {String} [dot] String containing data in DOT + * format. + * {Options} [options] Object with options + */ +Graph.prototype.setData = function(data) { + if (data && data.dot && (data.nodes || data.edges)) { + throw new SyntaxError('Data must contain either parameter "dot" or ' + + ' parameter pair "nodes" and "edges", but not both.'); + } + + // set options + this.setOptions(data && data.options); + + // set all data + if (data && data.dot) { + // parse DOT file + if(data && data.dot) { + var dotData = vis.util.DOTToGraph(data.dot); + this.setData(dotData); + return; + } + } + else { + this._setNodes(data && data.nodes); + this._setEdges(data && data.edges); + } + + + // find a stable position or start animating to a stable position + if (this.stabilize) { + this._doStabilize(); + } + this.start(); +}; + +/** + * Set options + * @param {Object} options + */ +Graph.prototype.setOptions = function (options) { + if (options) { + // retrieve parameter values + if (options.width != undefined) {this.width = options.width;} + if (options.height != undefined) {this.height = options.height;} + if (options.stabilize != undefined) {this.stabilize = options.stabilize;} + if (options.selectable != undefined) {this.selectable = options.selectable;} + + // TODO: work out these options and document them + if (options.edges) { + for (var prop in options.edges) { + if (options.edges.hasOwnProperty(prop)) { + this.constants.edges[prop] = options.edges[prop]; + } + } + + if (options.edges.length != undefined && + options.nodes && options.nodes.distance == undefined) { + this.constants.edges.length = options.edges.length; + this.constants.nodes.distance = options.edges.length * 1.25; + } + + if (!options.edges.fontColor) { + this.constants.edges.fontColor = options.edges.color; + } + + // Added to support dashed lines + // David Jordan + // 2012-08-08 + if (options.edges.dash) { + if (options.edges.dash.length != undefined) { + this.constants.edges.dash.length = options.edges.dash.length; + } + if (options.edges.dash.gap != undefined) { + this.constants.edges.dash.gap = options.edges.dash.gap; + } + if (options.edges.dash.altLength != undefined) { + this.constants.edges.dash.altLength = options.edges.dash.altLength; + } + } + } + + if (options.nodes) { + for (prop in options.nodes) { + if (options.nodes.hasOwnProperty(prop)) { + this.constants.nodes[prop] = options.nodes[prop]; + } + } + + if (options.nodes.color) { + this.constants.nodes.color = Node.parseColor(options.nodes.color); + } + + /* + if (options.nodes.widthMin) this.constants.nodes.radiusMin = options.nodes.widthMin; + if (options.nodes.widthMax) this.constants.nodes.radiusMax = options.nodes.widthMax; + */ + } + + if (options.groups) { + for (var groupname in options.groups) { + if (options.groups.hasOwnProperty(groupname)) { + var group = options.groups[groupname]; + this.groups.add(groupname, group); + } + } + } + } + + this.setSize(this.width, this.height); + this._setTranslation(0, 0); + this._setScale(1); +}; + +/** + * fire an event + * @param {String} event The name of an event, for example "select" + * @param {Object} params Optional object with event parameters + * @private + */ +Graph.prototype._trigger = function (event, params) { + events.trigger(this, event, params); +}; + + +/** + * Create the main frame for the Graph. + * This function is executed once when a Graph object is created. The frame + * contains a canvas, and this canvas contains all objects like the axis and + * nodes. + * @private + */ +Graph.prototype._create = function () { + // remove all elements from the container element. + while (this.containerElement.hasChildNodes()) { + this.containerElement.removeChild(this.containerElement.firstChild); + } + + this.frame = document.createElement("div"); + this.frame.className = "graph-frame"; + this.frame.style.position = "relative"; + this.frame.style.overflow = "hidden"; + + // create the graph canvas (HTML canvas element) + this.frame.canvas = document.createElement( "canvas" ); + this.frame.canvas.style.position = "relative"; + this.frame.appendChild(this.frame.canvas); + if (!this.frame.canvas.getContext) { + var noCanvas = document.createElement( "DIV" ); + noCanvas.style.color = "red"; + noCanvas.style.fontWeight = "bold" ; + noCanvas.style.padding = "10px"; + noCanvas.innerHTML = "Error: your browser does not support HTML canvas"; + this.frame.canvas.appendChild(noCanvas); + } + + // create event listeners + var me = this; + var onmousedown = function (event) {me._onMouseDown(event);}; + var onmousemove = function (event) {me._onMouseMoveTitle(event);}; + var onmousewheel = function (event) {me._onMouseWheel(event);}; + var ontouchstart = function (event) {me._onTouchStart(event);}; + vis.util.addEventListener(this.frame.canvas, "mousedown", onmousedown); + vis.util.addEventListener(this.frame.canvas, "mousemove", onmousemove); + vis.util.addEventListener(this.frame.canvas, "mousewheel", onmousewheel); + vis.util.addEventListener(this.frame.canvas, "touchstart", ontouchstart); + + // add the frame to the container element + this.containerElement.appendChild(this.frame); +}; + +/** + * handle on mouse down event + * @private + */ +Graph.prototype._onMouseDown = function (event) { + event = event || window.event; + + if (!this.selectable) { + return; + } + + // check if mouse is still down (may be up when focus is lost for example + // in an iframe) + if (this.leftButtonDown) { + this._onMouseUp(event); + } + + // only react on left mouse button down + this.leftButtonDown = event.which ? (event.which == 1) : (event.button == 1); + if (!this.leftButtonDown && !this.touchDown) { + return; + } + + // add event listeners to handle moving the contents + // we store the function onmousemove and onmouseup in the timeline, so we can + // remove the eventlisteners lateron in the function mouseUp() + var me = this; + if (!this.onmousemove) { + this.onmousemove = function (event) {me._onMouseMove(event);}; + vis.util.addEventListener(document, "mousemove", me.onmousemove); + } + if (!this.onmouseup) { + this.onmouseup = function (event) {me._onMouseUp(event);}; + vis.util.addEventListener(document, "mouseup", me.onmouseup); + } + vis.util.preventDefault(event); + + // store the start x and y position of the mouse + this.startMouseX = event.clientX || event.targetTouches[0].clientX; + this.startMouseY = event.clientY || event.targetTouches[0].clientY; + this.startFrameLeft = vis.util.getAbsoluteLeft(this.frame.canvas); + this.startFrameTop = vis.util.getAbsoluteTop(this.frame.canvas); + this.startTranslation = this._getTranslation(); + + this.ctrlKeyDown = event.ctrlKey; + this.shiftKeyDown = event.shiftKey; + + var obj = { + "left" : this._xToCanvas(this.startMouseX - this.startFrameLeft), + "top" : this._yToCanvas(this.startMouseY - this.startFrameTop), + "right" : this._xToCanvas(this.startMouseX - this.startFrameLeft), + "bottom" : this._yToCanvas(this.startMouseY - this.startFrameTop) + }; + var overlappingNodes = this._getNodesOverlappingWith(obj); + // if there are overlapping nodes, select the last one, this is the + // one which is drawn on top of the others + this.startClickedObj = (overlappingNodes.length > 0) ? + overlappingNodes[overlappingNodes.length - 1] : undefined; + + if (this.startClickedObj) { + // move clicked node with the mouse + + // make the clicked node temporarily fixed, and store their original state + var node = this.nodes[this.startClickedObj.row]; + this.startClickedObj.xFixed = node.xFixed; + this.startClickedObj.yFixed = node.yFixed; + node.xFixed = true; + node.yFixed = true; + + if (!this.ctrlKeyDown || !node.isSelected()) { + // select this node + this._selectNodes([this.startClickedObj], this.ctrlKeyDown); + } + else { + // unselect this node + this._unselectNodes([this.startClickedObj]); + } + + if (!this.moving) { + this._redraw(); + } + } + else if (this.shiftKeyDown) { + // start selection of multiple nodes + } + else { + // start moving the graph + this.moved = false; + } +}; + +/** + * handle on mouse move event + * @param {Event} event + * @private + */ +Graph.prototype._onMouseMove = function (event) { + event = event || window.event; + + if (!this.selectable) { + return; + } + + var mouseX = event.clientX || (event.targetTouches && event.targetTouches[0].clientX) || 0; + var mouseY = event.clientY || (event.targetTouches && event.targetTouches[0].clientY) || 0; + this.mouseX = mouseX; + this.mouseY = mouseY; + + if (this.startClickedObj) { + var node = this.nodes[this.startClickedObj.row]; + + if (!this.startClickedObj.xFixed) + node.x = this._xToCanvas(mouseX - this.startFrameLeft); + + if (!this.startClickedObj.yFixed) + node.y = this._yToCanvas(mouseY - this.startFrameTop); + + // start animation if not yet running + if (!this.moving) { + this.moving = true; + this.start(); + } + } + else if (this.shiftKeyDown) { + // draw a rect from start mouse location to current mouse location + if (this.frame.selRect == undefined) { + this.frame.selRect = document.createElement("DIV"); + this.frame.appendChild(this.frame.selRect); + + this.frame.selRect.style.position = "absolute"; + this.frame.selRect.style.border = "1px dashed red"; + } + + var left = Math.min(this.startMouseX, mouseX) - this.startFrameLeft; + var top = Math.min(this.startMouseY, mouseY) - this.startFrameTop; + var right = Math.max(this.startMouseX, mouseX) - this.startFrameLeft; + var bottom = Math.max(this.startMouseY, mouseY) - this.startFrameTop; + + this.frame.selRect.style.left = left + "px"; + this.frame.selRect.style.top = top + "px"; + this.frame.selRect.style.width = (right - left) + "px"; + this.frame.selRect.style.height = (bottom - top) + "px"; + } + else { + // move the graph + var diffX = mouseX - this.startMouseX; + var diffY = mouseY - this.startMouseY; + + this._setTranslation( + this.startTranslation.x + diffX, + this.startTranslation.y + diffY); + this._redraw(); + + this.moved = true; + } + + vis.util.preventDefault(event); +}; + +/** + * handle on mouse up event + * @param {Event} event + * @private + */ +Graph.prototype._onMouseUp = function (event) { + event = event || window.event; + + if (!this.selectable) { + return; + } + + // remove event listeners here, important for Safari + if (this.onmousemove) { + vis.util.removeEventListener(document, "mousemove", this.onmousemove); + this.onmousemove = undefined; + } + if (this.onmouseup) { + vis.util.removeEventListener(document, "mouseup", this.onmouseup); + this.onmouseup = undefined; + } + vis.util.preventDefault(event); + + // check selected nodes + var endMouseX = event.clientX || this.mouseX || 0; + var endMouseY = event.clientY || this.mouseY || 0; + + var ctrlKey = event ? event.ctrlKey : window.event.ctrlKey; + + if (this.startClickedObj) { + // restore the original fixed state + var node = this.nodes[this.startClickedObj.row]; + node.xFixed = this.startClickedObj.xFixed; + node.yFixed = this.startClickedObj.yFixed; + } + else if (this.shiftKeyDown) { + // select nodes inside selection area + var obj = { + "left": this._xToCanvas(Math.min(this.startMouseX, endMouseX) - this.startFrameLeft), + "top": this._yToCanvas(Math.min(this.startMouseY, endMouseY) - this.startFrameTop), + "right": this._xToCanvas(Math.max(this.startMouseX, endMouseX) - this.startFrameLeft), + "bottom": this._yToCanvas(Math.max(this.startMouseY, endMouseY) - this.startFrameTop) + }; + var overlappingNodes = this._getNodesOverlappingWith(obj); + this._selectNodes(overlappingNodes, ctrlKey); + this.redraw(); + + // remove the selection rectangle + if (this.frame.selRect) { + this.frame.removeChild(this.frame.selRect); + this.frame.selRect = undefined; + } + } + else { + if (!this.ctrlKeyDown && !this.moved) { + // remove selection + this._unselectNodes(); + this._redraw(); + } + } + + this.leftButtonDown = false; + this.ctrlKeyDown = false; +}; + + +/** + * Event handler for mouse wheel event, used to zoom the timeline + * Code from http://adomas.org/javascript-mouse-wheel/ + * @param {Event} event + * @private + */ +Graph.prototype._onMouseWheel = function(event) { + event = event || window.event; + var mouseX = event.clientX; + var mouseY = event.clientY; + + // retrieve delta + var delta = 0; + if (event.wheelDelta) { /* IE/Opera. */ + delta = event.wheelDelta/120; + } else if (event.detail) { /* Mozilla case. */ + // In Mozilla, sign of delta is different than in IE. + // Also, delta is multiple of 3. + delta = -event.detail/3; + } + + // If delta is nonzero, handle it. + // Basically, delta is now positive if wheel was scrolled up, + // and negative, if wheel was scrolled down. + if (delta) { + // determine zoom factor, and adjust the zoom factor such that zooming in + // and zooming out correspond wich each other + var zoom = delta / 10; + if (delta < 0) { + zoom = zoom / (1 - zoom); + } + + var scaleOld = this._getScale(); + var scaleNew = scaleOld * (1 + zoom); + if (scaleNew < 0.01) { + scaleNew = 0.01; + } + if (scaleNew > 10) { + scaleNew = 10; + } + + var frameLeft = vis.util.getAbsoluteLeft(this.frame.canvas); + var frameTop = vis.util.getAbsoluteTop(this.frame.canvas); + var x = mouseX - frameLeft; + var y = mouseY - frameTop; + + var translation = this._getTranslation(); + var scaleFrac = scaleNew / scaleOld; + var tx = (1 - scaleFrac) * x + translation.x * scaleFrac; + var ty = (1 - scaleFrac) * y + translation.y * scaleFrac; + + this._setScale(scaleNew); + this._setTranslation(tx, ty); + this._redraw(); + } + + // Prevent default actions caused by mouse wheel. + // That might be ugly, but we handle scrolls somehow + // anyway, so don't bother here... + vis.util.preventDefault(event); +}; + + +/** + * Mouse move handler for checking whether the title moves over a node with a title. + * @param {Event} event + * @private + */ +Graph.prototype._onMouseMoveTitle = function (event) { + event = event || window.event; + + var startMouseX = event.clientX; + var startMouseY = event.clientY; + this.startFrameLeft = this.startFrameLeft || vis.util.getAbsoluteLeft(this.frame.canvas); + this.startFrameTop = this.startFrameTop || vis.util.getAbsoluteTop(this.frame.canvas); + + var x = startMouseX - this.startFrameLeft; + var y = startMouseY - this.startFrameTop; + + // check if the previously selected node is still selected + if (this.popupNode) { + this._checkHidePopup(x, y); + } + + // start a timeout that will check if the mouse is positioned above + // an element + var me = this; + var checkShow = function() { + me._checkShowPopup(x, y); + }; + if (this.popupTimer) { + clearInterval(this.popupTimer); // stop any running timer + } + if (!this.leftButtonDown) { + this.popupTimer = setTimeout(checkShow, 300); + } +}; + +/** + * Check if there is an element on the given position in the graph + * (a node or edge). If so, and if this element has a title, + * show a popup window with its title. + * + * @param {number} x + * @param {number} y + * @private + */ +Graph.prototype._checkShowPopup = function (x, y) { + var obj = { + "left" : this._xToCanvas(x), + "top" : this._yToCanvas(y), + "right" : this._xToCanvas(x), + "bottom" : this._yToCanvas(y) + }; + + var i, len; + var lastPopupNode = this.popupNode; + + if (this.popupNode == undefined) { + // search the nodes for overlap, select the top one in case of multiple nodes + var nodes = this.nodes; + for (i = nodes.length - 1; i >= 0; i--) { + var node = nodes[i]; + if (node.getTitle() != undefined && node.isOverlappingWith(obj)) { + this.popupNode = node; + break; + } + } + } + + if (this.popupNode == undefined) { + // search the edges for overlap + var allEdges = this.edges; + for (i = 0, len = allEdges.length; i < len; i++) { + var edge = allEdges[i]; + if (edge.getTitle() != undefined && edge.isOverlappingWith(obj)) { + this.popupNode = edge; + break; + } + } + } + + if (this.popupNode) { + // show popup message window + if (this.popupNode != lastPopupNode) { + var me = this; + if (!me.popup) { + me.popup = new Popup(me.frame); + } + + // adjust a small offset such that the mouse cursor is located in the + // bottom left location of the popup, and you can easily move over the + // popup area + me.popup.setPosition(x - 3, y - 3); + me.popup.setText(me.popupNode.getTitle()); + me.popup.show(); + } + } + else { + if (this.popup) { + this.popup.hide(); + } + } +}; + +/** + * Check if the popup must be hided, which is the case when the mouse is no + * longer hovering on the object + * @param {number} x + * @param {number} y + * @private + */ +Graph.prototype._checkHidePopup = function (x, y) { + var obj = { + "left" : x, + "top" : y, + "right" : x, + "bottom" : y + }; + + if (!this.popupNode || !this.popupNode.isOverlappingWith(obj) ) { + this.popupNode = undefined; + if (this.popup) { + this.popup.hide(); + } + } +}; + +/** + * Event handler for touchstart event on mobile devices + * @param {Event} event + * @private + */ +Graph.prototype._onTouchStart = function(event) { + vis.util.preventDefault(event); + + if (this.touchDown) { + // if already moving, return + return; + } + this.touchDown = true; + + var me = this; + if (!this.ontouchmove) { + this.ontouchmove = function (event) {me._onTouchMove(event);}; + vis.util.addEventListener(document, "touchmove", this.ontouchmove); + } + if (!this.ontouchend) { + this.ontouchend = function (event) {me._onTouchEnd(event);}; + vis.util.addEventListener(document, "touchend", this.ontouchend); + } + + this._onMouseDown(event); +}; + +/** + * Event handler for touchmove event on mobile devices + * @param {Event} event + * @private + */ +Graph.prototype._onTouchMove = function(event) { + vis.util.preventDefault(event); + this._onMouseMove(event); +}; + +/** + * Event handler for touchend event on mobile devices + * @param {Event} event + * @private + */ +Graph.prototype._onTouchEnd = function(event) { + vis.util.preventDefault(event); + + this.touchDown = false; + + if (this.ontouchmove) { + vis.util.removeEventListener(document, "touchmove", this.ontouchmove); + this.ontouchmove = undefined; + } + if (this.ontouchend) { + vis.util.removeEventListener(document, "touchend", this.ontouchend); + this.ontouchend = undefined; + } + + this._onMouseUp(event); +}; + + +/** + * Unselect selected nodes. If no selection array is provided, all nodes + * are unselected + * @param {Object[]} selection Array with selection objects, each selection + * object has a parameter row. Optional + * @param {Boolean} triggerSelect If true (default), the select event + * is triggered when nodes are unselected + * @return {Boolean} changed True if the selection is changed + * @private + */ +Graph.prototype._unselectNodes = function(selection, triggerSelect) { + var changed = false; + var i, iMax, row; + + if (selection) { + // remove provided selections + for (i = 0, iMax = selection.length; i < iMax; i++) { + row = selection[i].row; + this.nodes[row].unselect(); + + var j = 0; + while (j < this.selection.length) { + if (this.selection[j].row == row) { + this.selection.splice(j, 1); + changed = true; + } + else { + j++; + } + } + } + } + else if (this.selection && this.selection.length) { + // remove all selections + for (i = 0, iMax = this.selection.length; i < iMax; i++) { + row = this.selection[i].row; + this.nodes[row].unselect(); + changed = true; + } + this.selection = []; + } + + if (changed && (triggerSelect == true || triggerSelect == undefined)) { + // fire the select event + this._trigger('select'); + } + + return changed; +}; + +/** + * select all nodes on given location x, y + * @param {Array} selection an array with selection objects. Each selection + * object has a parameter row + * @param {boolean} append If true, the new selection will be appended to the + * current selection (except for duplicate entries) + * @return {Boolean} changed True if the selection is changed + * @private + */ +Graph.prototype._selectNodes = function(selection, append) { + var changed = false; + var i, iMax; + + // TODO: the selectNodes method is a little messy, rework this + + // check if the current selection equals the desired selection + var selectionAlreadyDone = true; + if (selection.length != this.selection.length) { + selectionAlreadyDone = false; + } + else { + for (i = 0, iMax = Math.min(selection.length, this.selection.length); i < iMax; i++) { + if (selection[i].row != this.selection[i].row) { + selectionAlreadyDone = false; + break; + } + } + } + if (selectionAlreadyDone) { + return changed; + } + + if (append == undefined || append == false) { + // first deselect any selected node + var triggerSelect = false; + changed = this._unselectNodes(undefined, triggerSelect); + } + + for (i = 0, iMax = selection.length; i < iMax; i++) { + // add each of the new selections, but only when they are not duplicate + var row = selection[i].row; + var isDuplicate = false; + for (var j = 0, jMax = this.selection.length; j < jMax; j++) { + if (this.selection[j].row == row) { + isDuplicate = true; + break; + } + } + + if (!isDuplicate) { + this.nodes[row].select(); + this.selection.push(selection[i]); + changed = true; + } + } + + if (changed) { + // fire the select event + this._trigger('select'); + } + + return changed; +}; + +/** + * retrieve all nodes overlapping with given object + * @param {Object} obj An object with parameters left, top, right, bottom + * @return {Object[]} An array with selection objects containing + * the parameter row. + * @private + */ +Graph.prototype._getNodesOverlappingWith = function (obj) { + var overlappingNodes = []; + + for (var i = 0; i < this.nodes.length; i++) { + if (this.nodes[i].isOverlappingWith(obj)) { + var sel = {"row": i}; + overlappingNodes.push(sel); + } + } + + return overlappingNodes; +}; + +/** + * retrieve the currently selected nodes + * @return {Object[]} an array with zero or more objects. Each object + * contains the parameter row + */ +Graph.prototype.getSelection = function() { + var selection = []; + + for (var i = 0; i < this.selection.length; i++) { + var row = this.selection[i].row; + selection.push({"row": row}); + } + + return selection; +}; + +/** + * select zero or more nodes + * @param {object[]} selection an array with zero or more objects. Each object + * contains the parameter row + */ +Graph.prototype.setSelection = function(selection) { + var i, iMax, row; + + if (selection.length == undefined) + throw "Selection must be an array with objects"; + + // first unselect any selected node + for (i = 0, iMax = this.selection.length; i < iMax; i++) { + row = this.selection[i].row; + this.nodes[row].unselect(); + } + + this.selection = []; + + for (i = 0, iMax = selection.length; i < iMax; i++) { + row = selection[i].row; + + if (row == undefined) + throw "Parameter row missing in selection object"; + if (row > this.nodes.length-1) + throw "Parameter row out of range"; + + var sel = {"row": row}; + this.selection.push(sel); + this.nodes[row].select(); + } + + this.redraw(); +}; + + +/** + * Temporary method to test calculating a hub value for the nodes + * @param {number} level Maximum number edges between two nodes in order + * to call them connected. Optional, 1 by default + * @return {Number[]} connectioncount array with the connection count + * for each node + * @private + */ +Graph.prototype._getConnectionCount = function(level) { + var conn = this.edges; + if (level == undefined) { + level = 1; + } + + // get the nodes connected to given nodes + function getConnectedNodes(nodes) { + var connectedNodes = []; + + for (var j = 0, jMax = nodes.length; j < jMax; j++) { + var node = nodes[j]; + + // find all nodes connected to this node + for (var i = 0, iMax = conn.length; i < iMax; i++) { + var other = null; + + // check if connected + if (conn[i].from == node) + other = conn[i].to; + else if (conn[i].to == node) + other = conn[i].from; + + // check if the other node is not already in the list with nodes + var k, kMax; + if (other) { + for (k = 0, kMax = nodes.length; k < kMax; k++) { + if (nodes[k] == other) { + other = null; + break; + } + } + } + if (other) { + for (k = 0, kMax = connectedNodes.length; k < kMax; k++) { + if (connectedNodes[k] == other) { + other = null; + break; + } + } + } + + if (other) + connectedNodes.push(other); + } + } + + return connectedNodes; + } + + var connections = []; + var level0 = []; + var nodes = this.nodes; + var i, iMax; + for (i = 0, iMax = nodes.length; i < iMax; i++) { + var c = [nodes[i]]; + for (var l = 0; l < level; l++) { + c = c.concat(getConnectedNodes(c)); + } + connections.push(c); + } + + var hubs = []; + for (i = 0, len = connections.length; i < len; i++) { + hubs.push(connections[i].length); + } + + return hubs; +}; + + +/** + * Set a new size for the graph + * @param {string} width Width in pixels or percentage (for example "800px" + * or "50%") + * @param {string} height Height in pixels or percentage (for example "400px" + * or "30%") + */ +Graph.prototype.setSize = function(width, height) { + this.frame.style.width = width; + this.frame.style.height = height; + + this.frame.canvas.style.width = "100%"; + this.frame.canvas.style.height = "100%"; + + this.frame.canvas.width = this.frame.canvas.clientWidth; + this.frame.canvas.height = this.frame.canvas.clientHeight; +}; + +/** + * Set a data set with nodes for the graph + * @param {Array} nodes The data containing the nodes. + * @private + */ +Graph.prototype._setNodes = function(nodes) { + this.selection = []; + this.nodes = []; + this.moving = false; + if (!nodes) { + return; + } + + var hasValues = false; + var rowCount = nodes.length; + for (var i = 0; i < rowCount; i++) { + var properties = nodes[i]; + + if (properties.value != undefined) { + hasValues = true; + } + if (properties.id == undefined) { + throw "Column 'id' missing in table with nodes (row " + i + ")"; + } + this._createNode(properties); + } + + // calculate scaling function when value is provided + if (hasValues) { + this._updateValueRange(this.nodes); + } + + // give the nodes some first (random) position + this._reposition(); // TODO: bad solution +}; + +/** + * Create a node with the given properties + * If the new node has an id identical to an existing node, the existing + * node will be overwritten. + * The properties can contain a property "action", which can have values + * "create", "update", or "delete" + * @param {Object} properties An object with properties + * @private + */ +Graph.prototype._createNode = function(properties) { + var action = properties.action ? properties.action : "update"; + var id, index, newNode, oldNode; + + if (action === "create") { + // create the node + newNode = new Node(properties, this.images, this.groups, this.constants); + id = properties.id; + index = (id !== undefined) ? this._findNode(id) : undefined; + + if (index !== undefined) { + // replace node + oldNode = this.nodes[index]; + this.nodes[index] = newNode; + + // remove selection of old node + if (oldNode.selected) { + this._unselectNodes([{'row': index}], false); + } + + /* TODO: implement this? -> will give performance issues, searching all edges and nodes... + // update edges linking to this node + var edgesTable = this.edges; + for (var i = 0, iMax = edgesTable.length; i < iMax; i++) { + var edge = edgesTable[i]; + if (edge.from == oldNode) { + edge.from = newNode; + } + if (edge.to == oldNode) { + edge.to = newNode; + } + } + */ + } + else { + // add new node + this.nodes.push(newNode); + } + + if (!newNode.isFixed()) { + // note: no not use node.isMoving() here, as that gives the current + // velocity of the node, which is zero after creation of the node. + this.moving = true; + } + } + else if (action === "update") { + // update existing node, or create it when not yet existing + id = properties.id; + if (id === undefined) { + throw "Cannot update a node without id"; + } + + index = this._findNode(id); + if (index !== undefined) { + // update node + this.nodes[index].setProperties(properties, this.constants); + } + else { + // create node + newNode = new Node(properties, this.images, this.groups, this.constants); + this.nodes.push(newNode); + + if (!newNode.isFixed()) { + // note: no not use node.isMoving() here, as that gives the current + // velocity of the node, which is zero after creation of the node. + this.moving = true; + } + } + } + else if (action === "delete") { + // delete existing node + id = properties.id; + if (id === undefined) { + throw "Cannot delete node without its id"; + } + + index = this._findNode(id); + if (index !== undefined) { + oldNode = this.nodes[index]; + // remove selection of old node + if (oldNode.selected) { + this._unselectNodes([{'row': index}], false); + } + this.nodes.splice(index, 1); + } + else { + throw "Node with id " + id + " not found"; + } + } + else { + throw "Unknown action " + action + ". Choose 'create', 'update', or 'delete'."; + } +}; + +/** + * Find a node by its id + * @param {Number} id Id of the node + * @return {Number | undefined} index Index of the node in the array + * this.nodes, or undefined when not found + * @private + */ +Graph.prototype._findNode = function (id) { + var nodes = this.nodes; + for (var n = 0, len = nodes.length; n < len; n++) { + if (nodes[n].id === id) { + return n; + } + } + + return undefined; +}; + +/** + * Find a node by its rowNumber + * @param {Number} row Row number of the node + * @return {Node} node     The node with the given row number, or + *                            undefined when not found. + * @private + */ +Graph.prototype._findNodeByRow = function (row) { + return this.nodes[row]; +}; + +/** + * Load edges by reading the data table + * @param {Array} edges The data containing the edges. + * @private + * @private + */ +Graph.prototype._setEdges = function(edges) { + this.edges = []; + if (!edges) { + return; + } + + var hasValues = false; + var rowCount = edges.length; + for (var i = 0; i < rowCount; i++) { + var properties = edges[i]; + + if (properties.from === undefined) { + throw "Column 'from' missing in table with edges (row " + i + ")"; + } + if (properties.to === undefined) { + throw "Column 'to' missing in table with edges (row " + i + ")"; + } + if (properties.value != undefined) { + hasValues = true; + } + + this._createEdge(properties); + } + + // calculate scaling function when value is provided + if (hasValues) { + this._updateValueRange(this.edges); + } +}; + +/** + * Create a edge with the given properties + * If the new edge has an id identical to an existing edge, the existing + * edge will be overwritten or updated. + * The properties can contain a property "action", which can have values + * "create", "update", or "delete" + * @param {Object} properties An object with properties + * @private + */ +Graph.prototype._createEdge = function(properties) { + var action = properties.action ? properties.action : "create"; + var id, index, edge, oldEdge, newEdge; + + if (action === "create") { + // create the edge, or replace it if already existing + id = properties.id; + index = (id !== undefined) ? this._findEdge(id) : undefined; + edge = new Edge(properties, this, this.constants); + + if (index !== undefined) { + // replace existing edge + oldEdge = this.edges[index]; + oldEdge.from.detachEdge(oldEdge); + oldEdge.to.detachEdge(oldEdge); + this.edges[index] = edge; + } + else { + // add new edge + this.edges.push(edge); + } + edge.from.attachEdge(edge); + edge.to.attachEdge(edge); + } + else if (action === "update") { + // update existing edge, or create the edge if not existing + id = properties.id; + if (id === undefined) { + throw "Cannot update a edge without id"; + } + + index = this._findEdge(id); + if (index !== undefined) { + // update edge + edge = this.edges[index]; + edge.from.detachEdge(edge); + edge.to.detachEdge(edge); + + edge.setProperties(properties, this.constants); + edge.from.attachEdge(edge); + edge.to.attachEdge(edge); + } + else { + // add new edge + edge = new Edge(properties, this, this.constants); + edge.from.attachEdge(edge); + edge.to.attachEdge(edge); + this.edges.push(edge); + } + } + else if (action === "delete") { + // delete existing edge + id = properties.id; + if (id === undefined) { + throw "Cannot delete edge without its id"; + } + + index = this._findEdge(id); + if (index !== undefined) { + oldEdge = this.edges[id]; + edge.from.detachEdge(oldEdge); + edge.to.detachEdge(oldEdge); + this.edges.splice(index, 1); + } + else { + throw "Edge with id " + id + " not found"; + } + } + else { + throw "Unknown action " + action + ". Choose 'create', 'update', or 'delete'."; + } +}; + +/** + * Update the references to oldNode in all edges. + * @param {Node} oldNode + * @param {Node} newNode + * @private + */ +// TODO: start utilizing this method _updateNodeReferences +Graph.prototype._updateNodeReferences = function(oldNode, newNode) { + var edges = this.edges; + for (var i = 0, iMax = edges.length; i < iMax; i++) { + var edge = edges[i]; + if (edge.from === oldNode) { + edge.from = newNode; + } + if (edge.to === oldNode) { + edge.to = newNode; + } + } +}; + +/** + * Find a edge by its id + * @param {Number} id Id of the edge + * @return {Number | undefined} index Index of the edge in the array + * this.edges, or undefined when not found + * @private + */ +Graph.prototype._findEdge = function (id) { + var edges = this.edges; + for (var n = 0, len = edges.length; n < len; n++) { + if (edges[n].id === id) { + return n; + } + } + + return undefined; +}; + +/** + * Find a edge by its row + * @param {Number} row Row of the edge + * @return {Edge | undefined} the found edge, or undefined when not found + * @private + */ +Graph.prototype._findEdgeByRow = function (row) { + return this.edges[row]; +}; + +/** + * Update the values of all object in the given array according to the current + * value range of the objects in the array. + * @param {Array} array. An array with objects like Edges or Nodes + * The objects must have a method getValue() and + * setValueRange(min, max). + * @private + */ +Graph.prototype._updateValueRange = function(array) { + var count = array.length; + var i; + + // determine the range of the node values + var valueMin = undefined; + var valueMax = undefined; + for (i = 0; i < count; i++) { + var value = array[i].getValue(); + if (value !== undefined) { + valueMin = (valueMin === undefined) ? value : Math.min(value, valueMin); + valueMax = (valueMax === undefined) ? value : Math.max(value, valueMax); + } + } + + // adjust the range of all nodes + if (valueMin !== undefined && valueMax !== undefined) { + for (i = 0; i < count; i++) { + array[i].setValueRange(valueMin, valueMax); + } + } +}; + +/** + * Redraw the graph with the current data + * chart will be resized too. + */ +Graph.prototype.redraw = function() { + this.setSize(this.width, this.height); + + this._redraw(); +}; + +/** + * Redraw the graph with the current data + * @private + */ +Graph.prototype._redraw = function() { + var ctx = this.frame.canvas.getContext("2d"); + + // clear the canvas + var w = this.frame.canvas.width; + var h = this.frame.canvas.height; + ctx.clearRect(0, 0, w, h); + + // set scaling and translation + ctx.save(); + ctx.translate(this.translation.x, this.translation.y); + ctx.scale(this.scale, this.scale); + + this._drawEdges(ctx); + this._drawNodes(ctx); + + // restore original scaling and translation + ctx.restore(); +}; + +/** + * Set the translation of the graph + * @param {Number} offsetX Horizontal offset + * @param {Number} offsetY Vertical offset + * @private + */ +Graph.prototype._setTranslation = function(offsetX, offsetY) { + if (this.translation === undefined) { + this.translation = { + "x": 0, + "y": 0 + }; + } + + if (offsetX !== undefined) { + this.translation.x = offsetX; + } + if (offsetY !== undefined) { + this.translation.y = offsetY; + } +}; + +/** + * Get the translation of the graph + * @return {Object} translation An object with parameters x and y, both a number + * @private + */ +Graph.prototype._getTranslation = function() { + return { + "x": this.translation.x, + "y": this.translation.y + }; +}; + +/** + * Scale the graph + * @param {Number} scale Scaling factor 1.0 is unscaled + * @private + */ +Graph.prototype._setScale = function(scale) { + this.scale = scale; +}; +/** + * Get the current scale of the graph + * @return {Number} scale Scaling factor 1.0 is unscaled + * @private + */ +Graph.prototype._getScale = function() { + return this.scale; +}; + +Graph.prototype._xToCanvas = function(x) { + return (x - this.translation.x) / this.scale; +}; + +Graph.prototype._canvasToX = function(x) { + return x * this.scale + this.translation.x; +}; + +Graph.prototype._yToCanvas = function(y) { + return (y - this.translation.y) / this.scale; +}; + +Graph.prototype._canvasToY = function(y) { + return y * this.scale + this.translation.y ; +}; + + + +/** + * Get a node by its id + * @param {number} id + * @return {Node} node, or null if not found + * @private + */ +Graph.prototype._getNode = function(id) { + for (var i = 0; i < this.nodes.length; i++) { + if (this.nodes[i].id == id) + return this.nodes[i]; + } + + return null; +}; + +/** + * Redraw all nodes + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + * @private + */ +Graph.prototype._drawNodes = function(ctx) { + // first draw the unselected nodes + var nodes = this.nodes; + var selected = []; + for (var i = 0, iMax = nodes.length; i < iMax; i++) { + if (nodes[i].isSelected()) { + selected.push(i); + } + else { + nodes[i].draw(ctx); + } + } + + // draw the selected nodes on top + for (var s = 0, sMax = selected.length; s < sMax; s++) { + nodes[selected[s]].draw(ctx); + } +}; + +/** + * Redraw all edges + * The 2d context of a HTML canvas can be retrieved by canvas.getContext("2d"); + * @param {CanvasRenderingContext2D} ctx + * @private + */ +Graph.prototype._drawEdges = function(ctx) { + var edges = this.edges; + for (var i = 0, iMax = edges.length; i < iMax; i++) { + edges[i].draw(ctx); + } +}; + +/** + * Recalculate the best positions for all nodes + * @private + */ +Graph.prototype._reposition = function() { + // TODO: implement function reposition + + + /* + var w = this.frame.canvas.clientWidth; + var h = this.frame.canvas.clientHeight; + for (var i = 0; i < this.nodes.length; i++) { + if (!this.nodes[i].xFixed) this.nodes[i].x = w * Math.random(); + if (!this.nodes[i].yFixed) this.nodes[i].y = h * Math.random(); + } + //*/ + + //* + // TODO + var radius = this.constants.edges.length * 2; + var cx = this.frame.canvas.clientWidth / 2; + var cy = this.frame.canvas.clientHeight / 2; + for (var i = 0; i < this.nodes.length; i++) { + var angle = 2*Math.PI * (i / this.nodes.length); + + if (!this.nodes[i].xFixed) this.nodes[i].x = cx + radius * Math.cos(angle); + if (!this.nodes[i].yFixed) this.nodes[i].y = cy + radius * Math.sin(angle); + + } + //*/ + + /* + // TODO + var radius = this.constants.edges.length * 2; + var w = this.frame.canvas.clientWidth, + h = this.frame.canvas.clientHeight; + var cx = this.frame.canvas.clientWidth / 2; + var cy = this.frame.canvas.clientHeight / 2; + var s = Math.sqrt(this.nodes.length); + for (var i = 0; i < this.nodes.length; i++) { + //var angle = 2*Math.PI * (i / this.nodes.length); + + if (!this.nodes[i].xFixed) this.nodes[i].x = w/s * (i % s); + if (!this.nodes[i].yFixed) this.nodes[i].y = h/s * (i / s); + } + //*/ + + + /* + var cx = this.frame.canvas.clientWidth / 2; + var cy = this.frame.canvas.clientHeight / 2; + for (var i = 0; i < this.nodes.length; i++) { + this.nodes[i].x = cx; + this.nodes[i].y = cy; + } + + //*/ + +}; + + +/** + * Find a stable position for all nodes + * @private + */ +Graph.prototype._doStabilize = function() { + var start = new Date(); + + // find stable position + var count = 0; + var vmin = this.constants.minVelocity; + var stable = false; + while (!stable && count < this.constants.maxIterations) { + this._calculateForces(); + this._discreteStepNodes(); + stable = !this._isMoving(vmin); + count++; + } + + var end = new Date(); + + // console.log("Stabilized in " + (end-start) + " ms, " + count + " iterations" ); // TODO: cleanup +}; + +/** + * Calculate the external forces acting on the nodes + * Forces are caused by: edges, repulsing forces between nodes, gravity + * @private + */ +Graph.prototype._calculateForces = function() { + // create a local edge to the nodes and edges, that is faster + var nodes = this.nodes, + edges = this.edges; + + // gravity, add a small constant force to pull the nodes towards the center of + // the graph + // Also, the forces are reset to zero in this loop by using _setForce instead + // of _addForce + var gravity = 0.01, + gx = this.frame.canvas.clientWidth / 2, + gy = this.frame.canvas.clientHeight / 2; + for (var n = 0; n < nodes.length; n++) { + var dx = gx - nodes[n].x, + dy = gy - nodes[n].y, + angle = Math.atan2(dy, dx), + fx = Math.cos(angle) * gravity, + fy = Math.sin(angle) * gravity; + + this.nodes[n]._setForce(fx, fy); + } + + // repulsing forces between nodes + var minimumDistance = this.constants.nodes.distance, + steepness = 10; // higher value gives steeper slope of the force around the given minimumDistance + for (var n = 0; n < nodes.length; n++) { + for (var n2 = n + 1; n2 < this.nodes.length; n2++) { + //var dmin = (nodes[n].width + nodes[n].height + nodes[n2].width + nodes[n2].height) / 1 || minimumDistance, // TODO: dmin + //var dmin = (nodes[n].width + nodes[n2].width)/2 || minimumDistance, // TODO: dmin + //dmin = 40 + ((nodes[n].width/2 + nodes[n2].width/2) || 0), + + // calculate normally distributed force + var dx = nodes[n2].x - nodes[n].x, + dy = nodes[n2].y - nodes[n].y, + distance = Math.sqrt(dx * dx + dy * dy), + angle = Math.atan2(dy, dx), + + // TODO: correct factor for repulsing force + //var repulsingforce = 2 * Math.exp(-5 * (distance * distance) / (dmin * dmin) ); // TODO: customize the repulsing force + //repulsingforce = Math.exp(-1 * (distance * distance) / (dmin * dmin) ), // TODO: customize the repulsing force + repulsingforce = 1 / (1 + Math.exp((distance / minimumDistance - 1) * steepness)), // TODO: customize the repulsing force + fx = Math.cos(angle) * repulsingforce, + fy = Math.sin(angle) * repulsingforce; + + this.nodes[n]._addForce(-fx, -fy); + this.nodes[n2]._addForce(fx, fy); + } + /* TODO: re-implement repulsion of edges + for (var l = 0; l < edges.length; l++) { + var lx = edges[l].from.x+(edges[l].to.x - edges[l].from.x)/2, + ly = edges[l].from.y+(edges[l].to.y - edges[l].from.y)/2, + + // calculate normally distributed force + dx = nodes[n].x - lx, + dy = nodes[n].y - ly, + distance = Math.sqrt(dx * dx + dy * dy), + angle = Math.atan2(dy, dx), + + + // TODO: correct factor for repulsing force + //var repulsingforce = 2 * Math.exp(-5 * (distance * distance) / (dmin * dmin) ); // TODO: customize the repulsing force + //repulsingforce = Math.exp(-1 * (distance * distance) / (dmin * dmin) ), // TODO: customize the repulsing force + repulsingforce = 1 / (1 + Math.exp((distance / (minimumDistance / 2) - 1) * steepness)), // TODO: customize the repulsing force + fx = Math.cos(angle) * repulsingforce, + fy = Math.sin(angle) * repulsingforce; + nodes[n]._addForce(fx, fy); + edges[l].from._addForce(-fx/2,-fy/2); + edges[l].to._addForce(-fx/2,-fy/2); + } + */ + } + + // forces caused by the edges, modelled as springs + for (var l = 0, lMax = edges.length; l < lMax; l++) { + var edge = edges[l], + + dx = (edge.to.x - edge.from.x), + dy = (edge.to.y - edge.from.y), + //edgeLength = (edge.from.width + edge.from.height + edge.to.width + edge.to.height)/2 || edge.length, // TODO: dmin + //edgeLength = (edge.from.width + edge.to.width)/2 || edge.length, // TODO: dmin + //edgeLength = 20 + ((edge.from.width + edge.to.width) || 0) / 2, + edgeLength = edge.length, + length = Math.sqrt(dx * dx + dy * dy), + angle = Math.atan2(dy, dx), + + springforce = edge.stiffness * (edgeLength - length), + + fx = Math.cos(angle) * springforce, + fy = Math.sin(angle) * springforce; + + edge.from._addForce(-fx, -fy); + edge.to._addForce(fx, fy); + } + + /* TODO: re-implement repulsion of edges + // repulsing forces between edges + var minimumDistance = this.constants.edges.distance, + steepness = 10; // higher value gives steeper slope of the force around the given minimumDistance + for (var l = 0; l < edges.length; l++) { + //Keep distance from other edge centers + for (var l2 = l + 1; l2 < this.edges.length; l2++) { + //var dmin = (nodes[n].width + nodes[n].height + nodes[n2].width + nodes[n2].height) / 1 || minimumDistance, // TODO: dmin + //var dmin = (nodes[n].width + nodes[n2].width)/2 || minimumDistance, // TODO: dmin + //dmin = 40 + ((nodes[n].width/2 + nodes[n2].width/2) || 0), + var lx = edges[l].from.x+(edges[l].to.x - edges[l].from.x)/2, + ly = edges[l].from.y+(edges[l].to.y - edges[l].from.y)/2, + l2x = edges[l2].from.x+(edges[l2].to.x - edges[l2].from.x)/2, + l2y = edges[l2].from.y+(edges[l2].to.y - edges[l2].from.y)/2, + + // calculate normally distributed force + dx = l2x - lx, + dy = l2y - ly, + distance = Math.sqrt(dx * dx + dy * dy), + angle = Math.atan2(dy, dx), + + + // TODO: correct factor for repulsing force + //var repulsingforce = 2 * Math.exp(-5 * (distance * distance) / (dmin * dmin) ); // TODO: customize the repulsing force + //repulsingforce = Math.exp(-1 * (distance * distance) / (dmin * dmin) ), // TODO: customize the repulsing force + repulsingforce = 1 / (1 + Math.exp((distance / minimumDistance - 1) * steepness)), // TODO: customize the repulsing force + fx = Math.cos(angle) * repulsingforce, + fy = Math.sin(angle) * repulsingforce; + + edges[l].from._addForce(-fx, -fy); + edges[l].to._addForce(-fx, -fy); + edges[l2].from._addForce(fx, fy); + edges[l2].to._addForce(fx, fy); + } + } + */ +}; + + +/** + * Check if any of the nodes is still moving + * @param {number} vmin the minimum velocity considered as "moving" + * @return {boolean} true if moving, false if non of the nodes is moving + * @private + */ +Graph.prototype._isMoving = function(vmin) { + // TODO: ismoving does not work well: should check the kinetic energy, not its velocity + var nodes = this.nodes; + for (var n = 0, nMax = nodes.length; n < nMax; n++) { + if (nodes[n].isMoving(vmin)) { + return true; + } + } + return false; +}; + + +/** + * Perform one discrete step for all nodes + * @private + */ +Graph.prototype._discreteStepNodes = function() { + var interval = this.refreshRate / 1000.0; // in seconds + var nodes = this.nodes; + for (var n = 0, nMax = nodes.length; n < nMax; n++) { + nodes[n].discreteStep(interval); + } +}; + +/** + * Start animating nodes and edges + */ +Graph.prototype.start = function() { + if (this.moving) { + this._calculateForces(); + this._discreteStepNodes(); + + var vmin = this.constants.minVelocity; + this.moving = this._isMoving(vmin); + } + + if (this.moving) { + // start animation. only start timer if it is not already running + if (!this.timer) { + var graph = this; + this.timer = window.setTimeout(function () { + graph.timer = undefined; + graph.start(); + graph._redraw(); + }, this.refreshRate); + } + } + else { + this._redraw(); + } +}; + +/** + * Stop animating nodes and edges. + */ +Graph.prototype.stop = function () { + if (this.timer) { + window.clearInterval(this.timer); + this.timer = undefined; + } +}; + +/** + * vis.js module exports + */ +var vis = { + util: util, + events: events, + + Controller: Controller, + DataSet: DataSet, + DataView: DataView, + Range: Range, + Stack: Stack, + TimeStep: TimeStep, + EventBus: EventBus, + + components: { + items: { + Item: Item, + ItemBox: ItemBox, + ItemPoint: ItemPoint, + ItemRange: ItemRange + }, + + Component: Component, + Panel: Panel, + RootPanel: RootPanel, + ItemSet: ItemSet, + TimeAxis: TimeAxis + }, + + graph: { + Node: Node, + Edge: Edge, + Popup: Popup, + Groups: Groups, + Images: Images + }, + + Timeline: Timeline, + Graph: Graph +}; + +/** + * CommonJS module exports + */ +if (typeof exports !== 'undefined') { + exports = vis; +} +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = vis; +} + +/** + * AMD module exports + */ +if (typeof(define) === 'function') { + define(function () { + return vis; + }); +} + +/** + * Window exports + */ +if (typeof window !== 'undefined') { + // attach the module to the window, load as a regular javascript file + window['vis'] = vis; +} + +// inject css +util.loadCss("/* vis.js stylesheet */\n\n.graph {\n position: relative;\n border: 1px solid #bfbfbf;\n}\n\n.graph .panel {\n position: absolute;\n}\n\n.graph .groupset {\n position: absolute;\n padding: 0;\n margin: 0;\n}\n\n\n.graph .itemset {\n position: absolute;\n padding: 0;\n margin: 0;\n overflow: hidden;\n}\n\n.graph .background {\n}\n\n.graph .foreground {\n}\n\n.graph .itemset-axis {\n position: absolute;\n}\n\n.graph .groupset .itemset-axis {\n border-top: 1px solid #bfbfbf;\n}\n\n/* TODO: with orientation=='bottom', this will more or less overlap with timeline axis\n.graph .groupset .itemset-axis:last-child {\n border-top: none;\n}\n*/\n\n\n.graph .item {\n position: absolute;\n color: #1A1A1A;\n border-color: #97B0F8;\n background-color: #D5DDF6;\n display: inline-block;\n}\n\n.graph .item.selected {\n border-color: #FFC200;\n background-color: #FFF785;\n z-index: 999;\n}\n\n.graph .item.cluster {\n /* TODO: use another color or pattern? */\n background: #97B0F8 url('img/cluster_bg.png');\n color: white;\n}\n.graph .item.cluster.point {\n border-color: #D5DDF6;\n}\n\n.graph .item.box {\n text-align: center;\n border-style: solid;\n border-width: 1px;\n border-radius: 5px;\n -moz-border-radius: 5px; /* For Firefox 3.6 and older */\n}\n\n.graph .item.point {\n background: none;\n}\n\n.graph .dot {\n border: 5px solid #97B0F8;\n position: absolute;\n border-radius: 5px;\n -moz-border-radius: 5px; /* For Firefox 3.6 and older */\n}\n\n.graph .item.range {\n overflow: hidden;\n border-style: solid;\n border-width: 1px;\n border-radius: 2px;\n -moz-border-radius: 2px; /* For Firefox 3.6 and older */\n}\n\n.graph .item.range .drag-left {\n cursor: w-resize;\n z-index: 1000;\n}\n\n.graph .item.range .drag-right {\n cursor: e-resize;\n z-index: 1000;\n}\n\n.graph .item.range .content {\n position: relative;\n display: inline-block;\n}\n\n.graph .item.line {\n position: absolute;\n width: 0;\n border-left-width: 1px;\n border-left-style: solid;\n}\n\n.graph .item .content {\n margin: 5px;\n white-space: nowrap;\n overflow: hidden;\n}\n\n/* TODO: better css name, 'graph' is way to generic */\n\n.graph {\n overflow: hidden;\n}\n\n.graph .axis {\n position: relative;\n}\n\n.graph .axis .text {\n position: absolute;\n color: #4d4d4d;\n padding: 3px;\n white-space: nowrap;\n}\n\n.graph .axis .text.measure {\n position: absolute;\n padding-left: 0;\n padding-right: 0;\n margin-left: 0;\n margin-right: 0;\n visibility: hidden;\n}\n\n.graph .axis .grid.vertical {\n position: absolute;\n width: 0;\n border-right: 1px solid;\n}\n\n.graph .axis .grid.horizontal {\n position: absolute;\n left: 0;\n width: 100%;\n height: 0;\n border-bottom: 1px solid;\n}\n\n.graph .axis .grid.minor {\n border-color: #e5e5e5;\n}\n\n.graph .axis .grid.major {\n border-color: #bfbfbf;\n}\n\n"); + +})() +},{"moment":2}],2:[function(require,module,exports){ +(function(){// moment.js +// version : 2.0.0 +// author : Tim Wood +// license : MIT +// momentjs.com + +(function (undefined) { + + /************************************ + Constants + ************************************/ + + var moment, + VERSION = "2.0.0", + round = Math.round, i, + // internal storage for language config files + languages = {}, + + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module.exports), + + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + + // format tokens + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYY|YYYY|YY|a|A|hh?|HH?|mm?|ss?|SS?S?|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, + + // parsing tokens + parseMultipleFormatChunker = /([0-9a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)/gi, + + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenWord = /[0-9]*[a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF]+\s*?[\u0600-\u06FF]+/i, // any word (or two) characters or numbers including two word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/i, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO seperator) + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + + // preliminary iso regex + // 0000-00-00 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 + isoRegex = /^\s*\d{4}-\d\d-\d\d((T| )(\d\d(:\d\d(:\d\d(\.\d\d?\d?)?)?)?)?([\+\-]\d\d:?\d\d)?)?/, + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.S', /(T| )\d\d:\d\d:\d\d\.\d{1,3}/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], + + // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, + + // getter and setter names + proxyGettersAndSetters = 'Month|Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 + }, + + // format function strings + formatFunctions = {}, + + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), + + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.lang().monthsShort(this, format); + }, + MMMM : function (format) { + return this.lang().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.lang().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.lang().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.lang().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + a : function () { + return this.lang().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.lang().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return ~~(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(~~(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = -this.zone(), + b = "+"; + if (a < 0) { + a = -a; + b = "-"; + } + return b + leftZeroFill(~~(a / 60), 2) + ":" + leftZeroFill(~~a % 60, 2); + }, + ZZ : function () { + var a = -this.zone(), + b = "+"; + if (a < 0) { + a = -a; + b = "-"; + } + return b + leftZeroFill(~~(10 * a / 6), 4); + }, + X : function () { + return this.unix(); + } + }; + + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func) { + return function (a) { + return this.lang().ordinal(func.call(this, a)); + }; + } + + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i]); + } + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); + + + /************************************ + Constructors + ************************************/ + + function Language() { + + } + + // Moment prototype object + function Moment(config) { + extend(this, config); + } + + // Duration Constructor + function Duration(duration) { + var data = this._data = {}, + years = duration.years || duration.year || duration.y || 0, + months = duration.months || duration.month || duration.M || 0, + weeks = duration.weeks || duration.week || duration.w || 0, + days = duration.days || duration.day || duration.d || 0, + hours = duration.hours || duration.hour || duration.h || 0, + minutes = duration.minutes || duration.minute || duration.m || 0, + seconds = duration.seconds || duration.second || duration.s || 0, + milliseconds = duration.milliseconds || duration.millisecond || duration.ms || 0; + + // representation for dateAddRemove + this._milliseconds = milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = months + + years * 12; + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + seconds += absRound(milliseconds / 1000); + + data.seconds = seconds % 60; + minutes += absRound(seconds / 60); + + data.minutes = minutes % 60; + hours += absRound(minutes / 60); + + data.hours = hours % 24; + days += absRound(hours / 24); + + days += weeks * 7; + data.days = days % 30; + + months += absRound(days / 30); + + data.months = months % 12; + years += absRound(months / 12); + + data.years = years; + } + + + /************************************ + Helpers + ************************************/ + + + function extend(a, b) { + for (var i in b) { + if (b.hasOwnProperty(i)) { + a[i] = b[i]; + } + } + return a; + } + + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } + + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength) { + var output = number + ''; + while (output.length < targetLength) { + output = '0' + output; + } + return output; + } + + // helper function for _.addTime and _.subtractTime + function addOrSubtractDurationFromMoment(mom, duration, isAdding) { + var ms = duration._milliseconds, + d = duration._days, + M = duration._months, + currentDate; + + if (ms) { + mom._d.setTime(+mom + ms * isAdding); + } + if (d) { + mom.date(mom.date() + d * isAdding); + } + if (M) { + currentDate = mom.date(); + mom.date(1) + .month(mom.month() + M * isAdding) + .date(Math.min(currentDate, mom.daysInMonth())); + } + } + + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } + + // compare two arrays, return the number of differences + function compareArrays(array1, array2) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if (~~array1[i] !== ~~array2[i]) { + diffs++; + } + } + return diffs + lengthDiff; + } + + + /************************************ + Languages + ************************************/ + + + Language.prototype = { + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + }, + + _months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + months : function (m) { + return this._months[m.month()]; + }, + + _monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, + + monthsParse : function (monthName) { + var i, mom, regex, output; + + if (!this._monthsParse) { + this._monthsParse = []; + } + + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + if (!this._monthsParse[i]) { + mom = moment([2000, i]); + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._monthsParse[i].test(monthName)) { + return i; + } + } + }, + + _weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, + + _weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, + + _weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, + + _longDateFormat : { + LT : "h:mm A", + L : "MM/DD/YYYY", + LL : "MMMM D YYYY", + LLL : "MMMM D YYYY LT", + LLLL : "dddd, MMMM D YYYY LT" + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; + } + return output; + }, + + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + }, + + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom) : output; + }, + + _relativeTime : { + future : "in %s", + past : "%s ago", + s : "a few seconds", + m : "a minute", + mm : "%d minutes", + h : "an hour", + hh : "%d hours", + d : "a day", + dd : "%d days", + M : "a month", + MM : "%d months", + y : "a year", + yy : "%d years" + }, + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, + + ordinal : function (number) { + return this._ordinal.replace("%d", number); + }, + _ordinal : "%d", + + preparse : function (string) { + return string; + }, + + postformat : function (string) { + return string; + }, + + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy); + }, + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }; + + // Loads a language definition into the `languages` cache. The function + // takes a key and optionally values. If not in the browser and no values + // are provided, it will load the language file module. As a convenience, + // this function also returns the language values. + function loadLang(key, values) { + values.abbr = key; + if (!languages[key]) { + languages[key] = new Language(); + } + languages[key].set(values); + return languages[key]; + } + + // Determines which language definition to use and returns it. + // + // With no parameters, it will return the global language. If you + // pass in a language key, such as 'en', it will return the + // definition for 'en', so long as 'en' has already been loaded using + // moment.lang. + function getLangDefinition(key) { + if (!key) { + return moment.fn._lang; + } + if (!languages[key] && hasModule) { + require('./lang/' + key); + } + return languages[key]; + } + + + /************************************ + Formatting + ************************************/ + + + function removeFormattingTokens(input) { + if (input.match(/\[.*\]/)) { + return input.replace(/^\[|\]$/g, ""); + } + return input.replace(/\\/g, ""); + } + + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = ""; + for (i = 0; i < length; i++) { + output += typeof array[i].call === 'function' ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } + + // format date using native date object + function formatMoment(m, format) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return m.lang().longDateFormat(input) || input; + } + + while (i-- && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + } + + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } + + return formatFunctions[format](m); + } + + + /************************************ + Parsing + ************************************/ + + + // get the regex to find the next token + function getParseRegexForToken(token) { + switch (token) { + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + return parseTokenFourDigits; + case 'YYYYY': + return parseTokenSixDigits; + case 'S': + case 'SS': + case 'SSS': + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + case 'a': + case 'A': + return parseTokenWord; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'MM': + case 'DD': + case 'YY': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + return parseTokenOneOrTwoDigits; + default : + return new RegExp(token.replace('\\', '')); + } + } + + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, b, + datePartArray = config._a; + + switch (token) { + // MONTH + case 'M' : // fall through to MM + case 'MM' : + datePartArray[1] = (input == null) ? 0 : ~~input - 1; + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = getLangDefinition(config._l).monthsParse(input); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[1] = a; + } else { + config._isValid = false; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DDDD + case 'DD' : // fall through to DDDD + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + datePartArray[2] = ~~input; + } + break; + // YEAR + case 'YY' : + datePartArray[0] = ~~input + (~~input > 68 ? 1900 : 2000); + break; + case 'YYYY' : + case 'YYYYY' : + datePartArray[0] = ~~input; + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._isPm = ((input + '').toLowerCase() === 'pm'); + break; + // 24 HOUR + case 'H' : // fall through to hh + case 'HH' : // fall through to hh + case 'h' : // fall through to hh + case 'hh' : + datePartArray[3] = ~~input; + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[4] = ~~input; + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[5] = ~~input; + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + datePartArray[6] = ~~ (('0.' + input) * 1000); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + a = (input + '').match(parseTimezoneChunker); + if (a && a[1]) { + config._tzh = ~~a[1]; + } + if (a && a[2]) { + config._tzm = ~~a[2]; + } + // reverse offsets + if (a && a[0] === '+') { + config._tzh = -config._tzh; + config._tzm = -config._tzm; + } + break; + } + + // if the input is null, the date is not valid + if (input == null) { + config._isValid = false; + } + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromArray(config) { + var i, date, input = []; + + if (config._d) { + return; + } + + for (i = 0; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // add the offsets to the time to be parsed so that we can have a clean array for checking isValid + input[3] += config._tzh || 0; + input[4] += config._tzm || 0; + + date = new Date(0); + + if (config._useUTC) { + date.setUTCFullYear(input[0], input[1], input[2]); + date.setUTCHours(input[3], input[4], input[5], input[6]); + } else { + date.setFullYear(input[0], input[1], input[2]); + date.setHours(input[3], input[4], input[5], input[6]); + } + + config._d = date; + } + + // date from string and format string + function makeDateFromStringAndFormat(config) { + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var tokens = config._f.match(formattingTokens), + string = config._i, + i, parsedInput; + + config._a = []; + + for (i = 0; i < tokens.length; i++) { + parsedInput = (getParseRegexForToken(tokens[i]).exec(string) || [])[0]; + if (parsedInput) { + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + } + // don't parse if its not a known token + if (formatTokenFunctions[tokens[i]]) { + addTimeToArrayFromToken(tokens[i], parsedInput, config); + } + } + // handle am pm + if (config._isPm && config._a[3] < 12) { + config._a[3] += 12; + } + // if is 12 am, change hours to 0 + if (config._isPm === false && config._a[3] === 12) { + config._a[3] = 0; + } + // return + dateFromArray(config); + } + + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + tempMoment, + bestMoment, + + scoreToBeat = 99, + i, + currentDate, + currentScore; + + while (config._f.length) { + tempConfig = extend({}, config); + tempConfig._f = config._f.pop(); + makeDateFromStringAndFormat(tempConfig); + tempMoment = new Moment(tempConfig); + + if (tempMoment.isValid()) { + bestMoment = tempMoment; + break; + } + + currentScore = compareArrays(tempConfig._a, tempMoment.toArray()); + + if (currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempMoment; + } + } + + extend(config, bestMoment); + } + + // date from iso format + function makeDateFromString(config) { + var i, + string = config._i; + if (isoRegex.exec(string)) { + config._f = 'YYYY-MM-DDT'; + for (i = 0; i < 4; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (parseTokenTimezone.exec(string)) { + config._f += " Z"; + } + makeDateFromStringAndFormat(config); + } else { + config._d = new Date(string); + } + } + + function makeDateFromInput(config) { + var input = config._i, + matched = aspNetJsonRegex.exec(input); + + if (input === undefined) { + config._d = new Date(); + } else if (matched) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = input.slice(0); + dateFromArray(config); + } else { + config._d = input instanceof Date ? new Date(+input) : new Date(input); + } + } + + + /************************************ + Relative Time + ************************************/ + + + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, lang) { + return lang.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + + function relativeTime(milliseconds, withoutSuffix, lang) { + var seconds = round(Math.abs(milliseconds) / 1000), + minutes = round(seconds / 60), + hours = round(minutes / 60), + days = round(hours / 24), + years = round(days / 365), + args = seconds < 45 && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < 45 && ['mm', minutes] || + hours === 1 && ['h'] || + hours < 22 && ['hh', hours] || + days === 1 && ['d'] || + days <= 25 && ['dd', days] || + days <= 45 && ['M'] || + days < 345 && ['MM', round(days / 30)] || + years === 1 && ['y'] || ['yy', years]; + args[2] = withoutSuffix; + args[3] = milliseconds > 0; + args[4] = lang; + return substituteTimeAgo.apply({}, args); + } + + + /************************************ + Week of Year + ************************************/ + + + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(); + + + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; + } + + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } + + return Math.ceil(moment(mom).add('d', daysToDayOfWeek).dayOfYear() / 7); + } + + + /************************************ + Top Level Functions + ************************************/ + + function makeMoment(config) { + var input = config._i, + format = config._f; + + if (input === null || input === '') { + return null; + } + + if (typeof input === 'string') { + config._i = input = getLangDefinition().preparse(input); + } + + if (moment.isMoment(input)) { + config = extend({}, input); + config._d = new Date(+input._d); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); + } else { + makeDateFromStringAndFormat(config); + } + } else { + makeDateFromInput(config); + } + + return new Moment(config); + } + + moment = function (input, format, lang) { + return makeMoment({ + _i : input, + _f : format, + _l : lang, + _isUTC : false + }); + }; + + // creating with utc + moment.utc = function (input, format, lang) { + return makeMoment({ + _useUTC : true, + _isUTC : true, + _l : lang, + _i : input, + _f : format + }); + }; + + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; + + // duration + moment.duration = function (input, key) { + var isDuration = moment.isDuration(input), + isNumber = (typeof input === 'number'), + duration = (isDuration ? input._data : (isNumber ? {} : input)), + ret; + + if (isNumber) { + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } + + ret = new Duration(duration); + + if (isDuration && input.hasOwnProperty('_lang')) { + ret._lang = input._lang; + } + + return ret; + }; + + // version number + moment.version = VERSION; + + // default format + moment.defaultFormat = isoFormat; + + // This function will load languages and then set the global language. If + // no arguments are passed in, it will simply return the current global + // language key. + moment.lang = function (key, values) { + var i; + + if (!key) { + return moment.fn._lang._abbr; + } + if (values) { + loadLang(key, values); + } else if (!languages[key]) { + getLangDefinition(key); + } + moment.duration.fn._lang = moment.fn._lang = getLangDefinition(key); + }; + + // returns language data + moment.langData = function (key) { + if (key && key._lang && key._lang._abbr) { + key = key._lang._abbr; + } + return getLangDefinition(key); + }; + + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment; + }; + + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; + + + /************************************ + Moment Prototype + ************************************/ + + + moment.fn = Moment.prototype = { + + clone : function () { + return moment(this); + }, + + valueOf : function () { + return +this._d; + }, + + unix : function () { + return Math.floor(+this._d / 1000); + }, + + toString : function () { + return this.format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); + }, + + toDate : function () { + return this._d; + }, + + toJSON : function () { + return moment.utc(this).format('YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + }, + + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, + + isValid : function () { + if (this._isValid == null) { + if (this._a) { + this._isValid = !compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()); + } else { + this._isValid = !isNaN(this._d.getTime()); + } + } + return !!this._isValid; + }, + + utc : function () { + this._isUTC = true; + return this; + }, + + local : function () { + this._isUTC = false; + return this; + }, + + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.lang().postformat(output); + }, + + add : function (input, val) { + var dur; + // switch args to support add('s', 1) and add(1, 's') + if (typeof input === 'string') { + dur = moment.duration(+val, input); + } else { + dur = moment.duration(input, val); + } + addOrSubtractDurationFromMoment(this, dur, 1); + return this; + }, + + subtract : function (input, val) { + var dur; + // switch args to support subtract('s', 1) and subtract(1, 's') + if (typeof input === 'string') { + dur = moment.duration(+val, input); + } else { + dur = moment.duration(input, val); + } + addOrSubtractDurationFromMoment(this, dur, -1); + return this; + }, + + diff : function (input, units, asFloat) { + var that = this._isUTC ? moment(input).utc() : moment(input).local(), + zoneDiff = (this.zone() - that.zone()) * 6e4, + diff, output; + + if (units) { + // standardize on singular form + units = units.replace(/s$/, ''); + } + + if (units === 'year' || units === 'month') { + diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2 + output = ((this.year() - that.year()) * 12) + (this.month() - that.month()); + output += ((this - moment(this).startOf('month')) - (that - moment(that).startOf('month'))) / diff; + if (units === 'year') { + output = output / 12; + } + } else { + diff = (this - that) - zoneDiff; + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? diff / 864e5 : // 1000 * 60 * 60 * 24 + units === 'week' ? diff / 6048e5 : // 1000 * 60 * 60 * 24 * 7 + diff; + } + return asFloat ? output : absRound(output); + }, + + from : function (time, withoutSuffix) { + return moment.duration(this.diff(time)).lang(this.lang()._abbr).humanize(!withoutSuffix); + }, + + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, + + calendar : function () { + var diff = this.diff(moment().startOf('day'), 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.lang().calendar(format, this)); + }, + + isLeapYear : function () { + var year = this.year(); + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + }, + + isDST : function () { + return (this.zone() < moment([this.year()]).zone() || + this.zone() < moment([this.year(), 5]).zone()); + }, + + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + return input == null ? day : + this.add({ d : input - day }); + }, + + startOf: function (units) { + units = units.replace(/s$/, ''); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } + + // weeks are a special case + if (units === 'week') { + this.day(0); + } + + return this; + }, + + endOf: function (units) { + return this.startOf(units).add(units.replace(/s?$/, 's'), 1).subtract('ms', 1); + }, + + isAfter: function (input, units) { + units = typeof units !== 'undefined' ? units : 'millisecond'; + return +this.clone().startOf(units) > +moment(input).startOf(units); + }, + + isBefore: function (input, units) { + units = typeof units !== 'undefined' ? units : 'millisecond'; + return +this.clone().startOf(units) < +moment(input).startOf(units); + }, + + isSame: function (input, units) { + units = typeof units !== 'undefined' ? units : 'millisecond'; + return +this.clone().startOf(units) === +moment(input).startOf(units); + }, + + zone : function () { + return this._isUTC ? 0 : this._d.getTimezoneOffset(); + }, + + daysInMonth : function () { + return moment.utc([this.year(), this.month() + 1, 0]).date(); + }, + + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add("d", (input - dayOfYear)); + }, + + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4); + return input == null ? week : this.add("d", (input - week) * 7); + }, + + week : function (input) { + var week = this.lang().week(this); + return input == null ? week : this.add("d", (input - week) * 7); + }, + + // If passed a language key, it will set the language for this + // instance. Otherwise, it will return the language configuration + // variables for this instance. + lang : function (key) { + if (key === undefined) { + return this._lang; + } else { + this._lang = getLangDefinition(key); + return this; + } + } + }; + + // helper for adding shortcuts + function makeGetterAndSetter(name, key) { + moment.fn[name] = moment.fn[name + 's'] = function (input) { + var utc = this._isUTC ? 'UTC' : ''; + if (input != null) { + this._d['set' + utc + key](input); + return this; + } else { + return this._d['get' + utc + key](); + } + }; + } + + // loop through and add shortcuts (Month, Date, Hours, Minutes, Seconds, Milliseconds) + for (i = 0; i < proxyGettersAndSetters.length; i ++) { + makeGetterAndSetter(proxyGettersAndSetters[i].toLowerCase().replace(/s$/, ''), proxyGettersAndSetters[i]); + } + + // add shortcut for year (uses different syntax than the getter/setter 'year' == 'FullYear') + makeGetterAndSetter('year', 'FullYear'); + + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + + /************************************ + Duration Prototype + ************************************/ + + + moment.duration.fn = Duration.prototype = { + weeks : function () { + return absRound(this.days() / 7); + }, + + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + this._months * 2592e6; + }, + + humanize : function (withSuffix) { + var difference = +this, + output = relativeTime(difference, !withSuffix, this.lang()); + + if (withSuffix) { + output = this.lang().pastFuture(difference, output); + } + + return this.lang().postformat(output); + }, + + lang : moment.fn.lang + }; + + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; + } + + function makeDurationAsGetter(name, factor) { + moment.duration.fn['as' + name] = function () { + return +this / factor; + }; + } + + for (i in unitMillisecondFactors) { + if (unitMillisecondFactors.hasOwnProperty(i)) { + makeDurationAsGetter(i, unitMillisecondFactors[i]); + makeDurationGetter(i.toLowerCase()); + } + } + + makeDurationAsGetter('Weeks', 6048e5); + + + /************************************ + Default Lang + ************************************/ + + + // Set default language, other languages will inherit from English. + moment.lang('en', { + ordinal : function (number) { + var b = number % 10, + output = (~~ (number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + + /************************************ + Exposing Moment + ************************************/ + + + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + } + /*global ender:false */ + if (typeof ender === 'undefined') { + // here, `this` means `window` in the browser, or `global` on the server + // add `moment` as a global object via a string identifier, + // for Closure Compiler "advanced" mode + this['moment'] = moment; + } + /*global define:false */ + if (typeof define === "function" && define.amd) { + define("moment", [], function () { + return moment; + }); + } +}).call(this); + +})() +},{}]},{},[1])(1) +}); +; \ No newline at end of file diff --git a/vis.min.js b/vis.min.js new file mode 100644 index 00000000..6ee20a95 --- /dev/null +++ b/vis.min.js @@ -0,0 +1,29 @@ +/** + * vis.js + * https://github.com/almende/vis + * + * A dynamic, browser-based visualization library. + * + * @version 0.0.9 + * @date 2013-06-07 + * + * @license + * Copyright (C) 2011-2013 Almende B.V, http://almende.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +(function(t){if("function"==typeof bootstrap)bootstrap("vis",t);else if("object"==typeof exports)module.exports=t();else if("function"==typeof define&&define.amd)define(t);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeVis=t}else"undefined"!=typeof window?window.vis=t():global.vis=t()})(function(){var t;return function(t,e,i){function s(i,n){if(!e[i]){if(!t[i]){var r="function"==typeof require&&require;if(!n&&r)return r(i,!0);if(o)return o(i,!0);throw Error("Cannot find module '"+i+"'")}var a=e[i]={exports:{}};t[i][0].call(a.exports,function(e){var o=t[i][1][e];return s(o?o:e)},a,a.exports)}return e[i].exports}for(var o="function"==typeof require&&require,n=0;i.length>n;n++)s(i[n]);return s}({1:[function(e,i,s){(function(){function o(){this.subscriptions=[]}function n(t){if(this.id=C.randomUUID(),this.options=t||{},this.data={},this.fieldId=this.options.fieldId||"id",this.fieldTypes={},this.options.fieldTypes)for(var e in this.options.fieldTypes)if(this.options.fieldTypes.hasOwnProperty(e)){var i=this.options.fieldTypes[e];this.fieldTypes[e]="Date"==i||"ISODate"==i||"ASPDate"==i?"Date":i}this.subscribers={},this.internalIds={}}function r(t,e){this.id=C.randomUUID(),this.data=null,this.ids={},this.options=e||{},this.fieldId="id",this.subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}function a(t,e){this.parent=t,this.options=e||{},this.defaultOptions={order:function(t,e){if(t instanceof y){if(e instanceof y){var i=t.data.end-t.data.start,s=e.data.end-e.data.start;return i-s||t.data.start-e.data.start}return-1}return e instanceof y?1:t.data.start-e.data.start},margin:{item:10}},this.ordered=[]}function h(t){this.id=C.randomUUID(),this.start=0,this.end=0,this.options={min:null,max:null,zoomMin:null,zoomMax:null},this.listeners=[],this.setOptions(t)}function d(){this.id=C.randomUUID(),this.components={},this.repaintTimer=void 0,this.reflowTimer=void 0}function l(){this.id=null,this.parent=null,this.depends=null,this.controller=null,this.options=null,this.frame=null,this.top=0,this.left=0,this.width=0,this.height=0}function p(t,e,i){this.id=C.randomUUID(),this.parent=t,this.depends=e,this.options=i||{}}function u(t,e){this.id=C.randomUUID(),this.container=t,this.options=e||{},this.defaultOptions={autoResize:!0},this.listeners={}}function c(t,e,i){this.id=C.randomUUID(),this.parent=t,this.depends=e,this.dom={majorLines:[],majorTexts:[],minorLines:[],minorTexts:[],redundant:{majorLines:[],majorTexts:[],minorLines:[],minorTexts:[]}},this.props={range:{start:0,end:0,minimumStep:0},lineTop:0},this.options=i||{},this.defaultOptions={orientation:"bottom",showMinorLabels:!0,showMajorLabels:!0},this.conversion=null,this.range=null}function f(t,e,i){this.id=C.randomUUID(),this.parent=t,this.depends=e,this.options=i||{},this.defaultOptions={type:"box",align:"center",orientation:"bottom",margin:{axis:20,item:10},padding:5},this.dom={};var s=this;this.itemsData=null,this.range=null,this.listeners={add:function(t,e,i){i!=s.id&&s._onAdd(e.items)},update:function(t,e,i){i!=s.id&&s._onUpdate(e.items)},remove:function(t,e,i){i!=s.id&&s._onRemove(e.items)}},this.items={},this.queue={},this.stack=new a(this,Object.create(this.options)),this.conversion=null}function m(t,e,i,s){this.parent=t,this.data=e,this.dom=null,this.options=i||{},this.defaultOptions=s||{},this.selected=!1,this.visible=!1,this.top=0,this.left=0,this.width=0,this.height=0}function g(t,e,i,s){this.props={dot:{left:0,top:0,width:0,height:0},line:{top:0,left:0,width:0,height:0}},m.call(this,t,e,i,s)}function v(t,e,i,s){this.props={dot:{top:0,width:0,height:0},content:{height:0,marginLeft:0}},m.call(this,t,e,i,s)}function y(t,e,i,s){this.props={content:{left:0,width:0}},m.call(this,t,e,i,s)}function w(t,e,i){this.id=C.randomUUID(),this.parent=t,this.groupId=e,this.itemsData=null,this.itemset=null,this.options=i||{},this.options.top=0,this.top=0,this.left=0,this.width=0,this.height=0}function b(t,e,i){this.id=C.randomUUID(),this.parent=t,this.depends=e,this.options=i||{},this.range=null,this.itemsData=null,this.groupsData=null,this.groups={},this.queue={};var s=this;this.listeners={add:function(t,e){s._onAdd(e.items)},update:function(t,e){s._onUpdate(e.items)},remove:function(t,e){s._onRemove(e.items)}}}function _(t,e,i){var s=this;if(this.options=C.extend({orientation:"bottom",min:null,max:null,zoomMin:10,zoomMax:31536e10,showMinorLabels:!0,showMajorLabels:!0,autoResize:!1},i),this.controller=new d,!t)throw Error("No container element provided");var o=Object.create(this.options);o.height=function(){return s.options.height?s.options.height:s.timeaxis.height+s.content.height},this.root=new u(t,o),this.controller.add(this.root);var n=E().hours(0).minutes(0).seconds(0).milliseconds(0);this.range=new h({start:n.clone().add("days",-3).valueOf(),end:n.clone().add("days",4).valueOf()}),this.range.subscribe(this.root,"move","horizontal"),this.range.subscribe(this.root,"zoom","horizontal"),this.range.on("rangechange",function(){var t=!0;s.controller.requestReflow(t)}),this.range.on("rangechanged",function(){var t=!0;s.controller.requestReflow(t)});var r=Object.create(o);r.range=this.range,this.timeaxis=new c(this.root,[],r),this.timeaxis.setRange(this.range),this.controller.add(this.timeaxis),this.setGroups(null),this.itemsData=null,this.groupsData=null,e&&this.setItems(e)}function x(t,e,i,s){this.selected=!1,this.edges=[],this.group=s.nodes.group,this.fontSize=s.nodes.fontSize,this.fontFace=s.nodes.fontFace,this.fontColor=s.nodes.fontColor,this.color=s.nodes.color,this.id=void 0,this.shape=s.nodes.shape,this.image=s.nodes.image,this.x=0,this.y=0,this.xFixed=!1,this.yFixed=!1,this.radius=s.nodes.radius,this.radiusFixed=!1,this.radiusMin=s.nodes.radiusMin,this.radiusMax=s.nodes.radiusMax,this.imagelist=e,this.grouplist=i,this.setProperties(t,s),this.mass=50,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.minForce=s.minForce,this.damping=.9}function T(t,e,i){if(!e)throw"No graph provided";this.graph=e,this.widthMin=i.edges.widthMin,this.widthMax=i.edges.widthMax,this.id=void 0,this.style=i.edges.style,this.title=void 0,this.width=i.edges.width,this.value=void 0,this.length=i.edges.length,this.dash=C.extend({},i.edges.dash),this.stiffness=void 0,this.color=i.edges.color,this.widthFixed=!1,this.lengthFixed=!1,this.setProperties(t,i)}function M(t,e,i,s){this.container=t?t:document.body,this.x=0,this.y=0,this.padding=5,void 0!==e&&void 0!==i&&this.setPosition(e,i),void 0!==s&&this.setText(s),this.frame=document.createElement("div");var o=this.frame.style;o.position="absolute",o.visibility="hidden",o.border="1px solid #666",o.color="black",o.padding=this.padding+"px",o.backgroundColor="#FFFFC6",o.borderRadius="3px",o.MozBorderRadius="3px",o.WebkitBorderRadius="3px",o.boxShadow="3px 3px 10px rgba(128, 128, 128, 0.5)",o.whiteSpace="nowrap",this.container.appendChild(this.frame)}function S(t,e,i){this.containerElement=t,this.width="100%",this.height="100%",this.refreshRate=50,this.stabilize=!0,this.selectable=!0,this.constants={nodes:{radiusMin:5,radiusMax:20,radius:5,distance:100,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"arial",color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"}},borderColor:"#2B7CE9",backgroundColor:"#97C2FC",highlightColor:"#D2E5FF",group:void 0},edges:{widthMin:1,widthMax:15,width:1,style:"line",color:"#343434",fontColor:"#343434",fontSize:14,fontFace:"arial",length:100,dash:{length:10,gap:5,altLength:void 0}},minForce:.05,minVelocity:.02,maxIterations:1e3};var s=this;this.nodes=[],this.edges=[],this.groups=new Groups,this.images=new Images,this.images.setOnloadCallback(function(){s._redraw()}),this.moving=!1,this.selection=[],this.timer=void 0,this._create(),this.setOptions(i),this.setData(e)}var E=e("moment"),C={};C.isNumber=function(t){return t instanceof Number||"number"==typeof t},C.isString=function(t){return t instanceof String||"string"==typeof t},C.isDate=function(t){if(t instanceof Date)return!0;if(C.isString(t)){var e=D.exec(t);if(e)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},C.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},C.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},C.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&void 0!==s[o]&&(t[o]=s[o])}return t},C.cast=function(t,e){var i;if(void 0===t)return void 0;if(null===t)return null;if(!e)return t;if("string"!=typeof e&&!(e instanceof String))throw Error("Type must be a string");switch(e){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t);case"string":case"String":return t+"";case"Date":if(C.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(E.isMoment(t))return new Date(t.valueOf());if(C.isString(t))return i=D.exec(t),i?new Date(Number(i[1])):E(t).toDate();throw Error("Cannot cast object of type "+C.getType(t)+" to type Date");case"Moment":if(C.isNumber(t))return E(t);if(t instanceof Date)return E(t.valueOf());if(E.isMoment(t))return E.clone();if(C.isString(t))return i=D.exec(t),i?E(Number(i[1])):E(t);throw Error("Cannot cast object of type "+C.getType(t)+" to type Date");case"ISODate":if(t instanceof Date)return t.toISOString();if(E.isMoment(t))return t.toDate().toISOString();if(C.isNumber(t)||C.isString(t))return E(t).toDate().toISOString();throw Error("Cannot cast object of type "+C.getType(t)+" to type ISODate");case"ASPDate":if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(C.isNumber(t)||C.isString(t))return"/Date("+E(t).valueOf()+")/";throw Error("Cannot cast object of type "+C.getType(t)+" to type ASPDate");default:throw Error("Cannot cast object of type "+C.getType(t)+' to type "'+e+'"')}};var D=/^\/?Date\((\-?\d+)/i;if(C.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":t instanceof Array?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},C.getAbsoluteLeft=function(t){for(var e=document.documentElement,i=document.body,s=t.offsetLeft,o=t.offsetParent;null!=o&&o!=i&&o!=e;)s+=o.offsetLeft,s-=o.scrollLeft,o=o.offsetParent;return s},C.getAbsoluteTop=function(t){for(var e=document.documentElement,i=document.body,s=t.offsetTop,o=t.offsetParent;null!=o&&o!=i&&o!=e;)s+=o.offsetTop,s-=o.scrollTop,o=o.offsetParent;return s},C.getPageY=function(t){if("pageY"in t)return t.pageY;var e;e="targetTouches"in t&&t.targetTouches.length?t.targetTouches[0].clientY:t.clientY;var i=document.documentElement,s=document.body;return e+(i&&i.scrollTop||s&&s.scrollTop||0)-(i&&i.clientTop||s&&s.clientTop||0)},C.getPageX=function(t){if("pageY"in t)return t.pageX;var e;e="targetTouches"in t&&t.targetTouches.length?t.targetTouches[0].clientX:t.clientX;var i=document.documentElement,s=document.body;return e+(i&&i.scrollLeft||s&&s.scrollLeft||0)-(i&&i.clientLeft||s&&s.clientLeft||0)},C.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},C.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},C.forEach=function(t,e){var i,s;if(t instanceof Array)for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},C.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},C.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},C.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},C.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},C.stopPropagation=function(t){t||(t=window.event),t.stopPropagation?t.stopPropagation():t.cancelBubble=!0},C.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},C.option={},C.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},C.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},C.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?t+"":e||null},C.option.asSize=function(t,e){return"function"==typeof t&&(t=t()),C.isString(t)?t:C.isNumber(t)?t+"px":e||null},C.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},C.loadCss=function(t){if("undefined"!=typeof document){var e=document.createElement("style");e.type="text/css",e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t)),document.getElementsByTagName("head")[0].appendChild(e)}},!Array.prototype.indexOf){Array.prototype.indexOf=function(t){for(var e=0;this.length>e;e++)if(this[e]==t)return e;return-1};try{console.log("Warning: Ancient browser detected. Please update your browser")}catch(L){}}Array.prototype.forEach||(Array.prototype.forEach=function(t,e){for(var i=0,s=this.length;s>i;++i)t.call(e||this,this[i],i,this)}),Array.prototype.map||(Array.prototype.map=function(t,e){var i,s,o;if(null==this)throw new TypeError(" this is null or not defined");var n=Object(this),r=n.length>>>0;if("function"!=typeof t)throw new TypeError(t+" is not a function");for(e&&(i=e),s=Array(r),o=0;r>o;){var a,h;o in n&&(a=n[o],h=t.call(i,a,o,n),s[o]=h),o++}return s}),Array.prototype.filter||(Array.prototype.filter=function(t){"use strict";if(null==this)throw new TypeError;var e=Object(this),i=e.length>>>0;if("function"!=typeof t)throw new TypeError;for(var s=[],o=arguments[1],n=0;i>n;n++)if(n in e){var r=e[n];t.call(o,r,n,e)&&s.push(r)}return s}),Object.keys||(Object.keys=function(){var t=Object.prototype.hasOwnProperty,e=!{toString:null}.propertyIsEnumerable("toString"),i=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],s=i.length;return function(o){if("object"!=typeof o&&"function"!=typeof o||null===o)throw new TypeError("Object.keys called on non-object");var n=[];for(var r in o)t.call(o,r)&&n.push(r);if(e)for(var a=0;s>a;a++)t.call(o,i[a])&&n.push(i[a]);return n}}()),Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),Function.prototype.bind||(Function.prototype.bind=function(t){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var e=Array.prototype.slice.call(arguments,1),i=this,s=function(){},o=function(){return i.apply(this instanceof s&&t?this:t,e.concat(Array.prototype.slice.call(arguments)))};return s.prototype=this.prototype,o.prototype=new s,o}),Object.create||(Object.create=function(t){function e(){}if(arguments.length>1)throw Error("Object.create implementation only accepts the first parameter.");return e.prototype=t,new e});var O={listeners:[],indexOf:function(t){for(var e=this.listeners,i=0,s=this.listeners.length;s>i;i++){var o=e[i];if(o&&o.object==t)return i}return-1},addListener:function(t,e,i){var s=this.indexOf(t),o=this.listeners[s];o||(o={object:t,events:{}},this.listeners.push(o));var n=o.events[e];n||(n=[],o.events[e]=n),-1==n.indexOf(i)&&n.push(i)},removeListener:function(t,e,i){var s=this.indexOf(t),o=this.listeners[s];if(o){var n=o.events[e];n&&(s=n.indexOf(i),-1!=s&&n.splice(s,1),0==n.length&&delete o.events[e]);var r=0,a=o.events;for(var h in a)a.hasOwnProperty(h)&&r++;0==r&&delete this.listeners[s]}},removeAllListeners:function(){this.listeners=[]},trigger:function(t,e,i){var s=this.indexOf(t),o=this.listeners[s];if(o){var n=o.events[e];if(n)for(var r=0,a=n.length;a>r;r++)n[r](i)}}};o.prototype.on=function(t,e,i){var s=t instanceof RegExp?t:RegExp(t.replace("*","\\w+")),o={id:C.randomUUID(),event:t,regexp:s,callback:"function"==typeof e?e:null,target:i};return this.subscriptions.push(o),o.id},o.prototype.off=function(t){for(var e=0;this.subscriptions.length>e;){var i=this.subscriptions[e],s=!0;if(t instanceof Object)for(var o in t)t.hasOwnProperty(o)&&t[o]!==i[o]&&(s=!1);else s=i.id==t;s?this.subscriptions.splice(e,1):e++}},o.prototype.emit=function(t,e,i){for(var s=0;this.subscriptions.length>s;s++){var o=this.subscriptions[s];o.regexp.test(t)&&o.callback&&o.callback(t,e,i)}},n.prototype.subscribe=function(t,e,i){var s=this.subscribers[t];s||(s=[],this.subscribers[t]=s),s.push({id:i?i+"":null,callback:e})},n.prototype.unsubscribe=function(t,e){var i=this.subscribers[t];i&&(this.subscribers[t]=i.filter(function(t){return t.callback!=e}))},n.prototype._trigger=function(t,e,i){if("*"==t)throw Error("Cannot trigger event *");var s=[];t in this.subscribers&&(s=s.concat(this.subscribers[t])),"*"in this.subscribers&&(s=s.concat(this.subscribers["*"]));for(var o=0;s.length>o;o++){var n=s[o];n.callback&&n.callback(t,e,i||null)}},n.prototype.add=function(t,e){var i,s=[],o=this;if(t instanceof Array)for(var n=0,r=t.length;r>n;n++)i=o._addItem(t[n]),s.push(i);else if(C.isDataTable(t))for(var a=this._getColumnNames(t),h=0,d=t.getNumberOfRows();d>h;h++){for(var l={},p=0,u=a.length;u>p;p++){var c=a[p];l[c]=t.getValue(h,p)}i=o._addItem(l),s.push(i)}else{if(!(t instanceof Object))throw Error("Unknown dataType");i=o._addItem(t),s.push(i)}s.length&&this._trigger("add",{items:s},e)},n.prototype.update=function(t,e){var i=[],s=[],o=this,n=o.fieldId,r=function(t){var e=t[n];o.data[e]?(e=o._updateItem(t),s.push(e)):(e=o._addItem(t),i.push(e))};if(t instanceof Array)for(var a=0,h=t.length;h>a;a++)r(t[a]);else if(C.isDataTable(t))for(var d=this._getColumnNames(t),l=0,p=t.getNumberOfRows();p>l;l++){for(var u={},c=0,f=d.length;f>c;c++){var m=d[c];u[m]=t.getValue(l,c)}r(u)}else{if(!(t instanceof Object))throw Error("Unknown dataType");r(t)}i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s},e)},n.prototype.get=function(){var t,e,i,s,o=this,n=C.getType(arguments[0]);"String"==n||"Number"==n?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==n?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var r;if(i&&i.type){if(r="DataTable"==i.type?"DataTable":"Array",s&&r!=C.getType(s))throw Error('Type of parameter "data" ('+C.getType(s)+") "+"does not correspond with specified options.type ("+i.type+")");if("DataTable"==r&&!C.isDataTable(s))throw Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else r=s?"DataTable"==C.getType(s)?"DataTable":"Array":"Array";var a,h,d,l,p=i&&i.fieldTypes||this.options.fieldTypes,u=i&&i.filter,c=[];if(void 0!=t)a=o._getItem(t,p),u&&!u(a)&&(a=null);else if(void 0!=e)for(d=0,l=e.length;l>d;d++)a=o._getItem(e[d],p),(!u||u(a))&&c.push(a);else for(h in this.data)this.data.hasOwnProperty(h)&&(a=o._getItem(h,p),(!u||u(a))&&c.push(a));if(i&&i.order&&void 0==t&&this._sort(c,i.order),i&&i.fields){var f=i.fields;if(void 0!=t)a=this._filterFields(a,f);else for(d=0,l=c.length;l>d;d++)c[d]=this._filterFields(c[d],f)}if("DataTable"==r){var m=this._getColumnNames(s);if(void 0!=t)o._appendRow(s,m,a);else for(d=0,l=c.length;l>d;d++)o._appendRow(s,m,c[d]);return s}if(void 0!=t)return a;if(s){for(d=0,l=c.length;l>d;d++)s.push(c[d]);return s}return c},n.prototype.getIds=function(t){var e,i,s,o,n,r=this.data,a=t&&t.filter,h=t&&t.order,d=t&&t.fieldTypes||this.options.fieldTypes,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this.fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this.fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this.fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this.fieldId]));return l},n.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.fieldTypes||this.options.fieldTypes,r=this.data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this.fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},n.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.fieldTypes||this.options.fieldTypes,n=[],r=this.data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},n.prototype._filterFields=function(t,e){var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},n.prototype._sort=function(t,e){if(C.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},n.prototype.remove=function(t,e){var i,s,o=[];if(C.isNumber(t)||C.isString(t))delete this.data[t],delete this.internalIds[t],o.push(t);else if(t instanceof Array){for(i=0,s=t.length;s>i;i++)this.remove(t[i]);o=items.concat(t)}else if(t instanceof Object)for(i in this.data)this.data.hasOwnProperty(i)&&this.data[i]==t&&(delete this.data[i],delete this.internalIds[i],o.push(i));o.length&&this._trigger("remove",{items:o},e)},n.prototype.clear=function(t){var e=Object.keys(this.data);this.data={},this.internalIds={},this._trigger("remove",{items:e},t)},n.prototype.max=function(t){var e=this.data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},n.prototype.min=function(t){var e=this.data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},n.prototype.distinct=function(t){var e=this.data,i=[],s=this.options.fieldTypes[t],o=0;for(var n in e)if(e.hasOwnProperty(n)){for(var r=e[n],a=C.cast(r[t],s),h=!1,d=0;o>d;d++)if(i[d]==a){h=!0;break}h||(i[o]=a,o++)}return i},n.prototype._addItem=function(t){var e=t[this.fieldId];if(void 0!=e){if(this.data[e])throw Error("Cannot add item: item with id "+e+" already exists")}else e=C.randomUUID(),t[this.fieldId]=e,this.internalIds[e]=t;var i={};for(var s in t)if(t.hasOwnProperty(s)){var o=this.fieldTypes[s];i[s]=C.cast(t[s],o)}return this.data[e]=i,e},n.prototype._getItem=function(t,e){var i,s,o=this.data[t];if(!o)return null;var n={},r=this.fieldId,a=this.internalIds;if(e)for(i in o)o.hasOwnProperty(i)&&(s=o[i],i==r&&s in a||(n[i]=C.cast(s,e[i])));else for(i in o)o.hasOwnProperty(i)&&(s=o[i],i==r&&s in a||(n[i]=s));return n},n.prototype._updateItem=function(t){var e=t[this.fieldId];if(void 0==e)throw Error("Cannot update item: item has no id (item: "+JSON.stringify(t)+")");var i=this.data[e];if(!i)throw Error("Cannot update item: no item with id "+e+" found");for(var s in t)if(t.hasOwnProperty(s)){var o=this.fieldTypes[s];i[s]=C.cast(t[s],o)}return e},n.prototype._getColumnNames=function(t){for(var e=[],i=0,s=t.getNumberOfColumns();s>i;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},n.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},r.prototype.setData=function(t){var e,i,s;if(this.data){this.data.unsubscribe&&this.data.unsubscribe("*",this.listener),e=[];for(var o in this.ids)this.ids.hasOwnProperty(o)&&e.push(o);this.ids={},this._trigger("remove",{items:e})}if(this.data=t,this.data){for(this.fieldId=this.options.fieldId||this.data&&this.data.options&&this.data.options.fieldId||"id",e=this.data.getIds({filter:this.options&&this.options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this.ids[o]=!0;this._trigger("add",{items:e}),this.data.subscribe&&this.data.subscribe("*",this.listener)}},r.prototype.get=function(){var t,e,i,s=this,o=C.getType(arguments[0]);"String"==o||"Number"==o||"Array"==o?(t=arguments[0],e=arguments[1],i=arguments[2]):(e=arguments[0],i=arguments[1]);var n=C.extend({},this.options,e);this.options.filter&&e&&e.filter&&(n.filter=function(t){return s.options.filter(t)&&e.filter(t)});var r=[];return void 0!=t&&r.push(t),r.push(n),r.push(i),this.data&&this.data.get.apply(this.data,r)},r.prototype.getIds=function(t){var e;if(this.data){var i,s=this.options.filter;i=t&&t.filter?s?function(e){return s(e)&&t.filter(e)}:t.filter:s,e=this.data.getIds({filter:i,order:t&&t.order})}else e=[];return e},r.prototype._onEvent=function(t,e,i){var s,o,n,r,a=e&&e.items,h=this.data,d=[],l=[],p=[];if(a&&h){switch(t){case"add":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r&&(this.ids[n]=!0,d.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this.ids[n]?l.push(n):(this.ids[n]=!0,d.push(n)):this.ids[n]&&(delete this.ids[n],p.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this.ids[n]&&(delete this.ids[n],p.push(n))}d.length&&this._trigger("add",{items:d},i),l.length&&this._trigger("update",{items:l},i),p.length&&this._trigger("remove",{items:p},i)}},r.prototype.subscribe=n.prototype.subscribe,r.prototype.unsubscribe=n.prototype.unsubscribe,r.prototype._trigger=n.prototype._trigger,TimeStep=function(t,e,i){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale=TimeStep.SCALE.DAY,this.step=1,this.setRange(t,e,i)},TimeStep.SCALE={MILLISECOND:1,SECOND:2,MINUTE:3,HOUR:4,DAY:5,WEEKDAY:6,MONTH:7,YEAR:8},TimeStep.prototype.setRange=function(t,e,i){t instanceof Date&&e instanceof Date&&(this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i))},TimeStep.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},TimeStep.prototype.roundToMinor=function(){switch(this.scale){case TimeStep.SCALE.YEAR:this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case TimeStep.SCALE.MONTH:this.current.setDate(1);case TimeStep.SCALE.DAY:case TimeStep.SCALE.WEEKDAY:this.current.setHours(0);case TimeStep.SCALE.HOUR:this.current.setMinutes(0);case TimeStep.SCALE.MINUTE:this.current.setSeconds(0);case TimeStep.SCALE.SECOND:this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case TimeStep.SCALE.MILLISECOND:this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case TimeStep.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case TimeStep.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case TimeStep.SCALE.HOUR:this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case TimeStep.SCALE.WEEKDAY:case TimeStep.SCALE.DAY:this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case TimeStep.SCALE.MONTH:this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case TimeStep.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step);break;default:}},TimeStep.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},TimeStep.prototype.next=function(){var t=this.current.valueOf();if(6>this.current.getMonth())switch(this.scale){case TimeStep.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case TimeStep.SCALE.SECOND:this.current=new Date(this.current.valueOf()+1e3*this.step);break;case TimeStep.SCALE.MINUTE:this.current=new Date(this.current.valueOf()+60*1e3*this.step);break;case TimeStep.SCALE.HOUR:this.current=new Date(this.current.valueOf()+60*60*1e3*this.step);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case TimeStep.SCALE.WEEKDAY:case TimeStep.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case TimeStep.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case TimeStep.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step);break;default:}else switch(this.scale){case TimeStep.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case TimeStep.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()+this.step);break;case TimeStep.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()+this.step);break;case TimeStep.SCALE.HOUR:this.current.setHours(this.current.getHours()+this.step);break;case TimeStep.SCALE.WEEKDAY:case TimeStep.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case TimeStep.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case TimeStep.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step);break;default:}if(1!=this.step)switch(this.scale){case TimeStep.SCALE.MILLISECOND:this.current.getMilliseconds()0&&(this.step=e),this.autoScale=!1},TimeStep.prototype.setAutoScale=function(t){this.autoScale=t},TimeStep.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale=TimeStep.SCALE.YEAR,this.step=1e3),500*e>t&&(this.scale=TimeStep.SCALE.YEAR,this.step=500),100*e>t&&(this.scale=TimeStep.SCALE.YEAR,this.step=100),50*e>t&&(this.scale=TimeStep.SCALE.YEAR,this.step=50),10*e>t&&(this.scale=TimeStep.SCALE.YEAR,this.step=10),5*e>t&&(this.scale=TimeStep.SCALE.YEAR,this.step=5),e>t&&(this.scale=TimeStep.SCALE.YEAR,this.step=1),3*i>t&&(this.scale=TimeStep.SCALE.MONTH,this.step=3),i>t&&(this.scale=TimeStep.SCALE.MONTH,this.step=1),5*s>t&&(this.scale=TimeStep.SCALE.DAY,this.step=5),2*s>t&&(this.scale=TimeStep.SCALE.DAY,this.step=2),s>t&&(this.scale=TimeStep.SCALE.DAY,this.step=1),s/2>t&&(this.scale=TimeStep.SCALE.WEEKDAY,this.step=1),4*o>t&&(this.scale=TimeStep.SCALE.HOUR,this.step=4),o>t&&(this.scale=TimeStep.SCALE.HOUR,this.step=1),15*n>t&&(this.scale=TimeStep.SCALE.MINUTE,this.step=15),10*n>t&&(this.scale=TimeStep.SCALE.MINUTE,this.step=10),5*n>t&&(this.scale=TimeStep.SCALE.MINUTE,this.step=5),n>t&&(this.scale=TimeStep.SCALE.MINUTE,this.step=1),15*r>t&&(this.scale=TimeStep.SCALE.SECOND,this.step=15),10*r>t&&(this.scale=TimeStep.SCALE.SECOND,this.step=10),5*r>t&&(this.scale=TimeStep.SCALE.SECOND,this.step=5),r>t&&(this.scale=TimeStep.SCALE.SECOND,this.step=1),200*a>t&&(this.scale=TimeStep.SCALE.MILLISECOND,this.step=200),100*a>t&&(this.scale=TimeStep.SCALE.MILLISECOND,this.step=100),50*a>t&&(this.scale=TimeStep.SCALE.MILLISECOND,this.step=50),10*a>t&&(this.scale=TimeStep.SCALE.MILLISECOND,this.step=10),5*a>t&&(this.scale=TimeStep.SCALE.MILLISECOND,this.step=5),a>t&&(this.scale=TimeStep.SCALE.MILLISECOND,this.step=1)}},TimeStep.prototype.snap=function(t){if(this.scale==TimeStep.SCALE.YEAR){var e=t.getFullYear()+Math.round(t.getMonth()/12);t.setFullYear(Math.round(e/this.step)*this.step),t.setMonth(0),t.setDate(0),t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0)}else if(this.scale==TimeStep.SCALE.MONTH)t.getDate()>15?(t.setDate(1),t.setMonth(t.getMonth()+1)):t.setDate(1),t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0); +else if(this.scale==TimeStep.SCALE.DAY||this.scale==TimeStep.SCALE.WEEKDAY){switch(this.step){case 5:case 2:t.setHours(24*Math.round(t.getHours()/24));break;default:t.setHours(12*Math.round(t.getHours()/12))}t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0)}else if(this.scale==TimeStep.SCALE.HOUR){switch(this.step){case 4:t.setMinutes(60*Math.round(t.getMinutes()/60));break;default:t.setMinutes(30*Math.round(t.getMinutes()/30))}t.setSeconds(0),t.setMilliseconds(0)}else if(this.scale==TimeStep.SCALE.MINUTE){switch(this.step){case 15:case 10:t.setMinutes(5*Math.round(t.getMinutes()/5)),t.setSeconds(0);break;case 5:t.setSeconds(60*Math.round(t.getSeconds()/60));break;default:t.setSeconds(30*Math.round(t.getSeconds()/30))}t.setMilliseconds(0)}else if(this.scale==TimeStep.SCALE.SECOND)switch(this.step){case 15:case 10:t.setSeconds(5*Math.round(t.getSeconds()/5)),t.setMilliseconds(0);break;case 5:t.setMilliseconds(1e3*Math.round(t.getMilliseconds()/1e3));break;default:t.setMilliseconds(500*Math.round(t.getMilliseconds()/500))}else if(this.scale==TimeStep.SCALE.MILLISECOND){var i=this.step>5?this.step/2:1;t.setMilliseconds(Math.round(t.getMilliseconds()/i)*i)}},TimeStep.prototype.isMajor=function(){switch(this.scale){case TimeStep.SCALE.MILLISECOND:return 0==this.current.getMilliseconds();case TimeStep.SCALE.SECOND:return 0==this.current.getSeconds();case TimeStep.SCALE.MINUTE:return 0==this.current.getHours()&&0==this.current.getMinutes();case TimeStep.SCALE.HOUR:return 0==this.current.getHours();case TimeStep.SCALE.WEEKDAY:case TimeStep.SCALE.DAY:return 1==this.current.getDate();case TimeStep.SCALE.MONTH:return 0==this.current.getMonth();case TimeStep.SCALE.YEAR:return!1;default:return!1}},TimeStep.prototype.getLabelMinor=function(t){switch(void 0==t&&(t=this.current),this.scale){case TimeStep.SCALE.MILLISECOND:return E(t).format("SSS");case TimeStep.SCALE.SECOND:return E(t).format("s");case TimeStep.SCALE.MINUTE:return E(t).format("HH:mm");case TimeStep.SCALE.HOUR:return E(t).format("HH:mm");case TimeStep.SCALE.WEEKDAY:return E(t).format("ddd D");case TimeStep.SCALE.DAY:return E(t).format("D");case TimeStep.SCALE.MONTH:return E(t).format("MMM");case TimeStep.SCALE.YEAR:return E(t).format("YYYY");default:return""}},TimeStep.prototype.getLabelMajor=function(t){switch(void 0==t&&(t=this.current),this.scale){case TimeStep.SCALE.MILLISECOND:return E(t).format("HH:mm:ss");case TimeStep.SCALE.SECOND:return E(t).format("D MMMM HH:mm");case TimeStep.SCALE.MINUTE:case TimeStep.SCALE.HOUR:return E(t).format("ddd D MMMM");case TimeStep.SCALE.WEEKDAY:case TimeStep.SCALE.DAY:return E(t).format("MMMM YYYY");case TimeStep.SCALE.MONTH:return E(t).format("YYYY");case TimeStep.SCALE.YEAR:return"";default:return""}},a.prototype.setOptions=function(t){C.extend(this.options,t)},a.prototype.update=function(){this._order(),this._stack()},a.prototype._order=function(){var t=this.parent.items;if(!t)throw Error("Cannot stack items: parent does not contain items");var e=[],i=0;C.forEach(t,function(t){t.visible&&(e[i]=t,i++)});var s=this.options.order||this.defaultOptions.order;if("function"!=typeof s)throw Error("Option order must be a function");e.sort(s),this.ordered=e},a.prototype._stack=function(){var t,e,i,s=this.ordered,o=this.options,n=o.orientation||this.defaultOptions.orientation,r="top"==n;for(i=o.margin&&void 0!==o.margin.item?o.margin.item:this.defaultOptions.margin.item,t=0,e=s.length;e>t;t++){var a=s[t],h=null;do h=this.checkOverlap(s,t,0,t-1,i),null!=h&&(a.top=r?h.top+h.height+i:h.top-a.height-i);while(h)}},a.prototype.checkOverlap=function(t,e,i,s,o){for(var n=this.collision,r=t[e],a=s;a>=i;a--){var h=t[a];if(n(r,h,o)&&a!=e)return h}return null},a.prototype.collision=function(t,e,i){return t.left-ie.left&&t.top-ie.top},h.prototype.setOptions=function(t){C.extend(this.options,t),(null!=t.start||null!=t.end)&&this.setRange(t.start,t.end)},h.prototype.subscribe=function(t,e,i){var s,o=this;if("horizontal"!=i&&"vertical"!=i)throw new TypeError('Unknown direction "'+i+'". '+'Choose "horizontal" or "vertical".');if("move"==e)s={component:t,event:e,direction:i,callback:function(t){o._onMouseDown(t,s)},params:{}},t.on("mousedown",s.callback),o.listeners.push(s);else{if("zoom"!=e)throw new TypeError('Unknown event "'+e+'". '+'Choose "move" or "zoom".');s={component:t,event:e,direction:i,callback:function(t){o._onMouseWheel(t,s)},params:{}},t.on("mousewheel",s.callback),o.listeners.push(s)}},h.prototype.on=function(t,e){O.addListener(this,t,e)},h.prototype._trigger=function(t){O.trigger(this,t,{start:this.start,end:this.end})},h.prototype.setRange=function(t,e){var i=this._applyRange(t,e);i&&(this._trigger("rangechange"),this._trigger("rangechanged"))},h.prototype._applyRange=function(t,e){var i,s=null!=t?C.cast(t,"Number"):this.start,o=null!=e?C.cast(e,"Number"):this.end;if(isNaN(s))throw Error('Invalid start "'+t+'"');if(isNaN(o))throw Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!=this.options.min){var n=this.options.min.valueOf();n>s&&(i=n-s,s+=i,o+=i)}if(null!=this.options.max){var r=this.options.max.valueOf();o>r&&(i=o-r,s-=i,o-=i)}if(null!=this.options.zoomMin){var a=this.options.zoomMin.valueOf();0>a&&(a=0),a>o-s&&(this.end-this.start>a?(i=a-(o-s),s-=i/2,o+=i/2):(s=this.start,o=this.end))}if(null!=this.options.zoomMax){var h=this.options.zoomMax.valueOf();0>h&&(h=0),o-s>h&&(h>this.end-this.start?(i=o-s-h,s+=i/2,o-=i/2):(s=this.start,o=this.end))}var d=this.start!=s||this.end!=o;return this.start=s,this.end=o,d},h.prototype.getRange=function(){return{start:this.start,end:this.end}},h.prototype.conversion=function(t){return this.start,this.end,h.conversion(this.start,this.end,t)},h.conversion=function(t,e,i){return 0!=i&&0!=e-t?{offset:t,factor:i/(e-t)}:{offset:0,factor:1}},h.prototype._onMouseDown=function(t,e){t=t||window.event;var i=e.params,s=t.which?1==t.which:1==t.button;if(s){i.mouseX=C.getPageX(t),i.mouseY=C.getPageY(t),i.previousLeft=0,i.previousOffset=0,i.moved=!1,i.start=this.start,i.end=this.end;var o=e.component.frame;o&&(o.style.cursor="move");var n=this;i.onMouseMove||(i.onMouseMove=function(t){n._onMouseMove(t,e)},C.addEventListener(document,"mousemove",i.onMouseMove)),i.onMouseUp||(i.onMouseUp=function(t){n._onMouseUp(t,e)},C.addEventListener(document,"mouseup",i.onMouseUp)),C.preventDefault(t)}},h.prototype._onMouseMove=function(t,e){t=t||window.event;var i=e.params,s=C.getPageX(t),o=C.getPageY(t);void 0==i.mouseX&&(i.mouseX=s),void 0==i.mouseY&&(i.mouseY=o);var n=s-i.mouseX,r=o-i.mouseY,a="horizontal"==e.direction?n:r;Math.abs(a)>=1&&(i.moved=!0);var h=i.end-i.start,d="horizontal"==e.direction?e.component.width:e.component.height,l=-a/d*h;this._applyRange(i.start+l,i.end+l),this._trigger("rangechange"),C.preventDefault(t)},h.prototype._onMouseUp=function(t,e){t=t||window.event;var i=e.params;e.component.frame&&(e.component.frame.style.cursor="auto"),i.onMouseMove&&(C.removeEventListener(document,"mousemove",i.onMouseMove),i.onMouseMove=null),i.onMouseUp&&(C.removeEventListener(document,"mouseup",i.onMouseUp),i.onMouseUp=null),i.moved&&this._trigger("rangechanged")},h.prototype._onMouseWheel=function(t,e){t=t||window.event;var i=0;if(t.wheelDelta?i=t.wheelDelta/120:t.detail&&(i=-t.detail/3),i){var s=this,o=function(){var o=i/5,n=null,r=e.component.frame;if(r){var a,h;if("horizontal"==e.direction){a=e.component.width,h=s.conversion(a);var d=C.getAbsoluteLeft(r),l=C.getPageX(t);n=(l-d)/h.factor+h.offset}else{a=e.component.height,h=s.conversion(a);var p=C.getAbsoluteTop(r),u=C.getPageY(t);n=(p+a-u-p)/h.factor+h.offset}}s.zoom(o,n)};o()}C.preventDefault(t)},h.prototype.zoom=function(t,e){null==e&&(e=(this.start+this.end)/2),t>=1&&(t=.9),-1>=t&&(t=-.9),0>t&&(t/=1+t);var i=this.start-e,s=this.end-e,o=this.start-i*t,n=this.end-s*t;this.setRange(o,n)},h.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},d.prototype.add=function(t){if(void 0==t.id)throw Error("Component has no field id");if(!(t instanceof l||t instanceof d))throw new TypeError("Component must be an instance of prototype Component or Controller");t.controller=this,this.components[t.id]=t},d.prototype.remove=function(t){var e;for(e in this.components)if(this.components.hasOwnProperty(e)&&(e==t||this.components[e]==t))break;e&&delete this.components[e]},d.prototype.requestReflow=function(t){if(t)this.reflow();else if(!this.reflowTimer){var e=this;this.reflowTimer=setTimeout(function(){e.reflowTimer=void 0,e.reflow()},0)}},d.prototype.requestRepaint=function(t){if(t)this.repaint();else if(!this.repaintTimer){var e=this;this.repaintTimer=setTimeout(function(){e.repaintTimer=void 0,e.repaint()},0)}},d.prototype.repaint=function(){function t(s,o){o in i||(s.depends&&s.depends.forEach(function(e){t(e,e.id)}),s.parent&&t(s.parent,s.parent.id),e=s.repaint()||e,i[o]=!0)}var e=!1;this.repaintTimer&&(clearTimeout(this.repaintTimer),this.repaintTimer=void 0);var i={};C.forEach(this.components,t),e&&this.reflow()},d.prototype.reflow=function(){function t(s,o){o in i||(s.depends&&s.depends.forEach(function(e){t(e,e.id)}),s.parent&&t(s.parent,s.parent.id),e=s.reflow()||e,i[o]=!0)}var e=!1;this.reflowTimer&&(clearTimeout(this.reflowTimer),this.reflowTimer=void 0);var i={};C.forEach(this.components,t),e&&this.repaint()},l.prototype.setOptions=function(t){t&&(C.extend(this.options,t),this.controller&&(this.requestRepaint(),this.requestReflow()))},l.prototype.getOption=function(t){var e;return this.options&&(e=this.options[t]),void 0===e&&this.defaultOptions&&(e=this.defaultOptions[t]),e},l.prototype.getContainer=function(){return null},l.prototype.getFrame=function(){return this.frame},l.prototype.repaint=function(){return!1},l.prototype.reflow=function(){return!1},l.prototype.hide=function(){return this.frame&&this.frame.parentNode?(this.frame.parentNode.removeChild(this.frame),!0):!1},l.prototype.show=function(){return this.frame&&this.frame.parentNode?!1:this.repaint()},l.prototype.requestRepaint=function(){if(!this.controller)throw Error("Cannot request a repaint: no controller configured");this.controller.requestRepaint()},l.prototype.requestReflow=function(){if(!this.controller)throw Error("Cannot request a reflow: no controller configured");this.controller.requestReflow()},p.prototype=new l,p.prototype.setOptions=l.prototype.setOptions,p.prototype.getContainer=function(){return this.frame},p.prototype.repaint=function(){var t=0,e=C.updateProperty,i=C.option.asSize,s=this.options,o=this.frame;if(!o){o=document.createElement("div"),o.className="panel";var n=s.className;n&&("function"==typeof n?C.addClassName(o,n()+""):C.addClassName(o,n+"")),this.frame=o,t+=1}if(!o.parentNode){if(!this.parent)throw Error("Cannot repaint panel: no parent attached");var r=this.parent.getContainer();if(!r)throw Error("Cannot repaint panel: parent has no container element");r.appendChild(o),t+=1}return t+=e(o.style,"top",i(s.top,"0px")),t+=e(o.style,"left",i(s.left,"0px")),t+=e(o.style,"width",i(s.width,"100%")),t+=e(o.style,"height",i(s.height,"100%")),t>0},p.prototype.reflow=function(){var t=0,e=C.updateProperty,i=this.frame;return i?(t+=e(this,"top",i.offsetTop),t+=e(this,"left",i.offsetLeft),t+=e(this,"width",i.offsetWidth),t+=e(this,"height",i.offsetHeight)):t+=1,t>0},u.prototype=new p,u.prototype.setOptions=l.prototype.setOptions,u.prototype.repaint=function(){var t=0,e=C.updateProperty,i=C.option.asSize,s=this.options,o=this.frame;if(!o){o=document.createElement("div"),o.className="graph panel";var n=s.className;n&&C.addClassName(o,C.option.asString(n)),this.frame=o,t+=1}if(!o.parentNode){if(!this.container)throw Error("Cannot repaint root panel: no container attached");this.container.appendChild(o),t+=1}return t+=e(o.style,"top",i(s.top,"0px")),t+=e(o.style,"left",i(s.left,"0px")),t+=e(o.style,"width",i(s.width,"100%")),t+=e(o.style,"height",i(s.height,"100%")),this._updateEventEmitters(),this._updateWatch(),t>0},u.prototype.reflow=function(){var t=0,e=C.updateProperty,i=this.frame;return i?(t+=e(this,"top",i.offsetTop),t+=e(this,"left",i.offsetLeft),t+=e(this,"width",i.offsetWidth),t+=e(this,"height",i.offsetHeight)):t+=1,t>0},u.prototype._updateWatch=function(){var t=this.getOption("autoResize");t?this._watch():this._unwatch()},u.prototype._watch=function(){var t=this;this._unwatch();var e=function(){var e=t.getOption("autoResize");return e?(t.frame&&(t.frame.clientWidth!=t.width||t.frame.clientHeight!=t.height)&&t.requestReflow(),void 0):(t._unwatch(),void 0)};C.addEventListener(window,"resize",e),this.watchTimer=setInterval(e,1e3)},u.prototype._unwatch=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0)},u.prototype.on=function(t,e){var i=this.listeners[t];i||(i=[],this.listeners[t]=i),i.push(e),this._updateEventEmitters()},u.prototype._updateEventEmitters=function(){if(this.listeners){var t=this;C.forEach(this.listeners,function(e,i){if(t.emitters||(t.emitters={}),!(i in t.emitters)){var s=t.frame;if(s){var o=function(t){e.forEach(function(e){e(t)})};t.emitters[i]=o,C.addEventListener(s,i,o)}}})}},c.prototype=new l,c.prototype.setOptions=l.prototype.setOptions,c.prototype.setRange=function(t){if(!(t instanceof h||t&&t.start&&t.end))throw new TypeError("Range must be an instance of Range, or an object containing start and end.");this.range=t},c.prototype.toTime=function(t){var e=this.conversion;return new Date(t/e.factor+e.offset)},c.prototype.toScreen=function(t){var e=this.conversion;return(t.valueOf()-e.offset)*e.factor},c.prototype.repaint=function(){var t=0,e=C.updateProperty,i=C.option.asSize,s=this.options,o=this.getOption("orientation"),n=this.props,r=this.step,a=this.frame;if(a||(a=document.createElement("div"),this.frame=a,t+=1),a.className="axis "+o,!a.parentNode){if(!this.parent)throw Error("Cannot repaint time axis: no parent attached");var h=this.parent.getContainer();if(!h)throw Error("Cannot repaint time axis: parent has no container element");h.appendChild(a),t+=1}var d=a.parentNode;if(d){var l=a.nextSibling;d.removeChild(a);var p="bottom"==o&&this.props.parentHeight&&this.height?this.props.parentHeight-this.height+"px":"0px";if(t+=e(a.style,"top",i(s.top,p)),t+=e(a.style,"left",i(s.left,"0px")),t+=e(a.style,"width",i(s.width,"100%")),t+=e(a.style,"height",i(s.height,this.height+"px")),this._repaintMeasureChars(),this.step){this._repaintStart(),r.first();for(var u=void 0,c=0;r.hasNext()&&1e3>c;){c++;var f=r.getCurrent(),m=this.toScreen(f),g=r.isMajor();this.getOption("showMinorLabels")&&this._repaintMinorText(m,r.getLabelMinor()),g&&this.getOption("showMajorLabels")?(m>0&&(void 0==u&&(u=m),this._repaintMajorText(m,r.getLabelMajor())),this._repaintMajorLine(m)):this._repaintMinorLine(m),r.next()}if(this.getOption("showMajorLabels")){var v=this.toTime(0),y=r.getLabelMajor(v),w=y.length*(n.majorCharWidth||10)+10;(void 0==u||u>w)&&this._repaintMajorText(0,y)}this._repaintEnd()}this._repaintLine(),l?d.insertBefore(a,l):d.appendChild(a)}return t>0},c.prototype._repaintStart=function(){var t=this.dom,e=t.redundant;e.majorLines=t.majorLines,e.majorTexts=t.majorTexts,e.minorLines=t.minorLines,e.minorTexts=t.minorTexts,t.majorLines=[],t.majorTexts=[],t.minorLines=[],t.minorTexts=[]},c.prototype._repaintEnd=function(){C.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},c.prototype._repaintMinorText=function(t,e){var i=this.dom.redundant.minorTexts.shift();if(!i){var s=document.createTextNode("");i=document.createElement("div"),i.appendChild(s),i.className="text minor",this.frame.appendChild(i)}this.dom.minorTexts.push(i),i.childNodes[0].nodeValue=e,i.style.left=t+"px",i.style.top=this.props.minorLabelTop+"px"},c.prototype._repaintMajorText=function(t,e){var i=this.dom.redundant.majorTexts.shift();if(!i){var s=document.createTextNode(e);i=document.createElement("div"),i.className="text major",i.appendChild(s),this.frame.appendChild(i)}this.dom.majorTexts.push(i),i.childNodes[0].nodeValue=e,i.style.top=this.props.majorLabelTop+"px",i.style.left=t+"px"},c.prototype._repaintMinorLine=function(t){var e=this.dom.redundant.minorLines.shift();e||(e=document.createElement("div"),e.className="grid vertical minor",this.frame.appendChild(e)),this.dom.minorLines.push(e);var i=this.props;e.style.top=i.minorLineTop+"px",e.style.height=i.minorLineHeight+"px",e.style.left=t-i.minorLineWidth/2+"px"},c.prototype._repaintMajorLine=function(t){var e=this.dom.redundant.majorLines.shift();e||(e=document.createElement("DIV"),e.className="grid vertical major",this.frame.appendChild(e)),this.dom.majorLines.push(e);var i=this.props;e.style.top=i.majorLineTop+"px",e.style.left=t-i.majorLineWidth/2+"px",e.style.height=i.majorLineHeight+"px"},c.prototype._repaintLine=function(){var t=this.dom.line,e=this.frame;this.options,this.getOption("showMinorLabels")||this.getOption("showMajorLabels")?(t?(e.removeChild(t),e.appendChild(t)):(t=document.createElement("div"),t.className="grid horizontal major",e.appendChild(t),this.dom.line=t),t.style.top=this.props.lineTop+"px"):t&&axis.parentElement&&(e.removeChild(axis.line),delete this.dom.line)},c.prototype._repaintMeasureChars=function(){var t,e=this.dom;if(!e.measureCharMinor){t=document.createTextNode("0");var i=document.createElement("DIV");i.className="text minor measure",i.appendChild(t),this.frame.appendChild(i),e.measureCharMinor=i}if(!e.measureCharMajor){t=document.createTextNode("0");var s=document.createElement("DIV");s.className="text major measure",s.appendChild(t),this.frame.appendChild(s),e.measureCharMajor=s}},c.prototype.reflow=function(){var t=0,e=C.updateProperty,i=this.frame,s=this.range;if(!s)throw Error("Cannot repaint time axis: no range configured");if(i){t+=e(this,"top",i.offsetTop),t+=e(this,"left",i.offsetLeft);var o=this.props,n=this.getOption("showMinorLabels"),r=this.getOption("showMajorLabels"),a=this.dom.measureCharMinor,h=this.dom.measureCharMajor;a&&(o.minorCharHeight=a.clientHeight,o.minorCharWidth=a.clientWidth),h&&(o.majorCharHeight=h.clientHeight,o.majorCharWidth=h.clientWidth);var d=i.parentNode?i.parentNode.offsetHeight:0;switch(d!=o.parentHeight&&(o.parentHeight=d,t+=1),this.getOption("orientation")){case"bottom":o.minorLabelHeight=n?o.minorCharHeight:0,o.majorLabelHeight=r?o.majorCharHeight:0,o.minorLabelTop=0,o.majorLabelTop=o.minorLabelTop+o.minorLabelHeight,o.minorLineTop=-this.top,o.minorLineHeight=Math.max(this.top+o.majorLabelHeight,0),o.minorLineWidth=1,o.majorLineTop=-this.top,o.majorLineHeight=Math.max(this.top+o.minorLabelHeight+o.majorLabelHeight,0),o.majorLineWidth=1,o.lineTop=0;break;case"top":o.minorLabelHeight=n?o.minorCharHeight:0,o.majorLabelHeight=r?o.majorCharHeight:0,o.majorLabelTop=0,o.minorLabelTop=o.majorLabelTop+o.majorLabelHeight,o.minorLineTop=o.minorLabelTop,o.minorLineHeight=Math.max(d-o.majorLabelHeight-this.top),o.minorLineWidth=1,o.majorLineTop=0,o.majorLineHeight=Math.max(d-this.top),o.majorLineWidth=1,o.lineTop=o.majorLabelHeight+o.minorLabelHeight;break;default:throw Error('Unkown orientation "'+this.getOption("orientation")+'"')}var l=o.minorLabelHeight+o.majorLabelHeight;t+=e(this,"width",i.offsetWidth),t+=e(this,"height",l),this._updateConversion();var p=C.cast(s.start,"Date"),u=C.cast(s.end,"Date"),c=this.toTime(5*(o.minorCharWidth||10))-this.toTime(0);this.step=new TimeStep(p,u,c),t+=e(o.range,"start",p.valueOf()),t+=e(o.range,"end",u.valueOf()),t+=e(o.range,"minimumStep",c.valueOf())}return t>0},c.prototype._updateConversion=function(){var t=this.range;if(!t)throw Error("No range configured");this.conversion=t.conversion?t.conversion(this.width):h.conversion(t.start,t.end,this.width)},f.prototype=new p,f.types={box:g,range:y,point:v},f.prototype.setOptions=l.prototype.setOptions,f.prototype.setRange=function(t){if(!(t instanceof h||t&&t.start&&t.end))throw new TypeError("Range must be an instance of Range, or an object containing start and end.");this.range=t},f.prototype.repaint=function(){var t=0,e=C.updateProperty,i=C.option.asSize,s=this.options,o=this.getOption("orientation"),n=this.defaultOptions,r=this.frame;if(!r){r=document.createElement("div"),r.className="itemset";var a=s.className;a&&C.addClassName(r,C.option.asString(a));var h=document.createElement("div");h.className="background",r.appendChild(h),this.dom.background=h;var d=document.createElement("div");d.className="foreground",r.appendChild(d),this.dom.foreground=d;var l=document.createElement("div");l.className="itemset-axis",this.dom.axis=l,this.frame=r,t+=1}if(!this.parent)throw Error("Cannot repaint itemset: no parent attached");var p=this.parent.getContainer();if(!p)throw Error("Cannot repaint itemset: parent has no container element");r.parentNode||(p.appendChild(r),t+=1),this.dom.axis.parentNode||(p.appendChild(this.dom.axis),t+=1),t+=e(r.style,"left",i(s.left,"0px")),t+=e(r.style,"top",i(s.top,"0px")),t+=e(r.style,"width",i(s.width,"100%")),t+=e(r.style,"height",i(s.height,this.height+"px")),t+=e(this.dom.axis.style,"left",i(s.left,"0px")),t+=e(this.dom.axis.style,"width",i(s.width,"100%")),t+="bottom"==o?e(this.dom.axis.style,"top",this.height+this.top+"px"):e(this.dom.axis.style,"top",this.top+"px"),this._updateConversion();var u=this,c=this.queue,m=this.itemsData,g=this.items,v={fields:[m&&m.fieldId||"id","start","end","content","type"]};return Object.keys(c).forEach(function(e){var i=c[e],o=g[e];switch(i){case"add":case"update":var r=m&&m.get(e,v);if(r){var a=r.type||r.start&&r.end&&"range"||s.type||"box",h=f.types[a];if(o&&(h&&o instanceof h?(o.data=r,t++):(t+=o.hide(),o=null)),!o){if(!h)throw new TypeError('Unknown item type "'+a+'"');o=new h(u,r,s,n),t++}o.repaint(),g[e]=o}delete c[e];break;case"remove":o&&(t+=o.hide()),delete g[e],delete c[e];break;default:console.log('Error: unknown action "'+i+'"')}}),C.forEach(this.items,function(e){e.visible?(t+=e.show(),e.reposition()):t+=e.hide()}),t>0},f.prototype.getForeground=function(){return this.dom.foreground},f.prototype.getBackground=function(){return this.dom.background},f.prototype.getAxis=function(){return this.dom.axis},f.prototype.reflow=function(){var t=0,e=this.options,i=e.margin&&e.margin.axis||this.defaultOptions.margin.axis,s=e.margin&&e.margin.item||this.defaultOptions.margin.item,o=C.updateProperty,n=C.option.asNumber,r=C.option.asSize,a=this.frame;if(a){this._updateConversion(),C.forEach(this.items,function(e){t+=e.reflow()}),this.stack.update();var h,d=n(e.maxHeight),l=null!=r(e.height);if(l)h=a.offsetHeight;else{var p=this.stack.ordered;if(p.length){var u=p[0].top,c=p[0].top+p[0].height;C.forEach(p,function(t){u=Math.min(u,t.top),c=Math.max(c,t.top+t.height)}),h=c-u+i+s}else h=i+s}null!=d&&(h=Math.min(h,d)),t+=o(this,"height",h),t+=o(this,"top",a.offsetTop),t+=o(this,"left",a.offsetLeft),t+=o(this,"width",a.offsetWidth)}else t+=1;return t>0},f.prototype.hide=function(){var t=!1;return this.frame&&this.frame.parentNode&&(this.frame.parentNode.removeChild(this.frame),t=!0),this.dom.axis&&this.dom.axis.parentNode&&(this.dom.axis.parentNode.removeChild(this.dom.axis),t=!0),t},f.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(s&&(C.forEach(this.listeners,function(t,e){s.unsubscribe(e,t)}),e=s.getIds(),this._onRemove(e)),t){if(!(t instanceof n||t instanceof r))throw new TypeError("Data must be an instance of DataSet");this.itemsData=t}else this.itemsData=null;if(this.itemsData){var o=this.id;C.forEach(this.listeners,function(t,e){i.itemsData.subscribe(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e)}},f.prototype.getItems=function(){return this.itemsData},f.prototype._onUpdate=function(t){this._toQueue("update",t)},f.prototype._onAdd=function(t){this._toQueue("add",t)},f.prototype._onRemove=function(t){this._toQueue("remove",t)},f.prototype._toQueue=function(t,e){var i=this.queue;e.forEach(function(e){i[e]=t}),this.controller&&this.requestRepaint()},f.prototype._updateConversion=function(){var t=this.range;if(!t)throw Error("No range configured");this.conversion=t.conversion?t.conversion(this.width):h.conversion(t.start,t.end,this.width)},f.prototype.toTime=function(t){var e=this.conversion;return new Date(t/e.factor+e.offset)},f.prototype.toScreen=function(t){var e=this.conversion;return(t.valueOf()-e.offset)*e.factor},m.prototype.select=function(){this.selected=!0},m.prototype.unselect=function(){this.selected=!1},m.prototype.show=function(){return!1},m.prototype.hide=function(){return!1},m.prototype.repaint=function(){return!1},m.prototype.reflow=function(){return!1},g.prototype=new m(null,null),g.prototype.select=function(){this.selected=!0},g.prototype.unselect=function(){this.selected=!1},g.prototype.repaint=function(){var t=!1,e=this.dom;if(e||(this._create(),e=this.dom,t=!0),e){if(!this.parent)throw Error("Cannot repaint item: no parent attached");var i=this.parent.getForeground();if(!i)throw Error("Cannot repaint time axis: parent has no foreground container element");var s=this.parent.getBackground();if(!s)throw Error("Cannot repaint time axis: parent has no background container element");var o=this.parent.getAxis();if(!s)throw Error("Cannot repaint time axis: parent has no axis container element");if(e.box.parentNode||(i.appendChild(e.box),t=!0),e.line.parentNode||(s.appendChild(e.line),t=!0),e.dot.parentNode||(o.appendChild(e.dot),t=!0),this.data.content!=this.content){if(this.content=this.data.content,this.content instanceof Element)e.content.innerHTML="",e.content.appendChild(this.content);else{if(void 0==this.data.content)throw Error('Property "content" missing in item '+this.data.id);e.content.innerHTML=this.content}t=!0}var n=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");this.className!=n&&(this.className=n,e.box.className="item box"+n,e.line.className="item line"+n,e.dot.className="item dot"+n,t=!0)}return t},g.prototype.show=function(){return this.dom&&this.dom.box.parentNode?!1:this.repaint()},g.prototype.hide=function(){var t=!1,e=this.dom;return e&&(e.box.parentNode&&(e.box.parentNode.removeChild(e.box),t=!0),e.line.parentNode&&e.line.parentNode.removeChild(e.line),e.dot.parentNode&&e.dot.parentNode.removeChild(e.dot)),t},g.prototype.reflow=function(){var t,e,i,s,o,n,r,a,h,d,l,p,u=0;if(void 0==this.data.start)throw Error('Property "start" missing in item '+this.data.id);if(l=this.data,p=this.parent&&this.parent.range,this.visible=l&&p?l.start>p.start&&l.start0},g.prototype._create=function(){var t=this.dom;t||(this.dom=t={},t.box=document.createElement("DIV"),t.content=document.createElement("DIV"),t.content.className="content",t.box.appendChild(t.content),t.line=document.createElement("DIV"),t.line.className="line",t.dot=document.createElement("DIV"),t.dot.className="dot")},g.prototype.reposition=function(){var t=this.dom,e=this.props,i=this.options.orientation||this.defaultOptions.orientation;if(t){var s=t.box,o=t.line,n=t.dot;s.style.left=this.left+"px",s.style.top=this.top+"px",o.style.left=e.line.left+"px","top"==i?(o.style.top="0px",o.style.height=this.top+"px"):(o.style.top=this.top+this.height+"px",o.style.height=Math.max(this.parent.height-this.top-this.height+this.props.dot.height/2,0)+"px"),n.style.left=e.dot.left+"px",n.style.top=e.dot.top+"px"}},v.prototype=new m(null,null),v.prototype.select=function(){this.selected=!0},v.prototype.unselect=function(){this.selected=!1},v.prototype.repaint=function(){var t=!1,e=this.dom;if(e||(this._create(),e=this.dom,t=!0),e){if(!this.parent)throw Error("Cannot repaint item: no parent attached");var i=this.parent.getForeground();if(!i)throw Error("Cannot repaint time axis: parent has no foreground container element");if(e.point.parentNode||(i.appendChild(e.point),i.appendChild(e.point),t=!0),this.data.content!=this.content){if(this.content=this.data.content,this.content instanceof Element)e.content.innerHTML="",e.content.appendChild(this.content);else{if(void 0==this.data.content)throw Error('Property "content" missing in item '+this.data.id);e.content.innerHTML=this.content}t=!0}var s=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");this.className!=s&&(this.className=s,e.point.className="item point"+s,t=!0)}return t},v.prototype.show=function(){return this.dom&&this.dom.point.parentNode?!1:this.repaint()},v.prototype.hide=function(){var t=!1,e=this.dom;return e&&e.point.parentNode&&(e.point.parentNode.removeChild(e.point),t=!0),t},v.prototype.reflow=function(){var t,e,i,s,o,n,r,a,h,d,l=0;if(void 0==this.data.start)throw Error('Property "start" missing in item '+this.data.id);if(h=this.data,d=this.parent&&this.parent.range,this.visible=h&&d?h.start>d.start&&h.start0},v.prototype._create=function(){var t=this.dom;t||(this.dom=t={},t.point=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.point.appendChild(t.content),t.dot=document.createElement("div"),t.dot.className="dot",t.point.appendChild(t.dot))},v.prototype.reposition=function(){var t=this.dom,e=this.props;t&&(t.point.style.top=this.top+"px",t.point.style.left=this.left+"px",t.content.style.marginLeft=e.content.marginLeft+"px",t.dot.style.top=e.dot.top+"px")},y.prototype=new m(null,null),y.prototype.select=function(){this.selected=!0},y.prototype.unselect=function(){this.selected=!1},y.prototype.repaint=function(){var t=!1,e=this.dom;if(e||(this._create(),e=this.dom,t=!0),e){if(!this.parent)throw Error("Cannot repaint item: no parent attached");var i=this.parent.getForeground();if(!i)throw Error("Cannot repaint time axis: parent has no foreground container element");if(e.box.parentNode||(i.appendChild(e.box),t=!0),this.data.content!=this.content){if(this.content=this.data.content,this.content instanceof Element)e.content.innerHTML="",e.content.appendChild(this.content);else{if(void 0==this.data.content)throw Error('Property "content" missing in item '+this.data.id);e.content.innerHTML=this.content}t=!0}var s=this.data.className?""+this.data.className:"";this.className!=s&&(this.className=s,e.box.className="item range"+s,t=!0)}return t},y.prototype.show=function(){return this.dom&&this.dom.box.parentNode?!1:this.repaint()},y.prototype.hide=function(){var t=!1,e=this.dom;return e&&e.box.parentNode&&(e.box.parentNode.removeChild(e.box),t=!0),t},y.prototype.reflow=function(){var t,e,i,s,o,n,r,a,h,d,l,p,u,c,f,m,g=0;if(void 0==this.data.start)throw Error('Property "start" missing in item '+this.data.id);if(void 0==this.data.end)throw Error('Property "end" missing in item '+this.data.id); +return h=this.data,d=this.parent&&this.parent.range,this.visible=h&&d?h.startd.start:!1,this.visible&&(t=this.dom,t?(e=this.props,i=this.options,n=this.parent,r=n.toScreen(this.data.start),a=n.toScreen(this.data.end),l=C.updateProperty,p=t.box,u=n.width,f=i.orientation||this.defaultOptions.orientation,s=i.margin&&i.margin.axis||this.defaultOptions.margin.axis,o=i.padding||this.defaultOptions.padding,g+=l(e.content,"width",t.content.offsetWidth),g+=l(this,"height",p.offsetHeight),-u>r&&(r=-u),a>2*u&&(a=2*u),c=0>r?Math.min(-r,a-r-e.content.width-2*o):0,g+=l(e.content,"left",c),"top"==f?(m=s,g+=l(this,"top",m)):(m=n.height-this.height-s,g+=l(this,"top",m)),g+=l(this,"left",r),g+=l(this,"width",Math.max(a-r,1))):g+=1),g>0},y.prototype._create=function(){var t=this.dom;t||(this.dom=t={},t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content))},y.prototype.reposition=function(){var t=this.dom,e=this.props;t&&(t.box.style.top=this.top+"px",t.box.style.left=this.left+"px",t.box.style.width=this.width+"px",t.content.style.left=e.content.left+"px")},w.prototype=new l,w.prototype.setOptions=l.prototype.setOptions,w.prototype.getContainer=function(){return this.parent.getContainer()},w.prototype.setItems=function(t){if(this.itemset&&(this.itemset.hide(),this.itemset.setItems(),this.parent.controller.remove(this.itemset),this.itemset=null),t){var e=this.groupId,i=Object.create(this.options);this.itemset=new f(this,null,i),this.itemset.setRange(this.parent.range),this.view=new r(t,{filter:function(t){return t.group==e}}),this.itemset.setItems(this.view),this.parent.controller.add(this.itemset)}},w.prototype.repaint=function(){return!1},w.prototype.reflow=function(){var t=0,e=C.updateProperty;return t+=e(this,"top",this.itemset?this.itemset.top:0),t+=e(this,"height",this.itemset?this.itemset.height:0),t>0},b.prototype=new p,b.prototype.setOptions=l.prototype.setOptions,b.prototype.setRange=function(){},b.prototype.setItems=function(t){this.itemsData=t;for(var e in this.groups)if(this.groups.hasOwnProperty(e)){var i=this.groups[e];i.setItems(t)}},b.prototype.getItems=function(){return this.itemsData},b.prototype.setRange=function(t){this.range=t},b.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(C.forEach(this.listeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this._onRemove(e)),t?t instanceof n?this.groupsData=t:(this.groupsData=new n({fieldTypes:{start:"Date",end:"Date"}}),this.groupsData.add(t)):this.groupsData=null,this.groupsData){var s=this.id;C.forEach(this.listeners,function(t,e){i.groupsData.subscribe(e,t,s)}),e=this.groupsData.getIds(),this._onAdd(e)}},b.prototype.getGroups=function(){return this.groupsData},b.prototype.repaint=function(){var t=0,e=C.updateProperty,i=C.option.asSize,s=this.options,o=this.frame;if(!o){o=document.createElement("div"),o.className="groupset";var n=s.className;n&&C.addClassName(o,C.option.asString(n)),this.frame=o,t+=1}if(!this.parent)throw Error("Cannot repaint groupset: no parent attached");var r=this.parent.getContainer();if(!r)throw Error("Cannot repaint groupset: parent has no container element");o.parentNode||(r.appendChild(o),t+=1),t+=e(o.style,"height",i(s.height,this.height+"px")),t+=e(o.style,"top",i(s.top,"0px")),t+=e(o.style,"left",i(s.left,"0px")),t+=e(o.style,"width",i(s.width,"100%"));var a=this,h=this.queue,d=this.groups,l=this.groupsData,p=Object.keys(h);if(p.length){p.forEach(function(t){var e=h[t],i=d[t];switch(e){case"add":case"update":if(!i){var s=Object.create(a.options);i=new w(a,t,s),i.setItems(a.itemsData),d[t]=i,a.controller.add(i)}i.data=l.get(t),delete h[t];break;case"remove":i&&(i.setItems(),delete d[t],a.controller.remove(i)),delete h[t];break;default:console.log('Error: unknown action "'+e+'"')}});for(var u=this.groupsData.getIds({order:this.options.groupsOrder}),c=0;u.length>c;c++)(function(t,e){var i=0;e&&(i=function(){return e.top+e.height}),t.setOptions({top:i})})(d[u[c]],d[u[c-1]]);t++}return t>0},b.prototype.getContainer=function(){return this.frame},b.prototype.reflow=function(){var t=0,e=this.options,i=C.updateProperty,s=C.option.asNumber,o=C.option.asSize,n=this.frame;if(n){var r,a=s(e.maxHeight),h=null!=o(e.height);if(h)r=n.offsetHeight;else{r=0;for(var d in this.groups)if(this.groups.hasOwnProperty(d)){var l=this.groups[d];r+=l.height}}null!=a&&(r=Math.min(r,a)),t+=i(this,"height",r),t+=i(this,"top",n.offsetTop),t+=i(this,"left",n.offsetLeft),t+=i(this,"width",n.offsetWidth)}return t>0},b.prototype.hide=function(){return this.frame&&this.frame.parentNode?(this.frame.parentNode.removeChild(this.frame),!0):!1},b.prototype.show=function(){return this.frame&&this.frame.parentNode?!1:this.repaint()},b.prototype._onUpdate=function(t){this._toQueue(t,"update")},b.prototype._onAdd=function(t){this._toQueue(t,"add")},b.prototype._onRemove=function(t){this._toQueue(t,"remove")},b.prototype._toQueue=function(t,e){var i=this.queue;t.forEach(function(t){i[t]=e}),this.controller&&this.requestRepaint()},_.prototype.setOptions=function(t){t&&C.extend(this.options,t),this.controller.reflow(),this.controller.repaint()},_.prototype.setItems=function(t){var e,i=null==this.itemsData;if(t?t instanceof n&&(e=t):e=null,t instanceof n||(e=new n({fieldTypes:{start:"Date",end:"Date"}}),e.add(t)),this.itemsData=e,this.content.setItems(e),i&&(void 0==this.options.start||void 0==this.options.end)){var s=this.getItemRange(),o=s.min,r=s.max;if(null!=o&&null!=r){var a=r.valueOf()-o.valueOf();o=new Date(o.valueOf()-.05*a),r=new Date(r.valueOf()+.05*a)}void 0!=this.options.start&&(o=new Date(this.options.start.valueOf())),void 0!=this.options.end&&(r=new Date(this.options.end.valueOf())),(null!=o||null!=r)&&this.range.setRange(o,r)}},_.prototype.setGroups=function(t){var e=this;this.groupsData=t;var i=this.groupsData?b:f;if(!(this.content instanceof i)){this.content&&(this.content.hide(),this.content.setItems&&this.content.setItems(),this.content.setGroups&&this.content.setGroups(),this.controller.remove(this.content));var s=Object.create(this.options);C.extend(s,{top:function(){return"top"==e.options.orientation?e.timeaxis.height:e.root.height-e.timeaxis.height-e.content.height},height:function(){return e.options.height?e.root.height-e.timeaxis.height:null},maxHeight:function(){if(e.options.maxHeight){if(!C.isNumber(e.options.maxHeight))throw new TypeError("Number expected for property maxHeight");return e.options.maxHeight-e.timeaxis.height}return null}}),this.content=new i(this.root,[this.timeaxis],s),this.content.setRange&&this.content.setRange(this.range),this.content.setItems&&this.content.setItems(this.itemsData),this.content.setGroups&&this.content.setGroups(this.groupsData),this.controller.add(this.content)}},_.prototype.getItemRange=function(){var t=this.itemsData,e=null,i=null;if(t){var s=t.min("start");e=s?s.start.valueOf():null;var o=t.max("start");o&&(i=o.start.valueOf());var n=t.max("end");n&&(i=null==i?n.end.valueOf():Math.max(i,n.end.valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},function(t){function e(t){return w=t,l()}function i(){b=0,_=w.charAt(0)}function s(){b++,_=w.charAt(b)}function o(){return w.charAt(b+1)}function n(t){return C.test(t)}function r(t,e){if(t||(t={}),e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function a(t){M.nodes||(M.nodes={});var e=M.nodes[t.id];if(e)t.attr&&(e.attr=r(e.attr,t.attr));else if(M.nodes[t.id]=t,S){var i=r({},S);t.attr=r(i,t.attr)}}function h(t){if(M.edges||(M.edges=[]),M.edges.push(t),E){var e=r({},E);t.attr=r(e,t.attr)}}function d(){for(T=v.NULL,x="";" "==_||" "==_||"\n"==_||"\r"==_;)s();do{var t=!1;if("#"==_){for(var e=b-1;" "==w.charAt(e)||" "==w.charAt(e);)e--;if("\n"==w.charAt(e)||""==w.charAt(e)){for(;""!=_&&"\n"!=_;)s();t=!0}}if("/"==_&&"/"==o()){for(;""!=_&&"\n"!=_;)s();t=!0}if("/"==_&&"*"==o()){for(;""!=_;){if("*"==_&&"/"==o()){s(),s();break}s()}t=!0}for(;" "==_||" "==_||"\n"==_||"\r"==_;)s()}while(t);if(""==_)return T=v.DELIMITER,void 0;var i=_+o();if(y[i])return T=v.DELIMITER,x=i,s(),s(),void 0;if(y[_])return T=v.DELIMITER,x=_,s(),void 0;if(n(_)||"-"==_){for(x+=_,s();n(_);)x+=_,s();return"false"==x?x=!1:"true"==x?x=!0:isNaN(Number(x))||(x=Number(x)),T=v.IDENTIFIER,void 0}if('"'==_){for(s();""!=_&&('"'!=_||'"'==_&&'"'==o());)x+=_,'"'==_&&s(),s();if('"'!=_)throw f('End of string " expected');return s(),T=v.IDENTIFIER,void 0}for(T=v.UNKNOWN;""!=_;)x+=_,s();throw new SyntaxError('Syntax error in part "'+m(x,30)+'"')}function l(){if(M={},S=null,E=null,i(),d(),"strict"==x&&(M.strict=!0,d()),("graph"==x||"digraph"==x)&&(M.type=x,d()),T==v.IDENTIFIER&&(M.id=x,d()),"{"!=x)throw f("Angle bracket { expected");if(d(),p(),"}"!=x)throw f("Angle bracket } expected");if(d(),""!==x)throw f("End of file expected");return d(),M}function p(){for(;""!==x&&"}"!=x;){if(T!=v.IDENTIFIER)throw f("Identifier expected");u(),";"==x&&d()}}function u(){var t,e=x;if(d(),"node"==e)t=c(),t&&(S=r(S,t));else if("edge"==e)t=c(),t&&(E=r(E,t));else if("graph"==e)t=c(),t&&(M.attr=r(M.attr,t));else if("="==x)d(),M.attr||(M.attr={}),M.attr[e]=x,d();else{var i={id:e+""};t=c(),t&&(i.attr=t),a(i);for(var s=e;"->"==x||"--"==x;){var o=x;d();var n=x;a({id:n+""}),d(),t=c();var l={from:s+"",to:n+"",type:o};t&&(l.attr=t),h(l),s=n}}}function c(){if("["==x){d();for(var t={};""!==x&&"]"!=x;){if(T!=v.IDENTIFIER)throw f("Attribute name expected");var e=x;if(d(),"="!=x)throw f("Equal sign = expected");if(d(),T!=v.IDENTIFIER)throw f("Attribute value expected");var i=x;t[e]=i,d(),","==x&&d()}return d(),t}return void 0}function f(t){return new SyntaxError(t+', got "'+m(x,30)+'" (char '+b+")")}function m(t,e){return e>=t.length?t:t.substr(0,27)+"..."}function g(t){var i=e(t),s={nodes:[],edges:[],options:{}};if(i.nodes)for(var o in i.nodes)if(i.nodes.hasOwnProperty(o)){var n={id:o,label:o};r(n,i.nodes[o].attr),n.image&&(n.shape="image"),s.nodes.push(n)}return i.edges&&i.edges.forEach(function(t){var e={from:t.from,to:t.to};r(e,t.attr),e.style="->"==t.type?"arrow":"line",s.edges.push(e)}),i.attr&&(s.options=i.attr),s}var v={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},y={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},w="",b=0,_="",x="",T=v.NULL,M=null,S=null,E=null,C=/[a-zA-Z_0-9.#]/;t.parseDOT=e,t.DOTToGraph=g}(C!==void 0?C:s),"undefined"!=typeof CanvasRenderingContext2D&&(CanvasRenderingContext2D.prototype.circle=function(t,e,i){this.beginPath(),this.arc(t,e,i,0,2*Math.PI,!1)},CanvasRenderingContext2D.prototype.square=function(t,e,i){this.beginPath(),this.rect(t-i,e-i,2*i,2*i)},CanvasRenderingContext2D.prototype.triangle=function(t,e,i){this.beginPath();var s=2*i,o=s/2,n=Math.sqrt(3)/6*s,r=Math.sqrt(s*s-o*o);this.moveTo(t,e-(r-n)),this.lineTo(t+o,e+n),this.lineTo(t-o,e+n),this.lineTo(t,e-(r-n)),this.closePath()},CanvasRenderingContext2D.prototype.triangleDown=function(t,e,i){this.beginPath();var s=2*i,o=s/2,n=Math.sqrt(3)/6*s,r=Math.sqrt(s*s-o*o);this.moveTo(t,e+(r-n)),this.lineTo(t+o,e-n),this.lineTo(t-o,e-n),this.lineTo(t,e+(r-n)),this.closePath()},CanvasRenderingContext2D.prototype.star=function(t,e,i){this.beginPath();for(var s=0;10>s;s++){var o=0===s%2?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,p=e+r,u=t+n/2,c=e+r/2,f=e+(s-r/2),m=e+s;this.beginPath(),this.moveTo(l,c),this.bezierCurveTo(l,c+d,u+h,p,u,p),this.bezierCurveTo(u-h,p,t,c+d,t,c),this.bezierCurveTo(t,c-d,u-h,e,u,e),this.bezierCurveTo(u+h,e,l,c-d,l,c),this.lineTo(l,f),this.bezierCurveTo(l,f+d,u+h,m,u,m),this.bezierCurveTo(u-h,m,t,f+d,t,f),this.lineTo(t,c)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),p=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,p),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==u&&(u=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,p=!0;d>=.1;){var u=o[l++%n];u>d&&(u=d);var c=Math.sqrt(u*u/(1+h*h));0>r&&(c=-c),t+=c,e+=h*c,this[p?"lineTo":"moveTo"](t,e),d-=u,p=!p}}),x.prototype.attachEdge=function(t){this.edges.push(t),this._updateMass()},x.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),this._updateMass()},x.prototype._updateMass=function(){this.mass=50+20*this.edges.length},x.prototype.setProperties=function(t,e){if(t){if(void 0!=t.id&&(this.id=t.id),void 0!=t.label&&(this.label=t.label),void 0!=t.title&&(this.title=t.title),void 0!=t.group&&(this.group=t.group),void 0!=t.x&&(this.x=t.x),void 0!=t.y&&(this.y=t.y),void 0!=t.value&&(this.value=t.value),void 0===this.id)throw"Node must have an id";if(this.group){var i=this.grouplist.get(this.group);for(var s in i)i.hasOwnProperty(s)&&(this[s]=i[s])}if(void 0!=t.shape&&(this.shape=t.shape),void 0!=t.image&&(this.image=t.image),void 0!=t.radius&&(this.radius=t.radius),void 0!=t.color&&(this.color=x.parseColor(t.color)),void 0!=t.fontColor&&(this.fontColor=t.fontColor),void 0!=t.fontSize&&(this.fontSize=t.fontSize),void 0!=t.fontFace&&(this.fontFace=t.fontFace),void 0!=this.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.image)}switch(this.xFixed=this.xFixed||void 0!=t.x,this.yFixed=this.yFixed||void 0!=t.y,this.radiusFixed=this.radiusFixed||void 0!=t.radius,"image"==this.shape&&(this.radiusMin=e.nodes.widthMin,this.radiusMax=e.nodes.widthMax),this.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},x.parseColor=function(t){var e;return C.isString(t)?e={border:t,background:t,highlight:{border:t,background:t}}:(e={},e.background=t.background||"white",e.border=t.border||e.background,C.isString(t.highlight)?e.highlight={border:t.highlight,background:t.highlight}:(e.highlight={},e.highlight.background=t.highlight&&t.highlight.background||e.background,e.highlight.border=t.highlight&&t.highlight.border||e.border)),e},x.prototype.select=function(){this.selected=!0,this._reset()},x.prototype.unselect=function(){this.selected=!1,this._reset()},x.prototype._reset=function(){this.width=void 0,this.height=void 0},x.prototype.getTitle=function(){return this.title},x.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.shape){case"circle":case"dot":return this.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},x.prototype._setForce=function(t,e){this.fx=t,this.fy=e},x.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},x.prototype.discreteStep=function(t){if(!this.xFixed){var e=-this.damping*this.vx,i=(this.fx+e)/this.mass;this.vx+=i/t,this.x+=this.vx/t}if(!this.yFixed){var s=-this.damping*this.vy,o=(this.fy+s)/this.mass;this.vy+=o/t,this.y+=this.vy/t}},x.prototype.isFixed=function(){return this.xFixed&&this.yFixed},x.prototype.isMoving=function(t){return Math.abs(this.vx)>t||Math.abs(this.vy)>t||!this.xFixed&&Math.abs(this.fx)>this.minForce||!this.yFixed&&Math.abs(this.fy)>this.minForce},x.prototype.isSelected=function(){return this.selected},x.prototype.getValue=function(){return this.value},x.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},x.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value){var i=(this.radiusMax-this.radiusMin)/(e-t);this.radius=(this.value-t)*i+this.radiusMin}},x.prototype.draw=function(){throw"Draw method not initialized for node"},x.prototype.resize=function(){throw"Resize method not initialized for node"},x.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},x.prototype._resizeImage=function(){if(!this.width){var t,e;if(this.value){var i=this.imageObj.height/this.imageObj.width;t=this.radius||this.imageObj.width,e=this.radius*i||this.imageObj.height}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e}},x.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e;this.imageObj?(t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),e=this.y+this.height/2):e=this.y,this._label(t,this.label,this.x,e,void 0,"top")},x.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e}},x.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,t.strokeStyle=this.selected?this.color.highlight.border:this.color.border,t.fillStyle=this.selected?this.color.highlight.background:this.color.background,t.lineWidth=this.selected?2:1,t.roundRect(this.left,this.top,this.width,this.height,this.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},x.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s}},x.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,t.strokeStyle=this.selected?this.color.highlight.border:this.color.border,t.fillStyle=this.selected?this.color.highlight.background:this.color.background,t.lineWidth=this.selected?2:1,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},x.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.radius=s/2,this.width=s,this.height=s}},x.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,t.strokeStyle=this.selected?this.color.highlight.border:this.color.border,t.fillStyle=this.selected?this.color.highlight.background:this.color.background,t.lineWidth=this.selected?2:1,t.circle(this.x,this.y,this.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},x.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.widthl;l++)t.fillText(r[l],i,d),d+=h}},x.prototype.getTextSize=function(t){if(void 0!=this.label){t.font=(this.selected?"bold ":"")+this.fontSize+"px "+this.fontFace;for(var e=this.label.split("\n"),i=(this.fontSize+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i}}return{width:0,height:0}},T.prototype.setProperties=function(t,e){if(t){if(void 0!=t.from&&(this.from=this.graph._getNode(t.from)),void 0!=t.to&&(this.to=this.graph._getNode(t.to)),void 0!=t.id&&(this.id=t.id),void 0!=t.style&&(this.style=t.style),void 0!=t.label&&(this.label=t.label),this.label&&(this.fontSize=e.edges.fontSize,this.fontFace=e.edges.fontFace,this.fontColor=e.edges.fontColor,void 0!=t.fontColor&&(this.fontColor=t.fontColor),void 0!=t.fontSize&&(this.fontSize=t.fontSize),void 0!=t.fontFace&&(this.fontFace=t.fontFace)),void 0!=t.title&&(this.title=t.title),void 0!=t.width&&(this.width=t.width),void 0!=t.value&&(this.value=t.value),void 0!=t.length&&(this.length=t.length),t.dash&&(void 0!=t.dash.length&&(this.dash.length=t.dash.length),void 0!=t.dash.gap&&(this.dash.gap=t.dash.gap),void 0!=t.dash.altLength&&(this.dash.altLength=t.dash.altLength)),void 0!=t.color&&(this.color=t.color),!this.from)throw"Node with id "+t.from+" not found";if(!this.to)throw"Node with id "+t.to+" not found";switch(this.widthFixed=this.widthFixed||void 0!=t.width,this.lengthFixed=this.lengthFixed||void 0!=t.length,this.stiffness=1/this.length,this.style){case"line":this.draw=this._drawLine;break;case"arrow":this.draw=this._drawArrow;break;case"arrow-center":this.draw=this._drawArrowCenter;break;case"dash-line":this.draw=this._drawDashLine;break;default:this.draw=this._drawLine}}},T.prototype.getTitle=function(){return this.title},T.prototype.getValue=function(){return this.value},T.prototype.setValueRange=function(t,e){if(!this.widthFixed&&void 0!==this.value){var i=(this.widthMax-this.widthMin)/(e-t);this.width=(this.value-t)*i+this.widthMin}},T.prototype.draw=function(){throw"Method draw not initialized in edge"},T.prototype.isOverlappingWith=function(t){var e=10,i=this.from.x,s=this.from.y,o=this.to.x,n=this.to.y,r=t.left,a=t.top,h=T._dist(i,s,o,n,r,a);return e>h},T.prototype._drawLine=function(t){t.strokeStyle=this.color,t.lineWidth=this._getLineWidth();var e;if(this.from!=this.to)this._line(t),this.label&&(e=this._pointOnLine(.5),this._label(t,this.label,e.x,e.y));else{var i,s,o=this.length/4,n=this.from;n.width||n.resize(t),n.width>n.height?(i=n.x+n.width/2,s=n.y-o):(i=n.x+o,s=n.y-n.height/2),this._circle(t,i,s,o),e=this._pointOnCircle(i,s,o,.5),this._label(t,this.label,e.x,e.y)}},T.prototype._getLineWidth=function(){return this.from.selected||this.to.selected?Math.min(2*this.width,this.widthMax):this.width},T.prototype._line=function(t){t.beginPath(),t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y),t.stroke()},T.prototype._circle=function(t,e,i,s){t.beginPath(),t.arc(e,i,s,0,2*Math.PI,!1),t.stroke()},T.prototype._label=function(t,e,i,s){if(e){t.font=(this.from.selected||this.to.selected?"bold ":"")+this.fontSize+"px "+this.fontFace,t.fillStyle="white";var o=t.measureText(e).width,n=this.fontSize,r=i-o/2,a=s-n/2;t.fillRect(r,a,o,n),t.fillStyle=this.fontColor||"black",t.textAlign="left",t.textBaseline="top",t.fillText(e,r,a)}},T.prototype._drawDashLine=function(t){if(t.strokeStyle=this.color,t.lineWidth=this._getLineWidth(),t.beginPath(),t.lineCap="round",void 0!=this.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.dash.length,this.dash.gap,this.dash.altLength,this.dash.gap]):void 0!=this.dash.length&&void 0!=this.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.dash.length,this.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke(),this.label){var e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}},T.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},T.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},T.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this.color,t.fillStyle=this.color,t.lineWidth=this._getLineWidth(),this.from!=this.to){this._line(t);var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=10+5*this.width;e=this._pointOnLine(.5),t.arrow(e.x,e.y,i,s),t.fill(),t.stroke(),this.label&&(e=this._pointOnLine(.5),this._label(t,this.label,e.x,e.y))}else{var o,n,r=this.length/4,a=this.from;a.width||a.resize(t),a.width>a.height?(o=a.x+a.width/2,n=a.y-r):(o=a.x+r,n=a.y-a.height/2),this._circle(t,o,n,r);var i=.2*Math.PI,s=10+5*this.width;e=this._pointOnCircle(o,n,r,.5),t.arrow(e.x,e.y,i,s),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(o,n,r,.5),this._label(t,this.label,e.x,e.y))}},T.prototype._drawArrow=function(t){t.strokeStyle=this.color,t.fillStyle=this.color,t.lineWidth=this._getLineWidth();var e,i;if(this.from!=this.to){e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,e+Math.PI),a=(n-r)/n,h=a*this.from.x+(1-a)*this.to.x,d=a*this.from.y+(1-a)*this.to.y,l=this.to.distanceToBorder(t,e),p=(n-l)/n,u=(1-p)*this.from.x+p*this.to.x,c=(1-p)*this.from.y+p*this.to.y;if(t.beginPath(),t.moveTo(h,d),t.lineTo(u,c),t.stroke(),i=10+5*this.width,t.arrow(u,c,e,i),t.fill(),t.stroke(),this.label){var f=this._pointOnLine(.5);this._label(t,this.label,f.x,f.y)}}else{var m,g,v,y=this.from,w=this.length/4;y.width||y.resize(t),y.width>y.height?(m=y.x+y.width/2,g=y.y-w,v={x:m,y:y.y,angle:.9*Math.PI}):(m=y.x+w,g=y.y-y.height/2,v={x:y.x,y:g,angle:.6*Math.PI}),t.beginPath(),t.arc(m,g,w,0,2*Math.PI,!1),t.stroke(),i=10+5*this.width,t.arrow(v.x,v.y,v.angle,i),t.fill(),t.stroke(),this.label&&(f=this._pointOnCircle(m,g,w,.5),this._label(t,this.label,f.x,f.y))}},T._dist=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,p=e+d*a,u=l-o,c=p-n;return Math.sqrt(u*u+c*c)},M.prototype.setPosition=function(t,e){this.x=parseInt(t),this.y=parseInt(e)},M.prototype.setText=function(t){this.frame.innerHTML=t},M.prototype.show=function(t){if(void 0===t&&(t=!0),t){var e=this.frame.clientHeight,i=this.frame.clientWidth,s=this.frame.parentNode.clientHeight,o=this.frame.parentNode.clientWidth,n=this.y-e;n+e+this.padding>s&&(n=s-e-this.padding),this.padding>n&&(n=this.padding);var r=this.x;r+i+this.padding>o&&(r=o-i-this.padding),this.padding>r&&(r=this.padding),this.frame.style.left=r+"px",this.frame.style.top=n+"px",this.frame.style.visibility="visible"}else this.hide()},M.prototype.hide=function(){this.frame.style.visibility="hidden"},Groups=function(){this.clear(),this.defaultIndex=0},Groups.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"}}],Groups.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},Groups.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%Groups.DEFAULT.length;this.defaultIndex++,e={},e.color=Groups.DEFAULT[i],this.groups[t]=e}return e},Groups.prototype.add=function(t,e){return this.groups[t]=e,e.color&&(e.color=x.parseColor(e.color)),e},Images=function(){this.images={},this.callback=void 0},Images.prototype.setOnloadCallback=function(t){this.callback=t},Images.prototype.load=function(t){var e=this.images[t];if(void 0==e){var i=this;e=new Image,this.images[t]=e,e.onload=function(){i.callback&&i.callback(this)},e.src=t}return e},S.prototype.setData=function(t){if(t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var e=N.util.DOTToGraph(t.dot);return this.setData(e),void 0}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this.stabilize&&this._doStabilize(),this.start()},S.prototype.setOptions=function(t){if(t){if(void 0!=t.width&&(this.width=t.width),void 0!=t.height&&(this.height=t.height),void 0!=t.stabilize&&(this.stabilize=t.stabilize),void 0!=t.selectable&&(this.selectable=t.selectable),t.edges){for(var e in t.edges)t.edges.hasOwnProperty(e)&&(this.constants.edges[e]=t.edges[e]);void 0!=t.edges.length&&t.nodes&&void 0==t.nodes.distance&&(this.constants.edges.length=t.edges.length,this.constants.nodes.distance=1.25*t.edges.length),t.edges.fontColor||(this.constants.edges.fontColor=t.edges.color),t.edges.dash&&(void 0!=t.edges.dash.length&&(this.constants.edges.dash.length=t.edges.dash.length),void 0!=t.edges.dash.gap&&(this.constants.edges.dash.gap=t.edges.dash.gap),void 0!=t.edges.dash.altLength&&(this.constants.edges.dash.altLength=t.edges.dash.altLength))}if(t.nodes){for(e in t.nodes)t.nodes.hasOwnProperty(e)&&(this.constants.nodes[e]=t.nodes[e]);t.nodes.color&&(this.constants.nodes.color=x.parseColor(t.nodes.color))}if(t.groups)for(var i in t.groups)if(t.groups.hasOwnProperty(i)){var s=t.groups[i];this.groups.add(i,s)}}this.setSize(this.width,this.height),this._setTranslation(0,0),this._setScale(1)},S.prototype._trigger=function(t,e){O.trigger(this,t,e) +},S.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="graph-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),!this.frame.canvas.getContext){var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}var e=this,i=function(t){e._onMouseDown(t)},s=function(t){e._onMouseMoveTitle(t)},o=function(t){e._onMouseWheel(t)},n=function(t){e._onTouchStart(t)};N.util.addEventListener(this.frame.canvas,"mousedown",i),N.util.addEventListener(this.frame.canvas,"mousemove",s),N.util.addEventListener(this.frame.canvas,"mousewheel",o),N.util.addEventListener(this.frame.canvas,"touchstart",n),this.containerElement.appendChild(this.frame)},S.prototype._onMouseDown=function(t){if(t=t||window.event,this.selectable&&(this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1==t.which:1==t.button,this.leftButtonDown||this.touchDown)){var e=this;this.onmousemove||(this.onmousemove=function(t){e._onMouseMove(t)},N.util.addEventListener(document,"mousemove",e.onmousemove)),this.onmouseup||(this.onmouseup=function(t){e._onMouseUp(t)},N.util.addEventListener(document,"mouseup",e.onmouseup)),N.util.preventDefault(t),this.startMouseX=t.clientX||t.targetTouches[0].clientX,this.startMouseY=t.clientY||t.targetTouches[0].clientY,this.startFrameLeft=N.util.getAbsoluteLeft(this.frame.canvas),this.startFrameTop=N.util.getAbsoluteTop(this.frame.canvas),this.startTranslation=this._getTranslation(),this.ctrlKeyDown=t.ctrlKey,this.shiftKeyDown=t.shiftKey;var i={left:this._xToCanvas(this.startMouseX-this.startFrameLeft),top:this._yToCanvas(this.startMouseY-this.startFrameTop),right:this._xToCanvas(this.startMouseX-this.startFrameLeft),bottom:this._yToCanvas(this.startMouseY-this.startFrameTop)},s=this._getNodesOverlappingWith(i);if(this.startClickedObj=s.length>0?s[s.length-1]:void 0,this.startClickedObj){var o=this.nodes[this.startClickedObj.row];this.startClickedObj.xFixed=o.xFixed,this.startClickedObj.yFixed=o.yFixed,o.xFixed=!0,o.yFixed=!0,this.ctrlKeyDown&&o.isSelected()?this._unselectNodes([this.startClickedObj]):this._selectNodes([this.startClickedObj],this.ctrlKeyDown),this.moving||this._redraw()}else this.shiftKeyDown||(this.moved=!1)}},S.prototype._onMouseMove=function(t){if(t=t||window.event,this.selectable){var e=t.clientX||t.targetTouches&&t.targetTouches[0].clientX||0,i=t.clientY||t.targetTouches&&t.targetTouches[0].clientY||0;if(this.mouseX=e,this.mouseY=i,this.startClickedObj){var s=this.nodes[this.startClickedObj.row];this.startClickedObj.xFixed||(s.x=this._xToCanvas(e-this.startFrameLeft)),this.startClickedObj.yFixed||(s.y=this._yToCanvas(i-this.startFrameTop)),this.moving||(this.moving=!0,this.start())}else if(this.shiftKeyDown){void 0==this.frame.selRect&&(this.frame.selRect=document.createElement("DIV"),this.frame.appendChild(this.frame.selRect),this.frame.selRect.style.position="absolute",this.frame.selRect.style.border="1px dashed red");var o=Math.min(this.startMouseX,e)-this.startFrameLeft,n=Math.min(this.startMouseY,i)-this.startFrameTop,r=Math.max(this.startMouseX,e)-this.startFrameLeft,a=Math.max(this.startMouseY,i)-this.startFrameTop;this.frame.selRect.style.left=o+"px",this.frame.selRect.style.top=n+"px",this.frame.selRect.style.width=r-o+"px",this.frame.selRect.style.height=a-n+"px"}else{var h=e-this.startMouseX,d=i-this.startMouseY;this._setTranslation(this.startTranslation.x+h,this.startTranslation.y+d),this._redraw(),this.moved=!0}N.util.preventDefault(t)}},S.prototype._onMouseUp=function(t){if(t=t||window.event,this.selectable){this.onmousemove&&(N.util.removeEventListener(document,"mousemove",this.onmousemove),this.onmousemove=void 0),this.onmouseup&&(N.util.removeEventListener(document,"mouseup",this.onmouseup),this.onmouseup=void 0),N.util.preventDefault(t);var e=t.clientX||this.mouseX||0,i=t.clientY||this.mouseY||0,s=t?t.ctrlKey:window.event.ctrlKey;if(this.startClickedObj){var o=this.nodes[this.startClickedObj.row];o.xFixed=this.startClickedObj.xFixed,o.yFixed=this.startClickedObj.yFixed}else if(this.shiftKeyDown){var n={left:this._xToCanvas(Math.min(this.startMouseX,e)-this.startFrameLeft),top:this._yToCanvas(Math.min(this.startMouseY,i)-this.startFrameTop),right:this._xToCanvas(Math.max(this.startMouseX,e)-this.startFrameLeft),bottom:this._yToCanvas(Math.max(this.startMouseY,i)-this.startFrameTop)},r=this._getNodesOverlappingWith(n);this._selectNodes(r,s),this.redraw(),this.frame.selRect&&(this.frame.removeChild(this.frame.selRect),this.frame.selRect=void 0)}else this.ctrlKeyDown||this.moved||(this._unselectNodes(),this._redraw());this.leftButtonDown=!1,this.ctrlKeyDown=!1}},S.prototype._onMouseWheel=function(t){t=t||window.event;var e=t.clientX,i=t.clientY,s=0;if(t.wheelDelta?s=t.wheelDelta/120:t.detail&&(s=-t.detail/3),s){var o=s/10;0>s&&(o/=1-o);var n=this._getScale(),r=n*(1+o);.01>r&&(r=.01),r>10&&(r=10);var a=N.util.getAbsoluteLeft(this.frame.canvas),h=N.util.getAbsoluteTop(this.frame.canvas),d=e-a,l=i-h,p=this._getTranslation(),u=r/n,c=(1-u)*d+p.x*u,f=(1-u)*l+p.y*u;this._setScale(r),this._setTranslation(c,f),this._redraw()}N.util.preventDefault(t)},S.prototype._onMouseMoveTitle=function(t){t=t||window.event;var e=t.clientX,i=t.clientY;this.startFrameLeft=this.startFrameLeft||N.util.getAbsoluteLeft(this.frame.canvas),this.startFrameTop=this.startFrameTop||N.util.getAbsoluteTop(this.frame.canvas);var s=e-this.startFrameLeft,o=i-this.startFrameTop;this.popupNode&&this._checkHidePopup(s,o);var n=this,r=function(){n._checkShowPopup(s,o)};this.popupTimer&&clearInterval(this.popupTimer),this.leftButtonDown||(this.popupTimer=setTimeout(r,300))},S.prototype._checkShowPopup=function(t,e){var i,s,o={left:this._xToCanvas(t),top:this._yToCanvas(e),right:this._xToCanvas(t),bottom:this._yToCanvas(e)},n=this.popupNode;if(void 0==this.popupNode){var r=this.nodes;for(i=r.length-1;i>=0;i--){var a=r[i];if(void 0!=a.getTitle()&&a.isOverlappingWith(o)){this.popupNode=a;break}}}if(void 0==this.popupNode){var h=this.edges;for(i=0,s=h.length;s>i;i++){var d=h[i];if(void 0!=d.getTitle()&&d.isOverlappingWith(o)){this.popupNode=d;break}}}if(this.popupNode){if(this.popupNode!=n){var l=this;l.popup||(l.popup=new M(l.frame)),l.popup.setPosition(t-3,e-3),l.popup.setText(l.popupNode.getTitle()),l.popup.show()}}else this.popup&&this.popup.hide()},S.prototype._checkHidePopup=function(t,e){var i={left:t,top:e,right:t,bottom:e};this.popupNode&&this.popupNode.isOverlappingWith(i)||(this.popupNode=void 0,this.popup&&this.popup.hide())},S.prototype._onTouchStart=function(t){if(N.util.preventDefault(t),!this.touchDown){this.touchDown=!0;var e=this;this.ontouchmove||(this.ontouchmove=function(t){e._onTouchMove(t)},N.util.addEventListener(document,"touchmove",this.ontouchmove)),this.ontouchend||(this.ontouchend=function(t){e._onTouchEnd(t)},N.util.addEventListener(document,"touchend",this.ontouchend)),this._onMouseDown(t)}},S.prototype._onTouchMove=function(t){N.util.preventDefault(t),this._onMouseMove(t)},S.prototype._onTouchEnd=function(t){N.util.preventDefault(t),this.touchDown=!1,this.ontouchmove&&(N.util.removeEventListener(document,"touchmove",this.ontouchmove),this.ontouchmove=void 0),this.ontouchend&&(N.util.removeEventListener(document,"touchend",this.ontouchend),this.ontouchend=void 0),this._onMouseUp(t)},S.prototype._unselectNodes=function(t,e){var i,s,o,n=!1;if(t)for(i=0,s=t.length;s>i;i++){o=t[i].row,this.nodes[o].unselect();for(var r=0;this.selection.length>r;)this.selection[r].row==o?(this.selection.splice(r,1),n=!0):r++}else if(this.selection&&this.selection.length){for(i=0,s=this.selection.length;s>i;i++)o=this.selection[i].row,this.nodes[o].unselect(),n=!0;this.selection=[]}return!n||1!=e&&void 0!=e||this._trigger("select"),n},S.prototype._selectNodes=function(t,e){var i,s,o=!1,n=!0;if(t.length!=this.selection.length)n=!1;else for(i=0,s=Math.min(t.length,this.selection.length);s>i;i++)if(t[i].row!=this.selection[i].row){n=!1;break}if(n)return o;if(void 0==e||0==e){var r=!1;o=this._unselectNodes(void 0,r)}for(i=0,s=t.length;s>i;i++){for(var a=t[i].row,h=!1,d=0,l=this.selection.length;l>d;d++)if(this.selection[d].row==a){h=!0;break}h||(this.nodes[a].select(),this.selection.push(t[i]),o=!0)}return o&&this._trigger("select"),o},S.prototype._getNodesOverlappingWith=function(t){for(var e=[],i=0;this.nodes.length>i;i++)if(this.nodes[i].isOverlappingWith(t)){var s={row:i};e.push(s)}return e},S.prototype.getSelection=function(){for(var t=[],e=0;this.selection.length>e;e++){var i=this.selection[e].row;t.push({row:i})}return t},S.prototype.setSelection=function(t){var e,i,s;if(void 0==t.length)throw"Selection must be an array with objects";for(e=0,i=this.selection.length;i>e;e++)s=this.selection[e].row,this.nodes[s].unselect();for(this.selection=[],e=0,i=t.length;i>e;e++){if(s=t[e].row,void 0==s)throw"Parameter row missing in selection object";if(s>this.nodes.length-1)throw"Parameter row out of range";var o={row:s};this.selection.push(o),this.nodes[s].select()}this.redraw()},S.prototype._getConnectionCount=function(t){function e(t){for(var e=[],s=0,o=t.length;o>s;s++)for(var n=t[s],r=0,a=i.length;a>r;r++){var h=null;i[r].from==n?h=i[r].to:i[r].to==n&&(h=i[r].from);var d,l;if(h)for(d=0,l=t.length;l>d;d++)if(t[d]==h){h=null;break}if(h)for(d=0,l=e.length;l>d;d++)if(e[d]==h){h=null;break}h&&e.push(h)}return e}var i=this.edges;void 0==t&&(t=1);var s,o,n=[],r=this.nodes;for(s=0,o=r.length;o>s;s++){for(var a=[r[s]],h=0;t>h;h++)a=a.concat(e(a));n.push(a)}var d=[];for(s=0,len=n.length;len>s;s++)d.push(n[s].length);return d},S.prototype.setSize=function(t,e){this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight},S.prototype._setNodes=function(t){if(this.selection=[],this.nodes=[],this.moving=!1,t){for(var e=!1,i=t.length,s=0;i>s;s++){var o=t[s];if(void 0!=o.value&&(e=!0),void 0==o.id)throw"Column 'id' missing in table with nodes (row "+s+")";this._createNode(o)}e&&this._updateValueRange(this.nodes),this._reposition()}},S.prototype._createNode=function(t){var e,i,s,o,n=t.action?t.action:"update";if("create"===n)s=new x(t,this.images,this.groups,this.constants),e=t.id,i=void 0!==e?this._findNode(e):void 0,void 0!==i?(o=this.nodes[i],this.nodes[i]=s,o.selected&&this._unselectNodes([{row:i}],!1)):this.nodes.push(s),s.isFixed()||(this.moving=!0);else if("update"===n){if(e=t.id,void 0===e)throw"Cannot update a node without id";i=this._findNode(e),void 0!==i?this.nodes[i].setProperties(t,this.constants):(s=new x(t,this.images,this.groups,this.constants),this.nodes.push(s),s.isFixed()||(this.moving=!0))}else{if("delete"!==n)throw"Unknown action "+n+". Choose 'create', 'update', or 'delete'.";if(e=t.id,void 0===e)throw"Cannot delete node without its id";if(i=this._findNode(e),void 0===i)throw"Node with id "+e+" not found";o=this.nodes[i],o.selected&&this._unselectNodes([{row:i}],!1),this.nodes.splice(i,1)}},S.prototype._findNode=function(t){for(var e=this.nodes,i=0,s=e.length;s>i;i++)if(e[i].id===t)return i;return void 0},S.prototype._findNodeByRow=function(t){return this.nodes[t]},S.prototype._setEdges=function(t){if(this.edges=[],t){for(var e=!1,i=t.length,s=0;i>s;s++){var o=t[s];if(void 0===o.from)throw"Column 'from' missing in table with edges (row "+s+")";if(void 0===o.to)throw"Column 'to' missing in table with edges (row "+s+")";void 0!=o.value&&(e=!0),this._createEdge(o)}e&&this._updateValueRange(this.edges)}},S.prototype._createEdge=function(t){var e,i,s,o,n=t.action?t.action:"create";if("create"===n)e=t.id,i=void 0!==e?this._findEdge(e):void 0,s=new T(t,this,this.constants),void 0!==i?(o=this.edges[i],o.from.detachEdge(o),o.to.detachEdge(o),this.edges[i]=s):this.edges.push(s),s.from.attachEdge(s),s.to.attachEdge(s);else if("update"===n){if(e=t.id,void 0===e)throw"Cannot update a edge without id";i=this._findEdge(e),void 0!==i?(s=this.edges[i],s.from.detachEdge(s),s.to.detachEdge(s),s.setProperties(t,this.constants),s.from.attachEdge(s),s.to.attachEdge(s)):(s=new T(t,this,this.constants),s.from.attachEdge(s),s.to.attachEdge(s),this.edges.push(s))}else{if("delete"!==n)throw"Unknown action "+n+". Choose 'create', 'update', or 'delete'.";if(e=t.id,void 0===e)throw"Cannot delete edge without its id";if(i=this._findEdge(e),void 0===i)throw"Edge with id "+e+" not found";o=this.edges[e],s.from.detachEdge(o),s.to.detachEdge(o),this.edges.splice(i,1)}},S.prototype._updateNodeReferences=function(t,e){for(var i=this.edges,s=0,o=i.length;o>s;s++){var n=i[s];n.from===t&&(n.from=e),n.to===t&&(n.to=e)}},S.prototype._findEdge=function(t){for(var e=this.edges,i=0,s=e.length;s>i;i++)if(e[i].id===t)return i;return void 0},S.prototype._findEdgeByRow=function(t){return this.edges[t]},S.prototype._updateValueRange=function(t){var e,i=t.length,s=void 0,o=void 0;for(e=0;i>e;e++){var n=t[e].getValue();void 0!==n&&(s=void 0===s?n:Math.min(n,s),o=void 0===o?n:Math.max(n,o))}if(void 0!==s&&void 0!==o)for(e=0;i>e;e++)t[e].setValueRange(s,o)},S.prototype.redraw=function(){this.setSize(this.width,this.height),this._redraw()},S.prototype._redraw=function(){var t=this.frame.canvas.getContext("2d"),e=this.frame.canvas.width,i=this.frame.canvas.height;t.clearRect(0,0,e,i),t.save(),t.translate(this.translation.x,this.translation.y),t.scale(this.scale,this.scale),this._drawEdges(t),this._drawNodes(t),t.restore()},S.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e)},S.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},S.prototype._setScale=function(t){this.scale=t},S.prototype._getScale=function(){return this.scale},S.prototype._xToCanvas=function(t){return(t-this.translation.x)/this.scale},S.prototype._canvasToX=function(t){return t*this.scale+this.translation.x},S.prototype._yToCanvas=function(t){return(t-this.translation.y)/this.scale},S.prototype._canvasToY=function(t){return t*this.scale+this.translation.y},S.prototype._getNode=function(t){for(var e=0;this.nodes.length>e;e++)if(this.nodes[e].id==t)return this.nodes[e];return null},S.prototype._drawNodes=function(t){for(var e=this.nodes,i=[],s=0,o=e.length;o>s;s++)e[s].isSelected()?i.push(s):e[s].draw(t);for(var n=0,r=i.length;r>n;n++)e[i[n]].draw(t)},S.prototype._drawEdges=function(t){for(var e=this.edges,i=0,s=e.length;s>i;i++)e[i].draw(t)},S.prototype._reposition=function(){for(var t=2*this.constants.edges.length,e=this.frame.canvas.clientWidth/2,i=this.frame.canvas.clientHeight/2,s=0;this.nodes.length>s;s++){var o=2*Math.PI*(s/this.nodes.length);this.nodes[s].xFixed||(this.nodes[s].x=e+t*Math.cos(o)),this.nodes[s].yFixed||(this.nodes[s].y=i+t*Math.sin(o))}},S.prototype._doStabilize=function(){new Date;for(var t=0,e=this.constants.minVelocity,i=!1;!i&&this.constants.maxIterations>t;)this._calculateForces(),this._discreteStepNodes(),i=!this._isMoving(e),t++;new Date},S.prototype._calculateForces=function(){for(var t=this.nodes,e=this.edges,i=.01,s=this.frame.canvas.clientWidth/2,o=this.frame.canvas.clientHeight/2,n=0;t.length>n;n++){var r=s-t[n].x,a=o-t[n].y,h=Math.atan2(a,r),d=Math.cos(h)*i,l=Math.sin(h)*i;this.nodes[n]._setForce(d,l)}for(var p=this.constants.nodes.distance,u=10,n=0;t.length>n;n++)for(var c=n+1;this.nodes.length>c;c++){var r=t[c].x-t[n].x,a=t[c].y-t[n].y,f=Math.sqrt(r*r+a*a),h=Math.atan2(a,r),m=1/(1+Math.exp((f/p-1)*u)),d=Math.cos(h)*m,l=Math.sin(h)*m;this.nodes[n]._addForce(-d,-l),this.nodes[c]._addForce(d,l)}for(var g=0,v=e.length;v>g;g++){var y=e[g],r=y.to.x-y.from.x,a=y.to.y-y.from.y,w=y.length,b=Math.sqrt(r*r+a*a),h=Math.atan2(a,r),_=y.stiffness*(w-b),d=Math.cos(h)*_,l=Math.sin(h)*_;y.from._addForce(-d,-l),y.to._addForce(d,l)}},S.prototype._isMoving=function(t){for(var e=this.nodes,i=0,s=e.length;s>i;i++)if(e[i].isMoving(t))return!0;return!1},S.prototype._discreteStepNodes=function(){for(var t=this.refreshRate/1e3,e=this.nodes,i=0,s=e.length;s>i;i++)e[i].discreteStep(t)},S.prototype.start=function(){if(this.moving){this._calculateForces(),this._discreteStepNodes();var t=this.constants.minVelocity;this.moving=this._isMoving(t)}if(this.moving){if(!this.timer){var e=this;this.timer=window.setTimeout(function(){e.timer=void 0,e.start(),e._redraw()},this.refreshRate)}}else this._redraw()},S.prototype.stop=function(){this.timer&&(window.clearInterval(this.timer),this.timer=void 0)};var N={util:C,events:O,Controller:d,DataSet:n,DataView:r,Range:h,Stack:a,TimeStep:TimeStep,EventBus:o,components:{items:{Item:m,ItemBox:g,ItemPoint:v,ItemRange:y},Component:l,Panel:p,RootPanel:u,ItemSet:f,TimeAxis:c},graph:{Node:x,Edge:T,Popup:M,Groups:Groups,Images:Images},Timeline:_,Graph:S};s!==void 0&&(s=N),i!==void 0&&i.exports!==void 0&&(i.exports=N),"function"==typeof t&&t(function(){return N}),"undefined"!=typeof window&&(window.vis=N),C.loadCss("/* vis.js stylesheet */\n\n.graph {\n position: relative;\n border: 1px solid #bfbfbf;\n}\n\n.graph .panel {\n position: absolute;\n}\n\n.graph .groupset {\n position: absolute;\n padding: 0;\n margin: 0;\n}\n\n\n.graph .itemset {\n position: absolute;\n padding: 0;\n margin: 0;\n overflow: hidden;\n}\n\n.graph .background {\n}\n\n.graph .foreground {\n}\n\n.graph .itemset-axis {\n position: absolute;\n}\n\n.graph .groupset .itemset-axis {\n border-top: 1px solid #bfbfbf;\n}\n\n/* TODO: with orientation=='bottom', this will more or less overlap with timeline axis\n.graph .groupset .itemset-axis:last-child {\n border-top: none;\n}\n*/\n\n\n.graph .item {\n position: absolute;\n color: #1A1A1A;\n border-color: #97B0F8;\n background-color: #D5DDF6;\n display: inline-block;\n}\n\n.graph .item.selected {\n border-color: #FFC200;\n background-color: #FFF785;\n z-index: 999;\n}\n\n.graph .item.cluster {\n /* TODO: use another color or pattern? */\n background: #97B0F8 url('img/cluster_bg.png');\n color: white;\n}\n.graph .item.cluster.point {\n border-color: #D5DDF6;\n}\n\n.graph .item.box {\n text-align: center;\n border-style: solid;\n border-width: 1px;\n border-radius: 5px;\n -moz-border-radius: 5px; /* For Firefox 3.6 and older */\n}\n\n.graph .item.point {\n background: none;\n}\n\n.graph .dot {\n border: 5px solid #97B0F8;\n position: absolute;\n border-radius: 5px;\n -moz-border-radius: 5px; /* For Firefox 3.6 and older */\n}\n\n.graph .item.range {\n overflow: hidden;\n border-style: solid;\n border-width: 1px;\n border-radius: 2px;\n -moz-border-radius: 2px; /* For Firefox 3.6 and older */\n}\n\n.graph .item.range .drag-left {\n cursor: w-resize;\n z-index: 1000;\n}\n\n.graph .item.range .drag-right {\n cursor: e-resize;\n z-index: 1000;\n}\n\n.graph .item.range .content {\n position: relative;\n display: inline-block;\n}\n\n.graph .item.line {\n position: absolute;\n width: 0;\n border-left-width: 1px;\n border-left-style: solid;\n}\n\n.graph .item .content {\n margin: 5px;\n white-space: nowrap;\n overflow: hidden;\n}\n\n/* TODO: better css name, 'graph' is way to generic */\n\n.graph {\n overflow: hidden;\n}\n\n.graph .axis {\n position: relative;\n}\n\n.graph .axis .text {\n position: absolute;\n color: #4d4d4d;\n padding: 3px;\n white-space: nowrap;\n}\n\n.graph .axis .text.measure {\n position: absolute;\n padding-left: 0;\n padding-right: 0;\n margin-left: 0;\n margin-right: 0;\n visibility: hidden;\n}\n\n.graph .axis .grid.vertical {\n position: absolute;\n width: 0;\n border-right: 1px solid;\n}\n\n.graph .axis .grid.horizontal {\n position: absolute;\n left: 0;\n width: 100%;\n height: 0;\n border-bottom: 1px solid;\n}\n\n.graph .axis .grid.minor {\n border-color: #e5e5e5;\n}\n\n.graph .axis .grid.major {\n border-color: #bfbfbf;\n}\n\n")})()},{moment:2}],2:[function(e,i){(function(){(function(s){function o(t,e){return function(i){return p(t.call(this,i),e)}}function n(t){return function(e){return this.lang().ordinal(t.call(this,e))}}function r(){}function a(t){d(this,t)}function h(t){var e=this._data={},i=t.years||t.year||t.y||0,s=t.months||t.month||t.M||0,o=t.weeks||t.week||t.w||0,n=t.days||t.day||t.d||0,r=t.hours||t.hour||t.h||0,a=t.minutes||t.minute||t.m||0,h=t.seconds||t.second||t.s||0,d=t.milliseconds||t.millisecond||t.ms||0;this._milliseconds=d+1e3*h+6e4*a+36e5*r,this._days=n+7*o,this._months=s+12*i,e.milliseconds=d%1e3,h+=l(d/1e3),e.seconds=h%60,a+=l(h/60),e.minutes=a%60,r+=l(a/60),e.hours=r%24,n+=l(r/24),n+=7*o,e.days=n%30,s+=l(n/30),e.months=s%12,i+=l(s/12),e.years=i}function d(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function l(t){return 0>t?Math.ceil(t):Math.floor(t)}function p(t,e){for(var i=t+"";e>i.length;)i="0"+i;return i}function u(t,e,i){var s,o=e._milliseconds,n=e._days,r=e._months;o&&t._d.setTime(+t+o*i),n&&t.date(t.date()+n*i),r&&(s=t.date(),t.date(1).month(t.month()+r*i).date(Math.min(s,t.daysInMonth())))}function c(t){return"[object Array]"===Object.prototype.toString.call(t)}function f(t,e){var i,s=Math.min(t.length,e.length),o=Math.abs(t.length-e.length),n=0;for(i=0;s>i;i++)~~t[i]!==~~e[i]&&n++;return n+o}function m(t,e){return e.abbr=t,H[t]||(H[t]=new r),H[t].set(e),H[t]}function g(t){return t?(!H[t]&&P&&e("./lang/"+t),H[t]):F.fn._lang}function v(t){return t.match(/\[.*\]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function y(t){var e,i,s=t.match(j);for(e=0,i=s.length;i>e;e++)s[e]=ae[s[e]]?ae[s[e]]:v(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+="function"==typeof s[e].call?s[e].call(o,t):s[e];return n}}function w(t,e){function i(e){return t.lang().longDateFormat(e)||e}for(var s=5;s--&&U.test(e);)e=e.replace(U,i);return oe[e]||(oe[e]=y(e)),oe[e](t)}function b(t){switch(t){case"DDDD":return q;case"YYYY":return V;case"YYYYY":return X;case"S":case"SS":case"SSS":case"DDD":return B;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":case"a":case"A":return K;case"X":return J;case"Z":case"ZZ":return G;case"T":return Z;case"MM":case"DD":case"YY":case"HH":case"hh":case"mm":case"ss":case"M":case"D":case"d":case"H":case"h":case"m":case"s":return W;default:return RegExp(t.replace("\\",""))}}function _(t,e,i){var s,o=i._a;switch(t){case"M":case"MM":o[1]=null==e?0:~~e-1;break;case"MMM":case"MMMM":s=g(i._l).monthsParse(e),null!=s?o[1]=s:i._isValid=!1;break;case"D":case"DD":case"DDD":case"DDDD":null!=e&&(o[2]=~~e);break;case"YY":o[0]=~~e+(~~e>68?1900:2e3);break;case"YYYY":case"YYYYY":o[0]=~~e;break;case"a":case"A":i._isPm="pm"===(e+"").toLowerCase();break;case"H":case"HH":case"h":case"hh":o[3]=~~e;break;case"m":case"mm":o[4]=~~e;break;case"s":case"ss":o[5]=~~e;break;case"S":case"SS":case"SSS":o[6]=~~(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,s=(e+"").match(ee),s&&s[1]&&(i._tzh=~~s[1]),s&&s[2]&&(i._tzm=~~s[2]),s&&"+"===s[0]&&(i._tzh=-i._tzh,i._tzm=-i._tzm)}null==e&&(i._isValid=!1)}function x(t){var e,i,s=[];if(!t._d){for(e=0;7>e;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];s[3]+=t._tzh||0,s[4]+=t._tzm||0,i=new Date(0),t._useUTC?(i.setUTCFullYear(s[0],s[1],s[2]),i.setUTCHours(s[3],s[4],s[5],s[6])):(i.setFullYear(s[0],s[1],s[2]),i.setHours(s[3],s[4],s[5],s[6])),t._d=i}}function T(t){var e,i,s=t._f.match(j),o=t._i;for(t._a=[],e=0;s.length>e;e++)i=(b(s[e]).exec(o)||[])[0],i&&(o=o.slice(o.indexOf(i)+i.length)),ae[s[e]]&&_(s[e],i,t);t._isPm&&12>t._a[3]&&(t._a[3]+=12),t._isPm===!1&&12===t._a[3]&&(t._a[3]=0),x(t)}function M(t){for(var e,i,s,o,n=99;t._f.length;){if(e=d({},t),e._f=t._f.pop(),T(e),i=new a(e),i.isValid()){s=i;break}o=f(e._a,i.toArray()),n>o&&(n=o,s=i)}d(t,s)}function S(t){var e,i=t._i;if(Q.exec(i)){for(t._f="YYYY-MM-DDT",e=0;4>e;e++)if(te[e][1].exec(i)){t._f+=te[e][0];break}G.exec(i)&&(t._f+=" Z"),T(t)}else t._d=new Date(i)}function E(t){var e=t._i,i=R.exec(e);e===s?t._d=new Date:i?t._d=new Date(+i[1]):"string"==typeof e?S(t):c(e)?(t._a=e.slice(0),x(t)):t._d=e instanceof Date?new Date(+e):new Date(e)}function C(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function D(t,e,i){var s=z(Math.abs(t)/1e3),o=z(s/60),n=z(o/60),r=z(n/24),a=z(r/365),h=45>s&&["s",s]||1===o&&["m"]||45>o&&["mm",o]||1===n&&["h"]||22>n&&["hh",n]||1===r&&["d"]||25>=r&&["dd",r]||45>=r&&["M"]||345>r&&["MM",z(r/30)]||1===a&&["y"]||["yy",a];return h[2]=e,h[3]=t>0,h[4]=i,C.apply({},h)}function L(t,e,i){var s=i-e,o=i-t.day();return o>s&&(o-=7),s-7>o&&(o+=7),Math.ceil(F(t).add("d",o).dayOfYear()/7)}function O(t){var e=t._i,i=t._f;return null===e||""===e?null:("string"==typeof e&&(t._i=e=g().preparse(e)),F.isMoment(e)?(t=d({},e),t._d=new Date(+e._d)):i?c(i)?M(t):T(t):E(t),new a(t))}function N(t,e){F.fn[t]=F.fn[t+"s"]=function(t){var i=this._isUTC?"UTC":"";return null!=t?(this._d["set"+i+e](t),this):this._d["get"+i+e]()}}function k(t){F.duration.fn[t]=function(){return this._data[t]}}function A(t,e){F.duration.fn["as"+t]=function(){return+this/e}}for(var F,I,Y="2.0.0",z=Math.round,H={},P=i!==s&&i.exports,R=/^\/?Date\((\-?\d+)/i,j=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYY|YYYY|YY|a|A|hh?|HH?|mm?|ss?|SS?S?|X|zz?|ZZ?|.)/g,U=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,W=/\d\d?/,B=/\d{1,3}/,q=/\d{3}/,V=/\d{1,4}/,X=/[+\-]?\d{1,6}/,K=/[0-9]*[a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF]+\s*?[\u0600-\u06FF]+/i,G=/Z|[\+\-]\d\d:?\d\d/i,Z=/T/i,J=/[\+\-]?\d+(\.\d{1,3})?/,Q=/^\s*\d{4}-\d\d-\d\d((T| )(\d\d(:\d\d(:\d\d(\.\d\d?\d?)?)?)?)?([\+\-]\d\d:?\d\d)?)?/,$="YYYY-MM-DDTHH:mm:ssZ",te=[["HH:mm:ss.S",/(T| )\d\d:\d\d:\d\d\.\d{1,3}/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],ee=/([\+\-]|\d\d)/gi,ie="Month|Date|Hours|Minutes|Seconds|Milliseconds".split("|"),se={Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6},oe={},ne="DDD w W M D d".split(" "),re="M D H h m s w W".split(" "),ae={M:function(){return this.month()+1},MMM:function(t){return this.lang().monthsShort(this,t)},MMMM:function(t){return this.lang().months(this,t)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(t){return this.lang().weekdaysMin(this,t)},ddd:function(t){return this.lang().weekdaysShort(this,t)},dddd:function(t){return this.lang().weekdays(this,t)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return p(this.year()%100,2)},YYYY:function(){return p(this.year(),4)},YYYYY:function(){return p(this.year(),5)},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return~~(this.milliseconds()/100)},SS:function(){return p(~~(this.milliseconds()/10),2)},SSS:function(){return p(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+p(~~(t/60),2)+":"+p(~~t%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+p(~~(10*t/6),4)},X:function(){return this.unix()}};ne.length;)I=ne.pop(),ae[I+"o"]=n(ae[I]);for(;re.length;)I=re.pop(),ae[I+I]=o(ae[I],2);for(ae.DDDD=o(ae.DDD,3),r.prototype={set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t){var e,i,s;for(this._monthsParse||(this._monthsParse=[]),e=0;12>e;e++)if(this._monthsParse[e]||(i=F([2e3,e]),s="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[e]=RegExp(s.replace(".",""),"i")),this._monthsParse[e].test(t))return e},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[last] dddd [at] LT",sameElse:"L"},calendar:function(t,e){var i=this._calendar[t];return"function"==typeof i?i.apply(e):i},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",preparse:function(t){return t},postformat:function(t){return t},week:function(t){return L(t,this._week.dow,this._week.doy)},_week:{dow:0,doy:6}},F=function(t,e,i){return O({_i:t,_f:e,_l:i,_isUTC:!1})},F.utc=function(t,e,i){return O({_useUTC:!0,_isUTC:!0,_l:i,_i:t,_f:e})},F.unix=function(t){return F(1e3*t)},F.duration=function(t,e){var i,s=F.isDuration(t),o="number"==typeof t,n=s?t._data:o?{}:t;return o&&(e?n[e]=t:n.milliseconds=t),i=new h(n),s&&t.hasOwnProperty("_lang")&&(i._lang=t._lang),i},F.version=Y,F.defaultFormat=$,F.lang=function(t,e){return t?(e?m(t,e):H[t]||g(t),F.duration.fn._lang=F.fn._lang=g(t),s):F.fn._lang._abbr},F.langData=function(t){return t&&t._lang&&t._lang._abbr&&(t=t._lang._abbr),g(t)},F.isMoment=function(t){return t instanceof a},F.isDuration=function(t){return t instanceof h},F.fn=a.prototype={clone:function(){return F(this)},valueOf:function(){return+this._d},unix:function(){return Math.floor(+this._d/1e3)},toString:function(){return this.format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._d},toJSON:function(){return F.utc(this).format("YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var t=this;return[t.year(),t.month(),t.date(),t.hours(),t.minutes(),t.seconds(),t.milliseconds()]},isValid:function(){return null==this._isValid&&(this._isValid=this._a?!f(this._a,(this._isUTC?F.utc(this._a):F(this._a)).toArray()):!isNaN(this._d.getTime())),!!this._isValid},utc:function(){return this._isUTC=!0,this},local:function(){return this._isUTC=!1,this},format:function(t){var e=w(this,t||F.defaultFormat);return this.lang().postformat(e)},add:function(t,e){var i;return i="string"==typeof t?F.duration(+e,t):F.duration(t,e),u(this,i,1),this},subtract:function(t,e){var i;return i="string"==typeof t?F.duration(+e,t):F.duration(t,e),u(this,i,-1),this},diff:function(t,e,i){var s,o,n=this._isUTC?F(t).utc():F(t).local(),r=6e4*(this.zone()-n.zone());return e&&(e=e.replace(/s$/,"")),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+n.daysInMonth()),o=12*(this.year()-n.year())+(this.month()-n.month()),o+=(this-F(this).startOf("month")-(n-F(n).startOf("month")))/s,"year"===e&&(o/=12)):(s=this-n-r,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?s/864e5:"week"===e?s/6048e5:s),i?o:l(o) +},from:function(t,e){return F.duration(this.diff(t)).lang(this.lang()._abbr).humanize(!e)},fromNow:function(t){return this.from(F(),t)},calendar:function(){var t=this.diff(F().startOf("day"),"days",!0),e=-6>t?"sameElse":-1>t?"lastWeek":0>t?"lastDay":1>t?"sameDay":2>t?"nextDay":7>t?"nextWeek":"sameElse";return this.format(this.lang().calendar(e,this))},isLeapYear:function(){var t=this.year();return 0===t%4&&0!==t%100||0===t%400},isDST:function(){return this.zone()+F(t).startOf(e)},isBefore:function(t,e){return e=e!==s?e:"millisecond",+this.clone().startOf(e)<+F(t).startOf(e)},isSame:function(t,e){return e=e!==s?e:"millisecond",+this.clone().startOf(e)===+F(t).startOf(e)},zone:function(){return this._isUTC?0:this._d.getTimezoneOffset()},daysInMonth:function(){return F.utc([this.year(),this.month()+1,0]).date()},dayOfYear:function(t){var e=z((F(this).startOf("day")-F(this).startOf("year"))/864e5)+1;return null==t?e:this.add("d",t-e)},isoWeek:function(t){var e=L(this,1,4);return null==t?e:this.add("d",7*(t-e))},week:function(t){var e=this.lang().week(this);return null==t?e:this.add("d",7*(t-e))},lang:function(t){return t===s?this._lang:(this._lang=g(t),this)}},I=0;ie.length>I;I++)N(ie[I].toLowerCase().replace(/s$/,""),ie[I]);N("year","FullYear"),F.fn.days=F.fn.day,F.fn.weeks=F.fn.week,F.fn.isoWeeks=F.fn.isoWeek,F.duration.fn=h.prototype={weeks:function(){return l(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+2592e6*this._months},humanize:function(t){var e=+this,i=D(e,!t,this.lang());return t&&(i=this.lang().pastFuture(e,i)),this.lang().postformat(i)},lang:F.fn.lang};for(I in se)se.hasOwnProperty(I)&&(A(I,se[I]),k(I.toLowerCase()));A("Weeks",6048e5),F.lang("en",{ordinal:function(t){var e=t%10,i=1===~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),P&&(i.exports=F),"undefined"==typeof ender&&(this.moment=F),"function"==typeof t&&t.amd&&t("moment",[],function(){return F})}).call(this)})()},{}]},{},[1])(1)}); \ No newline at end of file