roda-component 0.0.10 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (692) hide show
  1. checksums.yaml +4 -4
  2. data/.gems +3 -0
  3. data/.gitignore +2 -1
  4. data/.ruby-version +1 -1
  5. data/Gemfile +13 -0
  6. data/Makefile +18 -23
  7. data/Rakefile +0 -1
  8. data/lib/roda/component.rb +98 -44
  9. data/lib/roda/component/dom.rb +27 -17
  10. data/lib/roda/component/events.rb +58 -19
  11. data/lib/roda/component/faye.rb +131 -34
  12. data/lib/roda/component/form.rb +64 -0
  13. data/lib/roda/component/form/validations.rb +204 -0
  14. data/lib/roda/component/version.rb +1 -1
  15. data/lib/roda/plugins/component.rb +54 -24
  16. data/roda-component.gemspec +17 -7
  17. data/test/component_test.rb +20 -5
  18. data/test/dummy/.bowerrc +3 -0
  19. data/test/dummy/.sass-cache/00f9c07200bf85fc7effbdcbe3ee44551cdb2ce5/login.scssc +0 -0
  20. data/test/dummy/app.rb +99 -9
  21. data/test/dummy/bower.json +21 -0
  22. data/test/dummy/components/chat.rb +50 -0
  23. data/test/dummy/components/forms/login.rb +20 -0
  24. data/test/dummy/components/layout.rb +22 -2
  25. data/test/dummy/components/login.rb +123 -0
  26. data/test/dummy/components/theme.rb +89 -0
  27. data/test/dummy/config.ru +18 -0
  28. data/test/dummy/constants.rb +3 -0
  29. data/test/dummy/dummy.db +0 -0
  30. data/test/dummy/models/user.rb +20 -0
  31. data/test/dummy/public/AdminLTE-master/.gitignore +2 -0
  32. data/test/dummy/public/AdminLTE-master/LICENSE +20 -0
  33. data/test/dummy/public/AdminLTE-master/README.md +104 -0
  34. data/test/dummy/public/AdminLTE-master/ajax/dashboard-boxrefresh-demo.php +64 -0
  35. data/test/dummy/public/AdminLTE-master/composer.json +24 -0
  36. data/test/dummy/public/AdminLTE-master/css/AdminLTE.css +3539 -0
  37. data/test/dummy/public/AdminLTE-master/css/bootstrap-slider/slider.css +169 -0
  38. data/test/dummy/public/AdminLTE-master/css/bootstrap-wysihtml5/bootstrap3-wysihtml5.css +102 -0
  39. data/test/dummy/public/AdminLTE-master/css/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css +3 -0
  40. data/test/dummy/public/AdminLTE-master/css/colorpicker/bootstrap-colorpicker.css +214 -0
  41. data/test/dummy/public/AdminLTE-master/css/colorpicker/bootstrap-colorpicker.min.css +9 -0
  42. data/test/dummy/public/AdminLTE-master/css/datatables/dataTables.bootstrap.css +223 -0
  43. data/test/dummy/public/AdminLTE-master/css/datatables/images/sort_asc.png +0 -0
  44. data/test/dummy/public/AdminLTE-master/css/datatables/images/sort_asc_disabled.png +0 -0
  45. data/test/dummy/public/AdminLTE-master/css/datatables/images/sort_both.png +0 -0
  46. data/test/dummy/public/AdminLTE-master/css/datatables/images/sort_desc.png +0 -0
  47. data/test/dummy/public/AdminLTE-master/css/datatables/images/sort_desc_disabled.png +0 -0
  48. data/test/dummy/public/AdminLTE-master/css/datepicker/datepicker3.css +790 -0
  49. data/test/dummy/public/AdminLTE-master/css/daterangepicker/daterangepicker-bs3.css +245 -0
  50. data/test/dummy/public/AdminLTE-master/css/iCheck/all.css +61 -0
  51. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/_all.css +560 -0
  52. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/aero.css +56 -0
  53. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/aero.png +0 -0
  54. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/aero@2x.png +0 -0
  55. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/blue.css +56 -0
  56. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/blue.png +0 -0
  57. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/blue@2x.png +0 -0
  58. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/flat.css +56 -0
  59. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/flat.png +0 -0
  60. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/flat@2x.png +0 -0
  61. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/green.css +56 -0
  62. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/green.png +0 -0
  63. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/green@2x.png +0 -0
  64. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/grey.css +56 -0
  65. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/grey.png +0 -0
  66. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/grey@2x.png +0 -0
  67. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/orange.css +56 -0
  68. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/orange.png +0 -0
  69. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/orange@2x.png +0 -0
  70. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/pink.css +56 -0
  71. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/pink.png +0 -0
  72. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/pink@2x.png +0 -0
  73. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/purple.css +56 -0
  74. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/purple.png +0 -0
  75. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/purple@2x.png +0 -0
  76. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/red.css +56 -0
  77. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/red.png +0 -0
  78. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/red@2x.png +0 -0
  79. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/yellow.css +56 -0
  80. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/yellow.png +0 -0
  81. data/test/dummy/public/AdminLTE-master/css/iCheck/flat/yellow@2x.png +0 -0
  82. data/test/dummy/public/AdminLTE-master/css/iCheck/futurico/futurico.css +56 -0
  83. data/test/dummy/public/AdminLTE-master/css/iCheck/futurico/futurico.png +0 -0
  84. data/test/dummy/public/AdminLTE-master/css/iCheck/futurico/futurico@2x.png +0 -0
  85. data/test/dummy/public/AdminLTE-master/css/iCheck/line/_all.css +740 -0
  86. data/test/dummy/public/AdminLTE-master/css/iCheck/line/aero.css +74 -0
  87. data/test/dummy/public/AdminLTE-master/css/iCheck/line/blue.css +74 -0
  88. data/test/dummy/public/AdminLTE-master/css/iCheck/line/green.css +74 -0
  89. data/test/dummy/public/AdminLTE-master/css/iCheck/line/grey.css +74 -0
  90. data/test/dummy/public/AdminLTE-master/css/iCheck/line/line.css +74 -0
  91. data/test/dummy/public/AdminLTE-master/css/iCheck/line/line.png +0 -0
  92. data/test/dummy/public/AdminLTE-master/css/iCheck/line/line@2x.png +0 -0
  93. data/test/dummy/public/AdminLTE-master/css/iCheck/line/orange.css +74 -0
  94. data/test/dummy/public/AdminLTE-master/css/iCheck/line/pink.css +74 -0
  95. data/test/dummy/public/AdminLTE-master/css/iCheck/line/purple.css +74 -0
  96. data/test/dummy/public/AdminLTE-master/css/iCheck/line/red.css +74 -0
  97. data/test/dummy/public/AdminLTE-master/css/iCheck/line/yellow.css +74 -0
  98. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/_all.css +557 -0
  99. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/aero.css +62 -0
  100. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/aero.png +0 -0
  101. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/aero@2x.png +0 -0
  102. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/blue.css +62 -0
  103. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/blue.png +0 -0
  104. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/blue@2x.png +0 -0
  105. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/green.css +62 -0
  106. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/green.png +0 -0
  107. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/green@2x.png +0 -0
  108. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/grey.css +62 -0
  109. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/grey.png +0 -0
  110. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/grey@2x.png +0 -0
  111. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/minimal.css +62 -0
  112. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/minimal.png +0 -0
  113. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/minimal@2x.png +0 -0
  114. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/orange.css +62 -0
  115. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/orange.png +0 -0
  116. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/orange@2x.png +0 -0
  117. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/pink.css +62 -0
  118. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/pink.png +0 -0
  119. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/pink@2x.png +0 -0
  120. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/purple.css +62 -0
  121. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/purple.png +0 -0
  122. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/purple@2x.png +0 -0
  123. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/red.css +62 -0
  124. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/red.png +0 -0
  125. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/red@2x.png +0 -0
  126. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/yellow.css +62 -0
  127. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/yellow.png +0 -0
  128. data/test/dummy/public/AdminLTE-master/css/iCheck/minimal/yellow@2x.png +0 -0
  129. data/test/dummy/public/AdminLTE-master/css/iCheck/polaris/polaris.css +62 -0
  130. data/test/dummy/public/AdminLTE-master/css/iCheck/polaris/polaris.png +0 -0
  131. data/test/dummy/public/AdminLTE-master/css/iCheck/polaris/polaris@2x.png +0 -0
  132. data/test/dummy/public/AdminLTE-master/css/iCheck/square/_all.css +620 -0
  133. data/test/dummy/public/AdminLTE-master/css/iCheck/square/aero.css +62 -0
  134. data/test/dummy/public/AdminLTE-master/css/iCheck/square/aero.png +0 -0
  135. data/test/dummy/public/AdminLTE-master/css/iCheck/square/aero@2x.png +0 -0
  136. data/test/dummy/public/AdminLTE-master/css/iCheck/square/blue.css +62 -0
  137. data/test/dummy/public/AdminLTE-master/css/iCheck/square/blue.png +0 -0
  138. data/test/dummy/public/AdminLTE-master/css/iCheck/square/blue@2x.png +0 -0
  139. data/test/dummy/public/AdminLTE-master/css/iCheck/square/green.css +62 -0
  140. data/test/dummy/public/AdminLTE-master/css/iCheck/square/green.png +0 -0
  141. data/test/dummy/public/AdminLTE-master/css/iCheck/square/green@2x.png +0 -0
  142. data/test/dummy/public/AdminLTE-master/css/iCheck/square/grey.css +62 -0
  143. data/test/dummy/public/AdminLTE-master/css/iCheck/square/grey.png +0 -0
  144. data/test/dummy/public/AdminLTE-master/css/iCheck/square/grey@2x.png +0 -0
  145. data/test/dummy/public/AdminLTE-master/css/iCheck/square/orange.css +62 -0
  146. data/test/dummy/public/AdminLTE-master/css/iCheck/square/orange.png +0 -0
  147. data/test/dummy/public/AdminLTE-master/css/iCheck/square/orange@2x.png +0 -0
  148. data/test/dummy/public/AdminLTE-master/css/iCheck/square/pink.css +62 -0
  149. data/test/dummy/public/AdminLTE-master/css/iCheck/square/pink.png +0 -0
  150. data/test/dummy/public/AdminLTE-master/css/iCheck/square/pink@2x.png +0 -0
  151. data/test/dummy/public/AdminLTE-master/css/iCheck/square/purple.css +62 -0
  152. data/test/dummy/public/AdminLTE-master/css/iCheck/square/purple.png +0 -0
  153. data/test/dummy/public/AdminLTE-master/css/iCheck/square/purple@2x.png +0 -0
  154. data/test/dummy/public/AdminLTE-master/css/iCheck/square/red.css +62 -0
  155. data/test/dummy/public/AdminLTE-master/css/iCheck/square/red.png +0 -0
  156. data/test/dummy/public/AdminLTE-master/css/iCheck/square/red@2x.png +0 -0
  157. data/test/dummy/public/AdminLTE-master/css/iCheck/square/square.css +62 -0
  158. data/test/dummy/public/AdminLTE-master/css/iCheck/square/square.png +0 -0
  159. data/test/dummy/public/AdminLTE-master/css/iCheck/square/square@2x.png +0 -0
  160. data/test/dummy/public/AdminLTE-master/css/iCheck/square/yellow.css +62 -0
  161. data/test/dummy/public/AdminLTE-master/css/iCheck/square/yellow.png +0 -0
  162. data/test/dummy/public/AdminLTE-master/css/iCheck/square/yellow@2x.png +0 -0
  163. data/test/dummy/public/AdminLTE-master/css/images/animated-overlay.gif +0 -0
  164. data/test/dummy/public/AdminLTE-master/css/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  165. data/test/dummy/public/AdminLTE-master/css/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
  166. data/test/dummy/public/AdminLTE-master/css/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  167. data/test/dummy/public/AdminLTE-master/css/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  168. data/test/dummy/public/AdminLTE-master/css/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  169. data/test/dummy/public/AdminLTE-master/css/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  170. data/test/dummy/public/AdminLTE-master/css/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  171. data/test/dummy/public/AdminLTE-master/css/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  172. data/test/dummy/public/AdminLTE-master/css/images/ui-icons_217bc0_256x240.png +0 -0
  173. data/test/dummy/public/AdminLTE-master/css/images/ui-icons_2e83ff_256x240.png +0 -0
  174. data/test/dummy/public/AdminLTE-master/css/images/ui-icons_469bdd_256x240.png +0 -0
  175. data/test/dummy/public/AdminLTE-master/css/images/ui-icons_6da8d5_256x240.png +0 -0
  176. data/test/dummy/public/AdminLTE-master/css/images/ui-icons_cd0a0a_256x240.png +0 -0
  177. data/test/dummy/public/AdminLTE-master/css/images/ui-icons_d8e7f3_256x240.png +0 -0
  178. data/test/dummy/public/AdminLTE-master/css/images/ui-icons_f9bd01_256x240.png +0 -0
  179. data/test/dummy/public/AdminLTE-master/css/ionslider/ion.rangeSlider.css +126 -0
  180. data/test/dummy/public/AdminLTE-master/css/ionslider/ion.rangeSlider.skinFlat.css +89 -0
  181. data/test/dummy/public/AdminLTE-master/css/ionslider/ion.rangeSlider.skinNice.css +85 -0
  182. data/test/dummy/public/AdminLTE-master/css/jvectormap/jquery-jvectormap-1.2.2.css +36 -0
  183. data/test/dummy/public/AdminLTE-master/css/morris/morris.css +2 -0
  184. data/test/dummy/public/AdminLTE-master/css/timepicker/bootstrap-timepicker.css +121 -0
  185. data/test/dummy/public/AdminLTE-master/css/timepicker/bootstrap-timepicker.min.css +10 -0
  186. data/test/dummy/public/AdminLTE-master/empty.html +417 -0
  187. data/test/dummy/public/AdminLTE-master/fonts/glyphicons-halflings-regular.eot +0 -0
  188. data/test/dummy/public/AdminLTE-master/fonts/glyphicons-halflings-regular.svg +229 -0
  189. data/test/dummy/public/AdminLTE-master/fonts/glyphicons-halflings-regular.ttf +0 -0
  190. data/test/dummy/public/AdminLTE-master/fonts/glyphicons-halflings-regular.woff +0 -0
  191. data/test/dummy/public/AdminLTE-master/img/ajax-loader.gif +0 -0
  192. data/test/dummy/public/AdminLTE-master/img/ajax-loader1.gif +0 -0
  193. data/test/dummy/public/AdminLTE-master/img/avatar.png +0 -0
  194. data/test/dummy/public/AdminLTE-master/img/avatar04.png +0 -0
  195. data/test/dummy/public/AdminLTE-master/img/avatar2.png +0 -0
  196. data/test/dummy/public/AdminLTE-master/img/avatar3.png +0 -0
  197. data/test/dummy/public/AdminLTE-master/img/avatar5.png +0 -0
  198. data/test/dummy/public/AdminLTE-master/img/blur-background04.jpg +0 -0
  199. data/test/dummy/public/AdminLTE-master/img/blur-background08.jpg +0 -0
  200. data/test/dummy/public/AdminLTE-master/img/blur-background09.jpg +0 -0
  201. data/test/dummy/public/AdminLTE-master/img/bootstrap-colorpicker/alpha-horizontal.png +0 -0
  202. data/test/dummy/public/AdminLTE-master/img/bootstrap-colorpicker/alpha.png +0 -0
  203. data/test/dummy/public/AdminLTE-master/img/bootstrap-colorpicker/hue-horizontal.png +0 -0
  204. data/test/dummy/public/AdminLTE-master/img/bootstrap-colorpicker/hue.png +0 -0
  205. data/test/dummy/public/AdminLTE-master/img/bootstrap-colorpicker/saturation.png +0 -0
  206. data/test/dummy/public/AdminLTE-master/img/credit/american-express.png +0 -0
  207. data/test/dummy/public/AdminLTE-master/img/credit/cirrus.png +0 -0
  208. data/test/dummy/public/AdminLTE-master/img/credit/mastercard.png +0 -0
  209. data/test/dummy/public/AdminLTE-master/img/credit/mestro.png +0 -0
  210. data/test/dummy/public/AdminLTE-master/img/credit/paypal.png +0 -0
  211. data/test/dummy/public/AdminLTE-master/img/credit/paypal2.png +0 -0
  212. data/test/dummy/public/AdminLTE-master/img/credit/visa.png +0 -0
  213. data/test/dummy/public/AdminLTE-master/img/icons.png +0 -0
  214. data/test/dummy/public/AdminLTE-master/img/sprite-skin-flat.png +0 -0
  215. data/test/dummy/public/AdminLTE-master/img/sprite-skin-nice.png +0 -0
  216. data/test/dummy/public/AdminLTE-master/img/user-bg.png +0 -0
  217. data/test/dummy/public/AdminLTE-master/img/user.jpg +0 -0
  218. data/test/dummy/public/AdminLTE-master/img/user2.jpg +0 -0
  219. data/test/dummy/public/AdminLTE-master/index.html +900 -0
  220. data/test/dummy/public/AdminLTE-master/js/AdminLTE/app.js +1054 -0
  221. data/test/dummy/public/AdminLTE-master/js/AdminLTE/dashboard.js +252 -0
  222. data/test/dummy/public/AdminLTE-master/js/AdminLTE/demo.js +81 -0
  223. data/test/dummy/public/AdminLTE-master/js/plugins/bootstrap-slider/bootstrap-slider.js +1167 -0
  224. data/test/dummy/public/AdminLTE-master/js/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js +6 -0
  225. data/test/dummy/public/AdminLTE-master/js/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.js +350 -0
  226. data/test/dummy/public/AdminLTE-master/js/plugins/colorpicker/bootstrap-colorpicker.js +949 -0
  227. data/test/dummy/public/AdminLTE-master/js/plugins/colorpicker/bootstrap-colorpicker.min.js +1 -0
  228. data/test/dummy/public/AdminLTE-master/js/plugins/datatables/dataTables.bootstrap.js +250 -0
  229. data/test/dummy/public/AdminLTE-master/js/plugins/datatables/jquery.dataTables.js +12099 -0
  230. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/bootstrap-datepicker.js +1671 -0
  231. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.ar.js +15 -0
  232. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.az.js +12 -0
  233. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.bg.js +14 -0
  234. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.ca.js +14 -0
  235. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.cs.js +15 -0
  236. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.cy.js +14 -0
  237. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.da.js +15 -0
  238. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.de.js +17 -0
  239. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.el.js +13 -0
  240. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.es.js +14 -0
  241. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.et.js +18 -0
  242. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.fa.js +17 -0
  243. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.fi.js +16 -0
  244. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.fr.js +17 -0
  245. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.gl.js +11 -0
  246. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.he.js +15 -0
  247. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.hr.js +13 -0
  248. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.hu.js +16 -0
  249. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.id.js +15 -0
  250. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.is.js +14 -0
  251. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.it.js +17 -0
  252. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.ja.js +15 -0
  253. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.ka.js +17 -0
  254. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.kk.js +15 -0
  255. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.kr.js +13 -0
  256. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.lt.js +16 -0
  257. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.lv.js +16 -0
  258. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.mk.js +15 -0
  259. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.ms.js +14 -0
  260. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.nb.js +14 -0
  261. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.nl-BE.js +17 -0
  262. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.nl.js +14 -0
  263. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.no.js +16 -0
  264. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.pl.js +15 -0
  265. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.pt-BR.js +15 -0
  266. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.pt.js +16 -0
  267. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.ro.js +16 -0
  268. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.rs-latin.js +14 -0
  269. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.rs.js +14 -0
  270. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.ru.js +15 -0
  271. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.sk.js +15 -0
  272. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.sl.js +14 -0
  273. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.sq.js +15 -0
  274. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.sv.js +16 -0
  275. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.sw.js +15 -0
  276. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.th.js +14 -0
  277. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.tr.js +16 -0
  278. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.ua.js +15 -0
  279. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.vi.js +16 -0
  280. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js +16 -0
  281. data/test/dummy/public/AdminLTE-master/js/plugins/datepicker/locales/bootstrap-datepicker.zh-TW.js +17 -0
  282. data/test/dummy/public/AdminLTE-master/js/plugins/daterangepicker/daterangepicker.js +883 -0
  283. data/test/dummy/public/AdminLTE-master/js/plugins/flot/excanvas.js +1428 -0
  284. data/test/dummy/public/AdminLTE-master/js/plugins/flot/excanvas.min.js +1 -0
  285. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.colorhelpers.js +180 -0
  286. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.colorhelpers.min.js +1 -0
  287. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.canvas.js +345 -0
  288. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.canvas.min.js +1 -0
  289. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.categories.js +190 -0
  290. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.categories.min.js +1 -0
  291. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.crosshair.js +176 -0
  292. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.crosshair.min.js +1 -0
  293. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.errorbars.js +353 -0
  294. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.errorbars.min.js +1 -0
  295. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.fillbetween.js +226 -0
  296. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.fillbetween.min.js +1 -0
  297. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.image.js +241 -0
  298. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.image.min.js +1 -0
  299. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.js +3137 -0
  300. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.min.js +2 -0
  301. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.navigate.js +346 -0
  302. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.navigate.min.js +1 -0
  303. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.pie.js +817 -0
  304. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.pie.min.js +1 -0
  305. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.resize.js +60 -0
  306. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.resize.min.js +1 -0
  307. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.selection.js +360 -0
  308. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.selection.min.js +1 -0
  309. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.stack.js +188 -0
  310. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.stack.min.js +1 -0
  311. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.symbol.js +71 -0
  312. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.symbol.min.js +1 -0
  313. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.threshold.js +142 -0
  314. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.threshold.min.js +1 -0
  315. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.time.js +431 -0
  316. data/test/dummy/public/AdminLTE-master/js/plugins/flot/jquery.flot.time.min.js +1 -0
  317. data/test/dummy/public/AdminLTE-master/js/plugins/iCheck/icheck.js +506 -0
  318. data/test/dummy/public/AdminLTE-master/js/plugins/iCheck/icheck.min.js +10 -0
  319. data/test/dummy/public/AdminLTE-master/js/plugins/input-mask/jquery.inputmask.date.extensions.js +488 -0
  320. data/test/dummy/public/AdminLTE-master/js/plugins/input-mask/jquery.inputmask.extensions.js +122 -0
  321. data/test/dummy/public/AdminLTE-master/js/plugins/input-mask/jquery.inputmask.js +1632 -0
  322. data/test/dummy/public/AdminLTE-master/js/plugins/input-mask/jquery.inputmask.numeric.extensions.js +177 -0
  323. data/test/dummy/public/AdminLTE-master/js/plugins/input-mask/jquery.inputmask.phone.extensions.js +50 -0
  324. data/test/dummy/public/AdminLTE-master/js/plugins/input-mask/jquery.inputmask.regex.extensions.js +170 -0
  325. data/test/dummy/public/AdminLTE-master/js/plugins/input-mask/phone-codes/phone-be.json +45 -0
  326. data/test/dummy/public/AdminLTE-master/js/plugins/input-mask/phone-codes/phone-codes.json +294 -0
  327. data/test/dummy/public/AdminLTE-master/js/plugins/input-mask/phone-codes/readme.txt +1 -0
  328. data/test/dummy/public/AdminLTE-master/js/plugins/ionslider/ion.rangeSlider.min.js +22 -0
  329. data/test/dummy/public/AdminLTE-master/js/plugins/jqueryKnob/jquery.knob.js +764 -0
  330. data/test/dummy/public/AdminLTE-master/js/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js +8 -0
  331. data/test/dummy/public/AdminLTE-master/js/plugins/jvectormap/jquery-jvectormap-world-mill-en.js +1 -0
  332. data/test/dummy/public/AdminLTE-master/js/plugins/misc/html5shiv.js +8 -0
  333. data/test/dummy/public/AdminLTE-master/js/plugins/misc/jquery.ba-resize.min.js +9 -0
  334. data/test/dummy/public/AdminLTE-master/js/plugins/misc/jquery.placeholder.js +187 -0
  335. data/test/dummy/public/AdminLTE-master/js/plugins/misc/modernizr.min.js +4 -0
  336. data/test/dummy/public/AdminLTE-master/js/plugins/misc/respond.min.js +1 -0
  337. data/test/dummy/public/AdminLTE-master/js/plugins/morris/morris.js +1888 -0
  338. data/test/dummy/public/AdminLTE-master/js/plugins/morris/morris.min.js +2 -0
  339. data/test/dummy/public/AdminLTE-master/js/plugins/slimScroll/jquery.slimscroll.js +464 -0
  340. data/test/dummy/public/AdminLTE-master/js/plugins/slimScroll/jquery.slimscroll.min.js +16 -0
  341. data/test/dummy/public/AdminLTE-master/js/plugins/slimScroll/slimScroll.jquery.json +30 -0
  342. data/test/dummy/public/AdminLTE-master/js/plugins/sparkline/jquery.sparkline.js +3054 -0
  343. data/test/dummy/public/AdminLTE-master/js/plugins/sparkline/jquery.sparkline.min.js +5 -0
  344. data/test/dummy/public/AdminLTE-master/js/plugins/timepicker/bootstrap-timepicker.js +903 -0
  345. data/test/dummy/public/AdminLTE-master/js/plugins/timepicker/bootstrap-timepicker.min.js +5 -0
  346. data/test/dummy/public/AdminLTE-master/less/404_500_errors.less +38 -0
  347. data/test/dummy/public/AdminLTE-master/less/AdminLTE.less +49 -0
  348. data/test/dummy/public/AdminLTE-master/less/alerts.less +25 -0
  349. data/test/dummy/public/AdminLTE-master/less/bootstrap-social.less +167 -0
  350. data/test/dummy/public/AdminLTE-master/less/boxes.less +396 -0
  351. data/test/dummy/public/AdminLTE-master/less/buttons.less +179 -0
  352. data/test/dummy/public/AdminLTE-master/less/callout.less +49 -0
  353. data/test/dummy/public/AdminLTE-master/less/core.less +422 -0
  354. data/test/dummy/public/AdminLTE-master/less/dropdown.less +392 -0
  355. data/test/dummy/public/AdminLTE-master/less/forms.less +73 -0
  356. data/test/dummy/public/AdminLTE-master/less/header.less +191 -0
  357. data/test/dummy/public/AdminLTE-master/less/iCheck.less +70 -0
  358. data/test/dummy/public/AdminLTE-master/less/invoice.less +38 -0
  359. data/test/dummy/public/AdminLTE-master/less/lockscreen.less +86 -0
  360. data/test/dummy/public/AdminLTE-master/less/login_and_register.less +42 -0
  361. data/test/dummy/public/AdminLTE-master/less/mailbox.less +64 -0
  362. data/test/dummy/public/AdminLTE-master/less/mixins.less +166 -0
  363. data/test/dummy/public/AdminLTE-master/less/navs.less +161 -0
  364. data/test/dummy/public/AdminLTE-master/less/pace.less +17 -0
  365. data/test/dummy/public/AdminLTE-master/less/progress-bars.less +62 -0
  366. data/test/dummy/public/AdminLTE-master/less/sidebar.less +135 -0
  367. data/test/dummy/public/AdminLTE-master/less/skins.less +232 -0
  368. data/test/dummy/public/AdminLTE-master/less/small-box.less +122 -0
  369. data/test/dummy/public/AdminLTE-master/less/timeline.less +101 -0
  370. data/test/dummy/public/AdminLTE-master/less/vars.less +64 -0
  371. data/test/dummy/public/AdminLTE-master/pages/UI/buttons.html +1270 -0
  372. data/test/dummy/public/AdminLTE-master/pages/UI/empty.html +415 -0
  373. data/test/dummy/public/AdminLTE-master/pages/UI/general.html +985 -0
  374. data/test/dummy/public/AdminLTE-master/pages/UI/icons.html +2176 -0
  375. data/test/dummy/public/AdminLTE-master/pages/UI/jquery-ui.html +539 -0
  376. data/test/dummy/public/AdminLTE-master/pages/UI/sliders.html +562 -0
  377. data/test/dummy/public/AdminLTE-master/pages/UI/timeline.html +564 -0
  378. data/test/dummy/public/AdminLTE-master/pages/calendar.html +643 -0
  379. data/test/dummy/public/AdminLTE-master/pages/charts/empty.html +415 -0
  380. data/test/dummy/public/AdminLTE-master/pages/charts/flot.html +763 -0
  381. data/test/dummy/public/AdminLTE-master/pages/charts/inline.html +888 -0
  382. data/test/dummy/public/AdminLTE-master/pages/charts/morris.html +554 -0
  383. data/test/dummy/public/AdminLTE-master/pages/empty.html +445 -0
  384. data/test/dummy/public/AdminLTE-master/pages/examples/404.html +433 -0
  385. data/test/dummy/public/AdminLTE-master/pages/examples/500.html +433 -0
  386. data/test/dummy/public/AdminLTE-master/pages/examples/blank.html +416 -0
  387. data/test/dummy/public/AdminLTE-master/pages/examples/invoice.html +553 -0
  388. data/test/dummy/public/AdminLTE-master/pages/examples/lockscreen.html +114 -0
  389. data/test/dummy/public/AdminLTE-master/pages/examples/login.html +58 -0
  390. data/test/dummy/public/AdminLTE-master/pages/examples/register.html +60 -0
  391. data/test/dummy/public/AdminLTE-master/pages/forms/advanced.html +742 -0
  392. data/test/dummy/public/AdminLTE-master/pages/forms/editors.html +472 -0
  393. data/test/dummy/public/AdminLTE-master/pages/forms/empty.html +415 -0
  394. data/test/dummy/public/AdminLTE-master/pages/forms/general.html +714 -0
  395. data/test/dummy/public/AdminLTE-master/pages/mailbox.html +671 -0
  396. data/test/dummy/public/AdminLTE-master/pages/tables/data.html +1304 -0
  397. data/test/dummy/public/AdminLTE-master/pages/tables/empty.html +414 -0
  398. data/test/dummy/public/AdminLTE-master/pages/tables/simple.html +716 -0
  399. data/test/dummy/public/AdminLTE-master/pages/widgets.html +1028 -0
  400. data/test/dummy/public/chat/bower/font-awesome/.bower.json +37 -0
  401. data/test/dummy/public/chat/bower/font-awesome/.gitignore +32 -0
  402. data/test/dummy/public/chat/bower/font-awesome/.npmignore +42 -0
  403. data/test/dummy/public/chat/bower/font-awesome/bower.json +23 -0
  404. data/test/dummy/public/chat/bower/font-awesome/css/font-awesome.css +1672 -0
  405. data/test/dummy/public/chat/bower/font-awesome/css/font-awesome.min.css +4 -0
  406. data/test/dummy/public/chat/bower/font-awesome/fonts/FontAwesome.otf +0 -0
  407. data/test/dummy/public/chat/bower/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  408. data/test/dummy/public/chat/bower/font-awesome/fonts/fontawesome-webfont.svg +520 -0
  409. data/test/dummy/public/chat/bower/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  410. data/test/dummy/public/chat/bower/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  411. data/test/dummy/public/chat/bower/font-awesome/less/bordered-pulled.less +16 -0
  412. data/test/dummy/public/chat/bower/font-awesome/less/core.less +11 -0
  413. data/test/dummy/public/chat/bower/font-awesome/less/extras.less +2 -0
  414. data/test/dummy/public/chat/bower/font-awesome/less/fixed-width.less +6 -0
  415. data/test/dummy/public/chat/bower/font-awesome/less/font-awesome.less +17 -0
  416. data/test/dummy/public/chat/bower/font-awesome/less/icons.less +552 -0
  417. data/test/dummy/public/chat/bower/font-awesome/less/larger.less +13 -0
  418. data/test/dummy/public/chat/bower/font-awesome/less/list.less +19 -0
  419. data/test/dummy/public/chat/bower/font-awesome/less/mixins.less +25 -0
  420. data/test/dummy/public/chat/bower/font-awesome/less/path.less +14 -0
  421. data/test/dummy/public/chat/bower/font-awesome/less/rotated-flipped.less +20 -0
  422. data/test/dummy/public/chat/bower/font-awesome/less/spinning.less +29 -0
  423. data/test/dummy/public/chat/bower/font-awesome/less/stacked.less +20 -0
  424. data/test/dummy/public/chat/bower/font-awesome/less/variables.less +561 -0
  425. data/test/dummy/public/chat/bower/font-awesome/scss/_bordered-pulled.scss +16 -0
  426. data/test/dummy/public/chat/bower/font-awesome/scss/_core.scss +11 -0
  427. data/test/dummy/public/chat/bower/font-awesome/scss/_extras.scss +44 -0
  428. data/test/dummy/public/chat/bower/font-awesome/scss/_fixed-width.scss +6 -0
  429. data/test/dummy/public/chat/bower/font-awesome/scss/_icons.scss +552 -0
  430. data/test/dummy/public/chat/bower/font-awesome/scss/_larger.scss +13 -0
  431. data/test/dummy/public/chat/bower/font-awesome/scss/_list.scss +19 -0
  432. data/test/dummy/public/chat/bower/font-awesome/scss/_mixins.scss +25 -0
  433. data/test/dummy/public/chat/bower/font-awesome/scss/_path.scss +14 -0
  434. data/test/dummy/public/chat/bower/font-awesome/scss/_rotated-flipped.scss +20 -0
  435. data/test/dummy/public/chat/bower/font-awesome/scss/_spinning.scss +29 -0
  436. data/test/dummy/public/chat/bower/font-awesome/scss/_stacked.scss +20 -0
  437. data/test/dummy/public/chat/bower/font-awesome/scss/_variables.scss +561 -0
  438. data/test/dummy/public/chat/bower/font-awesome/scss/font-awesome.scss +17 -0
  439. data/test/dummy/public/chat/bower/jScrollPane/.bower.json +33 -0
  440. data/test/dummy/public/chat/bower/jScrollPane/.gitignore +2 -0
  441. data/test/dummy/public/chat/bower/jScrollPane/.gitmodules +3 -0
  442. data/test/dummy/public/chat/bower/jScrollPane/GPL-LICENSE.txt +278 -0
  443. data/test/dummy/public/chat/bower/jScrollPane/MIT-LICENSE.txt +19 -0
  444. data/test/dummy/public/chat/bower/jScrollPane/README.md +23 -0
  445. data/test/dummy/public/chat/bower/jScrollPane/ajax.html +151 -0
  446. data/test/dummy/public/chat/bower/jScrollPane/ajax_content.html +73 -0
  447. data/test/dummy/public/chat/bower/jScrollPane/anchors.html +140 -0
  448. data/test/dummy/public/chat/bower/jScrollPane/api.html +190 -0
  449. data/test/dummy/public/chat/bower/jScrollPane/arrow_hover.html +208 -0
  450. data/test/dummy/public/chat/bower/jScrollPane/arrow_positions.html +634 -0
  451. data/test/dummy/public/chat/bower/jScrollPane/arrows.html +203 -0
  452. data/test/dummy/public/chat/bower/jScrollPane/auto_reinitialise.html +98 -0
  453. data/test/dummy/public/chat/bower/jScrollPane/basic.html +204 -0
  454. data/test/dummy/public/chat/bower/jScrollPane/bower.json +22 -0
  455. data/test/dummy/public/chat/bower/jScrollPane/build/.gitignore +1 -0
  456. data/test/dummy/public/chat/bower/jScrollPane/build/Gruntfile.js +49 -0
  457. data/test/dummy/public/chat/bower/jScrollPane/build/package.json +30 -0
  458. data/test/dummy/public/chat/bower/jScrollPane/caps.html +236 -0
  459. data/test/dummy/public/chat/bower/jScrollPane/changelog.html +66 -0
  460. data/test/dummy/public/chat/bower/jScrollPane/destroy.html +237 -0
  461. data/test/dummy/public/chat/bower/jScrollPane/drag_size.html +206 -0
  462. data/test/dummy/public/chat/bower/jScrollPane/dynamic_content.html +95 -0
  463. data/test/dummy/public/chat/bower/jScrollPane/dynamic_height.html +207 -0
  464. data/test/dummy/public/chat/bower/jScrollPane/dynamic_width.html +368 -0
  465. data/test/dummy/public/chat/bower/jScrollPane/events.html +264 -0
  466. data/test/dummy/public/chat/bower/jScrollPane/faqs.html +52 -0
  467. data/test/dummy/public/chat/bower/jScrollPane/fixed_width.html +230 -0
  468. data/test/dummy/public/chat/bower/jScrollPane/focus.html +207 -0
  469. data/test/dummy/public/chat/bower/jScrollPane/fullpage_scroll.html +259 -0
  470. data/test/dummy/public/chat/bower/jScrollPane/iframe.html +79 -0
  471. data/test/dummy/public/chat/bower/jScrollPane/iframe2.html +121 -0
  472. data/test/dummy/public/chat/bower/jScrollPane/iframe_content1.html +143 -0
  473. data/test/dummy/public/chat/bower/jScrollPane/iframe_content2.html +143 -0
  474. data/test/dummy/public/chat/bower/jScrollPane/iframe_content3.html +76 -0
  475. data/test/dummy/public/chat/bower/jScrollPane/iframe_content4.html +76 -0
  476. data/test/dummy/public/chat/bower/jScrollPane/image.html +96 -0
  477. data/test/dummy/public/chat/bower/jScrollPane/image/logo.png +0 -0
  478. data/test/dummy/public/chat/bower/jScrollPane/image2.html +98 -0
  479. data/test/dummy/public/chat/bower/jScrollPane/index.html +319 -0
  480. data/test/dummy/public/chat/bower/jScrollPane/invisibles.html +523 -0
  481. data/test/dummy/public/chat/bower/jScrollPane/issues/11/after.html +45 -0
  482. data/test/dummy/public/chat/bower/jScrollPane/issues/11/before.html +45 -0
  483. data/test/dummy/public/chat/bower/jScrollPane/issues/11/brs_main.css +301 -0
  484. data/test/dummy/public/chat/bower/jScrollPane/issues/11/index.html +53 -0
  485. data/test/dummy/public/chat/bower/jScrollPane/issues/11/jquery.mousewheel.js +79 -0
  486. data/test/dummy/public/chat/bower/jScrollPane/issues/11/jscrollpane-2b3.css +143 -0
  487. data/test/dummy/public/chat/bower/jScrollPane/issues/11/jscrollpane-2b3.js +1063 -0
  488. data/test/dummy/public/chat/bower/jScrollPane/issues/11/native.html +42 -0
  489. data/test/dummy/public/chat/bower/jScrollPane/issues/12/after.html +80 -0
  490. data/test/dummy/public/chat/bower/jScrollPane/issues/12/after_reinit.html +73 -0
  491. data/test/dummy/public/chat/bower/jScrollPane/issues/12/before.html +72 -0
  492. data/test/dummy/public/chat/bower/jScrollPane/issues/12/before_reinit.html +73 -0
  493. data/test/dummy/public/chat/bower/jScrollPane/issues/12/brs_main.css +301 -0
  494. data/test/dummy/public/chat/bower/jScrollPane/issues/12/index.html +53 -0
  495. data/test/dummy/public/chat/bower/jScrollPane/issues/12/jquery.mousewheel.js +79 -0
  496. data/test/dummy/public/chat/bower/jScrollPane/issues/12/jscrollpane-2b3.css +143 -0
  497. data/test/dummy/public/chat/bower/jScrollPane/issues/12/jscrollpane-2b3.js +1063 -0
  498. data/test/dummy/public/chat/bower/jScrollPane/issues/12/native.html +69 -0
  499. data/test/dummy/public/chat/bower/jScrollPane/issues/12/wrapped.html +87 -0
  500. data/test/dummy/public/chat/bower/jScrollPane/issues/7/after.html +190 -0
  501. data/test/dummy/public/chat/bower/jScrollPane/issues/7/before.html +190 -0
  502. data/test/dummy/public/chat/bower/jScrollPane/issues/7/index.html +53 -0
  503. data/test/dummy/public/chat/bower/jScrollPane/issues/7/jscrollpane-2b1.css +120 -0
  504. data/test/dummy/public/chat/bower/jScrollPane/issues/7/jscrollpane-2b2.js +947 -0
  505. data/test/dummy/public/chat/bower/jScrollPane/issues/7/native.html +171 -0
  506. data/test/dummy/public/chat/bower/jScrollPane/known_issues.html +62 -0
  507. data/test/dummy/public/chat/bower/jScrollPane/less_basic.html +164 -0
  508. data/test/dummy/public/chat/bower/jScrollPane/mwheel_intent.html +209 -0
  509. data/test/dummy/public/chat/bower/jScrollPane/override_animate.html +215 -0
  510. data/test/dummy/public/chat/bower/jScrollPane/runeimp.html +314 -0
  511. data/test/dummy/public/chat/bower/jScrollPane/runeimp2.html +320 -0
  512. data/test/dummy/public/chat/bower/jScrollPane/script/demo.js +49 -0
  513. data/test/dummy/public/chat/bower/jScrollPane/script/jquery.jscrollpane.js +1467 -0
  514. data/test/dummy/public/chat/bower/jScrollPane/script/jquery.jscrollpane.min.js +11 -0
  515. data/test/dummy/public/chat/bower/jScrollPane/script/jquery.mousewheel.js +202 -0
  516. data/test/dummy/public/chat/bower/jScrollPane/script/mwheelIntent.js +76 -0
  517. data/test/dummy/public/chat/bower/jScrollPane/scroll_on_left.html +132 -0
  518. data/test/dummy/public/chat/bower/jScrollPane/scroll_to.html +188 -0
  519. data/test/dummy/public/chat/bower/jScrollPane/scroll_to_animate.html +197 -0
  520. data/test/dummy/public/chat/bower/jScrollPane/settings.html +202 -0
  521. data/test/dummy/public/chat/bower/jScrollPane/short.html +82 -0
  522. data/test/dummy/public/chat/bower/jScrollPane/style/demo.css +227 -0
  523. data/test/dummy/public/chat/bower/jScrollPane/style/jquery.jscrollpane.css +115 -0
  524. data/test/dummy/public/chat/bower/jScrollPane/themes/lozenge/image/ui-icons_222222_256x240.png +0 -0
  525. data/test/dummy/public/chat/bower/jScrollPane/themes/lozenge/image/ui-icons_888888_256x240.png +0 -0
  526. data/test/dummy/public/chat/bower/jScrollPane/themes/lozenge/image/ui-icons_cd0a0a_256x240.png +0 -0
  527. data/test/dummy/public/chat/bower/jScrollPane/themes/lozenge/index.html +337 -0
  528. data/test/dummy/public/chat/bower/jScrollPane/themes/lozenge/style/jquery.jscrollpane.lozenge.css +78 -0
  529. data/test/dummy/public/chat/bower/jScrollPane/v1.html +49 -0
  530. data/test/dummy/public/chat/bower/jquery/.bower.json +37 -0
  531. data/test/dummy/public/chat/bower/jquery/MIT-LICENSE.txt +21 -0
  532. data/test/dummy/public/chat/bower/jquery/bower.json +27 -0
  533. data/test/dummy/public/chat/bower/jquery/dist/jquery.js +9205 -0
  534. data/test/dummy/public/chat/bower/jquery/dist/jquery.min.js +5 -0
  535. data/test/dummy/public/chat/bower/jquery/dist/jquery.min.map +1 -0
  536. data/test/dummy/public/chat/bower/jquery/src/ajax.js +786 -0
  537. data/test/dummy/public/chat/bower/jquery/src/ajax/jsonp.js +89 -0
  538. data/test/dummy/public/chat/bower/jquery/src/ajax/load.js +75 -0
  539. data/test/dummy/public/chat/bower/jquery/src/ajax/parseJSON.js +13 -0
  540. data/test/dummy/public/chat/bower/jquery/src/ajax/parseXML.js +28 -0
  541. data/test/dummy/public/chat/bower/jquery/src/ajax/script.js +64 -0
  542. data/test/dummy/public/chat/bower/jquery/src/ajax/var/nonce.js +5 -0
  543. data/test/dummy/public/chat/bower/jquery/src/ajax/var/rquery.js +3 -0
  544. data/test/dummy/public/chat/bower/jquery/src/ajax/xhr.js +136 -0
  545. data/test/dummy/public/chat/bower/jquery/src/attributes.js +11 -0
  546. data/test/dummy/public/chat/bower/jquery/src/attributes/attr.js +141 -0
  547. data/test/dummy/public/chat/bower/jquery/src/attributes/classes.js +158 -0
  548. data/test/dummy/public/chat/bower/jquery/src/attributes/prop.js +94 -0
  549. data/test/dummy/public/chat/bower/jquery/src/attributes/support.js +35 -0
  550. data/test/dummy/public/chat/bower/jquery/src/attributes/val.js +161 -0
  551. data/test/dummy/public/chat/bower/jquery/src/callbacks.js +205 -0
  552. data/test/dummy/public/chat/bower/jquery/src/core.js +497 -0
  553. data/test/dummy/public/chat/bower/jquery/src/core/access.js +60 -0
  554. data/test/dummy/public/chat/bower/jquery/src/core/init.js +123 -0
  555. data/test/dummy/public/chat/bower/jquery/src/core/parseHTML.js +39 -0
  556. data/test/dummy/public/chat/bower/jquery/src/core/ready.js +97 -0
  557. data/test/dummy/public/chat/bower/jquery/src/core/var/rsingleTag.js +4 -0
  558. data/test/dummy/public/chat/bower/jquery/src/css.js +450 -0
  559. data/test/dummy/public/chat/bower/jquery/src/css/addGetHookIf.js +22 -0
  560. data/test/dummy/public/chat/bower/jquery/src/css/curCSS.js +57 -0
  561. data/test/dummy/public/chat/bower/jquery/src/css/defaultDisplay.js +70 -0
  562. data/test/dummy/public/chat/bower/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  563. data/test/dummy/public/chat/bower/jquery/src/css/support.js +96 -0
  564. data/test/dummy/public/chat/bower/jquery/src/css/swap.js +28 -0
  565. data/test/dummy/public/chat/bower/jquery/src/css/var/cssExpand.js +3 -0
  566. data/test/dummy/public/chat/bower/jquery/src/css/var/getStyles.js +12 -0
  567. data/test/dummy/public/chat/bower/jquery/src/css/var/isHidden.js +13 -0
  568. data/test/dummy/public/chat/bower/jquery/src/css/var/rmargin.js +3 -0
  569. data/test/dummy/public/chat/bower/jquery/src/css/var/rnumnonpx.js +5 -0
  570. data/test/dummy/public/chat/bower/jquery/src/data.js +178 -0
  571. data/test/dummy/public/chat/bower/jquery/src/data/Data.js +181 -0
  572. data/test/dummy/public/chat/bower/jquery/src/data/accepts.js +20 -0
  573. data/test/dummy/public/chat/bower/jquery/src/data/var/data_priv.js +5 -0
  574. data/test/dummy/public/chat/bower/jquery/src/data/var/data_user.js +5 -0
  575. data/test/dummy/public/chat/bower/jquery/src/deferred.js +149 -0
  576. data/test/dummy/public/chat/bower/jquery/src/deprecated.js +13 -0
  577. data/test/dummy/public/chat/bower/jquery/src/dimensions.js +50 -0
  578. data/test/dummy/public/chat/bower/jquery/src/effects.js +648 -0
  579. data/test/dummy/public/chat/bower/jquery/src/effects/Tween.js +114 -0
  580. data/test/dummy/public/chat/bower/jquery/src/effects/animatedSelector.js +13 -0
  581. data/test/dummy/public/chat/bower/jquery/src/event.js +868 -0
  582. data/test/dummy/public/chat/bower/jquery/src/event/ajax.js +13 -0
  583. data/test/dummy/public/chat/bower/jquery/src/event/alias.js +39 -0
  584. data/test/dummy/public/chat/bower/jquery/src/event/support.js +9 -0
  585. data/test/dummy/public/chat/bower/jquery/src/exports/amd.js +24 -0
  586. data/test/dummy/public/chat/bower/jquery/src/exports/global.js +32 -0
  587. data/test/dummy/public/chat/bower/jquery/src/intro.js +44 -0
  588. data/test/dummy/public/chat/bower/jquery/src/jquery.js +37 -0
  589. data/test/dummy/public/chat/bower/jquery/src/manipulation.js +580 -0
  590. data/test/dummy/public/chat/bower/jquery/src/manipulation/_evalUrl.js +18 -0
  591. data/test/dummy/public/chat/bower/jquery/src/manipulation/support.js +32 -0
  592. data/test/dummy/public/chat/bower/jquery/src/manipulation/var/rcheckableType.js +3 -0
  593. data/test/dummy/public/chat/bower/jquery/src/offset.js +207 -0
  594. data/test/dummy/public/chat/bower/jquery/src/outro.js +1 -0
  595. data/test/dummy/public/chat/bower/jquery/src/queue.js +142 -0
  596. data/test/dummy/public/chat/bower/jquery/src/queue/delay.js +22 -0
  597. data/test/dummy/public/chat/bower/jquery/src/selector-native.js +172 -0
  598. data/test/dummy/public/chat/bower/jquery/src/selector-sizzle.js +14 -0
  599. data/test/dummy/public/chat/bower/jquery/src/selector.js +1 -0
  600. data/test/dummy/public/chat/bower/jquery/src/serialize.js +111 -0
  601. data/test/dummy/public/chat/bower/jquery/src/sizzle/dist/sizzle.js +2067 -0
  602. data/test/dummy/public/chat/bower/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  603. data/test/dummy/public/chat/bower/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  604. data/test/dummy/public/chat/bower/jquery/src/traversing.js +199 -0
  605. data/test/dummy/public/chat/bower/jquery/src/traversing/findFilter.js +100 -0
  606. data/test/dummy/public/chat/bower/jquery/src/traversing/var/rneedsContext.js +6 -0
  607. data/test/dummy/public/chat/bower/jquery/src/var/arr.js +3 -0
  608. data/test/dummy/public/chat/bower/jquery/src/var/class2type.js +4 -0
  609. data/test/dummy/public/chat/bower/jquery/src/var/concat.js +5 -0
  610. data/test/dummy/public/chat/bower/jquery/src/var/hasOwn.js +5 -0
  611. data/test/dummy/public/chat/bower/jquery/src/var/indexOf.js +5 -0
  612. data/test/dummy/public/chat/bower/jquery/src/var/pnum.js +3 -0
  613. data/test/dummy/public/chat/bower/jquery/src/var/push.js +5 -0
  614. data/test/dummy/public/chat/bower/jquery/src/var/rnotwhite.js +3 -0
  615. data/test/dummy/public/chat/bower/jquery/src/var/slice.js +5 -0
  616. data/test/dummy/public/chat/bower/jquery/src/var/strundefined.js +3 -0
  617. data/test/dummy/public/chat/bower/jquery/src/var/support.js +4 -0
  618. data/test/dummy/public/chat/bower/jquery/src/var/toString.js +5 -0
  619. data/test/dummy/public/chat/bower/jquery/src/wrap.js +79 -0
  620. data/test/dummy/public/chat/bower/open-sans-fontface/.bower.json +32 -0
  621. data/test/dummy/public/chat/bower/open-sans-fontface/README.md +17 -0
  622. data/test/dummy/public/chat/bower/open-sans-fontface/bower.json +22 -0
  623. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Bold/OpenSans-Bold.eot +0 -0
  624. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Bold/OpenSans-Bold.svg +958 -0
  625. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Bold/OpenSans-Bold.ttf +0 -0
  626. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Bold/OpenSans-Bold.woff +0 -0
  627. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/BoldItalic/OpenSans-BoldItalic.eot +0 -0
  628. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/BoldItalic/OpenSans-BoldItalic.svg +958 -0
  629. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/BoldItalic/OpenSans-BoldItalic.ttf +0 -0
  630. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/BoldItalic/OpenSans-BoldItalic.woff +0 -0
  631. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/ExtraBold/OpenSans-ExtraBold.eot +0 -0
  632. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/ExtraBold/OpenSans-ExtraBold.svg +958 -0
  633. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/ExtraBold/OpenSans-ExtraBold.ttf +0 -0
  634. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/ExtraBold/OpenSans-ExtraBold.woff +0 -0
  635. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot +0 -0
  636. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg +958 -0
  637. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.ttf +0 -0
  638. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.woff +0 -0
  639. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Italic/OpenSans-Italic.eot +0 -0
  640. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Italic/OpenSans-Italic.svg +958 -0
  641. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Italic/OpenSans-Italic.ttf +0 -0
  642. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Italic/OpenSans-Italic.woff +0 -0
  643. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Light/OpenSans-Light.eot +0 -0
  644. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Light/OpenSans-Light.svg +958 -0
  645. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Light/OpenSans-Light.ttf +0 -0
  646. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Light/OpenSans-Light.woff +0 -0
  647. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/LightItalic/OpenSans-LightItalic.eot +0 -0
  648. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/LightItalic/OpenSans-LightItalic.svg +958 -0
  649. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/LightItalic/OpenSans-LightItalic.ttf +0 -0
  650. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/LightItalic/OpenSans-LightItalic.woff +0 -0
  651. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Regular/OpenSans-Regular.eot +0 -0
  652. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Regular/OpenSans-Regular.svg +958 -0
  653. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Regular/OpenSans-Regular.ttf +0 -0
  654. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Regular/OpenSans-Regular.woff +0 -0
  655. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Semibold/OpenSans-Semibold.eot +0 -0
  656. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Semibold/OpenSans-Semibold.svg +958 -0
  657. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Semibold/OpenSans-Semibold.ttf +0 -0
  658. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/Semibold/OpenSans-Semibold.woff +0 -0
  659. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/SemiboldItalic/OpenSans-SemiboldItalic.eot +0 -0
  660. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/SemiboldItalic/OpenSans-SemiboldItalic.svg +958 -0
  661. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/SemiboldItalic/OpenSans-SemiboldItalic.ttf +0 -0
  662. data/test/dummy/public/chat/bower/open-sans-fontface/fonts/SemiboldItalic/OpenSans-SemiboldItalic.woff +0 -0
  663. data/test/dummy/public/chat/bower/open-sans-fontface/index.html +85 -0
  664. data/test/dummy/public/chat/bower/open-sans-fontface/open-sans.css +90 -0
  665. data/test/dummy/public/chat/bower/open-sans-fontface/open-sans.less +133 -0
  666. data/test/dummy/public/chat/bower/open-sans-fontface/open-sans.scss +12 -0
  667. data/test/dummy/public/chat/bower/open-sans-fontface/package.json +22 -0
  668. data/test/dummy/public/chat/bower/open-sans-fontface/sass/_Bold.scss +8 -0
  669. data/test/dummy/public/chat/bower/open-sans-fontface/sass/_BoldItalic.scss +8 -0
  670. data/test/dummy/public/chat/bower/open-sans-fontface/sass/_ExtraBold.scss +8 -0
  671. data/test/dummy/public/chat/bower/open-sans-fontface/sass/_ExtraBoldItalic.scss +8 -0
  672. data/test/dummy/public/chat/bower/open-sans-fontface/sass/_Italic.scss +8 -0
  673. data/test/dummy/public/chat/bower/open-sans-fontface/sass/_Light.scss +8 -0
  674. data/test/dummy/public/chat/bower/open-sans-fontface/sass/_LightItalic.scss +8 -0
  675. data/test/dummy/public/chat/bower/open-sans-fontface/sass/_Regular.scss +8 -0
  676. data/test/dummy/public/chat/bower/open-sans-fontface/sass/_Semibold.scss +8 -0
  677. data/test/dummy/public/chat/bower/open-sans-fontface/sass/_SemiboldItalic.scss +8 -0
  678. data/test/dummy/public/chat/bower/open-sans-fontface/sass/_mixins.scss +7 -0
  679. data/test/dummy/public/chat/bower/open-sans-fontface/sass/_variables.scss +2 -0
  680. data/test/dummy/public/chat/bower/open-sans-fontface/sass/open-sans.scss +12 -0
  681. data/test/dummy/public/chat/css/login.css +140 -0
  682. data/test/dummy/public/chat/css/login.scss +147 -0
  683. data/test/dummy/public/chat/css/style.css +397 -0
  684. data/test/dummy/public/chat/index.html +211 -0
  685. data/test/dummy/public/chat/js/index.js +6 -0
  686. data/test/dummy/public/chat/login.html +36 -0
  687. data/test/helper.rb +11 -53
  688. metadata +1501 -31
  689. data/lib/roda/component/models/channel.rb +0 -11
  690. data/lib/roda/component/models/user.rb +0 -12
  691. data/lib/roda/component/ohm.rb +0 -8
  692. data/test/dummy/public/index.html +0 -8
@@ -0,0 +1 @@
1
+ (function($){var options={series:{points:{errorbars:null,xerr:{err:"x",show:null,asymmetric:null,upperCap:null,lowerCap:null,color:null,radius:null},yerr:{err:"y",show:null,asymmetric:null,upperCap:null,lowerCap:null,color:null,radius:null}}}};function processRawData(plot,series,data,datapoints){if(!series.points.errorbars)return;var format=[{x:true,number:true,required:true},{y:true,number:true,required:true}];var errors=series.points.errorbars;if(errors=="x"||errors=="xy"){if(series.points.xerr.asymmetric){format.push({x:true,number:true,required:true});format.push({x:true,number:true,required:true})}else format.push({x:true,number:true,required:true})}if(errors=="y"||errors=="xy"){if(series.points.yerr.asymmetric){format.push({y:true,number:true,required:true});format.push({y:true,number:true,required:true})}else format.push({y:true,number:true,required:true})}datapoints.format=format}function parseErrors(series,i){var points=series.datapoints.points;var exl=null,exu=null,eyl=null,eyu=null;var xerr=series.points.xerr,yerr=series.points.yerr;var eb=series.points.errorbars;if(eb=="x"||eb=="xy"){if(xerr.asymmetric){exl=points[i+2];exu=points[i+3];if(eb=="xy")if(yerr.asymmetric){eyl=points[i+4];eyu=points[i+5]}else eyl=points[i+4]}else{exl=points[i+2];if(eb=="xy")if(yerr.asymmetric){eyl=points[i+3];eyu=points[i+4]}else eyl=points[i+3]}}else if(eb=="y")if(yerr.asymmetric){eyl=points[i+2];eyu=points[i+3]}else eyl=points[i+2];if(exu==null)exu=exl;if(eyu==null)eyu=eyl;var errRanges=[exl,exu,eyl,eyu];if(!xerr.show){errRanges[0]=null;errRanges[1]=null}if(!yerr.show){errRanges[2]=null;errRanges[3]=null}return errRanges}function drawSeriesErrors(plot,ctx,s){var points=s.datapoints.points,ps=s.datapoints.pointsize,ax=[s.xaxis,s.yaxis],radius=s.points.radius,err=[s.points.xerr,s.points.yerr];var invertX=false;if(ax[0].p2c(ax[0].max)<ax[0].p2c(ax[0].min)){invertX=true;var tmp=err[0].lowerCap;err[0].lowerCap=err[0].upperCap;err[0].upperCap=tmp}var invertY=false;if(ax[1].p2c(ax[1].min)<ax[1].p2c(ax[1].max)){invertY=true;var tmp=err[1].lowerCap;err[1].lowerCap=err[1].upperCap;err[1].upperCap=tmp}for(var i=0;i<s.datapoints.points.length;i+=ps){var errRanges=parseErrors(s,i);for(var e=0;e<err.length;e++){var minmax=[ax[e].min,ax[e].max];if(errRanges[e*err.length]){var x=points[i],y=points[i+1];var upper=[x,y][e]+errRanges[e*err.length+1],lower=[x,y][e]-errRanges[e*err.length];if(err[e].err=="x")if(y>ax[1].max||y<ax[1].min||upper<ax[0].min||lower>ax[0].max)continue;if(err[e].err=="y")if(x>ax[0].max||x<ax[0].min||upper<ax[1].min||lower>ax[1].max)continue;var drawUpper=true,drawLower=true;if(upper>minmax[1]){drawUpper=false;upper=minmax[1]}if(lower<minmax[0]){drawLower=false;lower=minmax[0]}if(err[e].err=="x"&&invertX||err[e].err=="y"&&invertY){var tmp=lower;lower=upper;upper=tmp;tmp=drawLower;drawLower=drawUpper;drawUpper=tmp;tmp=minmax[0];minmax[0]=minmax[1];minmax[1]=tmp}x=ax[0].p2c(x),y=ax[1].p2c(y),upper=ax[e].p2c(upper);lower=ax[e].p2c(lower);minmax[0]=ax[e].p2c(minmax[0]);minmax[1]=ax[e].p2c(minmax[1]);var lw=err[e].lineWidth?err[e].lineWidth:s.points.lineWidth,sw=s.points.shadowSize!=null?s.points.shadowSize:s.shadowSize;if(lw>0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,w+w/2,minmax);ctx.strokeStyle="rgba(0,0,0,0.2)";drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,w/2,minmax)}ctx.strokeStyle=err[e].color?err[e].color:s.color;ctx.lineWidth=lw;drawError(ctx,err[e],x,y,upper,lower,drawUpper,drawLower,radius,0,minmax)}}}}function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,offset,minmax){y+=offset;upper+=offset;lower+=offset;if(err.err=="x"){if(upper>x+radius)drawPath(ctx,[[upper,y],[Math.max(x+radius,minmax[0]),y]]);else drawUpper=false;if(lower<x-radius)drawPath(ctx,[[Math.min(x-radius,minmax[1]),y],[lower,y]]);else drawLower=false}else{if(upper<y-radius)drawPath(ctx,[[x,upper],[x,Math.min(y-radius,minmax[0])]]);else drawUpper=false;if(lower>y+radius)drawPath(ctx,[[x,Math.max(y+radius,minmax[1])],[x,lower]]);else drawLower=false}radius=err.radius!=null?err.radius:radius;if(drawUpper){if(err.upperCap=="-"){if(err.err=="x")drawPath(ctx,[[upper,y-radius],[upper,y+radius]]);else drawPath(ctx,[[x-radius,upper],[x+radius,upper]])}else if($.isFunction(err.upperCap)){if(err.err=="x")err.upperCap(ctx,upper,y,radius);else err.upperCap(ctx,x,upper,radius)}}if(drawLower){if(err.lowerCap=="-"){if(err.err=="x")drawPath(ctx,[[lower,y-radius],[lower,y+radius]]);else drawPath(ctx,[[x-radius,lower],[x+radius,lower]])}else if($.isFunction(err.lowerCap)){if(err.err=="x")err.lowerCap(ctx,lower,y,radius);else err.lowerCap(ctx,x,lower,radius)}}}function drawPath(ctx,pts){ctx.beginPath();ctx.moveTo(pts[0][0],pts[0][1]);for(var p=1;p<pts.length;p++)ctx.lineTo(pts[p][0],pts[p][1]);ctx.stroke()}function draw(plot,ctx){var plotOffset=plot.getPlotOffset();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);$.each(plot.getData(),function(i,s){if(s.points.errorbars&&(s.points.xerr.show||s.points.yerr.show))drawSeriesErrors(plot,ctx,s)});ctx.restore()}function init(plot){plot.hooks.processRawData.push(processRawData);plot.hooks.draw.push(draw)}$.plot.plugins.push({init:init,options:options,name:"errorbars",version:"1.0"})})(jQuery);
@@ -0,0 +1,226 @@
1
+ /* Flot plugin for computing bottoms for filled line and bar charts.
2
+
3
+ Copyright (c) 2007-2013 IOLA and Ole Laursen.
4
+ Licensed under the MIT license.
5
+
6
+ The case: you've got two series that you want to fill the area between. In Flot
7
+ terms, you need to use one as the fill bottom of the other. You can specify the
8
+ bottom of each data point as the third coordinate manually, or you can use this
9
+ plugin to compute it for you.
10
+
11
+ In order to name the other series, you need to give it an id, like this:
12
+
13
+ var dataset = [
14
+ { data: [ ... ], id: "foo" } , // use default bottom
15
+ { data: [ ... ], fillBetween: "foo" }, // use first dataset as bottom
16
+ ];
17
+
18
+ $.plot($("#placeholder"), dataset, { lines: { show: true, fill: true }});
19
+
20
+ As a convenience, if the id given is a number that doesn't appear as an id in
21
+ the series, it is interpreted as the index in the array instead (so fillBetween:
22
+ 0 can also mean the first series).
23
+
24
+ Internally, the plugin modifies the datapoints in each series. For line series,
25
+ extra data points might be inserted through interpolation. Note that at points
26
+ where the bottom line is not defined (due to a null point or start/end of line),
27
+ the current line will show a gap too. The algorithm comes from the
28
+ jquery.flot.stack.js plugin, possibly some code could be shared.
29
+
30
+ */
31
+
32
+ (function ( $ ) {
33
+
34
+ var options = {
35
+ series: {
36
+ fillBetween: null // or number
37
+ }
38
+ };
39
+
40
+ function init( plot ) {
41
+
42
+ function findBottomSeries( s, allseries ) {
43
+
44
+ var i;
45
+
46
+ for ( i = 0; i < allseries.length; ++i ) {
47
+ if ( allseries[ i ].id === s.fillBetween ) {
48
+ return allseries[ i ];
49
+ }
50
+ }
51
+
52
+ if ( typeof s.fillBetween === "number" ) {
53
+ if ( s.fillBetween < 0 || s.fillBetween >= allseries.length ) {
54
+ return null;
55
+ }
56
+ return allseries[ s.fillBetween ];
57
+ }
58
+
59
+ return null;
60
+ }
61
+
62
+ function computeFillBottoms( plot, s, datapoints ) {
63
+
64
+ if ( s.fillBetween == null ) {
65
+ return;
66
+ }
67
+
68
+ var other = findBottomSeries( s, plot.getData() );
69
+
70
+ if ( !other ) {
71
+ return;
72
+ }
73
+
74
+ var ps = datapoints.pointsize,
75
+ points = datapoints.points,
76
+ otherps = other.datapoints.pointsize,
77
+ otherpoints = other.datapoints.points,
78
+ newpoints = [],
79
+ px, py, intery, qx, qy, bottom,
80
+ withlines = s.lines.show,
81
+ withbottom = ps > 2 && datapoints.format[2].y,
82
+ withsteps = withlines && s.lines.steps,
83
+ fromgap = true,
84
+ i = 0,
85
+ j = 0,
86
+ l, m;
87
+
88
+ while ( true ) {
89
+
90
+ if ( i >= points.length ) {
91
+ break;
92
+ }
93
+
94
+ l = newpoints.length;
95
+
96
+ if ( points[ i ] == null ) {
97
+
98
+ // copy gaps
99
+
100
+ for ( m = 0; m < ps; ++m ) {
101
+ newpoints.push( points[ i + m ] );
102
+ }
103
+
104
+ i += ps;
105
+
106
+ } else if ( j >= otherpoints.length ) {
107
+
108
+ // for lines, we can't use the rest of the points
109
+
110
+ if ( !withlines ) {
111
+ for ( m = 0; m < ps; ++m ) {
112
+ newpoints.push( points[ i + m ] );
113
+ }
114
+ }
115
+
116
+ i += ps;
117
+
118
+ } else if ( otherpoints[ j ] == null ) {
119
+
120
+ // oops, got a gap
121
+
122
+ for ( m = 0; m < ps; ++m ) {
123
+ newpoints.push( null );
124
+ }
125
+
126
+ fromgap = true;
127
+ j += otherps;
128
+
129
+ } else {
130
+
131
+ // cases where we actually got two points
132
+
133
+ px = points[ i ];
134
+ py = points[ i + 1 ];
135
+ qx = otherpoints[ j ];
136
+ qy = otherpoints[ j + 1 ];
137
+ bottom = 0;
138
+
139
+ if ( px === qx ) {
140
+
141
+ for ( m = 0; m < ps; ++m ) {
142
+ newpoints.push( points[ i + m ] );
143
+ }
144
+
145
+ //newpoints[ l + 1 ] += qy;
146
+ bottom = qy;
147
+
148
+ i += ps;
149
+ j += otherps;
150
+
151
+ } else if ( px > qx ) {
152
+
153
+ // we got past point below, might need to
154
+ // insert interpolated extra point
155
+
156
+ if ( withlines && i > 0 && points[ i - ps ] != null ) {
157
+ intery = py + ( points[ i - ps + 1 ] - py ) * ( qx - px ) / ( points[ i - ps ] - px );
158
+ newpoints.push( qx );
159
+ newpoints.push( intery );
160
+ for ( m = 2; m < ps; ++m ) {
161
+ newpoints.push( points[ i + m ] );
162
+ }
163
+ bottom = qy;
164
+ }
165
+
166
+ j += otherps;
167
+
168
+ } else { // px < qx
169
+
170
+ // if we come from a gap, we just skip this point
171
+
172
+ if ( fromgap && withlines ) {
173
+ i += ps;
174
+ continue;
175
+ }
176
+
177
+ for ( m = 0; m < ps; ++m ) {
178
+ newpoints.push( points[ i + m ] );
179
+ }
180
+
181
+ // we might be able to interpolate a point below,
182
+ // this can give us a better y
183
+
184
+ if ( withlines && j > 0 && otherpoints[ j - otherps ] != null ) {
185
+ bottom = qy + ( otherpoints[ j - otherps + 1 ] - qy ) * ( px - qx ) / ( otherpoints[ j - otherps ] - qx );
186
+ }
187
+
188
+ //newpoints[l + 1] += bottom;
189
+
190
+ i += ps;
191
+ }
192
+
193
+ fromgap = false;
194
+
195
+ if ( l !== newpoints.length && withbottom ) {
196
+ newpoints[ l + 2 ] = bottom;
197
+ }
198
+ }
199
+
200
+ // maintain the line steps invariant
201
+
202
+ if ( withsteps && l !== newpoints.length && l > 0 &&
203
+ newpoints[ l ] !== null &&
204
+ newpoints[ l ] !== newpoints[ l - ps ] &&
205
+ newpoints[ l + 1 ] !== newpoints[ l - ps + 1 ] ) {
206
+ for (m = 0; m < ps; ++m) {
207
+ newpoints[ l + ps + m ] = newpoints[ l + m ];
208
+ }
209
+ newpoints[ l + 1 ] = newpoints[ l - ps + 1 ];
210
+ }
211
+ }
212
+
213
+ datapoints.points = newpoints;
214
+ }
215
+
216
+ plot.hooks.processDatapoints.push( computeFillBottoms );
217
+ }
218
+
219
+ $.plot.plugins.push({
220
+ init: init,
221
+ options: options,
222
+ name: "fillbetween",
223
+ version: "1.0"
224
+ });
225
+
226
+ })(jQuery);
@@ -0,0 +1 @@
1
+ (function($){var options={series:{fillBetween:null}};function init(plot){function findBottomSeries(s,allseries){var i;for(i=0;i<allseries.length;++i){if(allseries[i].id===s.fillBetween){return allseries[i]}}if(typeof s.fillBetween==="number"){if(s.fillBetween<0||s.fillBetween>=allseries.length){return null}return allseries[s.fillBetween]}return null}function computeFillBottoms(plot,s,datapoints){if(s.fillBetween==null){return}var other=findBottomSeries(s,plot.getData());if(!other){return}var ps=datapoints.pointsize,points=datapoints.points,otherps=other.datapoints.pointsize,otherpoints=other.datapoints.points,newpoints=[],px,py,intery,qx,qy,bottom,withlines=s.lines.show,withbottom=ps>2&&datapoints.format[2].y,withsteps=withlines&&s.lines.steps,fromgap=true,i=0,j=0,l,m;while(true){if(i>=points.length){break}l=newpoints.length;if(points[i]==null){for(m=0;m<ps;++m){newpoints.push(points[i+m])}i+=ps}else if(j>=otherpoints.length){if(!withlines){for(m=0;m<ps;++m){newpoints.push(points[i+m])}}i+=ps}else if(otherpoints[j]==null){for(m=0;m<ps;++m){newpoints.push(null)}fromgap=true;j+=otherps}else{px=points[i];py=points[i+1];qx=otherpoints[j];qy=otherpoints[j+1];bottom=0;if(px===qx){for(m=0;m<ps;++m){newpoints.push(points[i+m])}bottom=qy;i+=ps;j+=otherps}else if(px>qx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+1]-py)*(qx-px)/(points[i-ps]-px);newpoints.push(qx);newpoints.push(intery);for(m=2;m<ps;++m){newpoints.push(points[i+m])}bottom=qy}j+=otherps}else{if(fromgap&&withlines){i+=ps;continue}for(m=0;m<ps;++m){newpoints.push(points[i+m])}if(withlines&&j>0&&otherpoints[j-otherps]!=null){bottom=qy+(otherpoints[j-otherps+1]-qy)*(px-qx)/(otherpoints[j-otherps]-qx)}i+=ps}fromgap=false;if(l!==newpoints.length&&withbottom){newpoints[l+2]=bottom}}if(withsteps&&l!==newpoints.length&&l>0&&newpoints[l]!==null&&newpoints[l]!==newpoints[l-ps]&&newpoints[l+1]!==newpoints[l-ps+1]){for(m=0;m<ps;++m){newpoints[l+ps+m]=newpoints[l+m]}newpoints[l+1]=newpoints[l-ps+1]}}datapoints.points=newpoints}plot.hooks.processDatapoints.push(computeFillBottoms)}$.plot.plugins.push({init:init,options:options,name:"fillbetween",version:"1.0"})})(jQuery);
@@ -0,0 +1,241 @@
1
+ /* Flot plugin for plotting images.
2
+
3
+ Copyright (c) 2007-2013 IOLA and Ole Laursen.
4
+ Licensed under the MIT license.
5
+
6
+ The data syntax is [ [ image, x1, y1, x2, y2 ], ... ] where (x1, y1) and
7
+ (x2, y2) are where you intend the two opposite corners of the image to end up
8
+ in the plot. Image must be a fully loaded Javascript image (you can make one
9
+ with new Image()). If the image is not complete, it's skipped when plotting.
10
+
11
+ There are two helpers included for retrieving images. The easiest work the way
12
+ that you put in URLs instead of images in the data, like this:
13
+
14
+ [ "myimage.png", 0, 0, 10, 10 ]
15
+
16
+ Then call $.plot.image.loadData( data, options, callback ) where data and
17
+ options are the same as you pass in to $.plot. This loads the images, replaces
18
+ the URLs in the data with the corresponding images and calls "callback" when
19
+ all images are loaded (or failed loading). In the callback, you can then call
20
+ $.plot with the data set. See the included example.
21
+
22
+ A more low-level helper, $.plot.image.load(urls, callback) is also included.
23
+ Given a list of URLs, it calls callback with an object mapping from URL to
24
+ Image object when all images are loaded or have failed loading.
25
+
26
+ The plugin supports these options:
27
+
28
+ series: {
29
+ images: {
30
+ show: boolean
31
+ anchor: "corner" or "center"
32
+ alpha: [ 0, 1 ]
33
+ }
34
+ }
35
+
36
+ They can be specified for a specific series:
37
+
38
+ $.plot( $("#placeholder"), [{
39
+ data: [ ... ],
40
+ images: { ... }
41
+ ])
42
+
43
+ Note that because the data format is different from usual data points, you
44
+ can't use images with anything else in a specific data series.
45
+
46
+ Setting "anchor" to "center" causes the pixels in the image to be anchored at
47
+ the corner pixel centers inside of at the pixel corners, effectively letting
48
+ half a pixel stick out to each side in the plot.
49
+
50
+ A possible future direction could be support for tiling for large images (like
51
+ Google Maps).
52
+
53
+ */
54
+
55
+ (function ($) {
56
+ var options = {
57
+ series: {
58
+ images: {
59
+ show: false,
60
+ alpha: 1,
61
+ anchor: "corner" // or "center"
62
+ }
63
+ }
64
+ };
65
+
66
+ $.plot.image = {};
67
+
68
+ $.plot.image.loadDataImages = function (series, options, callback) {
69
+ var urls = [], points = [];
70
+
71
+ var defaultShow = options.series.images.show;
72
+
73
+ $.each(series, function (i, s) {
74
+ if (!(defaultShow || s.images.show))
75
+ return;
76
+
77
+ if (s.data)
78
+ s = s.data;
79
+
80
+ $.each(s, function (i, p) {
81
+ if (typeof p[0] == "string") {
82
+ urls.push(p[0]);
83
+ points.push(p);
84
+ }
85
+ });
86
+ });
87
+
88
+ $.plot.image.load(urls, function (loadedImages) {
89
+ $.each(points, function (i, p) {
90
+ var url = p[0];
91
+ if (loadedImages[url])
92
+ p[0] = loadedImages[url];
93
+ });
94
+
95
+ callback();
96
+ });
97
+ }
98
+
99
+ $.plot.image.load = function (urls, callback) {
100
+ var missing = urls.length, loaded = {};
101
+ if (missing == 0)
102
+ callback({});
103
+
104
+ $.each(urls, function (i, url) {
105
+ var handler = function () {
106
+ --missing;
107
+
108
+ loaded[url] = this;
109
+
110
+ if (missing == 0)
111
+ callback(loaded);
112
+ };
113
+
114
+ $('<img />').load(handler).error(handler).attr('src', url);
115
+ });
116
+ };
117
+
118
+ function drawSeries(plot, ctx, series) {
119
+ var plotOffset = plot.getPlotOffset();
120
+
121
+ if (!series.images || !series.images.show)
122
+ return;
123
+
124
+ var points = series.datapoints.points,
125
+ ps = series.datapoints.pointsize;
126
+
127
+ for (var i = 0; i < points.length; i += ps) {
128
+ var img = points[i],
129
+ x1 = points[i + 1], y1 = points[i + 2],
130
+ x2 = points[i + 3], y2 = points[i + 4],
131
+ xaxis = series.xaxis, yaxis = series.yaxis,
132
+ tmp;
133
+
134
+ // actually we should check img.complete, but it
135
+ // appears to be a somewhat unreliable indicator in
136
+ // IE6 (false even after load event)
137
+ if (!img || img.width <= 0 || img.height <= 0)
138
+ continue;
139
+
140
+ if (x1 > x2) {
141
+ tmp = x2;
142
+ x2 = x1;
143
+ x1 = tmp;
144
+ }
145
+ if (y1 > y2) {
146
+ tmp = y2;
147
+ y2 = y1;
148
+ y1 = tmp;
149
+ }
150
+
151
+ // if the anchor is at the center of the pixel, expand the
152
+ // image by 1/2 pixel in each direction
153
+ if (series.images.anchor == "center") {
154
+ tmp = 0.5 * (x2-x1) / (img.width - 1);
155
+ x1 -= tmp;
156
+ x2 += tmp;
157
+ tmp = 0.5 * (y2-y1) / (img.height - 1);
158
+ y1 -= tmp;
159
+ y2 += tmp;
160
+ }
161
+
162
+ // clip
163
+ if (x1 == x2 || y1 == y2 ||
164
+ x1 >= xaxis.max || x2 <= xaxis.min ||
165
+ y1 >= yaxis.max || y2 <= yaxis.min)
166
+ continue;
167
+
168
+ var sx1 = 0, sy1 = 0, sx2 = img.width, sy2 = img.height;
169
+ if (x1 < xaxis.min) {
170
+ sx1 += (sx2 - sx1) * (xaxis.min - x1) / (x2 - x1);
171
+ x1 = xaxis.min;
172
+ }
173
+
174
+ if (x2 > xaxis.max) {
175
+ sx2 += (sx2 - sx1) * (xaxis.max - x2) / (x2 - x1);
176
+ x2 = xaxis.max;
177
+ }
178
+
179
+ if (y1 < yaxis.min) {
180
+ sy2 += (sy1 - sy2) * (yaxis.min - y1) / (y2 - y1);
181
+ y1 = yaxis.min;
182
+ }
183
+
184
+ if (y2 > yaxis.max) {
185
+ sy1 += (sy1 - sy2) * (yaxis.max - y2) / (y2 - y1);
186
+ y2 = yaxis.max;
187
+ }
188
+
189
+ x1 = xaxis.p2c(x1);
190
+ x2 = xaxis.p2c(x2);
191
+ y1 = yaxis.p2c(y1);
192
+ y2 = yaxis.p2c(y2);
193
+
194
+ // the transformation may have swapped us
195
+ if (x1 > x2) {
196
+ tmp = x2;
197
+ x2 = x1;
198
+ x1 = tmp;
199
+ }
200
+ if (y1 > y2) {
201
+ tmp = y2;
202
+ y2 = y1;
203
+ y1 = tmp;
204
+ }
205
+
206
+ tmp = ctx.globalAlpha;
207
+ ctx.globalAlpha *= series.images.alpha;
208
+ ctx.drawImage(img,
209
+ sx1, sy1, sx2 - sx1, sy2 - sy1,
210
+ x1 + plotOffset.left, y1 + plotOffset.top,
211
+ x2 - x1, y2 - y1);
212
+ ctx.globalAlpha = tmp;
213
+ }
214
+ }
215
+
216
+ function processRawData(plot, series, data, datapoints) {
217
+ if (!series.images.show)
218
+ return;
219
+
220
+ // format is Image, x1, y1, x2, y2 (opposite corners)
221
+ datapoints.format = [
222
+ { required: true },
223
+ { x: true, number: true, required: true },
224
+ { y: true, number: true, required: true },
225
+ { x: true, number: true, required: true },
226
+ { y: true, number: true, required: true }
227
+ ];
228
+ }
229
+
230
+ function init(plot) {
231
+ plot.hooks.processRawData.push(processRawData);
232
+ plot.hooks.drawSeries.push(drawSeries);
233
+ }
234
+
235
+ $.plot.plugins.push({
236
+ init: init,
237
+ options: options,
238
+ name: 'image',
239
+ version: '1.1'
240
+ });
241
+ })(jQuery);