added "task manager" and map animations
This commit is contained in:
2
.idea/dictionaries/exodus4d.xml
generated
2
.idea/dictionaries/exodus4d.xml
generated
@@ -18,6 +18,7 @@
|
||||
<w>mouseover</w>
|
||||
<w>nonblock</w>
|
||||
<w>pnotify</w>
|
||||
<w>raphaël</w>
|
||||
<w>revalidate</w>
|
||||
<w>scrollbar</w>
|
||||
<w>scrollbars</w>
|
||||
@@ -27,6 +28,7 @@
|
||||
<w>stargate</w>
|
||||
<w>tbody</w>
|
||||
<w>textarea</w>
|
||||
<w>timelimit</w>
|
||||
</words>
|
||||
</dictionary>
|
||||
</component>
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
||||
<metadata></metadata>
|
||||
<defs>
|
||||
<font id="fontawesomeregular" horiz-adv-x="1536" >
|
||||
@@ -147,14 +147,14 @@
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
|
||||
<glyph unicode="" horiz-adv-x="1664" d="M640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5 l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5 t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
|
||||
<glyph unicode="" horiz-adv-x="1664" d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45 t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" />
|
||||
<glyph unicode="" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
|
||||
<glyph unicode="" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
|
||||
<glyph unicode="" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
|
||||
<glyph unicode="" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
|
||||
<glyph unicode="" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||
<glyph unicode="" d="M1536 160q0 -119 -84.5 -203.5t-203.5 -84.5h-192v608h203l30 224h-233v143q0 54 28 83t96 29l132 1v207q-96 9 -180 9q-136 0 -218 -80.5t-82 -225.5v-166h-224v-224h224v-608h-544q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5v-960z" />
|
||||
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
|
||||
<glyph unicode="" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
|
||||
@@ -275,7 +275,7 @@
|
||||
<glyph unicode="" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
|
||||
<glyph unicode="" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
|
||||
<glyph unicode="" horiz-adv-x="1568" d="M496 192q0 -60 -42.5 -102t-101.5 -42q-60 0 -102 42t-42 102t42 102t102 42q59 0 101.5 -42t42.5 -102zM928 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -66 -47 -113t-113 -47t-113 47t-47 113 t47 113t113 47t113 -47t47 -113zM1360 192q0 -46 -33 -79t-79 -33t-79 33t-33 79t33 79t79 33t79 -33t33 -79zM528 1088q0 -73 -51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5t51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5zM992 1280q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1536 640q0 -40 -28 -68t-68 -28t-68 28t-28 68t28 68t68 28t68 -28t28 -68zM1328 1088q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5 q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" />
|
||||
<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
|
||||
<glyph unicode="" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
|
||||
@@ -411,7 +411,7 @@
|
||||
<glyph unicode="" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
|
||||
<glyph unicode="" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
|
||||
<glyph unicode="" horiz-adv-x="1280" d="M981 197q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13t99 39t73 73t27.5 109zM864 1055 q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5q53 56 53 159zM752 1536h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5 t-59.5 -93t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5 t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32z" />
|
||||
<glyph unicode="" horiz-adv-x="1984" d="M831 572q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96q0 57 41.5 98t97.5 41t96.5 -41t40.5 -98zM1292 711q56 0 96.5 -41t40.5 -98q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96q0 57 41.5 98t97.5 41zM1984 722q0 -62 -31 -114t-83 -82q5 -33 5 -61 q0 -121 -68.5 -230.5t-197.5 -193.5q-125 -82 -285.5 -125.5t-335.5 -43.5q-176 0 -336.5 43.5t-284.5 125.5q-129 84 -197.5 193t-68.5 231q0 29 5 66q-48 31 -77 81.5t-29 109.5q0 94 66 160t160 66q83 0 148 -55q248 158 592 164l134 423q4 14 17.5 21.5t28.5 4.5 l347 -82q22 50 68.5 81t102.5 31q77 0 131.5 -54.5t54.5 -131.5t-54.5 -132t-131.5 -55q-76 0 -130.5 54t-55.5 131l-315 74l-116 -366q327 -14 560 -166q64 58 151 58q94 0 160 -66t66 -160zM1664 1459q-45 0 -77 -32t-32 -77t32 -77t77 -32t77 32t32 77t-32 77t-77 32z M77 722q0 -67 51 -111q49 131 180 235q-36 25 -82 25q-62 0 -105.5 -43.5t-43.5 -105.5zM1567 105q112 73 171.5 166t59.5 194t-59.5 193.5t-171.5 165.5q-116 75 -265.5 115.5t-313.5 40.5t-313.5 -40.5t-265.5 -115.5q-112 -73 -171.5 -165.5t-59.5 -193.5t59.5 -194 t171.5 -166q116 -75 265.5 -115.5t313.5 -40.5t313.5 40.5t265.5 115.5zM1850 605q57 46 57 117q0 62 -43.5 105.5t-105.5 43.5q-49 0 -86 -28q131 -105 178 -238zM1258 237q11 11 27 11t27 -11t11 -27.5t-11 -27.5q-99 -99 -319 -99h-2q-220 0 -319 99q-11 11 -11 27.5 t11 27.5t27 11t27 -11q77 -77 265 -77h2q188 0 265 77z" />
|
||||
<glyph unicode="" horiz-adv-x="2304" d="M1509 107q0 -14 -12 -29q-52 -59 -147.5 -83t-196.5 -24q-252 0 -346 107q-12 15 -12 29q0 17 12 29.5t29 12.5q15 0 30 -12q58 -49 125.5 -66t159.5 -17t160 17t127 66q15 12 30 12q17 0 29 -12.5t12 -29.5zM978 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5 t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM1622 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM415 793q-39 27 -88 27q-66 0 -113 -47t-47 -113q0 -72 54 -121q53 141 194 254zM2020 382q0 222 -249 387 q-128 85 -291.5 126.5t-331.5 41.5t-331.5 -41.5t-292.5 -126.5q-249 -165 -249 -387t249 -387q129 -85 292.5 -126.5t331.5 -41.5t331.5 41.5t291.5 126.5q249 165 249 387zM2137 660q0 66 -47 113t-113 47q-50 0 -93 -30q140 -114 192 -256q61 48 61 126zM1993 1335 q0 49 -34.5 83.5t-82.5 34.5q-49 0 -83.5 -34.5t-34.5 -83.5q0 -48 34.5 -82.5t83.5 -34.5q48 0 82.5 34.5t34.5 82.5zM2220 660q0 -65 -33 -122t-89 -90q5 -35 5 -66q0 -139 -79 -255.5t-208 -201.5q-140 -92 -313.5 -136.5t-354.5 -44.5t-355 44.5t-314 136.5 q-129 85 -208 201.5t-79 255.5q0 36 6 71q-53 33 -83.5 88.5t-30.5 118.5q0 100 71 171.5t172 71.5q91 0 159 -60q265 170 638 177l144 456q10 29 40 29q24 0 384 -90q24 55 74 88t110 33q82 0 141 -59t59 -142t-59 -141.5t-141 -58.5q-83 0 -141.5 58.5t-59.5 140.5 l-339 80l-125 -395q349 -15 603 -179q71 63 163 63q101 0 172 -71.5t71 -171.5z" />
|
||||
<glyph unicode="" d="M950 393q7 7 17.5 7t17.5 -7t7 -18t-7 -18q-65 -64 -208 -64h-1h-1q-143 0 -207 64q-8 7 -8 18t8 18q7 7 17.5 7t17.5 -7q49 -51 172 -51h1h1q122 0 173 51zM671 613q0 -37 -26 -64t-63 -27t-63 27t-26 64t26 63t63 26t63 -26t26 -63zM1214 1049q-29 0 -50 21t-21 50 q0 30 21 51t50 21q30 0 51 -21t21 -51q0 -29 -21 -50t-51 -21zM1216 1408q132 0 226 -94t94 -227v-894q0 -133 -94 -227t-226 -94h-896q-132 0 -226 94t-94 227v894q0 133 94 227t226 94h896zM1321 596q35 14 57 45.5t22 70.5q0 51 -36 87.5t-87 36.5q-60 0 -98 -48 q-151 107 -375 115l83 265l206 -49q1 -50 36.5 -85t84.5 -35q50 0 86 35.5t36 85.5t-36 86t-86 36q-36 0 -66 -20.5t-45 -53.5l-227 54q-9 2 -17.5 -2.5t-11.5 -14.5l-95 -302q-224 -4 -381 -113q-36 43 -93 43q-51 0 -87 -36.5t-36 -87.5q0 -37 19.5 -67.5t52.5 -45.5 q-7 -25 -7 -54q0 -98 74 -181.5t201.5 -132t278.5 -48.5q150 0 277.5 48.5t201.5 132t74 181.5q0 27 -6 54zM971 702q37 0 63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64t26 63t63 26z" />
|
||||
<glyph unicode="" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
|
||||
@@ -438,7 +438,7 @@
|
||||
<glyph unicode="" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
|
||||
<glyph unicode="" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
|
||||
<glyph unicode="" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||
<glyph unicode="" d="M1397 1408q58 0 98.5 -40.5t40.5 -98.5v-1258q0 -58 -40.5 -98.5t-98.5 -40.5h-1258q-58 0 -98.5 40.5t-40.5 98.5v1258q0 58 40.5 98.5t98.5 40.5h1258zM1465 11v1258q0 28 -20 48t-48 20h-1258q-28 0 -48 -20t-20 -48v-1258q0 -28 20 -48t48 -20h1258q28 0 48 20t20 48 zM694 749l188 -387l533 145v-496q0 -7 -5.5 -12.5t-12.5 -5.5h-1258q-7 0 -12.5 5.5t-5.5 12.5v141l711 195l-212 439q4 1 12 2.5t12 1.5q170 32 303.5 21.5t221 -46t143.5 -94.5q27 -28 -25 -42q-64 -16 -256 -62l-97 198q-111 7 -240 -16zM1397 1287q7 0 12.5 -5.5 t5.5 -12.5v-428q-85 30 -188 52q-294 64 -645 12l-18 -3l-65 134h-233l85 -190q-132 -51 -230 -137v560q0 7 5.5 12.5t12.5 5.5h1258zM286 387q-14 -3 -26 4.5t-14 21.5q-24 203 166 305l129 -270z" />
|
||||
<glyph unicode="" horiz-adv-x="1024" d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" />
|
||||
<glyph unicode="" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
|
||||
<glyph unicode="" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
|
||||
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
|
||||
@@ -513,8 +513,53 @@
|
||||
<glyph unicode="" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
|
||||
<glyph unicode="" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
|
||||
<glyph unicode="" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" />
|
||||
<glyph unicode="" horiz-adv-x="2048" d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335 q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5 q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360q2 0 4.5 -1t5.5 -2.5l5 -2.5l188 199v347l-187 194 q-13 -8 -29 -10zM986 1438h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13 zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224 l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196 l-48 -227l130 227h-82zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" />
|
||||
<glyph unicode="" d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" />
|
||||
<glyph unicode="" d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384 q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" />
|
||||
<glyph unicode="" horiz-adv-x="2048" d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021 q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25 q209 0 374 -102q172 107 374 102z" />
|
||||
<glyph unicode="" horiz-adv-x="2048" d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101 q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284 q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" />
|
||||
<glyph unicode="" d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34 l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114 v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378 v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51 h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5 t-43 -34t-16.5 -53.5z" />
|
||||
<glyph unicode="" horiz-adv-x="2048" d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
|
||||
<glyph unicode="" horiz-adv-x="2048" d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126.5t-103.5 132.5t-108.5 126t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
|
||||
<glyph unicode="" horiz-adv-x="1664" d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
|
||||
<glyph unicode="" horiz-adv-x="2048" d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
|
||||
<glyph unicode="" horiz-adv-x="2048" d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
|
||||
<glyph unicode="" d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
|
||||
<glyph unicode="" horiz-adv-x="2304" d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5 t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105 l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226 t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" />
|
||||
<glyph unicode="" d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 t127 -344z" />
|
||||
<glyph unicode="" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h416q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-419 -420q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5 t431 200.5q144 12 276.5 -30.5t236.5 -129.5l419 419h-261q-14 0 -23 9t-9 23v64zM704 -128q117 0 223.5 45.5t184 123t123 184t45.5 223.5t-45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123 t223.5 -45.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1280" d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
|
||||
<glyph unicode="" d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 q0 -226 -154 -391q103 -57 218 -57z" />
|
||||
<glyph unicode="" horiz-adv-x="1920" d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -29 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
|
||||
<glyph unicode="" horiz-adv-x="2048" d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M1728 1536q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-229 -230l156 -156q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-156 157l-99 -100q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5 t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5t431 200.5q144 12 276.5 -30.5t236.5 -129.5l99 99l-156 156q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l156 -156l229 229h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM1280 448q0 117 -45.5 223.5t-123 184t-184 123 t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1280" d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 t131.5 -316.5t316.5 -131.5z" />
|
||||
<glyph unicode="" horiz-adv-x="2048" d="M2029 685q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-131q-12 -119 -67 -226t-139 -183.5t-196.5 -121.5t-234.5 -45q-180 0 -330.5 91t-234.5 247 t-74 337q8 162 94 300t226.5 219.5t302.5 85.5q166 4 310.5 -71.5t235.5 -208.5t107 -296h131v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM640 128q104 0 198.5 40.5t163.5 109.5t109.5 163.5 t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
|
||||
<glyph unicode="" horiz-adv-x="1280" d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5 l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5 q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" />
|
||||
<glyph unicode="" d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5 t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233 l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216 q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
|
||||
<glyph unicode="" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" />
|
||||
<glyph unicode="" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136 q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69 t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" />
|
||||
<glyph unicode="" horiz-adv-x="2048" d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704 q-26 0 -45 -19t-19 -45v-384h1152z" />
|
||||
<glyph unicode="" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
|
||||
<glyph unicode="" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
|
||||
<glyph unicode="" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" d="M1792 204v-209h-642v209h134v926h-6l-314 -1135h-243l-310 1135h-8v-926h135v-209h-538v209h69q21 0 43 19.5t22 37.5v881q0 18 -22 40t-43 22h-69v209h672l221 -821h6l223 821h670v-209h-71q-19 0 -41 -22t-22 -40v-881q0 -18 21.5 -37.5t41.5 -19.5h71z" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
<glyph unicode="" horiz-adv-x="1792" />
|
||||
</font>
|
||||
</defs></svg>
|
||||
|
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 306 KiB |
Binary file not shown.
Binary file not shown.
@@ -34,12 +34,13 @@
|
||||
<title>Pathfinder</title>
|
||||
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="css/pathfinder.css">
|
||||
|
||||
</head>
|
||||
<body class="pf-body">
|
||||
|
||||
<!-- Hey Bob! Where is all the magic? -->
|
||||
|
||||
<script data-main="build_js/app" src="build_js/lib/require.js"></script>
|
||||
<script data-main="js/app" src="js/lib/require.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
25
js/app.js
25
js/app.js
@@ -1,21 +1,23 @@
|
||||
|
||||
requirejs.config({
|
||||
baseUrl: 'build_js', // user build_js files, change to "js" for un-compressed source
|
||||
baseUrl: 'js', // user build_js files, change to "js" for un-compressed source
|
||||
stubModules: ['text'], // Exclude these modules on build
|
||||
paths: {
|
||||
layout: 'layout',
|
||||
jquery: 'lib/jquery-1.11.1.min', // v1.11.1 jQuery
|
||||
jquery: 'lib/jquery-1.11.2.min', // v1.11.2 jQuery
|
||||
//jquery: "lib/jquery-2.1.1.min", // v2.1.1 jQuery
|
||||
bootstrap: 'lib/bootstrap.min', // v3.3.0 Bootstrap js code - http://getbootstrap.com/javascript/
|
||||
text: 'lib/requirejs/text', // v2.0.12 A RequireJS/AMD loader plugin for loading text resources.
|
||||
throttleDebounce: 'lib/jquery.ba-throttle-debounce.min', // v1.1 Handle/throttle jquery events - http://benalman.com/projects/jquery-throttle-debounce-plugin/
|
||||
mustache: 'lib/mustache.min', // v1.0.0 Javascript template engine - http://mustache.github.io/
|
||||
velocity: 'lib/velocity.min', // v1.2.1 animation engine - http://julian.com/research/velocity/
|
||||
velocityUI: 'lib/velocity.ui.min', // v5.0.3 plugin for velocity - http://julian.com/research/velocity/#uiPack
|
||||
templates: '../templates', // template dir
|
||||
slidebars: 'lib/slidebars', // v0.10 Slidebars - side menu plugin http://plugins.adchsm.me/slidebars/
|
||||
jsPlumb: 'lib/dom.jsPlumb-1.7.2-min', // v1.7.2 jsPlumb (Vanilla)- main map draw plugin http://www.jsplumb.org/
|
||||
customScrollbar: 'lib/jquery.mCustomScrollbar.concat.min', // v3.1.11 Custom scroll bars - http://manos.malihu.gr/
|
||||
datatables: 'lib/jquery.dataTables.min', // v1.10.3 DataTables - tables
|
||||
datatablesBootstrap: 'lib/dataTables.bootstrap', // DataTables - not used (bootstrap style)
|
||||
datatables: 'lib/datatables/jquery.dataTables.min', // v1.10.3 DataTables - https://datatables.net/
|
||||
datatablesBootstrap: 'lib/datatables/dataTables.bootstrap', // DataTables - not used (bootstrap style)
|
||||
datatablesTableTools: 'lib/datatables/extensions/TableTools/js/dataTables.tableTools', // v2.2.3 TableTools (PlugIn) - https://datatables.net/extensions/tabletools/
|
||||
xEditable: 'lib/bootstrap-editable.min', // v1.5.1 X-editable - in placed editing
|
||||
morris: 'lib/morris.min', // v0.5.0 Morris.js - graphs and charts
|
||||
raphael: 'lib/raphael-min', // v2.1.2 Raphaël - required for morris (dependency)
|
||||
@@ -24,7 +26,7 @@ requirejs.config({
|
||||
dragToSelect: 'lib/jquery.dragToSelect', // v1.1 Drag to Select - http://andreaslagerkvist.com/jquery/drag-to-select/
|
||||
hoverIntent: 'lib/jquery.hoverIntent.minified', // v1.8.0 Hover intention - http://cherne.net/brian/resources/jquery.hoverIntent.html
|
||||
fullScreen: 'lib/jquery.fullscreen.min', // v0.5.0 Full screen mode - https://github.com/private-face/jquery.fullscreen
|
||||
|
||||
select2: 'lib/select2.min', // v4.0.0 Drop Down customization - https://select2.github.io/
|
||||
|
||||
|
||||
pnotify: 'lib/pnotify/pnotify.core', // v2.0.1 PNotify - notification core file
|
||||
@@ -44,8 +46,8 @@ requirejs.config({
|
||||
velocity: {
|
||||
deps: ['jquery']
|
||||
},
|
||||
throttleDebounce: {
|
||||
deps: ['jquery']
|
||||
velocityUI: {
|
||||
deps: ['velocity']
|
||||
},
|
||||
slidebars: {
|
||||
deps: ['jquery']
|
||||
@@ -56,6 +58,9 @@ requirejs.config({
|
||||
datatables: {
|
||||
deps: ['jquery']
|
||||
},
|
||||
datatablesTableTools: {
|
||||
deps: ['datatables']
|
||||
},
|
||||
datatablesBootstrap: {
|
||||
deps: ['datatables']
|
||||
},
|
||||
@@ -84,6 +89,10 @@ requirejs.config({
|
||||
},
|
||||
fullScreen: {
|
||||
deps : ['jquery']
|
||||
},
|
||||
select2: {
|
||||
deps : ['jquery'],
|
||||
exports: 'Select2'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -8,8 +8,17 @@ define(['jquery'], function($) {
|
||||
|
||||
var Config = {
|
||||
timer: {
|
||||
mapUpdatePing: 3000, // ping for map update
|
||||
userUpdatePing: 2000 // ping for map user update
|
||||
mapUpdate: {
|
||||
delay: 3000, // delay between ping calls
|
||||
executionLimit: 300 // log timelimit: main map update ping
|
||||
},
|
||||
userUpdate: {
|
||||
delay: 2000, // delay between ping calls
|
||||
executionLimit: 100 // log timelimit: map user update ping
|
||||
},
|
||||
mapModuleData: {
|
||||
executionLimit: 100 // log timelimit: get all mapData
|
||||
}
|
||||
},
|
||||
path: {
|
||||
img: 'img/'
|
||||
@@ -19,9 +28,25 @@ define(['jquery'], function($) {
|
||||
eveCentral: 'http://api.eve-central.com/api/' // jump rout api
|
||||
},
|
||||
animationSpeed: {
|
||||
headerLink: 100 // links in head bar
|
||||
headerLink: 100, // links in head bar
|
||||
mapDeleteSystem: 200 // remove system from map
|
||||
},
|
||||
classes: {
|
||||
// log types
|
||||
logTypes: {
|
||||
info: {
|
||||
class: 'pf-log-info',
|
||||
label: 'info'
|
||||
},
|
||||
warning: {
|
||||
class: 'pf-log-warning',
|
||||
label: 'warning'
|
||||
},
|
||||
error: {
|
||||
class: 'pf-log-error',
|
||||
label: 'error'
|
||||
}
|
||||
},
|
||||
// map types
|
||||
mapTypes: {
|
||||
standard: {
|
||||
@@ -242,7 +267,9 @@ define(['jquery'], function($) {
|
||||
[ 'Label',
|
||||
{
|
||||
label: '<i class="fa fa-warning"></i> save mass',
|
||||
cssClass: ['pf-map-connection-overlay', 'mass'].join(' ')
|
||||
cssClass: ['pf-map-connection-overlay', 'mass'].join(' '),
|
||||
width:50, length:30,
|
||||
location: 0.5
|
||||
} ]
|
||||
]
|
||||
}
|
||||
|
||||
466
js/app/logging.js
Normal file
466
js/app/logging.js
Normal file
@@ -0,0 +1,466 @@
|
||||
/**
|
||||
* logging
|
||||
*/
|
||||
|
||||
define([
|
||||
'jquery',
|
||||
'app/init',
|
||||
'app/util',
|
||||
'bootbox'
|
||||
], function($, Init, Util, bootbox) {
|
||||
|
||||
'use strict';
|
||||
|
||||
var logData = []; // cache object for all log entries
|
||||
var logDataTable = null; // "Datatables" Object
|
||||
|
||||
// Morris charts data
|
||||
var maxGraphDataCount = 30; // max date entries for a graph
|
||||
var chartData = {}; // chart Data object for all Morris Log graphs
|
||||
|
||||
var config = {
|
||||
dialogDynamicAreaClass: 'pf-dialog-dynamic-area', // class for dynamic dialog area
|
||||
logGraphClass: 'pf-log-graph' // class for all log Morris graphs
|
||||
};
|
||||
|
||||
/**
|
||||
* get log time string
|
||||
* @returns {string}
|
||||
*/
|
||||
var getLogTime = function(){
|
||||
|
||||
var logTimeFormatOptions = {
|
||||
month: '2-digit',
|
||||
day: '2-digit',
|
||||
year: '2-digit',
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
second: '2-digit',
|
||||
hour12: false
|
||||
};
|
||||
|
||||
var logTime = Util.getServerTime().toLocaleString('en-UK', logTimeFormatOptions);
|
||||
|
||||
return logTime;
|
||||
};
|
||||
|
||||
/**
|
||||
* shows the logging dialog
|
||||
*/
|
||||
var showDialog = function(){
|
||||
|
||||
// dialog content
|
||||
|
||||
var content = $('<div>');
|
||||
|
||||
// content row for log graphs
|
||||
var rowElementGraphs = $('<div>', {
|
||||
class: 'row'
|
||||
});
|
||||
|
||||
content.append(rowElementGraphs);
|
||||
|
||||
// log table area --------------------------------------------------
|
||||
var logTableArea = $('<div>', {
|
||||
class: config.dialogDynamicAreaClass
|
||||
});
|
||||
|
||||
var logTable = $('<table>', {
|
||||
class: ['compact', 'stripe', 'order-column', 'row-border'].join(' ')
|
||||
});
|
||||
|
||||
var tableHeadline = $('<h4>', {
|
||||
text: 'Log table'
|
||||
});
|
||||
|
||||
// add content Structure to dome before table initialization
|
||||
content.append(tableHeadline);
|
||||
|
||||
logTableArea.append(logTable);
|
||||
content.append(logTableArea);
|
||||
|
||||
// init log table
|
||||
logDataTable = logTable.DataTable( {
|
||||
paging: true,
|
||||
ordering: true,
|
||||
order: [ 1, 'desc' ],
|
||||
autoWidth: false,
|
||||
hover: false,
|
||||
pageLength: 15,
|
||||
data: logData, // load cached logs (if available)
|
||||
language: {
|
||||
emptyTable: 'No entries',
|
||||
zeroRecords: 'No entries found',
|
||||
lengthMenu: 'Show _MENU_ entries',
|
||||
info: 'Showing _START_ to _END_ of _TOTAL_ entries'
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
title: '<i class="fa fa-lg fa-tag"></i>',
|
||||
width: '18px',
|
||||
searchable: false
|
||||
},{
|
||||
title: '<i class="fa fa-lg fa-fw fa-clock-o"></i> ',
|
||||
width: '80px',
|
||||
class: 'text-right'
|
||||
},{
|
||||
title: '<i class="fa fa-lg fa-fw fa-history"></i> ',
|
||||
width: '35px',
|
||||
class: 'text-right',
|
||||
sType: 'html',
|
||||
searchable: false
|
||||
},{
|
||||
title: 'description',
|
||||
searchable: true
|
||||
},{
|
||||
title: '<i class="fa fa-lg fa-code-fork"></i> ',
|
||||
width: '18px',
|
||||
class: 'text-right'
|
||||
},{
|
||||
title: 'Prozess-ID ',
|
||||
class: 'text-right',
|
||||
width: '80px'
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
// open dialog
|
||||
var logDialog = bootbox.dialog({
|
||||
title: 'Task-Manager',
|
||||
message: content,
|
||||
className: 'modal-lg',
|
||||
buttons: {
|
||||
close: {
|
||||
label: 'close',
|
||||
className: 'btn-primary'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// modal dialog is shown
|
||||
logDialog.on('shown.bs.modal', function(e) {
|
||||
|
||||
// show Morris graphs ----------------------------------------------------------
|
||||
|
||||
// function for chart label formation
|
||||
var labelYFormat = function(y){
|
||||
return Math.round(y) + 'ms';
|
||||
};
|
||||
|
||||
|
||||
for(var key in chartData) {
|
||||
if(chartData.hasOwnProperty(key)) {
|
||||
// create a chart for each key
|
||||
|
||||
var colElementGraph = $('<div>', {
|
||||
class: ['col-md-6'].join(' ')
|
||||
});
|
||||
|
||||
|
||||
// graph element
|
||||
var graphElement = $('<div>', {
|
||||
class: config.logGraphClass
|
||||
});
|
||||
|
||||
var graphArea = $('<div>', {
|
||||
class: config.dialogDynamicAreaClass
|
||||
}).append( graphElement );
|
||||
|
||||
// headline
|
||||
var headline = $('<h4>', {
|
||||
text: key
|
||||
}).prepend(
|
||||
$('<span>', {
|
||||
class: ['txt-color', 'txt-color-grayLight'].join(' '),
|
||||
text: 'Prozess-ID: '
|
||||
})
|
||||
);
|
||||
|
||||
// show update ping between function calls
|
||||
var updateElement = $('<small>', {
|
||||
class: ['txt-color', 'txt-color-blue', 'pull-right'].join(' ')
|
||||
});
|
||||
headline.append(updateElement).append('<br>');
|
||||
|
||||
// show average execution time
|
||||
var averageElement = $('<small>', {
|
||||
class: 'pull-right'
|
||||
});
|
||||
headline.append(averageElement);
|
||||
|
||||
colElementGraph.append( headline );
|
||||
colElementGraph.append( graphArea );
|
||||
|
||||
graphArea.showLoadingAnimation();
|
||||
|
||||
rowElementGraphs.append( colElementGraph );
|
||||
|
||||
// cache DOM Elements that will be updated frequently
|
||||
chartData[key].averageElement = averageElement;
|
||||
chartData[key].updateElement = updateElement;
|
||||
|
||||
chartData[key].graph = Morris.Area({
|
||||
element: graphElement,
|
||||
data: [],
|
||||
xkey: 'x',
|
||||
ykeys: ['y'],
|
||||
labels: [key],
|
||||
units: 'ms',
|
||||
parseTime: false,
|
||||
ymin: 0,
|
||||
yLabelFormat: labelYFormat,
|
||||
padding: 10,
|
||||
hideHover: true,
|
||||
pointSize: 3,
|
||||
lineColors: ['#375959'],
|
||||
pointFillColors: ['#477372'],
|
||||
pointStrokeColors: ['#313335'],
|
||||
lineWidth: 3,
|
||||
grid: false,
|
||||
gridTextSize: 9,
|
||||
gridTextFamily: 'Oxygen Bold',
|
||||
behaveLikeLine: true,
|
||||
goals: [],
|
||||
goalLineColors: ['#5cb85c'],
|
||||
smooth: false,
|
||||
fillOpacity: 0.3,
|
||||
resize: true
|
||||
});
|
||||
|
||||
graphArea.hideLoadingAnimation();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// add TableTool Buttons
|
||||
|
||||
var tt = new $.fn.DataTable.TableTools( logDataTable, {
|
||||
sSwfPath: 'js/lib/datatables/extensions/TableTools/swf/copy_csv_xls.swf',
|
||||
aButtons: [ 'copy', 'csv', 'print' ]
|
||||
});
|
||||
|
||||
$(tt.fnContainer()).insertBefore('.bootbox-body div.dataTables_wrapper');
|
||||
|
||||
// add button icons
|
||||
$('.DTTT_button_csv').prepend( $('<i>', {
|
||||
class: ['fa', 'fa-fw', 'fa-download'].join(' ')
|
||||
}));
|
||||
$('.DTTT_button_copy').prepend( $('<i>', {
|
||||
class: ['fa', 'fa-fw', 'fa-clipboard'].join(' ')
|
||||
}));
|
||||
$('.DTTT_button_print').prepend( $('<i>', {
|
||||
class: ['fa', 'fa-fw', 'fa-print'].join(' ')
|
||||
}));
|
||||
});
|
||||
|
||||
|
||||
// modal dialog is closed
|
||||
logDialog.on('hidden.bs.modal', function(e) {
|
||||
// clear memory -> destroy all charts
|
||||
for (var key in chartData) {
|
||||
if (chartData.hasOwnProperty(key)) {
|
||||
chartData[key].graph = null;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// modal dialog before hide
|
||||
logDialog.on('hide.bs.modal', function(e) {
|
||||
|
||||
// destroy logTable
|
||||
logDataTable.destroy(true);
|
||||
logDataTable= null;
|
||||
|
||||
// remove event -> prevent calling this multiple times
|
||||
$(this).off('hide.bs.modal');
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* updates the log graph for a log key
|
||||
* @param key
|
||||
* @param duration
|
||||
*/
|
||||
var updateLogGraph = function(key, duration){
|
||||
|
||||
// check if graph data already exist
|
||||
if( !(chartData.hasOwnProperty(key))){
|
||||
chartData[key] = {};
|
||||
chartData[key].data = [];
|
||||
chartData[key].graph = null;
|
||||
chartData[key].averageElement = null;
|
||||
chartData[key].updateElement = null;
|
||||
}
|
||||
|
||||
// add new value
|
||||
chartData[key].data.unshift(duration);
|
||||
|
||||
if(chartData[key].data.length > maxGraphDataCount){
|
||||
chartData[key].data = chartData[key].data.slice(0, maxGraphDataCount);
|
||||
}
|
||||
|
||||
function getGraphData(data) {
|
||||
var tempChartData = {
|
||||
data: [],
|
||||
dataSum: 0,
|
||||
average: 0
|
||||
};
|
||||
|
||||
for(var x = 0; x < maxGraphDataCount; x++){
|
||||
var value = 0;
|
||||
if(data[x]){
|
||||
value = data[x];
|
||||
tempChartData.dataSum = Number( (tempChartData.dataSum + value).toFixed(2) );
|
||||
}
|
||||
|
||||
tempChartData.data.push({
|
||||
x: x,
|
||||
y: value
|
||||
});
|
||||
}
|
||||
|
||||
// calculate average
|
||||
tempChartData.average = Number( ( tempChartData.dataSum / data.length ).toFixed(2) );
|
||||
|
||||
return tempChartData;
|
||||
}
|
||||
|
||||
var tempChartData = getGraphData(chartData[key].data);
|
||||
|
||||
// add new data to graph (Morris chart) - if is already initialized
|
||||
if(chartData[key].graph !== null){
|
||||
var avgElement = chartData[key].averageElement;
|
||||
var updateElement = chartData[key].updateElement;
|
||||
|
||||
var delay = Init.timer[key].delay;
|
||||
|
||||
if(delay){
|
||||
updateElement[0].textContent = ' delay: ' + delay + 'ms ';
|
||||
}
|
||||
|
||||
// set/change average line
|
||||
chartData[key].graph.options.goals = [tempChartData.average];
|
||||
|
||||
// change avg. display
|
||||
avgElement[0].textContent = 'Avg. ' + tempChartData.average + 'ms';
|
||||
|
||||
var avgType = getLogTypeByDuration(key, tempChartData.average);
|
||||
var avgTypeClass = Util.getLogInfo( avgType, 'class' );
|
||||
|
||||
//change avg. display class
|
||||
if(
|
||||
!avgElement.hasClass(avgTypeClass)
|
||||
){
|
||||
// avg type changed!
|
||||
avgElement.removeClass().addClass('pull-right txt-color ' + avgTypeClass);
|
||||
|
||||
// change goals line color
|
||||
if(avgType === 'warning'){
|
||||
chartData[key].graph.options.goalLineColors = ['#e28a0d'];
|
||||
$(document).setProgramStatus('problem');
|
||||
}else{
|
||||
chartData[key].graph.options.goalLineColors = ['#5cb85c'];
|
||||
}
|
||||
}
|
||||
|
||||
// set new data and redraw
|
||||
chartData[key].graph.setData( tempChartData.data );
|
||||
}
|
||||
|
||||
return tempChartData.data;
|
||||
};
|
||||
|
||||
/**
|
||||
* get the log "type" by log duration (ms).
|
||||
* If duration > warning limit -> show as warning
|
||||
* @param logKey
|
||||
* @param logDuration
|
||||
* @returns {string}
|
||||
*/
|
||||
var getLogTypeByDuration = function(logKey, logDuration){
|
||||
|
||||
var logType = 'info';
|
||||
if( logDuration > Init.timer[logKey].executionLimit ){
|
||||
logType = 'warning';
|
||||
}
|
||||
return logType;
|
||||
};
|
||||
|
||||
/**
|
||||
* init logging -> set global log event
|
||||
*/
|
||||
var init = function(){
|
||||
|
||||
|
||||
var maxEntries = 150;
|
||||
|
||||
// set global logging listener
|
||||
$(window).on('pf:log', function(e, logKey, options){
|
||||
|
||||
// check required logging information
|
||||
if(
|
||||
options &&
|
||||
options.duration &&
|
||||
options.description
|
||||
){
|
||||
var logDescription = options.description;
|
||||
var logDuration = options.duration;
|
||||
|
||||
// add new row to log table (time and message)
|
||||
var logRowData = ['', getLogTime(), '', logDescription, '', ''];
|
||||
|
||||
// check log type by duration
|
||||
var logType = getLogTypeByDuration(logKey, logDuration);
|
||||
|
||||
var typeClass = Util.getLogInfo( logType, 'class' );
|
||||
|
||||
logRowData[0] = '<i class="fa fa-fw fa-circle txt-color ' + typeClass + '"></i>';
|
||||
|
||||
logRowData[2] = '<span class="txt-color ' + typeClass + '">' + logDuration + '<small>ms</small></span>';
|
||||
|
||||
// update graph data
|
||||
updateLogGraph(logKey, logDuration);
|
||||
|
||||
logRowData[4] = '123';
|
||||
logRowData[5] = logKey;
|
||||
|
||||
if(logDataTable){
|
||||
// add row if dataTable is initialized before new log
|
||||
logDataTable.row.add( logRowData ).draw(false);
|
||||
}else{
|
||||
// add row data to cache
|
||||
logData.push(logRowData);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// delete old log entries from table ---------------------------------
|
||||
var rowCount = logData.length;
|
||||
|
||||
if( rowCount >= maxEntries ){
|
||||
|
||||
if(logDataTable){
|
||||
logDataTable.rows(0, {order:'index'}).remove().draw(false);
|
||||
}else{
|
||||
logData.shift();
|
||||
}
|
||||
}
|
||||
|
||||
// cache logs in order to keep previous logs in table after reopening the dialog
|
||||
if(logDataTable){
|
||||
logData = logDataTable.rows({order:'index'}).data();
|
||||
}
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
return {
|
||||
init: init,
|
||||
getLogTime: getLogTime,
|
||||
showDialog: showDialog
|
||||
};
|
||||
});
|
||||
@@ -5,13 +5,15 @@
|
||||
define([
|
||||
'jquery',
|
||||
'app/init',
|
||||
'app/util',
|
||||
'app/render',
|
||||
'velocity',
|
||||
'app/logging',
|
||||
'app/ccp',
|
||||
'velocity',
|
||||
'velocityUI',
|
||||
'app/page',
|
||||
'app/module_map',
|
||||
'throttleDebounce'
|
||||
], function($, Init, Render, Velocity, CCP) {
|
||||
'app/module_map'
|
||||
], function($, Init, Util, Render, Logging, CCP) {
|
||||
|
||||
'use strict';
|
||||
|
||||
@@ -23,7 +25,10 @@ define([
|
||||
$(function() {
|
||||
//CCP.requestTrust();
|
||||
|
||||
// init logging
|
||||
Logging.init();
|
||||
|
||||
// load page
|
||||
$('body').loadPageStructure();
|
||||
|
||||
// Map init options
|
||||
@@ -318,7 +323,7 @@ define([
|
||||
status: 'friendly',
|
||||
position: {
|
||||
x: 5,
|
||||
y: 7
|
||||
y: 200
|
||||
},
|
||||
updated: 1420903681
|
||||
},{
|
||||
@@ -364,7 +369,7 @@ define([
|
||||
|
||||
|
||||
// current user Data for a map
|
||||
var userData ={
|
||||
var tempUserData ={
|
||||
currentUserData: {
|
||||
ship: 'Legion',
|
||||
name: 'Exodus 4D',
|
||||
@@ -388,7 +393,7 @@ define([
|
||||
name: 'Exodus 4D',
|
||||
ship: {
|
||||
id: 55,
|
||||
name: 'legion'
|
||||
name: 'Legion'
|
||||
},
|
||||
status: 'corp'
|
||||
}
|
||||
@@ -426,6 +431,28 @@ define([
|
||||
}
|
||||
]
|
||||
}
|
||||
},{
|
||||
config: { // map config
|
||||
id: 2 // map id
|
||||
},
|
||||
data: {
|
||||
systems:[ // systems in map
|
||||
{
|
||||
id: 50, // system id
|
||||
user: [
|
||||
{
|
||||
id: 6,
|
||||
name: 'Schleiferius',
|
||||
ship: {
|
||||
id: 69,
|
||||
name: 'Tengu'
|
||||
},
|
||||
status: 'corp'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]};
|
||||
|
||||
@@ -437,6 +464,14 @@ define([
|
||||
var mapDataUpdateActive = true; // allow update "map data"
|
||||
var userDataUpdateActive = true; // allow update "user data"
|
||||
|
||||
var mapUpdateKey = 'mapUpdate';
|
||||
var mapUpdateDelay = Init.timer[mapUpdateKey].delay;
|
||||
|
||||
var mapModuleDatakey = 'mapModuleData';
|
||||
|
||||
var mapUserUpdateKey = 'userUpdate';
|
||||
var mapUserUpdateDelay = Init.timer[mapUserUpdateKey].delay;
|
||||
|
||||
// ping for main map update
|
||||
var triggerMapUpdatePing = function(tempMapData){
|
||||
|
||||
@@ -445,11 +480,16 @@ define([
|
||||
$(document).setProgramStatus('online');
|
||||
|
||||
mapDataUpdateActive = false;
|
||||
console.time('updateMapData')
|
||||
|
||||
|
||||
Util.timeStart(mapUpdateKey);
|
||||
// load map module ==========================================
|
||||
mapDataUpdateActive = mapModule.updateMapModule(tempMapData);
|
||||
console.timeEnd('updateMapData')
|
||||
var duration = Util.timeStop(mapUpdateKey);
|
||||
|
||||
// log execution time
|
||||
Util.log(mapUpdateKey, {duration: duration, description: 'updateMapModule'});
|
||||
|
||||
}else{
|
||||
// not finished in time -> to slow or error
|
||||
$(document).setProgramStatus('problem');
|
||||
@@ -457,33 +497,45 @@ define([
|
||||
|
||||
// get updated map data
|
||||
if(mapDataUpdateActive === true){
|
||||
console.time('getMapData')
|
||||
Util.timeStart(mapModuleDatakey);
|
||||
var mapData = mapModule.getMapModuleData();
|
||||
console.timeEnd('getMapData')
|
||||
var mapDataLogDuration = Util.timeStop(mapModuleDatakey);
|
||||
|
||||
// log execution time
|
||||
Util.log(mapModuleDatakey, {duration: mapDataLogDuration, description: 'getMapModuleData'});
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
triggerMapUpdatePing(mapData);
|
||||
setInterval(triggerMapUpdatePing, Init.timer.mapUpdatePing, mapData);
|
||||
setInterval(triggerMapUpdatePing, mapUpdateDelay, mapData);
|
||||
|
||||
// ping for user data update
|
||||
var triggerUserUpdatePing = function(tempUserData){
|
||||
// ping for user data update -------------------------------------------------------
|
||||
|
||||
|
||||
var triggerUserUpdatePing = function(userData){
|
||||
|
||||
// prevent multiple requests simultaneously
|
||||
if(userDataUpdateActive === true){
|
||||
$(document).setProgramStatus('online');
|
||||
|
||||
userDataUpdateActive = false;
|
||||
console.time('updateUserData');
|
||||
|
||||
Util.timeStart(mapUserUpdateKey);
|
||||
userDataUpdateActive = mapModule.updateMapModuleData(userData);
|
||||
console.timeEnd('updateUserData');
|
||||
var duration = Util.timeStop(mapUserUpdateKey);
|
||||
|
||||
// log execution time
|
||||
Util.log(mapUserUpdateKey, {duration: duration, description:'updateMapModuleData'});
|
||||
|
||||
|
||||
}else{
|
||||
// not finished in time -> to slow or error
|
||||
$(document).setProgramStatus('problem');
|
||||
}
|
||||
|
||||
};
|
||||
setInterval(triggerUserUpdatePing, Init.timer.userUpdatePing, mapData);
|
||||
setInterval(triggerUserUpdatePing, mapUserUpdateDelay, tempUserData);
|
||||
|
||||
});
|
||||
|
||||
|
||||
@@ -4,12 +4,14 @@ define([
|
||||
'app/util',
|
||||
'app/render',
|
||||
'bootbox',
|
||||
'app/ccp',
|
||||
'jsPlumb',
|
||||
'customScrollbar',
|
||||
'dragToSelect',
|
||||
'select2',
|
||||
'hoverIntent',
|
||||
'app/map/contextmenu'
|
||||
], function($, Init, Util, Render, bootbox) {
|
||||
], function($, Init, Util, Render, bootbox, CCP) {
|
||||
|
||||
"use strict";
|
||||
|
||||
@@ -42,7 +44,9 @@ define([
|
||||
systemBodyItemClass: 'pf-system-body-item', // class for a system body entry
|
||||
systemBodyItemStatusClass: 'pf-user-status',
|
||||
systemBodyRightClass: 'pf-system-body-right',
|
||||
dynamicElementWrapperId: 'pf-dialog-wrapper', // wrapper div for dynamic content (dialogs, context-menus,...)
|
||||
systemTooltipInnerClass: 'pf-system-tooltip-inner', // class for system tooltip content
|
||||
systemTooltipInnerIdPrefix: 'pf-system-tooltip-inner-', // id prefix for system tooltip content
|
||||
dynamicElementWrapperId: 'pf-dialog-wrapper', // wrapper div for dynamic content (dialogs, context-menus,...)
|
||||
|
||||
// endpoint classes
|
||||
endpointSourceClass: 'pf-map-endpoint-source',
|
||||
@@ -170,6 +174,9 @@ define([
|
||||
// find expand arrow
|
||||
var systemHeadExpand = $( system.find('.' + config.systemHeadExpandClass) );
|
||||
|
||||
var oldCacheKey = system.data('userCache');
|
||||
var oldUserCount = system.data('userCount');
|
||||
oldUserCount = (oldUserCount !== undefined ? oldUserCount : 0);
|
||||
var userCounter = 0;
|
||||
|
||||
system.data('currentUser', false);
|
||||
@@ -179,27 +186,25 @@ define([
|
||||
system.data('currentUser', true);
|
||||
}
|
||||
|
||||
var oldCacheKey = system.data('userCache');
|
||||
|
||||
// add user information
|
||||
if(
|
||||
data &&
|
||||
data.user
|
||||
){
|
||||
|
||||
var cacheArray = [];
|
||||
// loop all active pilots and build cache-key
|
||||
for(var i = 0; i < data.user.length; i++){
|
||||
userCounter++;
|
||||
var tempUserData = data.user[i];
|
||||
cacheArray.push(tempUserData.id + '_' + tempUserData.ship.name);
|
||||
}
|
||||
|
||||
var cacheKey = cacheArray.join('_');
|
||||
|
||||
// check for if cacheKey has changed
|
||||
if(cacheKey !== oldCacheKey){
|
||||
// set new CacheKey
|
||||
system.data('userCache', cacheKey);
|
||||
system.data('userCount', userCounter);
|
||||
|
||||
// remove all content
|
||||
systemBody.empty();
|
||||
@@ -207,7 +212,6 @@ define([
|
||||
// loop "again" and build DOM object with user information
|
||||
for(var j = 0; j < data.user.length; j++){
|
||||
var userData = data.user[j];
|
||||
userCounter++;
|
||||
|
||||
var statusClass = getStatusClassForUser(userData.status);
|
||||
var userName = userData.name;
|
||||
@@ -235,68 +239,119 @@ define([
|
||||
|
||||
// =================================================================
|
||||
|
||||
// user count changed -> adapt tooltip
|
||||
system.tooltip('destroy');
|
||||
// user count changed -> change tooltip content
|
||||
var tooltipOptions = {placement: 'top', trigger: 'manual'};
|
||||
|
||||
system.attr('title', userCounter);
|
||||
// set tooltip color
|
||||
var highlight = false;
|
||||
var tooltipIconClass = '';
|
||||
if(userCounter > oldUserCount){
|
||||
highlight = 'good';
|
||||
tooltipIconClass = 'fa-caret-up';
|
||||
}else if(userCounter < oldUserCount){
|
||||
highlight = 'bad';
|
||||
tooltipIconClass = 'fa-caret-down';
|
||||
}
|
||||
|
||||
tooltipOptions.id = systemId;
|
||||
tooltipOptions.highlight = highlight;
|
||||
tooltipOptions.title = '<i class="fa ' + tooltipIconClass + '"></i>';
|
||||
tooltipOptions.title += ' ' + userCounter;
|
||||
|
||||
// show system head
|
||||
systemHeadExpand.velocity({
|
||||
systemHeadExpand.velocity('stop', true).velocity({
|
||||
width: '10px'
|
||||
},{
|
||||
duration: 50,
|
||||
display: 'inline-block',
|
||||
progress: function(){
|
||||
// revalidate element size and repaint
|
||||
//revalidate element size and repaint
|
||||
map.revalidate( systemId );
|
||||
},
|
||||
complete: function(){
|
||||
|
||||
// show system body
|
||||
systemBody.velocity({
|
||||
height: config.systemBodyItemHeight + 'px'
|
||||
},{
|
||||
duration: 50,
|
||||
display: 'auto',
|
||||
progress: function(){
|
||||
// revalidate element size and repaint
|
||||
map.revalidate( systemId );
|
||||
}
|
||||
});
|
||||
system.toggleBody(true, map, {complete: function(){
|
||||
// complete callback function
|
||||
// show active user tooltip
|
||||
system.toggleSystemTooltip('show', tooltipOptions);
|
||||
}});
|
||||
|
||||
|
||||
// show active user tooltip
|
||||
toggleSystemTooltip([system], 'show', {placement: 'top', trigger: 'manual'});
|
||||
}
|
||||
});
|
||||
}
|
||||
}else{
|
||||
// no user data found for this system
|
||||
system.data('userCache', false);
|
||||
system.data('userCount', 0);
|
||||
systemBody.empty();
|
||||
|
||||
if(
|
||||
oldCacheKey &&
|
||||
oldCacheKey.length > 0
|
||||
){
|
||||
// remove tooltip
|
||||
system.toggleSystemTooltip('destroy', {});
|
||||
|
||||
// no user -> clear SystemBody
|
||||
systemHeadExpand.velocity('reverse',{
|
||||
systemHeadExpand.velocity('stop', true).velocity('reverse',{
|
||||
display: 'none',
|
||||
complete: function(){
|
||||
systemBody.velocity('reverse',{
|
||||
display: 'none',
|
||||
progress: function(){
|
||||
// revalidate element size and repaint
|
||||
map.revalidate( systemId );
|
||||
systemBody.empty();
|
||||
}
|
||||
});
|
||||
system.toggleBody(false, map, {});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.toggleBody = function(type, map, callback){
|
||||
var system = $(this);
|
||||
var systemBody = system.find('.' + config.systemBodyClass);
|
||||
|
||||
var systemDomId = system.attr('id');
|
||||
|
||||
if(type === true){
|
||||
// show minimal body
|
||||
systemBody.velocity({
|
||||
height: config.systemBodyItemHeight + 'px'
|
||||
},{
|
||||
duration: 50,
|
||||
display: 'auto',
|
||||
progress: function(){
|
||||
//revalidate element size and repaint
|
||||
map.revalidate( systemDomId );
|
||||
},
|
||||
complete: function(){
|
||||
map.revalidate( systemDomId );
|
||||
|
||||
if(callback.complete){
|
||||
callback.complete();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
}else if(type === false){
|
||||
// hide body
|
||||
// remove all inline styles -> possible relict from previous hover-extend
|
||||
systemBody.velocity({
|
||||
height: 0 + 'px',
|
||||
width: '100%',
|
||||
'min-width': 'none'
|
||||
},{
|
||||
duration: 50,
|
||||
display: 'none',
|
||||
begin: function(){
|
||||
},
|
||||
progress: function(){
|
||||
// revalidate element size and repaint
|
||||
map.revalidate( systemDomId );
|
||||
},
|
||||
complete: function(){
|
||||
map.revalidate( systemDomId );
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -305,15 +360,107 @@ define([
|
||||
* @param show
|
||||
* @param options
|
||||
*/
|
||||
var toggleSystemTooltip = function(systems, show, options){
|
||||
$.fn.toggleSystemTooltip = function(show, options){
|
||||
|
||||
for(var i = 0; i < systems.length; i++){
|
||||
if(options){
|
||||
$(systems[i]).tooltip(options);
|
||||
// tooltip colors
|
||||
var colorClasses = {
|
||||
good: 'txt-color-green',
|
||||
bad: 'txt-color-red'
|
||||
};
|
||||
|
||||
return this.each(function(){
|
||||
var system = $(this);
|
||||
var tooltipId = 0;
|
||||
var tooltipClassHighlight = false;
|
||||
|
||||
// do not update tooltips while a system is dragged
|
||||
if(system.hasClass('jsPlumb_dragged')){
|
||||
// skip system
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
$(systems).tooltip(show);
|
||||
if(show === 'destroy'){
|
||||
system.tooltip( show );
|
||||
}else if(show === 'hide'){
|
||||
system.tooltip( show );
|
||||
} else if(show === 'toggle'){
|
||||
system.tooltip( show );
|
||||
}else if(show === 'show'){
|
||||
|
||||
// check if tooltip is currently visible
|
||||
var tooltipActive = (system.attr('aria-describedby') !== undefined ? true : false);
|
||||
|
||||
if(options === undefined){
|
||||
options = {};
|
||||
}
|
||||
|
||||
// optional color highlight
|
||||
if(colorClasses.hasOwnProperty( options.highlight )){
|
||||
tooltipClassHighlight = colorClasses[ options.highlight ];
|
||||
}
|
||||
|
||||
if(
|
||||
tooltipActive === false &&
|
||||
options.id
|
||||
){
|
||||
// init new tooltip
|
||||
tooltipId = config.systemTooltipInnerIdPrefix + options.id;
|
||||
|
||||
var template = '<div class="tooltip" role="tooltip">' +
|
||||
'<div class="tooltip-arrow"></div>' +
|
||||
'<div id="' + tooltipId + '" class="tooltip-inner txt-color ' + config.systemTooltipInnerClass + '"></div>' +
|
||||
'</div>';
|
||||
|
||||
options.html = true;
|
||||
options.animation = true;
|
||||
options.template = template;
|
||||
|
||||
system.attr('title', options.title);
|
||||
|
||||
system.tooltip(options);
|
||||
|
||||
system.tooltip(show);
|
||||
|
||||
if(tooltipClassHighlight !== false){
|
||||
// set tooltip observer and set new class after open -> due to transition effect
|
||||
|
||||
system.on('shown.bs.tooltip', function() {
|
||||
$('#' + tooltipId).addClass( tooltipClassHighlight );
|
||||
// remove observer -> color should not be changed every time a tooltip toggles e.g. dragging system
|
||||
$(this).off('shown.bs.tooltip');
|
||||
});
|
||||
}
|
||||
}else{
|
||||
// update/change/toggle tooltip text or color without tooltip reload
|
||||
|
||||
var tooltipInner = false;
|
||||
if(
|
||||
options.title ||
|
||||
tooltipClassHighlight !== false
|
||||
){
|
||||
tooltipInner = system.tooltip('fixTitle')
|
||||
.data('bs.tooltip')
|
||||
.$tip.find('.tooltip-inner');
|
||||
|
||||
if(options.title){
|
||||
tooltipInner.html( options.title );
|
||||
}
|
||||
|
||||
if(tooltipClassHighlight !== false){
|
||||
tooltipInner.removeClass( colorClasses.good + ' ' + colorClasses.bad).addClass(tooltipClassHighlight);
|
||||
}
|
||||
}
|
||||
|
||||
// show() can be forced
|
||||
if(options.show === true){
|
||||
system.tooltip('show');
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -448,14 +595,15 @@ define([
|
||||
};
|
||||
|
||||
/**
|
||||
* draw a new map with all systems and connections
|
||||
* draw a new map or update an existing map with all its systems and connections
|
||||
* @param parentElement
|
||||
* @param mapConfig
|
||||
* @returns {*}
|
||||
*/
|
||||
var updateMap = function(parentElement, mapConfig){
|
||||
|
||||
var mapContainer = mapConfig.map.getContainer();
|
||||
|
||||
|
||||
// prevent jsPlumb from re-painting during main-map update -> performance boost :)
|
||||
mapConfig.map.doWhileSuspended(function() {
|
||||
|
||||
@@ -481,7 +629,6 @@ define([
|
||||
// append mapWrapper to parent element (at the top)
|
||||
$(parentElement).prepend(mapWrapper);
|
||||
|
||||
|
||||
// set main Container for current map -> the container exists now in DOM !! very important
|
||||
mapConfig.map.setContainer($('#' + config.mapIdPrefix + mapConfig.config.id));
|
||||
|
||||
@@ -489,14 +636,14 @@ define([
|
||||
setMapObserver(mapConfig.map);
|
||||
}
|
||||
|
||||
mapContainer = $(mapContainer);
|
||||
|
||||
// add additional information
|
||||
mapContainer.data('name', mapConfig.config.name);
|
||||
mapContainer.data('scope', mapConfig.config.scope);
|
||||
mapContainer.data('icon', mapConfig.config.icon);
|
||||
mapContainer.data('type', mapConfig.config.type);
|
||||
|
||||
mapContainer = $(mapContainer);
|
||||
|
||||
// get map data
|
||||
var mapData = mapContainer.getMapData();
|
||||
|
||||
@@ -613,6 +760,117 @@ define([
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return mapContainer;
|
||||
};
|
||||
|
||||
/**
|
||||
* make all systems appear visual on the map with its connections
|
||||
* @param show
|
||||
* @param callback
|
||||
*/
|
||||
$.fn.visualizeMap = function(show, callback){
|
||||
var mapElement = $(this);
|
||||
|
||||
// start map update counter -> prevent map updates during animations
|
||||
mapElement.getMapOverlay().startMapUpdateCounter();
|
||||
|
||||
var systemElements = mapElement.find('.' + config.systemClass);
|
||||
var endpointElements = mapElement.find('._jsPlumb_endpoint');
|
||||
var connectorElements = mapElement.find('._jsPlumb_connector');
|
||||
var overlayElements = mapElement.find('._jsPlumb_overlay, .tooltip');
|
||||
|
||||
// if map empty (no systems), execute callback and return
|
||||
// no visual effects in IGB (glitches)
|
||||
if(
|
||||
systemElements.length === 0 ||
|
||||
CCP.isInGameBrowser() === true
|
||||
){
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
|
||||
// show nice animation
|
||||
if(show === 'show'){
|
||||
// hide elements
|
||||
systemElements.css('opacity', 0);
|
||||
endpointElements.css('opacity', 0);
|
||||
connectorElements.css('opacity', 0);
|
||||
overlayElements.css('opacity', 0);
|
||||
|
||||
systemElements.velocity('transition.whirlIn', {
|
||||
stagger: 50,
|
||||
drag: true,
|
||||
duration: 100,
|
||||
//display: 'auto',
|
||||
complete: function(){
|
||||
// show connections
|
||||
endpointElements.velocity('transition.fadeIn', {
|
||||
stagger: 50,
|
||||
drag: true,
|
||||
duration: 50
|
||||
});
|
||||
|
||||
connectorElements.velocity('transition.flipBounceXIn', {
|
||||
stagger: 50,
|
||||
drag: true,
|
||||
duration: 1000
|
||||
});
|
||||
|
||||
overlayElements.delay(500).velocity('transition.fadeIn', {
|
||||
stagger: 50,
|
||||
drag: true,
|
||||
duration: 200,
|
||||
display: 'auto',
|
||||
complete: function(){
|
||||
callback();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
}else if(show === 'hide'){
|
||||
|
||||
$('.mCSB_container').velocity('callout.shake', {
|
||||
stagger: 0,
|
||||
drag: false,
|
||||
duration: 200,
|
||||
display: 'auto'
|
||||
});
|
||||
|
||||
overlayElements.velocity('transition.fadeOut', {
|
||||
stagger: 50,
|
||||
drag: true,
|
||||
duration: 200,
|
||||
display: 'auto'
|
||||
});
|
||||
|
||||
endpointElements.velocity('transition.fadeOut', {
|
||||
stagger: 0,
|
||||
drag: true,
|
||||
duration: 50,
|
||||
display: 'block',
|
||||
complete: function(){
|
||||
// show connections
|
||||
connectorElements.velocity('transition.fadeOut', {
|
||||
stagger: 0,
|
||||
drag: true,
|
||||
duration: 20,
|
||||
display: 'block'
|
||||
});
|
||||
|
||||
systemElements.delay(100).velocity('transition.slideUpOut', {
|
||||
stagger: 50,
|
||||
drag: true,
|
||||
duration: 200,
|
||||
display: 'block',
|
||||
complete: function(){
|
||||
callback();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -726,11 +984,14 @@ define([
|
||||
map.removeAllEndpoints(system);
|
||||
|
||||
// hide tooltip
|
||||
toggleSystemTooltip(system, 'hide');
|
||||
system.toggleSystemTooltip('hide', {});
|
||||
|
||||
// remove system
|
||||
system.fadeOut(300, function(){
|
||||
$(this).remove() ;
|
||||
system.velocity('transition.whirlOut', {
|
||||
duration: Init.animationSpeed.mapDeleteSystem,
|
||||
complete: function(){
|
||||
$(this).remove() ;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
@@ -826,6 +1087,7 @@ define([
|
||||
var counterChart = mapOverlay.getMapCounter();
|
||||
|
||||
var seconds = 10;
|
||||
var fadeEffectDuration = 200;
|
||||
|
||||
// get counter interval (in case there is an active one)
|
||||
var interval = counterChart.data('interval');
|
||||
@@ -834,7 +1096,7 @@ define([
|
||||
clearInterval(interval);
|
||||
}
|
||||
|
||||
mapOverlay.fadeIn(200);
|
||||
mapOverlay.velocity('stop').velocity('transition.whirlIn', { duration: fadeEffectDuration });
|
||||
|
||||
var counterChartLabel = counterChart.find('span');
|
||||
|
||||
@@ -848,13 +1110,12 @@ define([
|
||||
if(seconds <= 0){
|
||||
clearInterval(mapUpdateCounter);
|
||||
|
||||
|
||||
setTimeout(function(){
|
||||
mapOverlay.fadeOut(200);
|
||||
counterChart.data('interval', false);
|
||||
}, 800);
|
||||
|
||||
return;
|
||||
mapOverlay.velocity('transition.whirlOut', {
|
||||
duration: fadeEffectDuration,
|
||||
complete: function(){
|
||||
counterChart.data('interval', false);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1236,7 +1497,7 @@ define([
|
||||
selectedSystems = $.unique( selectedSystems );
|
||||
|
||||
// hide tooltip
|
||||
toggleSystemTooltip( selectedSystems, 'hide' );
|
||||
$(selectedSystems).toggleSystemTooltip('hide', {});
|
||||
},
|
||||
drag: function(){
|
||||
|
||||
@@ -1252,7 +1513,7 @@ define([
|
||||
}, 200);
|
||||
|
||||
// render tooltip
|
||||
toggleSystemTooltip([dragSystem], 'show');
|
||||
dragSystem.toggleSystemTooltip('show', {show: true});
|
||||
|
||||
// drag system is not always selected
|
||||
var selectedSystems = mapContainer.getSelectedSystems().get();
|
||||
@@ -1298,27 +1559,28 @@ define([
|
||||
var hoverSystemId = hoverSystem.attr('id');
|
||||
|
||||
// get ship counter and calculate expand height
|
||||
var shipCounter = parseInt( system.attr('data-original-title') );
|
||||
var userCount = parseInt( hoverSystem.data('userCount') );
|
||||
|
||||
var expandheight = shipCounter * config.systemBodyItemHeight;
|
||||
var expandHeight = userCount * config.systemBodyItemHeight;
|
||||
|
||||
systemBody.velocity(
|
||||
systemBody.velocity('stop').velocity(
|
||||
{
|
||||
height: expandheight + 'px',
|
||||
width: 100,
|
||||
height: expandHeight + 'px',
|
||||
width: 150,
|
||||
'min-width': '150px'
|
||||
},{
|
||||
duration: 100,
|
||||
easing: 'easeInOutQuart',
|
||||
duration: 150,
|
||||
progress: function(){
|
||||
// repaint connections of current system
|
||||
map.revalidate( hoverSystemId );
|
||||
},
|
||||
complete: function(){
|
||||
map.revalidate( hoverSystemId );
|
||||
$(this).find('.' + config.systemBodyRightClass).velocity({
|
||||
$(this).find('.' + config.systemBodyRightClass).velocity('stop').velocity({
|
||||
opacity: 1
|
||||
},{
|
||||
duration: 50,
|
||||
duration: 150,
|
||||
display: 'auto'
|
||||
});
|
||||
}
|
||||
@@ -1330,13 +1592,15 @@ define([
|
||||
var hoverSystem = $(this).parents('.' + config.systemClass);
|
||||
var hoverSystemId = hoverSystem.attr('id');
|
||||
|
||||
systemBody.find('.' + config.systemBodyRightClass).velocity( {
|
||||
opacity: 0
|
||||
systemBody.find('.' + config.systemBodyRightClass).velocity('stop').velocity( {
|
||||
opacity: 0,
|
||||
'min-width': '0px'
|
||||
},{
|
||||
duration: 100,
|
||||
easing: 'easeInOutQuart',
|
||||
duration: 150,
|
||||
display: 'none',
|
||||
complete: function(){
|
||||
systemBody.velocity('reverse', {
|
||||
systemBody.velocity('stop').velocity('reverse', {
|
||||
complete: function(){
|
||||
// overwrite "complete" function from first "hover"-open
|
||||
map.revalidate( hoverSystemId );
|
||||
@@ -1820,8 +2084,6 @@ define([
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
// catch menu events ====================================================
|
||||
|
||||
// toggle "snap to grid" option
|
||||
@@ -1884,6 +2146,7 @@ define([
|
||||
hiddenOptions.push('scope_stargate');
|
||||
}else if(scope === 'jumpbridge'){
|
||||
hiddenOptions.push('frigate');
|
||||
hiddenOptions.push('preserve_mass');
|
||||
hiddenOptions.push('change_status');
|
||||
hiddenOptions.push('scope_jumpbridge');
|
||||
}else if(scope === 'wh'){
|
||||
@@ -2131,10 +2394,13 @@ define([
|
||||
status: systemStatus
|
||||
};
|
||||
|
||||
requirejs(['text!templates/modules/system_dialog.html', 'lib/mustache'], function(template, Mustache) {
|
||||
requirejs(['text!templates/modules/system_dialog.html', 'mustache'], function(template, Mustache) {
|
||||
|
||||
var content = Mustache.render(template, data);
|
||||
|
||||
// disable modal focus event -> otherwise select2 is not working! -> quick fix
|
||||
$.fn.modal.Constructor.prototype.enforceFocus = function() {};
|
||||
|
||||
var systemDialog = bootbox.dialog({
|
||||
title: 'Add new system',
|
||||
message: content,
|
||||
@@ -2199,6 +2465,9 @@ define([
|
||||
if(!newSystemData.hasOwnProperty('id')){
|
||||
newSystemData.id = config.tempId++;
|
||||
}
|
||||
if(!newSystemData.hasOwnProperty('alias')){
|
||||
newSystemData.alias = '';
|
||||
}
|
||||
if(!newSystemData.hasOwnProperty('effect')){
|
||||
newSystemData.effect = '';
|
||||
}
|
||||
@@ -2215,6 +2484,39 @@ define([
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
// init dialog
|
||||
systemDialog.on('shown.bs.modal', function(e) {
|
||||
|
||||
var selectData = [];
|
||||
for(var i = 0; i < 5000; i++){
|
||||
selectData.push({
|
||||
id: i,
|
||||
text: i + 'test'
|
||||
});
|
||||
}
|
||||
|
||||
$.when(
|
||||
$(".js-example-basic-single").select2({
|
||||
// multiple: true,
|
||||
data: selectData,
|
||||
placeholder: 'Name',
|
||||
allowClear: true
|
||||
})
|
||||
).done(function(){
|
||||
$('#testId').css({'display': 'block'});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// make dialog editable
|
||||
var modalFields = $('.bootbox .modal-dialog').find('.pf-editable-system-status');
|
||||
|
||||
@@ -2222,6 +2524,7 @@ define([
|
||||
mode: 'inline',
|
||||
emptytext: 'unknown',
|
||||
onblur: 'submit',
|
||||
showbuttons: false,
|
||||
source: systemStatus
|
||||
});
|
||||
|
||||
@@ -2237,15 +2540,29 @@ define([
|
||||
* @param currentUserData
|
||||
* @returns {boolean}
|
||||
*/
|
||||
|
||||
$.fn.updateUserData = function(userData, currentUserData){
|
||||
|
||||
var returnStatus = true;
|
||||
|
||||
// get all systems
|
||||
var systems = $(this).find('.' + config.systemClass);
|
||||
|
||||
// get new map instance or load existing
|
||||
var map = getMapInstance(userData.config.id);
|
||||
|
||||
var mapElement = map.getContainer();
|
||||
|
||||
|
||||
// container must exist! otherwise systems cant be updated
|
||||
if(map.getContainer() !== undefined){
|
||||
if(mapElement !== undefined){
|
||||
|
||||
mapElement = $(mapElement);
|
||||
|
||||
// check if map is frozen
|
||||
if(mapElement.data('frozen') === true){
|
||||
return returnStatus;
|
||||
}
|
||||
|
||||
// data for header update
|
||||
var headerUpdateData = {
|
||||
@@ -2294,7 +2611,7 @@ define([
|
||||
$(document).trigger('pf:updateHeaderData', headerUpdateData);
|
||||
}
|
||||
|
||||
return true;
|
||||
return returnStatus;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -2353,7 +2670,7 @@ define([
|
||||
systemData.rally = tempSystem.data('rally');
|
||||
systemData.currentUser = tempSystem.data('currentUser');
|
||||
systemData.updated = tempSystem.data('updated');
|
||||
systemData.userCount = (tempSystem.attr('data-original-title') ? parseInt( tempSystem.attr('data-original-title') ) : 0);
|
||||
systemData.userCount = (tempSystem.data('userCount') ? parseInt( tempSystem.data('userCount') ) : 0);
|
||||
|
||||
// position -------------------------------
|
||||
var positionData = {};
|
||||
@@ -2420,6 +2737,7 @@ define([
|
||||
|
||||
if(typeof activeInstances[mapId] !== 'object'){
|
||||
// create new instance
|
||||
jsPlumb.Defaults.LogEnabled = true;
|
||||
var newJsPlumbInstance = jsPlumb.getInstance({
|
||||
Container: null, // will be set as soon as container is connected to DOM
|
||||
PaintStyle:{
|
||||
@@ -2432,7 +2750,8 @@ define([
|
||||
Endpoint : ['Dot', {radius: 6}],
|
||||
// Endpoint: 'Blank', // does not work... :(
|
||||
ReattachConnections: false, // re-attach connection if dragged with mouse to "nowhere"
|
||||
Scope: Init.defaultMapScope // default map scope for connections
|
||||
Scope: Init.defaultMapScope, // default map scope for connections
|
||||
LogEnabled: true
|
||||
});
|
||||
|
||||
// register all available connection types
|
||||
@@ -2521,8 +2840,6 @@ define([
|
||||
|
||||
// init jsPlumb
|
||||
jsPlumb.ready(function() {
|
||||
|
||||
|
||||
// get new map instance or load existing
|
||||
mapConfig.map = getMapInstance(mapConfig.config.id);
|
||||
|
||||
@@ -2533,15 +2850,25 @@ define([
|
||||
}
|
||||
|
||||
// draw/update map initial map and set container
|
||||
updateMap(parentElement, mapConfig);
|
||||
var mapContainer = updateMap(parentElement, mapConfig);
|
||||
|
||||
if(newMap){
|
||||
// init custom scrollbars
|
||||
// init custom scrollbars and add overlay
|
||||
parentElement.initMapScrollbar();
|
||||
|
||||
Util.showNotify({title: 'Map initialized', text: mapConfig.config.name + ' - loaded', type: 'success'});
|
||||
}
|
||||
|
||||
// callback function after tab switch
|
||||
function switchTabCallback( mapName ){
|
||||
Util.showNotify({title: 'Map initialized', text: mapName + ' - loaded', type: 'success'});
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// show nice visualization effect
|
||||
mapContainer.visualizeMap('show', function(){
|
||||
switchTabCallback( mapConfig.config.name );
|
||||
});
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -5,7 +5,8 @@ define([
|
||||
'app/render',
|
||||
'bootbox',
|
||||
'morris',
|
||||
'datatables',
|
||||
//'datatables',
|
||||
'datatablesTableTools',
|
||||
'xEditable',
|
||||
'app/map/map',
|
||||
'app/counter'
|
||||
@@ -18,11 +19,11 @@ define([
|
||||
var config = {
|
||||
dynamicElementWrapperId: 'pf-dialog-wrapper', // parent Element for dynamic content (dialogs,..)
|
||||
mapTabElementId: 'pf-map-tab-element', // id for map tab element (tabs + content)
|
||||
mapTabBarId: 'pf-map-tabs',
|
||||
mapTabIdPrefix: 'pf-map-tab-',
|
||||
mapTabClass: 'pf-map-tab',
|
||||
mapTabBarId: 'pf-map-tabs', // id for map tab bar
|
||||
mapTabIdPrefix: 'pf-map-tab-', // id prefix for a map tab
|
||||
mapTabClass: 'pf-map-tab', // class for a map tab
|
||||
mapTabLinkTextClass: 'nav-tabs-link', // class for span elements in a tab
|
||||
mapTabContentClass: 'pf-map-tab-content',
|
||||
mapTabContentClass: 'pf-map-tab-content', // class for tab content container
|
||||
mapTabContentSystemInfoClass: 'pf-map-tab-content-system',
|
||||
mapWrapperClass: 'pf-map-wrapper', // scrollable
|
||||
mapClass: 'pf-map', // class for each map
|
||||
@@ -77,13 +78,7 @@ define([
|
||||
systemKillsGraphData: {} // data for system kills info graph
|
||||
};
|
||||
|
||||
|
||||
|
||||
var saveMapData = function(mapData){
|
||||
|
||||
// TODO: save map
|
||||
console.log(mapData);
|
||||
};
|
||||
var mapTabChangeBlocked = false; // flag for preventing map tab switch
|
||||
|
||||
/**
|
||||
* get all maps for a maps module
|
||||
@@ -118,7 +113,7 @@ define([
|
||||
* @returns {*}
|
||||
*/
|
||||
var getTabElements = function(){
|
||||
return $('#' + config.mapTabBarId).find('a[data-toggle="tab"]');
|
||||
return $('#' + config.mapTabBarId).find('a');
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -154,7 +149,7 @@ define([
|
||||
id: config.signatureReaderDialogId
|
||||
};
|
||||
|
||||
requirejs(['text!templates/modules/signature_reader_dialog.html', 'lib/mustache'], function(template, Mustache) {
|
||||
requirejs(['text!templates/modules/signature_reader_dialog.html', 'mustache'], function(template, Mustache) {
|
||||
|
||||
var content = Mustache.render(template, data);
|
||||
|
||||
@@ -295,7 +290,7 @@ define([
|
||||
moduleElement.showSignatureReaderDialog(systemData);
|
||||
}).prepend(
|
||||
$('<i>', {
|
||||
class: ['fa', 'fa-copy', 'fa-fw'].join(' ')
|
||||
class: ['fa', 'fa-clipboard', 'fa-fw'].join(' ')
|
||||
})
|
||||
)
|
||||
).append(
|
||||
@@ -977,14 +972,8 @@ define([
|
||||
chartData.push(tempData);
|
||||
}
|
||||
|
||||
var serverDate= new Date(
|
||||
localDate.getUTCFullYear(),
|
||||
localDate.getUTCMonth(),
|
||||
localDate.getUTCDate(),
|
||||
localDate.getUTCHours(),
|
||||
localDate.getUTCMinutes(),
|
||||
localDate.getUTCSeconds()
|
||||
);
|
||||
// get current server time
|
||||
var serverDate= Util.getServerTime();
|
||||
|
||||
// get all kills until current server time
|
||||
var dateStringEnd = String( serverDate.getFullYear() );
|
||||
@@ -1685,14 +1674,18 @@ define([
|
||||
|
||||
|
||||
/**
|
||||
* updates complete map module (all maps)
|
||||
* updates only visible/active map module
|
||||
* @param userData
|
||||
* @returns {boolean}
|
||||
*/
|
||||
var test = 1
|
||||
$.fn.updateMapModuleData = function(userData){
|
||||
|
||||
var mapModule = $(this);
|
||||
|
||||
test++;
|
||||
// get all active map elements for module
|
||||
var mapElements = $(this).getMaps();
|
||||
var mapElement = mapModule.getActiveMap();
|
||||
|
||||
var currentUserData = null;
|
||||
|
||||
@@ -1701,26 +1694,46 @@ define([
|
||||
currentUserData = userData.currentUserData;
|
||||
}
|
||||
|
||||
// get map Data
|
||||
for(var i = 0; i < mapElements.length; i++){
|
||||
var mapElement = $(mapElements[i]);
|
||||
if(mapElement !== false){
|
||||
var mapId = mapElement.data('id');
|
||||
|
||||
var mapUserData = null;
|
||||
//var tempMapUserData = null;
|
||||
// get user data for each active map
|
||||
var tempMapUserDataClone = null;
|
||||
|
||||
for(var j = 0; j < userData.mapUserData.length; j++){
|
||||
var tempMapData = userData.mapUserData[j];
|
||||
//var tempMapData = userData.mapUserData[j];
|
||||
var tempMapData = JSON.parse(JSON.stringify(userData.mapUserData[j]));
|
||||
if(tempMapData.config.id === mapId){
|
||||
// map userData found
|
||||
mapUserData = tempMapData;
|
||||
|
||||
// clone object (pass by value) due to object manipulation
|
||||
tempMapUserDataClone = JSON.parse(JSON.stringify(tempMapData));
|
||||
|
||||
// TODO remove !!!!
|
||||
if( (test % 2) === 0){
|
||||
tempMapUserDataClone.data.systems[0].user.push({
|
||||
id: 7,
|
||||
name: 'Lijama',
|
||||
ship: {
|
||||
id: 59,
|
||||
name: 'Archon'
|
||||
},
|
||||
status: 'corp'
|
||||
})
|
||||
}else if((test % 3) === 0){
|
||||
tempMapUserDataClone.data.systems = new Array();
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// update map
|
||||
if(mapUserData){
|
||||
mapElement.updateUserData(mapUserData, currentUserData);
|
||||
if(tempMapUserDataClone){
|
||||
//console.log('User: ' + tempMapUserDataClone.data.systems[0].user.length);
|
||||
mapElement.updateUserData(tempMapUserDataClone, currentUserData);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1800,7 +1813,7 @@ define([
|
||||
// link element -------
|
||||
var linkElement = $('<a>', {
|
||||
href: '#' + config.mapTabIdPrefix + options.id
|
||||
}).attr('role', 'tab').attr('data-toggle', 'tab').data('map-id', options.id);
|
||||
}).attr('role', 'tab').data('map-id', options.id);
|
||||
|
||||
// icon element ------
|
||||
var iconElement = $('<i>', {
|
||||
@@ -1833,6 +1846,43 @@ define([
|
||||
|
||||
tabContent.append(contentElement);
|
||||
|
||||
|
||||
// init tab =========================================================
|
||||
linkElement.on('click', function(e){
|
||||
e.preventDefault();
|
||||
|
||||
// callback function after tab switch
|
||||
function switchTabCallback(mapElement, tabLinkElement){
|
||||
tabLinkElement.tab('show');
|
||||
// unfreeze map
|
||||
mapElement.data('frozen', false);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(mapTabChangeBlocked === false){
|
||||
|
||||
var tabLinkElement = $(this);
|
||||
var mapId = tabLinkElement.data('map-id');
|
||||
|
||||
var mapElement = $('#' + config.mapTabElementId).getActiveMap();
|
||||
|
||||
if(mapId !== mapElement.data('id')){
|
||||
// block tabs until switch is done
|
||||
mapTabChangeBlocked = true;
|
||||
|
||||
// freeze active map -> no user data update while map switch
|
||||
mapElement.data('frozen', true);
|
||||
|
||||
// hide current map with animation
|
||||
mapElement.visualizeMap('hide', function(){
|
||||
// un-block map tabs
|
||||
mapTabChangeBlocked = switchTabCallback(mapElement, tabLinkElement);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return {
|
||||
listElement: newListElement,
|
||||
contentElement: contentElement
|
||||
@@ -1918,7 +1968,6 @@ define([
|
||||
|
||||
if(tabMapElement.length > 0){
|
||||
// tab element already exists
|
||||
|
||||
var tabElements = getTabElements();
|
||||
|
||||
// mapIds that are currently active
|
||||
@@ -2043,7 +2092,7 @@ define([
|
||||
tabContentElements.initContentStructure();
|
||||
|
||||
// load first map i in first tab content container
|
||||
$( tabContentElements[0] ).updateMapData(tempMapData[0]);
|
||||
$( tabContentElements[0] ).loadMap( tempMapData[0] );
|
||||
}
|
||||
|
||||
if(tabsChanged === true){
|
||||
@@ -2075,7 +2124,7 @@ define([
|
||||
// load map
|
||||
var currentTabContentElement = $('#' + config.mapTabIdPrefix + mapId);
|
||||
|
||||
$( currentTabContentElement).updateMapData( tabMapData);
|
||||
$( currentTabContentElement).loadMap( tabMapData );
|
||||
|
||||
// "wake up" scrollbar for map and get previous state back
|
||||
var scrollableElement = currentTabContentElement.find('.' + config.mapWrapperClass);
|
||||
@@ -2093,6 +2142,7 @@ define([
|
||||
|
||||
// disable map if new map is selected -> not "add button"
|
||||
if(newMapId > 0){
|
||||
|
||||
var currentTabContentElement = $('#' + config.mapTabIdPrefix + oldMapId);
|
||||
|
||||
// disable scrollbar for map that will be hidden. "freeze" current state
|
||||
@@ -2127,17 +2177,4 @@ define([
|
||||
return data;
|
||||
};
|
||||
|
||||
/**
|
||||
* load OR updates a map module with its data
|
||||
* @param mapData
|
||||
* @returns {*}
|
||||
*/
|
||||
$.fn.updateMapData = function(mapData){
|
||||
|
||||
return this.each(function(){
|
||||
$(this).loadMap(mapData);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
});
|
||||
@@ -112,7 +112,7 @@ define([
|
||||
|
||||
customConfig.delay = 10000;
|
||||
customConfig.desktop.desktop = true;
|
||||
console.log(customConfig.desktop)
|
||||
|
||||
// make browser tab blink
|
||||
startTabBlink(customConfig.title);
|
||||
|
||||
|
||||
450
js/app/page.js
450
js/app/page.js
@@ -8,9 +8,11 @@ define([
|
||||
'app/render',
|
||||
'bootbox',
|
||||
'app/ccp',
|
||||
'app/ui/map_info',
|
||||
'app/logging',
|
||||
'slidebars',
|
||||
'app/module_map'
|
||||
], function($, Init, Util, Render, bootbox, CCP) {
|
||||
], function($, Init, Util, Render, bootbox, CCP, MapInfo, Logging) {
|
||||
|
||||
'use strict';
|
||||
|
||||
@@ -44,8 +46,9 @@ define([
|
||||
menuHeadMenuLogoClass: 'pf-head-menu-logo', // class for main menu logo
|
||||
menuButtonFullScreenId: 'pf-menu-button-fullscreen', // id for menu button "full screen"
|
||||
|
||||
// map module
|
||||
mapModuleId: 'pf-map-module', // main map module
|
||||
// global dialog
|
||||
dialogNavigationClass: 'pf-dialog-navigation-list', // class for dialog navigation bar
|
||||
dialogNavigationListItemClass: 'pf-dialog-navigation-list-item', // class for map manual li main navigation elements
|
||||
|
||||
// system effect dialog
|
||||
systemEffectDialogWrapperClass: 'pf-system-effect-dialog-wrapper', // class for system effect dialog
|
||||
@@ -55,13 +58,6 @@ define([
|
||||
|
||||
// map manual dialog
|
||||
mapManualScrollspyId: 'pf-manual-scrollspy', // id for map manual scrollspy
|
||||
mapManualScrollspyNavClass: 'pf-manual-scrollspy-nav', // class for map manual scrollspy navigation
|
||||
mapManualNavigationListItemClass: 'pf-manual-navigation-list-item', // class for map manual li main navigation elements
|
||||
|
||||
// map info dialog
|
||||
mapInfoSystemsId: 'pf-map-info-systems', // id for map info systems box
|
||||
mapInfoConnectionsId: 'pf-map-info-connections', // id for map info connections box
|
||||
mapInfoTableClass: 'pf-map-info-table', // class for data
|
||||
|
||||
// helper element
|
||||
dynamicElementWrapperId: 'pf-dialog-wrapper'
|
||||
@@ -71,6 +67,9 @@ define([
|
||||
systemEffectDialog: false // system effect info dialog
|
||||
};
|
||||
|
||||
var programStatusCounter = 0; // current count down in s until next status change is possible
|
||||
var programStatusInterval = false; // interval timer until next status change is possible
|
||||
|
||||
|
||||
/**
|
||||
* load main page structure elements and navigation container into body
|
||||
@@ -97,9 +96,7 @@ define([
|
||||
id: config.pageId,
|
||||
class: config.pageClass
|
||||
}).append(
|
||||
$('<div>', {
|
||||
id: config.mapModuleId
|
||||
})
|
||||
Util.getMapModule()
|
||||
).append(
|
||||
$('<div>', {
|
||||
id: config.dynamicElementWrapperId
|
||||
@@ -217,11 +214,6 @@ define([
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -251,7 +243,7 @@ define([
|
||||
class: 'glyphicon glyphicon-th'
|
||||
})
|
||||
).on('click', function(){
|
||||
$('#' + config.mapModuleId).getActiveMap().triggerMenuEvent('Grid', {button: this});
|
||||
Util.getMapModule().getActiveMap().triggerMenuEvent('Grid', {button: this});
|
||||
})
|
||||
).append(
|
||||
$('<a>', {
|
||||
@@ -264,6 +256,17 @@ define([
|
||||
).on('click', function(){
|
||||
$(document).triggerMenuEvent('EditMap', {newMap: false});
|
||||
})
|
||||
).append(
|
||||
$('<a>', {
|
||||
class: 'list-group-item',
|
||||
href: '#'
|
||||
}).html(' Task-Manager').prepend(
|
||||
$('<i>',{
|
||||
class: 'fa fa-tasks fa-fw'
|
||||
})
|
||||
).on('click', function(){
|
||||
$(document).triggerMenuEvent('ShowTaskManager');
|
||||
})
|
||||
)
|
||||
);
|
||||
};
|
||||
@@ -312,7 +315,12 @@ define([
|
||||
|
||||
// current location
|
||||
$('.' + config.headCurrentLocationClass).find('a').on('click', function(){
|
||||
$('#' + config.mapModuleId).getActiveMap().triggerMenuEvent('SelectSystem', {systemId: $(this).data('systemId') });
|
||||
Util.getMapModule().getActiveMap().triggerMenuEvent('SelectSystem', {systemId: $(this).data('systemId') });
|
||||
});
|
||||
|
||||
// program status
|
||||
$('.' + config.headProgramStatusClass).on('click', function(){
|
||||
$(document).triggerMenuEvent('ShowTaskManager');
|
||||
});
|
||||
|
||||
$(document).on('pf:closeMenu', function(e){
|
||||
@@ -324,8 +332,8 @@ define([
|
||||
var tooltipElements = $('#' + config.pageHeaderId).find('[title]');
|
||||
tooltipElements.tooltip({placement: 'bottom'});
|
||||
|
||||
// trigger load main map module -> header is required for drag&drop position
|
||||
$('#' + config.mapModuleId).trigger('pf:initModule');
|
||||
// trigger load main map module -> header is required for "System" drag&drop position
|
||||
Util.getMapModule().trigger('pf:initModule');
|
||||
|
||||
}
|
||||
}
|
||||
@@ -409,7 +417,7 @@ define([
|
||||
|
||||
$(document).on('pf:menuShowMapInfo', function(e){
|
||||
// show map information dialog
|
||||
showMapInfoDialog();
|
||||
MapInfo.showDialog();
|
||||
return false;
|
||||
});
|
||||
|
||||
@@ -418,7 +426,7 @@ define([
|
||||
var mapData = false;
|
||||
|
||||
if(data.newMap === false){
|
||||
var activeMap = $('#' + config.mapModuleId).getActiveMap();
|
||||
var activeMap = Util.getMapModule().getActiveMap();
|
||||
|
||||
if(activeMap){
|
||||
mapData = activeMap.getMapData(true);
|
||||
@@ -429,6 +437,12 @@ define([
|
||||
return false;
|
||||
});
|
||||
|
||||
$(document).on('pf:menuShowTaskManager', function(e, data){
|
||||
// show log dialog
|
||||
Logging.showDialog();
|
||||
return false;
|
||||
});
|
||||
|
||||
$(document).on('pf:menuFullScreen', function(e, data){
|
||||
|
||||
if(CCP.isInGameBrowser() === false){
|
||||
@@ -459,7 +473,7 @@ define([
|
||||
|
||||
// update header links with current map data
|
||||
$(document).on('pf:updateHeaderData', function(e, data){
|
||||
var activeMap = $('#' + config.mapModuleId).getActiveMap();
|
||||
var activeMap = Util.getMapModule().getActiveMap();
|
||||
|
||||
var userCount = 0;
|
||||
var currentLocationData = {};
|
||||
@@ -472,10 +486,8 @@ define([
|
||||
userCount = data.userCount;
|
||||
currentLocationData = data;
|
||||
}
|
||||
|
||||
updateHeaderActiveUserCount(userCount);
|
||||
updateHeaderCurrentLocation(currentLocationData);
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
@@ -490,11 +502,13 @@ define([
|
||||
if(badge.data('userCount') !== userCount){
|
||||
badge.data('userCount', userCount);
|
||||
|
||||
if(userCount > 0){
|
||||
badge.text(userCount);
|
||||
badge.text(userCount);
|
||||
|
||||
badge.toggleClass('txt-color-green', (userCount > 0) );
|
||||
badge.toggleClass('txt-color-red', (userCount === 0) );
|
||||
|
||||
if(! activeUserElement.is(':visible')){
|
||||
activeUserElement.velocity('fadeIn', {duration: Init.animationSpeed.headerLink});
|
||||
}else{
|
||||
activeUserElement.velocity('reverse');
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -513,6 +527,7 @@ define([
|
||||
){
|
||||
var tempSystemName = locationData.currentSystemName;
|
||||
var tempSystemId = locationData.currentSystemId;
|
||||
|
||||
if(
|
||||
tempSystemName === undefined ||
|
||||
tempSystemId === undefined
|
||||
@@ -524,11 +539,16 @@ define([
|
||||
linkElement.data('systemName', tempSystemName);
|
||||
linkElement.data('systemId', tempSystemId);
|
||||
|
||||
if(locationData.currentSystemName){
|
||||
if(
|
||||
tempSystemName !== false &&
|
||||
tempSystemId !== false
|
||||
){
|
||||
textElement.text(locationData.currentSystemName);
|
||||
currentLocationElement.velocity('fadeIn', {duration: Init.animationSpeed.headerLink});
|
||||
}else{
|
||||
currentLocationElement.velocity('reverse');
|
||||
if(currentLocationElement.is(':visible')){
|
||||
currentLocationElement.velocity('fadeOut', {duration: Init.animationSpeed.headerLink});
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -540,7 +560,7 @@ define([
|
||||
|
||||
var formData = {};
|
||||
|
||||
requirejs(['text!templates/modules/map_dialog.html', 'lib/mustache'], function(template, Mustache) {
|
||||
requirejs(['text!templates/modules/map_dialog.html', 'mustache'], function(template, Mustache) {
|
||||
|
||||
var data = {
|
||||
id: config.newMapDialogId,
|
||||
@@ -553,9 +573,11 @@ define([
|
||||
var content = Mustache.render(template, data);
|
||||
|
||||
var dialogTitle = 'New map';
|
||||
|
||||
var dialogSaveButton = 'add map';
|
||||
if(mapData !== false){
|
||||
dialogTitle = 'Edit map';
|
||||
dialogSaveButton = 'save map';
|
||||
|
||||
content = $(content);
|
||||
content.find('select[name="icon"]').val( mapData.config.icon );
|
||||
content.find('input[name="name"]').val( mapData.config.name );
|
||||
@@ -564,7 +586,6 @@ define([
|
||||
}
|
||||
|
||||
|
||||
|
||||
var mapInfoDialog = bootbox.dialog({
|
||||
title: dialogTitle,
|
||||
message: content,
|
||||
@@ -574,7 +595,7 @@ define([
|
||||
className: 'btn-default'
|
||||
},
|
||||
success: {
|
||||
label: '<i class="fa fa-code-fork fa-fw"></i>add map',
|
||||
label: '<i class="fa fa-code-fork fa-fw"></i>' + dialogSaveButton,
|
||||
className: 'btn-primary',
|
||||
callback: function() {
|
||||
|
||||
@@ -582,7 +603,7 @@ define([
|
||||
var form = $('#' + config.newMapDialogId).find('form');
|
||||
var newMapData = form.getFormValues();
|
||||
|
||||
saveMapData(newMapData);
|
||||
// TODO save map data
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -591,297 +612,19 @@ define([
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* shows the map information modal dialog
|
||||
* @param mapData
|
||||
*/
|
||||
var showMapInfoDialog = function(){
|
||||
|
||||
var mapData = $('#' + config.mapModuleId).getActiveMap().getMapData(true);
|
||||
|
||||
if(mapData !== false){
|
||||
requirejs(['text!templates/modules/map_info_dialog.html', 'lib/mustache'], function(template, Mustache) {
|
||||
|
||||
var data = {
|
||||
mapInfoSystemsId: config.mapInfoSystemsId,
|
||||
mapInfoConnectionsId: config.mapInfoConnectionsId,
|
||||
mapDataConfig: mapData.config,
|
||||
mapName: mapData.config.name,
|
||||
mapTypeClass: Util.getInfoForMap( mapData.config.type, 'class'),
|
||||
mapTypeLabel: Util.getInfoForMap( mapData.config.type, 'label')
|
||||
};
|
||||
|
||||
var content = Mustache.render(template, data);
|
||||
|
||||
var mapInfoDialog = bootbox.dialog({
|
||||
title: 'Map information',
|
||||
message: content,
|
||||
buttons: {
|
||||
success: {
|
||||
label: 'close',
|
||||
className: 'btn-primary',
|
||||
callback: function() {
|
||||
$(mapInfoDialog).modal('hide');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
mapInfoDialog.on('shown.bs.modal', function(e) {
|
||||
// modal on open
|
||||
|
||||
var systemsElement = $('#' + config.mapInfoSystemsId);
|
||||
var connectionsElement = $('#' + config.mapInfoConnectionsId);
|
||||
|
||||
var loadingOptions = {
|
||||
icon: {
|
||||
size: 'fa-2x'
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
var systemTable = $('<table>', {
|
||||
class: ['compact', 'stripe', 'order-column', 'row-border', config.mapInfoTableClass].join(' ')
|
||||
});
|
||||
systemsElement.append(systemTable);
|
||||
|
||||
systemsElement.showLoadingAnimation(loadingOptions);
|
||||
|
||||
var connectionTable = $('<table>', {
|
||||
class: ['compact', 'stripe', 'order-column', 'row-border', config.mapInfoTableClass].join(' ')
|
||||
});
|
||||
connectionsElement.append(connectionTable);
|
||||
|
||||
connectionsElement.showLoadingAnimation(loadingOptions);
|
||||
|
||||
// systems table ==================================================
|
||||
|
||||
// prepare data for dataTables
|
||||
var systemsData = [];
|
||||
for(var i = 0; i < mapData.data.systems.length; i++){
|
||||
var tempSystemData = mapData.data.systems[i];
|
||||
|
||||
var tempData = [];
|
||||
|
||||
// current position
|
||||
if(tempSystemData.currentUser === true){
|
||||
tempData.push( '<i class="fa fa fa-map-marker fa-lg fa-fw"></i>' );
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
// active pilots
|
||||
if(tempSystemData.userCount > 0){
|
||||
tempData.push(tempSystemData.userCount);
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
// type
|
||||
tempData.push(tempSystemData.type);
|
||||
|
||||
// name
|
||||
tempData.push( tempSystemData.name );
|
||||
|
||||
// alias
|
||||
if( tempSystemData.name !== tempSystemData.alias){
|
||||
tempData.push( tempSystemData.alias );
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
// status
|
||||
var systemStatusClass = Util.getStatusInfoForSystem(tempSystemData.status, 'class');
|
||||
if(systemStatusClass !== ''){
|
||||
tempData.push( '<i class="fa fa fa-square-o fa-lg fa-fw ' + systemStatusClass + '"></i>' );
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
// effect
|
||||
var systemEffectClass = Util.getEffectInfoForSystem(tempSystemData.effect, 'class');
|
||||
if(systemEffectClass !== ''){
|
||||
tempData.push( '<i class="fa fa fa-square fa-lg fa-fw ' + systemEffectClass + '"></i>' );
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
// trueSec
|
||||
var systemTrueSecClass = Util.getTrueSecClassForSystem(tempSystemData.trueSec);
|
||||
if(systemTrueSecClass !== ''){
|
||||
tempData.push( '<span class="' + systemTrueSecClass + '">' + tempSystemData.trueSec.toFixed(1) + '</span>' );
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
// locked
|
||||
if(tempSystemData.locked === true){
|
||||
tempData.push( '<i class="fa fa-lock fa-lg fa-fw"></i>' );
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
// rally point
|
||||
if(tempSystemData.rally === true){
|
||||
tempData.push( '<i class="fa fa-users fa-lg fa-fw"></i>' );
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
systemsData.push(tempData);
|
||||
}
|
||||
|
||||
var systemsDataTable = systemTable.dataTable( {
|
||||
paging: false,
|
||||
ordering: true,
|
||||
order: [ 0, 'desc' ],
|
||||
autoWidth: false,
|
||||
hover: false,
|
||||
data: systemsData,
|
||||
columnDefs: [],
|
||||
language: {
|
||||
emptyTable: 'Map is empty',
|
||||
zeroRecords: 'No systems found',
|
||||
lengthMenu: 'Show _MENU_ systems',
|
||||
info: 'Showing _START_ to _END_ of _TOTAL_ systems'
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
title: '<i class="fa fa fa-map-marker fa-lg"></i>',
|
||||
width: '15px',
|
||||
searchable: false
|
||||
},{
|
||||
title: '<i class="fa fa fa-plane fa-lg"></i>',
|
||||
width: '18px',
|
||||
searchable: false
|
||||
},{
|
||||
title: 'type',
|
||||
width: '50px'
|
||||
},{
|
||||
title: 'system',
|
||||
width: '50px'
|
||||
},{
|
||||
title: 'alias'
|
||||
},{
|
||||
title: 'status',
|
||||
width: '30px',
|
||||
class: 'text-center',
|
||||
orderable: false,
|
||||
searchable: false
|
||||
},{
|
||||
title: 'effect',
|
||||
width: '30px',
|
||||
class: 'text-center',
|
||||
orderable: false,
|
||||
searchable: false
|
||||
},{
|
||||
title: 'sec.',
|
||||
width: '20px',
|
||||
class: 'text-center',
|
||||
orderable: false,
|
||||
searchable: false
|
||||
},{
|
||||
title: '<i class="fa fa-lock fa-lg fa-fw"></i>',
|
||||
width: '30px',
|
||||
class: 'text-center',
|
||||
searchable: false
|
||||
},{
|
||||
title: '<i class="fa fa-users fa-lg fa-fw"></i>',
|
||||
width: '30px',
|
||||
className: 'text-center',
|
||||
searchable: false
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
systemsElement.hideLoadingAnimation();
|
||||
|
||||
// connections table ==================================================
|
||||
|
||||
// prepare data for dataTables
|
||||
var connectionData = [];
|
||||
for(var j = 0; j < mapData.data.connections.length; j++){
|
||||
var tempConnectionData = mapData.data.connections[j];
|
||||
|
||||
var tempConData = [];
|
||||
|
||||
tempConData.push( Util.getScopeInfoForMap( tempConnectionData.scope, 'label') );
|
||||
|
||||
// source system name
|
||||
tempConData.push( tempConnectionData.sourceName );
|
||||
|
||||
// connection
|
||||
var connectionClasses = [];
|
||||
for(var k = 0; k < tempConnectionData.type.length; k++){
|
||||
connectionClasses.push( Util.getConnectionInfo( tempConnectionData.type[k], 'cssClass') );
|
||||
|
||||
}
|
||||
|
||||
connectionClasses = connectionClasses.join(' ');
|
||||
|
||||
tempConData.push( '<div class="pf-fake-connection ' + connectionClasses + '"></div>' );
|
||||
|
||||
|
||||
tempConData.push( tempConnectionData.targetName );
|
||||
|
||||
connectionData.push(tempConData);
|
||||
}
|
||||
|
||||
var connectionDataTable = connectionTable.dataTable( {
|
||||
paging: false,
|
||||
ordering: true,
|
||||
order: [ 0, 'desc' ],
|
||||
autoWidth: false,
|
||||
hover: false,
|
||||
data: connectionData,
|
||||
columnDefs: [],
|
||||
language: {
|
||||
emptyTable: 'No connections',
|
||||
zeroRecords: 'No connections found',
|
||||
lengthMenu: 'Show _MENU_ connections',
|
||||
info: 'Showing _START_ to _END_ of _TOTAL_ connections'
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
title: 'scope',
|
||||
width: '50px',
|
||||
orderable: false
|
||||
},{
|
||||
title: 'source system'
|
||||
},{
|
||||
title: 'connection',
|
||||
width: '80px',
|
||||
class: 'text-center',
|
||||
orderable: false,
|
||||
searchable: false
|
||||
},{
|
||||
title: 'target system'
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
|
||||
connectionsElement.hideLoadingAnimation();
|
||||
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* shows the map manual modal dialog
|
||||
*/
|
||||
var showMapManual = function(){
|
||||
|
||||
requirejs(['text!templates/modules/map_manual_dialog.html', 'lib/mustache'], function(template, Mustache) {
|
||||
requirejs(['text!templates/modules/map_manual_dialog.html', 'mustache'], function(template, Mustache) {
|
||||
|
||||
var data = {
|
||||
dialogNavigationClass: config.dialogNavigationClass,
|
||||
dialogNavLiClass: config.dialogNavigationListItemClass,
|
||||
scrollspyId: config.mapManualScrollspyId,
|
||||
scrollspyNavClass: config.mapManualScrollspyNavClass,
|
||||
scrollspyNavLiClass: config.mapManualNavigationListItemClass,
|
||||
pieChartClass : Init.classes.pieChart.pieChartMapCounterClass,
|
||||
mapCounterClass : Init.classes.pieChart.pieChartMapCounterClass,
|
||||
|
||||
@@ -899,7 +642,6 @@ define([
|
||||
var mapManualDialog = bootbox.dialog({
|
||||
title: 'Pathfinder manual',
|
||||
message: content,
|
||||
className: 'medium',
|
||||
buttons: {
|
||||
success: {
|
||||
label: 'close',
|
||||
@@ -928,7 +670,7 @@ define([
|
||||
mapManualDialog.on('shown.bs.modal', function(e) {
|
||||
// modal on open
|
||||
scrolLBreakpointElements = $('.pf-manual-scroll-break');
|
||||
scrollNavLiElements = $('.' + config.mapManualNavigationListItemClass);
|
||||
scrollNavLiElements = $('.' + config.dialogNavigationListItemClass);
|
||||
});
|
||||
|
||||
var scrollspyElement = $('#' + config.mapManualScrollspyId);
|
||||
@@ -975,7 +717,7 @@ define([
|
||||
scrollspyElement.find('.' + data.mapCounterClass).initMapUpdateCounter();
|
||||
|
||||
// set navigation button observer
|
||||
var mainNavigationLinks = $('.' + config.mapManualScrollspyNavClass).find('a');
|
||||
var mainNavigationLinks = $('.' + config.dialogNavigationClass).find('a');
|
||||
// text anchor links
|
||||
var subNavigationLinks = scrollspyElement.find('a[data-target]');
|
||||
|
||||
@@ -989,7 +731,7 @@ define([
|
||||
// scroll to anchor
|
||||
scrollspyElement.mCustomScrollbar("scrollTo", $(this).attr('data-target'));
|
||||
|
||||
var mainNavigationLiElement = $(this).parent('.' + config.mapManualNavigationListItemClass);
|
||||
var mainNavigationLiElement = $(this).parent('.' + config.dialogNavigationListItemClass);
|
||||
|
||||
|
||||
whileScrolling();
|
||||
@@ -1047,7 +789,7 @@ define([
|
||||
*/
|
||||
var showJumpInfoDialog = function(){
|
||||
|
||||
requirejs(['text!templates/modules/jump_info_dialog.html', 'lib/mustache'], function(template, Mustache) {
|
||||
requirejs(['text!templates/modules/jump_info_dialog.html', 'mustache'], function(template, Mustache) {
|
||||
|
||||
var data = {};
|
||||
|
||||
@@ -1141,6 +883,8 @@ define([
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* trigger "program status" in head
|
||||
* @param status
|
||||
@@ -1181,18 +925,54 @@ define([
|
||||
// change status, on status changed
|
||||
if(iconClass !== false){
|
||||
|
||||
statusElement.velocity('fadeOut', {
|
||||
duration: Init.animationSpeed.headerLink,
|
||||
complete: function(){
|
||||
statusElement.removeClass('txt-color-green txt-color-orange txt-color-red');
|
||||
icon.removeClass('fa-wifi fa-warning fa-bolt');
|
||||
statusElement.addClass(textClass);
|
||||
icon.addClass(iconClass);
|
||||
textElement.text(text);
|
||||
if(! statusElement.hasClass(textClass) ){
|
||||
|
||||
if(! programStatusInterval){
|
||||
|
||||
var timer = function(){
|
||||
|
||||
// change status on first timer iteration
|
||||
if(programStatusCounter === Init.timer.programStatusVisible){
|
||||
|
||||
statusElement.velocity('stop').velocity('fadeOut', {
|
||||
duration: Init.animationSpeed.headerLink,
|
||||
complete: function(){
|
||||
statusElement.removeClass('txt-color-green txt-color-orange txt-color-red');
|
||||
icon.removeClass('fa-wifi fa-warning fa-bolt');
|
||||
statusElement.addClass(textClass);
|
||||
icon.addClass(iconClass);
|
||||
textElement.text(text);
|
||||
}
|
||||
}).velocity('fadeIn', {
|
||||
duration: Init.animationSpeed.headerLink
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
programStatusCounter--;
|
||||
|
||||
if(programStatusCounter <= 0){
|
||||
clearInterval(programStatusInterval);
|
||||
programStatusInterval = false;
|
||||
}
|
||||
};
|
||||
|
||||
if(! programStatusInterval){
|
||||
programStatusCounter = Init.timer.programStatusVisible;
|
||||
programStatusInterval = setInterval(timer, 1000);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}).velocity('fadeIn', {
|
||||
duration: Init.animationSpeed.headerLink
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* Render controller
|
||||
*/
|
||||
|
||||
define(['jquery', 'lib/mustache'], function($, Mustache) {
|
||||
define(['jquery', 'mustache'], function($, Mustache) {
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
415
js/app/ui/map_info.js
Normal file
415
js/app/ui/map_info.js
Normal file
@@ -0,0 +1,415 @@
|
||||
/**
|
||||
* map info dialog
|
||||
*/
|
||||
|
||||
define([
|
||||
'jquery',
|
||||
'app/util',
|
||||
'bootbox'
|
||||
], function($, Util, bootbox) {
|
||||
|
||||
'use strict';
|
||||
|
||||
var config = {
|
||||
// global dialog
|
||||
dialogNavigationClass: 'pf-dialog-navigation-list', // class for dialog navigation bar
|
||||
dialogNavigationListItemClass: 'pf-dialog-navigation-list-item', // class for map manual li main navigation elements
|
||||
|
||||
// map info dialog
|
||||
mapInfoId: 'pf-map-info', // id for map info
|
||||
mapInfoSystemsId: 'pf-map-info-systems', // id for map info systems box
|
||||
mapInfoConnectionsId: 'pf-map-info-connections', // id for map info connections box
|
||||
mapInfoTableClass: 'pf-map-info-table', // class for data
|
||||
|
||||
loadingOptions: { // config for loading overlay
|
||||
icon: {
|
||||
size: 'fa-2x'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* loads the map info data into an element
|
||||
* @param mapData
|
||||
*/
|
||||
$.fn.loadMapInfoData = function(mapData){
|
||||
|
||||
var mapElement = $(this);
|
||||
|
||||
mapElement.empty();
|
||||
|
||||
mapElement.showLoadingAnimation(config.loadingOptions);
|
||||
|
||||
var countSystems = mapData.data.systems.length;
|
||||
var countConnections = mapData.data.connections.length;
|
||||
|
||||
|
||||
var dlElementLeft = $('<dl>', {
|
||||
class: 'dl-horizontal',
|
||||
css: {'float': 'left'}
|
||||
}).append(
|
||||
$('<dt>').text( 'Icon' )
|
||||
).append(
|
||||
$('<dd>').append(
|
||||
$('<i>', {
|
||||
class: ['fa', 'fa-fw', mapData.config.icon].join(' ')
|
||||
})
|
||||
)
|
||||
).append(
|
||||
$('<dt>').text( 'Name' )
|
||||
).append(
|
||||
$('<dd>').text( mapData.config.name )
|
||||
).append(
|
||||
$('<dt>').text( 'Type' )
|
||||
).append(
|
||||
$('<dd>', {
|
||||
class: Util.getInfoForMap( mapData.config.type, 'class')
|
||||
}).text( Util.getInfoForMap( mapData.config.type, 'label') )
|
||||
);
|
||||
|
||||
mapElement.append(dlElementLeft);
|
||||
|
||||
var dlElementRight = $('<dl>', {
|
||||
class: 'dl-horizontal',
|
||||
css: {'float': 'right'}
|
||||
}).append(
|
||||
$('<dt>').text( 'Systems' )
|
||||
).append(
|
||||
$('<dd>').text( countSystems )
|
||||
).append(
|
||||
$('<dt>').text( 'Connections' )
|
||||
).append(
|
||||
$('<dd>').text( countConnections )
|
||||
);
|
||||
|
||||
mapElement.append(dlElementRight);
|
||||
|
||||
|
||||
mapElement.hideLoadingAnimation();
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* loads the system info table into an element
|
||||
* @param mapData
|
||||
*/
|
||||
$.fn.loadSystemInfoTable = function(mapData){
|
||||
|
||||
var systemsElement = $(this);
|
||||
|
||||
systemsElement.empty();
|
||||
|
||||
var systemTable = $('<table>', {
|
||||
class: ['compact', 'stripe', 'order-column', 'row-border', config.mapInfoTableClass].join(' ')
|
||||
});
|
||||
systemsElement.append(systemTable);
|
||||
|
||||
systemsElement.showLoadingAnimation(config.loadingOptions);
|
||||
|
||||
|
||||
// prepare data for dataTables
|
||||
var systemsData = [];
|
||||
for(var i = 0; i < mapData.data.systems.length; i++){
|
||||
var tempSystemData = mapData.data.systems[i];
|
||||
|
||||
var tempData = [];
|
||||
|
||||
// current position
|
||||
if(tempSystemData.currentUser === true){
|
||||
tempData.push( '<i class="fa fa fa-map-marker fa-lg fa-fw"></i>' );
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
// active pilots
|
||||
if(tempSystemData.userCount > 0){
|
||||
tempData.push(tempSystemData.userCount);
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
// type
|
||||
tempData.push(tempSystemData.type);
|
||||
|
||||
// name
|
||||
tempData.push( tempSystemData.name );
|
||||
|
||||
// alias
|
||||
if( tempSystemData.name !== tempSystemData.alias){
|
||||
tempData.push( tempSystemData.alias );
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
// status
|
||||
var systemStatusClass = Util.getStatusInfoForSystem(tempSystemData.status, 'class');
|
||||
if(systemStatusClass !== ''){
|
||||
tempData.push( '<i class="fa fa fa-square-o fa-lg fa-fw ' + systemStatusClass + '"></i>' );
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
// effect
|
||||
var systemEffectClass = Util.getEffectInfoForSystem(tempSystemData.effect, 'class');
|
||||
if(systemEffectClass !== ''){
|
||||
tempData.push( '<i class="fa fa fa-square fa-lg fa-fw ' + systemEffectClass + '"></i>' );
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
// trueSec
|
||||
var systemTrueSecClass = Util.getTrueSecClassForSystem(tempSystemData.trueSec);
|
||||
if(systemTrueSecClass !== ''){
|
||||
tempData.push( '<span class="' + systemTrueSecClass + '">' + tempSystemData.trueSec.toFixed(1) + '</span>' );
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
// locked
|
||||
if(tempSystemData.locked === true){
|
||||
tempData.push( '<i class="fa fa-lock fa-lg fa-fw"></i>' );
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
// rally point
|
||||
if(tempSystemData.rally === true){
|
||||
tempData.push( '<i class="fa fa-users fa-lg fa-fw"></i>' );
|
||||
}else{
|
||||
tempData.push( '' );
|
||||
}
|
||||
|
||||
systemsData.push(tempData);
|
||||
}
|
||||
|
||||
var systemsDataTable = systemTable.dataTable( {
|
||||
paging: false,
|
||||
ordering: true,
|
||||
order: [ 0, 'desc' ],
|
||||
autoWidth: false,
|
||||
hover: false,
|
||||
data: systemsData,
|
||||
columnDefs: [],
|
||||
language: {
|
||||
emptyTable: 'Map is empty',
|
||||
zeroRecords: 'No systems found',
|
||||
lengthMenu: 'Show _MENU_ systems',
|
||||
info: 'Showing _START_ to _END_ of _TOTAL_ systems'
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
title: '<i class="fa fa fa-map-marker fa-lg"></i>',
|
||||
width: '15px',
|
||||
searchable: false
|
||||
},{
|
||||
title: '<i class="fa fa fa-plane fa-lg"></i>',
|
||||
width: '18px',
|
||||
searchable: false
|
||||
},{
|
||||
title: 'type',
|
||||
width: '50px'
|
||||
},{
|
||||
title: 'system',
|
||||
width: '50px'
|
||||
},{
|
||||
title: 'alias'
|
||||
},{
|
||||
title: 'status',
|
||||
width: '30px',
|
||||
class: 'text-center',
|
||||
orderable: false,
|
||||
searchable: false
|
||||
},{
|
||||
title: 'effect',
|
||||
width: '30px',
|
||||
class: 'text-center',
|
||||
orderable: false,
|
||||
searchable: false
|
||||
},{
|
||||
title: 'sec.',
|
||||
width: '20px',
|
||||
class: 'text-center',
|
||||
orderable: false,
|
||||
searchable: false
|
||||
},{
|
||||
title: '<i class="fa fa-lock fa-lg fa-fw"></i>',
|
||||
width: '30px',
|
||||
class: 'text-center',
|
||||
searchable: false
|
||||
},{
|
||||
title: '<i class="fa fa-users fa-lg fa-fw"></i>',
|
||||
width: '30px',
|
||||
className: 'text-center',
|
||||
searchable: false
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
systemsElement.hideLoadingAnimation();
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* loads the connection info table into an element
|
||||
* @param mapData
|
||||
*/
|
||||
$.fn.loadConnectionInfoTable = function(mapData){
|
||||
var connectionsElement = $(this);
|
||||
|
||||
connectionsElement.empty();
|
||||
|
||||
var connectionTable = $('<table>', {
|
||||
class: ['compact', 'stripe', 'order-column', 'row-border', config.mapInfoTableClass].join(' ')
|
||||
});
|
||||
connectionsElement.append(connectionTable);
|
||||
|
||||
connectionsElement.showLoadingAnimation(config.loadingOptions);
|
||||
|
||||
// connections table ==================================================
|
||||
|
||||
// prepare data for dataTables
|
||||
var connectionData = [];
|
||||
for(var j = 0; j < mapData.data.connections.length; j++){
|
||||
var tempConnectionData = mapData.data.connections[j];
|
||||
|
||||
var tempConData = [];
|
||||
|
||||
tempConData.push( Util.getScopeInfoForMap( tempConnectionData.scope, 'label') );
|
||||
|
||||
// source system name
|
||||
tempConData.push( tempConnectionData.sourceName );
|
||||
|
||||
// connection
|
||||
var connectionClasses = [];
|
||||
for(var k = 0; k < tempConnectionData.type.length; k++){
|
||||
connectionClasses.push( Util.getConnectionInfo( tempConnectionData.type[k], 'cssClass') );
|
||||
|
||||
}
|
||||
|
||||
connectionClasses = connectionClasses.join(' ');
|
||||
|
||||
tempConData.push( '<div class="pf-fake-connection ' + connectionClasses + '"></div>' );
|
||||
|
||||
|
||||
tempConData.push( tempConnectionData.targetName );
|
||||
|
||||
connectionData.push(tempConData);
|
||||
}
|
||||
|
||||
var connectionDataTable = connectionTable.dataTable( {
|
||||
paging: false,
|
||||
ordering: true,
|
||||
order: [ 0, 'desc' ],
|
||||
autoWidth: false,
|
||||
hover: false,
|
||||
data: connectionData,
|
||||
columnDefs: [],
|
||||
language: {
|
||||
emptyTable: 'No connections',
|
||||
zeroRecords: 'No connections found',
|
||||
lengthMenu: 'Show _MENU_ connections',
|
||||
info: 'Showing _START_ to _END_ of _TOTAL_ connections'
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
title: 'scope',
|
||||
width: '50px',
|
||||
orderable: false
|
||||
},{
|
||||
title: 'source system'
|
||||
},{
|
||||
title: 'connection',
|
||||
width: '80px',
|
||||
class: 'text-center',
|
||||
orderable: false,
|
||||
searchable: false
|
||||
},{
|
||||
title: 'target system'
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
|
||||
connectionsElement.hideLoadingAnimation();
|
||||
};
|
||||
|
||||
/**
|
||||
* shows the map information modal dialog
|
||||
*/
|
||||
var showDialog = function(){
|
||||
|
||||
var activeMap = Util.getMapModule().getActiveMap();
|
||||
var mapData = activeMap.getMapData(true);
|
||||
|
||||
if(mapData !== false){
|
||||
requirejs(['text!templates/modules/map_info_dialog.html', 'mustache'], function(template, Mustache) {
|
||||
|
||||
var data = {
|
||||
dialogNavigationClass: config.dialogNavigationClass,
|
||||
dialogNavLiClass: config.dialogNavigationListItemClass,
|
||||
mapInfoId: config.mapInfoId,
|
||||
mapInfoSystemsId: config.mapInfoSystemsId,
|
||||
mapInfoConnectionsId: config.mapInfoConnectionsId
|
||||
};
|
||||
|
||||
var content = Mustache.render(template, data);
|
||||
|
||||
|
||||
|
||||
var mapInfoDialog = bootbox.dialog({
|
||||
title: 'Map information',
|
||||
message: content,
|
||||
buttons: {
|
||||
success: {
|
||||
label: 'close',
|
||||
className: 'btn-primary',
|
||||
callback: function() {
|
||||
$(mapInfoDialog).modal('hide');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
mapInfoDialog.on('shown.bs.modal', function(e) {
|
||||
// modal on open
|
||||
|
||||
var mapElement = $('#' + config.mapInfoId);
|
||||
var systemsElement = $('#' + config.mapInfoSystemsId);
|
||||
var connectionsElement = $('#' + config.mapInfoConnectionsId);
|
||||
|
||||
// set navigation button observer
|
||||
var mainNavigationLinks = $('.' + config.dialogNavigationClass).find('a');
|
||||
mainNavigationLinks.on('click', function(){
|
||||
var menuAction = $(this).attr('data-action');
|
||||
|
||||
if(menuAction === 'refresh'){
|
||||
// get new map data
|
||||
var mapData = activeMap.getMapData(true);
|
||||
|
||||
mapElement.loadMapInfoData(mapData);
|
||||
systemsElement.loadSystemInfoTable(mapData);
|
||||
connectionsElement.loadConnectionInfoTable(mapData);
|
||||
}
|
||||
});
|
||||
|
||||
// load map data
|
||||
mapElement.loadMapInfoData(mapData);
|
||||
|
||||
// load system table
|
||||
systemsElement.loadSystemInfoTable(mapData);
|
||||
|
||||
// load connection table
|
||||
connectionsElement.loadConnectionInfoTable(mapData);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
return {
|
||||
showDialog: showDialog
|
||||
};
|
||||
});
|
||||
158
js/app/util.js
158
js/app/util.js
@@ -12,9 +12,11 @@ define([
|
||||
var config = {
|
||||
ajaxOverlayClass: 'pf-loading-overlay',
|
||||
ajaxOverlayWrapperClass: 'pf-loading-overlay-wrapper',
|
||||
ajaxOverlayVisibleClass: 'pf-loading-overlay-visible',
|
||||
|
||||
formEditableFieldClass: 'pf-editable', // Class for all xEditable fields
|
||||
formEditableFieldClass: 'pf-editable', // Class for all xEditable fields
|
||||
|
||||
// map module
|
||||
mapModuleId: 'pf-map-module', // main map module
|
||||
|
||||
// available map ions
|
||||
mapIcons: [
|
||||
@@ -47,7 +49,84 @@ define([
|
||||
|
||||
};
|
||||
|
||||
var stopTimerCache = {}; // cache for stopwatch timer
|
||||
|
||||
/**
|
||||
* get date obj with current EVE Server Time. -> Server Time === UTC time
|
||||
* @returns {Date}
|
||||
*/
|
||||
var getServerTime = function(){
|
||||
|
||||
var localDate = new Date();
|
||||
|
||||
var serverDate= new Date(
|
||||
localDate.getUTCFullYear(),
|
||||
localDate.getUTCMonth(),
|
||||
localDate.getUTCDate(),
|
||||
localDate.getUTCHours(),
|
||||
localDate.getUTCMinutes(),
|
||||
localDate.getUTCSeconds()
|
||||
);
|
||||
|
||||
return serverDate;
|
||||
};
|
||||
|
||||
/**
|
||||
* start time measurement by a unique string identifier
|
||||
* @param timerName
|
||||
*/
|
||||
var timeStart = function(timerName){
|
||||
|
||||
if( !(stopTimerCache.hasOwnProperty(timerName)) ){
|
||||
|
||||
if(typeof performance === 'object'){
|
||||
stopTimerCache[timerName] = performance.now();
|
||||
}else{
|
||||
stopTimerCache[timerName] = new Date().getTime();
|
||||
}
|
||||
}else{
|
||||
console.log('nooo')
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* get time delta between timeStart() and timeStop() by a unique string identifier
|
||||
* @param timerName
|
||||
* @returns {number}
|
||||
*/
|
||||
var timeStop = function(timerName){
|
||||
|
||||
var duration = 0;
|
||||
|
||||
if( stopTimerCache.hasOwnProperty(timerName) ){
|
||||
// check browser support for performance API
|
||||
var timeNow = 0;
|
||||
|
||||
if(typeof performance === 'object'){
|
||||
timeNow = performance.now();
|
||||
}else{
|
||||
timeNow = new Date();
|
||||
}
|
||||
|
||||
// format ms time duration
|
||||
duration = Number( (timeNow - stopTimerCache[timerName] ).toFixed(2) );
|
||||
|
||||
// delete key
|
||||
delete( stopTimerCache[timerName]);
|
||||
}
|
||||
|
||||
return duration;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* trigger main logging event with log information
|
||||
* @param message
|
||||
* @param options
|
||||
*/
|
||||
var log = function(logKey, options){
|
||||
$(window).trigger('pf:log', [logKey, options]);
|
||||
};
|
||||
|
||||
/**
|
||||
* displays a loading indicator on an element
|
||||
@@ -80,10 +159,11 @@ define([
|
||||
$(this).append(overlay);
|
||||
|
||||
// fade in
|
||||
setTimeout(function(){
|
||||
$(overlay).addClass( config.ajaxOverlayVisibleClass );
|
||||
}, 10);
|
||||
|
||||
$(overlay).velocity({
|
||||
opacity: 0.6
|
||||
},{
|
||||
duration: 200
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -92,13 +172,12 @@ define([
|
||||
$.fn.hideLoadingAnimation = function(){
|
||||
|
||||
var overlay = $(this).find('.' + config.ajaxOverlayClass );
|
||||
$(overlay).removeClass( config.ajaxOverlayVisibleClass );
|
||||
|
||||
// remove overlay after fade out transition
|
||||
setTimeout(function(){
|
||||
$(overlay).remove();
|
||||
}, 150);
|
||||
|
||||
$(overlay).velocity('reverse', {
|
||||
complete: function(){
|
||||
$(this).remove();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -151,6 +230,24 @@ define([
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* add a temporary class elements for a certain time
|
||||
* @param className
|
||||
* @param duration
|
||||
* @returns {*}
|
||||
*/
|
||||
$.fn.addTemporaryClass = function(className, duration){
|
||||
|
||||
var elements = this;
|
||||
setTimeout(function() {
|
||||
elements.removeClass(className);
|
||||
}, duration);
|
||||
|
||||
return this.each(function() {
|
||||
$(this).addClass(className);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* trigger a notification (on screen or desktop)
|
||||
* @param customConfig
|
||||
@@ -163,6 +260,21 @@ define([
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* get log entry info
|
||||
* @param logType
|
||||
* @param option
|
||||
* @returns {string}
|
||||
*/
|
||||
var getLogInfo = function(logType, option){
|
||||
var logInfo = '';
|
||||
|
||||
if(Init.classes.logTypes.hasOwnProperty(logType)){
|
||||
logInfo = Init.classes.logTypes[logType][option];
|
||||
}
|
||||
|
||||
return logInfo;
|
||||
};
|
||||
|
||||
// ==================================================================================================
|
||||
|
||||
@@ -195,6 +307,22 @@ define([
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* get the map module object or create a new module
|
||||
* @returns {*|HTMLElement}
|
||||
*/
|
||||
var getMapModule = function(){
|
||||
|
||||
var mapModule = $('#' + config.mapModuleId);
|
||||
if(mapModule.length === 0){
|
||||
mapModule = $('<div>', {
|
||||
id: config.mapModuleId
|
||||
});
|
||||
}
|
||||
|
||||
return mapModule;
|
||||
};
|
||||
|
||||
/**
|
||||
* get all available map icons
|
||||
* @returns {*}
|
||||
@@ -542,7 +670,13 @@ define([
|
||||
};
|
||||
|
||||
return {
|
||||
getServerTime: getServerTime,
|
||||
timeStart: timeStart,
|
||||
timeStop: timeStop,
|
||||
log: log,
|
||||
showNotify: showNotify,
|
||||
getLogInfo: getLogInfo,
|
||||
getMapModule: getMapModule,
|
||||
getMapIcons: getMapIcons,
|
||||
getMapTypes: getMapTypes,
|
||||
getInfoForMap: getInfoForMap,
|
||||
|
||||
@@ -170,7 +170,7 @@ if ( DataTable.TableTools ) {
|
||||
|
||||
// Define as an AMD module if possible
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
define( ['jquery', 'datatables'], factory );
|
||||
define( ['jquery', ''], factory );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// Node/CommonJS
|
||||
41
js/lib/datatables/extensions/TableTools/Readme.txt
Normal file
41
js/lib/datatables/extensions/TableTools/Readme.txt
Normal file
@@ -0,0 +1,41 @@
|
||||
# TableTools
|
||||
|
||||
TableTools is a plug-in for the DataTables HTML table enhancer, which adds a highly customisable button toolbar to a DataTable. Key features include:
|
||||
|
||||
* Copy to clipboard
|
||||
* Save table data as CSV, XLS or PDF files
|
||||
* Print view for clean printing
|
||||
* Row selection options
|
||||
* Easy use predefined buttons
|
||||
* Simple customisation of buttons
|
||||
* Well defined API for advanced control
|
||||
|
||||
|
||||
# Installation
|
||||
|
||||
To use TableTools, first download DataTables ( http://datatables.net/download ) and place the unzipped TableTools package into a `extensions` directory in the DataTables package (in DataTables 1.9- use the `extras` directory). This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser.
|
||||
|
||||
|
||||
# Basic usage
|
||||
|
||||
TableTools is initialised using the `T` option that it adds to DataTables' `dom` option. For example:
|
||||
|
||||
```js
|
||||
$(document).ready( function () {
|
||||
$('#example').DataTable( {
|
||||
dom: 'T<"clear">lfrtip'
|
||||
} );
|
||||
} );
|
||||
```
|
||||
|
||||
|
||||
# Documentation / support
|
||||
|
||||
* Documentation: http://datatables.net/extensions/tabletools/
|
||||
* DataTables support forums: http://datatables.net/forums
|
||||
|
||||
|
||||
# GitHub
|
||||
|
||||
If you fancy getting involved with the development of TableTools and help make it better, please refer to its GitHub repo: https://github.com/DataTables/TableTools
|
||||
|
||||
3215
js/lib/datatables/extensions/TableTools/js/dataTables.tableTools.js
Normal file
3215
js/lib/datatables/extensions/TableTools/js/dataTables.tableTools.js
Normal file
File diff suppressed because it is too large
Load Diff
69
js/lib/datatables/extensions/TableTools/js/dataTables.tableTools.min.js
vendored
Normal file
69
js/lib/datatables/extensions/TableTools/js/dataTables.tableTools.min.js
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
/*!
|
||||
TableTools 2.2.3
|
||||
2009-2014 SpryMedia Ltd - datatables.net/license
|
||||
|
||||
ZeroClipboard 1.0.4
|
||||
Author: Joseph Huckaby - MIT licensed
|
||||
*/
|
||||
var TableTools;
|
||||
(function(n,k,q){var p=function(m,p){var g={version:"1.0.4-TableTools2",clients:{},moviePath:"",nextId:1,$:function(a){"string"==typeof a&&(a=k.getElementById(a));a.addClass||(a.hide=function(){this.style.display="none"},a.show=function(){this.style.display=""},a.addClass=function(a){this.removeClass(a);this.className+=" "+a},a.removeClass=function(a){this.className=this.className.replace(RegExp("\\s*"+a+"\\s*")," ").replace(/^\s+/,"").replace(/\s+$/,"")},a.hasClass=function(a){return!!this.className.match(RegExp("\\s*"+a+
|
||||
"\\s*"))});return a},setMoviePath:function(a){this.moviePath=a},dispatch:function(a,b,c){(a=this.clients[a])&&a.receiveEvent(b,c)},register:function(a,b){this.clients[a]=b},getDOMObjectPosition:function(a){var b={left:0,top:0,width:a.width?a.width:a.offsetWidth,height:a.height?a.height:a.offsetHeight};""!==a.style.width&&(b.width=a.style.width.replace("px",""));""!==a.style.height&&(b.height=a.style.height.replace("px",""));for(;a;)b.left+=a.offsetLeft,b.top+=a.offsetTop,a=a.offsetParent;return b},
|
||||
Client:function(a){this.handlers={};this.id=g.nextId++;this.movieId="ZeroClipboard_TableToolsMovie_"+this.id;g.register(this.id,this);a&&this.glue(a)}};g.Client.prototype={id:0,ready:!1,movie:null,clipText:"",fileName:"",action:"copy",handCursorEnabled:!0,cssEffects:!0,handlers:null,sized:!1,glue:function(a,b){this.domElement=g.$(a);var c=99;this.domElement.style.zIndex&&(c=parseInt(this.domElement.style.zIndex,10)+1);var d=g.getDOMObjectPosition(this.domElement);this.div=k.createElement("div");var f=
|
||||
this.div.style;f.position="absolute";f.left="0px";f.top="0px";f.width=d.width+"px";f.height=d.height+"px";f.zIndex=c;"undefined"!=typeof b&&""!==b&&(this.div.title=b);0!==d.width&&0!==d.height&&(this.sized=!0);this.domElement&&(this.domElement.appendChild(this.div),this.div.innerHTML=this.getHTML(d.width,d.height).replace(/&/g,"&"))},positionElement:function(){var a=g.getDOMObjectPosition(this.domElement),b=this.div.style;b.position="absolute";b.width=a.width+"px";b.height=a.height+"px";0!==a.width&&
|
||||
0!==a.height&&(this.sized=!0,b=this.div.childNodes[0],b.width=a.width,b.height=a.height)},getHTML:function(a,b){var c="",d="id="+this.id+"&width="+a+"&height="+b;if(navigator.userAgent.match(/MSIE/))var f=location.href.match(/^https/i)?"https://":"http://",c=c+('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+f+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+a+'" height="'+b+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+
|
||||
g.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+d+'"/><param name="wmode" value="transparent"/></object>');else c+='<embed id="'+this.movieId+'" src="'+g.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+a+'" height="'+b+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+
|
||||
d+'" wmode="transparent" />';return c},hide:function(){this.div&&(this.div.style.left="-2000px")},show:function(){this.reposition()},destroy:function(){if(this.domElement&&this.div){this.hide();this.div.innerHTML="";var a=k.getElementsByTagName("body")[0];try{a.removeChild(this.div)}catch(b){}this.div=this.domElement=null}},reposition:function(a){a&&((this.domElement=g.$(a))||this.hide());if(this.domElement&&this.div){var a=g.getDOMObjectPosition(this.domElement),b=this.div.style;b.left=""+a.left+
|
||||
"px";b.top=""+a.top+"px"}},clearText:function(){this.clipText="";this.ready&&this.movie.clearText()},appendText:function(a){this.clipText+=a;this.ready&&this.movie.appendText(a)},setText:function(a){this.clipText=a;this.ready&&this.movie.setText(a)},setCharSet:function(a){this.charSet=a;this.ready&&this.movie.setCharSet(a)},setBomInc:function(a){this.incBom=a;this.ready&&this.movie.setBomInc(a)},setFileName:function(a){this.fileName=a;this.ready&&this.movie.setFileName(a)},setAction:function(a){this.action=
|
||||
a;this.ready&&this.movie.setAction(a)},addEventListener:function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");this.handlers[a]||(this.handlers[a]=[]);this.handlers[a].push(b)},setHandCursor:function(a){this.handCursorEnabled=a;this.ready&&this.movie.setHandCursor(a)},setCSSEffects:function(a){this.cssEffects=!!a},receiveEvent:function(a,b){var c,a=a.toString().toLowerCase().replace(/^on/,"");switch(a){case "load":this.movie=k.getElementById(this.movieId);if(!this.movie){c=this;setTimeout(function(){c.receiveEvent("load",
|
||||
null)},1);return}if(!this.ready&&navigator.userAgent.match(/Firefox/)&&navigator.userAgent.match(/Windows/)){c=this;setTimeout(function(){c.receiveEvent("load",null)},100);this.ready=!0;return}this.ready=!0;this.movie.clearText();this.movie.appendText(this.clipText);this.movie.setFileName(this.fileName);this.movie.setAction(this.action);this.movie.setCharSet(this.charSet);this.movie.setBomInc(this.incBom);this.movie.setHandCursor(this.handCursorEnabled);break;case "mouseover":this.domElement&&this.cssEffects&&
|
||||
this.recoverActive&&this.domElement.addClass("active");break;case "mouseout":this.domElement&&this.cssEffects&&(this.recoverActive=!1,this.domElement.hasClass("active")&&(this.domElement.removeClass("active"),this.recoverActive=!0));break;case "mousedown":this.domElement&&this.cssEffects&&this.domElement.addClass("active");break;case "mouseup":this.domElement&&this.cssEffects&&(this.domElement.removeClass("active"),this.recoverActive=!1)}if(this.handlers[a])for(var d=0,f=this.handlers[a].length;d<
|
||||
f;d++){var e=this.handlers[a][d];if("function"==typeof e)e(this,b);else if("object"==typeof e&&2==e.length)e[0][e[1]](this,b);else if("string"==typeof e)n[e](this,b)}}};n.ZeroClipboard_TableTools=g;var e=jQuery;TableTools=function(a,b){!this instanceof TableTools&&alert("Warning: TableTools must be initialised with the keyword 'new'");this.s={that:this,dt:e.fn.dataTable.Api?(new e.fn.dataTable.Api(a)).settings()[0]:a.fnSettings(),print:{saveStart:-1,saveLength:-1,saveScroll:-1,funcEnd:function(){}},
|
||||
buttonCounter:0,select:{type:"",selected:[],preRowSelect:null,postSelected:null,postDeselected:null,all:!1,selectedClass:""},custom:{},swfPath:"",buttonSet:[],master:!1,tags:{}};this.dom={container:null,table:null,print:{hidden:[],message:null},collection:{collection:null,background:null}};this.classes=e.extend(!0,{},TableTools.classes);this.s.dt.bJUI&&e.extend(!0,this.classes,TableTools.classes_themeroller);this.fnSettings=function(){return this.s};"undefined"==typeof b&&(b={});TableTools._aInstances.push(this);
|
||||
this._fnConstruct(b);return this};TableTools.prototype={fnGetSelected:function(a){var b=[],c=this.s.dt.aoData,d=this.s.dt.aiDisplay,f;if(a){a=0;for(f=d.length;a<f;a++)c[d[a]]._DTTT_selected&&b.push(c[d[a]].nTr)}else{a=0;for(f=c.length;a<f;a++)c[a]._DTTT_selected&&b.push(c[a].nTr)}return b},fnGetSelectedData:function(){var a=[],b=this.s.dt.aoData,c,d;c=0;for(d=b.length;c<d;c++)b[c]._DTTT_selected&&a.push(this.s.dt.oInstance.fnGetData(c));return a},fnGetSelectedIndexes:function(a){var b=[],c=this.s.dt.aoData,
|
||||
d=this.s.dt.aiDisplay,f;if(a){a=0;for(f=d.length;a<f;a++)c[d[a]]._DTTT_selected&&b.push(d[a])}else{a=0;for(f=c.length;a<f;a++)c[a]._DTTT_selected&&b.push(a)}return b},fnIsSelected:function(a){a=this.s.dt.oInstance.fnGetPosition(a);return!0===this.s.dt.aoData[a]._DTTT_selected?!0:!1},fnSelectAll:function(a){this._fnRowSelect(a?this.s.dt.aiDisplay:this.s.dt.aoData)},fnSelectNone:function(a){this._fnRowDeselect(this.fnGetSelectedIndexes(a))},fnSelect:function(a){"single"==this.s.select.type&&this.fnSelectNone();
|
||||
this._fnRowSelect(a)},fnDeselect:function(a){this._fnRowDeselect(a)},fnGetTitle:function(a){var b="";"undefined"!=typeof a.sTitle&&""!==a.sTitle?b=a.sTitle:(a=k.getElementsByTagName("title"),0<a.length&&(b=a[0].innerHTML));return 4>"¡".toString().length?b.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""):b.replace(/[^a-zA-Z0-9_\.,\-_ !\(\)]/g,"")},fnCalcColRatios:function(a){var b=this.s.dt.aoColumns,a=this._fnColumnTargets(a.mColumns),c=[],d=0,f=0,e,i;e=0;for(i=a.length;e<i;e++)a[e]&&(d=b[e].nTh.offsetWidth,
|
||||
f+=d,c.push(d));e=0;for(i=c.length;e<i;e++)c[e]/=f;return c.join("\t")},fnGetTableData:function(a){if(this.s.dt)return this._fnGetDataTablesData(a)},fnSetText:function(a,b){this._fnFlashSetText(a,b)},fnResizeButtons:function(){for(var a in g.clients)if(a){var b=g.clients[a];"undefined"!=typeof b.domElement&&b.domElement.parentNode&&b.positionElement()}},fnResizeRequired:function(){for(var a in g.clients)if(a){var b=g.clients[a];if("undefined"!=typeof b.domElement&&b.domElement.parentNode==this.dom.container&&
|
||||
!1===b.sized)return!0}return!1},fnPrint:function(a,b){b===q&&(b={});a===q||a?this._fnPrintStart(b):this._fnPrintEnd()},fnInfo:function(a,b){var c=e("<div/>").addClass(this.classes.print.info).html(a).appendTo("body");setTimeout(function(){c.fadeOut("normal",function(){c.remove()})},b)},fnContainer:function(){return this.dom.container},_fnConstruct:function(a){var b=this;this._fnCustomiseSettings(a);this.dom.container=k.createElement(this.s.tags.container);this.dom.container.className=this.classes.container;
|
||||
"none"!=this.s.select.type&&this._fnRowSelectConfig();this._fnButtonDefinations(this.s.buttonSet,this.dom.container);this.s.dt.aoDestroyCallback.push({sName:"TableTools",fn:function(){e(b.s.dt.nTBody).off("click.DTTT_Select","tr");e(b.dom.container).empty();var a=e.inArray(b,TableTools._aInstances);-1!==a&&TableTools._aInstances.splice(a,1)}})},_fnCustomiseSettings:function(a){"undefined"==typeof this.s.dt._TableToolsInit&&(this.s.master=!0,this.s.dt._TableToolsInit=!0);this.dom.table=this.s.dt.nTable;
|
||||
this.s.custom=e.extend({},TableTools.DEFAULTS,a);this.s.swfPath=this.s.custom.sSwfPath;"undefined"!=typeof g&&(g.moviePath=this.s.swfPath);this.s.select.type=this.s.custom.sRowSelect;this.s.select.preRowSelect=this.s.custom.fnPreRowSelect;this.s.select.postSelected=this.s.custom.fnRowSelected;this.s.select.postDeselected=this.s.custom.fnRowDeselected;this.s.custom.sSelectedClass&&(this.classes.select.row=this.s.custom.sSelectedClass);this.s.tags=this.s.custom.oTags;this.s.buttonSet=this.s.custom.aButtons},
|
||||
_fnButtonDefinations:function(a,b){for(var c,d=0,f=a.length;d<f;d++){if("string"==typeof a[d]){if("undefined"==typeof TableTools.BUTTONS[a[d]]){alert("TableTools: Warning - unknown button type: "+a[d]);continue}c=e.extend({},TableTools.BUTTONS[a[d]],!0)}else{if("undefined"==typeof TableTools.BUTTONS[a[d].sExtends]){alert("TableTools: Warning - unknown button type: "+a[d].sExtends);continue}c=e.extend({},TableTools.BUTTONS[a[d].sExtends],!0);c=e.extend(c,a[d],!0)}(c=this._fnCreateButton(c,e(b).hasClass(this.classes.collection.container)))&&
|
||||
b.appendChild(c)}},_fnCreateButton:function(a,b){var c=this._fnButtonBase(a,b);if(a.sAction.match(/flash/)){if(!this._fnHasFlash())return!1;this._fnFlashConfig(c,a)}else"text"==a.sAction?this._fnTextConfig(c,a):"div"==a.sAction?this._fnTextConfig(c,a):"collection"==a.sAction&&(this._fnTextConfig(c,a),this._fnCollectionConfig(c,a));if(-1!==this.s.dt.iTabIndex)e(c).attr("tabindex",this.s.dt.iTabIndex).attr("aria-controls",this.s.dt.sTableId).on("keyup.DTTT",function(a){13===a.keyCode&&(a.stopPropagation(),
|
||||
e(this).trigger("click"))}).on("mousedown.DTTT",function(b){a.sAction.match(/flash/)||b.preventDefault()});return c},_fnButtonBase:function(a,b){var c,d,f;b?(c=a.sTag&&"default"!==a.sTag?a.sTag:this.s.tags.collection.button,d=a.sLinerTag&&"default"!==a.sLinerTag?a.sLiner:this.s.tags.collection.liner,f=this.classes.collection.buttons.normal):(c=a.sTag&&"default"!==a.sTag?a.sTag:this.s.tags.button,d=a.sLinerTag&&"default"!==a.sLinerTag?a.sLiner:this.s.tags.liner,f=this.classes.buttons.normal);c=k.createElement(c);
|
||||
d=k.createElement(d);var e=this._fnGetMasterSettings();c.className=f+" "+a.sButtonClass;c.setAttribute("id","ToolTables_"+this.s.dt.sInstance+"_"+e.buttonCounter);c.appendChild(d);d.innerHTML=a.sButtonText;e.buttonCounter++;return c},_fnGetMasterSettings:function(){if(this.s.master)return this.s;for(var a=TableTools._aInstances,b=0,c=a.length;b<c;b++)if(this.dom.table==a[b].s.dt.nTable)return a[b].s},_fnCollectionConfig:function(a,b){var c=k.createElement(this.s.tags.collection.container);c.style.display=
|
||||
"none";c.className=this.classes.collection.container;b._collection=c;k.body.appendChild(c);this._fnButtonDefinations(b.aButtons,c)},_fnCollectionShow:function(a,b){var c=this,d=e(a).offset(),f=b._collection,j=d.left,d=d.top+e(a).outerHeight(),i=e(n).height(),h=e(k).height(),o=e(n).width(),g=e(k).width();f.style.position="absolute";f.style.left=j+"px";f.style.top=d+"px";f.style.display="block";e(f).css("opacity",0);var l=k.createElement("div");l.style.position="absolute";l.style.left="0px";l.style.top=
|
||||
"0px";l.style.height=(i>h?i:h)+"px";l.style.width=(o>g?o:g)+"px";l.className=this.classes.collection.background;e(l).css("opacity",0);k.body.appendChild(l);k.body.appendChild(f);i=e(f).outerWidth();o=e(f).outerHeight();j+i>g&&(f.style.left=g-i+"px");d+o>h&&(f.style.top=d-o-e(a).outerHeight()+"px");this.dom.collection.collection=f;this.dom.collection.background=l;setTimeout(function(){e(f).animate({opacity:1},500);e(l).animate({opacity:0.25},500)},10);this.fnResizeButtons();e(l).click(function(){c._fnCollectionHide.call(c,
|
||||
null,null)})},_fnCollectionHide:function(a,b){!(null!==b&&"collection"==b.sExtends)&&null!==this.dom.collection.collection&&(e(this.dom.collection.collection).animate({opacity:0},500,function(){this.style.display="none"}),e(this.dom.collection.background).animate({opacity:0},500,function(){this.parentNode.removeChild(this)}),this.dom.collection.collection=null,this.dom.collection.background=null)},_fnRowSelectConfig:function(){if(this.s.master){var a=this,b=this.s.dt;e(b.nTable).addClass(this.classes.select.table);
|
||||
"os"===this.s.select.type&&(e(b.nTBody).on("mousedown.DTTT_Select","tr",function(a){if(a.shiftKey)e(b.nTBody).css("-moz-user-select","none").one("selectstart.DTTT_Select","tr",function(){return!1})}),e(b.nTBody).on("mouseup.DTTT_Select","tr",function(){e(b.nTBody).css("-moz-user-select","")}));e(b.nTBody).on("click.DTTT_Select",this.s.custom.sRowSelector,function(c){var d=this.nodeName.toLowerCase()==="tr"?this:e(this).parents("tr")[0],f=a.s.select,j=a.s.dt.oInstance.fnGetPosition(d);if(d.parentNode==
|
||||
b.nTBody&&b.oInstance.fnGetData(d)!==null){if(f.type=="os")if(c.ctrlKey||c.metaKey)a.fnIsSelected(d)?a._fnRowDeselect(d,c):a._fnRowSelect(d,c);else if(c.shiftKey){var i=a.s.dt.aiDisplay.slice(),h=e.inArray(f.lastRow,i),o=e.inArray(j,i);if(a.fnGetSelected().length===0||h===-1)i.splice(e.inArray(j,i)+1,i.length);else{if(h>o)var g=o,o=h,h=g;i.splice(o+1,i.length);i.splice(0,h)}if(a.fnIsSelected(d)){i.splice(e.inArray(j,i),1);a._fnRowDeselect(i,c)}else a._fnRowSelect(i,c)}else if(a.fnIsSelected(d)&&a.fnGetSelected().length===
|
||||
1)a._fnRowDeselect(d,c);else{a.fnSelectNone();a._fnRowSelect(d,c)}else if(a.fnIsSelected(d))a._fnRowDeselect(d,c);else if(f.type=="single"){a.fnSelectNone();a._fnRowSelect(d,c)}else f.type=="multi"&&a._fnRowSelect(d,c);f.lastRow=j}});b.oApi._fnCallbackReg(b,"aoRowCreatedCallback",function(c,d,f){b.aoData[f]._DTTT_selected&&e(c).addClass(a.classes.select.row)},"TableTools-SelectAll")}},_fnRowSelect:function(a,b){var c=this._fnSelectData(a),d=[],f,j;f=0;for(j=c.length;f<j;f++)c[f].nTr&&d.push(c[f].nTr);
|
||||
if(null===this.s.select.preRowSelect||this.s.select.preRowSelect.call(this,b,d,!0)){f=0;for(j=c.length;f<j;f++)c[f]._DTTT_selected=!0,c[f].nTr&&e(c[f].nTr).addClass(this.classes.select.row);null!==this.s.select.postSelected&&this.s.select.postSelected.call(this,d);TableTools._fnEventDispatch(this,"select",d,!0)}},_fnRowDeselect:function(a,b){var c=this._fnSelectData(a),d=[],f,j;f=0;for(j=c.length;f<j;f++)c[f].nTr&&d.push(c[f].nTr);if(null===this.s.select.preRowSelect||this.s.select.preRowSelect.call(this,
|
||||
b,d,!1)){f=0;for(j=c.length;f<j;f++)c[f]._DTTT_selected=!1,c[f].nTr&&e(c[f].nTr).removeClass(this.classes.select.row);null!==this.s.select.postDeselected&&this.s.select.postDeselected.call(this,d);TableTools._fnEventDispatch(this,"select",d,!1)}},_fnSelectData:function(a){var b=[],c,d,f;if(a.nodeName)c=this.s.dt.oInstance.fnGetPosition(a),b.push(this.s.dt.aoData[c]);else if("undefined"!==typeof a.length){d=0;for(f=a.length;d<f;d++)a[d].nodeName?(c=this.s.dt.oInstance.fnGetPosition(a[d]),b.push(this.s.dt.aoData[c])):
|
||||
"number"===typeof a[d]?b.push(this.s.dt.aoData[a[d]]):b.push(a[d])}else b.push(a);return b},_fnTextConfig:function(a,b){var c=this;null!==b.fnInit&&b.fnInit.call(this,a,b);""!==b.sToolTip&&(a.title=b.sToolTip);e(a).hover(function(){b.fnMouseover!==null&&b.fnMouseover.call(this,a,b,null)},function(){b.fnMouseout!==null&&b.fnMouseout.call(this,a,b,null)});null!==b.fnSelect&&TableTools._fnEventListen(this,"select",function(d){b.fnSelect.call(c,a,b,d)});e(a).click(function(d){b.fnClick!==null&&b.fnClick.call(c,
|
||||
a,b,null,d);b.fnComplete!==null&&b.fnComplete.call(c,a,b,null,null);c._fnCollectionHide(a,b)})},_fnHasFlash:function(){try{if(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))return!0}catch(a){if(navigator.mimeTypes&&navigator.mimeTypes["application/x-shockwave-flash"]!==q&&navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin)return!0}return!1},_fnFlashConfig:function(a,b){var c=this,d=new g.Client;null!==b.fnInit&&b.fnInit.call(this,a,b);d.setHandCursor(!0);"flash_save"==b.sAction?
|
||||
(d.setAction("save"),d.setCharSet("utf16le"==b.sCharSet?"UTF16LE":"UTF8"),d.setBomInc(b.bBomInc),d.setFileName(b.sFileName.replace("*",this.fnGetTitle(b)))):"flash_pdf"==b.sAction?(d.setAction("pdf"),d.setFileName(b.sFileName.replace("*",this.fnGetTitle(b)))):d.setAction("copy");d.addEventListener("mouseOver",function(){b.fnMouseover!==null&&b.fnMouseover.call(c,a,b,d)});d.addEventListener("mouseOut",function(){b.fnMouseout!==null&&b.fnMouseout.call(c,a,b,d)});d.addEventListener("mouseDown",function(){b.fnClick!==
|
||||
null&&b.fnClick.call(c,a,b,d)});d.addEventListener("complete",function(f,e){b.fnComplete!==null&&b.fnComplete.call(c,a,b,d,e);c._fnCollectionHide(a,b)});this._fnFlashGlue(d,a,b.sToolTip)},_fnFlashGlue:function(a,b,c){var d=this,f=b.getAttribute("id");k.getElementById(f)?a.glue(b,c):setTimeout(function(){d._fnFlashGlue(a,b,c)},100)},_fnFlashSetText:function(a,b){var c=this._fnChunkData(b,8192);a.clearText();for(var d=0,f=c.length;d<f;d++)a.appendText(c[d])},_fnColumnTargets:function(a){var b=[],c=
|
||||
this.s.dt,d,f=c.aoColumns;d=f.length;if("function"==typeof a){a=a.call(this,c);for(c=0;c<d;c++)b.push(-1!==e.inArray(c,a)?!0:!1)}else if("object"==typeof a){for(c=0;c<d;c++)b.push(!1);c=0;for(d=a.length;c<d;c++)b[a[c]]=!0}else if("visible"==a)for(c=0;c<d;c++)b.push(f[c].bVisible?!0:!1);else if("hidden"==a)for(c=0;c<d;c++)b.push(f[c].bVisible?!1:!0);else if("sortable"==a)for(c=0;c<d;c++)b.push(f[c].bSortable?!0:!1);else for(c=0;c<d;c++)b.push(!0);return b},_fnNewline:function(a){return"auto"==a.sNewLine?
|
||||
navigator.userAgent.match(/Windows/)?"\r\n":"\n":a.sNewLine},_fnGetDataTablesData:function(a){var b,c,d,f,j,i=[],h="",g=this.s.dt,k,l=RegExp(a.sFieldBoundary,"g"),n=this._fnColumnTargets(a.mColumns);d="undefined"!=typeof a.bSelectedOnly?a.bSelectedOnly:!1;if(a.bHeader){j=[];b=0;for(c=g.aoColumns.length;b<c;b++)n[b]&&(h=g.aoColumns[b].sTitle.replace(/\n/g," ").replace(/<.*?>/g,"").replace(/^\s+|\s+$/g,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator))}d=
|
||||
!0;var m;f=this.fnGetSelectedIndexes();m=(d="none"!==this.s.select.type&&d&&0!==f.length)?f:p.Api?(new p.Api(g)).rows(a.oSelectorOpts).indexes().flatten().toArray():g.oInstance.$("tr",a.oSelectorOpts).map(function(a,b){return g.oInstance.fnGetPosition(b)}).get();d=0;for(f=m.length;d<f;d++){k=g.aoData[m[d]].nTr;j=[];b=0;for(c=g.aoColumns.length;b<c;b++)n[b]&&(h=g.oApi._fnGetCellData(g,m[d],b,"display"),a.fnCellRender?h=a.fnCellRender(h,b,k,m[d])+"":"string"==typeof h?(h=h.replace(/\n/g," "),h=h.replace(/<img.*?\s+alt\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+)).*?>/gi,
|
||||
"$1$2$3"),h=h.replace(/<.*?>/g,"")):h+="",h=h.replace(/^\s+/,"").replace(/\s+$/,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator));a.bOpenRows&&(b=e.grep(g.aoOpenRows,function(a){return a.nParent===k}),1===b.length&&(h=this._fnBoundData(e("td",b[0].nTr).html(),a.sFieldBoundary,l),i.push(h)))}if(a.bFooter&&null!==g.nTFoot){j=[];b=0;for(c=g.aoColumns.length;b<c;b++)n[b]&&null!==g.aoColumns[b].nTf&&(h=g.aoColumns[b].nTf.innerHTML.replace(/\n/g,
|
||||
" ").replace(/<.*?>/g,""),h=this._fnHtmlDecode(h),j.push(this._fnBoundData(h,a.sFieldBoundary,l)));i.push(j.join(a.sFieldSeperator))}return i.join(this._fnNewline(a))},_fnBoundData:function(a,b,c){return""===b?a:b+a.replace(c,b+b)+b},_fnChunkData:function(a,b){for(var c=[],d=a.length,f=0;f<d;f+=b)f+b<d?c.push(a.substring(f,f+b)):c.push(a.substring(f,d));return c},_fnHtmlDecode:function(a){if(-1===a.indexOf("&"))return a;var b=k.createElement("div");return a.replace(/&([^\s]*?);/g,function(a,d){if("#"===
|
||||
a.substr(1,1))return String.fromCharCode(Number(d.substr(1)));b.innerHTML=a;return b.childNodes[0].nodeValue})},_fnPrintStart:function(a){var b=this,c=this.s.dt;this._fnPrintHideNodes(c.nTable);this.s.print.saveStart=c._iDisplayStart;this.s.print.saveLength=c._iDisplayLength;a.bShowAll&&(c._iDisplayStart=0,c._iDisplayLength=-1,c.oApi._fnCalculateEnd&&c.oApi._fnCalculateEnd(c),c.oApi._fnDraw(c));if(""!==c.oScroll.sX||""!==c.oScroll.sY)this._fnPrintScrollStart(c),e(this.s.dt.nTable).bind("draw.DTTT_Print",
|
||||
function(){b._fnPrintScrollStart(c)});var d=c.aanFeatures,f;for(f in d)if("i"!=f&&"t"!=f&&1==f.length)for(var g=0,i=d[f].length;g<i;g++)this.dom.print.hidden.push({node:d[f][g],display:"block"}),d[f][g].style.display="none";e(k.body).addClass(this.classes.print.body);""!==a.sInfo&&this.fnInfo(a.sInfo,3E3);a.sMessage&&e("<div/>").addClass(this.classes.print.message).html(a.sMessage).prependTo("body");this.s.print.saveScroll=e(n).scrollTop();n.scrollTo(0,0);e(k).bind("keydown.DTTT",function(a){if(a.keyCode==
|
||||
27){a.preventDefault();b._fnPrintEnd.call(b,a)}})},_fnPrintEnd:function(){var a=this.s.dt,b=this.s.print;this._fnPrintShowNodes();if(""!==a.oScroll.sX||""!==a.oScroll.sY)e(this.s.dt.nTable).unbind("draw.DTTT_Print"),this._fnPrintScrollEnd();n.scrollTo(0,b.saveScroll);e("div."+this.classes.print.message).remove();e(k.body).removeClass("DTTT_Print");a._iDisplayStart=b.saveStart;a._iDisplayLength=b.saveLength;a.oApi._fnCalculateEnd&&a.oApi._fnCalculateEnd(a);a.oApi._fnDraw(a);e(k).unbind("keydown.DTTT")},
|
||||
_fnPrintScrollStart:function(){var a=this.s.dt;a.nScrollHead.getElementsByTagName("div")[0].getElementsByTagName("table");var b=a.nTable.parentNode,c;c=a.nTable.getElementsByTagName("thead");0<c.length&&a.nTable.removeChild(c[0]);null!==a.nTFoot&&(c=a.nTable.getElementsByTagName("tfoot"),0<c.length&&a.nTable.removeChild(c[0]));c=a.nTHead.cloneNode(!0);a.nTable.insertBefore(c,a.nTable.childNodes[0]);null!==a.nTFoot&&(c=a.nTFoot.cloneNode(!0),a.nTable.insertBefore(c,a.nTable.childNodes[1]));""!==a.oScroll.sX&&
|
||||
(a.nTable.style.width=e(a.nTable).outerWidth()+"px",b.style.width=e(a.nTable).outerWidth()+"px",b.style.overflow="visible");""!==a.oScroll.sY&&(b.style.height=e(a.nTable).outerHeight()+"px",b.style.overflow="visible")},_fnPrintScrollEnd:function(){var a=this.s.dt,b=a.nTable.parentNode;""!==a.oScroll.sX&&(b.style.width=a.oApi._fnStringToCss(a.oScroll.sX),b.style.overflow="auto");""!==a.oScroll.sY&&(b.style.height=a.oApi._fnStringToCss(a.oScroll.sY),b.style.overflow="auto")},_fnPrintShowNodes:function(){for(var a=
|
||||
this.dom.print.hidden,b=0,c=a.length;b<c;b++)a[b].node.style.display=a[b].display;a.splice(0,a.length)},_fnPrintHideNodes:function(a){for(var b=this.dom.print.hidden,c=a.parentNode,d=c.childNodes,f=0,g=d.length;f<g;f++)if(d[f]!=a&&1==d[f].nodeType){var i=e(d[f]).css("display");"none"!=i&&(b.push({node:d[f],display:i}),d[f].style.display="none")}"BODY"!=c.nodeName.toUpperCase()&&this._fnPrintHideNodes(c)}};TableTools._aInstances=[];TableTools._aListeners=[];TableTools.fnGetMasters=function(){for(var a=
|
||||
[],b=0,c=TableTools._aInstances.length;b<c;b++)TableTools._aInstances[b].s.master&&a.push(TableTools._aInstances[b]);return a};TableTools.fnGetInstance=function(a){"object"!=typeof a&&(a=k.getElementById(a));for(var b=0,c=TableTools._aInstances.length;b<c;b++)if(TableTools._aInstances[b].s.master&&TableTools._aInstances[b].dom.table==a)return TableTools._aInstances[b];return null};TableTools._fnEventListen=function(a,b,c){TableTools._aListeners.push({that:a,type:b,fn:c})};TableTools._fnEventDispatch=
|
||||
function(a,b,c,d){for(var f=TableTools._aListeners,e=0,g=f.length;e<g;e++)a.dom.table==f[e].that.dom.table&&f[e].type==b&&f[e].fn(c,d)};TableTools.buttonBase={sAction:"text",sTag:"default",sLinerTag:"default",sButtonClass:"DTTT_button_text",sButtonText:"Button text",sTitle:"",sToolTip:"",sCharSet:"utf8",bBomInc:!1,sFileName:"*.csv",sFieldBoundary:"",sFieldSeperator:"\t",sNewLine:"auto",mColumns:"all",bHeader:!0,bFooter:!0,bOpenRows:!1,bSelectedOnly:!1,oSelectorOpts:q,fnMouseover:null,fnMouseout:null,
|
||||
fnClick:null,fnSelect:null,fnComplete:null,fnInit:null,fnCellRender:null};TableTools.BUTTONS={csv:e.extend({},TableTools.buttonBase,{sAction:"flash_save",sButtonClass:"DTTT_button_csv",sButtonText:"CSV",sFieldBoundary:'"',sFieldSeperator:",",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))}}),xls:e.extend({},TableTools.buttonBase,{sAction:"flash_save",sCharSet:"utf16le",bBomInc:!0,sButtonClass:"DTTT_button_xls",sButtonText:"Excel",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))}}),
|
||||
copy:e.extend({},TableTools.buttonBase,{sAction:"flash_copy",sButtonClass:"DTTT_button_copy",sButtonText:"Copy",fnClick:function(a,b,c){this.fnSetText(c,this.fnGetTableData(b))},fnComplete:function(a,b,c,d){a=d.split("\n").length;b.bHeader&&a--;null!==this.s.dt.nTFoot&&b.bFooter&&a--;this.fnInfo("<h6>Table copied</h6><p>Copied "+a+" row"+(1==a?"":"s")+" to the clipboard.</p>",1500)}}),pdf:e.extend({},TableTools.buttonBase,{sAction:"flash_pdf",sNewLine:"\n",sFileName:"*.pdf",sButtonClass:"DTTT_button_pdf",
|
||||
sButtonText:"PDF",sPdfOrientation:"portrait",sPdfSize:"A4",sPdfMessage:"",fnClick:function(a,b,c){this.fnSetText(c,"title:"+this.fnGetTitle(b)+"\nmessage:"+b.sPdfMessage+"\ncolWidth:"+this.fnCalcColRatios(b)+"\norientation:"+b.sPdfOrientation+"\nsize:"+b.sPdfSize+"\n--/TableToolsOpts--\n"+this.fnGetTableData(b))}}),print:e.extend({},TableTools.buttonBase,{sInfo:"<h6>Print view</h6><p>Please use your browser's print function to print this table. Press escape when finished.</p>",sMessage:null,bShowAll:!0,
|
||||
sToolTip:"View print view",sButtonClass:"DTTT_button_print",sButtonText:"Print",fnClick:function(a,b){this.fnPrint(!0,b)}}),text:e.extend({},TableTools.buttonBase),select:e.extend({},TableTools.buttonBase,{sButtonText:"Select button",fnSelect:function(a){0!==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),select_single:e.extend({},TableTools.buttonBase,{sButtonText:"Select button",
|
||||
fnSelect:function(a){1==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),select_all:e.extend({},TableTools.buttonBase,{sButtonText:"Select all",fnClick:function(){this.fnSelectAll()},fnSelect:function(a){this.fnGetSelected().length==this.s.dt.fnRecordsDisplay()?e(a).addClass(this.classes.buttons.disabled):e(a).removeClass(this.classes.buttons.disabled)}}),select_none:e.extend({},
|
||||
TableTools.buttonBase,{sButtonText:"Deselect all",fnClick:function(){this.fnSelectNone()},fnSelect:function(a){0!==this.fnGetSelected().length?e(a).removeClass(this.classes.buttons.disabled):e(a).addClass(this.classes.buttons.disabled)},fnInit:function(a){e(a).addClass(this.classes.buttons.disabled)}}),ajax:e.extend({},TableTools.buttonBase,{sAjaxUrl:"/xhr.php",sButtonText:"Ajax button",fnClick:function(a,b){var c=this.fnGetTableData(b);e.ajax({url:b.sAjaxUrl,data:[{name:"tableData",value:c}],success:b.fnAjaxComplete,
|
||||
dataType:"json",type:"POST",cache:!1,error:function(){alert("Error detected when sending table data to server")}})},fnAjaxComplete:function(){alert("Ajax complete")}}),div:e.extend({},TableTools.buttonBase,{sAction:"div",sTag:"div",sButtonClass:"DTTT_nonbutton",sButtonText:"Text button"}),collection:e.extend({},TableTools.buttonBase,{sAction:"collection",sButtonClass:"DTTT_button_collection",sButtonText:"Collection",fnClick:function(a,b){this._fnCollectionShow(a,b)}})};TableTools.buttons=TableTools.BUTTONS;
|
||||
TableTools.classes={container:"DTTT_container",buttons:{normal:"DTTT_button",disabled:"DTTT_disabled"},collection:{container:"DTTT_collection",background:"DTTT_collection_background",buttons:{normal:"DTTT_button",disabled:"DTTT_disabled"}},select:{table:"DTTT_selectable",row:"DTTT_selected selected"},print:{body:"DTTT_Print",info:"DTTT_print_info",message:"DTTT_PrintMessage"}};TableTools.classes_themeroller={container:"DTTT_container ui-buttonset ui-buttonset-multi",buttons:{normal:"DTTT_button ui-button ui-state-default"},
|
||||
collection:{container:"DTTT_collection ui-buttonset ui-buttonset-multi"}};TableTools.DEFAULTS={sSwfPath:"../swf/copy_csv_xls_pdf.swf",sRowSelect:"none",sRowSelector:"tr",sSelectedClass:null,fnPreRowSelect:null,fnRowSelected:null,fnRowDeselected:null,aButtons:["copy","csv","xls","pdf","print"],oTags:{container:"div",button:"a",liner:"span",collection:{container:"div",button:"a",liner:"span"}}};TableTools.defaults=TableTools.DEFAULTS;TableTools.prototype.CLASS="TableTools";TableTools.version="2.2.3";
|
||||
e.fn.dataTable.Api&&e.fn.dataTable.Api.register("tabletools()",function(){var a=null;0<this.context.length&&(a=TableTools.fnGetInstance(this.context[0].nTable));return a});"function"==typeof e.fn.dataTable&&"function"==typeof e.fn.dataTableExt.fnVersionCheck&&e.fn.dataTableExt.fnVersionCheck("1.9.0")?e.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInit;return(new TableTools(a.oInstance,b?b.tableTools||b.oTableTools||{}:{})).dom.container},cFeature:"T",sFeature:"TableTools"}):alert("Warning: TableTools requires DataTables 1.9.0 or newer - www.datatables.net/download");
|
||||
e.fn.DataTable.TableTools=TableTools;"function"==typeof m.fn.dataTable&&"function"==typeof m.fn.dataTableExt.fnVersionCheck&&m.fn.dataTableExt.fnVersionCheck("1.9.0")?m.fn.dataTableExt.aoFeatures.push({fnInit:function(a){a=new TableTools(a.oInstance,"undefined"!=typeof a.oInit.oTableTools?a.oInit.oTableTools:{});TableTools._aInstances.push(a);return a.dom.container},cFeature:"T",sFeature:"TableTools"}):alert("Warning: TableTools 2 requires DataTables 1.9.0 or newer - www.datatables.net/download");
|
||||
m.fn.dataTable.TableTools=TableTools;return m.fn.DataTable.TableTools=TableTools};"function"===typeof define&&define.amd?define(["jquery","datatables"],p):"object"===typeof exports?p(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.TableTools&&p(jQuery,jQuery.fn.dataTable)})(window,document);
|
||||
BIN
js/lib/datatables/extensions/TableTools/swf/copy_csv_xls.swf
Normal file
BIN
js/lib/datatables/extensions/TableTools/swf/copy_csv_xls.swf
Normal file
Binary file not shown.
BIN
js/lib/datatables/extensions/TableTools/swf/copy_csv_xls_pdf.swf
Normal file
BIN
js/lib/datatables/extensions/TableTools/swf/copy_csv_xls_pdf.swf
Normal file
Binary file not shown.
4
js/lib/jquery-1.11.1.min.js
vendored
4
js/lib/jquery-1.11.1.min.js
vendored
File diff suppressed because one or more lines are too long
4
js/lib/jquery-1.11.2.min.js
vendored
Normal file
4
js/lib/jquery-1.11.2.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
9
js/lib/jquery.ba-throttle-debounce.min.js
vendored
9
js/lib/jquery.ba-throttle-debounce.min.js
vendored
@@ -1,9 +0,0 @@
|
||||
/*
|
||||
* jQuery throttle / debounce - v1.1 - 3/7/2010
|
||||
* http://benalman.com/projects/jquery-throttle-debounce-plugin/
|
||||
*
|
||||
* Copyright (c) 2010 "Cowboy" Ben Alman
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
* http://benalman.com/about/license/
|
||||
*/
|
||||
(function(b,c){var $=b.jQuery||b.Cowboy||(b.Cowboy={}),a;$.throttle=a=function(e,f,j,i){var h,d=0;if(typeof f!=="boolean"){i=j;j=f;f=c}function g(){var o=this,m=+new Date()-d,n=arguments;function l(){d=+new Date();j.apply(o,n)}function k(){h=c}if(i&&!h){l()}h&&clearTimeout(h);if(i===c&&m>e){l()}else{if(f!==true){h=setTimeout(i?k:l,i===c?e-m:e)}}}if($.guid){g.guid=j.guid=j.guid||$.guid++}return g};$.debounce=function(d,e,f){return f===c?a(d,e,false):a(d,f,e!==false)}})(this);
|
||||
@@ -339,7 +339,6 @@ jQuery.fn.dragToSelect = function (conf) {
|
||||
e.target === realParent[0] // prevent while dragging a system :)
|
||||
){
|
||||
|
||||
|
||||
// Make sure user isn't clicking scrollbar (or disallow clicks far to the right actually)
|
||||
if ((e.pageX + 20) > jQuery(document.body).width()) {
|
||||
return;
|
||||
@@ -368,7 +367,7 @@ jQuery.fn.dragToSelect = function (conf) {
|
||||
|
||||
e.preventDefault();
|
||||
};
|
||||
parent.mousemove($.throttle(30, dragSelectMousemove) );
|
||||
parent.mousemove( dragSelectMousemove );
|
||||
|
||||
|
||||
parent.mouseup(function (e) {
|
||||
|
||||
@@ -1,578 +0,0 @@
|
||||
/*!
|
||||
* mustache.js - Logic-less {{mustache}} templates with JavaScript
|
||||
* http://github.com/janl/mustache.js
|
||||
*/
|
||||
|
||||
/*global define: false*/
|
||||
|
||||
(function (global, factory) {
|
||||
if (typeof exports === "object" && exports) {
|
||||
factory(exports); // CommonJS
|
||||
} else if (typeof define === "function" && define.amd) {
|
||||
define(['exports'], factory); // AMD
|
||||
} else {
|
||||
factory(global.Mustache = {}); // <script>
|
||||
}
|
||||
}(this, function (mustache) {
|
||||
|
||||
var Object_toString = Object.prototype.toString;
|
||||
var isArray = Array.isArray || function (object) {
|
||||
return Object_toString.call(object) === '[object Array]';
|
||||
};
|
||||
|
||||
function isFunction(object) {
|
||||
return typeof object === 'function';
|
||||
}
|
||||
|
||||
function escapeRegExp(string) {
|
||||
return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
|
||||
}
|
||||
|
||||
// Workaround for https://issues.apache.org/jira/browse/COUCHDB-577
|
||||
// See https://github.com/janl/mustache.js/issues/189
|
||||
var RegExp_test = RegExp.prototype.test;
|
||||
function testRegExp(re, string) {
|
||||
return RegExp_test.call(re, string);
|
||||
}
|
||||
|
||||
var nonSpaceRe = /\S/;
|
||||
function isWhitespace(string) {
|
||||
return !testRegExp(nonSpaceRe, string);
|
||||
}
|
||||
|
||||
var entityMap = {
|
||||
"&": "&",
|
||||
"<": "<",
|
||||
">": ">",
|
||||
'"': '"',
|
||||
"'": ''',
|
||||
"/": '/'
|
||||
};
|
||||
|
||||
function escapeHtml(string) {
|
||||
return String(string).replace(/[&<>"'\/]/g, function (s) {
|
||||
return entityMap[s];
|
||||
});
|
||||
}
|
||||
|
||||
var whiteRe = /\s*/;
|
||||
var spaceRe = /\s+/;
|
||||
var equalsRe = /\s*=/;
|
||||
var curlyRe = /\s*\}/;
|
||||
var tagRe = /#|\^|\/|>|\{|&|=|!/;
|
||||
|
||||
/**
|
||||
* Breaks up the given `template` string into a tree of tokens. If the `tags`
|
||||
* argument is given here it must be an array with two string values: the
|
||||
* opening and closing tags used in the template (e.g. [ "<%", "%>" ]). Of
|
||||
* course, the default is to use mustaches (i.e. mustache.tags).
|
||||
*
|
||||
* A token is an array with at least 4 elements. The first element is the
|
||||
* mustache symbol that was used inside the tag, e.g. "#" or "&". If the tag
|
||||
* did not contain a symbol (i.e. {{myValue}}) this element is "name". For
|
||||
* all text that appears outside a symbol this element is "text".
|
||||
*
|
||||
* The second element of a token is its "value". For mustache tags this is
|
||||
* whatever else was inside the tag besides the opening symbol. For text tokens
|
||||
* this is the text itself.
|
||||
*
|
||||
* The third and fourth elements of the token are the start and end indices,
|
||||
* respectively, of the token in the original template.
|
||||
*
|
||||
* Tokens that are the root node of a subtree contain two more elements: 1) an
|
||||
* array of tokens in the subtree and 2) the index in the original template at
|
||||
* which the closing tag for that section begins.
|
||||
*/
|
||||
function parseTemplate(template, tags) {
|
||||
if (!template)
|
||||
return [];
|
||||
|
||||
var sections = []; // Stack to hold section tokens
|
||||
var tokens = []; // Buffer to hold the tokens
|
||||
var spaces = []; // Indices of whitespace tokens on the current line
|
||||
var hasTag = false; // Is there a {{tag}} on the current line?
|
||||
var nonSpace = false; // Is there a non-space char on the current line?
|
||||
|
||||
// Strips all whitespace tokens array for the current line
|
||||
// if there was a {{#tag}} on it and otherwise only space.
|
||||
function stripSpace() {
|
||||
if (hasTag && !nonSpace) {
|
||||
while (spaces.length)
|
||||
delete tokens[spaces.pop()];
|
||||
} else {
|
||||
spaces = [];
|
||||
}
|
||||
|
||||
hasTag = false;
|
||||
nonSpace = false;
|
||||
}
|
||||
|
||||
var openingTagRe, closingTagRe, closingCurlyRe;
|
||||
function compileTags(tags) {
|
||||
if (typeof tags === 'string')
|
||||
tags = tags.split(spaceRe, 2);
|
||||
|
||||
if (!isArray(tags) || tags.length !== 2)
|
||||
throw new Error('Invalid tags: ' + tags);
|
||||
|
||||
openingTagRe = new RegExp(escapeRegExp(tags[0]) + '\\s*');
|
||||
closingTagRe = new RegExp('\\s*' + escapeRegExp(tags[1]));
|
||||
closingCurlyRe = new RegExp('\\s*' + escapeRegExp('}' + tags[1]));
|
||||
}
|
||||
|
||||
compileTags(tags || mustache.tags);
|
||||
|
||||
var scanner = new Scanner(template);
|
||||
|
||||
var start, type, value, chr, token, openSection;
|
||||
while (!scanner.eos()) {
|
||||
start = scanner.pos;
|
||||
|
||||
// Match any text between tags.
|
||||
value = scanner.scanUntil(openingTagRe);
|
||||
|
||||
if (value) {
|
||||
for (var i = 0, valueLength = value.length; i < valueLength; ++i) {
|
||||
chr = value.charAt(i);
|
||||
|
||||
if (isWhitespace(chr)) {
|
||||
spaces.push(tokens.length);
|
||||
} else {
|
||||
nonSpace = true;
|
||||
}
|
||||
|
||||
tokens.push([ 'text', chr, start, start + 1 ]);
|
||||
start += 1;
|
||||
|
||||
// Check for whitespace on the current line.
|
||||
if (chr === '\n')
|
||||
stripSpace();
|
||||
}
|
||||
}
|
||||
|
||||
// Match the opening tag.
|
||||
if (!scanner.scan(openingTagRe))
|
||||
break;
|
||||
|
||||
hasTag = true;
|
||||
|
||||
// Get the tag type.
|
||||
type = scanner.scan(tagRe) || 'name';
|
||||
scanner.scan(whiteRe);
|
||||
|
||||
// Get the tag value.
|
||||
if (type === '=') {
|
||||
value = scanner.scanUntil(equalsRe);
|
||||
scanner.scan(equalsRe);
|
||||
scanner.scanUntil(closingTagRe);
|
||||
} else if (type === '{') {
|
||||
value = scanner.scanUntil(closingCurlyRe);
|
||||
scanner.scan(curlyRe);
|
||||
scanner.scanUntil(closingTagRe);
|
||||
type = '&';
|
||||
} else {
|
||||
value = scanner.scanUntil(closingTagRe);
|
||||
}
|
||||
|
||||
// Match the closing tag.
|
||||
if (!scanner.scan(closingTagRe))
|
||||
throw new Error('Unclosed tag at ' + scanner.pos);
|
||||
|
||||
token = [ type, value, start, scanner.pos ];
|
||||
tokens.push(token);
|
||||
|
||||
if (type === '#' || type === '^') {
|
||||
sections.push(token);
|
||||
} else if (type === '/') {
|
||||
// Check section nesting.
|
||||
openSection = sections.pop();
|
||||
|
||||
if (!openSection)
|
||||
throw new Error('Unopened section "' + value + '" at ' + start);
|
||||
|
||||
if (openSection[1] !== value)
|
||||
throw new Error('Unclosed section "' + openSection[1] + '" at ' + start);
|
||||
} else if (type === 'name' || type === '{' || type === '&') {
|
||||
nonSpace = true;
|
||||
} else if (type === '=') {
|
||||
// Set the tags for the next time around.
|
||||
compileTags(value);
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure there are no open sections when we're done.
|
||||
openSection = sections.pop();
|
||||
|
||||
if (openSection)
|
||||
throw new Error('Unclosed section "' + openSection[1] + '" at ' + scanner.pos);
|
||||
|
||||
return nestTokens(squashTokens(tokens));
|
||||
}
|
||||
|
||||
/**
|
||||
* Combines the values of consecutive text tokens in the given `tokens` array
|
||||
* to a single token.
|
||||
*/
|
||||
function squashTokens(tokens) {
|
||||
var squashedTokens = [];
|
||||
|
||||
var token, lastToken;
|
||||
for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
|
||||
token = tokens[i];
|
||||
|
||||
if (token) {
|
||||
if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {
|
||||
lastToken[1] += token[1];
|
||||
lastToken[3] = token[3];
|
||||
} else {
|
||||
squashedTokens.push(token);
|
||||
lastToken = token;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return squashedTokens;
|
||||
}
|
||||
|
||||
/**
|
||||
* Forms the given array of `tokens` into a nested tree structure where
|
||||
* tokens that represent a section have two additional items: 1) an array of
|
||||
* all tokens that appear in that section and 2) the index in the original
|
||||
* template that represents the end of that section.
|
||||
*/
|
||||
function nestTokens(tokens) {
|
||||
var nestedTokens = [];
|
||||
var collector = nestedTokens;
|
||||
var sections = [];
|
||||
|
||||
var token, section;
|
||||
for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
|
||||
token = tokens[i];
|
||||
|
||||
switch (token[0]) {
|
||||
case '#':
|
||||
case '^':
|
||||
collector.push(token);
|
||||
sections.push(token);
|
||||
collector = token[4] = [];
|
||||
break;
|
||||
case '/':
|
||||
section = sections.pop();
|
||||
section[5] = token[2];
|
||||
collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;
|
||||
break;
|
||||
default:
|
||||
collector.push(token);
|
||||
}
|
||||
}
|
||||
|
||||
return nestedTokens;
|
||||
}
|
||||
|
||||
/**
|
||||
* A simple string scanner that is used by the template parser to find
|
||||
* tokens in template strings.
|
||||
*/
|
||||
function Scanner(string) {
|
||||
this.string = string;
|
||||
this.tail = string;
|
||||
this.pos = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns `true` if the tail is empty (end of string).
|
||||
*/
|
||||
Scanner.prototype.eos = function () {
|
||||
return this.tail === "";
|
||||
};
|
||||
|
||||
/**
|
||||
* Tries to match the given regular expression at the current position.
|
||||
* Returns the matched text if it can match, the empty string otherwise.
|
||||
*/
|
||||
Scanner.prototype.scan = function (re) {
|
||||
var match = this.tail.match(re);
|
||||
|
||||
if (!match || match.index !== 0)
|
||||
return '';
|
||||
|
||||
var string = match[0];
|
||||
|
||||
this.tail = this.tail.substring(string.length);
|
||||
this.pos += string.length;
|
||||
|
||||
return string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Skips all text until the given regular expression can be matched. Returns
|
||||
* the skipped string, which is the entire tail if no match can be made.
|
||||
*/
|
||||
Scanner.prototype.scanUntil = function (re) {
|
||||
var index = this.tail.search(re), match;
|
||||
|
||||
switch (index) {
|
||||
case -1:
|
||||
match = this.tail;
|
||||
this.tail = "";
|
||||
break;
|
||||
case 0:
|
||||
match = "";
|
||||
break;
|
||||
default:
|
||||
match = this.tail.substring(0, index);
|
||||
this.tail = this.tail.substring(index);
|
||||
}
|
||||
|
||||
this.pos += match.length;
|
||||
|
||||
return match;
|
||||
};
|
||||
|
||||
/**
|
||||
* Represents a rendering context by wrapping a view object and
|
||||
* maintaining a reference to the parent context.
|
||||
*/
|
||||
function Context(view, parentContext) {
|
||||
this.view = view == null ? {} : view;
|
||||
this.cache = { '.': this.view };
|
||||
this.parent = parentContext;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new context using the given view with this context
|
||||
* as the parent.
|
||||
*/
|
||||
Context.prototype.push = function (view) {
|
||||
return new Context(view, this);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the value of the given name in this context, traversing
|
||||
* up the context hierarchy if the value is absent in this context's view.
|
||||
*/
|
||||
Context.prototype.lookup = function (name) {
|
||||
var cache = this.cache;
|
||||
|
||||
var value;
|
||||
if (name in cache) {
|
||||
value = cache[name];
|
||||
} else {
|
||||
var context = this, names, index;
|
||||
|
||||
while (context) {
|
||||
if (name.indexOf('.') > 0) {
|
||||
value = context.view;
|
||||
names = name.split('.');
|
||||
index = 0;
|
||||
|
||||
while (value != null && index < names.length)
|
||||
value = value[names[index++]];
|
||||
} else {
|
||||
value = context.view[name];
|
||||
}
|
||||
|
||||
if (value != null)
|
||||
break;
|
||||
|
||||
context = context.parent;
|
||||
}
|
||||
|
||||
cache[name] = value;
|
||||
}
|
||||
|
||||
if (isFunction(value))
|
||||
value = value.call(this.view);
|
||||
|
||||
return value;
|
||||
};
|
||||
|
||||
/**
|
||||
* A Writer knows how to take a stream of tokens and render them to a
|
||||
* string, given a context. It also maintains a cache of templates to
|
||||
* avoid the need to parse the same template twice.
|
||||
*/
|
||||
function Writer() {
|
||||
this.cache = {};
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears all cached templates in this writer.
|
||||
*/
|
||||
Writer.prototype.clearCache = function () {
|
||||
this.cache = {};
|
||||
};
|
||||
|
||||
/**
|
||||
* Parses and caches the given `template` and returns the array of tokens
|
||||
* that is generated from the parse.
|
||||
*/
|
||||
Writer.prototype.parse = function (template, tags) {
|
||||
var cache = this.cache;
|
||||
var tokens = cache[template];
|
||||
|
||||
if (tokens == null)
|
||||
tokens = cache[template] = parseTemplate(template, tags);
|
||||
|
||||
return tokens;
|
||||
};
|
||||
|
||||
/**
|
||||
* High-level method that is used to render the given `template` with
|
||||
* the given `view`.
|
||||
*
|
||||
* The optional `partials` argument may be an object that contains the
|
||||
* names and templates of partials that are used in the template. It may
|
||||
* also be a function that is used to load partial templates on the fly
|
||||
* that takes a single argument: the name of the partial.
|
||||
*/
|
||||
Writer.prototype.render = function (template, view, partials) {
|
||||
var tokens = this.parse(template);
|
||||
var context = (view instanceof Context) ? view : new Context(view);
|
||||
return this.renderTokens(tokens, context, partials, template);
|
||||
};
|
||||
|
||||
/**
|
||||
* Low-level method that renders the given array of `tokens` using
|
||||
* the given `context` and `partials`.
|
||||
*
|
||||
* Note: The `originalTemplate` is only ever used to extract the portion
|
||||
* of the original template that was contained in a higher-order section.
|
||||
* If the template doesn't use higher-order sections, this argument may
|
||||
* be omitted.
|
||||
*/
|
||||
Writer.prototype.renderTokens = function (tokens, context, partials, originalTemplate) {
|
||||
var buffer = '';
|
||||
|
||||
// This function is used to render an arbitrary template
|
||||
// in the current context by higher-order sections.
|
||||
var self = this;
|
||||
function subRender(template) {
|
||||
return self.render(template, context, partials);
|
||||
}
|
||||
|
||||
var token, value;
|
||||
for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
|
||||
token = tokens[i];
|
||||
|
||||
switch (token[0]) {
|
||||
case '#':
|
||||
value = context.lookup(token[1]);
|
||||
|
||||
if (!value)
|
||||
continue;
|
||||
|
||||
if (isArray(value)) {
|
||||
for (var j = 0, valueLength = value.length; j < valueLength; ++j) {
|
||||
buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);
|
||||
}
|
||||
} else if (typeof value === 'object' || typeof value === 'string') {
|
||||
buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);
|
||||
} else if (isFunction(value)) {
|
||||
if (typeof originalTemplate !== 'string')
|
||||
throw new Error('Cannot use higher-order sections without the original template');
|
||||
|
||||
// Extract the portion of the original template that the section contains.
|
||||
value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);
|
||||
|
||||
if (value != null)
|
||||
buffer += value;
|
||||
} else {
|
||||
buffer += this.renderTokens(token[4], context, partials, originalTemplate);
|
||||
}
|
||||
|
||||
break;
|
||||
case '^':
|
||||
value = context.lookup(token[1]);
|
||||
|
||||
// Use JavaScript's definition of falsy. Include empty arrays.
|
||||
// See https://github.com/janl/mustache.js/issues/186
|
||||
if (!value || (isArray(value) && value.length === 0))
|
||||
buffer += this.renderTokens(token[4], context, partials, originalTemplate);
|
||||
|
||||
break;
|
||||
case '>':
|
||||
if (!partials)
|
||||
continue;
|
||||
|
||||
value = isFunction(partials) ? partials(token[1]) : partials[token[1]];
|
||||
|
||||
if (value != null)
|
||||
buffer += this.renderTokens(this.parse(value), context, partials, value);
|
||||
|
||||
break;
|
||||
case '&':
|
||||
value = context.lookup(token[1]);
|
||||
|
||||
if (value != null)
|
||||
buffer += value;
|
||||
|
||||
break;
|
||||
case 'name':
|
||||
value = context.lookup(token[1]);
|
||||
|
||||
if (value != null)
|
||||
buffer += mustache.escape(value);
|
||||
|
||||
break;
|
||||
case 'text':
|
||||
buffer += token[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return buffer;
|
||||
};
|
||||
|
||||
mustache.name = "mustache.js";
|
||||
mustache.version = "0.8.1";
|
||||
mustache.tags = [ "{{", "}}" ];
|
||||
|
||||
// All high-level mustache.* functions use this writer.
|
||||
var defaultWriter = new Writer();
|
||||
|
||||
/**
|
||||
* Clears all cached templates in the default writer.
|
||||
*/
|
||||
mustache.clearCache = function () {
|
||||
return defaultWriter.clearCache();
|
||||
};
|
||||
|
||||
/**
|
||||
* Parses and caches the given template in the default writer and returns the
|
||||
* array of tokens it contains. Doing this ahead of time avoids the need to
|
||||
* parse templates on the fly as they are rendered.
|
||||
*/
|
||||
mustache.parse = function (template, tags) {
|
||||
return defaultWriter.parse(template, tags);
|
||||
};
|
||||
|
||||
/**
|
||||
* Renders the `template` with the given `view` and `partials` using the
|
||||
* default writer.
|
||||
*/
|
||||
mustache.render = function (template, view, partials) {
|
||||
return defaultWriter.render(template, view, partials);
|
||||
};
|
||||
|
||||
// This is here for backwards compatibility with 0.4.x.
|
||||
mustache.to_html = function (template, view, partials, send) {
|
||||
var result = mustache.render(template, view, partials);
|
||||
|
||||
if (isFunction(send)) {
|
||||
send(result);
|
||||
} else {
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
// Export the escaping function so that the user may override it.
|
||||
// See https://github.com/janl/mustache.js/issues/244
|
||||
mustache.escape = escapeHtml;
|
||||
|
||||
// Export these mainly for testing, but also for advanced usage.
|
||||
mustache.Scanner = Scanner;
|
||||
mustache.Context = Context;
|
||||
mustache.Writer = Writer;
|
||||
|
||||
}));
|
||||
1
js/lib/mustache.min.js
vendored
Normal file
1
js/lib/mustache.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
js/lib/select2.min.js
vendored
Normal file
2
js/lib/select2.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
js/lib/velocity.ui.min.js
vendored
Normal file
2
js/lib/velocity.ui.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4
node_modules/.bin/build.js
generated
vendored
4
node_modules/.bin/build.js
generated
vendored
@@ -66,7 +66,6 @@
|
||||
//jquery: "lib/jquery-2.1.1.min", // v2.1.1 jQuery
|
||||
bootstrap: 'lib/bootstrap.min', // v3.3.0 Bootstrap js code - http://getbootstrap.com/javascript/
|
||||
text: 'lib/requirejs/text', // v2.0.12 A RequireJS/AMD loader plugin for loading text resources.
|
||||
throttleDebounce: 'lib/jquery.ba-throttle-debounce.min', // v1.1 Handle/throttle jquery events - http://benalman.com/projects/jquery-throttle-debounce-plugin/
|
||||
velocity: 'lib/velocity.min', // v1.2.1 animation engine - http://julian.com/research/velocity/
|
||||
templates: '../templates', // template dir
|
||||
slidebars: 'lib/slidebars', // v0.10 Slidebars - side menu plugin http://plugins.adchsm.me/slidebars/
|
||||
@@ -102,9 +101,6 @@
|
||||
velocity: {
|
||||
deps: ['jquery']
|
||||
},
|
||||
throttleDebounce: {
|
||||
deps: ['jquery']
|
||||
},
|
||||
slidebars: {
|
||||
deps: ['jquery']
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*!
|
||||
* Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
|
||||
* Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome
|
||||
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
|
||||
*/
|
||||
|
||||
|
||||
@@ -182,9 +182,9 @@ $table-border-color: $gray-dark;
|
||||
|
||||
$btn-font-weight: normal;
|
||||
|
||||
$btn-default-color: #333;
|
||||
$btn-default-bg: $gray-lightest;
|
||||
$btn-default-border: #ccc;
|
||||
$btn-default-color: $gray-lightest;
|
||||
$btn-default-bg: $gray-light;
|
||||
$btn-default-border: darken($gray-light, 5%);
|
||||
|
||||
$btn-primary-color: $gray-lightest;
|
||||
$btn-primary-bg: $brand-primary;
|
||||
@@ -230,7 +230,7 @@ $input-height-small: (floor($font-size-small * $line-height-small) +
|
||||
$legend-color: $gray-dark;
|
||||
$legend-border-color: #e5e5e5;
|
||||
|
||||
$input-group-addon-bg: $gray-lighter;
|
||||
$input-group-addon-bg: $gray-darker;
|
||||
$input-group-addon-border-color: $input-border;
|
||||
|
||||
|
||||
@@ -290,13 +290,13 @@ $screen-tablet: $screen-sm-min;
|
||||
|
||||
// Medium screen / desktop
|
||||
// Note: Deprecated $screen-md and $screen-desktop as of v3.0.1
|
||||
$screen-md: 900px;
|
||||
$screen-md: 1200px;
|
||||
$screen-md-min: $screen-md;
|
||||
$screen-desktop: $screen-md-min;
|
||||
|
||||
// Large screen / wide desktop
|
||||
// Note: Deprecated $screen-lg and $screen-lg-desktop as of v3.0.1
|
||||
$screen-lg: 1200px;
|
||||
$screen-lg: 1600px;
|
||||
$screen-lg-min: $screen-lg;
|
||||
$screen-lg-desktop: $screen-lg-min;
|
||||
|
||||
@@ -569,7 +569,7 @@ $modal-backdrop-opacity: .5;
|
||||
$modal-header-border-color: #e5e5e5;
|
||||
$modal-footer-border-color: $modal-header-border-color;
|
||||
|
||||
$modal-lg: 900px;
|
||||
$modal-lg: 820px;
|
||||
$modal-md: 600px;
|
||||
$modal-sm: 300px;
|
||||
|
||||
@@ -779,7 +779,7 @@ $page-header-border-color: $gray-lighter;
|
||||
$hr-border: $gray-lighter;
|
||||
|
||||
//** Horizontal offset for forms and lists.
|
||||
$component-offset-horizontal: 180px;
|
||||
$component-offset-horizontal: 100px;
|
||||
|
||||
/* SMARTADMIN VARIABLES
|
||||
* All variables related specifically to the theme starts from here:
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
font-size: $font-size-base;
|
||||
font-weight: normal;
|
||||
line-height: 1;
|
||||
color: $input-color;
|
||||
color: $gray-light;
|
||||
text-align: center;
|
||||
background-color: $input-group-addon-bg;
|
||||
border: 1px solid $input-group-addon-border-color;
|
||||
|
||||
@@ -139,5 +139,11 @@
|
||||
}
|
||||
|
||||
@media (min-width: $screen-md-min) {
|
||||
.modal-lg { width: $modal-lg; }
|
||||
.modal-lg {
|
||||
|
||||
> .modal-dialog{
|
||||
width: $modal-lg;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -571,7 +571,7 @@ $modal-header-border-color: #e5e5e5 !default;
|
||||
//** Modal footer border color
|
||||
$modal-footer-border-color: $modal-header-border-color !default;
|
||||
|
||||
$modal-lg: 900px !default;
|
||||
$modal-lg: 1100px !default;
|
||||
$modal-md: 600px !default;
|
||||
$modal-sm: 300px !default;
|
||||
|
||||
|
||||
@@ -3,4 +3,5 @@
|
||||
@import "system-info";
|
||||
@import "_forms";
|
||||
@import "_images";
|
||||
@import "_dialogs";
|
||||
@import "_dialogs";
|
||||
@import "_log";
|
||||
@@ -1,7 +1,13 @@
|
||||
|
||||
// map add dialog =========================================
|
||||
|
||||
|
||||
.modal-content {
|
||||
|
||||
// data tables ===================================================
|
||||
.dataTable, .table{
|
||||
font-size: 10px;
|
||||
font-family: $font-family-bold;
|
||||
}
|
||||
}
|
||||
|
||||
// map manual dialog ======================================
|
||||
#pf-manual-scrollspy{
|
||||
@@ -11,17 +17,11 @@
|
||||
}
|
||||
|
||||
// map info dialog ========================================
|
||||
#pf-map-info-systems, #pf-map-info-connections{
|
||||
.pf-dialog-dynamic-area{
|
||||
padding: 10px;
|
||||
min-height: 130px;
|
||||
min-height: 100px;
|
||||
position: relative;
|
||||
background-color: $gray-dark;
|
||||
overflow: hidden;
|
||||
@include border-radius(5px);
|
||||
|
||||
// data tables
|
||||
.pf-map-info-table{
|
||||
font-size: 10px;
|
||||
font-family: $font-family-bold;
|
||||
}
|
||||
}
|
||||
4
sass/layout/_log.scss
Normal file
4
sass/layout/_log.scss
Normal file
@@ -0,0 +1,4 @@
|
||||
.pf-log-graph{
|
||||
height: 100px;
|
||||
width: 100%;
|
||||
}
|
||||
@@ -46,8 +46,7 @@ em{
|
||||
}
|
||||
*/
|
||||
|
||||
// ajax laoding indicator overlay
|
||||
|
||||
// laoding indicator overlay
|
||||
.pf-loading-overlay{
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
@@ -56,10 +55,8 @@ em{
|
||||
left: 0;
|
||||
opacity: 0;
|
||||
background: $gray-darker;
|
||||
@include transition(opacity, 0.15s linear);
|
||||
@include border-radius(5px);
|
||||
|
||||
|
||||
.pf-loading-overlay-wrapper{
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
@@ -70,13 +67,13 @@ em{
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
|
||||
i{
|
||||
padding: 3px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.pf-loading-overlay-visible{
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
// page menu =====================================================
|
||||
.sb-left{
|
||||
.list-group-item{
|
||||
@@ -90,6 +87,19 @@ em{
|
||||
}
|
||||
}
|
||||
|
||||
// log types =====================================================
|
||||
.pf-log-info{
|
||||
@extend .txt-color-green;
|
||||
}
|
||||
|
||||
.pf-log-warning{
|
||||
@extend .txt-color-warning;
|
||||
}
|
||||
|
||||
.pf-log-error{
|
||||
@extend .txt-color-red;
|
||||
}
|
||||
|
||||
// map types =====================================================
|
||||
.pf-map-type-global{
|
||||
color: $teal;
|
||||
@@ -315,7 +325,6 @@ em{
|
||||
.pf-system-effect-dialog-wrapper, .pf-jump-info-dialog{
|
||||
.table{
|
||||
margin: 15px 0;
|
||||
font-size: 10px;
|
||||
|
||||
td{
|
||||
text-transform: capitalize;
|
||||
@@ -474,6 +483,14 @@ em{
|
||||
|
||||
.pf-head-active-user, .pf-head-current-location{
|
||||
display: none; // triggered by js
|
||||
|
||||
.badge{
|
||||
@include transition( color 0.3s ease-out );
|
||||
}
|
||||
}
|
||||
|
||||
.pf-head-program-status{
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,13 +2,12 @@
|
||||
$mapHeight: 520px;
|
||||
$mapWidth: 2500px;
|
||||
|
||||
|
||||
// start bounce mixin ==============================================
|
||||
|
||||
@mixin bounce-up-down{
|
||||
|
||||
@include animation-duration( 1s);
|
||||
@include animation-delay(1s);
|
||||
@include animation-delay(0.5s);
|
||||
-webkit-animation-fill-mode: both;
|
||||
animation-fill-mode: both;
|
||||
-webkit-animation-timing-function: linear;
|
||||
@@ -79,22 +78,22 @@ $mapWidth: 2500px;
|
||||
font-family: $font-family-bold;
|
||||
|
||||
// jsPlumb classes =================================================
|
||||
|
||||
._jsPlumb_target, ._jsPlumb_source{
|
||||
|
||||
}
|
||||
|
||||
._jsPlumb_overlay{
|
||||
opacity: 1;
|
||||
@include transition-property(opacity);
|
||||
@include transition-duration(0.1s);
|
||||
@include transition-timing-function(ease-in);
|
||||
pointer-events: none; // click through overlays
|
||||
//@include transition( opacity 0.1s ease-in);
|
||||
}
|
||||
|
||||
|
||||
// hover effects ===================================================
|
||||
|
||||
// hover effect for connections
|
||||
._jsPlumb_hover{
|
||||
|
||||
// hover effect for connections
|
||||
&._jsPlumb_overlay{
|
||||
opacity: 0; // hide opacity on hover
|
||||
}
|
||||
@@ -119,6 +118,13 @@ $mapWidth: 2500px;
|
||||
background-color: $gray-dark;
|
||||
font-family: $font-family-bold;
|
||||
z-index: 100;
|
||||
//opacity: 0; // trigger by js
|
||||
border: {
|
||||
width: 2px;
|
||||
style: solid;
|
||||
color: $gray-light;
|
||||
}
|
||||
@include border-radius(5px);
|
||||
|
||||
// change border color with transition
|
||||
@include transition( border-color 0.5s ease-out, box-shadow 0.2s ease-out );
|
||||
@@ -130,13 +136,6 @@ $mapWidth: 2500px;
|
||||
@include transform( translate3d(0, -2px, 0) );
|
||||
}
|
||||
|
||||
@include border-radius(5px);
|
||||
border: {
|
||||
width: 2px;
|
||||
style: solid;
|
||||
color: $gray-light;
|
||||
}
|
||||
|
||||
.pf-system-head{
|
||||
padding: 0px 3px 0px 3px;
|
||||
cursor: pointer;
|
||||
@@ -195,7 +194,7 @@ $mapWidth: 2500px;
|
||||
color: $teal;
|
||||
display: none; // hover effect
|
||||
}
|
||||
// user status =================================================
|
||||
// user status ===============================================
|
||||
.pf-user-status{
|
||||
font-size: 7px;
|
||||
}
|
||||
@@ -212,7 +211,7 @@ $mapWidth: 2500px;
|
||||
|
||||
}
|
||||
|
||||
// system specific tooltip style
|
||||
// system head specific tooltip style
|
||||
.tooltip{
|
||||
|
||||
&.in{
|
||||
@@ -224,11 +223,8 @@ $mapWidth: 2500px;
|
||||
background-color: $gray-lighter;
|
||||
padding: 3px 3px;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
// active system
|
||||
@@ -263,7 +259,7 @@ $mapWidth: 2500px;
|
||||
}
|
||||
}
|
||||
|
||||
// Endpoints ====================================================
|
||||
// Endpoints =======================================================
|
||||
.pf-map-endpoint-source, .pf-map-endpoint-target{
|
||||
|
||||
z-index: 50;
|
||||
@@ -271,6 +267,10 @@ $mapWidth: 2500px;
|
||||
width: 10;
|
||||
height: 10;
|
||||
|
||||
circle{
|
||||
@include transition( stroke 0.2s ease-out);
|
||||
}
|
||||
|
||||
*{
|
||||
stroke: $gray-light;
|
||||
stroke-width: 2; // border width
|
||||
@@ -278,22 +278,29 @@ $mapWidth: 2500px;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover{
|
||||
stroke: $gray-lightest; // hover style
|
||||
stroke: $gray-lightest; // hover style
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
// Connections ==================================================
|
||||
|
||||
// default hover effect for all connections
|
||||
// hover effect for Endpoints
|
||||
&:hover{
|
||||
circle{
|
||||
stroke: $gray-lightest !important;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Connections =====================================================
|
||||
|
||||
svg._jsPlumb_connector{
|
||||
cursor: pointer;
|
||||
stroke-linecap: round; // line endings
|
||||
|
||||
path{
|
||||
transition-property: stroke;
|
||||
transition-duration: 0.3s;
|
||||
@include transition( stroke 0.2s ease-out);
|
||||
}
|
||||
|
||||
path:not(:first-child){
|
||||
@@ -306,7 +313,7 @@ $mapWidth: 2500px;
|
||||
|
||||
&:hover{
|
||||
path:first-child{
|
||||
stroke: $gray-lightest; // hover style
|
||||
stroke: $gray-lightest; // hover style
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -380,10 +387,10 @@ $mapWidth: 2500px;
|
||||
}
|
||||
}
|
||||
|
||||
// Connection overlay ===========================================
|
||||
// Connection overlay ==============================================
|
||||
.pf-map-connection-overlay{
|
||||
padding: 1px 4px;
|
||||
font-size: 10.4px;
|
||||
font-size: 11px;
|
||||
z-index: 1020;
|
||||
@include border-radius(3px);
|
||||
@include box-shadow(0 6px 12px rgba(0,0,0,.4));
|
||||
@@ -398,18 +405,16 @@ $mapWidth: 2500px;
|
||||
background-color: $red-darker;
|
||||
color: #eaeaea;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// dialoges =======================================================
|
||||
// dialoges ===========================================================
|
||||
.ui-dialog-content{
|
||||
label{
|
||||
min-width: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
// context menu ==================================================
|
||||
// context menu ======================================================
|
||||
.dropdown-menu{
|
||||
font-family: $font-family-bold;
|
||||
z-index: 1020; // over tooltips
|
||||
@@ -419,7 +424,11 @@ $mapWidth: 2500px;
|
||||
}
|
||||
}
|
||||
|
||||
// tooltip for a system with active user (they are not positioned within the system element)
|
||||
.pf-system-tooltip-inner{
|
||||
color: $gray-lighter;
|
||||
padding: 2px 4px;
|
||||
min-width: 25px; // make sure tooltip is not flickering on low numbers -> fix width
|
||||
@include transition( color 0.2s ease-out );
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
270
sass/library/data-tables/_dataTables-tableTools.scss
Normal file
270
sass/library/data-tables/_dataTables-tableTools.scss
Normal file
@@ -0,0 +1,270 @@
|
||||
/*
|
||||
* File: TableTools.css
|
||||
* Description: Styles for TableTools 2
|
||||
* Author: Allan Jardine (www.sprymedia.co.uk)
|
||||
* Language: Javascript
|
||||
* License: GPL v2 / 3 point BSD
|
||||
* Project: DataTables
|
||||
*
|
||||
* Copyright 2009-2012 Allan Jardine, all rights reserved.
|
||||
*
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
*
|
||||
* CSS name space:
|
||||
* DTTT DataTables TableTools
|
||||
*
|
||||
* Style sheet provides:
|
||||
* CONTAINER TableTools container element and styles applying to all components
|
||||
* BUTTON_STYLES Action specific button styles
|
||||
* SELECTING Row selection styles
|
||||
* COLLECTIONS Drop down list (collection) styles
|
||||
* PRINTING Print display styles
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* CONTAINER
|
||||
* TableTools container element and styles applying to all components
|
||||
*/
|
||||
div.DTTT_container {
|
||||
position: relative;
|
||||
float: right;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 640px) {
|
||||
div.DTTT_container {
|
||||
float: none !important;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.DTTT_container:after {
|
||||
visibility: hidden;
|
||||
display: block;
|
||||
content: "";
|
||||
clear: both;
|
||||
height: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
button.DTTT_button,
|
||||
div.DTTT_button,
|
||||
a.DTTT_button {
|
||||
|
||||
@extend .btn;
|
||||
@extend .btn-default;
|
||||
@extend .btn-sm;
|
||||
margin-left: 10px;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
|
||||
.DTTT_button embed {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
/*
|
||||
* BUTTON_STYLES
|
||||
* Action specific button styles
|
||||
* If you want images - comment this back in
|
||||
|
||||
a.DTTT_button_csv,
|
||||
a.DTTT_button_xls,
|
||||
a.DTTT_button_copy,
|
||||
a.DTTT_button_pdf,
|
||||
a.DTTT_button_print {
|
||||
padding-right: 0px;
|
||||
}
|
||||
|
||||
a.DTTT_button_csv span,
|
||||
a.DTTT_button_xls span,
|
||||
a.DTTT_button_copy span,
|
||||
a.DTTT_button_pdf span,
|
||||
a.DTTT_button_print span {
|
||||
display: inline-block;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
padding-right: 30px;
|
||||
}
|
||||
|
||||
|
||||
a.DTTT_button_csv span { background: url(../images/csv.png) no-repeat bottom right; }
|
||||
a.DTTT_button_csv:hover span { background: url(../images/csv_hover.png) no-repeat center right; }
|
||||
|
||||
a.DTTT_button_xls span { background: url(../images/xls.png) no-repeat center right; }
|
||||
a.DTTT_button_xls:hover span { background: #f0f0f0 url(../images/xls_hover.png) no-repeat center right; }
|
||||
|
||||
a.DTTT_button_copy span { background: url(../images/copy.png) no-repeat center right; }
|
||||
a.DTTT_button_copy:hover span { background: #f0f0f0 url(../images/copy_hover.png) no-repeat center right; }
|
||||
|
||||
a.DTTT_button_pdf span { background: url(../images/pdf.png) no-repeat center right; }
|
||||
a.DTTT_button_pdf:hover span { background: #f0f0f0 url(../images/pdf_hover.png) no-repeat center right; }
|
||||
|
||||
a.DTTT_button_print span { background: url(../images/print.png) no-repeat center right; }
|
||||
a.DTTT_button_print:hover span { background: #f0f0f0 url(../images/print_hover.png) no-repeat center right; }
|
||||
|
||||
*/
|
||||
|
||||
button.DTTT_button_collection span {
|
||||
padding-right: 17px;
|
||||
background: url(../images/collection.png) no-repeat center right;
|
||||
}
|
||||
|
||||
button.DTTT_button_collection:hover span {
|
||||
padding-right: 17px;
|
||||
background: #f0f0f0 url(../images/collection_hover.png) no-repeat center right;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* SELECTING
|
||||
* Row selection styles
|
||||
*/
|
||||
table.DTTT_selectable tbody tr {
|
||||
cursor: pointer;
|
||||
*cursor: hand;
|
||||
}
|
||||
|
||||
table.dataTable tr.DTTT_selected.odd {
|
||||
background-color: #9FAFD1;
|
||||
}
|
||||
|
||||
table.dataTable tr.DTTT_selected.odd td.sorting_1 {
|
||||
background-color: #9FAFD1;
|
||||
}
|
||||
|
||||
table.dataTable tr.DTTT_selected.odd td.sorting_2 {
|
||||
background-color: #9FAFD1;
|
||||
}
|
||||
|
||||
table.dataTable tr.DTTT_selected.odd td.sorting_3 {
|
||||
background-color: #9FAFD1;
|
||||
}
|
||||
|
||||
|
||||
table.dataTable tr.DTTT_selected.even {
|
||||
background-color: #B0BED9;
|
||||
}
|
||||
|
||||
table.dataTable tr.DTTT_selected.even td.sorting_1 {
|
||||
background-color: #B0BED9;
|
||||
}
|
||||
|
||||
table.dataTable tr.DTTT_selected.even td.sorting_2 {
|
||||
background-color: #B0BED9;
|
||||
}
|
||||
|
||||
table.dataTable tr.DTTT_selected.even td.sorting_3 {
|
||||
background-color: #B0BED9;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* COLLECTIONS
|
||||
* Drop down list (collection) styles
|
||||
*/
|
||||
|
||||
div.DTTT_collection {
|
||||
width: 150px;
|
||||
padding: 8px 8px 4px 8px;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba( 0, 0, 0, 0.4 );
|
||||
background-color: #f3f3f3;
|
||||
background-color: rgba( 255, 255, 255, 0.3 );
|
||||
overflow: hidden;
|
||||
z-index: 2002;
|
||||
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-ms-border-radius: 5px;
|
||||
-o-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
|
||||
-webkit-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||
-moz-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||
-ms-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||
-o-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||
box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
div.DTTT_collection_background {
|
||||
background: transparent url(../images/background.png) repeat top left;
|
||||
z-index: 2001;
|
||||
}
|
||||
|
||||
div.DTTT_collection button.DTTT_button,
|
||||
div.DTTT_collection div.DTTT_button,
|
||||
div.DTTT_collection a.DTTT_button {
|
||||
position: relative;
|
||||
left: 0;
|
||||
right: 0;
|
||||
|
||||
display: block;
|
||||
float: none;
|
||||
margin-bottom: 4px;
|
||||
|
||||
-webkit-box-shadow: 1px 1px 3px #999;
|
||||
-moz-box-shadow: 1px 1px 3px #999;
|
||||
-ms-box-shadow: 1px 1px 3px #999;
|
||||
-o-box-shadow: 1px 1px 3px #999;
|
||||
box-shadow: 1px 1px 3px #999;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* PRINTING
|
||||
* Print display styles
|
||||
*/
|
||||
|
||||
.DTTT_print_info {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 400px;
|
||||
height: 150px;
|
||||
margin-left: -200px;
|
||||
margin-top: -75px;
|
||||
text-align: center;
|
||||
color: #333;
|
||||
padding: 10px 30px;
|
||||
|
||||
background: #ffffff; /* Old browsers */
|
||||
background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */
|
||||
background: -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */
|
||||
background: -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */
|
||||
background: -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */
|
||||
background: linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */
|
||||
|
||||
opacity: 0.95;
|
||||
|
||||
border: 1px solid black;
|
||||
border: 1px solid rgba(0, 0, 0, 0.5);
|
||||
|
||||
-webkit-border-radius: 6px;
|
||||
-moz-border-radius: 6px;
|
||||
-ms-border-radius: 6px;
|
||||
-o-border-radius: 6px;
|
||||
border-radius: 6px;
|
||||
|
||||
-webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||
-moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||
-ms-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||
-o-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||
box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
.DTTT_print_info h6 {
|
||||
font-weight: normal;
|
||||
font-size: 28px;
|
||||
line-height: 28px;
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
.DTTT_print_info p {
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
46
sass/library/fontawesome/_icons.scss
vendored
46
sass/library/fontawesome/_icons.scss
vendored
@@ -158,6 +158,7 @@
|
||||
.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; }
|
||||
.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; }
|
||||
.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; }
|
||||
.#{$fa-css-prefix}-facebook-f:before,
|
||||
.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; }
|
||||
.#{$fa-css-prefix}-github:before { content: $fa-var-github; }
|
||||
.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; }
|
||||
@@ -397,7 +398,8 @@
|
||||
.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; }
|
||||
.#{$fa-css-prefix}-female:before { content: $fa-var-female; }
|
||||
.#{$fa-css-prefix}-male:before { content: $fa-var-male; }
|
||||
.#{$fa-css-prefix}-gittip:before { content: $fa-var-gittip; }
|
||||
.#{$fa-css-prefix}-gittip:before,
|
||||
.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; }
|
||||
.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; }
|
||||
.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; }
|
||||
.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; }
|
||||
@@ -500,6 +502,7 @@
|
||||
.#{$fa-css-prefix}-send-o:before,
|
||||
.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; }
|
||||
.#{$fa-css-prefix}-history:before { content: $fa-var-history; }
|
||||
.#{$fa-css-prefix}-genderless:before,
|
||||
.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; }
|
||||
.#{$fa-css-prefix}-header:before { content: $fa-var-header; }
|
||||
.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; }
|
||||
@@ -550,3 +553,44 @@
|
||||
.#{$fa-css-prefix}-sheqel:before,
|
||||
.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; }
|
||||
.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; }
|
||||
.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; }
|
||||
.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; }
|
||||
.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; }
|
||||
.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; }
|
||||
.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; }
|
||||
.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; }
|
||||
.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; }
|
||||
.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; }
|
||||
.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; }
|
||||
.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; }
|
||||
.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; }
|
||||
.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; }
|
||||
.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; }
|
||||
.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; }
|
||||
.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; }
|
||||
.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; }
|
||||
.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; }
|
||||
.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; }
|
||||
.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; }
|
||||
.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; }
|
||||
.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; }
|
||||
.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; }
|
||||
.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; }
|
||||
.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; }
|
||||
.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; }
|
||||
.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; }
|
||||
.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; }
|
||||
.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; }
|
||||
.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; }
|
||||
.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; }
|
||||
.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; }
|
||||
.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; }
|
||||
.#{$fa-css-prefix}-server:before { content: $fa-var-server; }
|
||||
.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; }
|
||||
.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; }
|
||||
.#{$fa-css-prefix}-hotel:before,
|
||||
.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; }
|
||||
.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; }
|
||||
.#{$fa-css-prefix}-train:before { content: $fa-var-train; }
|
||||
.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; }
|
||||
.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; }
|
||||
|
||||
4
sass/library/fontawesome/_mixins.scss
vendored
4
sass/library/fontawesome/_mixins.scss
vendored
@@ -3,11 +3,13 @@
|
||||
|
||||
@mixin fa-icon() {
|
||||
display: inline-block;
|
||||
font: normal normal normal 14px/1 FontAwesome; // shortening font declaration
|
||||
font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration
|
||||
font-size: inherit; // can't have font-size inherit on line above, so need to override
|
||||
text-rendering: auto; // optimizelegibility throws things off #1094
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
transform: translate(0, 0); // ensures no half-pixel rendering in firefox
|
||||
|
||||
}
|
||||
|
||||
@mixin fa-icon-rotate($degrees, $rotation) {
|
||||
|
||||
51
sass/library/fontawesome/_variables.scss
vendored
51
sass/library/fontawesome/_variables.scss
vendored
@@ -2,12 +2,13 @@
|
||||
// --------------------------
|
||||
|
||||
$fa-font-path: "../fonts" !default;
|
||||
//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts" !default; // for referencing Bootstrap CDN font files directly
|
||||
$fa-font-size-base: 14px !default;
|
||||
//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts" !default; // for referencing Bootstrap CDN font files directly
|
||||
$fa-css-prefix: fa !default;
|
||||
$fa-version: "4.2.0" !default;
|
||||
$fa-version: "4.3.0" !default;
|
||||
$fa-border-color: #eee !default;
|
||||
$fa-inverse: #fff !default;
|
||||
$fa-li-width: (30em / 12) !default;
|
||||
$fa-li-width: (30em / 14) !default;
|
||||
|
||||
$fa-var-adjust: "\f042";
|
||||
$fa-var-adn: "\f170";
|
||||
@@ -56,6 +57,7 @@ $fa-var-bar-chart: "\f080";
|
||||
$fa-var-bar-chart-o: "\f080";
|
||||
$fa-var-barcode: "\f02a";
|
||||
$fa-var-bars: "\f0c9";
|
||||
$fa-var-bed: "\f236";
|
||||
$fa-var-beer: "\f0fc";
|
||||
$fa-var-behance: "\f1b4";
|
||||
$fa-var-behance-square: "\f1b5";
|
||||
@@ -83,6 +85,7 @@ $fa-var-building-o: "\f0f7";
|
||||
$fa-var-bullhorn: "\f0a1";
|
||||
$fa-var-bullseye: "\f140";
|
||||
$fa-var-bus: "\f207";
|
||||
$fa-var-buysellads: "\f20d";
|
||||
$fa-var-cab: "\f1ba";
|
||||
$fa-var-calculator: "\f1ec";
|
||||
$fa-var-calendar: "\f073";
|
||||
@@ -98,6 +101,8 @@ $fa-var-caret-square-o-left: "\f191";
|
||||
$fa-var-caret-square-o-right: "\f152";
|
||||
$fa-var-caret-square-o-up: "\f151";
|
||||
$fa-var-caret-up: "\f0d8";
|
||||
$fa-var-cart-arrow-down: "\f218";
|
||||
$fa-var-cart-plus: "\f217";
|
||||
$fa-var-cc: "\f20a";
|
||||
$fa-var-cc-amex: "\f1f3";
|
||||
$fa-var-cc-discover: "\f1f2";
|
||||
@@ -146,6 +151,7 @@ $fa-var-comments: "\f086";
|
||||
$fa-var-comments-o: "\f0e6";
|
||||
$fa-var-compass: "\f14e";
|
||||
$fa-var-compress: "\f066";
|
||||
$fa-var-connectdevelop: "\f20e";
|
||||
$fa-var-copy: "\f0c5";
|
||||
$fa-var-copyright: "\f1f9";
|
||||
$fa-var-credit-card: "\f09d";
|
||||
@@ -157,11 +163,13 @@ $fa-var-cubes: "\f1b3";
|
||||
$fa-var-cut: "\f0c4";
|
||||
$fa-var-cutlery: "\f0f5";
|
||||
$fa-var-dashboard: "\f0e4";
|
||||
$fa-var-dashcube: "\f210";
|
||||
$fa-var-database: "\f1c0";
|
||||
$fa-var-dedent: "\f03b";
|
||||
$fa-var-delicious: "\f1a5";
|
||||
$fa-var-desktop: "\f108";
|
||||
$fa-var-deviantart: "\f1bd";
|
||||
$fa-var-diamond: "\f219";
|
||||
$fa-var-digg: "\f1a6";
|
||||
$fa-var-dollar: "\f155";
|
||||
$fa-var-dot-circle-o: "\f192";
|
||||
@@ -191,6 +199,8 @@ $fa-var-eye: "\f06e";
|
||||
$fa-var-eye-slash: "\f070";
|
||||
$fa-var-eyedropper: "\f1fb";
|
||||
$fa-var-facebook: "\f09a";
|
||||
$fa-var-facebook-f: "\f09a";
|
||||
$fa-var-facebook-official: "\f230";
|
||||
$fa-var-facebook-square: "\f082";
|
||||
$fa-var-fast-backward: "\f049";
|
||||
$fa-var-fast-forward: "\f050";
|
||||
@@ -232,6 +242,7 @@ $fa-var-folder-o: "\f114";
|
||||
$fa-var-folder-open: "\f07c";
|
||||
$fa-var-folder-open-o: "\f115";
|
||||
$fa-var-font: "\f031";
|
||||
$fa-var-forumbee: "\f211";
|
||||
$fa-var-forward: "\f04e";
|
||||
$fa-var-foursquare: "\f180";
|
||||
$fa-var-frown-o: "\f119";
|
||||
@@ -242,6 +253,7 @@ $fa-var-gbp: "\f154";
|
||||
$fa-var-ge: "\f1d1";
|
||||
$fa-var-gear: "\f013";
|
||||
$fa-var-gears: "\f085";
|
||||
$fa-var-genderless: "\f1db";
|
||||
$fa-var-gift: "\f06b";
|
||||
$fa-var-git: "\f1d3";
|
||||
$fa-var-git-square: "\f1d2";
|
||||
@@ -256,6 +268,7 @@ $fa-var-google-plus: "\f0d5";
|
||||
$fa-var-google-plus-square: "\f0d4";
|
||||
$fa-var-google-wallet: "\f1ee";
|
||||
$fa-var-graduation-cap: "\f19d";
|
||||
$fa-var-gratipay: "\f184";
|
||||
$fa-var-group: "\f0c0";
|
||||
$fa-var-h-square: "\f0fd";
|
||||
$fa-var-hacker-news: "\f1d4";
|
||||
@@ -268,9 +281,11 @@ $fa-var-header: "\f1dc";
|
||||
$fa-var-headphones: "\f025";
|
||||
$fa-var-heart: "\f004";
|
||||
$fa-var-heart-o: "\f08a";
|
||||
$fa-var-heartbeat: "\f21e";
|
||||
$fa-var-history: "\f1da";
|
||||
$fa-var-home: "\f015";
|
||||
$fa-var-hospital-o: "\f0f8";
|
||||
$fa-var-hotel: "\f236";
|
||||
$fa-var-html5: "\f13b";
|
||||
$fa-var-ils: "\f20b";
|
||||
$fa-var-image: "\f03e";
|
||||
@@ -294,6 +309,7 @@ $fa-var-laptop: "\f109";
|
||||
$fa-var-lastfm: "\f202";
|
||||
$fa-var-lastfm-square: "\f203";
|
||||
$fa-var-leaf: "\f06c";
|
||||
$fa-var-leanpub: "\f212";
|
||||
$fa-var-legal: "\f0e3";
|
||||
$fa-var-lemon-o: "\f094";
|
||||
$fa-var-level-down: "\f149";
|
||||
@@ -325,10 +341,17 @@ $fa-var-mail-reply: "\f112";
|
||||
$fa-var-mail-reply-all: "\f122";
|
||||
$fa-var-male: "\f183";
|
||||
$fa-var-map-marker: "\f041";
|
||||
$fa-var-mars: "\f222";
|
||||
$fa-var-mars-double: "\f227";
|
||||
$fa-var-mars-stroke: "\f229";
|
||||
$fa-var-mars-stroke-h: "\f22b";
|
||||
$fa-var-mars-stroke-v: "\f22a";
|
||||
$fa-var-maxcdn: "\f136";
|
||||
$fa-var-meanpath: "\f20c";
|
||||
$fa-var-medium: "\f23a";
|
||||
$fa-var-medkit: "\f0fa";
|
||||
$fa-var-meh-o: "\f11a";
|
||||
$fa-var-mercury: "\f223";
|
||||
$fa-var-microphone: "\f130";
|
||||
$fa-var-microphone-slash: "\f131";
|
||||
$fa-var-minus: "\f068";
|
||||
@@ -340,8 +363,10 @@ $fa-var-mobile-phone: "\f10b";
|
||||
$fa-var-money: "\f0d6";
|
||||
$fa-var-moon-o: "\f186";
|
||||
$fa-var-mortar-board: "\f19d";
|
||||
$fa-var-motorcycle: "\f21c";
|
||||
$fa-var-music: "\f001";
|
||||
$fa-var-navicon: "\f0c9";
|
||||
$fa-var-neuter: "\f22c";
|
||||
$fa-var-newspaper-o: "\f1ea";
|
||||
$fa-var-openid: "\f19b";
|
||||
$fa-var-outdent: "\f03b";
|
||||
@@ -366,6 +391,7 @@ $fa-var-pie-chart: "\f200";
|
||||
$fa-var-pied-piper: "\f1a7";
|
||||
$fa-var-pied-piper-alt: "\f1a8";
|
||||
$fa-var-pinterest: "\f0d2";
|
||||
$fa-var-pinterest-p: "\f231";
|
||||
$fa-var-pinterest-square: "\f0d3";
|
||||
$fa-var-plane: "\f072";
|
||||
$fa-var-play: "\f04b";
|
||||
@@ -415,8 +441,10 @@ $fa-var-scissors: "\f0c4";
|
||||
$fa-var-search: "\f002";
|
||||
$fa-var-search-minus: "\f010";
|
||||
$fa-var-search-plus: "\f00e";
|
||||
$fa-var-sellsy: "\f213";
|
||||
$fa-var-send: "\f1d8";
|
||||
$fa-var-send-o: "\f1d9";
|
||||
$fa-var-server: "\f233";
|
||||
$fa-var-share: "\f064";
|
||||
$fa-var-share-alt: "\f1e0";
|
||||
$fa-var-share-alt-square: "\f1e1";
|
||||
@@ -425,11 +453,15 @@ $fa-var-share-square-o: "\f045";
|
||||
$fa-var-shekel: "\f20b";
|
||||
$fa-var-sheqel: "\f20b";
|
||||
$fa-var-shield: "\f132";
|
||||
$fa-var-ship: "\f21a";
|
||||
$fa-var-shirtsinbulk: "\f214";
|
||||
$fa-var-shopping-cart: "\f07a";
|
||||
$fa-var-sign-in: "\f090";
|
||||
$fa-var-sign-out: "\f08b";
|
||||
$fa-var-signal: "\f012";
|
||||
$fa-var-simplybuilt: "\f215";
|
||||
$fa-var-sitemap: "\f0e8";
|
||||
$fa-var-skyatlas: "\f216";
|
||||
$fa-var-skype: "\f17e";
|
||||
$fa-var-slack: "\f198";
|
||||
$fa-var-sliders: "\f1de";
|
||||
@@ -468,10 +500,12 @@ $fa-var-step-backward: "\f048";
|
||||
$fa-var-step-forward: "\f051";
|
||||
$fa-var-stethoscope: "\f0f1";
|
||||
$fa-var-stop: "\f04d";
|
||||
$fa-var-street-view: "\f21d";
|
||||
$fa-var-strikethrough: "\f0cc";
|
||||
$fa-var-stumbleupon: "\f1a4";
|
||||
$fa-var-stumbleupon-circle: "\f1a3";
|
||||
$fa-var-subscript: "\f12c";
|
||||
$fa-var-subway: "\f239";
|
||||
$fa-var-suitcase: "\f0f2";
|
||||
$fa-var-sun-o: "\f185";
|
||||
$fa-var-superscript: "\f12b";
|
||||
@@ -506,6 +540,9 @@ $fa-var-toggle-off: "\f204";
|
||||
$fa-var-toggle-on: "\f205";
|
||||
$fa-var-toggle-right: "\f152";
|
||||
$fa-var-toggle-up: "\f151";
|
||||
$fa-var-train: "\f238";
|
||||
$fa-var-transgender: "\f224";
|
||||
$fa-var-transgender-alt: "\f225";
|
||||
$fa-var-trash: "\f1f8";
|
||||
$fa-var-trash-o: "\f014";
|
||||
$fa-var-tree: "\f1bb";
|
||||
@@ -532,7 +569,14 @@ $fa-var-upload: "\f093";
|
||||
$fa-var-usd: "\f155";
|
||||
$fa-var-user: "\f007";
|
||||
$fa-var-user-md: "\f0f0";
|
||||
$fa-var-user-plus: "\f234";
|
||||
$fa-var-user-secret: "\f21b";
|
||||
$fa-var-user-times: "\f235";
|
||||
$fa-var-users: "\f0c0";
|
||||
$fa-var-venus: "\f221";
|
||||
$fa-var-venus-double: "\f226";
|
||||
$fa-var-venus-mars: "\f228";
|
||||
$fa-var-viacoin: "\f237";
|
||||
$fa-var-video-camera: "\f03d";
|
||||
$fa-var-vimeo-square: "\f194";
|
||||
$fa-var-vine: "\f1ca";
|
||||
@@ -544,6 +588,7 @@ $fa-var-warning: "\f071";
|
||||
$fa-var-wechat: "\f1d7";
|
||||
$fa-var-weibo: "\f18a";
|
||||
$fa-var-weixin: "\f1d7";
|
||||
$fa-var-whatsapp: "\f232";
|
||||
$fa-var-wheelchair: "\f193";
|
||||
$fa-var-wifi: "\f1eb";
|
||||
$fa-var-windows: "\f17a";
|
||||
|
||||
37
sass/library/select2/_core.scss
vendored
Normal file
37
sass/library/select2/_core.scss
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
.select2-container {
|
||||
box-sizing: border-box;
|
||||
|
||||
display: inline-block;
|
||||
margin: 0;
|
||||
position: relative;
|
||||
vertical-align: middle;
|
||||
|
||||
@import "single";
|
||||
@import "multiple";
|
||||
}
|
||||
|
||||
@import "dropdown";
|
||||
|
||||
.select2-close-mask {
|
||||
border: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: block;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
min-height: 100%;
|
||||
min-width: 100%;
|
||||
height: auto;
|
||||
width: auto;
|
||||
opacity: 0;
|
||||
z-index: 99;
|
||||
|
||||
// styles required for IE to work
|
||||
|
||||
background-color: #fff;
|
||||
filter: alpha(opacity=0);
|
||||
}
|
||||
|
||||
@import "theme/default/_layout";
|
||||
@import "theme/classic/_layout";
|
||||
69
sass/library/select2/_dropdown.scss
vendored
Normal file
69
sass/library/select2/_dropdown.scss
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
.select2-dropdown {
|
||||
background-color: $gray-dark;
|
||||
|
||||
border: 1px solid $gray-light;
|
||||
border-radius: 4px;
|
||||
|
||||
box-sizing: border-box;
|
||||
|
||||
display: block;
|
||||
|
||||
position: absolute;
|
||||
left: -100000px;
|
||||
|
||||
width: 100%;
|
||||
|
||||
z-index: 1500;
|
||||
}
|
||||
|
||||
.select2-results {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.select2-results__options {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.select2-results__option {
|
||||
padding: 6px;
|
||||
|
||||
user-select: none;
|
||||
-webkit-user-select: none;
|
||||
|
||||
&[aria-selected] {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.select2-container--open .select2-dropdown {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.select2-container--open .select2-dropdown--above {
|
||||
border-bottom: none;
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
.select2-container--open .select2-dropdown--below {
|
||||
border-top: none;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
border-color: $teal;
|
||||
}
|
||||
|
||||
.select2-search--dropdown {
|
||||
display: block;
|
||||
padding: 4px;
|
||||
|
||||
.select2-search__field {
|
||||
padding: 4px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
&.select2-search--hide {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
28
sass/library/select2/_multiple.scss
vendored
Normal file
28
sass/library/select2/_multiple.scss
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
.select2-selection--multiple {
|
||||
box-sizing: border-box;
|
||||
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
|
||||
min-height: 32px;
|
||||
|
||||
user-select: none;
|
||||
-webkit-user-select: none;
|
||||
|
||||
.select2-selection__rendered {
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
padding-left: 8px;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
}
|
||||
|
||||
.select2-search--inline {
|
||||
float: left;
|
||||
|
||||
.select2-search__field {
|
||||
border: none;
|
||||
font-size: 100%;
|
||||
margin-top: 5px;
|
||||
}
|
||||
}
|
||||
28
sass/library/select2/_single.scss
vendored
Normal file
28
sass/library/select2/_single.scss
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
.select2-selection--single {
|
||||
box-sizing: border-box;
|
||||
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
|
||||
height: 28px;
|
||||
|
||||
user-select: none;
|
||||
-webkit-user-select: none;
|
||||
|
||||
.select2-selection__rendered {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
padding-left: 8px;
|
||||
padding-right: 20px;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
}
|
||||
|
||||
&[dir="rtl"] {
|
||||
.select2-selection--single {
|
||||
.select2-selection__rendered {
|
||||
padding-right: 8px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
13
sass/library/select2/mixins/_gradients.scss
vendored
Normal file
13
sass/library/select2/mixins/_gradients.scss
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
// https://github.com/twbs/bootstrap-sass/blob/a416cb86a3ddc6906892b2c0472deea306989fea/vendor/assets/stylesheets/bootstrap/mixins/_gradients.scss
|
||||
|
||||
// Vertical gradient, from top to bottom
|
||||
//
|
||||
// Creates two color stops, start and end, by specifying a color and position for each color stop.
|
||||
// Color stops are not available in IE9 and below.
|
||||
@mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
|
||||
background-image: -webkit-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // Safari 5.1-6, Chrome 10+
|
||||
background-image: -o-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // Opera 12
|
||||
background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{$start-color}', endColorstr='#{$end-color}', GradientType=0); // IE9 and down
|
||||
}
|
||||
34
sass/library/select2/theme/classic/_defaults.scss
vendored
Normal file
34
sass/library/select2/theme/classic/_defaults.scss
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
$remove-color: #888 !default;
|
||||
$remove-hover-color: #555 !default;
|
||||
$remove-width: 20px !default;
|
||||
|
||||
$selection-color: #444 !default;
|
||||
|
||||
$border-color: #aaa !default;
|
||||
$border-radius: 4px !default;
|
||||
|
||||
$focus-border-color: $gray-lighter !default;
|
||||
|
||||
$container-height: 28px !default;
|
||||
|
||||
$selection-bg-top-color: white !default;
|
||||
$selection-bg-bottom-color: #eeeeee !default;
|
||||
|
||||
$container-placeholder-color: #999 !default;
|
||||
|
||||
$container-focus-border-color: blue !default;
|
||||
|
||||
$selection-opened-bg-top-color: $selection-bg-bottom-color !default;
|
||||
$selection-opened-bg-bottom-color: $selection-bg-top-color !default;
|
||||
|
||||
$dropdown-z-index: 1 !default;
|
||||
|
||||
$dropdown-bg-color: $selection-bg-top-color !default;
|
||||
|
||||
$results-max-height: 200px !default;
|
||||
$results-nested-padding: 20px !default;
|
||||
|
||||
$results-choice-bg-hover-color: #3875d7 !default;
|
||||
$results-choice-fg-hover-color: $gray-darker !default;
|
||||
|
||||
$results-choice-fg-unselectable-color: grey !default;
|
||||
63
sass/library/select2/theme/classic/_layout.scss
vendored
Normal file
63
sass/library/select2/theme/classic/_layout.scss
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
@import "defaults";
|
||||
@import "../../mixins/gradients";
|
||||
|
||||
.select2-container--classic {
|
||||
@import "single";
|
||||
@import "multiple";
|
||||
|
||||
.select2-search--dropdown {
|
||||
.select2-search__field {
|
||||
border: 1px solid $border-color;
|
||||
outline: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.select2-search--inline {
|
||||
.select2-search__field {
|
||||
outline: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.select2-dropdown {
|
||||
background-color: $dropdown-bg-color;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
.select2-dropdown--above {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.select2-dropdown--below {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.select2-results > .select2-results__options {
|
||||
max-height: $results-max-height;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.select2-results__option {
|
||||
&[role=group] {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
&[aria-disabled=true] {
|
||||
color: $results-choice-fg-unselectable-color;
|
||||
}
|
||||
}
|
||||
|
||||
.select2-results__option--highlighted[aria-selected] {
|
||||
background-color: $results-choice-bg-hover-color;
|
||||
color: $results-choice-fg-hover-color;
|
||||
}
|
||||
|
||||
.select2-results__group {
|
||||
cursor: default;
|
||||
display: block;
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
&.select2-container--open .select2-dropdown {
|
||||
border-color: $focus-border-color;
|
||||
}
|
||||
}
|
||||
93
sass/library/select2/theme/classic/_multiple.scss
vendored
Normal file
93
sass/library/select2/theme/classic/_multiple.scss
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
.select2-selection--multiple {
|
||||
background-color: white;
|
||||
|
||||
border: 1px solid $border-color;
|
||||
border-radius: $border-radius;
|
||||
|
||||
cursor: text;
|
||||
|
||||
outline: 0;
|
||||
|
||||
&:focus {
|
||||
border: 1px solid $focus-border-color;
|
||||
}
|
||||
|
||||
.select2-selection__rendered {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
.select2-selection__clear {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.select2-selection__choice {
|
||||
background-color: $gray-lighter;
|
||||
|
||||
border: 1px solid $border-color;
|
||||
border-radius: $border-radius;
|
||||
|
||||
cursor: default;
|
||||
|
||||
float: left;
|
||||
|
||||
margin-right: 5px;
|
||||
margin-top: 5px;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
.select2-selection__choice__remove {
|
||||
color: $remove-color;
|
||||
cursor: pointer;
|
||||
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
|
||||
margin-right: 2px;
|
||||
|
||||
&:hover {
|
||||
color: $remove-hover-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&[dir="rtl"] {
|
||||
.select2-selection--multiple {
|
||||
.select2-selection__choice {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.select2-selection__choice {
|
||||
margin-left: 5px;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.select2-selection__choice__remove {
|
||||
margin-left: 2px;
|
||||
margin-right: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.select2-container--open {
|
||||
.select2-selection--multiple {
|
||||
border: 1px solid $focus-border-color;
|
||||
}
|
||||
|
||||
&.select2-container--above {
|
||||
.select2-selection--multiple {
|
||||
border-top: none;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.select2-container--below {
|
||||
.select2-selection--multiple {
|
||||
border-bottom: none;
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
124
sass/library/select2/theme/classic/_single.scss
vendored
Normal file
124
sass/library/select2/theme/classic/_single.scss
vendored
Normal file
@@ -0,0 +1,124 @@
|
||||
.select2-selection--single {
|
||||
background-color: $gray-dark;
|
||||
|
||||
border: 1px solid $border-color;
|
||||
border-radius: $border-radius;
|
||||
|
||||
outline: 0;
|
||||
|
||||
@include gradient-vertical($selection-bg-top-color, $selection-bg-bottom-color, 50%, 100%);
|
||||
|
||||
&:focus {
|
||||
border: 1px solid $focus-border-color;
|
||||
}
|
||||
|
||||
.select2-selection__rendered {
|
||||
color: #444;
|
||||
line-height: 28px;
|
||||
}
|
||||
|
||||
.select2-selection__clear {
|
||||
cursor: pointer;
|
||||
float: right;
|
||||
font-weight: bold;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.select2-selection__placeholder {
|
||||
color: $gray-light;
|
||||
}
|
||||
|
||||
.select2-selection__arrow {
|
||||
background-color: #ddd;
|
||||
|
||||
border: none;
|
||||
border-left: 1px solid $border-color;
|
||||
border-top-right-radius: $border-radius;
|
||||
border-bottom-right-radius: $border-radius;
|
||||
|
||||
height: 26px;
|
||||
|
||||
position: absolute;
|
||||
|
||||
top: 1px;
|
||||
right: 1px;
|
||||
|
||||
width: 20px;
|
||||
|
||||
@include gradient-vertical(#eeeeee, #cccccc, 50%, 100%);
|
||||
|
||||
b {
|
||||
border-color: #888 transparent transparent transparent;
|
||||
border-style: solid;
|
||||
border-width: 5px 4px 0 4px;
|
||||
|
||||
height: 0;
|
||||
left: 50%;
|
||||
|
||||
margin-left: -4px;
|
||||
margin-top: -2px;
|
||||
|
||||
position: absolute;
|
||||
|
||||
top: 50%;
|
||||
width: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&[dir="rtl"] {
|
||||
.select2-selection--single {
|
||||
.select2-selection__clear {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.select2-selection__arrow {
|
||||
border: none;
|
||||
border-right: 1px solid $border-color;
|
||||
|
||||
border-radius: 0;
|
||||
border-top-left-radius: $border-radius;
|
||||
border-bottom-left-radius: $border-radius;
|
||||
|
||||
left: 1px;
|
||||
right: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.select2-container--open {
|
||||
.select2-selection--single {
|
||||
border: 1px solid $focus-border-color;
|
||||
|
||||
.select2-selection__arrow {
|
||||
background: transparent;
|
||||
|
||||
border: none;
|
||||
|
||||
b {
|
||||
border-color: transparent transparent #888 transparent;
|
||||
border-width: 0 4px 5px 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.select2-container--above {
|
||||
.select2-selection--single {
|
||||
border-top: none;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
|
||||
@include gradient-vertical($selection-opened-bg-bottom-color, $selection-opened-bg-top-color, 0%, 50%);
|
||||
}
|
||||
}
|
||||
|
||||
&.select2-container--below {
|
||||
.select2-selection--single {
|
||||
border-bottom: none;
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
|
||||
@include gradient-vertical($selection-opened-bg-top-color, $selection-opened-bg-bottom-color, 50%, 100%);
|
||||
}
|
||||
}
|
||||
}
|
||||
98
sass/library/select2/theme/default/_layout.scss
vendored
Normal file
98
sass/library/select2/theme/default/_layout.scss
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
.select2-container--default {
|
||||
@import "single";
|
||||
@import "multiple";
|
||||
|
||||
&.select2-container--open.select2-container--above {
|
||||
.select2-selection--single, .select2-selection--multiple {
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.select2-container--open.select2-container--below {
|
||||
.select2-selection--single, .select2-selection--multiple {
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
@include transition( border-color 0.3s ease-out );
|
||||
border-color: $teal;
|
||||
}
|
||||
}
|
||||
|
||||
.select2-search--dropdown {
|
||||
.select2-search__field {
|
||||
border: 1px solid $gray-light;
|
||||
}
|
||||
}
|
||||
|
||||
.select2-search--inline {
|
||||
.select2-search__field {
|
||||
background: transparent;
|
||||
border: none;
|
||||
outline: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.select2-results > .select2-results__options {
|
||||
max-height: 200px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.select2-results__option {
|
||||
&[role=group] {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
&[aria-disabled=true] {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
&[aria-selected=true] {
|
||||
background-color: $teal-darker;
|
||||
color: $gray-lightest;
|
||||
}
|
||||
|
||||
.select2-results__option {
|
||||
padding-left: 1em;
|
||||
|
||||
.select2-results__group {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.select2-results__option {
|
||||
margin-left: -1em;
|
||||
padding-left: 2em;
|
||||
|
||||
.select2-results__option {
|
||||
margin-left: -2em;
|
||||
padding-left: 3em;
|
||||
|
||||
.select2-results__option {
|
||||
margin-left: -3em;
|
||||
padding-left: 4em;
|
||||
|
||||
.select2-results__option {
|
||||
margin-left: -4em;
|
||||
padding-left: 5em;
|
||||
|
||||
.select2-results__option {
|
||||
margin-left: -5em;
|
||||
padding-left: 6em;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.select2-results__option--highlighted[aria-selected] {
|
||||
background-color: $gray-lighter;
|
||||
color: $gray-darker;
|
||||
}
|
||||
|
||||
.select2-results__group {
|
||||
cursor: default;
|
||||
display: block;
|
||||
padding: 6px;
|
||||
}
|
||||
}
|
||||
88
sass/library/select2/theme/default/_multiple.scss
vendored
Normal file
88
sass/library/select2/theme/default/_multiple.scss
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
.select2-selection--multiple {
|
||||
background-color: $gray-dark;
|
||||
border: 1px solid $gray-light;
|
||||
border-radius: 4px;
|
||||
cursor: text;
|
||||
|
||||
.select2-selection__rendered {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0 5px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.select2-selection__placeholder {
|
||||
color: $gray-light;
|
||||
|
||||
margin-top: 5px;
|
||||
|
||||
float: left;
|
||||
}
|
||||
|
||||
.select2-selection__clear {
|
||||
cursor: pointer;
|
||||
float: right;
|
||||
font-weight: bold;
|
||||
margin-top: 5px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.select2-selection__choice {
|
||||
background-color: $gray-lighter;
|
||||
color: $gray-darker;
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 4px;
|
||||
cursor: default;
|
||||
|
||||
float: left;
|
||||
|
||||
margin-right: 5px;
|
||||
margin-top: 5px;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
.select2-selection__choice__remove {
|
||||
color: $red-darker;
|
||||
cursor: pointer;
|
||||
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
|
||||
margin-right: 2px;
|
||||
|
||||
&:hover {
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&[dir="rtl"] {
|
||||
.select2-selection--multiple {
|
||||
.select2-selection__choice, .select2-selection__placeholder {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.select2-selection__choice {
|
||||
margin-left: 5px;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.select2-selection__choice__remove {
|
||||
margin-left: 2px;
|
||||
margin-right: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.select2-container--disabled {
|
||||
.select2-selection--multiple {
|
||||
background-color: #eee;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.select2-selection__choice__remove {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
84
sass/library/select2/theme/default/_single.scss
vendored
Normal file
84
sass/library/select2/theme/default/_single.scss
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
.select2-selection--single {
|
||||
background-color: $gray-dark;
|
||||
border: 1px solid $gray-light;
|
||||
border-radius: 0px;
|
||||
|
||||
.select2-selection__rendered {
|
||||
color: $gray-lighter;
|
||||
line-height: 28px;
|
||||
}
|
||||
|
||||
.select2-selection__clear {
|
||||
cursor: pointer;
|
||||
float: right;
|
||||
font-weight: bold;
|
||||
color: $red-darker;
|
||||
}
|
||||
|
||||
.select2-selection__placeholder {
|
||||
color: $gray-light;
|
||||
}
|
||||
|
||||
.select2-selection__arrow {
|
||||
height: 26px;
|
||||
|
||||
position: absolute;
|
||||
|
||||
top: 1px;
|
||||
right: 1px;
|
||||
|
||||
width: 20px;
|
||||
|
||||
b {
|
||||
border-color: #888 transparent transparent transparent;
|
||||
border-style: solid;
|
||||
border-width: 5px 4px 0 4px;
|
||||
|
||||
height: 0;
|
||||
left: 50%;
|
||||
|
||||
margin-left: -4px;
|
||||
margin-top: -2px;
|
||||
|
||||
position: absolute;
|
||||
|
||||
top: 50%;
|
||||
width: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&[dir="rtl"] {
|
||||
.select2-selection--single {
|
||||
.select2-selection__clear {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.select2-selection__arrow {
|
||||
left: 1px;
|
||||
right: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.select2-container--disabled {
|
||||
.select2-selection--single {
|
||||
background-color: #eee;
|
||||
cursor: default;
|
||||
|
||||
.select2-selection__clear {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.select2-container--open {
|
||||
.select2-selection--single {
|
||||
.select2-selection__arrow {
|
||||
b {
|
||||
border-color: transparent transparent #888 transparent;
|
||||
border-width: 0 4px 5px 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
* CSS - Cascading Style Sheets
|
||||
* Generated with Compass http://compass-style.org/
|
||||
*
|
||||
* Copyright 2014 - 2014, Exodus 4D - Mark Friedrich
|
||||
* Copyright 2015 - 2015, Exodus 4D - Mark Friedrich
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -20,20 +20,24 @@
|
||||
// load bootstrap with all its dependencies
|
||||
@import "bootstrap";
|
||||
|
||||
// load Font Awesome with all its dependencies
|
||||
// load Font Awesome 4.3 with all its dependencies
|
||||
@import "font-awesome";
|
||||
|
||||
// Libraries (Remove if not needed)
|
||||
//@import "library/animation/animation-engine";
|
||||
@import "library/custom-scrollbar/_mCustomScrollbar"; // malihu-custom-scrollbar-plugin
|
||||
@import "library/data-tables/_dataTables"; // DataTables 1.10.3
|
||||
@import "library/data-tables/_dataTables-tableTools"; // DataTables 1.10.3 tableTools extension
|
||||
@import "library/data-tables/_dataTables-bootstrap"; // DataTables 1.10.3 bootsrap integration
|
||||
@import "library/data-tables/_dataTables-fontAwesome"; // DataTables 1.10.3 fontAwesome support (sort icons)
|
||||
|
||||
@import "library/x-editable/_bootstrap-editable"; // X-editable - v1.5.0
|
||||
@import "library/pnotify/_pnotify.core"; // PNotify styles
|
||||
@import "library/slidebars/_slidebars"; // Slidebars Navigation
|
||||
@import "library/easy-pie-chart/_easyPieChart"; // Easy Pie Chart 2.1.6
|
||||
@import "library/drag-to-select/_dragToSelect"; // Drag to Select 1.1
|
||||
@import "library/select2/_core"; // Select2 4.0.0 Beta2
|
||||
|
||||
|
||||
|
||||
// Main THEME (Imports by order - do not change order)
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
&.txt-color-blueLight { color: $blueLight !important; }
|
||||
&.txt-color-blueDark { color: $blueDark !important; }
|
||||
&.txt-color-grayLightest { color: $gray-lightest !important; }
|
||||
&.txt-color-grayLight { color: $gray-light !important; }
|
||||
&.txt-color-gray { color: $gray !important; }
|
||||
&.txt-color-grayDark { color: $gray-dark !important; }
|
||||
&.txt-color-green { color: $green !important; }
|
||||
|
||||
@@ -1572,8 +1572,10 @@ input[type="text"]:focus + .input-group-addon {
|
||||
font-family: 'Oxygen Bold';
|
||||
font-size: 10px;
|
||||
text-align: left;
|
||||
@include box-shadow(0 6px 12px rgba(0,0,0,.4));
|
||||
|
||||
.morris-hover-row-label {
|
||||
|
||||
.morris-hover-row-label {
|
||||
font-weight: bold;
|
||||
// margin: 0.25em 0;
|
||||
}
|
||||
|
||||
@@ -9,22 +9,22 @@
|
||||
|
||||
<p class="navbar-text pf-head-active-user">
|
||||
<a href="javascript:void(0);" title="active Pilots">
|
||||
<i class="fa fa-plane fa-fw"></i>active <span class="badge"></span>
|
||||
<i class="fa fa-plane fa-fw"></i>active <span class="badge txt-color"></span>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="navbar-header pull-right">
|
||||
<p class="navbar-text txt-color txt-color-red pf-head-program-status" title="connection status">
|
||||
<i class="fa fa-fw fa-bolt"></i>
|
||||
<span>offline</span>
|
||||
</p>
|
||||
<p class="navbar-text pf-head-current-location">
|
||||
<a href="javascript:void(0);" title="current location">
|
||||
<i class="fa fa-map-marker fa-fw"></i><span></span>
|
||||
</a>
|
||||
</p>
|
||||
<p class="navbar-text txt-color txt-color-red pf-head-program-status" title="connection status">
|
||||
<i class="fa fa-fw fa-bolt"></i>
|
||||
<span>offline</span>
|
||||
</p>
|
||||
<a class="navbar-brand pf-head-map" href="#">
|
||||
Map <i class="fa fa-code-fork fa-lg fa-fw"></i>
|
||||
</a>
|
||||
|
||||
@@ -1,23 +1,24 @@
|
||||
<nav class="navbar navbar-default" role="navigation">
|
||||
<div class="container-fluid">
|
||||
<div class="navbar-header pull-left">
|
||||
<ul class="nav navbar-nav {{dialogNavigationClass}}">
|
||||
<li class="{{dialogNavLiClass}}"><a data-action="refresh" href="#"><i class="fa fa-refresh fa-lg fa-fw"></i> Refresh</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<p>
|
||||
This dialog shows live data stats of a map.
|
||||
</p>
|
||||
<h4><i class="fa fa-code-fork fa-lg fa-fw"></i> Map</h4>
|
||||
<dl class="dl-horizontal">
|
||||
<dt>Name</dt>
|
||||
<dd>{{mapName}}</dd>
|
||||
<dt>Type</dt>
|
||||
<dd class="{{mapTypeClass}}">{{mapTypeLabel}}</dd>
|
||||
</dl>
|
||||
|
||||
<div id="{{mapInfoId}}" class="pf-dialog-dynamic-area">
|
||||
</div>
|
||||
|
||||
<h4><i class="fa fa-sun-o fa-lg fa-fw"></i> Systems</h4>
|
||||
|
||||
<div id="{{mapInfoSystemsId}}">
|
||||
|
||||
<div id="{{mapInfoSystemsId}}" class="pf-dialog-dynamic-area">
|
||||
</div>
|
||||
|
||||
<h4><i class="fa fa-chain fa-lg fa-fw"></i> Connections</h4>
|
||||
|
||||
<div id="{{mapInfoConnectionsId}}">
|
||||
|
||||
<div id="{{mapInfoConnectionsId}}" class="pf-dialog-dynamic-area">
|
||||
</div>
|
||||
@@ -1,16 +1,13 @@
|
||||
<nav class="navbar navbar-default" role="navigation">
|
||||
<div class="container-fluid">
|
||||
<div class="navbar-header pull-left">
|
||||
|
||||
|
||||
|
||||
<ul class="nav navbar-nav {{scrollspyNavClass}}">
|
||||
<li class="{{scrollspyNavLiClass}} active"><a data-target="#pf-manual-map" href="#"><i class="fa fa-code-fork fa-lg fa-fw"></i> Map</a></li>
|
||||
<li class="{{scrollspyNavLiClass}}"><a data-target="#pf-manual-system" href="#"><i class="fa fa-sun-o fa-lg fa-fw"></i> System</a></li>
|
||||
<li class="{{scrollspyNavLiClass}}"><a data-target="#pf-manual-connection" href="#"><i class="fa fa-chain fa-lg fa-fw"></i> Connection</a></li>
|
||||
<li class="{{scrollspyNavLiClass}}"><a data-target="#pf-manual-signature" href="#"><i class="fa fa-table fa-lg fa-fw"></i> Signature</a></li>
|
||||
<li class="{{scrollspyNavLiClass}}"><a data-target="#pf-manual-chart" href="#"><i class="fa fa-bar-chart fa-lg fa-fw"></i> Chart</a></li>
|
||||
<li class="{{scrollspyNavLiClass}}"><a data-target="#pf-manual-notification" href="#"><i class="fa fa-bullhorn fa-lg fa-fw"></i> Notification</a></li>
|
||||
<ul class="nav navbar-nav {{dialogNavigationClass}}">
|
||||
<li class="{{dialogNavLiClass}} active"><a data-target="#pf-manual-map" href="#"><i class="fa fa-code-fork fa-lg fa-fw"></i> Map</a></li>
|
||||
<li class="{{dialogNavLiClass}}"><a data-target="#pf-manual-system" href="#"><i class="fa fa-sun-o fa-lg fa-fw"></i> System</a></li>
|
||||
<li class="{{dialogNavLiClass}}"><a data-target="#pf-manual-connection" href="#"><i class="fa fa-chain fa-lg fa-fw"></i> Connection</a></li>
|
||||
<li class="{{dialogNavLiClass}}"><a data-target="#pf-manual-signature" href="#"><i class="fa fa-table fa-lg fa-fw"></i> Signature</a></li>
|
||||
<li class="{{dialogNavLiClass}}"><a data-target="#pf-manual-chart" href="#"><i class="fa fa-bar-chart fa-lg fa-fw"></i> Chart</a></li>
|
||||
<li class="{{dialogNavLiClass}}"><a data-target="#pf-manual-notification" href="#"><i class="fa fa-bullhorn fa-lg fa-fw"></i> Notification</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,16 @@
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="form_system">System</label>
|
||||
<div class="col-sm-10">
|
||||
<input id="form_system" name="name" type="text" placeholder="System name" class="form-control input-md">
|
||||
<!-- <input id="form_system" name="name" type="text" placeholder="System name" class="form-control input-md"> -->
|
||||
|
||||
<div class="input-group">
|
||||
<div class="input-group-addon">
|
||||
<i class="fa fa-search"></i>
|
||||
</div>
|
||||
<select id="form_system" name="name" style="width: 200px;" class="js-example-basic-single"/>
|
||||
</div>
|
||||
|
||||
|
||||
<span class="help-block">Enter system name</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user