sequenceserver 2.0.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sequenceserver might be problematic. Click here for more details.

Files changed (675) hide show
  1. checksums.yaml +4 -4
  2. data/bin/sequenceserver +7 -2
  3. data/lib/sequenceserver/api_errors.rb +24 -2
  4. data/lib/sequenceserver/blast/formatter.rb +13 -4
  5. data/lib/sequenceserver/blast/job.rb +41 -7
  6. data/lib/sequenceserver/blast/report.rb +69 -33
  7. data/lib/sequenceserver/config.rb +52 -27
  8. data/lib/sequenceserver/job.rb +13 -3
  9. data/lib/sequenceserver/job_remover.rb +25 -29
  10. data/lib/sequenceserver/makeblastdb.rb +80 -72
  11. data/lib/sequenceserver/pool.rb +1 -1
  12. data/lib/sequenceserver/refinements.rb +15 -0
  13. data/lib/sequenceserver/report.rb +1 -5
  14. data/lib/sequenceserver/routes.rb +92 -9
  15. data/lib/sequenceserver/sequence.rb +8 -7
  16. data/lib/sequenceserver/sys.rb +3 -3
  17. data/lib/sequenceserver/version.rb +1 -1
  18. data/lib/sequenceserver/zip_file_generator.rb +56 -0
  19. data/lib/sequenceserver.rb +9 -2
  20. data/public/config.js +149 -143
  21. data/public/css/sequenceserver.css +44 -3
  22. data/public/css/sequenceserver.min.css +3 -3
  23. data/public/js/alignment_exporter.js +16 -8
  24. data/public/js/circos.js +370 -234
  25. data/public/js/cloud_share_modal.js +216 -0
  26. data/public/js/databases.js +144 -0
  27. data/public/js/databases_tree.js +42 -113
  28. data/public/js/dnd.js +164 -0
  29. data/public/js/error_modal.js +4 -11
  30. data/public/js/exporter.js +7 -3
  31. data/public/js/form.js +260 -0
  32. data/public/js/grapher.js +113 -106
  33. data/public/js/hit.js +80 -67
  34. data/public/js/hits_overview.js +2 -2
  35. data/public/js/hsp.js +343 -288
  36. data/public/js/jquery_world.js +4 -4
  37. data/public/js/mailto.js +36 -0
  38. data/public/js/options.js +84 -0
  39. data/public/js/query.js +319 -59
  40. data/public/js/report.js +369 -269
  41. data/public/js/report_root.js +75 -0
  42. data/public/js/search.js +28 -1011
  43. data/public/js/search_button.js +195 -0
  44. data/public/js/sequence.js +2409 -2411
  45. data/public/js/sequence_modal.js +152 -159
  46. data/public/js/share_url.js +23 -0
  47. data/public/js/sidebar.js +262 -83
  48. data/public/js/tests/advanced_parameters.spec.js +36 -0
  49. data/public/js/tests/database.spec.js +60 -0
  50. data/public/js/tests/mock_data/databases.json +91 -0
  51. data/public/js/tests/mock_data/long_response.json +269 -0
  52. data/public/js/tests/mock_data/sequences.js +32 -0
  53. data/public/js/tests/mock_data/short_response.json +2240 -0
  54. data/public/js/tests/report.spec.js +155 -0
  55. data/public/js/tests/search_button.spec.js +14 -0
  56. data/public/js/tests/search_query.spec.js +58 -0
  57. data/public/js/visualisation_helpers.js +1 -1
  58. data/public/packages/circosJS@1.7.0.js +1640 -0
  59. data/public/packages/jquery-ui@1.11.4.js +16624 -0
  60. data/public/sequenceserver-report.min.js +2425 -19
  61. data/public/sequenceserver-search.min.js +2337 -15
  62. data/public/vendor/github/jspm/nodelibs-assert@0.1.0/index.js +2 -0
  63. data/public/vendor/github/jspm/{nodelibs-buffer@0.1.0 → nodelibs-assert@0.1.0}/package.json +1 -1
  64. data/public/vendor/github/jspm/nodelibs-assert@0.1.0.js +1 -0
  65. data/public/vendor/github/jspm/nodelibs-buffer@0.1.1/package.json +6 -0
  66. data/public/vendor/github/jspm/nodelibs-buffer@0.1.1.js +1 -0
  67. data/public/vendor/github/jspm/{nodelibs-process@0.1.1 → nodelibs-process@0.1.2}/package.json +2 -2
  68. data/public/vendor/github/jspm/nodelibs-process@0.1.2.js +1 -0
  69. data/public/vendor/github/jspm/nodelibs-vm@0.1.0/index.js +2 -0
  70. data/public/vendor/github/jspm/nodelibs-vm@0.1.0/package.json +6 -0
  71. data/public/vendor/github/jspm/nodelibs-vm@0.1.0.js +1 -0
  72. data/public/vendor/npm/assert@1.5.0/CHANGELOG.md +8 -0
  73. data/public/vendor/npm/assert@1.5.0/README.md +105 -0
  74. data/public/vendor/npm/assert@1.5.0/assert.js +327 -0
  75. data/public/vendor/npm/assert@1.5.0/package.json +32 -0
  76. data/public/vendor/npm/assert@1.5.0/test.js +288 -0
  77. data/public/vendor/npm/assert@1.5.0.js +1 -0
  78. data/public/vendor/npm/{base64-js@0.0.8/LICENSE.MIT → base64-js@1.5.1/LICENSE} +1 -1
  79. data/public/vendor/npm/{base64-js@0.0.8 → base64-js@1.5.1}/README.md +10 -7
  80. data/public/vendor/npm/base64-js@1.5.1/base64js.min.js +3 -0
  81. data/public/vendor/npm/base64-js@1.5.1/index.d.ts +3 -0
  82. data/public/vendor/npm/base64-js@1.5.1/index.js +151 -0
  83. data/public/vendor/npm/base64-js@1.5.1/package.json +47 -0
  84. data/public/vendor/npm/base64-js@1.5.1.js +1 -0
  85. data/public/vendor/npm/buffer@5.7.1/AUTHORS.md +70 -0
  86. data/public/vendor/npm/{buffer@3.4.3 → buffer@5.7.1}/README.md +111 -41
  87. data/public/vendor/npm/buffer@5.7.1/index.d.ts +186 -0
  88. data/public/vendor/npm/buffer@5.7.1/index.js +1817 -0
  89. data/public/vendor/npm/buffer@5.7.1/package.json +96 -0
  90. data/public/vendor/npm/buffer@5.7.1.js +1 -0
  91. data/public/vendor/npm/core-util-is@1.0.3/LICENSE +19 -0
  92. data/public/vendor/npm/core-util-is@1.0.3/lib/util.js +64 -0
  93. data/public/vendor/npm/{core-util-is@1.0.1 → core-util-is@1.0.3}/package.json +13 -1
  94. data/public/vendor/npm/core-util-is@1.0.3.js +1 -0
  95. data/public/vendor/npm/events@1.0.2/tests/add-listeners.js +2 -2
  96. data/public/vendor/npm/events@1.0.2/tests/check-listener-leaks.js +3 -3
  97. data/public/vendor/npm/events@1.0.2/tests/common.js +1 -1
  98. data/public/vendor/npm/events@1.0.2/tests/index.js +13 -13
  99. data/public/vendor/npm/events@1.0.2/tests/listeners-side-effects.js +2 -2
  100. data/public/vendor/npm/events@1.0.2/tests/listeners.js +2 -2
  101. data/public/vendor/npm/events@1.0.2/tests/max-listeners.js +2 -2
  102. data/public/vendor/npm/events@1.0.2/tests/modify-in-emit.js +2 -2
  103. data/public/vendor/npm/events@1.0.2/tests/num-args.js +2 -2
  104. data/public/vendor/npm/events@1.0.2/tests/once.js +2 -2
  105. data/public/vendor/npm/events@1.0.2/tests/remove-all-listeners.js +3 -3
  106. data/public/vendor/npm/events@1.0.2/tests/remove-listeners.js +3 -3
  107. data/public/vendor/npm/events@1.0.2/tests/set-max-listeners-side-effects.js +2 -2
  108. data/public/vendor/npm/events@1.0.2/tests/subclass.js +3 -3
  109. data/public/vendor/npm/events@1.0.2.js +1 -1
  110. data/public/vendor/npm/ieee754@1.2.1/LICENSE +11 -0
  111. data/public/vendor/npm/{ieee754@1.1.6 → ieee754@1.2.1}/README.md +12 -8
  112. data/public/vendor/npm/ieee754@1.2.1/index.d.ts +10 -0
  113. data/public/vendor/npm/{ieee754@1.1.6 → ieee754@1.2.1}/index.js +6 -6
  114. data/public/vendor/npm/ieee754@1.2.1/package.json +52 -0
  115. data/public/vendor/npm/ieee754@1.2.1.js +1 -0
  116. data/public/vendor/npm/{is-array@1.0.1 → indexof@0.0.1}/Makefile +3 -3
  117. data/public/vendor/npm/indexof@0.0.1/Readme.md +15 -0
  118. data/public/vendor/npm/indexof@0.0.1/component.json +10 -0
  119. data/public/vendor/npm/indexof@0.0.1/index.js +11 -0
  120. data/public/vendor/npm/indexof@0.0.1/package.json +12 -0
  121. data/public/vendor/npm/indexof@0.0.1.js +1 -0
  122. data/public/vendor/npm/inherits@2.0.1/inherits.js +1 -1
  123. data/public/vendor/npm/inherits@2.0.1.js +1 -1
  124. data/public/vendor/npm/isarray@0.0.1.js +1 -1
  125. data/public/vendor/npm/js-tokens@4.0.0/index.js +23 -0
  126. data/public/vendor/npm/js-tokens@4.0.0/package.json +30 -0
  127. data/public/vendor/npm/js-tokens@4.0.0.js +1 -0
  128. data/public/vendor/npm/loose-envify@1.4.0/LICENSE +21 -0
  129. data/public/vendor/npm/loose-envify@1.4.0/README.md +45 -0
  130. data/public/vendor/npm/loose-envify@1.4.0/cli.js +12 -0
  131. data/public/vendor/npm/loose-envify@1.4.0/custom.js +3 -0
  132. data/public/vendor/npm/loose-envify@1.4.0/index.js +5 -0
  133. data/public/vendor/npm/loose-envify@1.4.0/loose-envify.js +33 -0
  134. data/public/vendor/npm/loose-envify@1.4.0/package.json +36 -0
  135. data/public/vendor/npm/loose-envify@1.4.0/replace.js +52 -0
  136. data/public/vendor/npm/loose-envify@1.4.0.js +1 -0
  137. data/public/vendor/npm/object-assign@4.1.1/index.js +90 -0
  138. data/public/vendor/npm/object-assign@4.1.1/package.json +42 -0
  139. data/public/vendor/npm/object-assign@4.1.1.js +1 -0
  140. data/public/vendor/npm/path-browserify@0.0.0/index.js +1 -1
  141. data/public/vendor/npm/path-browserify@0.0.0.js +1 -1
  142. data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/README.md +4 -1
  143. data/public/vendor/npm/process@0.11.10/browser.js +184 -0
  144. data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/package.json +10 -1
  145. data/public/vendor/npm/process@0.11.10/test.js +185 -0
  146. data/public/vendor/npm/process@0.11.10.js +1 -0
  147. data/public/vendor/npm/react-dom@18.0.0/LICENSE +21 -0
  148. data/public/vendor/npm/react-dom@18.0.0/README.md +50 -0
  149. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.browser.development.js +4771 -0
  150. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.browser.production.min.js +85 -0
  151. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.node.development.js +4813 -0
  152. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.node.production.min.js +1705 -0
  153. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.browser.development.js +4746 -0
  154. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.browser.production.min.js +90 -0
  155. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.node.development.js +4714 -0
  156. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.node.production.min.js +1746 -0
  157. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-test-utils.development.js +1017 -0
  158. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-test-utils.production.min.js +617 -0
  159. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.development.js +20092 -0
  160. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.production.min.js +322 -0
  161. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.profiling.min.js +364 -0
  162. data/public/vendor/npm/react-dom@18.0.0/client.js +27 -0
  163. data/public/vendor/npm/react-dom@18.0.0/index.js +23 -0
  164. data/public/vendor/npm/react-dom@18.0.0/package.json +62 -0
  165. data/public/vendor/npm/react-dom@18.0.0/profiling.js +23 -0
  166. data/public/vendor/npm/react-dom@18.0.0/server.browser.js +19 -0
  167. data/public/vendor/npm/react-dom@18.0.0/server.js +3 -0
  168. data/public/vendor/npm/react-dom@18.0.0/server.node.js +19 -0
  169. data/public/vendor/npm/react-dom@18.0.0/test-utils.js +9 -0
  170. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server-legacy.browser.development.js +4770 -0
  171. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server-legacy.browser.production.min.js +72 -0
  172. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server.browser.development.js +4745 -0
  173. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server.browser.production.min.js +74 -0
  174. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-test-utils.development.js +1013 -0
  175. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-test-utils.production.min.js +625 -0
  176. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.development.js +20106 -0
  177. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.production.min.js +269 -0
  178. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.profiling.min.js +285 -0
  179. data/public/vendor/npm/react-dom@18.0.0.js +1 -0
  180. data/public/vendor/npm/react@18.0.0/LICENSE +21 -0
  181. data/public/vendor/npm/react@18.0.0/README.md +13 -0
  182. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.development.js +837 -0
  183. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.production.min.js +10 -0
  184. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.profiling.min.js +10 -0
  185. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.development.js +849 -0
  186. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.production.min.js +38 -0
  187. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.profiling.min.js +38 -0
  188. data/public/vendor/npm/react@18.0.0/cjs/react.development.js +1746 -0
  189. data/public/vendor/npm/react@18.0.0/cjs/react.production.min.js +26 -0
  190. data/public/vendor/npm/react@18.0.0/cjs/react.shared-subset.development.js +10 -0
  191. data/public/vendor/npm/react@18.0.0/cjs/react.shared-subset.production.min.js +12 -0
  192. data/public/vendor/npm/react@18.0.0/index.js +9 -0
  193. data/public/vendor/npm/react@18.0.0/jsx-dev-runtime.js +9 -0
  194. data/public/vendor/npm/react@18.0.0/jsx-runtime.js +9 -0
  195. data/public/vendor/npm/react@18.0.0/package.json +47 -0
  196. data/public/vendor/npm/react@18.0.0/react.shared-subset.js +9 -0
  197. data/public/vendor/npm/react@18.0.0/umd/react.development.js +2186 -0
  198. data/public/vendor/npm/react@18.0.0/umd/react.production.min.js +33 -0
  199. data/public/vendor/npm/react@18.0.0/umd/react.profiling.min.js +33 -0
  200. data/public/vendor/npm/react@18.0.0.js +1 -0
  201. data/public/vendor/npm/readable-stream@1.1.14/LICENSE +18 -0
  202. data/public/vendor/npm/readable-stream@1.1.14/duplex.js +2 -0
  203. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_duplex.js +5 -5
  204. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_passthrough.js +3 -3
  205. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_readable.js +10 -10
  206. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_transform.js +4 -4
  207. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_writable.js +6 -6
  208. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/package.json +1 -1
  209. data/public/vendor/npm/readable-stream@1.1.14/passthrough.js +2 -0
  210. data/public/vendor/npm/readable-stream@1.1.14/readable.js +13 -0
  211. data/public/vendor/npm/readable-stream@1.1.14/transform.js +2 -0
  212. data/public/vendor/npm/readable-stream@1.1.14/writable.js +2 -0
  213. data/public/vendor/npm/readable-stream@1.1.14.js +1 -0
  214. data/public/vendor/npm/scheduler@0.21.0/LICENSE +21 -0
  215. data/public/vendor/npm/scheduler@0.21.0/README.md +9 -0
  216. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_mock.development.js +530 -0
  217. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_mock.production.min.js +20 -0
  218. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_post_task.development.js +153 -0
  219. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_post_task.production.min.js +14 -0
  220. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler.development.js +444 -0
  221. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler.production.min.js +19 -0
  222. data/public/vendor/npm/scheduler@0.21.0/index.js +9 -0
  223. data/public/vendor/npm/scheduler@0.21.0/package.json +36 -0
  224. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler-unstable_mock.development.js +701 -0
  225. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler-unstable_mock.production.min.js +21 -0
  226. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.development.js +154 -0
  227. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.production.min.js +148 -0
  228. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.profiling.min.js +148 -0
  229. data/public/vendor/npm/scheduler@0.21.0/unstable_mock.js +9 -0
  230. data/public/vendor/npm/scheduler@0.21.0/unstable_post_task.js +9 -0
  231. data/public/vendor/npm/scheduler@0.21.0.js +1 -0
  232. data/public/vendor/npm/stream-browserify@1.0.0/index.js +7 -7
  233. data/public/vendor/npm/stream-browserify@1.0.0/test/buf.js +5 -5
  234. data/public/vendor/npm/stream-browserify@1.0.0.js +1 -1
  235. data/public/vendor/npm/string_decoder@0.10.31/index.js +2 -2
  236. data/public/vendor/npm/string_decoder@0.10.31.js +1 -1
  237. data/public/vendor/npm/util@0.10.3/support/isBuffer.js +1 -1
  238. data/public/vendor/npm/util@0.10.3/test/browser/inspect.js +2 -2
  239. data/public/vendor/npm/util@0.10.3/test/browser/is.js +3 -3
  240. data/public/vendor/npm/util@0.10.3/test/node/debug.js +4 -4
  241. data/public/vendor/npm/util@0.10.3/test/node/format.js +2 -2
  242. data/public/vendor/npm/util@0.10.3/test/node/inspect.js +3 -3
  243. data/public/vendor/npm/util@0.10.3/test/node/log.js +3 -3
  244. data/public/vendor/npm/util@0.10.3/test/node/util.js +3 -3
  245. data/public/vendor/npm/util@0.10.3/util.js +3 -3
  246. data/public/vendor/npm/util@0.10.3.js +1 -1
  247. data/public/vendor/npm/vm-browserify@0.0.4/LICENSE +18 -0
  248. data/public/vendor/npm/vm-browserify@0.0.4/example/run/bundle.js +376 -0
  249. data/public/vendor/npm/vm-browserify@0.0.4/example/run/entry.js +6 -0
  250. data/public/vendor/npm/vm-browserify@0.0.4/example/run/index.html +9 -0
  251. data/public/vendor/npm/vm-browserify@0.0.4/example/run/server.js +6 -0
  252. data/public/vendor/npm/vm-browserify@0.0.4/index.js +139 -0
  253. data/public/vendor/npm/vm-browserify@0.0.4/package.json +46 -0
  254. data/public/vendor/npm/vm-browserify@0.0.4/readme.markdown +67 -0
  255. data/public/vendor/npm/vm-browserify@0.0.4/test/vm.js +34 -0
  256. data/public/vendor/npm/vm-browserify@0.0.4.js +1 -0
  257. data/public/vendor/npm/webshim@1.15.8/Gruntfile.js +4 -4
  258. data/public/vendor/npm/webshim@1.15.8/build/combobuild.js +2 -2
  259. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/color-picker.js +1 -1
  260. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/10.js +1 -1
  261. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/11.js +1 -1
  262. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/17.js +1 -1
  263. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/5.js +1 -1
  264. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/6.js +1 -1
  265. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/9.js +1 -1
  266. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/es6.js +1 -1
  267. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/excanvas.js +1 -1
  268. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/form-number-date-ui.js +1 -1
  269. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/moxie/js/moxie-html4.js +1 -1
  270. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/moxie/js/moxie-swf.js +1 -1
  271. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/sizzle.js +1 -1
  272. data/public/vendor/npm/webshim@1.15.8/js-webshim/minified/shims/es6.js +1 -1
  273. data/public/vendor/npm/webshim@1.15.8/src/shims/color-picker.js +1 -1
  274. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/10.js +1 -1
  275. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/11.js +1 -1
  276. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/17.js +1 -1
  277. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/5.js +1 -1
  278. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/6.js +1 -1
  279. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/9.js +1 -1
  280. data/public/vendor/npm/webshim@1.15.8/src/shims/es6.js +1 -1
  281. data/public/vendor/npm/webshim@1.15.8/src/shims/excanvas.js +1 -1
  282. data/public/vendor/npm/webshim@1.15.8/src/shims/form-number-date-ui.js +1 -1
  283. data/public/vendor/npm/webshim@1.15.8/src/shims/moxie/js/moxie-html4.js +1 -1
  284. data/public/vendor/npm/webshim@1.15.8/src/shims/moxie/js/moxie-swf.js +1 -1
  285. data/public/vendor/npm/webshim@1.15.8/src/shims/sizzle.js +1 -1
  286. data/public/vendor/npm/webshim@1.15.8/tests/dist/jquery.js +1 -1
  287. data/public/vendor/npm/webshim@1.15.8/tests/jquery/unit/core.js +1 -1
  288. data/public/vendor/npm/webshim@1.15.8/tests/jquery/unit/event.js +1388 -711
  289. data/public/vendor/npm/webshim@1.15.8/tests/qunit/qunit.js +1 -1
  290. data/public/vendor/npm/webshim@1.15.8/tests/test-ext/jquery-1-custom.js +1 -1
  291. data/public/vendor/npm/webshim@1.15.8/tests/test-ext/jquery-2-custom.js +1 -1
  292. data/public/vendor/npm/webshim@1.15.8/tests/test-ext/punycode.js +1 -1
  293. data/public/vendor/system-polyfills.js +865 -1
  294. data/views/blastn_options.erb +291 -0
  295. data/views/blastp_options.erb +288 -0
  296. data/views/blastx_options.erb +318 -0
  297. data/views/error.erb +12 -0
  298. data/views/layout.erb +2 -30
  299. data/views/report.erb +0 -8
  300. data/views/search.erb +16 -9
  301. data/views/tblastn_options.erb +266 -0
  302. data/views/tblastx_options.erb +291 -0
  303. metadata +320 -439
  304. data/public/vendor/github/jspm/nodelibs-buffer@0.1.0.js +0 -1
  305. data/public/vendor/github/jspm/nodelibs-module@0.1.0/index.js +0 -1
  306. data/public/vendor/github/jspm/nodelibs-module@0.1.0.js +0 -1
  307. data/public/vendor/github/jspm/nodelibs-process@0.1.1.js +0 -1
  308. data/public/vendor/npm/amdefine@1.0.0/LICENSE +0 -58
  309. data/public/vendor/npm/amdefine@1.0.0/README.md +0 -171
  310. data/public/vendor/npm/amdefine@1.0.0/amdefine.js +0 -200
  311. data/public/vendor/npm/amdefine@1.0.0/intercept.js +0 -24
  312. data/public/vendor/npm/amdefine@1.0.0/package.json +0 -16
  313. data/public/vendor/npm/amdefine@1.0.0.js +0 -1
  314. data/public/vendor/npm/base62@0.1.1/LICENSE +0 -20
  315. data/public/vendor/npm/base62@0.1.1/Readme.md +0 -30
  316. data/public/vendor/npm/base62@0.1.1/base62.js +0 -28
  317. data/public/vendor/npm/base62@0.1.1/package.json +0 -21
  318. data/public/vendor/npm/base62@0.1.1/test/test.js +0 -13
  319. data/public/vendor/npm/base62@0.1.1.js +0 -1
  320. data/public/vendor/npm/base64-js@0.0.8/lib/b64.js +0 -125
  321. data/public/vendor/npm/base64-js@0.0.8/package.json +0 -34
  322. data/public/vendor/npm/base64-js@0.0.8/test/convert.js +0 -39
  323. data/public/vendor/npm/base64-js@0.0.8/test/url-safe.js +0 -15
  324. data/public/vendor/npm/base64-js@0.0.8.js +0 -1
  325. data/public/vendor/npm/buffer@3.4.3/index.js +0 -1533
  326. data/public/vendor/npm/buffer@3.4.3/package.json +0 -67
  327. data/public/vendor/npm/buffer@3.4.3/test/_polyfill.js +0 -152
  328. data/public/vendor/npm/buffer@3.4.3/test/base64.js +0 -33
  329. data/public/vendor/npm/buffer@3.4.3/test/basic.js +0 -58
  330. data/public/vendor/npm/buffer@3.4.3/test/compare.js +0 -53
  331. data/public/vendor/npm/buffer@3.4.3/test/constructor.js +0 -132
  332. data/public/vendor/npm/buffer@3.4.3/test/deprecated.js +0 -21
  333. data/public/vendor/npm/buffer@3.4.3/test/from-string.js +0 -105
  334. data/public/vendor/npm/buffer@3.4.3/test/methods.js +0 -109
  335. data/public/vendor/npm/buffer@3.4.3/test/node/README.txt +0 -1
  336. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-ascii.js +0 -20
  337. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-bytelength.js +0 -38
  338. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-concat.js +0 -26
  339. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-indexof.js +0 -78
  340. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-inspect.js +0 -31
  341. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer.js +0 -804
  342. data/public/vendor/npm/buffer@3.4.3/test/node-es6/README.txt +0 -1
  343. data/public/vendor/npm/buffer@3.4.3/test/node-es6/test-buffer-arraybuffer.js +0 -37
  344. data/public/vendor/npm/buffer@3.4.3/test/node-es6/test-buffer-iterator.js +0 -32
  345. data/public/vendor/npm/buffer@3.4.3/test/slice.js +0 -33
  346. data/public/vendor/npm/buffer@3.4.3/test/static.js +0 -32
  347. data/public/vendor/npm/buffer@3.4.3/test/to-string.js +0 -106
  348. data/public/vendor/npm/buffer@3.4.3/test/write.js +0 -90
  349. data/public/vendor/npm/buffer@3.4.3.js +0 -1
  350. data/public/vendor/npm/core-util-is@1.0.1/float.patch +0 -604
  351. data/public/vendor/npm/core-util-is@1.0.1/lib/util.js +0 -66
  352. data/public/vendor/npm/core-util-is@1.0.1/util.js +0 -66
  353. data/public/vendor/npm/core-util-is@1.0.1.js +0 -1
  354. data/public/vendor/npm/envify@3.4.0/README.md +0 -145
  355. data/public/vendor/npm/envify@3.4.0/bin/envify +0 -17
  356. data/public/vendor/npm/envify@3.4.0/custom.js +0 -33
  357. data/public/vendor/npm/envify@3.4.0/index.js +0 -4
  358. data/public/vendor/npm/envify@3.4.0/package.json +0 -35
  359. data/public/vendor/npm/envify@3.4.0/visitors.js +0 -33
  360. data/public/vendor/npm/envify@3.4.0.js +0 -1
  361. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/bin/esparse.js +0 -90
  362. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/bin/esvalidate.js +0 -145
  363. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/esprima.js +0 -6191
  364. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/package.json +0 -72
  365. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/compat.js +0 -167
  366. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/reflect.js +0 -421
  367. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/run.js +0 -34
  368. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/runner.js +0 -418
  369. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/test.js +0 -34730
  370. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb.js +0 -1
  371. data/public/vendor/npm/ieee754@1.1.6/LICENSE +0 -56
  372. data/public/vendor/npm/ieee754@1.1.6/package.json +0 -34
  373. data/public/vendor/npm/ieee754@1.1.6/test/basic.js +0 -20
  374. data/public/vendor/npm/ieee754@1.1.6.js +0 -1
  375. data/public/vendor/npm/is-array@1.0.1/History.md +0 -11
  376. data/public/vendor/npm/is-array@1.0.1/Readme.md +0 -27
  377. data/public/vendor/npm/is-array@1.0.1/component.json +0 -13
  378. data/public/vendor/npm/is-array@1.0.1/index.js +0 -33
  379. data/public/vendor/npm/is-array@1.0.1/package.json +0 -10
  380. data/public/vendor/npm/is-array@1.0.1/test/test.html +0 -46
  381. data/public/vendor/npm/is-array@1.0.1.js +0 -1
  382. data/public/vendor/npm/jstransform@10.1.0/LICENSE +0 -201
  383. data/public/vendor/npm/jstransform@10.1.0/README.md +0 -98
  384. data/public/vendor/npm/jstransform@10.1.0/jestEnvironment.js +0 -3
  385. data/public/vendor/npm/jstransform@10.1.0/jestPreprocessor.js +0 -8
  386. data/public/vendor/npm/jstransform@10.1.0/package.json +0 -52
  387. data/public/vendor/npm/jstransform@10.1.0/polyfill/Object.es6.js +0 -54
  388. data/public/vendor/npm/jstransform@10.1.0/src/__tests__/jstransform-test.js +0 -246
  389. data/public/vendor/npm/jstransform@10.1.0/src/__tests__/jstransform-utils-test.js +0 -31
  390. data/public/vendor/npm/jstransform@10.1.0/src/docblock.js +0 -86
  391. data/public/vendor/npm/jstransform@10.1.0/src/jstransform.js +0 -180
  392. data/public/vendor/npm/jstransform@10.1.0/src/utils.js +0 -386
  393. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-arrow-function-visitors-test.js +0 -57
  394. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-call-spread-visitors-test.js +0 -46
  395. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-class-visitors-test.js +0 -463
  396. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-destructuring-visitors-test.js +0 -144
  397. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-es7-object-integration-test.js +0 -40
  398. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-object-concise-method-visitors-test.js +0 -47
  399. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-object-short-notation-visitors-test.js +0 -33
  400. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-rest-param-visitors-test.js +0 -119
  401. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-template-visitors-test.js +0 -138
  402. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es7-rest-property-helpers-test.js +0 -47
  403. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es7-spread-property-visitors-test.js +0 -90
  404. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/gen/generate-type-syntax-test.js +0 -40
  405. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/gen/type-syntax-test.rec.js +0 -846
  406. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/reserved-words-test.js +0 -40
  407. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-alias-syntax-test.js +0 -34
  408. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-class-syntax-test.js +0 -105
  409. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-function-syntax-test.js +0 -126
  410. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-interface-syntax-test.js +0 -29
  411. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-object-method-syntax-test.js +0 -65
  412. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-pattern-syntax-test.js +0 -45
  413. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-syntax-test.js +0 -46
  414. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-variable-declaration-syntax-test.js +0 -102
  415. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-arrow-function-visitors.js +0 -66
  416. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-call-spread-visitors.js +0 -72
  417. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-class-visitors.js +0 -316
  418. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-destructuring-visitors.js +0 -135
  419. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-object-concise-method-visitors.js +0 -28
  420. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-object-short-notation-visitors.js +0 -12
  421. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-rest-param-visitors.js +0 -45
  422. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-template-visitors.js +0 -90
  423. data/public/vendor/npm/jstransform@10.1.0/visitors/es7-rest-property-helpers.js +0 -80
  424. data/public/vendor/npm/jstransform@10.1.0/visitors/es7-spread-property-visitors.js +0 -56
  425. data/public/vendor/npm/jstransform@10.1.0/visitors/reserved-words-helper.js +0 -74
  426. data/public/vendor/npm/jstransform@10.1.0/visitors/reserved-words-visitors.js +0 -30
  427. data/public/vendor/npm/jstransform@10.1.0/visitors/type-syntax.js +0 -118
  428. data/public/vendor/npm/jstransform@10.1.0.js +0 -1
  429. data/public/vendor/npm/process@0.10.1/browser.js +0 -58
  430. data/public/vendor/npm/process@0.10.1.js +0 -1
  431. data/public/vendor/npm/qs@2.4.1/test/stringify.js +0 -162
  432. data/public/vendor/npm/react@0.13.3/README.md +0 -20
  433. data/public/vendor/npm/react@0.13.3/addons.js +0 -2
  434. data/public/vendor/npm/react@0.13.3/dist/JSXTransformer.js +0 -11346
  435. data/public/vendor/npm/react@0.13.3/dist/react-with-addons.js +0 -10483
  436. data/public/vendor/npm/react@0.13.3/dist/react-with-addons.min.js +0 -7297
  437. data/public/vendor/npm/react@0.13.3/dist/react.js +0 -9468
  438. data/public/vendor/npm/react@0.13.3/dist/react.min.js +0 -6764
  439. data/public/vendor/npm/react@0.13.3/lib/AutoFocusMixin.js +0 -9
  440. data/public/vendor/npm/react@0.13.3/lib/BeforeInputEventPlugin.js +0 -197
  441. data/public/vendor/npm/react@0.13.3/lib/CSSCore.js +0 -39
  442. data/public/vendor/npm/react@0.13.3/lib/CSSProperty.js +0 -123
  443. data/public/vendor/npm/react@0.13.3/lib/CSSPropertyOperations.js +0 -103
  444. data/public/vendor/npm/react@0.13.3/lib/CallbackQueue.js +0 -43
  445. data/public/vendor/npm/react@0.13.3/lib/ChangeEventPlugin.js +0 -174
  446. data/public/vendor/npm/react@0.13.3/lib/ClientReactRootIndex.js +0 -23
  447. data/public/vendor/npm/react@0.13.3/lib/DOMChildrenOperations.js +0 -57
  448. data/public/vendor/npm/react@0.13.3/lib/DOMProperty.js +0 -96
  449. data/public/vendor/npm/react@0.13.3/lib/DOMPropertyOperations.js +0 -99
  450. data/public/vendor/npm/react@0.13.3/lib/Danger.js +0 -67
  451. data/public/vendor/npm/react@0.13.3/lib/DefaultEventPluginOrder.js +0 -5
  452. data/public/vendor/npm/react@0.13.3/lib/EnterLeaveEventPlugin.js +0 -69
  453. data/public/vendor/npm/react@0.13.3/lib/EventConstants.js +0 -55
  454. data/public/vendor/npm/react@0.13.3/lib/EventListener.js +0 -34
  455. data/public/vendor/npm/react@0.13.3/lib/EventPluginHub.js +0 -103
  456. data/public/vendor/npm/react@0.13.3/lib/EventPluginRegistry.js +0 -115
  457. data/public/vendor/npm/react@0.13.3/lib/EventPluginUtils.js +0 -121
  458. data/public/vendor/npm/react@0.13.3/lib/EventPropagators.js +0 -62
  459. data/public/vendor/npm/react@0.13.3/lib/ExecutionEnvironment.js +0 -42
  460. data/public/vendor/npm/react@0.13.3/lib/FallbackCompositionState.js +0 -45
  461. data/public/vendor/npm/react@0.13.3/lib/HTMLDOMPropertyConfig.js +0 -155
  462. data/public/vendor/npm/react@0.13.3/lib/LinkedStateMixin.js +0 -8
  463. data/public/vendor/npm/react@0.13.3/lib/LinkedValueUtils.js +0 -74
  464. data/public/vendor/npm/react@0.13.3/lib/LocalEventTrapMixin.js +0 -26
  465. data/public/vendor/npm/react@0.13.3/lib/MobileSafariClickEventPlugin.js +0 -17
  466. data/public/vendor/npm/react@0.13.3/lib/Object.assign.js +0 -47
  467. data/public/vendor/npm/react@0.13.3/lib/PooledClass.js +0 -75
  468. data/public/vendor/npm/react@0.13.3/lib/React.js +0 -93
  469. data/public/vendor/npm/react@0.13.3/lib/ReactBrowserComponentMixin.js +0 -7
  470. data/public/vendor/npm/react@0.13.3/lib/ReactBrowserEventEmitter.js +0 -136
  471. data/public/vendor/npm/react@0.13.3/lib/ReactCSSTransitionGroup.js +0 -34
  472. data/public/vendor/npm/react@0.13.3/lib/ReactCSSTransitionGroupChild.js +0 -92
  473. data/public/vendor/npm/react@0.13.3/lib/ReactChildReconciler.js +0 -57
  474. data/public/vendor/npm/react@0.13.3/lib/ReactChildren.js +0 -67
  475. data/public/vendor/npm/react@0.13.3/lib/ReactClass.js +0 -338
  476. data/public/vendor/npm/react@0.13.3/lib/ReactComponent.js +0 -50
  477. data/public/vendor/npm/react@0.13.3/lib/ReactComponentBrowserEnvironment.js +0 -14
  478. data/public/vendor/npm/react@0.13.3/lib/ReactComponentEnvironment.js +0 -19
  479. data/public/vendor/npm/react@0.13.3/lib/ReactComponentWithPureRenderMixin.js +0 -7
  480. data/public/vendor/npm/react@0.13.3/lib/ReactCompositeComponent.js +0 -374
  481. data/public/vendor/npm/react@0.13.3/lib/ReactContext.js +0 -27
  482. data/public/vendor/npm/react@0.13.3/lib/ReactCurrentOwner.js +0 -32
  483. data/public/vendor/npm/react@0.13.3/lib/ReactDOM.js +0 -146
  484. data/public/vendor/npm/react@0.13.3/lib/ReactDOMButton.js +0 -35
  485. data/public/vendor/npm/react@0.13.3/lib/ReactDOMComponent.js +0 -267
  486. data/public/vendor/npm/react@0.13.3/lib/ReactDOMForm.js +0 -21
  487. data/public/vendor/npm/react@0.13.3/lib/ReactDOMIDOperations.js +0 -63
  488. data/public/vendor/npm/react@0.13.3/lib/ReactDOMIframe.js +0 -20
  489. data/public/vendor/npm/react@0.13.3/lib/ReactDOMImg.js +0 -21
  490. data/public/vendor/npm/react@0.13.3/lib/ReactDOMInput.js +0 -94
  491. data/public/vendor/npm/react@0.13.3/lib/ReactDOMOption.js +0 -23
  492. data/public/vendor/npm/react@0.13.3/lib/ReactDOMSelect.js +0 -112
  493. data/public/vendor/npm/react@0.13.3/lib/ReactDOMSelection.js +0 -103
  494. data/public/vendor/npm/react@0.13.3/lib/ReactDOMTextComponent.js +0 -38
  495. data/public/vendor/npm/react@0.13.3/lib/ReactDOMTextarea.js +0 -70
  496. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultBatchingStrategy.js +0 -37
  497. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultInjection.js +0 -93
  498. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultPerf.js +0 -183
  499. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultPerfAnalysis.js +0 -145
  500. data/public/vendor/npm/react@0.13.3/lib/ReactElement.js +0 -151
  501. data/public/vendor/npm/react@0.13.3/lib/ReactElementValidator.js +0 -218
  502. data/public/vendor/npm/react@0.13.3/lib/ReactEmptyComponent.js +0 -47
  503. data/public/vendor/npm/react@0.13.3/lib/ReactErrorUtils.js +0 -30
  504. data/public/vendor/npm/react@0.13.3/lib/ReactEventEmitterMixin.js +0 -12
  505. data/public/vendor/npm/react@0.13.3/lib/ReactEventListener.js +0 -93
  506. data/public/vendor/npm/react@0.13.3/lib/ReactFragment.js +0 -110
  507. data/public/vendor/npm/react@0.13.3/lib/ReactInjection.js +0 -27
  508. data/public/vendor/npm/react@0.13.3/lib/ReactInputSelection.js +0 -75
  509. data/public/vendor/npm/react@0.13.3/lib/ReactInstanceHandles.js +0 -113
  510. data/public/vendor/npm/react@0.13.3/lib/ReactInstanceMap.js +0 -47
  511. data/public/vendor/npm/react@0.13.3/lib/ReactLifeCycle.js +0 -9
  512. data/public/vendor/npm/react@0.13.3/lib/ReactLink.js +0 -16
  513. data/public/vendor/npm/react@0.13.3/lib/ReactMarkupChecksum.js +0 -17
  514. data/public/vendor/npm/react@0.13.3/lib/ReactMount.js +0 -347
  515. data/public/vendor/npm/react@0.13.3/lib/ReactMultiChild.js +0 -190
  516. data/public/vendor/npm/react@0.13.3/lib/ReactMultiChildUpdateTypes.js +0 -10
  517. data/public/vendor/npm/react@0.13.3/lib/ReactNativeComponent.js +0 -53
  518. data/public/vendor/npm/react@0.13.3/lib/ReactOwner.js +0 -21
  519. data/public/vendor/npm/react@0.13.3/lib/ReactPerf.js +0 -42
  520. data/public/vendor/npm/react@0.13.3/lib/ReactPropTransferer.js +0 -40
  521. data/public/vendor/npm/react@0.13.3/lib/ReactPropTypeLocationNames.js +0 -13
  522. data/public/vendor/npm/react@0.13.3/lib/ReactPropTypeLocations.js +0 -9
  523. data/public/vendor/npm/react@0.13.3/lib/ReactPropTypes.js +0 -225
  524. data/public/vendor/npm/react@0.13.3/lib/ReactPutListenerQueue.js +0 -31
  525. data/public/vendor/npm/react@0.13.3/lib/ReactReconcileTransaction.js +0 -66
  526. data/public/vendor/npm/react@0.13.3/lib/ReactReconciler.js +0 -44
  527. data/public/vendor/npm/react@0.13.3/lib/ReactRef.js +0 -36
  528. data/public/vendor/npm/react@0.13.3/lib/ReactRootIndex.js +0 -29
  529. data/public/vendor/npm/react@0.13.3/lib/ReactServerRendering.js +0 -44
  530. data/public/vendor/npm/react@0.13.3/lib/ReactServerRenderingTransaction.js +0 -47
  531. data/public/vendor/npm/react@0.13.3/lib/ReactStateSetters.js +0 -104
  532. data/public/vendor/npm/react@0.13.3/lib/ReactTestUtils.js +0 -249
  533. data/public/vendor/npm/react@0.13.3/lib/ReactTransitionChildMapping.js +0 -53
  534. data/public/vendor/npm/react@0.13.3/lib/ReactTransitionEvents.js +0 -68
  535. data/public/vendor/npm/react@0.13.3/lib/ReactTransitionGroup.js +0 -140
  536. data/public/vendor/npm/react@0.13.3/lib/ReactUpdateQueue.js +0 -107
  537. data/public/vendor/npm/react@0.13.3/lib/ReactUpdates.js +0 -139
  538. data/public/vendor/npm/react@0.13.3/lib/ReactWithAddons.js +0 -30
  539. data/public/vendor/npm/react@0.13.3/lib/SVGDOMPropertyConfig.js +0 -76
  540. data/public/vendor/npm/react@0.13.3/lib/SelectEventPlugin.js +0 -91
  541. data/public/vendor/npm/react@0.13.3/lib/ServerReactRootIndex.js +0 -29
  542. data/public/vendor/npm/react@0.13.3/lib/SimpleEventPlugin.js +0 -287
  543. data/public/vendor/npm/react@0.13.3/lib/SyntheticClipboardEvent.js +0 -11
  544. data/public/vendor/npm/react@0.13.3/lib/SyntheticCompositionEvent.js +0 -9
  545. data/public/vendor/npm/react@0.13.3/lib/SyntheticDragEvent.js +0 -9
  546. data/public/vendor/npm/react@0.13.3/lib/SyntheticEvent.js +0 -90
  547. data/public/vendor/npm/react@0.13.3/lib/SyntheticFocusEvent.js +0 -9
  548. data/public/vendor/npm/react@0.13.3/lib/SyntheticInputEvent.js +0 -9
  549. data/public/vendor/npm/react@0.13.3/lib/SyntheticKeyboardEvent.js +0 -43
  550. data/public/vendor/npm/react@0.13.3/lib/SyntheticMouseEvent.js +0 -38
  551. data/public/vendor/npm/react@0.13.3/lib/SyntheticTouchEvent.js +0 -19
  552. data/public/vendor/npm/react@0.13.3/lib/SyntheticUIEvent.js +0 -29
  553. data/public/vendor/npm/react@0.13.3/lib/SyntheticWheelEvent.js +0 -18
  554. data/public/vendor/npm/react@0.13.3/lib/Transaction.js +0 -90
  555. data/public/vendor/npm/react@0.13.3/lib/ViewportMetrics.js +0 -27
  556. data/public/vendor/npm/react@0.13.3/lib/accumulateInto.js +0 -26
  557. data/public/vendor/npm/react@0.13.3/lib/adler32.js +0 -32
  558. data/public/vendor/npm/react@0.13.3/lib/camelize.js +0 -30
  559. data/public/vendor/npm/react@0.13.3/lib/camelizeStyleName.js +0 -8
  560. data/public/vendor/npm/react@0.13.3/lib/cloneWithProps.js +0 -20
  561. data/public/vendor/npm/react@0.13.3/lib/containsNode.js +0 -20
  562. data/public/vendor/npm/react@0.13.3/lib/createArrayFromMixed.js +0 -15
  563. data/public/vendor/npm/react@0.13.3/lib/createFullPageComponent.js +0 -22
  564. data/public/vendor/npm/react@0.13.3/lib/createNodesFromMarkup.js +0 -39
  565. data/public/vendor/npm/react@0.13.3/lib/cx.js +0 -20
  566. data/public/vendor/npm/react@0.13.3/lib/dangerousStyleValue.js +0 -19
  567. data/public/vendor/npm/react@0.13.3/lib/emptyFunction.js +0 -32
  568. data/public/vendor/npm/react@0.13.3/lib/emptyObject.js +0 -9
  569. data/public/vendor/npm/react@0.13.3/lib/escapeTextContentForBrowser.js +0 -38
  570. data/public/vendor/npm/react@0.13.3/lib/findDOMNode.js +0 -31
  571. data/public/vendor/npm/react@0.13.3/lib/flattenChildren.js +0 -25
  572. data/public/vendor/npm/react@0.13.3/lib/focusNode.js +0 -27
  573. data/public/vendor/npm/react@0.13.3/lib/forEachAccumulated.js +0 -29
  574. data/public/vendor/npm/react@0.13.3/lib/getActiveElement.js +0 -27
  575. data/public/vendor/npm/react@0.13.3/lib/getEventCharCode.js +0 -50
  576. data/public/vendor/npm/react@0.13.3/lib/getEventKey.js +0 -72
  577. data/public/vendor/npm/react@0.13.3/lib/getEventModifierState.js +0 -45
  578. data/public/vendor/npm/react@0.13.3/lib/getEventTarget.js +0 -29
  579. data/public/vendor/npm/react@0.13.3/lib/getIteratorFn.js +0 -42
  580. data/public/vendor/npm/react@0.13.3/lib/getMarkupWrap.js +0 -73
  581. data/public/vendor/npm/react@0.13.3/lib/getNodeForCharacterOffset.js +0 -73
  582. data/public/vendor/npm/react@0.13.3/lib/getReactRootElementInContainer.js +0 -33
  583. data/public/vendor/npm/react@0.13.3/lib/getTextContentAccessor.js +0 -11
  584. data/public/vendor/npm/react@0.13.3/lib/getUnboundedScrollPosition.js +0 -38
  585. data/public/vendor/npm/react@0.13.3/lib/hyphenate.js +0 -31
  586. data/public/vendor/npm/react@0.13.3/lib/hyphenateStyleName.js +0 -8
  587. data/public/vendor/npm/react@0.13.3/lib/instantiateReactComponent.js +0 -55
  588. data/public/vendor/npm/react@0.13.3/lib/invariant.js +0 -26
  589. data/public/vendor/npm/react@0.13.3/lib/isEventSupported.js +0 -24
  590. data/public/vendor/npm/react@0.13.3/lib/isNode.js +0 -25
  591. data/public/vendor/npm/react@0.13.3/lib/isTextInputElement.js +0 -41
  592. data/public/vendor/npm/react@0.13.3/lib/isTextNode.js +0 -6
  593. data/public/vendor/npm/react@0.13.3/lib/joinClasses.js +0 -39
  594. data/public/vendor/npm/react@0.13.3/lib/keyMirror.js +0 -18
  595. data/public/vendor/npm/react@0.13.3/lib/keyOf.js +0 -34
  596. data/public/vendor/npm/react@0.13.3/lib/mapObject.js +0 -51
  597. data/public/vendor/npm/react@0.13.3/lib/memoizeStringOnly.js +0 -31
  598. data/public/vendor/npm/react@0.13.3/lib/onlyChild.js +0 -11
  599. data/public/vendor/npm/react@0.13.3/lib/performance.js +0 -8
  600. data/public/vendor/npm/react@0.13.3/lib/performanceNow.js +0 -7
  601. data/public/vendor/npm/react@0.13.3/lib/quoteAttributeValueForBrowser.js +0 -7
  602. data/public/vendor/npm/react@0.13.3/lib/setInnerHTML.js +0 -40
  603. data/public/vendor/npm/react@0.13.3/lib/setTextContent.js +0 -16
  604. data/public/vendor/npm/react@0.13.3/lib/shallowEqual.js +0 -42
  605. data/public/vendor/npm/react@0.13.3/lib/shouldUpdateReactComponent.js +0 -51
  606. data/public/vendor/npm/react@0.13.3/lib/toArray.js +0 -21
  607. data/public/vendor/npm/react@0.13.3/lib/traverseAllChildren.js +0 -104
  608. data/public/vendor/npm/react@0.13.3/lib/update.js +0 -78
  609. data/public/vendor/npm/react@0.13.3/lib/warning.js +0 -34
  610. data/public/vendor/npm/react@0.13.3/package.json +0 -34
  611. data/public/vendor/npm/react@0.13.3/react.js +0 -2
  612. data/public/vendor/npm/react@0.13.3.js +0 -1
  613. data/public/vendor/npm/readable-stream@1.1.13/duplex.js +0 -2
  614. data/public/vendor/npm/readable-stream@1.1.13/passthrough.js +0 -2
  615. data/public/vendor/npm/readable-stream@1.1.13/readable.js +0 -8
  616. data/public/vendor/npm/readable-stream@1.1.13/transform.js +0 -2
  617. data/public/vendor/npm/readable-stream@1.1.13/writable.js +0 -2
  618. data/public/vendor/npm/readable-stream@1.1.13.js +0 -1
  619. data/public/vendor/npm/source-map@0.1.31/CHANGELOG.md +0 -112
  620. data/public/vendor/npm/source-map@0.1.31/LICENSE +0 -28
  621. data/public/vendor/npm/source-map@0.1.31/Makefile.dryice.js +0 -89
  622. data/public/vendor/npm/source-map@0.1.31/README.md +0 -434
  623. data/public/vendor/npm/source-map@0.1.31/build/assert-shim.js +0 -58
  624. data/public/vendor/npm/source-map@0.1.31/build/mini-require.js +0 -154
  625. data/public/vendor/npm/source-map@0.1.31/build/prefix-source-map.jsm +0 -20
  626. data/public/vendor/npm/source-map@0.1.31/build/prefix-utils.jsm +0 -18
  627. data/public/vendor/npm/source-map@0.1.31/build/suffix-browser.js +0 -8
  628. data/public/vendor/npm/source-map@0.1.31/build/suffix-source-map.jsm +0 -6
  629. data/public/vendor/npm/source-map@0.1.31/build/suffix-utils.jsm +0 -21
  630. data/public/vendor/npm/source-map@0.1.31/build/test-prefix.js +0 -10
  631. data/public/vendor/npm/source-map@0.1.31/build/test-suffix.js +0 -5
  632. data/public/vendor/npm/source-map@0.1.31/lib/source-map/array-set.js +0 -49
  633. data/public/vendor/npm/source-map@0.1.31/lib/source-map/base64-vlq.js +0 -56
  634. data/public/vendor/npm/source-map@0.1.31/lib/source-map/base64.js +0 -44
  635. data/public/vendor/npm/source-map@0.1.31/lib/source-map/binary-search.js +0 -83
  636. data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-map-consumer.js +0 -238
  637. data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-map-generator.js +0 -231
  638. data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-node.js +0 -234
  639. data/public/vendor/npm/source-map@0.1.31/lib/source-map/util.js +0 -207
  640. data/public/vendor/npm/source-map@0.1.31/lib/source-map.js +0 -4
  641. data/public/vendor/npm/source-map@0.1.31/package.json +0 -52
  642. data/public/vendor/npm/source-map@0.1.31/test/run-tests.js +0 -50
  643. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-api.js +0 -19
  644. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-array-set.js +0 -84
  645. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-base64-vlq.js +0 -17
  646. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-base64.js +0 -26
  647. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-binary-search.js +0 -37
  648. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-dog-fooding.js +0 -76
  649. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-map-consumer.js +0 -426
  650. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-map-generator.js +0 -480
  651. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-node.js +0 -307
  652. data/public/vendor/npm/source-map@0.1.31/test/source-map/util.js +0 -84
  653. data/public/vendor/npm/source-map@0.1.31.js +0 -1
  654. data/public/vendor/npm/through@2.3.8/LICENSE.APACHE2 +0 -15
  655. data/public/vendor/npm/through@2.3.8/LICENSE.MIT +0 -24
  656. data/public/vendor/npm/through@2.3.8/index.js +0 -93
  657. data/public/vendor/npm/through@2.3.8/package.json +0 -36
  658. data/public/vendor/npm/through@2.3.8/readme.markdown +0 -64
  659. data/public/vendor/npm/through@2.3.8/test/async.js +0 -26
  660. data/public/vendor/npm/through@2.3.8/test/auto-destroy.js +0 -26
  661. data/public/vendor/npm/through@2.3.8/test/buffering.js +0 -57
  662. data/public/vendor/npm/through@2.3.8/test/end.js +0 -37
  663. data/public/vendor/npm/through@2.3.8/test/index.js +0 -98
  664. data/public/vendor/npm/through@2.3.8/test.js +0 -2
  665. data/public/vendor/npm/through@2.3.8.js +0 -1
  666. data/views/_options.erb +0 -156
  667. /data/public/vendor/github/jspm/{nodelibs-buffer@0.1.0 → nodelibs-buffer@0.1.1}/index.js +0 -0
  668. /data/public/vendor/github/jspm/{nodelibs-process@0.1.1 → nodelibs-process@0.1.2}/index.js +0 -0
  669. /data/public/vendor/npm/{readable-stream@1.1.13 → assert@1.5.0}/LICENSE +0 -0
  670. /data/public/vendor/npm/{buffer@3.4.3 → buffer@5.7.1}/LICENSE +0 -0
  671. /data/public/vendor/npm/{core-util-is@1.0.1 → core-util-is@1.0.3}/README.md +0 -0
  672. /data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/LICENSE +0 -0
  673. /data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/index.js +0 -0
  674. /data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/README.md +0 -0
  675. /data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/float.patch +0 -0
data/public/js/report.js CHANGED
@@ -1,82 +1,25 @@
1
1
  import './jquery_world'; // for custom $.tooltip function
2
- import React from 'react';
2
+ import React, { Component } from 'react';
3
3
  import _ from 'underscore';
4
4
 
5
5
  import Sidebar from './sidebar';
6
6
  import Circos from './circos';
7
- import Query from './query';
7
+ import { ReportQuery } from './query';
8
8
  import Hit from './hit';
9
9
  import HSP from './hsp';
10
+ import AlignmentExporter from './alignment_exporter';
10
11
 
11
- import SequenceModal from './sequence_modal';
12
- import ErrorModal from './error_modal';
13
12
 
14
- /**
15
- * Base component of report page. This component is later rendered into page's
16
- * '#view' element.
17
- */
18
- var Page = React.createClass({
19
- render: function () {
20
- return (
21
- <div>
22
- {/* Provide bootstrap .container element inside the #view for
23
- the Report component to render itself in. */}
24
- <div className="container">
25
- <Report showSequenceModal={ _ => this.showSequenceModal(_) }
26
- getCharacterWidth={ () => this.getCharacterWidth() }
27
- showErrorModal={ (...args) => this.showErrorModal(...args) } />
28
- </div>
29
-
30
- {/* Add a hidden span tag containing chars used in HSPs */}
31
- <pre className="pre-reset hsp-lines" ref="hspChars" hidden>
32
- ABCDEFGHIJKLMNOPQRSTUVWXYZ +-
33
- </pre>
34
-
35
- {/* Required by Grapher for SVG and PNG download */}
36
- <canvas id="png-exporter" hidden></canvas>
37
-
38
- <SequenceModal ref="sequenceModal"
39
- showErrorModal={ (...args) => this.showErrorModal(...args) }/>
40
-
41
- <ErrorModal ref="errorModal" />
42
- </div>
43
- );
44
- },
45
-
46
- componentDidMount: function () {
47
- var job_id = location.pathname.split('/').pop();
48
- sessionStorage.setItem('job_id', job_id);
49
- },
50
-
51
- showSequenceModal: function (url) {
52
- this.refs.sequenceModal.show(url);
53
- },
54
-
55
- showErrorModal: function (errorData, beforeShow) {
56
- this.refs.errorModal.show(errorData, beforeShow);
57
- },
58
13
 
59
- getCharacterWidth: function () {
60
- if (!this.characterWidth) {
61
- var $hspChars = $(React.findDOMNode(this.refs.hspChars));
62
- this.characterWidth = $hspChars.width() / 29;
63
- }
64
- return this.characterWidth;
65
- }
66
- });
67
14
 
68
15
  /**
69
16
  * Renders entire report.
70
17
  *
71
18
  * Composed of Query and Sidebar components.
72
19
  */
73
- var Report = React.createClass({
74
-
75
- // Model //
76
-
77
- getInitialState: function () {
78
- this.fetchResults();
79
-
20
+ class Report extends Component {
21
+ constructor(props) {
22
+ super(props);
80
23
  // Properties below are internal state used to render results in small
81
24
  // slices (see updateState).
82
25
  this.numUpdates = 0;
@@ -84,92 +27,94 @@ var Report = React.createClass({
84
27
  this.nextHit = 0;
85
28
  this.nextHSP = 0;
86
29
  this.maxHSPs = 3; // max HSPs to render in a cycle
87
-
88
- return {
89
- search_id: '',
30
+ this.state = {
31
+ user_warning: null,
32
+ download_links: [],
33
+ search_id: '',
90
34
  seqserv_version: '',
91
- program: '',
35
+ program: '',
92
36
  program_version: '',
93
- submitted_at: '',
94
- queries: [],
95
- results: [],
96
- querydb: [],
97
- params: [],
98
- stats: []
37
+ submitted_at: '',
38
+ queries: [],
39
+ results: [],
40
+ querydb: [],
41
+ params: [],
42
+ stats: [],
43
+ alignment_blob_url: '',
44
+ allQueriesLoaded: false,
45
+ cloud_sharing_enabled: false,
99
46
  };
100
- },
101
-
47
+ this.prepareAlignmentOfSelectedHits = this.prepareAlignmentOfSelectedHits.bind(this);
48
+ this.prepareAlignmentOfAllHits = this.prepareAlignmentOfAllHits.bind(this);
49
+ this.setStateFromJSON = this.setStateFromJSON.bind(this);
50
+ }
102
51
  /**
103
- * Fetch results.
104
- */
105
- fetchResults: function () {
52
+ * Fetch results.
53
+ */
54
+ fetchResults() {
106
55
  var intervals = [200, 400, 800, 1200, 2000, 3000, 5000];
107
56
  var component = this;
108
-
109
- function poll () {
110
- $.getJSON(location.pathname + '.json')
111
- .complete(function (jqXHR) {
112
- switch (jqXHR.status) {
113
- case 202:
114
- var interval;
115
- if (intervals.length === 1) {
116
- interval = intervals[0];
117
- }
118
- else {
119
- interval = intervals.shift();
120
- }
121
- setTimeout(poll, interval);
122
- break;
123
- case 200:
124
- component.setStateFromJSON(jqXHR.responseJSON);
125
- break;
126
- case 404:
127
- case 400:
128
- case 500:
129
- component.props.showErrorModal(jqXHR.responseJSON);
130
- break;
57
+ function poll() {
58
+ $.getJSON(location.pathname + '.json' + location.search).complete(function (jqXHR) {
59
+ switch (jqXHR.status) {
60
+ case 202:
61
+ var interval;
62
+ if (intervals.length === 1) {
63
+ interval = intervals[0];
64
+ } else {
65
+ interval = intervals.shift();
131
66
  }
132
- });
67
+ setTimeout(poll, interval);
68
+ break;
69
+ case 200:
70
+ component.setStateFromJSON(jqXHR.responseJSON);
71
+ break;
72
+ case 404:
73
+ case 400:
74
+ case 500:
75
+ component.props.showErrorModal(jqXHR.responseJSON);
76
+ break;
77
+ }
78
+ });
133
79
  }
134
80
 
135
81
  poll();
136
- },
82
+ }
137
83
 
138
84
  /**
139
- * Calls setState after any required modification to responseJSON.
140
- */
141
- setStateFromJSON: function(responseJSON) {
85
+ * Calls setState after any required modification to responseJSON.
86
+ */
87
+ setStateFromJSON(responseJSON) {
142
88
  this.lastTimeStamp = Date.now();
143
- this.setState(responseJSON);
144
- },
145
-
146
- // Life-cycle methods //
147
- render: function () {
148
- return this.isResultAvailable() ?
149
- this.resultsJSX() : this.loadingJSX();
150
- },
151
-
89
+ // the callback prepares the download link for all alignments
90
+ if (responseJSON.user_warning == 'LARGE_RESULT') {
91
+ this.setState({user_warning: responseJSON.user_warning, download_links: responseJSON.download_links});
92
+ } else {
93
+ this.setState(responseJSON, this.prepareAlignmentOfAllHits);
94
+ }
95
+ }
152
96
  /**
153
- * Called as soon as the page has loaded and the user sees the loading spinner.
154
- * We use this opportunity to setup services that make use of delegated events
155
- * bound to the window, document, or body.
156
- */
157
- componentDidMount: function () {
97
+ * Called as soon as the page has loaded and the user sees the loading spinner.
98
+ * We use this opportunity to setup services that make use of delegated events
99
+ * bound to the window, document, or body.
100
+ */
101
+ componentDidMount() {
102
+ this.fetchResults();
158
103
  // This sets up an event handler which enables users to select text from
159
104
  // hit header without collapsing the hit.
160
105
  this.preventCollapseOnSelection();
161
106
  this.toggleTable();
162
- },
107
+ }
163
108
 
164
109
  /**
165
- * Called for the first time after as BLAST results have been retrieved from
166
- * the server and added to this.state by fetchResults. Only summary overview
167
- * and circos would have been rendered at this point. At this stage we kick
168
- * start iteratively adding 1 HSP to the page every 25 milli-seconds.
169
- */
170
- componentDidUpdate: function () {
110
+ * Called for the first time after as BLAST results have been retrieved from
111
+ * the server and added to this.state by fetchResults. Only summary overview
112
+ * and circos would have been rendered at this point. At this stage we kick
113
+ * start iteratively adding 1 HSP to the page every 25 milli-seconds.
114
+ */
115
+ componentDidUpdate() {
171
116
  // Log to console how long the last update take?
172
- console.log((Date.now() - this.lastTimeStamp)/1000);
117
+ // console.log((Date.now() - this.lastTimeStamp) / 1000);
173
118
 
174
119
  // Lock sidebar in its position on the first update.
175
120
  if (this.nextQuery == 0 && this.nextHit == 0 && this.nextHSP == 0) {
@@ -182,16 +127,15 @@ var Report = React.createClass({
182
127
  // the updates giving the browser a chance to respond
183
128
  // to user interactions.
184
129
  setTimeout(() => this.updateState(), 25);
185
- }
186
- else {
130
+ } else {
187
131
  this.componentFinishedUpdating();
188
132
  }
189
- },
133
+ }
190
134
 
191
135
  /**
192
- * Push next slice of results to React for rendering.
193
- */
194
- updateState: function() {
136
+ * Push next slice of results to React for rendering.
137
+ */
138
+ updateState() {
195
139
  var results = [];
196
140
  var numHSPsProcessed = 0;
197
141
  while (this.nextQuery < this.state.queries.length) {
@@ -200,12 +144,18 @@ var Report = React.createClass({
200
144
  // 3 hsps or are rendered in each cycle, but we want to create the
201
145
  // corresponding Query component only the first time we see it.
202
146
  if (this.nextHit == 0 && this.nextHSP == 0) {
203
- results.push(<Query key={'Query_'+query.number} query={query}
204
- program={this.state.program} querydb={this.state.querydb}
205
- showQueryCrumbs={this.state.queries.length > 1}
206
- non_parse_seqids={this.state.non_parse_seqids}
207
- imported_xml={this.state.imported_xml}
208
- veryBig={this.state.veryBig} />);
147
+ results.push(
148
+ <ReportQuery
149
+ key={'Query_' + query.number}
150
+ query={query}
151
+ program={this.state.program}
152
+ querydb={this.state.querydb}
153
+ showQueryCrumbs={this.state.queries.length > 1}
154
+ non_parse_seqids={this.state.non_parse_seqids}
155
+ imported_xml={this.state.imported_xml}
156
+ veryBig={this.state.veryBig}
157
+ />
158
+ );
209
159
  }
210
160
 
211
161
  while (this.nextHit < query.hits.length) {
@@ -214,14 +164,22 @@ var Report = React.createClass({
214
164
  // 10 hsps are rendered in each cycle, but we want to create the
215
165
  // corresponding Hit component only the first time we see it.
216
166
  if (this.nextHSP == 0) {
217
- results.push(<Hit key={'Query_'+query.number+'_Hit_'+hit.number} query={query}
218
- hit={hit} algorithm={this.state.program} querydb={this.state.querydb}
219
- selectHit={this.selectHit} imported_xml={this.state.imported_xml}
220
- non_parse_seqids={this.state.non_parse_seqids}
221
- showQueryCrumbs={this.state.queries.length > 1}
222
- showHitCrumbs={query.hits.length > 1}
223
- veryBig={this.state.veryBig}
224
- {... this.props} />
167
+ results.push(
168
+ <Hit
169
+ key={'Query_' + query.number + '_Hit_' + hit.number}
170
+ query={query}
171
+ hit={hit}
172
+ algorithm={this.state.program}
173
+ querydb={this.state.querydb}
174
+ selectHit={this.selectHit}
175
+ imported_xml={this.state.imported_xml}
176
+ non_parse_seqids={this.state.non_parse_seqids}
177
+ showQueryCrumbs={this.state.queries.length > 1}
178
+ showHitCrumbs={query.hits.length > 1}
179
+ veryBig={this.state.veryBig}
180
+ onChange={this.prepareAlignmentOfSelectedHits}
181
+ {...this.props}
182
+ />
225
183
  );
226
184
  }
227
185
 
@@ -229,9 +187,22 @@ var Report = React.createClass({
229
187
  // Get nextHSP and increment the counter.
230
188
  var hsp = hit.hsps[this.nextHSP++];
231
189
  results.push(
232
- <HSP key={'Query_'+query.number+'_Hit_'+hit.number+'_HSP_'+hsp.number}
233
- query={query} hit={hit} hsp={hsp} algorithm={this.state.program}
234
- showHSPNumbers={hit.hsps.length > 1} {... this.props} />
190
+ <HSP
191
+ key={
192
+ 'Query_' +
193
+ query.number +
194
+ '_Hit_' +
195
+ hit.number +
196
+ '_HSP_' +
197
+ hsp.number
198
+ }
199
+ query={query}
200
+ hit={hit}
201
+ hsp={hsp}
202
+ algorithm={this.state.program}
203
+ showHSPNumbers={hit.hsps.length > 1}
204
+ {...this.props}
205
+ />
235
206
  );
236
207
  numHSPsProcessed++;
237
208
  if (numHSPsProcessed == this.maxHSPs) break;
@@ -259,147 +230,206 @@ var Report = React.createClass({
259
230
  this.lastTimeStamp = Date.now();
260
231
  this.setState({
261
232
  results: this.state.results.concat(results),
262
- veryBig: this.numUpdates >= 250
233
+ veryBig: this.numUpdates >= 250,
263
234
  });
264
- },
235
+ }
265
236
 
266
237
  /**
267
- * Called after all results have been rendered.
268
- */
269
- componentFinishedUpdating: function () {
238
+ * Called after all results have been rendered.
239
+ */
240
+ componentFinishedUpdating() {
241
+ if (this.state.allQueriesLoaded) return;
270
242
  this.shouldShowIndex() && this.setupScrollSpy();
271
- },
243
+ this.setState({ allQueriesLoaded: true });
244
+ }
272
245
 
273
246
  /**
274
- * Returns loading message
275
- */
276
- loadingJSX: function () {
247
+ * Returns loading message
248
+ */
249
+ loadingJSX() {
277
250
  return (
278
- <div
279
- className="row">
280
- <div
281
- className="col-md-6 col-md-offset-3 text-center">
251
+ <div className="row">
252
+ <div className="col-md-6 col-md-offset-3 text-center">
282
253
  <h1>
283
254
  <i className="fa fa-cog fa-spin"></i>&nbsp; BLAST-ing
284
255
  </h1>
285
256
  <p>
286
- <br/>
287
- This can take some time depending on the size of your query and
288
- database(s). The page will update automatically when BLAST is
289
- done.
290
- <br/>
291
- <br/>
292
- You can bookmark the page and come back to it later or share
293
- the link with someone.
257
+ <br />
258
+ This can take some time depending on the size of your query and
259
+ database(s). The page will update automatically when BLAST is done.
260
+ <br />
261
+ <br />
262
+ You can bookmark the page and come back to it later or share the
263
+ link with someone.
294
264
  </p>
295
265
  </div>
296
266
  </div>
297
267
  );
298
- },
268
+ }
299
269
 
300
270
  /**
301
- * Return results JSX.
302
- */
303
- resultsJSX: function () {
271
+ * Return results JSX.
272
+ */
273
+ resultsJSX() {
304
274
  return (
305
- <div className="row">
275
+ <div className="row" id="results">
306
276
  <div className="col-md-3 hidden-sm hidden-xs">
307
- <Sidebar data={this.state}
277
+ <Sidebar
278
+ data={this.state}
308
279
  atLeastOneHit={this.atLeastOneHit()}
309
- shouldShowIndex={this.shouldShowIndex()} />
280
+ shouldShowIndex={this.shouldShowIndex()}
281
+ allQueriesLoaded={this.state.allQueriesLoaded}
282
+ cloudSharingEnabled={this.state.cloud_sharing_enabled}
283
+ />
310
284
  </div>
311
285
  <div className="col-md-9">
312
- { this.overviewJSX() }
313
- { this.circosJSX() }
314
- { this.state.results }
286
+ {this.overviewJSX()}
287
+ {this.circosJSX()}
288
+ {this.state.results}
315
289
  </div>
316
290
  </div>
317
291
  );
318
- },
292
+ }
293
+
319
294
 
295
+ warningJSX() {
296
+ return(
297
+ <div className="container">
298
+ <div className="row">
299
+ <div className="col-md-6 col-md-offset-3 text-center">
300
+ <h1>
301
+ <i className="fa fa-exclamation-triangle"></i>&nbsp; Warning
302
+ </h1>
303
+ <p>
304
+ <br />
305
+ The BLAST result might be too large to load in the browser. If you have a powerful machine you can try loading the results anyway. Otherwise, you can download the results and view them locally.
306
+ </p>
307
+ <br />
308
+ <p>
309
+ {this.state.download_links.map((link, index) => {
310
+ return (
311
+ <a href={link.url} className="btn btn-secondary" key={'download_link_' + index} >
312
+ {link.name}
313
+ </a>
314
+ );
315
+ })}
316
+ </p>
317
+ <br />
318
+ <p>
319
+ <a href={location.pathname + '?bypass_file_size_warning=true'} className="btn btn-primary">
320
+ View results in browser anyway
321
+ </a>
322
+ </p>
323
+ </div>
324
+ </div>
325
+ </div>
326
+ );
327
+ }
320
328
  /**
321
- * Renders report overview.
322
- */
323
- overviewJSX: function () {
329
+ * Renders report overview.
330
+ */
331
+ overviewJSX() {
324
332
  return (
325
333
  <div className="overview">
326
334
  <p>
327
- <strong>SequenceServer {this.state.seqserv_version}</strong> using <strong>{this.state.program_version}</strong>
328
- {this.state.submitted_at && `, query submitted on ${this.state.submitted_at}`}
335
+ <strong>SequenceServer {this.state.seqserv_version}</strong> using{' '}
336
+ <strong>{this.state.program_version}</strong>
337
+ {this.state.submitted_at &&
338
+ `, query submitted on ${this.state.submitted_at}`}
329
339
  </p>
330
340
  <p>
331
- <strong> Databases: </strong>{
332
- this.state.querydb.map((db) => { return db.title; }).join(', ')
333
- } ({this.state.stats.nsequences} sequences,&nbsp;
341
+ <strong> Databases: </strong>
342
+ {this.state.querydb
343
+ .map((db) => {
344
+ return db.title;
345
+ })
346
+ .join(', ')}{' '}
347
+ ({this.state.stats.nsequences} sequences,&nbsp;
334
348
  {this.state.stats.ncharacters} characters)
335
349
  </p>
336
350
  <p>
337
- <strong>Parameters: </strong> {
338
- _.map(this.state.params, function (val, key) {
339
- return key + ' ' + val;
340
- }).join(', ')
341
- }
351
+ <strong>Parameters: </strong>{' '}
352
+ {_.map(this.state.params, function (val, key) {
353
+ return key + ' ' + val;
354
+ }).join(', ')}
342
355
  </p>
343
356
  <p>
344
- Please cite: <a href="https://doi.org/10.1093/molbev/msz185">https://doi.org/10.1093/molbev/msz185</a>
357
+ Please cite:{' '}
358
+ <a href="https://doi.org/10.1093/molbev/msz185">
359
+ https://doi.org/10.1093/molbev/msz185
360
+ </a>
345
361
  </p>
346
362
  </div>
347
363
  );
348
- },
364
+ }
349
365
 
350
366
  /**
351
- * Return JSX for circos if we have at least one hit.
352
- */
353
- circosJSX: function () {
354
- return this.atLeastTwoHits()
355
- ? <Circos queries={this.state.queries}
356
- program={this.state.program} collapsed="true"/>
357
- : <span></span>;
358
- },
367
+ * Return JSX for circos if we have at least one hit.
368
+ */
369
+ circosJSX() {
370
+ return this.atLeastTwoHits() ? (
371
+ <Circos
372
+ queries={this.state.queries}
373
+ program={this.state.program}
374
+ collapsed="true"
375
+ />
376
+ ) : (
377
+ <span></span>
378
+ );
379
+ }
359
380
 
360
381
  // Controller //
361
382
 
362
383
  /**
363
- * Returns true if results have been fetched.
364
- *
365
- * A holding message is shown till results are fetched.
366
- */
367
- isResultAvailable: function () {
384
+ * Returns true if results have been fetched.
385
+ *
386
+ * A holding message is shown till results are fetched.
387
+ */
388
+ isResultAvailable() {
368
389
  return this.state.queries.length >= 1;
369
- },
390
+ }
370
391
 
371
392
  /**
372
- * Returns true if we have at least one hit.
373
- */
374
- atLeastOneHit: function () {
375
- return this.state.queries.some(query => query.hits.length > 0);
376
- },
393
+ * Indicates the response contains a warning message for the user
394
+ * in which case we should not render the results and render the
395
+ * warning instead.
396
+ **/
397
+ isUserWarningPresent() {
398
+ return this.state.user_warning;
399
+ }
377
400
 
378
401
  /**
379
- * Does the report have at least two hits? This is used to determine
380
- * whether Circos should be enabled or not.
381
- */
382
- atLeastTwoHits: function () {
402
+ * Returns true if we have at least one hit.
403
+ */
404
+ atLeastOneHit() {
405
+ return this.state.queries.some((query) => query.hits.length > 0);
406
+ }
407
+
408
+ /**
409
+ * Does the report have at least two hits? This is used to determine
410
+ * whether Circos should be enabled or not.
411
+ */
412
+ atLeastTwoHits() {
383
413
  var hit_num = 0;
384
- return this.state.queries.some(query => {
414
+ return this.state.queries.some((query) => {
385
415
  hit_num += query.hits.length;
386
416
  return hit_num > 1;
387
417
  });
388
- },
418
+ }
389
419
 
390
420
  /**
391
- * Returns true if index should be shown in the sidebar. Index is shown
392
- * only for 2 and 8 queries.
393
- */
394
- shouldShowIndex: function () {
421
+ * Returns true if index should be shown in the sidebar. Index is shown
422
+ * only for 2 and 8 queries.
423
+ */
424
+ shouldShowIndex() {
395
425
  var num_queries = this.state.queries.length;
396
426
  return num_queries >= 2 && num_queries <= 12;
397
- },
427
+ }
398
428
 
399
429
  /**
400
- * Prevents folding of hits during text-selection.
401
- */
402
- preventCollapseOnSelection: function () {
430
+ * Prevents folding of hits during text-selection.
431
+ */
432
+ preventCollapseOnSelection() {
403
433
  $('body').on('mousedown', '.hit > .section-header > h4', function (event) {
404
434
  var $this = $(this);
405
435
  $this.on('mouseup mousemove', function handler(event) {
@@ -415,52 +445,53 @@ var Report = React.createClass({
415
445
  $this.off('mouseup mousemove', handler);
416
446
  });
417
447
  });
418
- },
448
+ }
419
449
 
420
450
  /* Handling the fa icon when Hit Table is collapsed */
421
- toggleTable: function () {
422
- $('body').on('mousedown', '.resultn > .section-content > .table-hit-overview > .caption', function (event) {
423
- var $this = $(this);
424
- $this.on('mouseup mousemove', function handler(event) {
425
- $this.find('i').toggleClass('fa-minus-square-o fa-plus-square-o');
426
- $this.off('mouseup mousemove', handler);
427
- });
428
- });
429
- },
430
-
431
-
451
+ toggleTable() {
452
+ $('body').on(
453
+ 'mousedown',
454
+ '.resultn > .section-content > .table-hit-overview > .caption',
455
+ function (event) {
456
+ var $this = $(this);
457
+ $this.on('mouseup mousemove', function handler(event) {
458
+ $this.find('i').toggleClass('fa-minus-square-o fa-plus-square-o');
459
+ $this.off('mouseup mousemove', handler);
460
+ });
461
+ }
462
+ );
463
+ }
432
464
 
433
465
  /**
434
- * Affixes the sidebar.
435
- */
436
- affixSidebar: function () {
466
+ * Affixes the sidebar.
467
+ */
468
+ affixSidebar() {
437
469
  var $sidebar = $('.sidebar');
438
470
  var sidebarOffset = $sidebar.offset();
439
471
  if (sidebarOffset) {
440
472
  $sidebar.affix({
441
473
  offset: {
442
- top: sidebarOffset.top
443
- }
474
+ top: sidebarOffset.top,
475
+ },
444
476
  });
445
477
  }
446
- },
478
+ }
447
479
 
448
480
  /**
449
- * For the query in viewport, highlights corresponding entry in the index.
450
- */
451
- setupScrollSpy: function () {
452
- $('body').scrollspy({target: '.sidebar'});
453
- },
481
+ * For the query in viewport, highlights corresponding entry in the index.
482
+ */
483
+ setupScrollSpy() {
484
+ $('body').scrollspy({ target: '.sidebar' });
485
+ }
454
486
 
455
487
  /**
456
- * Event-handler when hit is selected
457
- * Adds glow to hit component.
458
- * Updates number of Fasta that can be downloaded
459
- */
460
- selectHit: function (id) {
461
-
488
+ * Event-handler when hit is selected
489
+ * Adds glow to hit component.
490
+ * Updates number of Fasta that can be downloaded
491
+ */
492
+ selectHit(id) {
462
493
  var checkbox = $('#' + id);
463
- var num_checked = $('.hit-links :checkbox:checked').length;
494
+ var num_checked = $('.hit-links :checkbox:checked').length;
464
495
 
465
496
  if (!checkbox || !checkbox.val()) {
466
497
  return;
@@ -475,17 +506,15 @@ var Report = React.createClass({
475
506
  $hit.next('.hsp').addClass('glow');
476
507
  $('.download-fasta-of-selected').enable();
477
508
  $('.download-alignment-of-selected').enable();
478
- }
479
- else {
509
+ } else {
480
510
  $hit.removeClass('glow');
481
511
  $hit.next('.hsp').removeClass('glow');
482
512
  }
483
513
 
484
514
  var $a = $('.download-fasta-of-selected');
485
515
  var $b = $('.download-alignment-of-selected');
486
-
487
- if (num_checked >= 1)
488
- {
516
+
517
+ if (num_checked >= 1) {
489
518
  $a.find('.text-bold').html(num_checked);
490
519
  $b.find('.text-bold').html(num_checked);
491
520
  }
@@ -494,7 +523,78 @@ var Report = React.createClass({
494
523
  $a.addClass('disabled').find('.text-bold').html('');
495
524
  $b.addClass('disabled').find('.text-bold').html('');
496
525
  }
497
- },
498
- });
526
+ }
527
+ populate_hsp_array(hit, query_id){
528
+ return hit.hsps.map(hsp => Object.assign(hsp, {hit_id: hit.id, query_id}));
529
+ }
530
+
531
+ prepareAlignmentOfSelectedHits() {
532
+ var sequence_ids = $('.hit-links :checkbox:checked').map(function () {
533
+ return this.value;
534
+ }).get();
535
+
536
+ if(!sequence_ids.length){
537
+ // remove attributes from link if sequence_ids array is empty
538
+ $('.download-alignment-of-selected').attr('href', '#').removeAttr('download');
539
+ return;
540
+
541
+ }
542
+ if(this.state.alignment_blob_url){
543
+ // always revoke existing url if any because this method will always create a new url
544
+ window.URL.revokeObjectURL(this.state.alignment_blob_url);
545
+ }
546
+ var hsps_arr = [];
547
+ var aln_exporter = new AlignmentExporter();
548
+ const self = this;
549
+ _.each(this.state.queries, _.bind(function (query) {
550
+ _.each(query.hits, function (hit) {
551
+ if (_.indexOf(sequence_ids, hit.id) != -1) {
552
+ hsps_arr = hsps_arr.concat(self.populate_hsp_array(hit, query.id));
553
+ }
554
+ });
555
+ }, this));
556
+ const filename = 'alignment-' + sequence_ids.length + '_hits.txt';
557
+ const blob_url = aln_exporter.prepare_alignments_for_export(hsps_arr, filename);
558
+ // set required download attributes for link
559
+ $('.download-alignment-of-selected').attr('href', blob_url).attr('download', filename);
560
+ // track new url for future removal
561
+ this.setState({alignment_blob_url: blob_url});
562
+ }
563
+
564
+ prepareAlignmentOfAllHits() {
565
+ // Get number of hits and array of all hsps.
566
+ var num_hits = 0;
567
+ var hsps_arr = [];
568
+ if(!this.state.queries.length){
569
+ return;
570
+ }
571
+ this.state.queries.forEach(
572
+ (query) => query.hits.forEach(
573
+ (hit) => {
574
+ num_hits++;
575
+ hsps_arr = hsps_arr.concat(this.populate_hsp_array(hit, query.id));
576
+ }
577
+ )
578
+ );
579
+
580
+ var aln_exporter = new AlignmentExporter();
581
+ var file_name = `alignment-${num_hits}_hits.txt`;
582
+ const blob_url = aln_exporter.prepare_alignments_for_export(hsps_arr, file_name);
583
+ $('.download-alignment-of-all')
584
+ .attr('href', blob_url)
585
+ .attr('download', file_name);
586
+ return false;
587
+ }
588
+
589
+ render() {
590
+ if (this.isUserWarningPresent()) {
591
+ return this.warningJSX();
592
+ } else if (this.isResultAvailable()) {
593
+ return this.resultsJSX();
594
+ } else {
595
+ return this.loadingJSX();
596
+ }
597
+ }
598
+ }
499
599
 
500
- React.render(<Page/>, document.getElementById('view'));
600
+ export default Report;