sequenceserver 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (667) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sequenceserver/api_errors.rb +24 -2
  3. data/lib/sequenceserver/blast/job.rb +41 -7
  4. data/lib/sequenceserver/blast/report.rb +36 -30
  5. data/lib/sequenceserver/config.rb +49 -27
  6. data/lib/sequenceserver/job.rb +13 -3
  7. data/lib/sequenceserver/job_remover.rb +25 -29
  8. data/lib/sequenceserver/refinements.rb +15 -0
  9. data/lib/sequenceserver/routes.rb +69 -7
  10. data/lib/sequenceserver/sequence.rb +8 -7
  11. data/lib/sequenceserver/sys.rb +2 -2
  12. data/lib/sequenceserver/version.rb +1 -1
  13. data/lib/sequenceserver/zip_file_generator.rb +56 -0
  14. data/lib/sequenceserver.rb +1 -0
  15. data/public/config.js +149 -143
  16. data/public/css/sequenceserver.css +44 -3
  17. data/public/css/sequenceserver.min.css +3 -3
  18. data/public/js/alignment_exporter.js +16 -8
  19. data/public/js/circos.js +370 -234
  20. data/public/js/cloud_share_modal.js +216 -0
  21. data/public/js/databases.js +144 -0
  22. data/public/js/databases_tree.js +42 -113
  23. data/public/js/dnd.js +164 -0
  24. data/public/js/error_modal.js +4 -11
  25. data/public/js/exporter.js +7 -3
  26. data/public/js/form.js +260 -0
  27. data/public/js/grapher.js +113 -106
  28. data/public/js/hit.js +80 -67
  29. data/public/js/hits_overview.js +2 -2
  30. data/public/js/hsp.js +343 -288
  31. data/public/js/jquery_world.js +4 -4
  32. data/public/js/mailto.js +36 -0
  33. data/public/js/options.js +84 -0
  34. data/public/js/query.js +319 -59
  35. data/public/js/report.js +315 -269
  36. data/public/js/report_root.js +75 -0
  37. data/public/js/search.js +28 -1011
  38. data/public/js/search_button.js +195 -0
  39. data/public/js/sequence.js +2409 -2411
  40. data/public/js/sequence_modal.js +152 -159
  41. data/public/js/share_url.js +23 -0
  42. data/public/js/sidebar.js +262 -83
  43. data/public/js/tests/database.spec.js +60 -0
  44. data/public/js/tests/mock_data/databases.json +91 -0
  45. data/public/js/tests/mock_data/long_response.json +269 -0
  46. data/public/js/tests/mock_data/short_response.json +2240 -0
  47. data/public/js/tests/report.spec.js +99 -0
  48. data/public/js/tests/search_button.spec.js +14 -0
  49. data/public/js/tests/search_query.spec.js +41 -0
  50. data/public/packages/circosJS@1.7.0.js +1640 -0
  51. data/public/packages/jquery-ui@1.11.4.js +16624 -0
  52. data/public/sequenceserver-report.min.js +2425 -19
  53. data/public/sequenceserver-search.min.js +2337 -15
  54. data/public/vendor/github/jspm/nodelibs-assert@0.1.0/index.js +2 -0
  55. data/public/vendor/github/jspm/{nodelibs-buffer@0.1.0 → nodelibs-assert@0.1.0}/package.json +1 -1
  56. data/public/vendor/github/jspm/nodelibs-assert@0.1.0.js +1 -0
  57. data/public/vendor/github/jspm/nodelibs-buffer@0.1.1/package.json +6 -0
  58. data/public/vendor/github/jspm/nodelibs-buffer@0.1.1.js +1 -0
  59. data/public/vendor/github/jspm/{nodelibs-process@0.1.1 → nodelibs-process@0.1.2}/package.json +2 -2
  60. data/public/vendor/github/jspm/nodelibs-process@0.1.2.js +1 -0
  61. data/public/vendor/github/jspm/nodelibs-vm@0.1.0/index.js +2 -0
  62. data/public/vendor/github/jspm/nodelibs-vm@0.1.0/package.json +6 -0
  63. data/public/vendor/github/jspm/nodelibs-vm@0.1.0.js +1 -0
  64. data/public/vendor/npm/assert@1.5.0/CHANGELOG.md +8 -0
  65. data/public/vendor/npm/assert@1.5.0/README.md +105 -0
  66. data/public/vendor/npm/assert@1.5.0/assert.js +327 -0
  67. data/public/vendor/npm/assert@1.5.0/package.json +32 -0
  68. data/public/vendor/npm/assert@1.5.0/test.js +288 -0
  69. data/public/vendor/npm/assert@1.5.0.js +1 -0
  70. data/public/vendor/npm/{base64-js@0.0.8/LICENSE.MIT → base64-js@1.5.1/LICENSE} +1 -1
  71. data/public/vendor/npm/{base64-js@0.0.8 → base64-js@1.5.1}/README.md +10 -7
  72. data/public/vendor/npm/base64-js@1.5.1/base64js.min.js +3 -0
  73. data/public/vendor/npm/base64-js@1.5.1/index.d.ts +3 -0
  74. data/public/vendor/npm/base64-js@1.5.1/index.js +151 -0
  75. data/public/vendor/npm/base64-js@1.5.1/package.json +47 -0
  76. data/public/vendor/npm/base64-js@1.5.1.js +1 -0
  77. data/public/vendor/npm/buffer@5.7.1/AUTHORS.md +70 -0
  78. data/public/vendor/npm/{buffer@3.4.3 → buffer@5.7.1}/README.md +111 -41
  79. data/public/vendor/npm/buffer@5.7.1/index.d.ts +186 -0
  80. data/public/vendor/npm/buffer@5.7.1/index.js +1817 -0
  81. data/public/vendor/npm/buffer@5.7.1/package.json +96 -0
  82. data/public/vendor/npm/buffer@5.7.1.js +1 -0
  83. data/public/vendor/npm/core-util-is@1.0.3/LICENSE +19 -0
  84. data/public/vendor/npm/core-util-is@1.0.3/lib/util.js +64 -0
  85. data/public/vendor/npm/{core-util-is@1.0.1 → core-util-is@1.0.3}/package.json +13 -1
  86. data/public/vendor/npm/core-util-is@1.0.3.js +1 -0
  87. data/public/vendor/npm/events@1.0.2/tests/add-listeners.js +2 -2
  88. data/public/vendor/npm/events@1.0.2/tests/check-listener-leaks.js +3 -3
  89. data/public/vendor/npm/events@1.0.2/tests/common.js +1 -1
  90. data/public/vendor/npm/events@1.0.2/tests/index.js +13 -13
  91. data/public/vendor/npm/events@1.0.2/tests/listeners-side-effects.js +2 -2
  92. data/public/vendor/npm/events@1.0.2/tests/listeners.js +2 -2
  93. data/public/vendor/npm/events@1.0.2/tests/max-listeners.js +2 -2
  94. data/public/vendor/npm/events@1.0.2/tests/modify-in-emit.js +2 -2
  95. data/public/vendor/npm/events@1.0.2/tests/num-args.js +2 -2
  96. data/public/vendor/npm/events@1.0.2/tests/once.js +2 -2
  97. data/public/vendor/npm/events@1.0.2/tests/remove-all-listeners.js +3 -3
  98. data/public/vendor/npm/events@1.0.2/tests/remove-listeners.js +3 -3
  99. data/public/vendor/npm/events@1.0.2/tests/set-max-listeners-side-effects.js +2 -2
  100. data/public/vendor/npm/events@1.0.2/tests/subclass.js +3 -3
  101. data/public/vendor/npm/events@1.0.2.js +1 -1
  102. data/public/vendor/npm/ieee754@1.2.1/LICENSE +11 -0
  103. data/public/vendor/npm/{ieee754@1.1.6 → ieee754@1.2.1}/README.md +12 -8
  104. data/public/vendor/npm/ieee754@1.2.1/index.d.ts +10 -0
  105. data/public/vendor/npm/{ieee754@1.1.6 → ieee754@1.2.1}/index.js +6 -6
  106. data/public/vendor/npm/ieee754@1.2.1/package.json +52 -0
  107. data/public/vendor/npm/ieee754@1.2.1.js +1 -0
  108. data/public/vendor/npm/{is-array@1.0.1 → indexof@0.0.1}/Makefile +3 -3
  109. data/public/vendor/npm/indexof@0.0.1/Readme.md +15 -0
  110. data/public/vendor/npm/indexof@0.0.1/component.json +10 -0
  111. data/public/vendor/npm/indexof@0.0.1/index.js +11 -0
  112. data/public/vendor/npm/indexof@0.0.1/package.json +12 -0
  113. data/public/vendor/npm/indexof@0.0.1.js +1 -0
  114. data/public/vendor/npm/inherits@2.0.1/inherits.js +1 -1
  115. data/public/vendor/npm/inherits@2.0.1.js +1 -1
  116. data/public/vendor/npm/isarray@0.0.1.js +1 -1
  117. data/public/vendor/npm/js-tokens@4.0.0/index.js +23 -0
  118. data/public/vendor/npm/js-tokens@4.0.0/package.json +30 -0
  119. data/public/vendor/npm/js-tokens@4.0.0.js +1 -0
  120. data/public/vendor/npm/loose-envify@1.4.0/LICENSE +21 -0
  121. data/public/vendor/npm/loose-envify@1.4.0/README.md +45 -0
  122. data/public/vendor/npm/loose-envify@1.4.0/cli.js +12 -0
  123. data/public/vendor/npm/loose-envify@1.4.0/custom.js +3 -0
  124. data/public/vendor/npm/loose-envify@1.4.0/index.js +5 -0
  125. data/public/vendor/npm/loose-envify@1.4.0/loose-envify.js +33 -0
  126. data/public/vendor/npm/loose-envify@1.4.0/package.json +36 -0
  127. data/public/vendor/npm/loose-envify@1.4.0/replace.js +52 -0
  128. data/public/vendor/npm/loose-envify@1.4.0.js +1 -0
  129. data/public/vendor/npm/object-assign@4.1.1/index.js +90 -0
  130. data/public/vendor/npm/object-assign@4.1.1/package.json +42 -0
  131. data/public/vendor/npm/object-assign@4.1.1.js +1 -0
  132. data/public/vendor/npm/path-browserify@0.0.0/index.js +1 -1
  133. data/public/vendor/npm/path-browserify@0.0.0.js +1 -1
  134. data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/README.md +4 -1
  135. data/public/vendor/npm/process@0.11.10/browser.js +184 -0
  136. data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/package.json +10 -1
  137. data/public/vendor/npm/process@0.11.10/test.js +185 -0
  138. data/public/vendor/npm/process@0.11.10.js +1 -0
  139. data/public/vendor/npm/react-dom@18.0.0/LICENSE +21 -0
  140. data/public/vendor/npm/react-dom@18.0.0/README.md +50 -0
  141. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.browser.development.js +4771 -0
  142. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.browser.production.min.js +85 -0
  143. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.node.development.js +4813 -0
  144. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.node.production.min.js +1705 -0
  145. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.browser.development.js +4746 -0
  146. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.browser.production.min.js +90 -0
  147. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.node.development.js +4714 -0
  148. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.node.production.min.js +1746 -0
  149. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-test-utils.development.js +1017 -0
  150. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-test-utils.production.min.js +617 -0
  151. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.development.js +20092 -0
  152. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.production.min.js +322 -0
  153. data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.profiling.min.js +364 -0
  154. data/public/vendor/npm/react-dom@18.0.0/client.js +27 -0
  155. data/public/vendor/npm/react-dom@18.0.0/index.js +23 -0
  156. data/public/vendor/npm/react-dom@18.0.0/package.json +62 -0
  157. data/public/vendor/npm/react-dom@18.0.0/profiling.js +23 -0
  158. data/public/vendor/npm/react-dom@18.0.0/server.browser.js +19 -0
  159. data/public/vendor/npm/react-dom@18.0.0/server.js +3 -0
  160. data/public/vendor/npm/react-dom@18.0.0/server.node.js +19 -0
  161. data/public/vendor/npm/react-dom@18.0.0/test-utils.js +9 -0
  162. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server-legacy.browser.development.js +4770 -0
  163. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server-legacy.browser.production.min.js +72 -0
  164. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server.browser.development.js +4745 -0
  165. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server.browser.production.min.js +74 -0
  166. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-test-utils.development.js +1013 -0
  167. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-test-utils.production.min.js +625 -0
  168. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.development.js +20106 -0
  169. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.production.min.js +269 -0
  170. data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.profiling.min.js +285 -0
  171. data/public/vendor/npm/react-dom@18.0.0.js +1 -0
  172. data/public/vendor/npm/react@18.0.0/LICENSE +21 -0
  173. data/public/vendor/npm/react@18.0.0/README.md +13 -0
  174. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.development.js +837 -0
  175. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.production.min.js +10 -0
  176. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.profiling.min.js +10 -0
  177. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.development.js +849 -0
  178. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.production.min.js +38 -0
  179. data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.profiling.min.js +38 -0
  180. data/public/vendor/npm/react@18.0.0/cjs/react.development.js +1746 -0
  181. data/public/vendor/npm/react@18.0.0/cjs/react.production.min.js +26 -0
  182. data/public/vendor/npm/react@18.0.0/cjs/react.shared-subset.development.js +10 -0
  183. data/public/vendor/npm/react@18.0.0/cjs/react.shared-subset.production.min.js +12 -0
  184. data/public/vendor/npm/react@18.0.0/index.js +9 -0
  185. data/public/vendor/npm/react@18.0.0/jsx-dev-runtime.js +9 -0
  186. data/public/vendor/npm/react@18.0.0/jsx-runtime.js +9 -0
  187. data/public/vendor/npm/react@18.0.0/package.json +47 -0
  188. data/public/vendor/npm/react@18.0.0/react.shared-subset.js +9 -0
  189. data/public/vendor/npm/react@18.0.0/umd/react.development.js +2186 -0
  190. data/public/vendor/npm/react@18.0.0/umd/react.production.min.js +33 -0
  191. data/public/vendor/npm/react@18.0.0/umd/react.profiling.min.js +33 -0
  192. data/public/vendor/npm/react@18.0.0.js +1 -0
  193. data/public/vendor/npm/readable-stream@1.1.14/LICENSE +18 -0
  194. data/public/vendor/npm/readable-stream@1.1.14/duplex.js +2 -0
  195. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_duplex.js +5 -5
  196. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_passthrough.js +3 -3
  197. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_readable.js +10 -10
  198. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_transform.js +4 -4
  199. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_writable.js +6 -6
  200. data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/package.json +1 -1
  201. data/public/vendor/npm/readable-stream@1.1.14/passthrough.js +2 -0
  202. data/public/vendor/npm/readable-stream@1.1.14/readable.js +13 -0
  203. data/public/vendor/npm/readable-stream@1.1.14/transform.js +2 -0
  204. data/public/vendor/npm/readable-stream@1.1.14/writable.js +2 -0
  205. data/public/vendor/npm/readable-stream@1.1.14.js +1 -0
  206. data/public/vendor/npm/scheduler@0.21.0/LICENSE +21 -0
  207. data/public/vendor/npm/scheduler@0.21.0/README.md +9 -0
  208. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_mock.development.js +530 -0
  209. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_mock.production.min.js +20 -0
  210. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_post_task.development.js +153 -0
  211. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_post_task.production.min.js +14 -0
  212. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler.development.js +444 -0
  213. data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler.production.min.js +19 -0
  214. data/public/vendor/npm/scheduler@0.21.0/index.js +9 -0
  215. data/public/vendor/npm/scheduler@0.21.0/package.json +36 -0
  216. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler-unstable_mock.development.js +701 -0
  217. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler-unstable_mock.production.min.js +21 -0
  218. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.development.js +154 -0
  219. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.production.min.js +148 -0
  220. data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.profiling.min.js +148 -0
  221. data/public/vendor/npm/scheduler@0.21.0/unstable_mock.js +9 -0
  222. data/public/vendor/npm/scheduler@0.21.0/unstable_post_task.js +9 -0
  223. data/public/vendor/npm/scheduler@0.21.0.js +1 -0
  224. data/public/vendor/npm/stream-browserify@1.0.0/index.js +7 -7
  225. data/public/vendor/npm/stream-browserify@1.0.0/test/buf.js +5 -5
  226. data/public/vendor/npm/stream-browserify@1.0.0.js +1 -1
  227. data/public/vendor/npm/string_decoder@0.10.31/index.js +2 -2
  228. data/public/vendor/npm/string_decoder@0.10.31.js +1 -1
  229. data/public/vendor/npm/util@0.10.3/support/isBuffer.js +1 -1
  230. data/public/vendor/npm/util@0.10.3/test/browser/inspect.js +2 -2
  231. data/public/vendor/npm/util@0.10.3/test/browser/is.js +3 -3
  232. data/public/vendor/npm/util@0.10.3/test/node/debug.js +4 -4
  233. data/public/vendor/npm/util@0.10.3/test/node/format.js +2 -2
  234. data/public/vendor/npm/util@0.10.3/test/node/inspect.js +3 -3
  235. data/public/vendor/npm/util@0.10.3/test/node/log.js +3 -3
  236. data/public/vendor/npm/util@0.10.3/test/node/util.js +3 -3
  237. data/public/vendor/npm/util@0.10.3/util.js +3 -3
  238. data/public/vendor/npm/util@0.10.3.js +1 -1
  239. data/public/vendor/npm/vm-browserify@0.0.4/LICENSE +18 -0
  240. data/public/vendor/npm/vm-browserify@0.0.4/example/run/bundle.js +376 -0
  241. data/public/vendor/npm/vm-browserify@0.0.4/example/run/entry.js +6 -0
  242. data/public/vendor/npm/vm-browserify@0.0.4/example/run/index.html +9 -0
  243. data/public/vendor/npm/vm-browserify@0.0.4/example/run/server.js +6 -0
  244. data/public/vendor/npm/vm-browserify@0.0.4/index.js +139 -0
  245. data/public/vendor/npm/vm-browserify@0.0.4/package.json +46 -0
  246. data/public/vendor/npm/vm-browserify@0.0.4/readme.markdown +67 -0
  247. data/public/vendor/npm/vm-browserify@0.0.4/test/vm.js +34 -0
  248. data/public/vendor/npm/vm-browserify@0.0.4.js +1 -0
  249. data/public/vendor/npm/webshim@1.15.8/Gruntfile.js +4 -4
  250. data/public/vendor/npm/webshim@1.15.8/build/combobuild.js +2 -2
  251. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/color-picker.js +1 -1
  252. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/10.js +1 -1
  253. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/11.js +1 -1
  254. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/17.js +1 -1
  255. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/5.js +1 -1
  256. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/6.js +1 -1
  257. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/9.js +1 -1
  258. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/es6.js +1 -1
  259. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/excanvas.js +1 -1
  260. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/form-number-date-ui.js +1 -1
  261. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/moxie/js/moxie-html4.js +1 -1
  262. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/moxie/js/moxie-swf.js +1 -1
  263. data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/sizzle.js +1 -1
  264. data/public/vendor/npm/webshim@1.15.8/js-webshim/minified/shims/es6.js +1 -1
  265. data/public/vendor/npm/webshim@1.15.8/src/shims/color-picker.js +1 -1
  266. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/10.js +1 -1
  267. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/11.js +1 -1
  268. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/17.js +1 -1
  269. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/5.js +1 -1
  270. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/6.js +1 -1
  271. data/public/vendor/npm/webshim@1.15.8/src/shims/combos/9.js +1 -1
  272. data/public/vendor/npm/webshim@1.15.8/src/shims/es6.js +1 -1
  273. data/public/vendor/npm/webshim@1.15.8/src/shims/excanvas.js +1 -1
  274. data/public/vendor/npm/webshim@1.15.8/src/shims/form-number-date-ui.js +1 -1
  275. data/public/vendor/npm/webshim@1.15.8/src/shims/moxie/js/moxie-html4.js +1 -1
  276. data/public/vendor/npm/webshim@1.15.8/src/shims/moxie/js/moxie-swf.js +1 -1
  277. data/public/vendor/npm/webshim@1.15.8/src/shims/sizzle.js +1 -1
  278. data/public/vendor/npm/webshim@1.15.8/tests/dist/jquery.js +1 -1
  279. data/public/vendor/npm/webshim@1.15.8/tests/jquery/unit/core.js +1 -1
  280. data/public/vendor/npm/webshim@1.15.8/tests/jquery/unit/event.js +1388 -711
  281. data/public/vendor/npm/webshim@1.15.8/tests/qunit/qunit.js +1 -1
  282. data/public/vendor/npm/webshim@1.15.8/tests/test-ext/jquery-1-custom.js +1 -1
  283. data/public/vendor/npm/webshim@1.15.8/tests/test-ext/jquery-2-custom.js +1 -1
  284. data/public/vendor/npm/webshim@1.15.8/tests/test-ext/punycode.js +1 -1
  285. data/public/vendor/system-polyfills.js +865 -1
  286. data/views/blastn_options.erb +291 -0
  287. data/views/blastp_options.erb +288 -0
  288. data/views/blastx_options.erb +318 -0
  289. data/views/error.erb +12 -0
  290. data/views/layout.erb +2 -30
  291. data/views/report.erb +0 -8
  292. data/views/search.erb +16 -9
  293. data/views/tblastn_options.erb +266 -0
  294. data/views/tblastx_options.erb +291 -0
  295. metadata +318 -439
  296. data/public/vendor/github/jspm/nodelibs-buffer@0.1.0.js +0 -1
  297. data/public/vendor/github/jspm/nodelibs-module@0.1.0/index.js +0 -1
  298. data/public/vendor/github/jspm/nodelibs-module@0.1.0.js +0 -1
  299. data/public/vendor/github/jspm/nodelibs-process@0.1.1.js +0 -1
  300. data/public/vendor/npm/amdefine@1.0.0/LICENSE +0 -58
  301. data/public/vendor/npm/amdefine@1.0.0/README.md +0 -171
  302. data/public/vendor/npm/amdefine@1.0.0/amdefine.js +0 -200
  303. data/public/vendor/npm/amdefine@1.0.0/intercept.js +0 -24
  304. data/public/vendor/npm/amdefine@1.0.0/package.json +0 -16
  305. data/public/vendor/npm/amdefine@1.0.0.js +0 -1
  306. data/public/vendor/npm/base62@0.1.1/LICENSE +0 -20
  307. data/public/vendor/npm/base62@0.1.1/Readme.md +0 -30
  308. data/public/vendor/npm/base62@0.1.1/base62.js +0 -28
  309. data/public/vendor/npm/base62@0.1.1/package.json +0 -21
  310. data/public/vendor/npm/base62@0.1.1/test/test.js +0 -13
  311. data/public/vendor/npm/base62@0.1.1.js +0 -1
  312. data/public/vendor/npm/base64-js@0.0.8/lib/b64.js +0 -125
  313. data/public/vendor/npm/base64-js@0.0.8/package.json +0 -34
  314. data/public/vendor/npm/base64-js@0.0.8/test/convert.js +0 -39
  315. data/public/vendor/npm/base64-js@0.0.8/test/url-safe.js +0 -15
  316. data/public/vendor/npm/base64-js@0.0.8.js +0 -1
  317. data/public/vendor/npm/buffer@3.4.3/index.js +0 -1533
  318. data/public/vendor/npm/buffer@3.4.3/package.json +0 -67
  319. data/public/vendor/npm/buffer@3.4.3/test/_polyfill.js +0 -152
  320. data/public/vendor/npm/buffer@3.4.3/test/base64.js +0 -33
  321. data/public/vendor/npm/buffer@3.4.3/test/basic.js +0 -58
  322. data/public/vendor/npm/buffer@3.4.3/test/compare.js +0 -53
  323. data/public/vendor/npm/buffer@3.4.3/test/constructor.js +0 -132
  324. data/public/vendor/npm/buffer@3.4.3/test/deprecated.js +0 -21
  325. data/public/vendor/npm/buffer@3.4.3/test/from-string.js +0 -105
  326. data/public/vendor/npm/buffer@3.4.3/test/methods.js +0 -109
  327. data/public/vendor/npm/buffer@3.4.3/test/node/README.txt +0 -1
  328. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-ascii.js +0 -20
  329. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-bytelength.js +0 -38
  330. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-concat.js +0 -26
  331. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-indexof.js +0 -78
  332. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-inspect.js +0 -31
  333. data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer.js +0 -804
  334. data/public/vendor/npm/buffer@3.4.3/test/node-es6/README.txt +0 -1
  335. data/public/vendor/npm/buffer@3.4.3/test/node-es6/test-buffer-arraybuffer.js +0 -37
  336. data/public/vendor/npm/buffer@3.4.3/test/node-es6/test-buffer-iterator.js +0 -32
  337. data/public/vendor/npm/buffer@3.4.3/test/slice.js +0 -33
  338. data/public/vendor/npm/buffer@3.4.3/test/static.js +0 -32
  339. data/public/vendor/npm/buffer@3.4.3/test/to-string.js +0 -106
  340. data/public/vendor/npm/buffer@3.4.3/test/write.js +0 -90
  341. data/public/vendor/npm/buffer@3.4.3.js +0 -1
  342. data/public/vendor/npm/core-util-is@1.0.1/float.patch +0 -604
  343. data/public/vendor/npm/core-util-is@1.0.1/lib/util.js +0 -66
  344. data/public/vendor/npm/core-util-is@1.0.1/util.js +0 -66
  345. data/public/vendor/npm/core-util-is@1.0.1.js +0 -1
  346. data/public/vendor/npm/envify@3.4.0/README.md +0 -145
  347. data/public/vendor/npm/envify@3.4.0/bin/envify +0 -17
  348. data/public/vendor/npm/envify@3.4.0/custom.js +0 -33
  349. data/public/vendor/npm/envify@3.4.0/index.js +0 -4
  350. data/public/vendor/npm/envify@3.4.0/package.json +0 -35
  351. data/public/vendor/npm/envify@3.4.0/visitors.js +0 -33
  352. data/public/vendor/npm/envify@3.4.0.js +0 -1
  353. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/bin/esparse.js +0 -90
  354. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/bin/esvalidate.js +0 -145
  355. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/esprima.js +0 -6191
  356. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/package.json +0 -72
  357. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/compat.js +0 -167
  358. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/reflect.js +0 -421
  359. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/run.js +0 -34
  360. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/runner.js +0 -418
  361. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/test.js +0 -34730
  362. data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb.js +0 -1
  363. data/public/vendor/npm/ieee754@1.1.6/LICENSE +0 -56
  364. data/public/vendor/npm/ieee754@1.1.6/package.json +0 -34
  365. data/public/vendor/npm/ieee754@1.1.6/test/basic.js +0 -20
  366. data/public/vendor/npm/ieee754@1.1.6.js +0 -1
  367. data/public/vendor/npm/is-array@1.0.1/History.md +0 -11
  368. data/public/vendor/npm/is-array@1.0.1/Readme.md +0 -27
  369. data/public/vendor/npm/is-array@1.0.1/component.json +0 -13
  370. data/public/vendor/npm/is-array@1.0.1/index.js +0 -33
  371. data/public/vendor/npm/is-array@1.0.1/package.json +0 -10
  372. data/public/vendor/npm/is-array@1.0.1/test/test.html +0 -46
  373. data/public/vendor/npm/is-array@1.0.1.js +0 -1
  374. data/public/vendor/npm/jstransform@10.1.0/LICENSE +0 -201
  375. data/public/vendor/npm/jstransform@10.1.0/README.md +0 -98
  376. data/public/vendor/npm/jstransform@10.1.0/jestEnvironment.js +0 -3
  377. data/public/vendor/npm/jstransform@10.1.0/jestPreprocessor.js +0 -8
  378. data/public/vendor/npm/jstransform@10.1.0/package.json +0 -52
  379. data/public/vendor/npm/jstransform@10.1.0/polyfill/Object.es6.js +0 -54
  380. data/public/vendor/npm/jstransform@10.1.0/src/__tests__/jstransform-test.js +0 -246
  381. data/public/vendor/npm/jstransform@10.1.0/src/__tests__/jstransform-utils-test.js +0 -31
  382. data/public/vendor/npm/jstransform@10.1.0/src/docblock.js +0 -86
  383. data/public/vendor/npm/jstransform@10.1.0/src/jstransform.js +0 -180
  384. data/public/vendor/npm/jstransform@10.1.0/src/utils.js +0 -386
  385. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-arrow-function-visitors-test.js +0 -57
  386. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-call-spread-visitors-test.js +0 -46
  387. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-class-visitors-test.js +0 -463
  388. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-destructuring-visitors-test.js +0 -144
  389. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-es7-object-integration-test.js +0 -40
  390. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-object-concise-method-visitors-test.js +0 -47
  391. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-object-short-notation-visitors-test.js +0 -33
  392. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-rest-param-visitors-test.js +0 -119
  393. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-template-visitors-test.js +0 -138
  394. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es7-rest-property-helpers-test.js +0 -47
  395. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es7-spread-property-visitors-test.js +0 -90
  396. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/gen/generate-type-syntax-test.js +0 -40
  397. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/gen/type-syntax-test.rec.js +0 -846
  398. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/reserved-words-test.js +0 -40
  399. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-alias-syntax-test.js +0 -34
  400. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-class-syntax-test.js +0 -105
  401. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-function-syntax-test.js +0 -126
  402. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-interface-syntax-test.js +0 -29
  403. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-object-method-syntax-test.js +0 -65
  404. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-pattern-syntax-test.js +0 -45
  405. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-syntax-test.js +0 -46
  406. data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-variable-declaration-syntax-test.js +0 -102
  407. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-arrow-function-visitors.js +0 -66
  408. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-call-spread-visitors.js +0 -72
  409. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-class-visitors.js +0 -316
  410. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-destructuring-visitors.js +0 -135
  411. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-object-concise-method-visitors.js +0 -28
  412. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-object-short-notation-visitors.js +0 -12
  413. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-rest-param-visitors.js +0 -45
  414. data/public/vendor/npm/jstransform@10.1.0/visitors/es6-template-visitors.js +0 -90
  415. data/public/vendor/npm/jstransform@10.1.0/visitors/es7-rest-property-helpers.js +0 -80
  416. data/public/vendor/npm/jstransform@10.1.0/visitors/es7-spread-property-visitors.js +0 -56
  417. data/public/vendor/npm/jstransform@10.1.0/visitors/reserved-words-helper.js +0 -74
  418. data/public/vendor/npm/jstransform@10.1.0/visitors/reserved-words-visitors.js +0 -30
  419. data/public/vendor/npm/jstransform@10.1.0/visitors/type-syntax.js +0 -118
  420. data/public/vendor/npm/jstransform@10.1.0.js +0 -1
  421. data/public/vendor/npm/process@0.10.1/browser.js +0 -58
  422. data/public/vendor/npm/process@0.10.1.js +0 -1
  423. data/public/vendor/npm/qs@2.4.1/test/stringify.js +0 -162
  424. data/public/vendor/npm/react@0.13.3/README.md +0 -20
  425. data/public/vendor/npm/react@0.13.3/addons.js +0 -2
  426. data/public/vendor/npm/react@0.13.3/dist/JSXTransformer.js +0 -11346
  427. data/public/vendor/npm/react@0.13.3/dist/react-with-addons.js +0 -10483
  428. data/public/vendor/npm/react@0.13.3/dist/react-with-addons.min.js +0 -7297
  429. data/public/vendor/npm/react@0.13.3/dist/react.js +0 -9468
  430. data/public/vendor/npm/react@0.13.3/dist/react.min.js +0 -6764
  431. data/public/vendor/npm/react@0.13.3/lib/AutoFocusMixin.js +0 -9
  432. data/public/vendor/npm/react@0.13.3/lib/BeforeInputEventPlugin.js +0 -197
  433. data/public/vendor/npm/react@0.13.3/lib/CSSCore.js +0 -39
  434. data/public/vendor/npm/react@0.13.3/lib/CSSProperty.js +0 -123
  435. data/public/vendor/npm/react@0.13.3/lib/CSSPropertyOperations.js +0 -103
  436. data/public/vendor/npm/react@0.13.3/lib/CallbackQueue.js +0 -43
  437. data/public/vendor/npm/react@0.13.3/lib/ChangeEventPlugin.js +0 -174
  438. data/public/vendor/npm/react@0.13.3/lib/ClientReactRootIndex.js +0 -23
  439. data/public/vendor/npm/react@0.13.3/lib/DOMChildrenOperations.js +0 -57
  440. data/public/vendor/npm/react@0.13.3/lib/DOMProperty.js +0 -96
  441. data/public/vendor/npm/react@0.13.3/lib/DOMPropertyOperations.js +0 -99
  442. data/public/vendor/npm/react@0.13.3/lib/Danger.js +0 -67
  443. data/public/vendor/npm/react@0.13.3/lib/DefaultEventPluginOrder.js +0 -5
  444. data/public/vendor/npm/react@0.13.3/lib/EnterLeaveEventPlugin.js +0 -69
  445. data/public/vendor/npm/react@0.13.3/lib/EventConstants.js +0 -55
  446. data/public/vendor/npm/react@0.13.3/lib/EventListener.js +0 -34
  447. data/public/vendor/npm/react@0.13.3/lib/EventPluginHub.js +0 -103
  448. data/public/vendor/npm/react@0.13.3/lib/EventPluginRegistry.js +0 -115
  449. data/public/vendor/npm/react@0.13.3/lib/EventPluginUtils.js +0 -121
  450. data/public/vendor/npm/react@0.13.3/lib/EventPropagators.js +0 -62
  451. data/public/vendor/npm/react@0.13.3/lib/ExecutionEnvironment.js +0 -42
  452. data/public/vendor/npm/react@0.13.3/lib/FallbackCompositionState.js +0 -45
  453. data/public/vendor/npm/react@0.13.3/lib/HTMLDOMPropertyConfig.js +0 -155
  454. data/public/vendor/npm/react@0.13.3/lib/LinkedStateMixin.js +0 -8
  455. data/public/vendor/npm/react@0.13.3/lib/LinkedValueUtils.js +0 -74
  456. data/public/vendor/npm/react@0.13.3/lib/LocalEventTrapMixin.js +0 -26
  457. data/public/vendor/npm/react@0.13.3/lib/MobileSafariClickEventPlugin.js +0 -17
  458. data/public/vendor/npm/react@0.13.3/lib/Object.assign.js +0 -47
  459. data/public/vendor/npm/react@0.13.3/lib/PooledClass.js +0 -75
  460. data/public/vendor/npm/react@0.13.3/lib/React.js +0 -93
  461. data/public/vendor/npm/react@0.13.3/lib/ReactBrowserComponentMixin.js +0 -7
  462. data/public/vendor/npm/react@0.13.3/lib/ReactBrowserEventEmitter.js +0 -136
  463. data/public/vendor/npm/react@0.13.3/lib/ReactCSSTransitionGroup.js +0 -34
  464. data/public/vendor/npm/react@0.13.3/lib/ReactCSSTransitionGroupChild.js +0 -92
  465. data/public/vendor/npm/react@0.13.3/lib/ReactChildReconciler.js +0 -57
  466. data/public/vendor/npm/react@0.13.3/lib/ReactChildren.js +0 -67
  467. data/public/vendor/npm/react@0.13.3/lib/ReactClass.js +0 -338
  468. data/public/vendor/npm/react@0.13.3/lib/ReactComponent.js +0 -50
  469. data/public/vendor/npm/react@0.13.3/lib/ReactComponentBrowserEnvironment.js +0 -14
  470. data/public/vendor/npm/react@0.13.3/lib/ReactComponentEnvironment.js +0 -19
  471. data/public/vendor/npm/react@0.13.3/lib/ReactComponentWithPureRenderMixin.js +0 -7
  472. data/public/vendor/npm/react@0.13.3/lib/ReactCompositeComponent.js +0 -374
  473. data/public/vendor/npm/react@0.13.3/lib/ReactContext.js +0 -27
  474. data/public/vendor/npm/react@0.13.3/lib/ReactCurrentOwner.js +0 -32
  475. data/public/vendor/npm/react@0.13.3/lib/ReactDOM.js +0 -146
  476. data/public/vendor/npm/react@0.13.3/lib/ReactDOMButton.js +0 -35
  477. data/public/vendor/npm/react@0.13.3/lib/ReactDOMComponent.js +0 -267
  478. data/public/vendor/npm/react@0.13.3/lib/ReactDOMForm.js +0 -21
  479. data/public/vendor/npm/react@0.13.3/lib/ReactDOMIDOperations.js +0 -63
  480. data/public/vendor/npm/react@0.13.3/lib/ReactDOMIframe.js +0 -20
  481. data/public/vendor/npm/react@0.13.3/lib/ReactDOMImg.js +0 -21
  482. data/public/vendor/npm/react@0.13.3/lib/ReactDOMInput.js +0 -94
  483. data/public/vendor/npm/react@0.13.3/lib/ReactDOMOption.js +0 -23
  484. data/public/vendor/npm/react@0.13.3/lib/ReactDOMSelect.js +0 -112
  485. data/public/vendor/npm/react@0.13.3/lib/ReactDOMSelection.js +0 -103
  486. data/public/vendor/npm/react@0.13.3/lib/ReactDOMTextComponent.js +0 -38
  487. data/public/vendor/npm/react@0.13.3/lib/ReactDOMTextarea.js +0 -70
  488. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultBatchingStrategy.js +0 -37
  489. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultInjection.js +0 -93
  490. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultPerf.js +0 -183
  491. data/public/vendor/npm/react@0.13.3/lib/ReactDefaultPerfAnalysis.js +0 -145
  492. data/public/vendor/npm/react@0.13.3/lib/ReactElement.js +0 -151
  493. data/public/vendor/npm/react@0.13.3/lib/ReactElementValidator.js +0 -218
  494. data/public/vendor/npm/react@0.13.3/lib/ReactEmptyComponent.js +0 -47
  495. data/public/vendor/npm/react@0.13.3/lib/ReactErrorUtils.js +0 -30
  496. data/public/vendor/npm/react@0.13.3/lib/ReactEventEmitterMixin.js +0 -12
  497. data/public/vendor/npm/react@0.13.3/lib/ReactEventListener.js +0 -93
  498. data/public/vendor/npm/react@0.13.3/lib/ReactFragment.js +0 -110
  499. data/public/vendor/npm/react@0.13.3/lib/ReactInjection.js +0 -27
  500. data/public/vendor/npm/react@0.13.3/lib/ReactInputSelection.js +0 -75
  501. data/public/vendor/npm/react@0.13.3/lib/ReactInstanceHandles.js +0 -113
  502. data/public/vendor/npm/react@0.13.3/lib/ReactInstanceMap.js +0 -47
  503. data/public/vendor/npm/react@0.13.3/lib/ReactLifeCycle.js +0 -9
  504. data/public/vendor/npm/react@0.13.3/lib/ReactLink.js +0 -16
  505. data/public/vendor/npm/react@0.13.3/lib/ReactMarkupChecksum.js +0 -17
  506. data/public/vendor/npm/react@0.13.3/lib/ReactMount.js +0 -347
  507. data/public/vendor/npm/react@0.13.3/lib/ReactMultiChild.js +0 -190
  508. data/public/vendor/npm/react@0.13.3/lib/ReactMultiChildUpdateTypes.js +0 -10
  509. data/public/vendor/npm/react@0.13.3/lib/ReactNativeComponent.js +0 -53
  510. data/public/vendor/npm/react@0.13.3/lib/ReactOwner.js +0 -21
  511. data/public/vendor/npm/react@0.13.3/lib/ReactPerf.js +0 -42
  512. data/public/vendor/npm/react@0.13.3/lib/ReactPropTransferer.js +0 -40
  513. data/public/vendor/npm/react@0.13.3/lib/ReactPropTypeLocationNames.js +0 -13
  514. data/public/vendor/npm/react@0.13.3/lib/ReactPropTypeLocations.js +0 -9
  515. data/public/vendor/npm/react@0.13.3/lib/ReactPropTypes.js +0 -225
  516. data/public/vendor/npm/react@0.13.3/lib/ReactPutListenerQueue.js +0 -31
  517. data/public/vendor/npm/react@0.13.3/lib/ReactReconcileTransaction.js +0 -66
  518. data/public/vendor/npm/react@0.13.3/lib/ReactReconciler.js +0 -44
  519. data/public/vendor/npm/react@0.13.3/lib/ReactRef.js +0 -36
  520. data/public/vendor/npm/react@0.13.3/lib/ReactRootIndex.js +0 -29
  521. data/public/vendor/npm/react@0.13.3/lib/ReactServerRendering.js +0 -44
  522. data/public/vendor/npm/react@0.13.3/lib/ReactServerRenderingTransaction.js +0 -47
  523. data/public/vendor/npm/react@0.13.3/lib/ReactStateSetters.js +0 -104
  524. data/public/vendor/npm/react@0.13.3/lib/ReactTestUtils.js +0 -249
  525. data/public/vendor/npm/react@0.13.3/lib/ReactTransitionChildMapping.js +0 -53
  526. data/public/vendor/npm/react@0.13.3/lib/ReactTransitionEvents.js +0 -68
  527. data/public/vendor/npm/react@0.13.3/lib/ReactTransitionGroup.js +0 -140
  528. data/public/vendor/npm/react@0.13.3/lib/ReactUpdateQueue.js +0 -107
  529. data/public/vendor/npm/react@0.13.3/lib/ReactUpdates.js +0 -139
  530. data/public/vendor/npm/react@0.13.3/lib/ReactWithAddons.js +0 -30
  531. data/public/vendor/npm/react@0.13.3/lib/SVGDOMPropertyConfig.js +0 -76
  532. data/public/vendor/npm/react@0.13.3/lib/SelectEventPlugin.js +0 -91
  533. data/public/vendor/npm/react@0.13.3/lib/ServerReactRootIndex.js +0 -29
  534. data/public/vendor/npm/react@0.13.3/lib/SimpleEventPlugin.js +0 -287
  535. data/public/vendor/npm/react@0.13.3/lib/SyntheticClipboardEvent.js +0 -11
  536. data/public/vendor/npm/react@0.13.3/lib/SyntheticCompositionEvent.js +0 -9
  537. data/public/vendor/npm/react@0.13.3/lib/SyntheticDragEvent.js +0 -9
  538. data/public/vendor/npm/react@0.13.3/lib/SyntheticEvent.js +0 -90
  539. data/public/vendor/npm/react@0.13.3/lib/SyntheticFocusEvent.js +0 -9
  540. data/public/vendor/npm/react@0.13.3/lib/SyntheticInputEvent.js +0 -9
  541. data/public/vendor/npm/react@0.13.3/lib/SyntheticKeyboardEvent.js +0 -43
  542. data/public/vendor/npm/react@0.13.3/lib/SyntheticMouseEvent.js +0 -38
  543. data/public/vendor/npm/react@0.13.3/lib/SyntheticTouchEvent.js +0 -19
  544. data/public/vendor/npm/react@0.13.3/lib/SyntheticUIEvent.js +0 -29
  545. data/public/vendor/npm/react@0.13.3/lib/SyntheticWheelEvent.js +0 -18
  546. data/public/vendor/npm/react@0.13.3/lib/Transaction.js +0 -90
  547. data/public/vendor/npm/react@0.13.3/lib/ViewportMetrics.js +0 -27
  548. data/public/vendor/npm/react@0.13.3/lib/accumulateInto.js +0 -26
  549. data/public/vendor/npm/react@0.13.3/lib/adler32.js +0 -32
  550. data/public/vendor/npm/react@0.13.3/lib/camelize.js +0 -30
  551. data/public/vendor/npm/react@0.13.3/lib/camelizeStyleName.js +0 -8
  552. data/public/vendor/npm/react@0.13.3/lib/cloneWithProps.js +0 -20
  553. data/public/vendor/npm/react@0.13.3/lib/containsNode.js +0 -20
  554. data/public/vendor/npm/react@0.13.3/lib/createArrayFromMixed.js +0 -15
  555. data/public/vendor/npm/react@0.13.3/lib/createFullPageComponent.js +0 -22
  556. data/public/vendor/npm/react@0.13.3/lib/createNodesFromMarkup.js +0 -39
  557. data/public/vendor/npm/react@0.13.3/lib/cx.js +0 -20
  558. data/public/vendor/npm/react@0.13.3/lib/dangerousStyleValue.js +0 -19
  559. data/public/vendor/npm/react@0.13.3/lib/emptyFunction.js +0 -32
  560. data/public/vendor/npm/react@0.13.3/lib/emptyObject.js +0 -9
  561. data/public/vendor/npm/react@0.13.3/lib/escapeTextContentForBrowser.js +0 -38
  562. data/public/vendor/npm/react@0.13.3/lib/findDOMNode.js +0 -31
  563. data/public/vendor/npm/react@0.13.3/lib/flattenChildren.js +0 -25
  564. data/public/vendor/npm/react@0.13.3/lib/focusNode.js +0 -27
  565. data/public/vendor/npm/react@0.13.3/lib/forEachAccumulated.js +0 -29
  566. data/public/vendor/npm/react@0.13.3/lib/getActiveElement.js +0 -27
  567. data/public/vendor/npm/react@0.13.3/lib/getEventCharCode.js +0 -50
  568. data/public/vendor/npm/react@0.13.3/lib/getEventKey.js +0 -72
  569. data/public/vendor/npm/react@0.13.3/lib/getEventModifierState.js +0 -45
  570. data/public/vendor/npm/react@0.13.3/lib/getEventTarget.js +0 -29
  571. data/public/vendor/npm/react@0.13.3/lib/getIteratorFn.js +0 -42
  572. data/public/vendor/npm/react@0.13.3/lib/getMarkupWrap.js +0 -73
  573. data/public/vendor/npm/react@0.13.3/lib/getNodeForCharacterOffset.js +0 -73
  574. data/public/vendor/npm/react@0.13.3/lib/getReactRootElementInContainer.js +0 -33
  575. data/public/vendor/npm/react@0.13.3/lib/getTextContentAccessor.js +0 -11
  576. data/public/vendor/npm/react@0.13.3/lib/getUnboundedScrollPosition.js +0 -38
  577. data/public/vendor/npm/react@0.13.3/lib/hyphenate.js +0 -31
  578. data/public/vendor/npm/react@0.13.3/lib/hyphenateStyleName.js +0 -8
  579. data/public/vendor/npm/react@0.13.3/lib/instantiateReactComponent.js +0 -55
  580. data/public/vendor/npm/react@0.13.3/lib/invariant.js +0 -26
  581. data/public/vendor/npm/react@0.13.3/lib/isEventSupported.js +0 -24
  582. data/public/vendor/npm/react@0.13.3/lib/isNode.js +0 -25
  583. data/public/vendor/npm/react@0.13.3/lib/isTextInputElement.js +0 -41
  584. data/public/vendor/npm/react@0.13.3/lib/isTextNode.js +0 -6
  585. data/public/vendor/npm/react@0.13.3/lib/joinClasses.js +0 -39
  586. data/public/vendor/npm/react@0.13.3/lib/keyMirror.js +0 -18
  587. data/public/vendor/npm/react@0.13.3/lib/keyOf.js +0 -34
  588. data/public/vendor/npm/react@0.13.3/lib/mapObject.js +0 -51
  589. data/public/vendor/npm/react@0.13.3/lib/memoizeStringOnly.js +0 -31
  590. data/public/vendor/npm/react@0.13.3/lib/onlyChild.js +0 -11
  591. data/public/vendor/npm/react@0.13.3/lib/performance.js +0 -8
  592. data/public/vendor/npm/react@0.13.3/lib/performanceNow.js +0 -7
  593. data/public/vendor/npm/react@0.13.3/lib/quoteAttributeValueForBrowser.js +0 -7
  594. data/public/vendor/npm/react@0.13.3/lib/setInnerHTML.js +0 -40
  595. data/public/vendor/npm/react@0.13.3/lib/setTextContent.js +0 -16
  596. data/public/vendor/npm/react@0.13.3/lib/shallowEqual.js +0 -42
  597. data/public/vendor/npm/react@0.13.3/lib/shouldUpdateReactComponent.js +0 -51
  598. data/public/vendor/npm/react@0.13.3/lib/toArray.js +0 -21
  599. data/public/vendor/npm/react@0.13.3/lib/traverseAllChildren.js +0 -104
  600. data/public/vendor/npm/react@0.13.3/lib/update.js +0 -78
  601. data/public/vendor/npm/react@0.13.3/lib/warning.js +0 -34
  602. data/public/vendor/npm/react@0.13.3/package.json +0 -34
  603. data/public/vendor/npm/react@0.13.3/react.js +0 -2
  604. data/public/vendor/npm/react@0.13.3.js +0 -1
  605. data/public/vendor/npm/readable-stream@1.1.13/duplex.js +0 -2
  606. data/public/vendor/npm/readable-stream@1.1.13/passthrough.js +0 -2
  607. data/public/vendor/npm/readable-stream@1.1.13/readable.js +0 -8
  608. data/public/vendor/npm/readable-stream@1.1.13/transform.js +0 -2
  609. data/public/vendor/npm/readable-stream@1.1.13/writable.js +0 -2
  610. data/public/vendor/npm/readable-stream@1.1.13.js +0 -1
  611. data/public/vendor/npm/source-map@0.1.31/CHANGELOG.md +0 -112
  612. data/public/vendor/npm/source-map@0.1.31/LICENSE +0 -28
  613. data/public/vendor/npm/source-map@0.1.31/Makefile.dryice.js +0 -89
  614. data/public/vendor/npm/source-map@0.1.31/README.md +0 -434
  615. data/public/vendor/npm/source-map@0.1.31/build/assert-shim.js +0 -58
  616. data/public/vendor/npm/source-map@0.1.31/build/mini-require.js +0 -154
  617. data/public/vendor/npm/source-map@0.1.31/build/prefix-source-map.jsm +0 -20
  618. data/public/vendor/npm/source-map@0.1.31/build/prefix-utils.jsm +0 -18
  619. data/public/vendor/npm/source-map@0.1.31/build/suffix-browser.js +0 -8
  620. data/public/vendor/npm/source-map@0.1.31/build/suffix-source-map.jsm +0 -6
  621. data/public/vendor/npm/source-map@0.1.31/build/suffix-utils.jsm +0 -21
  622. data/public/vendor/npm/source-map@0.1.31/build/test-prefix.js +0 -10
  623. data/public/vendor/npm/source-map@0.1.31/build/test-suffix.js +0 -5
  624. data/public/vendor/npm/source-map@0.1.31/lib/source-map/array-set.js +0 -49
  625. data/public/vendor/npm/source-map@0.1.31/lib/source-map/base64-vlq.js +0 -56
  626. data/public/vendor/npm/source-map@0.1.31/lib/source-map/base64.js +0 -44
  627. data/public/vendor/npm/source-map@0.1.31/lib/source-map/binary-search.js +0 -83
  628. data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-map-consumer.js +0 -238
  629. data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-map-generator.js +0 -231
  630. data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-node.js +0 -234
  631. data/public/vendor/npm/source-map@0.1.31/lib/source-map/util.js +0 -207
  632. data/public/vendor/npm/source-map@0.1.31/lib/source-map.js +0 -4
  633. data/public/vendor/npm/source-map@0.1.31/package.json +0 -52
  634. data/public/vendor/npm/source-map@0.1.31/test/run-tests.js +0 -50
  635. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-api.js +0 -19
  636. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-array-set.js +0 -84
  637. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-base64-vlq.js +0 -17
  638. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-base64.js +0 -26
  639. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-binary-search.js +0 -37
  640. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-dog-fooding.js +0 -76
  641. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-map-consumer.js +0 -426
  642. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-map-generator.js +0 -480
  643. data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-node.js +0 -307
  644. data/public/vendor/npm/source-map@0.1.31/test/source-map/util.js +0 -84
  645. data/public/vendor/npm/source-map@0.1.31.js +0 -1
  646. data/public/vendor/npm/through@2.3.8/LICENSE.APACHE2 +0 -15
  647. data/public/vendor/npm/through@2.3.8/LICENSE.MIT +0 -24
  648. data/public/vendor/npm/through@2.3.8/index.js +0 -93
  649. data/public/vendor/npm/through@2.3.8/package.json +0 -36
  650. data/public/vendor/npm/through@2.3.8/readme.markdown +0 -64
  651. data/public/vendor/npm/through@2.3.8/test/async.js +0 -26
  652. data/public/vendor/npm/through@2.3.8/test/auto-destroy.js +0 -26
  653. data/public/vendor/npm/through@2.3.8/test/buffering.js +0 -57
  654. data/public/vendor/npm/through@2.3.8/test/end.js +0 -37
  655. data/public/vendor/npm/through@2.3.8/test/index.js +0 -98
  656. data/public/vendor/npm/through@2.3.8/test.js +0 -2
  657. data/public/vendor/npm/through@2.3.8.js +0 -1
  658. data/views/_options.erb +0 -156
  659. /data/public/vendor/github/jspm/{nodelibs-buffer@0.1.0 → nodelibs-buffer@0.1.1}/index.js +0 -0
  660. /data/public/vendor/github/jspm/{nodelibs-process@0.1.1 → nodelibs-process@0.1.2}/index.js +0 -0
  661. /data/public/vendor/npm/{readable-stream@1.1.13 → assert@1.5.0}/LICENSE +0 -0
  662. /data/public/vendor/npm/{buffer@3.4.3 → buffer@5.7.1}/LICENSE +0 -0
  663. /data/public/vendor/npm/{core-util-is@1.0.1 → core-util-is@1.0.3}/README.md +0 -0
  664. /data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/LICENSE +0 -0
  665. /data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/index.js +0 -0
  666. /data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/README.md +0 -0
  667. /data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/float.patch +0 -0
data/public/js/sidebar.js CHANGED
@@ -1,27 +1,161 @@
1
- import React from 'react';
1
+ import { Component } from 'react';
2
2
  import _ from 'underscore';
3
3
 
4
4
  import downloadFASTA from './download_fasta';
5
- import AlignmentExporter from './alignment_exporter'; // to download textual alignment
5
+ import asMailtoHref from './mailto';
6
+ import CloudShareModal from './cloud_share_modal';
6
7
 
8
+ /**
9
+ * checks whether code is being run by jest
10
+ */
11
+ // eslint-disable-next-line no-undef
12
+ const isTestMode = () => process.env.JEST_WORKER_ID !== undefined || process.env.NODE_ENV === 'test';
7
13
  /**
8
14
  * Renders links for downloading hit information in different formats.
9
15
  * Renders links for navigating to each query.
10
16
  */
11
- export default React.createClass({
17
+ export default class extends Component {
18
+
19
+ constructor(props) {
20
+ super(props);
21
+ this.downloadFastaOfAll = this.downloadFastaOfAll.bind(this);
22
+ this.downloadFastaOfSelected = this.downloadFastaOfSelected.bind(this);
23
+ this.topPanelJSX = this.topPanelJSX.bind(this);
24
+ this.summaryString = this.summaryString.bind(this);
25
+ this.indexJSX = this.indexJSX.bind(this);
26
+ this.downloadsPanelJSX = this.downloadsPanelJSX.bind(this);
27
+ this.handleQueryIndexChange = this.handleQueryIndexChange.bind(this);
28
+ this.isElementInViewPort = this.isElementInViewPort.bind(this);
29
+ this.setVisibleQueryIndex = this.setVisibleQueryIndex.bind(this);
30
+ this.debounceScrolling = this.debounceScrolling.bind(this);
31
+ this.scrollListener = this.scrollListener.bind(this);
32
+ this.copyURL = this.copyURL.bind(this);
33
+ this.shareCloudInit = this.shareCloudInit.bind(this);
34
+ this.sharingPanelJSX = this.sharingPanelJSX.bind(this);
35
+ this.timeout = null;
36
+ this.queryElems = [];
37
+ this.state = {
38
+ queryIndex: 1
39
+ };
40
+ }
41
+
42
+ componentDidMount() {
43
+ /**
44
+ * Fixes tooltips in the sidebar, allows tooltip display on click
45
+ */
46
+ $(function () {
47
+ $('.sidebar [data-toggle="tooltip"]').tooltip({ placement: 'right' });
48
+ $('#copyURL').tooltip({ title: 'Copied!', trigger: 'click', placement: 'right', delay: 0 });
49
+ });
50
+
51
+ //keep track of the current queryIndex so it doesn't get lost on page reload
52
+ const urlMatch = window.location.href.match(/#Query_(\d+)/);
53
+ if (urlMatch && urlMatch.length > 1) {
54
+ const queryNumber = +urlMatch[1];
55
+ const index = this.props.data.queries.findIndex(query => query.number === queryNumber);
56
+ this.setState({ queryIndex: index + 1 });
57
+ }
58
+ window.addEventListener('scroll', this.scrollListener);
59
+ $('a[href^="#Query_"]').on('click', this.animateAnchorElements);
60
+ }
61
+ componentWillUnmount() {
62
+ window.removeEventListener('scroll', this.scrollListener);
63
+ }
64
+ componentDidUpdate(prevProps) {
65
+ if (this.props.allQueriesLoaded && !prevProps.allQueriesLoaded) {
66
+ /**
67
+ * storing all query elements in this variable once they all become available so we don't have to fetch them all over again
68
+ */
69
+ this.queryElems = Array.from(document.querySelectorAll('.resultn'));
70
+ }
71
+ }
72
+
73
+
12
74
  /**
13
- * Clear sessionStorage - useful to initiate a new search in the same tab.
14
- * Passing sessionStorage.clear directly as onclick callback didn't work
15
- * (on macOS Chrome).
16
- */
17
- clearSession: function () {
18
- sessionStorage.clear();
19
- },
75
+ * to avoid unnecessary computations, we debounce the scroll listener so it only fires after user has stopped scrolling for some milliseconds
76
+ */
77
+ scrollListener() {
78
+ this.debounceScrolling(this.setVisibleQueryIndex, 500);
79
+ }
80
+
81
+ debounceScrolling(callback, timer) {
82
+ if (this.timeout) {
83
+ clearTimeout(this.timeout);
84
+ }
85
+ this.timeout = setTimeout(callback, timer);
86
+ }
20
87
 
88
+ /**
89
+ * This method makes the page aware of what query is visible so that clicking previous / next button at any point
90
+ * navigates to the proper query
91
+ */
92
+ setVisibleQueryIndex() {
93
+ const queryElems = this.queryElems.length ? this.queryElems : Array.from(document.querySelectorAll('.resultn'));
94
+ const hits = Array.from(document.querySelectorAll('.hit[id^=Query_]'));
95
+ // get the first visible element and marks it as the current query
96
+ const topmostEl = queryElems.find(this.isElementInViewPort) || hits.find(this.isElementInViewPort);
97
+ if (topmostEl) {
98
+ const queryIndex = Number(topmostEl.id.match(/Query_(\d+)/)[1]);
99
+ let hash = `#Query_${queryIndex}`;
100
+ // if we can guarantee that the browser can handle change in url hash without the page jumping,
101
+ // then we update the url hash after scroll. else, hash is only updated on click of next or prev button
102
+ if (window.history.pushState) {
103
+ window.history.pushState(null, null, hash);
104
+ }
105
+ this.setState({ queryIndex });
106
+ }
107
+ }
108
+ animateAnchorElements(e) {
109
+ // allow normal behavior in test mode to prevent warnings or errors from jquery
110
+ if (isTestMode()) return;
111
+ e.preventDefault();
112
+ $('html, body').animate({
113
+ scrollTop: $(this.hash).offset().top
114
+ }, 300);
115
+ if (window.history.pushState) {
116
+ window.history.pushState(null, null, this.hash);
117
+ } else {
118
+ window.location.hash = this.hash;
119
+ }
120
+ }
121
+ isElementInViewPort(elem) {
122
+ const { top, left, right, bottom } = elem.getBoundingClientRect();
123
+ return (
124
+ top >= 0 &&
125
+ left >= 0 &&
126
+ bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
127
+ right <= (window.innerWidth || document.documentElement.clientWidth)
128
+ );
129
+ }
130
+ /**
131
+ * Clear sessionStorage - useful to initiate a new search in the same tab.
132
+ * Passing sessionStorage.clear directly as onclick callback didn't work
133
+ * (on macOS Chrome).
134
+ */
135
+ clearSession() {
136
+ sessionStorage.clear();
137
+ }
138
+ /**
139
+ *
140
+ * handle next and previous query button clicks
141
+ */
142
+ handleQueryIndexChange(nextQuery) {
143
+ if (nextQuery < 1 || nextQuery > this.props.data.queries.length) return;
144
+ const anchorEl = document.createElement('a');
145
+ //indexing at [nextQuery - 1] because array is 0-indexed
146
+ anchorEl.setAttribute('href', '#Query_' + this.props.data.queries[nextQuery - 1].number);
147
+ anchorEl.setAttribute('hidden', true);
148
+ document.body.appendChild(anchorEl);
149
+ // add smooth scrolling animation with jquery
150
+ $(anchorEl).on('click', this.animateAnchorElements);
151
+ anchorEl.click();
152
+ document.body.removeChild(anchorEl);
153
+ this.setState({ queryIndex: nextQuery });
154
+ }
21
155
  /**
22
156
  * Event-handler for downloading fasta of all hits.
23
157
  */
24
- downloadFastaOfAll: function () {
158
+ downloadFastaOfAll() {
25
159
  var sequence_ids = [];
26
160
  this.props.data.queries.forEach(
27
161
  (query) => query.hits.forEach(
@@ -29,91 +163,61 @@ export default React.createClass({
29
163
  var database_ids = this.props.data.querydb.map((querydb) => querydb.id);
30
164
  downloadFASTA(sequence_ids, database_ids);
31
165
  return false;
32
- },
166
+ }
33
167
 
34
168
  /**
35
169
  * Handles downloading fasta of selected hits.
36
170
  */
37
- downloadFastaOfSelected: function () {
171
+ downloadFastaOfSelected() {
38
172
  var sequence_ids = $('.hit-links :checkbox:checked').map(function () {
39
173
  return this.value;
40
174
  }).get();
41
175
  var database_ids = _.map(this.props.data.querydb, _.iteratee('id'));
42
176
  downloadFASTA(sequence_ids, database_ids);
43
177
  return false;
44
- },
178
+ }
45
179
 
46
- downloadAlignmentOfAll: function() {
47
- // Get number of hits and array of all hsps.
48
- var num_hits = 0;
49
- var hsps_arr = [];
50
- this.props.data.queries.forEach(
51
- (query) => query.hits.forEach(
52
- (hit) => {
53
- num_hits++;
54
- hit.hsps.forEach((hsp) => {
55
- hsp.query_id = query.id;
56
- hsp.hit_id = hit.id;
57
- hsps_arr.push(hsp);
58
- });
59
- }
60
- )
61
- );
62
180
 
63
- var aln_exporter = new AlignmentExporter();
64
- var file_name = `alignment-${num_hits}_hits`;
65
- aln_exporter.export_alignments(hsps_arr, file_name);
66
- return false;
67
- },
68
181
 
69
- downloadAlignmentOfSelected: function () {
70
- var sequence_ids = $('.hit-links :checkbox:checked').map(function () {
71
- return this.value;
72
- }).get();
73
- var hsps_arr = [];
74
- var aln_exporter = new AlignmentExporter();
75
- console.log('check '+sequence_ids.toString());
76
- _.each(this.props.data.queries, _.bind(function (query) {
77
- _.each(query.hits, function (hit) {
78
- if (_.indexOf(sequence_ids, hit.id) != -1) {
79
- _.each(hit.hsps, function (hsp) {
80
- hsp.hit_id = hit.id;
81
- hsp.query_id = query.id;
82
- hsps_arr.push(hsp);
83
- });
84
- }
85
- });
86
- }, this));
87
- aln_exporter.export_alignments(hsps_arr, 'alignment-'+sequence_ids.length+'_hits');
88
- return false;
89
- },
90
182
 
183
+ /**
184
+ * Handles copying the URL into the user's clipboard. Modified from: https://stackoverflow.com/a/49618964/18117380
185
+ * Hides the 'Copied!' tooltip after 3 seconds
186
+ */
91
187
 
92
- // JSX //
93
- render: function () {
94
- return (
95
- <div className="sidebar">
96
- { this.topPanelJSX() }
97
- { this.downloadsPanelJSX() }
98
- </div>
99
- );
100
- },
188
+ copyURL() {
189
+ var element = document.createElement('input');
190
+ var url = window.location.href;
191
+ document.body.appendChild(element);
192
+ element.value = url;
193
+ element.select();
194
+ document.execCommand('copy');
195
+ document.body.removeChild(element);
196
+
197
+ setTimeout(function () {
198
+ $('#copyURL')._tooltip('destroy');
199
+ }, 3000);
200
+ }
101
201
 
102
- topPanelJSX: function () {
202
+ shareCloudInit() {
203
+ this.refs.cloudShareModal.show();
204
+ }
205
+
206
+ topPanelJSX() {
103
207
  var path = location.pathname.split('/');
104
208
  // Get job id.
105
209
  var job_id = path.pop();
106
210
  // Deriving rootURL this way is required for subURI deployments
107
211
  // - we cannot just send to '/'.
108
212
  var rootURL = path.join('/');
109
-
110
213
  return (
111
214
  <div className="sidebar-top-panel">
112
215
  <div className="section-header-sidebar">
113
216
  <h4>
114
- { this.summaryString() }
217
+ {this.summaryString()}
115
218
  </h4>
116
219
  </div>
220
+ {this.props.data.queries.length > 12 && this.queryIndexButtons()}
117
221
  <div>
118
222
  <a href={`${rootURL}/?job_id=${job_id}`}>
119
223
  <i className="fa fa-pencil"></i> Edit search
@@ -124,12 +228,12 @@ export default React.createClass({
124
228
  <i className="fa fa-file-o"></i> New search
125
229
  </a>
126
230
  </div>
127
- { this.props.shouldShowIndex && this.indexJSX() }
231
+ {this.props.shouldShowIndex && this.indexJSX()}
128
232
  </div>
129
233
  );
130
- },
234
+ }
131
235
 
132
- summaryString: function () {
236
+ summaryString() {
133
237
  var program = this.props.data.program;
134
238
  var numqueries = this.props.data.queries.length;
135
239
  var numquerydb = this.props.data.querydb.length;
@@ -139,12 +243,31 @@ export default React.createClass({
139
243
  numqueries + ' ' + (numqueries > 1 ? 'queries' : 'query') + ', ' +
140
244
  numquerydb + ' ' + (numquerydb > 1 ? 'databases' : 'database')
141
245
  );
142
- },
246
+ }
247
+
248
+ queryIndexButtons() {
249
+ const buttonStyle = {
250
+ outline: 'none', border: 'none', background: 'none'
251
+ };
252
+ const buttonClasses = 'btn-link nowrap-ellipsis hover-bold';
253
+
254
+ const handlePreviousBtnClick = () => this.handleQueryIndexChange(this.state.queryIndex - 1);
255
+ const handleNextBtnClick = () => this.handleQueryIndexChange(this.state.queryIndex + 1);
143
256
 
144
- indexJSX: function () {
257
+ // eslint-disable-next-line no-unused-vars
258
+ const NavButton = ({ text, onClick }) => (
259
+ <button className={buttonClasses} onClick={onClick} style={buttonStyle}>{text}</button>
260
+ );
261
+ return <div style={{ display: 'flex', width: '100%', margin: '7px 0' }}>
262
+ {this.state.queryIndex > 1 && <NavButton text="Previous Query" onClick={handlePreviousBtnClick} />}
263
+ {this.state.queryIndex > 1 && this.state.queryIndex < this.props.data.queries.length && <span className="line">|</span>}
264
+ {this.state.queryIndex < this.props.data.queries.length && <NavButton onClick={handleNextBtnClick} text="Next Query" />}
265
+ </div>;
266
+ }
267
+ indexJSX() {
145
268
  return <ul className="nav hover-reset active-bold"> {
146
- _.map(this.props.data.queries, (query)=> {
147
- return <li key={'Side_bar_'+query.id}>
269
+ _.map(this.props.data.queries, (query) => {
270
+ return <li key={'Side_bar_' + query.id}>
148
271
  <a className="btn-link nowrap-ellipsis hover-bold"
149
272
  title={'Query= ' + query.id + ' ' + query.title}
150
273
  href={'#Query_' + query.number}>
@@ -154,9 +277,9 @@ export default React.createClass({
154
277
  })
155
278
  }
156
279
  </ul>;
157
- },
280
+ }
158
281
 
159
- downloadsPanelJSX: function () {
282
+ downloadsPanelJSX() {
160
283
  return (
161
284
  <div className="downloads">
162
285
  <div className="section-header-sidebar">
@@ -182,14 +305,12 @@ export default React.createClass({
182
305
  </li>
183
306
  }
184
307
  <li>
185
- <a href="#" className={`btn-link download-alignment-of-all ${!this.props.atLeastOneHit && 'disabled'}`}
186
- onClick={this.downloadAlignmentOfAll}>
308
+ <a href="#" className={`btn-link download-alignment-of-all ${!this.props.atLeastOneHit && 'disabled'}`}>
187
309
  Alignment of all hits
188
310
  </a>
189
311
  </li>
190
312
  <li>
191
- <a href="#" className="btn-link download-alignment-of-selected disabled"
192
- onClick={this.downloadAlignmentOfSelected}>
313
+ <a href="#" className="btn-link download-alignment-of-selected disabled">
193
314
  Alignment of <span className="text-bold"></span> selected hit(s)
194
315
  </a>
195
316
  </li>
@@ -229,6 +350,64 @@ export default React.createClass({
229
350
  </ul>
230
351
  </div>
231
352
  );
232
- },
233
- });
353
+ }
354
+
355
+ sharingPanelJSX() {
356
+ return (
357
+ <div className="sharing-panel">
358
+ <div className="section-header-sidebar">
359
+ <h4>
360
+ Share results
361
+ </h4>
362
+ </div>
363
+ <ul className="nav">
364
+ {!this.props.cloudSharingEnabled &&
365
+ <li>
366
+ <a id="copyURL" className="btn-link copy-URL cursor-pointer" data-toggle="tooltip"
367
+ onClick={this.copyURL}>
368
+ <i className="fa fa-copy"></i> Copy URL to clipboard
369
+ </a>
370
+ </li>
371
+ }
372
+ {!this.props.cloudSharingEnabled &&
373
+ <li>
374
+ <a id="sendEmail" className="btn-link email-URL cursor-pointer" data-toggle="tooltip"
375
+ title="Send by email" href={asMailtoHref(this.props.data.querydb, this.props.data.program, this.props.data.queries.length, window.location.href)}
376
+ target="_blank" rel="noopener noreferrer">
377
+ <i className="fa fa-envelope"></i> Send by email
378
+ </a>
379
+ </li>
380
+ }
381
+ {this.props.cloudSharingEnabled &&
382
+ <li>
383
+ <button className="btn-link cloud-Post cursor-pointer" data-toggle="tooltip"
384
+ title="Upload results to SequenceServer Cloud where it will become accessable
385
+ to everyone who has a link." onClick={this.shareCloudInit}>
386
+ <i className="fa fa-cloud"></i> Share to cloud
387
+ </button>
388
+ </li>
389
+ }
390
+ </ul>
391
+ {
392
+ <CloudShareModal
393
+ ref="cloudShareModal"
394
+ querydb={this.props.data.querydb}
395
+ program={this.props.data.program}
396
+ queryLength={this.props.data.queries.length}
397
+ />
398
+ }
399
+ </div>
400
+ );
401
+ }
402
+
403
+ render() {
404
+ return (
405
+ <div className="sidebar">
406
+ {this.topPanelJSX()}
407
+ {this.downloadsPanelJSX()}
408
+ {this.sharingPanelJSX()}
409
+ </div>
410
+ );
411
+ }
412
+ }
234
413
 
@@ -0,0 +1,60 @@
1
+ /* eslint-disable no-unused-vars */
2
+ /* eslint-disable no-undef */
3
+ import { render, screen, fireEvent, waitFor, findByText, getByText } from '@testing-library/react';
4
+ import { Databases } from '../databases';
5
+ import data from './mock_data/databases.json';
6
+
7
+
8
+
9
+ describe('DATABASES COMPONENT', () => {
10
+ test('should render unique database categories', () => {
11
+ render(<Databases databases={data.database} />);
12
+ expect(screen.getByRole('heading', { name: /nucleotide databases/i })).toBeInTheDocument();
13
+ expect(screen.getByRole('heading', { name: /protein databases/i })).toBeInTheDocument();
14
+ });
15
+
16
+ test('should list databases under respective categories', () => {
17
+ const { container } = render(<Databases databases={data.database} />);
18
+ expect(container.querySelector('.databases.nucleotide').children).toHaveLength(3);
19
+ expect(container.querySelector('.databases.protein').children).toHaveLength(4);
20
+
21
+ });
22
+
23
+ test('clicking select all on a database should select all its children', () => {
24
+ const { container } = render(<Databases databases={data.database} onDatabaseTypeChanged={() => { }} />);
25
+
26
+ // select all nucleotide databases
27
+ const nucleotideSelectAllBtn = screen.getByRole('heading', { name: /nucleotide databases/i }).parentElement.querySelector('button');
28
+ fireEvent.click(nucleotideSelectAllBtn);
29
+ const nucleotideCheckboxes = container.querySelector('.databases.nucleotide').querySelectorAll('input[type=checkbox]');
30
+
31
+ // all nucleotide databases should be checked
32
+ nucleotideCheckboxes.forEach((checkbox) => {
33
+ expect(checkbox).toBeChecked();
34
+ });
35
+
36
+ // select all protein databases
37
+ const proteinSelectAllBtn = screen.getByRole('heading', { name: /protein databases/i }).parentElement.querySelector('button');
38
+ fireEvent.click(proteinSelectAllBtn);
39
+ const proteinCheckboxes = container.querySelector('.databases.nucleotide').querySelectorAll('input[type=checkbox]');
40
+ // all protein databases should be checked
41
+ proteinCheckboxes.forEach((checkbox) => {
42
+ expect(checkbox).toBeChecked();
43
+ });
44
+ });
45
+
46
+ test('checking any item of a database type should disable other database type', () => {
47
+ const mockFunction = jest.fn(() => { });
48
+ const { container } = render(<Databases databases={data.database} onDatabaseTypeChanged={mockFunction} />);
49
+
50
+ //select a proteinn database
51
+ fireEvent.click(screen.getByRole('checkbox', { name: /2020-11 Swiss-Prot insecta/i }));
52
+ // function has to be called when database has been selected
53
+ expect(mockFunction).toHaveBeenCalled();
54
+ // all nucleotide databses should be disabled
55
+ const nucleotideCheckboxes = container.querySelector('.databases.nucleotide').querySelectorAll('input[type=checkbox]');
56
+ nucleotideCheckboxes.forEach(checkbox => {
57
+ expect(checkbox).toBeDisabled();
58
+ });
59
+ });
60
+ });
@@ -0,0 +1,91 @@
1
+ {
2
+ "query": null,
3
+ "database": [
4
+ {
5
+ "name": "/spec/database/v5/funky_ids/funky_ids.fa",
6
+ "title": "funky ids (v5)",
7
+ "type": "nucleotide",
8
+ "nsequences": "8",
9
+ "ncharacters": "312",
10
+ "updated_on": "Aug 13, 2020 11:23 AM",
11
+ "format": "5",
12
+ "categories": ["funky_ids"],
13
+ "id": "b71a337accf1e099aace6c859fba5e99"
14
+ },
15
+
16
+ {
17
+ "name": "/spec/database/v5/sample/genome/Solenopsis_invicta/Solenopsis_invicta_gnG_subset.fasta",
18
+ "title": "Solenopsis invicta gnG subset",
19
+ "type": "nucleotide",
20
+ "nsequences": "8",
21
+ "ncharacters": "39185542",
22
+ "updated_on": "Jun 17, 2020 4:51 PM",
23
+ "format": "5",
24
+ "categories": ["sample", "genome", "Solenopsis_invicta"],
25
+ "id": "c0bb1dadfeda93ea1f53732109df0959"
26
+ },
27
+
28
+ {
29
+ "name": "/spec/database/v5/sample/proteins/Solenopsis_invicta/Sinvicta2-2-3.prot.subset.fasta",
30
+ "title": "Sinvicta 2-2-3 prot subset",
31
+ "type": "protein",
32
+ "nsequences": "1189",
33
+ "ncharacters": "280047",
34
+ "updated_on": "Jun 17, 2020 4:52 PM",
35
+ "format": "5",
36
+ "categories": ["sample", "proteins", "Solenopsis_invicta"],
37
+ "id": "900b87a3e7a4d1f3034b97483231f520"
38
+ },
39
+ {
40
+ "name": "/spec/database/v5/sample/proteins/uniprot/2020-11-Swiss-Prot_insecta.fasta",
41
+ "title": " 2020-11 Swiss-Prot insecta",
42
+ "type": "protein",
43
+ "nsequences": "9383",
44
+ "ncharacters": "4062633",
45
+ "updated_on": "Nov 25, 2020 12:45 PM",
46
+ "format": "5",
47
+ "categories": ["sample", "proteins", "uniprot"],
48
+ "id": "fe5c9f0ac98f8d06e8099327c3d14523"
49
+ },
50
+ {
51
+ "name": "/spec/database/v5/sample/transcripts/Solenopsis_invicta/Sinvicta2-2-3.cdna.subset.fasta",
52
+ "title": "Sinvicta 2-2-3 cdna subset",
53
+ "type": "nucleotide",
54
+ "nsequences": "473",
55
+ "ncharacters": "287752",
56
+ "updated_on": "Jun 17, 2020 4:52 PM",
57
+ "format": "5",
58
+ "categories": ["sample", "transcripts", "Solenopsis_invicta"],
59
+ "id": "045f6f2637f2776f95c93ed2f62ebc51"
60
+ },
61
+ {
62
+ "name": "/spec/database/v5/using_blastdb_aliastool/2020-11-Swiss-Prot_insecta_subset_taxid_102803",
63
+ "title": "2020-11-Swiss-Prot insecta (subset taxid 102803)",
64
+ "type": "protein",
65
+ "nsequences": "1",
66
+ "ncharacters": "253",
67
+ "updated_on": "Nov 25, 2020 12:45 PM",
68
+ "format": "5",
69
+ "categories": ["using_blastdb_aliastool"],
70
+ "id": "7ad2f50353978114c971d50edf92584e"
71
+ },
72
+ {
73
+ "name": "/spec/database/v5/without_parse_seqids/without_parse_seqids.fa",
74
+ "title": "without_parse_seqids.fa",
75
+ "type": "protein",
76
+ "nsequences": "2",
77
+ "ncharacters": "385",
78
+ "updated_on": "Jun 2, 2021 10:37 AM",
79
+ "format": "5",
80
+ "categories": ["without_parse_seqids"],
81
+ "id": "0bb59948ffac3563fc32b6d0272789bb"
82
+ }
83
+ ],
84
+ "options": {
85
+ "blastn": { "default": ["-task blastn", "-evalue 1e-5"] },
86
+ "blastp": { "default": ["-evalue 1e-5"] },
87
+ "blastx": { "default": ["-evalue 1e-5"] },
88
+ "tblastx": { "default": ["-evalue 1e-5"] },
89
+ "tblastn": { "default": ["-evalue 1e-5"] }
90
+ }
91
+ }