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.
- checksums.yaml +4 -4
- data/bin/sequenceserver +7 -2
- data/lib/sequenceserver/api_errors.rb +24 -2
- data/lib/sequenceserver/blast/formatter.rb +13 -4
- data/lib/sequenceserver/blast/job.rb +41 -7
- data/lib/sequenceserver/blast/report.rb +69 -33
- data/lib/sequenceserver/config.rb +52 -27
- data/lib/sequenceserver/job.rb +13 -3
- data/lib/sequenceserver/job_remover.rb +25 -29
- data/lib/sequenceserver/makeblastdb.rb +80 -72
- data/lib/sequenceserver/pool.rb +1 -1
- data/lib/sequenceserver/refinements.rb +15 -0
- data/lib/sequenceserver/report.rb +1 -5
- data/lib/sequenceserver/routes.rb +92 -9
- data/lib/sequenceserver/sequence.rb +8 -7
- data/lib/sequenceserver/sys.rb +3 -3
- data/lib/sequenceserver/version.rb +1 -1
- data/lib/sequenceserver/zip_file_generator.rb +56 -0
- data/lib/sequenceserver.rb +9 -2
- data/public/config.js +149 -143
- data/public/css/sequenceserver.css +44 -3
- data/public/css/sequenceserver.min.css +3 -3
- data/public/js/alignment_exporter.js +16 -8
- data/public/js/circos.js +370 -234
- data/public/js/cloud_share_modal.js +216 -0
- data/public/js/databases.js +144 -0
- data/public/js/databases_tree.js +42 -113
- data/public/js/dnd.js +164 -0
- data/public/js/error_modal.js +4 -11
- data/public/js/exporter.js +7 -3
- data/public/js/form.js +260 -0
- data/public/js/grapher.js +113 -106
- data/public/js/hit.js +80 -67
- data/public/js/hits_overview.js +2 -2
- data/public/js/hsp.js +343 -288
- data/public/js/jquery_world.js +4 -4
- data/public/js/mailto.js +36 -0
- data/public/js/options.js +84 -0
- data/public/js/query.js +319 -59
- data/public/js/report.js +369 -269
- data/public/js/report_root.js +75 -0
- data/public/js/search.js +28 -1011
- data/public/js/search_button.js +195 -0
- data/public/js/sequence.js +2409 -2411
- data/public/js/sequence_modal.js +152 -159
- data/public/js/share_url.js +23 -0
- data/public/js/sidebar.js +262 -83
- data/public/js/tests/advanced_parameters.spec.js +36 -0
- data/public/js/tests/database.spec.js +60 -0
- data/public/js/tests/mock_data/databases.json +91 -0
- data/public/js/tests/mock_data/long_response.json +269 -0
- data/public/js/tests/mock_data/sequences.js +32 -0
- data/public/js/tests/mock_data/short_response.json +2240 -0
- data/public/js/tests/report.spec.js +155 -0
- data/public/js/tests/search_button.spec.js +14 -0
- data/public/js/tests/search_query.spec.js +58 -0
- data/public/js/visualisation_helpers.js +1 -1
- data/public/packages/circosJS@1.7.0.js +1640 -0
- data/public/packages/jquery-ui@1.11.4.js +16624 -0
- data/public/sequenceserver-report.min.js +2425 -19
- data/public/sequenceserver-search.min.js +2337 -15
- data/public/vendor/github/jspm/nodelibs-assert@0.1.0/index.js +2 -0
- data/public/vendor/github/jspm/{nodelibs-buffer@0.1.0 → nodelibs-assert@0.1.0}/package.json +1 -1
- data/public/vendor/github/jspm/nodelibs-assert@0.1.0.js +1 -0
- data/public/vendor/github/jspm/nodelibs-buffer@0.1.1/package.json +6 -0
- data/public/vendor/github/jspm/nodelibs-buffer@0.1.1.js +1 -0
- data/public/vendor/github/jspm/{nodelibs-process@0.1.1 → nodelibs-process@0.1.2}/package.json +2 -2
- data/public/vendor/github/jspm/nodelibs-process@0.1.2.js +1 -0
- data/public/vendor/github/jspm/nodelibs-vm@0.1.0/index.js +2 -0
- data/public/vendor/github/jspm/nodelibs-vm@0.1.0/package.json +6 -0
- data/public/vendor/github/jspm/nodelibs-vm@0.1.0.js +1 -0
- data/public/vendor/npm/assert@1.5.0/CHANGELOG.md +8 -0
- data/public/vendor/npm/assert@1.5.0/README.md +105 -0
- data/public/vendor/npm/assert@1.5.0/assert.js +327 -0
- data/public/vendor/npm/assert@1.5.0/package.json +32 -0
- data/public/vendor/npm/assert@1.5.0/test.js +288 -0
- data/public/vendor/npm/assert@1.5.0.js +1 -0
- data/public/vendor/npm/{base64-js@0.0.8/LICENSE.MIT → base64-js@1.5.1/LICENSE} +1 -1
- data/public/vendor/npm/{base64-js@0.0.8 → base64-js@1.5.1}/README.md +10 -7
- data/public/vendor/npm/base64-js@1.5.1/base64js.min.js +3 -0
- data/public/vendor/npm/base64-js@1.5.1/index.d.ts +3 -0
- data/public/vendor/npm/base64-js@1.5.1/index.js +151 -0
- data/public/vendor/npm/base64-js@1.5.1/package.json +47 -0
- data/public/vendor/npm/base64-js@1.5.1.js +1 -0
- data/public/vendor/npm/buffer@5.7.1/AUTHORS.md +70 -0
- data/public/vendor/npm/{buffer@3.4.3 → buffer@5.7.1}/README.md +111 -41
- data/public/vendor/npm/buffer@5.7.1/index.d.ts +186 -0
- data/public/vendor/npm/buffer@5.7.1/index.js +1817 -0
- data/public/vendor/npm/buffer@5.7.1/package.json +96 -0
- data/public/vendor/npm/buffer@5.7.1.js +1 -0
- data/public/vendor/npm/core-util-is@1.0.3/LICENSE +19 -0
- data/public/vendor/npm/core-util-is@1.0.3/lib/util.js +64 -0
- data/public/vendor/npm/{core-util-is@1.0.1 → core-util-is@1.0.3}/package.json +13 -1
- data/public/vendor/npm/core-util-is@1.0.3.js +1 -0
- data/public/vendor/npm/events@1.0.2/tests/add-listeners.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/check-listener-leaks.js +3 -3
- data/public/vendor/npm/events@1.0.2/tests/common.js +1 -1
- data/public/vendor/npm/events@1.0.2/tests/index.js +13 -13
- data/public/vendor/npm/events@1.0.2/tests/listeners-side-effects.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/listeners.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/max-listeners.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/modify-in-emit.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/num-args.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/once.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/remove-all-listeners.js +3 -3
- data/public/vendor/npm/events@1.0.2/tests/remove-listeners.js +3 -3
- data/public/vendor/npm/events@1.0.2/tests/set-max-listeners-side-effects.js +2 -2
- data/public/vendor/npm/events@1.0.2/tests/subclass.js +3 -3
- data/public/vendor/npm/events@1.0.2.js +1 -1
- data/public/vendor/npm/ieee754@1.2.1/LICENSE +11 -0
- data/public/vendor/npm/{ieee754@1.1.6 → ieee754@1.2.1}/README.md +12 -8
- data/public/vendor/npm/ieee754@1.2.1/index.d.ts +10 -0
- data/public/vendor/npm/{ieee754@1.1.6 → ieee754@1.2.1}/index.js +6 -6
- data/public/vendor/npm/ieee754@1.2.1/package.json +52 -0
- data/public/vendor/npm/ieee754@1.2.1.js +1 -0
- data/public/vendor/npm/{is-array@1.0.1 → indexof@0.0.1}/Makefile +3 -3
- data/public/vendor/npm/indexof@0.0.1/Readme.md +15 -0
- data/public/vendor/npm/indexof@0.0.1/component.json +10 -0
- data/public/vendor/npm/indexof@0.0.1/index.js +11 -0
- data/public/vendor/npm/indexof@0.0.1/package.json +12 -0
- data/public/vendor/npm/indexof@0.0.1.js +1 -0
- data/public/vendor/npm/inherits@2.0.1/inherits.js +1 -1
- data/public/vendor/npm/inherits@2.0.1.js +1 -1
- data/public/vendor/npm/isarray@0.0.1.js +1 -1
- data/public/vendor/npm/js-tokens@4.0.0/index.js +23 -0
- data/public/vendor/npm/js-tokens@4.0.0/package.json +30 -0
- data/public/vendor/npm/js-tokens@4.0.0.js +1 -0
- data/public/vendor/npm/loose-envify@1.4.0/LICENSE +21 -0
- data/public/vendor/npm/loose-envify@1.4.0/README.md +45 -0
- data/public/vendor/npm/loose-envify@1.4.0/cli.js +12 -0
- data/public/vendor/npm/loose-envify@1.4.0/custom.js +3 -0
- data/public/vendor/npm/loose-envify@1.4.0/index.js +5 -0
- data/public/vendor/npm/loose-envify@1.4.0/loose-envify.js +33 -0
- data/public/vendor/npm/loose-envify@1.4.0/package.json +36 -0
- data/public/vendor/npm/loose-envify@1.4.0/replace.js +52 -0
- data/public/vendor/npm/loose-envify@1.4.0.js +1 -0
- data/public/vendor/npm/object-assign@4.1.1/index.js +90 -0
- data/public/vendor/npm/object-assign@4.1.1/package.json +42 -0
- data/public/vendor/npm/object-assign@4.1.1.js +1 -0
- data/public/vendor/npm/path-browserify@0.0.0/index.js +1 -1
- data/public/vendor/npm/path-browserify@0.0.0.js +1 -1
- data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/README.md +4 -1
- data/public/vendor/npm/process@0.11.10/browser.js +184 -0
- data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/package.json +10 -1
- data/public/vendor/npm/process@0.11.10/test.js +185 -0
- data/public/vendor/npm/process@0.11.10.js +1 -0
- data/public/vendor/npm/react-dom@18.0.0/LICENSE +21 -0
- data/public/vendor/npm/react-dom@18.0.0/README.md +50 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.browser.development.js +4771 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.browser.production.min.js +85 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.node.development.js +4813 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server-legacy.node.production.min.js +1705 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.browser.development.js +4746 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.browser.production.min.js +90 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.node.development.js +4714 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-server.node.production.min.js +1746 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-test-utils.development.js +1017 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom-test-utils.production.min.js +617 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.development.js +20092 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.production.min.js +322 -0
- data/public/vendor/npm/react-dom@18.0.0/cjs/react-dom.profiling.min.js +364 -0
- data/public/vendor/npm/react-dom@18.0.0/client.js +27 -0
- data/public/vendor/npm/react-dom@18.0.0/index.js +23 -0
- data/public/vendor/npm/react-dom@18.0.0/package.json +62 -0
- data/public/vendor/npm/react-dom@18.0.0/profiling.js +23 -0
- data/public/vendor/npm/react-dom@18.0.0/server.browser.js +19 -0
- data/public/vendor/npm/react-dom@18.0.0/server.js +3 -0
- data/public/vendor/npm/react-dom@18.0.0/server.node.js +19 -0
- data/public/vendor/npm/react-dom@18.0.0/test-utils.js +9 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server-legacy.browser.development.js +4770 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server-legacy.browser.production.min.js +72 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server.browser.development.js +4745 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-server.browser.production.min.js +74 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-test-utils.development.js +1013 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom-test-utils.production.min.js +625 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.development.js +20106 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.production.min.js +269 -0
- data/public/vendor/npm/react-dom@18.0.0/umd/react-dom.profiling.min.js +285 -0
- data/public/vendor/npm/react-dom@18.0.0.js +1 -0
- data/public/vendor/npm/react@18.0.0/LICENSE +21 -0
- data/public/vendor/npm/react@18.0.0/README.md +13 -0
- data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.development.js +837 -0
- data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.production.min.js +10 -0
- data/public/vendor/npm/react@18.0.0/cjs/react-jsx-dev-runtime.profiling.min.js +10 -0
- data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.development.js +849 -0
- data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.production.min.js +38 -0
- data/public/vendor/npm/react@18.0.0/cjs/react-jsx-runtime.profiling.min.js +38 -0
- data/public/vendor/npm/react@18.0.0/cjs/react.development.js +1746 -0
- data/public/vendor/npm/react@18.0.0/cjs/react.production.min.js +26 -0
- data/public/vendor/npm/react@18.0.0/cjs/react.shared-subset.development.js +10 -0
- data/public/vendor/npm/react@18.0.0/cjs/react.shared-subset.production.min.js +12 -0
- data/public/vendor/npm/react@18.0.0/index.js +9 -0
- data/public/vendor/npm/react@18.0.0/jsx-dev-runtime.js +9 -0
- data/public/vendor/npm/react@18.0.0/jsx-runtime.js +9 -0
- data/public/vendor/npm/react@18.0.0/package.json +47 -0
- data/public/vendor/npm/react@18.0.0/react.shared-subset.js +9 -0
- data/public/vendor/npm/react@18.0.0/umd/react.development.js +2186 -0
- data/public/vendor/npm/react@18.0.0/umd/react.production.min.js +33 -0
- data/public/vendor/npm/react@18.0.0/umd/react.profiling.min.js +33 -0
- data/public/vendor/npm/react@18.0.0.js +1 -0
- data/public/vendor/npm/readable-stream@1.1.14/LICENSE +18 -0
- data/public/vendor/npm/readable-stream@1.1.14/duplex.js +2 -0
- data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_duplex.js +5 -5
- data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_passthrough.js +3 -3
- data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_readable.js +10 -10
- data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_transform.js +4 -4
- data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/lib/_stream_writable.js +6 -6
- data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/package.json +1 -1
- data/public/vendor/npm/readable-stream@1.1.14/passthrough.js +2 -0
- data/public/vendor/npm/readable-stream@1.1.14/readable.js +13 -0
- data/public/vendor/npm/readable-stream@1.1.14/transform.js +2 -0
- data/public/vendor/npm/readable-stream@1.1.14/writable.js +2 -0
- data/public/vendor/npm/readable-stream@1.1.14.js +1 -0
- data/public/vendor/npm/scheduler@0.21.0/LICENSE +21 -0
- data/public/vendor/npm/scheduler@0.21.0/README.md +9 -0
- data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_mock.development.js +530 -0
- data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_mock.production.min.js +20 -0
- data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_post_task.development.js +153 -0
- data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler-unstable_post_task.production.min.js +14 -0
- data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler.development.js +444 -0
- data/public/vendor/npm/scheduler@0.21.0/cjs/scheduler.production.min.js +19 -0
- data/public/vendor/npm/scheduler@0.21.0/index.js +9 -0
- data/public/vendor/npm/scheduler@0.21.0/package.json +36 -0
- data/public/vendor/npm/scheduler@0.21.0/umd/scheduler-unstable_mock.development.js +701 -0
- data/public/vendor/npm/scheduler@0.21.0/umd/scheduler-unstable_mock.production.min.js +21 -0
- data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.development.js +154 -0
- data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.production.min.js +148 -0
- data/public/vendor/npm/scheduler@0.21.0/umd/scheduler.profiling.min.js +148 -0
- data/public/vendor/npm/scheduler@0.21.0/unstable_mock.js +9 -0
- data/public/vendor/npm/scheduler@0.21.0/unstable_post_task.js +9 -0
- data/public/vendor/npm/scheduler@0.21.0.js +1 -0
- data/public/vendor/npm/stream-browserify@1.0.0/index.js +7 -7
- data/public/vendor/npm/stream-browserify@1.0.0/test/buf.js +5 -5
- data/public/vendor/npm/stream-browserify@1.0.0.js +1 -1
- data/public/vendor/npm/string_decoder@0.10.31/index.js +2 -2
- data/public/vendor/npm/string_decoder@0.10.31.js +1 -1
- data/public/vendor/npm/util@0.10.3/support/isBuffer.js +1 -1
- data/public/vendor/npm/util@0.10.3/test/browser/inspect.js +2 -2
- data/public/vendor/npm/util@0.10.3/test/browser/is.js +3 -3
- data/public/vendor/npm/util@0.10.3/test/node/debug.js +4 -4
- data/public/vendor/npm/util@0.10.3/test/node/format.js +2 -2
- data/public/vendor/npm/util@0.10.3/test/node/inspect.js +3 -3
- data/public/vendor/npm/util@0.10.3/test/node/log.js +3 -3
- data/public/vendor/npm/util@0.10.3/test/node/util.js +3 -3
- data/public/vendor/npm/util@0.10.3/util.js +3 -3
- data/public/vendor/npm/util@0.10.3.js +1 -1
- data/public/vendor/npm/vm-browserify@0.0.4/LICENSE +18 -0
- data/public/vendor/npm/vm-browserify@0.0.4/example/run/bundle.js +376 -0
- data/public/vendor/npm/vm-browserify@0.0.4/example/run/entry.js +6 -0
- data/public/vendor/npm/vm-browserify@0.0.4/example/run/index.html +9 -0
- data/public/vendor/npm/vm-browserify@0.0.4/example/run/server.js +6 -0
- data/public/vendor/npm/vm-browserify@0.0.4/index.js +139 -0
- data/public/vendor/npm/vm-browserify@0.0.4/package.json +46 -0
- data/public/vendor/npm/vm-browserify@0.0.4/readme.markdown +67 -0
- data/public/vendor/npm/vm-browserify@0.0.4/test/vm.js +34 -0
- data/public/vendor/npm/vm-browserify@0.0.4.js +1 -0
- data/public/vendor/npm/webshim@1.15.8/Gruntfile.js +4 -4
- data/public/vendor/npm/webshim@1.15.8/build/combobuild.js +2 -2
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/color-picker.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/10.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/11.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/17.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/5.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/6.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/combos/9.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/es6.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/excanvas.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/form-number-date-ui.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/moxie/js/moxie-html4.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/moxie/js/moxie-swf.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/dev/shims/sizzle.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/js-webshim/minified/shims/es6.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/color-picker.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/combos/10.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/combos/11.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/combos/17.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/combos/5.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/combos/6.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/combos/9.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/es6.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/excanvas.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/form-number-date-ui.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/moxie/js/moxie-html4.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/moxie/js/moxie-swf.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/src/shims/sizzle.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/tests/dist/jquery.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/tests/jquery/unit/core.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/tests/jquery/unit/event.js +1388 -711
- data/public/vendor/npm/webshim@1.15.8/tests/qunit/qunit.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/tests/test-ext/jquery-1-custom.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/tests/test-ext/jquery-2-custom.js +1 -1
- data/public/vendor/npm/webshim@1.15.8/tests/test-ext/punycode.js +1 -1
- data/public/vendor/system-polyfills.js +865 -1
- data/views/blastn_options.erb +291 -0
- data/views/blastp_options.erb +288 -0
- data/views/blastx_options.erb +318 -0
- data/views/error.erb +12 -0
- data/views/layout.erb +2 -30
- data/views/report.erb +0 -8
- data/views/search.erb +16 -9
- data/views/tblastn_options.erb +266 -0
- data/views/tblastx_options.erb +291 -0
- metadata +320 -439
- data/public/vendor/github/jspm/nodelibs-buffer@0.1.0.js +0 -1
- data/public/vendor/github/jspm/nodelibs-module@0.1.0/index.js +0 -1
- data/public/vendor/github/jspm/nodelibs-module@0.1.0.js +0 -1
- data/public/vendor/github/jspm/nodelibs-process@0.1.1.js +0 -1
- data/public/vendor/npm/amdefine@1.0.0/LICENSE +0 -58
- data/public/vendor/npm/amdefine@1.0.0/README.md +0 -171
- data/public/vendor/npm/amdefine@1.0.0/amdefine.js +0 -200
- data/public/vendor/npm/amdefine@1.0.0/intercept.js +0 -24
- data/public/vendor/npm/amdefine@1.0.0/package.json +0 -16
- data/public/vendor/npm/amdefine@1.0.0.js +0 -1
- data/public/vendor/npm/base62@0.1.1/LICENSE +0 -20
- data/public/vendor/npm/base62@0.1.1/Readme.md +0 -30
- data/public/vendor/npm/base62@0.1.1/base62.js +0 -28
- data/public/vendor/npm/base62@0.1.1/package.json +0 -21
- data/public/vendor/npm/base62@0.1.1/test/test.js +0 -13
- data/public/vendor/npm/base62@0.1.1.js +0 -1
- data/public/vendor/npm/base64-js@0.0.8/lib/b64.js +0 -125
- data/public/vendor/npm/base64-js@0.0.8/package.json +0 -34
- data/public/vendor/npm/base64-js@0.0.8/test/convert.js +0 -39
- data/public/vendor/npm/base64-js@0.0.8/test/url-safe.js +0 -15
- data/public/vendor/npm/base64-js@0.0.8.js +0 -1
- data/public/vendor/npm/buffer@3.4.3/index.js +0 -1533
- data/public/vendor/npm/buffer@3.4.3/package.json +0 -67
- data/public/vendor/npm/buffer@3.4.3/test/_polyfill.js +0 -152
- data/public/vendor/npm/buffer@3.4.3/test/base64.js +0 -33
- data/public/vendor/npm/buffer@3.4.3/test/basic.js +0 -58
- data/public/vendor/npm/buffer@3.4.3/test/compare.js +0 -53
- data/public/vendor/npm/buffer@3.4.3/test/constructor.js +0 -132
- data/public/vendor/npm/buffer@3.4.3/test/deprecated.js +0 -21
- data/public/vendor/npm/buffer@3.4.3/test/from-string.js +0 -105
- data/public/vendor/npm/buffer@3.4.3/test/methods.js +0 -109
- data/public/vendor/npm/buffer@3.4.3/test/node/README.txt +0 -1
- data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-ascii.js +0 -20
- data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-bytelength.js +0 -38
- data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-concat.js +0 -26
- data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-indexof.js +0 -78
- data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer-inspect.js +0 -31
- data/public/vendor/npm/buffer@3.4.3/test/node/test-buffer.js +0 -804
- data/public/vendor/npm/buffer@3.4.3/test/node-es6/README.txt +0 -1
- data/public/vendor/npm/buffer@3.4.3/test/node-es6/test-buffer-arraybuffer.js +0 -37
- data/public/vendor/npm/buffer@3.4.3/test/node-es6/test-buffer-iterator.js +0 -32
- data/public/vendor/npm/buffer@3.4.3/test/slice.js +0 -33
- data/public/vendor/npm/buffer@3.4.3/test/static.js +0 -32
- data/public/vendor/npm/buffer@3.4.3/test/to-string.js +0 -106
- data/public/vendor/npm/buffer@3.4.3/test/write.js +0 -90
- data/public/vendor/npm/buffer@3.4.3.js +0 -1
- data/public/vendor/npm/core-util-is@1.0.1/float.patch +0 -604
- data/public/vendor/npm/core-util-is@1.0.1/lib/util.js +0 -66
- data/public/vendor/npm/core-util-is@1.0.1/util.js +0 -66
- data/public/vendor/npm/core-util-is@1.0.1.js +0 -1
- data/public/vendor/npm/envify@3.4.0/README.md +0 -145
- data/public/vendor/npm/envify@3.4.0/bin/envify +0 -17
- data/public/vendor/npm/envify@3.4.0/custom.js +0 -33
- data/public/vendor/npm/envify@3.4.0/index.js +0 -4
- data/public/vendor/npm/envify@3.4.0/package.json +0 -35
- data/public/vendor/npm/envify@3.4.0/visitors.js +0 -33
- data/public/vendor/npm/envify@3.4.0.js +0 -1
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/bin/esparse.js +0 -90
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/bin/esvalidate.js +0 -145
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/esprima.js +0 -6191
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/package.json +0 -72
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/compat.js +0 -167
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/reflect.js +0 -421
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/run.js +0 -34
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/runner.js +0 -418
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb/test/test.js +0 -34730
- data/public/vendor/npm/esprima-fb@13001.1001.0-dev-harmony-fb.js +0 -1
- data/public/vendor/npm/ieee754@1.1.6/LICENSE +0 -56
- data/public/vendor/npm/ieee754@1.1.6/package.json +0 -34
- data/public/vendor/npm/ieee754@1.1.6/test/basic.js +0 -20
- data/public/vendor/npm/ieee754@1.1.6.js +0 -1
- data/public/vendor/npm/is-array@1.0.1/History.md +0 -11
- data/public/vendor/npm/is-array@1.0.1/Readme.md +0 -27
- data/public/vendor/npm/is-array@1.0.1/component.json +0 -13
- data/public/vendor/npm/is-array@1.0.1/index.js +0 -33
- data/public/vendor/npm/is-array@1.0.1/package.json +0 -10
- data/public/vendor/npm/is-array@1.0.1/test/test.html +0 -46
- data/public/vendor/npm/is-array@1.0.1.js +0 -1
- data/public/vendor/npm/jstransform@10.1.0/LICENSE +0 -201
- data/public/vendor/npm/jstransform@10.1.0/README.md +0 -98
- data/public/vendor/npm/jstransform@10.1.0/jestEnvironment.js +0 -3
- data/public/vendor/npm/jstransform@10.1.0/jestPreprocessor.js +0 -8
- data/public/vendor/npm/jstransform@10.1.0/package.json +0 -52
- data/public/vendor/npm/jstransform@10.1.0/polyfill/Object.es6.js +0 -54
- data/public/vendor/npm/jstransform@10.1.0/src/__tests__/jstransform-test.js +0 -246
- data/public/vendor/npm/jstransform@10.1.0/src/__tests__/jstransform-utils-test.js +0 -31
- data/public/vendor/npm/jstransform@10.1.0/src/docblock.js +0 -86
- data/public/vendor/npm/jstransform@10.1.0/src/jstransform.js +0 -180
- data/public/vendor/npm/jstransform@10.1.0/src/utils.js +0 -386
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-arrow-function-visitors-test.js +0 -57
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-call-spread-visitors-test.js +0 -46
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-class-visitors-test.js +0 -463
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-destructuring-visitors-test.js +0 -144
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-es7-object-integration-test.js +0 -40
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-object-concise-method-visitors-test.js +0 -47
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-object-short-notation-visitors-test.js +0 -33
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-rest-param-visitors-test.js +0 -119
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es6-template-visitors-test.js +0 -138
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es7-rest-property-helpers-test.js +0 -47
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/es7-spread-property-visitors-test.js +0 -90
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/gen/generate-type-syntax-test.js +0 -40
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/gen/type-syntax-test.rec.js +0 -846
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/reserved-words-test.js +0 -40
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-alias-syntax-test.js +0 -34
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-class-syntax-test.js +0 -105
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-function-syntax-test.js +0 -126
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-interface-syntax-test.js +0 -29
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-object-method-syntax-test.js +0 -65
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-pattern-syntax-test.js +0 -45
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-syntax-test.js +0 -46
- data/public/vendor/npm/jstransform@10.1.0/visitors/__tests__/type-variable-declaration-syntax-test.js +0 -102
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-arrow-function-visitors.js +0 -66
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-call-spread-visitors.js +0 -72
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-class-visitors.js +0 -316
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-destructuring-visitors.js +0 -135
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-object-concise-method-visitors.js +0 -28
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-object-short-notation-visitors.js +0 -12
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-rest-param-visitors.js +0 -45
- data/public/vendor/npm/jstransform@10.1.0/visitors/es6-template-visitors.js +0 -90
- data/public/vendor/npm/jstransform@10.1.0/visitors/es7-rest-property-helpers.js +0 -80
- data/public/vendor/npm/jstransform@10.1.0/visitors/es7-spread-property-visitors.js +0 -56
- data/public/vendor/npm/jstransform@10.1.0/visitors/reserved-words-helper.js +0 -74
- data/public/vendor/npm/jstransform@10.1.0/visitors/reserved-words-visitors.js +0 -30
- data/public/vendor/npm/jstransform@10.1.0/visitors/type-syntax.js +0 -118
- data/public/vendor/npm/jstransform@10.1.0.js +0 -1
- data/public/vendor/npm/process@0.10.1/browser.js +0 -58
- data/public/vendor/npm/process@0.10.1.js +0 -1
- data/public/vendor/npm/qs@2.4.1/test/stringify.js +0 -162
- data/public/vendor/npm/react@0.13.3/README.md +0 -20
- data/public/vendor/npm/react@0.13.3/addons.js +0 -2
- data/public/vendor/npm/react@0.13.3/dist/JSXTransformer.js +0 -11346
- data/public/vendor/npm/react@0.13.3/dist/react-with-addons.js +0 -10483
- data/public/vendor/npm/react@0.13.3/dist/react-with-addons.min.js +0 -7297
- data/public/vendor/npm/react@0.13.3/dist/react.js +0 -9468
- data/public/vendor/npm/react@0.13.3/dist/react.min.js +0 -6764
- data/public/vendor/npm/react@0.13.3/lib/AutoFocusMixin.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/BeforeInputEventPlugin.js +0 -197
- data/public/vendor/npm/react@0.13.3/lib/CSSCore.js +0 -39
- data/public/vendor/npm/react@0.13.3/lib/CSSProperty.js +0 -123
- data/public/vendor/npm/react@0.13.3/lib/CSSPropertyOperations.js +0 -103
- data/public/vendor/npm/react@0.13.3/lib/CallbackQueue.js +0 -43
- data/public/vendor/npm/react@0.13.3/lib/ChangeEventPlugin.js +0 -174
- data/public/vendor/npm/react@0.13.3/lib/ClientReactRootIndex.js +0 -23
- data/public/vendor/npm/react@0.13.3/lib/DOMChildrenOperations.js +0 -57
- data/public/vendor/npm/react@0.13.3/lib/DOMProperty.js +0 -96
- data/public/vendor/npm/react@0.13.3/lib/DOMPropertyOperations.js +0 -99
- data/public/vendor/npm/react@0.13.3/lib/Danger.js +0 -67
- data/public/vendor/npm/react@0.13.3/lib/DefaultEventPluginOrder.js +0 -5
- data/public/vendor/npm/react@0.13.3/lib/EnterLeaveEventPlugin.js +0 -69
- data/public/vendor/npm/react@0.13.3/lib/EventConstants.js +0 -55
- data/public/vendor/npm/react@0.13.3/lib/EventListener.js +0 -34
- data/public/vendor/npm/react@0.13.3/lib/EventPluginHub.js +0 -103
- data/public/vendor/npm/react@0.13.3/lib/EventPluginRegistry.js +0 -115
- data/public/vendor/npm/react@0.13.3/lib/EventPluginUtils.js +0 -121
- data/public/vendor/npm/react@0.13.3/lib/EventPropagators.js +0 -62
- data/public/vendor/npm/react@0.13.3/lib/ExecutionEnvironment.js +0 -42
- data/public/vendor/npm/react@0.13.3/lib/FallbackCompositionState.js +0 -45
- data/public/vendor/npm/react@0.13.3/lib/HTMLDOMPropertyConfig.js +0 -155
- data/public/vendor/npm/react@0.13.3/lib/LinkedStateMixin.js +0 -8
- data/public/vendor/npm/react@0.13.3/lib/LinkedValueUtils.js +0 -74
- data/public/vendor/npm/react@0.13.3/lib/LocalEventTrapMixin.js +0 -26
- data/public/vendor/npm/react@0.13.3/lib/MobileSafariClickEventPlugin.js +0 -17
- data/public/vendor/npm/react@0.13.3/lib/Object.assign.js +0 -47
- data/public/vendor/npm/react@0.13.3/lib/PooledClass.js +0 -75
- data/public/vendor/npm/react@0.13.3/lib/React.js +0 -93
- data/public/vendor/npm/react@0.13.3/lib/ReactBrowserComponentMixin.js +0 -7
- data/public/vendor/npm/react@0.13.3/lib/ReactBrowserEventEmitter.js +0 -136
- data/public/vendor/npm/react@0.13.3/lib/ReactCSSTransitionGroup.js +0 -34
- data/public/vendor/npm/react@0.13.3/lib/ReactCSSTransitionGroupChild.js +0 -92
- data/public/vendor/npm/react@0.13.3/lib/ReactChildReconciler.js +0 -57
- data/public/vendor/npm/react@0.13.3/lib/ReactChildren.js +0 -67
- data/public/vendor/npm/react@0.13.3/lib/ReactClass.js +0 -338
- data/public/vendor/npm/react@0.13.3/lib/ReactComponent.js +0 -50
- data/public/vendor/npm/react@0.13.3/lib/ReactComponentBrowserEnvironment.js +0 -14
- data/public/vendor/npm/react@0.13.3/lib/ReactComponentEnvironment.js +0 -19
- data/public/vendor/npm/react@0.13.3/lib/ReactComponentWithPureRenderMixin.js +0 -7
- data/public/vendor/npm/react@0.13.3/lib/ReactCompositeComponent.js +0 -374
- data/public/vendor/npm/react@0.13.3/lib/ReactContext.js +0 -27
- data/public/vendor/npm/react@0.13.3/lib/ReactCurrentOwner.js +0 -32
- data/public/vendor/npm/react@0.13.3/lib/ReactDOM.js +0 -146
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMButton.js +0 -35
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMComponent.js +0 -267
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMForm.js +0 -21
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMIDOperations.js +0 -63
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMIframe.js +0 -20
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMImg.js +0 -21
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMInput.js +0 -94
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMOption.js +0 -23
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMSelect.js +0 -112
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMSelection.js +0 -103
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMTextComponent.js +0 -38
- data/public/vendor/npm/react@0.13.3/lib/ReactDOMTextarea.js +0 -70
- data/public/vendor/npm/react@0.13.3/lib/ReactDefaultBatchingStrategy.js +0 -37
- data/public/vendor/npm/react@0.13.3/lib/ReactDefaultInjection.js +0 -93
- data/public/vendor/npm/react@0.13.3/lib/ReactDefaultPerf.js +0 -183
- data/public/vendor/npm/react@0.13.3/lib/ReactDefaultPerfAnalysis.js +0 -145
- data/public/vendor/npm/react@0.13.3/lib/ReactElement.js +0 -151
- data/public/vendor/npm/react@0.13.3/lib/ReactElementValidator.js +0 -218
- data/public/vendor/npm/react@0.13.3/lib/ReactEmptyComponent.js +0 -47
- data/public/vendor/npm/react@0.13.3/lib/ReactErrorUtils.js +0 -30
- data/public/vendor/npm/react@0.13.3/lib/ReactEventEmitterMixin.js +0 -12
- data/public/vendor/npm/react@0.13.3/lib/ReactEventListener.js +0 -93
- data/public/vendor/npm/react@0.13.3/lib/ReactFragment.js +0 -110
- data/public/vendor/npm/react@0.13.3/lib/ReactInjection.js +0 -27
- data/public/vendor/npm/react@0.13.3/lib/ReactInputSelection.js +0 -75
- data/public/vendor/npm/react@0.13.3/lib/ReactInstanceHandles.js +0 -113
- data/public/vendor/npm/react@0.13.3/lib/ReactInstanceMap.js +0 -47
- data/public/vendor/npm/react@0.13.3/lib/ReactLifeCycle.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/ReactLink.js +0 -16
- data/public/vendor/npm/react@0.13.3/lib/ReactMarkupChecksum.js +0 -17
- data/public/vendor/npm/react@0.13.3/lib/ReactMount.js +0 -347
- data/public/vendor/npm/react@0.13.3/lib/ReactMultiChild.js +0 -190
- data/public/vendor/npm/react@0.13.3/lib/ReactMultiChildUpdateTypes.js +0 -10
- data/public/vendor/npm/react@0.13.3/lib/ReactNativeComponent.js +0 -53
- data/public/vendor/npm/react@0.13.3/lib/ReactOwner.js +0 -21
- data/public/vendor/npm/react@0.13.3/lib/ReactPerf.js +0 -42
- data/public/vendor/npm/react@0.13.3/lib/ReactPropTransferer.js +0 -40
- data/public/vendor/npm/react@0.13.3/lib/ReactPropTypeLocationNames.js +0 -13
- data/public/vendor/npm/react@0.13.3/lib/ReactPropTypeLocations.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/ReactPropTypes.js +0 -225
- data/public/vendor/npm/react@0.13.3/lib/ReactPutListenerQueue.js +0 -31
- data/public/vendor/npm/react@0.13.3/lib/ReactReconcileTransaction.js +0 -66
- data/public/vendor/npm/react@0.13.3/lib/ReactReconciler.js +0 -44
- data/public/vendor/npm/react@0.13.3/lib/ReactRef.js +0 -36
- data/public/vendor/npm/react@0.13.3/lib/ReactRootIndex.js +0 -29
- data/public/vendor/npm/react@0.13.3/lib/ReactServerRendering.js +0 -44
- data/public/vendor/npm/react@0.13.3/lib/ReactServerRenderingTransaction.js +0 -47
- data/public/vendor/npm/react@0.13.3/lib/ReactStateSetters.js +0 -104
- data/public/vendor/npm/react@0.13.3/lib/ReactTestUtils.js +0 -249
- data/public/vendor/npm/react@0.13.3/lib/ReactTransitionChildMapping.js +0 -53
- data/public/vendor/npm/react@0.13.3/lib/ReactTransitionEvents.js +0 -68
- data/public/vendor/npm/react@0.13.3/lib/ReactTransitionGroup.js +0 -140
- data/public/vendor/npm/react@0.13.3/lib/ReactUpdateQueue.js +0 -107
- data/public/vendor/npm/react@0.13.3/lib/ReactUpdates.js +0 -139
- data/public/vendor/npm/react@0.13.3/lib/ReactWithAddons.js +0 -30
- data/public/vendor/npm/react@0.13.3/lib/SVGDOMPropertyConfig.js +0 -76
- data/public/vendor/npm/react@0.13.3/lib/SelectEventPlugin.js +0 -91
- data/public/vendor/npm/react@0.13.3/lib/ServerReactRootIndex.js +0 -29
- data/public/vendor/npm/react@0.13.3/lib/SimpleEventPlugin.js +0 -287
- data/public/vendor/npm/react@0.13.3/lib/SyntheticClipboardEvent.js +0 -11
- data/public/vendor/npm/react@0.13.3/lib/SyntheticCompositionEvent.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/SyntheticDragEvent.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/SyntheticEvent.js +0 -90
- data/public/vendor/npm/react@0.13.3/lib/SyntheticFocusEvent.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/SyntheticInputEvent.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/SyntheticKeyboardEvent.js +0 -43
- data/public/vendor/npm/react@0.13.3/lib/SyntheticMouseEvent.js +0 -38
- data/public/vendor/npm/react@0.13.3/lib/SyntheticTouchEvent.js +0 -19
- data/public/vendor/npm/react@0.13.3/lib/SyntheticUIEvent.js +0 -29
- data/public/vendor/npm/react@0.13.3/lib/SyntheticWheelEvent.js +0 -18
- data/public/vendor/npm/react@0.13.3/lib/Transaction.js +0 -90
- data/public/vendor/npm/react@0.13.3/lib/ViewportMetrics.js +0 -27
- data/public/vendor/npm/react@0.13.3/lib/accumulateInto.js +0 -26
- data/public/vendor/npm/react@0.13.3/lib/adler32.js +0 -32
- data/public/vendor/npm/react@0.13.3/lib/camelize.js +0 -30
- data/public/vendor/npm/react@0.13.3/lib/camelizeStyleName.js +0 -8
- data/public/vendor/npm/react@0.13.3/lib/cloneWithProps.js +0 -20
- data/public/vendor/npm/react@0.13.3/lib/containsNode.js +0 -20
- data/public/vendor/npm/react@0.13.3/lib/createArrayFromMixed.js +0 -15
- data/public/vendor/npm/react@0.13.3/lib/createFullPageComponent.js +0 -22
- data/public/vendor/npm/react@0.13.3/lib/createNodesFromMarkup.js +0 -39
- data/public/vendor/npm/react@0.13.3/lib/cx.js +0 -20
- data/public/vendor/npm/react@0.13.3/lib/dangerousStyleValue.js +0 -19
- data/public/vendor/npm/react@0.13.3/lib/emptyFunction.js +0 -32
- data/public/vendor/npm/react@0.13.3/lib/emptyObject.js +0 -9
- data/public/vendor/npm/react@0.13.3/lib/escapeTextContentForBrowser.js +0 -38
- data/public/vendor/npm/react@0.13.3/lib/findDOMNode.js +0 -31
- data/public/vendor/npm/react@0.13.3/lib/flattenChildren.js +0 -25
- data/public/vendor/npm/react@0.13.3/lib/focusNode.js +0 -27
- data/public/vendor/npm/react@0.13.3/lib/forEachAccumulated.js +0 -29
- data/public/vendor/npm/react@0.13.3/lib/getActiveElement.js +0 -27
- data/public/vendor/npm/react@0.13.3/lib/getEventCharCode.js +0 -50
- data/public/vendor/npm/react@0.13.3/lib/getEventKey.js +0 -72
- data/public/vendor/npm/react@0.13.3/lib/getEventModifierState.js +0 -45
- data/public/vendor/npm/react@0.13.3/lib/getEventTarget.js +0 -29
- data/public/vendor/npm/react@0.13.3/lib/getIteratorFn.js +0 -42
- data/public/vendor/npm/react@0.13.3/lib/getMarkupWrap.js +0 -73
- data/public/vendor/npm/react@0.13.3/lib/getNodeForCharacterOffset.js +0 -73
- data/public/vendor/npm/react@0.13.3/lib/getReactRootElementInContainer.js +0 -33
- data/public/vendor/npm/react@0.13.3/lib/getTextContentAccessor.js +0 -11
- data/public/vendor/npm/react@0.13.3/lib/getUnboundedScrollPosition.js +0 -38
- data/public/vendor/npm/react@0.13.3/lib/hyphenate.js +0 -31
- data/public/vendor/npm/react@0.13.3/lib/hyphenateStyleName.js +0 -8
- data/public/vendor/npm/react@0.13.3/lib/instantiateReactComponent.js +0 -55
- data/public/vendor/npm/react@0.13.3/lib/invariant.js +0 -26
- data/public/vendor/npm/react@0.13.3/lib/isEventSupported.js +0 -24
- data/public/vendor/npm/react@0.13.3/lib/isNode.js +0 -25
- data/public/vendor/npm/react@0.13.3/lib/isTextInputElement.js +0 -41
- data/public/vendor/npm/react@0.13.3/lib/isTextNode.js +0 -6
- data/public/vendor/npm/react@0.13.3/lib/joinClasses.js +0 -39
- data/public/vendor/npm/react@0.13.3/lib/keyMirror.js +0 -18
- data/public/vendor/npm/react@0.13.3/lib/keyOf.js +0 -34
- data/public/vendor/npm/react@0.13.3/lib/mapObject.js +0 -51
- data/public/vendor/npm/react@0.13.3/lib/memoizeStringOnly.js +0 -31
- data/public/vendor/npm/react@0.13.3/lib/onlyChild.js +0 -11
- data/public/vendor/npm/react@0.13.3/lib/performance.js +0 -8
- data/public/vendor/npm/react@0.13.3/lib/performanceNow.js +0 -7
- data/public/vendor/npm/react@0.13.3/lib/quoteAttributeValueForBrowser.js +0 -7
- data/public/vendor/npm/react@0.13.3/lib/setInnerHTML.js +0 -40
- data/public/vendor/npm/react@0.13.3/lib/setTextContent.js +0 -16
- data/public/vendor/npm/react@0.13.3/lib/shallowEqual.js +0 -42
- data/public/vendor/npm/react@0.13.3/lib/shouldUpdateReactComponent.js +0 -51
- data/public/vendor/npm/react@0.13.3/lib/toArray.js +0 -21
- data/public/vendor/npm/react@0.13.3/lib/traverseAllChildren.js +0 -104
- data/public/vendor/npm/react@0.13.3/lib/update.js +0 -78
- data/public/vendor/npm/react@0.13.3/lib/warning.js +0 -34
- data/public/vendor/npm/react@0.13.3/package.json +0 -34
- data/public/vendor/npm/react@0.13.3/react.js +0 -2
- data/public/vendor/npm/react@0.13.3.js +0 -1
- data/public/vendor/npm/readable-stream@1.1.13/duplex.js +0 -2
- data/public/vendor/npm/readable-stream@1.1.13/passthrough.js +0 -2
- data/public/vendor/npm/readable-stream@1.1.13/readable.js +0 -8
- data/public/vendor/npm/readable-stream@1.1.13/transform.js +0 -2
- data/public/vendor/npm/readable-stream@1.1.13/writable.js +0 -2
- data/public/vendor/npm/readable-stream@1.1.13.js +0 -1
- data/public/vendor/npm/source-map@0.1.31/CHANGELOG.md +0 -112
- data/public/vendor/npm/source-map@0.1.31/LICENSE +0 -28
- data/public/vendor/npm/source-map@0.1.31/Makefile.dryice.js +0 -89
- data/public/vendor/npm/source-map@0.1.31/README.md +0 -434
- data/public/vendor/npm/source-map@0.1.31/build/assert-shim.js +0 -58
- data/public/vendor/npm/source-map@0.1.31/build/mini-require.js +0 -154
- data/public/vendor/npm/source-map@0.1.31/build/prefix-source-map.jsm +0 -20
- data/public/vendor/npm/source-map@0.1.31/build/prefix-utils.jsm +0 -18
- data/public/vendor/npm/source-map@0.1.31/build/suffix-browser.js +0 -8
- data/public/vendor/npm/source-map@0.1.31/build/suffix-source-map.jsm +0 -6
- data/public/vendor/npm/source-map@0.1.31/build/suffix-utils.jsm +0 -21
- data/public/vendor/npm/source-map@0.1.31/build/test-prefix.js +0 -10
- data/public/vendor/npm/source-map@0.1.31/build/test-suffix.js +0 -5
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/array-set.js +0 -49
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/base64-vlq.js +0 -56
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/base64.js +0 -44
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/binary-search.js +0 -83
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-map-consumer.js +0 -238
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-map-generator.js +0 -231
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/source-node.js +0 -234
- data/public/vendor/npm/source-map@0.1.31/lib/source-map/util.js +0 -207
- data/public/vendor/npm/source-map@0.1.31/lib/source-map.js +0 -4
- data/public/vendor/npm/source-map@0.1.31/package.json +0 -52
- data/public/vendor/npm/source-map@0.1.31/test/run-tests.js +0 -50
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-api.js +0 -19
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-array-set.js +0 -84
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-base64-vlq.js +0 -17
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-base64.js +0 -26
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-binary-search.js +0 -37
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-dog-fooding.js +0 -76
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-map-consumer.js +0 -426
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-map-generator.js +0 -480
- data/public/vendor/npm/source-map@0.1.31/test/source-map/test-source-node.js +0 -307
- data/public/vendor/npm/source-map@0.1.31/test/source-map/util.js +0 -84
- data/public/vendor/npm/source-map@0.1.31.js +0 -1
- data/public/vendor/npm/through@2.3.8/LICENSE.APACHE2 +0 -15
- data/public/vendor/npm/through@2.3.8/LICENSE.MIT +0 -24
- data/public/vendor/npm/through@2.3.8/index.js +0 -93
- data/public/vendor/npm/through@2.3.8/package.json +0 -36
- data/public/vendor/npm/through@2.3.8/readme.markdown +0 -64
- data/public/vendor/npm/through@2.3.8/test/async.js +0 -26
- data/public/vendor/npm/through@2.3.8/test/auto-destroy.js +0 -26
- data/public/vendor/npm/through@2.3.8/test/buffering.js +0 -57
- data/public/vendor/npm/through@2.3.8/test/end.js +0 -37
- data/public/vendor/npm/through@2.3.8/test/index.js +0 -98
- data/public/vendor/npm/through@2.3.8/test.js +0 -2
- data/public/vendor/npm/through@2.3.8.js +0 -1
- data/views/_options.erb +0 -156
- /data/public/vendor/github/jspm/{nodelibs-buffer@0.1.0 → nodelibs-buffer@0.1.1}/index.js +0 -0
- /data/public/vendor/github/jspm/{nodelibs-process@0.1.1 → nodelibs-process@0.1.2}/index.js +0 -0
- /data/public/vendor/npm/{readable-stream@1.1.13 → assert@1.5.0}/LICENSE +0 -0
- /data/public/vendor/npm/{buffer@3.4.3 → buffer@5.7.1}/LICENSE +0 -0
- /data/public/vendor/npm/{core-util-is@1.0.1 → core-util-is@1.0.3}/README.md +0 -0
- /data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/LICENSE +0 -0
- /data/public/vendor/npm/{process@0.10.1 → process@0.11.10}/index.js +0 -0
- /data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/README.md +0 -0
- /data/public/vendor/npm/{readable-stream@1.1.13 → readable-stream@1.1.14}/float.patch +0 -0
data/public/js/search.js
CHANGED
@@ -1,1021 +1,38 @@
|
|
1
|
-
import
|
2
|
-
import React from
|
3
|
-
import
|
4
|
-
import
|
5
|
-
|
1
|
+
import "./jquery_world";
|
2
|
+
import React, { Component } from "react";
|
3
|
+
import { createRoot } from "react-dom/client";
|
4
|
+
import { DnD } from "./dnd";
|
5
|
+
import { Form } from "./form";
|
6
6
|
/**
|
7
7
|
* Load necessary polyfills.
|
8
8
|
*/
|
9
|
-
$.webshims.setOptions(
|
10
|
-
|
9
|
+
$.webshims.setOptions(
|
10
|
+
"basePath",
|
11
|
+
"/vendor/npm/webshim@1.15.8/js-webshim/minified/shims/"
|
12
|
+
);
|
13
|
+
$.webshims.polyfill("forms");
|
11
14
|
|
12
15
|
/**
|
13
16
|
* Clear sessionStorage on reload.
|
14
|
-
*/
|
17
|
+
*/
|
15
18
|
if (performance.navigation.type == performance.navigation.TYPE_RELOAD) {
|
16
|
-
|
17
|
-
|
19
|
+
sessionStorage.clear();
|
20
|
+
history.replaceState(null, "", location.href.split("?")[0]);
|
18
21
|
}
|
19
22
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
});
|
34
|
-
}
|
35
|
-
});
|
36
|
-
|
37
|
-
/** Drag n drop widget.
|
38
|
-
*/
|
39
|
-
var DnD = React.createClass({
|
40
|
-
|
41
|
-
getInitialState: function () {
|
42
|
-
return {
|
43
|
-
query: null
|
44
|
-
};
|
45
|
-
},
|
46
|
-
|
47
|
-
render: function () {
|
48
|
-
return (
|
49
|
-
<div
|
50
|
-
className="dnd-overlay"
|
51
|
-
style={{display: 'none'}}>
|
52
|
-
<div
|
53
|
-
className="container dnd-overlay-container">
|
54
|
-
<div
|
55
|
-
className="row">
|
56
|
-
<div
|
57
|
-
className="col-md-offset-2 col-md-10">
|
58
|
-
<p
|
59
|
-
className="dnd-overlay-drop"
|
60
|
-
style={{display: 'none'}}>
|
61
|
-
<i className="fa fa-2x fa-file-o"></i>
|
62
|
-
Drop query sequence file here
|
63
|
-
</p>
|
64
|
-
<p
|
65
|
-
className="dnd-overlay-overwrite"
|
66
|
-
style={{display: 'none'}}>
|
67
|
-
<i className="fa fa-2x fa-file-o"></i>
|
68
|
-
<span style={{color: 'red'}}>Overwrite</span> query sequence file
|
69
|
-
</p>
|
70
|
-
|
71
|
-
<div
|
72
|
-
className="dnd-errors">
|
73
|
-
<div
|
74
|
-
className="dnd-error row"
|
75
|
-
id="dnd-multi-notification"
|
76
|
-
style={{display: 'none'}}>
|
77
|
-
<div
|
78
|
-
className="col-md-6 col-md-offset-3">
|
79
|
-
One file at a time please.
|
80
|
-
</div>
|
81
|
-
</div>
|
82
|
-
|
83
|
-
<div
|
84
|
-
className="dnd-error row"
|
85
|
-
id="dnd-large-file-notification"
|
86
|
-
style={{display: 'none'}}>
|
87
|
-
<div
|
88
|
-
className="col-md-6 col-md-offset-3">
|
89
|
-
Too big a file. Can only do less than 10 MB. >_<
|
90
|
-
</div>
|
91
|
-
</div>
|
92
|
-
|
93
|
-
<div
|
94
|
-
className="dnd-error row"
|
95
|
-
id="dnd-format-notification"
|
96
|
-
style={{display: 'none'}}>
|
97
|
-
<div
|
98
|
-
className="col-md-6 col-md-offset-3">
|
99
|
-
Only FASTA files please.
|
100
|
-
</div>
|
101
|
-
</div>
|
102
|
-
</div>
|
103
|
-
</div>
|
104
|
-
</div>
|
105
|
-
</div>
|
106
|
-
</div>
|
107
|
-
);
|
108
|
-
},
|
109
|
-
|
110
|
-
componentDidMount: function () {
|
111
|
-
var self = this;
|
112
|
-
var FASTA_FORMAT = /^>/;
|
113
|
-
|
114
|
-
$(document).ready(function(){
|
115
|
-
var tgtMarker = $('.dnd-overlay');
|
116
|
-
|
117
|
-
var dndError = function (id) {
|
118
|
-
$('.dnd-error').hide();
|
119
|
-
$('#' + id + '-notification').show();
|
120
|
-
tgtMarker.effect('fade', 2500);
|
121
|
-
};
|
122
|
-
|
123
|
-
$(document)
|
124
|
-
.on('dragenter', function (evt) {
|
125
|
-
// Do not activate DnD if a modal is active.
|
126
|
-
if ($.modalActive()) return;
|
127
|
-
|
128
|
-
// Based on http://stackoverflow.com/a/8494918/1205465.
|
129
|
-
// Contrary to what the above link says, the snippet below can't
|
130
|
-
// distinguish directories from files. We handle that on drop.
|
131
|
-
var dt = evt.originalEvent.dataTransfer;
|
132
|
-
var isFile = dt.types && ((dt.types.indexOf && // Chrome and Safari
|
133
|
-
dt.types.indexOf('Files') != -1) ||
|
134
|
-
(dt.types.contains && // Firefox
|
135
|
-
dt.types.contains('application/x-moz-file')));
|
136
|
-
|
137
|
-
if (!isFile) { return; }
|
138
|
-
|
139
|
-
$('.dnd-error').hide();
|
140
|
-
tgtMarker.stop(true, true);
|
141
|
-
tgtMarker.show();
|
142
|
-
dt.effectAllowed = 'copy';
|
143
|
-
if (self.state.query.isEmpty()) {
|
144
|
-
$('.dnd-overlay-overwrite').hide();
|
145
|
-
$('.dnd-overlay-drop').show('drop', {direction: 'down'}, 'fast');
|
146
|
-
}
|
147
|
-
else {
|
148
|
-
$('.dnd-overlay-drop').hide();
|
149
|
-
$('.dnd-overlay-overwrite').show('drop', {direction: 'down'}, 'fast');
|
150
|
-
}
|
151
|
-
})
|
152
|
-
.on('dragleave', '.dnd-overlay', function (evt) {
|
153
|
-
tgtMarker.hide();
|
154
|
-
$('.dnd-overlay-drop').hide();
|
155
|
-
$('.dnd-overlay-overwrite').hide();
|
156
|
-
})
|
157
|
-
.on('dragover', '.dnd-overlay', function (evt) {
|
158
|
-
evt.originalEvent.dataTransfer.dropEffect = 'copy';
|
159
|
-
evt.preventDefault();
|
160
|
-
})
|
161
|
-
.on('drop', '.dnd-overlay', function (evt) {
|
162
|
-
evt.preventDefault();
|
163
|
-
evt.stopPropagation();
|
164
|
-
|
165
|
-
var indicator = $('#sequence-file');
|
166
|
-
self.state.query.focus();
|
167
|
-
|
168
|
-
var files = evt.originalEvent.dataTransfer.files;
|
169
|
-
if (files.length > 1) {
|
170
|
-
dndError('dnd-multi');
|
171
|
-
return;
|
172
|
-
}
|
173
|
-
|
174
|
-
var file = files[0];
|
175
|
-
if (file.size > 10 * 1048576) {
|
176
|
-
dndError('dnd-large-file');
|
177
|
-
return;
|
178
|
-
}
|
179
|
-
|
180
|
-
var reader = new FileReader();
|
181
|
-
reader.onload = function (e) {
|
182
|
-
var content = e.target.result;
|
183
|
-
if (FASTA_FORMAT.test(content)) {
|
184
|
-
indicator.text(file.name + ' ');
|
185
|
-
self.state.query.value(content);
|
186
|
-
tgtMarker.hide();
|
187
|
-
} else {
|
188
|
-
// apparently not FASTA
|
189
|
-
dndError('dnd-format');
|
190
|
-
}
|
191
|
-
};
|
192
|
-
reader.onerror = function (e) {
|
193
|
-
// Couldn't read. Means dropped stuff wasn't FASTA file.
|
194
|
-
dndError('dnd-format');
|
195
|
-
};
|
196
|
-
reader.readAsText(file);
|
197
|
-
});
|
198
|
-
});
|
199
|
-
}
|
200
|
-
});
|
201
|
-
|
202
|
-
/**
|
203
|
-
* Search form.
|
204
|
-
*
|
205
|
-
* Top level component that initialises and holds all other components, and
|
206
|
-
* facilitates communication between them.
|
207
|
-
*/
|
208
|
-
var Form = React.createClass({
|
209
|
-
|
210
|
-
getInitialState: function () {
|
211
|
-
return { databases: [], preDefinedOpts: {}, tree: {} };
|
212
|
-
},
|
213
|
-
|
214
|
-
componentDidMount: function () {
|
215
|
-
/* Fetch data to initialise the search interface from the server. These
|
216
|
-
* include list of databases to search against, advanced options to
|
217
|
-
* apply when an algorithm is selected, and a query sequence that
|
218
|
-
* the user may want to search in the databases.
|
219
|
-
*/
|
220
|
-
var search = location.search.split(/\?|&/).filter(Boolean);
|
221
|
-
var job_id = sessionStorage.getItem('job_id');
|
222
|
-
if (job_id) {
|
223
|
-
search.unshift(`job_id=${job_id}`);
|
224
|
-
}
|
225
|
-
$.getJSON(`searchdata.json?${search.join('&')}`, function(data) {
|
226
|
-
/* Update form state (i.e., list of databases and predefined
|
227
|
-
* advanced options.
|
228
|
-
*/
|
229
|
-
this.setState({
|
230
|
-
tree: data['tree'],
|
231
|
-
databases: data['database'],
|
232
|
-
preSelectedDbs: data['preSelectedDbs'],
|
233
|
-
preDefinedOpts: data['options']
|
234
|
-
});
|
235
|
-
|
236
|
-
/* Pre-populate the form with server sent query sequences
|
237
|
-
* (if any).
|
238
|
-
*/
|
239
|
-
if (data['query']) {
|
240
|
-
this.refs.query.value(data['query']);
|
241
|
-
}
|
242
|
-
|
243
|
-
setTimeout(function(){
|
244
|
-
$('.jstree_div').click();
|
245
|
-
}, 1000);
|
246
|
-
}.bind(this));
|
247
|
-
|
248
|
-
/* Enable submitting form on Cmd+Enter */
|
249
|
-
$(document).on('keydown', (e)=> {
|
250
|
-
var $button = $('#method');
|
251
|
-
if (!$button.is(':disabled') &&
|
252
|
-
e.ctrlKey && e.key === 'Enter') {
|
253
|
-
$button.trigger('click');
|
254
|
-
}
|
255
|
-
});
|
256
|
-
},
|
257
|
-
|
258
|
-
useTreeWidget: function () {
|
259
|
-
return !_.isEmpty(this.state.tree);
|
260
|
-
},
|
261
|
-
|
262
|
-
determineBlastMethod: function () {
|
263
|
-
var database_type = this.databaseType;
|
264
|
-
var sequence_type = this.sequenceType;
|
265
|
-
|
266
|
-
if (this.refs.query.isEmpty()) {
|
267
|
-
return [];
|
268
|
-
}
|
269
|
-
|
270
|
-
//database type is always known
|
271
|
-
switch (database_type) {
|
272
|
-
case 'protein':
|
273
|
-
switch (sequence_type) {
|
274
|
-
case undefined:
|
275
|
-
return ['blastp', 'blastx'];
|
276
|
-
case 'protein':
|
277
|
-
return ['blastp'];
|
278
|
-
case 'nucleotide':
|
279
|
-
return ['blastx'];
|
280
|
-
}
|
281
|
-
break;
|
282
|
-
case 'nucleotide':
|
283
|
-
switch (sequence_type) {
|
284
|
-
case undefined:
|
285
|
-
return ['tblastn', 'blastn', 'tblastx'];
|
286
|
-
case 'protein':
|
287
|
-
return ['tblastn'];
|
288
|
-
case 'nucleotide':
|
289
|
-
return ['blastn', 'tblastx'];
|
290
|
-
}
|
291
|
-
break;
|
292
|
-
}
|
293
|
-
|
294
|
-
return [];
|
295
|
-
},
|
296
|
-
|
297
|
-
handleSequenceTypeChanged: function (type) {
|
298
|
-
this.sequenceType = type;
|
299
|
-
this.refs.button.setState({
|
300
|
-
hasQuery: !this.refs.query.isEmpty(),
|
301
|
-
hasDatabases: !!this.databaseType,
|
302
|
-
methods: this.determineBlastMethod()
|
303
|
-
});
|
304
|
-
},
|
305
|
-
|
306
|
-
handleDatabaseTypeChanaged: function (type) {
|
307
|
-
this.databaseType = type;
|
308
|
-
this.refs.button.setState({
|
309
|
-
hasQuery: !this.refs.query.isEmpty(),
|
310
|
-
hasDatabases: !!this.databaseType,
|
311
|
-
methods: this.determineBlastMethod()
|
312
|
-
});
|
313
|
-
},
|
314
|
-
|
315
|
-
handleAlgoChanged: function (algo) {
|
316
|
-
if (this.state.preDefinedOpts.hasOwnProperty(algo)) {
|
317
|
-
this.refs.opts.setState({
|
318
|
-
preOpts: this.state.preDefinedOpts[algo].join(' ')
|
319
|
-
});
|
320
|
-
}
|
321
|
-
else {
|
322
|
-
this.refs.opts.setState({preOpts: ''});
|
323
|
-
}
|
324
|
-
},
|
325
|
-
|
326
|
-
handleNewTabCheckbox: function () {
|
327
|
-
setTimeout(() => {
|
328
|
-
if ($('#toggleNewTab').is(':checked')) {
|
329
|
-
$('#blast').attr('target', '_blank');
|
330
|
-
}
|
331
|
-
else {
|
332
|
-
$('#blast').attr('target', '_self');
|
333
|
-
}
|
334
|
-
});
|
335
|
-
},
|
336
|
-
|
337
|
-
render: function () {
|
338
|
-
return (
|
339
|
-
<div className="container">
|
340
|
-
<form id="blast" method="post" className="form-horizontal">
|
341
|
-
<div className="form-group query-container">
|
342
|
-
<Query ref="query" onSequenceTypeChanged={this.handleSequenceTypeChanged}/>
|
343
|
-
</div>
|
344
|
-
<div className="notifications" id="notifications">
|
345
|
-
<NucleotideNotification/>
|
346
|
-
<ProteinNotification/>
|
347
|
-
<MixedNotification/>
|
348
|
-
</div>
|
349
|
-
{this.useTreeWidget() ?
|
350
|
-
<DatabasesTree ref="databases"
|
351
|
-
databases={this.state.databases} tree={this.state.tree}
|
352
|
-
preSelectedDbs={this.state.preSelectedDbs}
|
353
|
-
onDatabaseTypeChanged={this.handleDatabaseTypeChanaged} />
|
354
|
-
:
|
355
|
-
<Databases ref="databases" databases={this.state.databases}
|
356
|
-
preSelectedDbs={this.state.preSelectedDbs}
|
357
|
-
onDatabaseTypeChanged={this.handleDatabaseTypeChanaged} />
|
358
|
-
}
|
359
|
-
<div className="form-group">
|
360
|
-
<Options ref="opts"/>
|
361
|
-
<div className="col-md-2">
|
362
|
-
<div className="form-group" style={{'textAlign': 'center', 'padding': '7px 0'}}>
|
363
|
-
<label>
|
364
|
-
<input type="checkbox" id="toggleNewTab"
|
365
|
-
onChange={()=> { this.handleNewTabCheckbox(); }}
|
366
|
-
/> Open results in new tab
|
367
|
-
</label>
|
368
|
-
</div>
|
369
|
-
</div>
|
370
|
-
<SearchButton ref="button" onAlgoChanged={this.handleAlgoChanged}/>
|
371
|
-
</div>
|
372
|
-
</form>
|
373
|
-
</div>
|
374
|
-
);
|
375
|
-
}
|
376
|
-
});
|
377
|
-
|
378
|
-
/**
|
379
|
-
* Query widget.
|
380
|
-
*/
|
381
|
-
var Query = React.createClass({
|
382
|
-
|
383
|
-
// Kind of public API. //
|
384
|
-
|
385
|
-
/**
|
386
|
-
* Returns query sequence if no argument is provided (or null or undefined
|
387
|
-
* is provided as argument). Otherwise, sets query sequenced to the given
|
388
|
-
* value and returns `this`.
|
389
|
-
*
|
390
|
-
* Default/initial state of query sequence is an empty string. Caller must
|
391
|
-
* explicitly provide empty string as argument to "reset" query sequence.
|
392
|
-
*/
|
393
|
-
value: function (val) {
|
394
|
-
if (val == null) {
|
395
|
-
// i.e., val is null or undefined
|
396
|
-
return this.state.value;
|
397
|
-
}
|
398
|
-
else {
|
399
|
-
this.setState({
|
400
|
-
value: val
|
401
|
-
});
|
402
|
-
return this;
|
403
|
-
}
|
404
|
-
},
|
405
|
-
|
406
|
-
/**
|
407
|
-
* Clears textarea. Returns `this`.
|
408
|
-
*
|
409
|
-
* Clearing textarea also causes it to be focussed.
|
410
|
-
*/
|
411
|
-
clear: function () {
|
412
|
-
return this.value('').focus();
|
413
|
-
},
|
414
|
-
|
415
|
-
/**
|
416
|
-
* Focuses textarea. Returns `this`.
|
417
|
-
*/
|
418
|
-
focus: function () {
|
419
|
-
this.textarea().focus();
|
420
|
-
return this;
|
421
|
-
},
|
422
|
-
|
423
|
-
/**
|
424
|
-
* Returns true if query is absent ('', undefined, null), false otherwise.
|
425
|
-
*/
|
426
|
-
isEmpty: function () {
|
427
|
-
return !this.value();
|
428
|
-
},
|
429
|
-
|
430
|
-
|
431
|
-
// Internal helpers. //
|
432
|
-
|
433
|
-
textarea: function () {
|
434
|
-
return $(this.refs.textarea.getDOMNode());
|
435
|
-
},
|
436
|
-
|
437
|
-
controls: function () {
|
438
|
-
return $(this.refs.controls.getDOMNode());
|
439
|
-
},
|
440
|
-
|
441
|
-
handleInput: function (evt) {
|
442
|
-
this.value(evt.target.value);
|
443
|
-
},
|
444
|
-
|
445
|
-
/**
|
446
|
-
* Hides or shows 'clear sequence' button.
|
447
|
-
*
|
448
|
-
* Rendering the 'clear sequence' button takes into account presence or
|
449
|
-
* absence of a scrollbar.
|
450
|
-
*
|
451
|
-
* Called by `componentDidUpdate`.
|
452
|
-
*/
|
453
|
-
hideShowButton: function () {
|
454
|
-
if (!this.isEmpty()) {
|
455
|
-
// Calculation below is based on -
|
456
|
-
// http://chris-spittles.co.uk/jquery-calculate-scrollbar-width/
|
457
|
-
// FIXME: can reflow be avoided here?
|
458
|
-
var textareaNode = this.textarea()[0];
|
459
|
-
var sequenceControlsRight = textareaNode.offsetWidth - textareaNode.clientWidth;
|
460
|
-
this.controls().css('right', sequenceControlsRight + 17);
|
461
|
-
this.controls().removeClass('hidden');
|
462
|
-
}
|
463
|
-
else {
|
464
|
-
// FIXME: what are lines 1, 2, & 3 doing here?
|
465
|
-
this.textarea().parent().removeClass('has-error');
|
466
|
-
this.$sequenceFile = $('#sequence-file');
|
467
|
-
this.$sequenceFile.empty();
|
468
|
-
|
469
|
-
this.controls().addClass('hidden');
|
470
|
-
}
|
471
|
-
},
|
472
|
-
|
473
|
-
/**
|
474
|
-
* Put red border around textarea.
|
475
|
-
*/
|
476
|
-
indicateError: function () {
|
477
|
-
this.textarea().parent().addClass('has-error');
|
478
|
-
},
|
479
|
-
|
480
|
-
/**
|
481
|
-
* Put normal blue border around textarea.
|
482
|
-
*/
|
483
|
-
indicateNormal: function () {
|
484
|
-
this.textarea().parent().removeClass('has-error');
|
485
|
-
},
|
486
|
-
|
487
|
-
/**
|
488
|
-
* Returns type of the query sequence (nucleotide, protein, mixed).
|
489
|
-
*
|
490
|
-
* Query widget supports executing a callback when the query type changes.
|
491
|
-
* Components interested in query type should register a callback instead
|
492
|
-
* of directly calling this method.
|
493
|
-
*/
|
494
|
-
type: function () {
|
495
|
-
var sequences = this.value().split(/>.*/);
|
496
|
-
|
497
|
-
var type, tmp;
|
498
|
-
|
499
|
-
for (var i = 0; i < sequences.length; i++) {
|
500
|
-
tmp = this.guessSequenceType(sequences[i]);
|
501
|
-
|
502
|
-
// could not guess the sequence type; try the next sequence
|
503
|
-
if (!tmp) { continue; }
|
504
|
-
|
505
|
-
if (!type) {
|
506
|
-
// successfully guessed the type of atleast one sequence
|
507
|
-
type = tmp;
|
508
|
-
}
|
509
|
-
else if (tmp !== type) {
|
510
|
-
// user has mixed different type of sequences
|
511
|
-
return 'mixed';
|
512
|
-
}
|
513
|
-
}
|
514
|
-
|
515
|
-
return type;
|
516
|
-
},
|
517
|
-
|
518
|
-
/**
|
519
|
-
* Guesses and returns the type of the given sequence (nucleotide,
|
520
|
-
* protein).
|
521
|
-
*/
|
522
|
-
guessSequenceType: function (sequence) {
|
523
|
-
// remove 'noisy' characters
|
524
|
-
sequence = sequence.replace(/[^A-Z]/gi, ''); // non-letter characters
|
525
|
-
sequence = sequence.replace(/[NX]/gi, ''); // ambiguous characters
|
526
|
-
|
527
|
-
// can't determine the type of ultrashort queries
|
528
|
-
if (sequence.length < 10) {
|
529
|
-
return undefined;
|
530
|
-
}
|
531
|
-
|
532
|
-
// count the number of putative NA
|
533
|
-
var putative_NA_count = 0;
|
534
|
-
for (var i = 0; i < sequence.length; i++) {
|
535
|
-
if (sequence[i].match(/[ACGTU]/i)) {
|
536
|
-
putative_NA_count += 1;
|
537
|
-
}
|
538
|
-
}
|
539
|
-
|
540
|
-
var threshold = 0.9 * sequence.length;
|
541
|
-
return putative_NA_count > threshold ? 'nucleotide' : 'protein';
|
542
|
-
},
|
543
|
-
|
544
|
-
notify: function (type) {
|
545
|
-
clearTimeout(this.notification_timeout);
|
546
|
-
this.indicateNormal();
|
547
|
-
$('.notifications .active').hide().removeClass('active');
|
548
|
-
|
549
|
-
if (type) {
|
550
|
-
$('#' + type + '-sequence-notification').show('drop', {direction: 'up'}).addClass('active');
|
551
|
-
|
552
|
-
this.notification_timeout = setTimeout(function () {
|
553
|
-
$('.notifications .active').hide('drop', {direction: 'up'}).removeClass('active');
|
554
|
-
}, 5000);
|
555
|
-
|
556
|
-
if (type === 'mixed') {
|
557
|
-
this.indicateError();
|
558
|
-
}
|
559
|
-
}
|
560
|
-
},
|
561
|
-
|
562
|
-
|
563
|
-
// Lifecycle methods. //
|
564
|
-
|
565
|
-
getInitialState: function () {
|
566
|
-
var input_sequence = $('input#input_sequence').val() || '';
|
567
|
-
return {
|
568
|
-
value: input_sequence
|
569
|
-
};
|
570
|
-
},
|
571
|
-
|
572
|
-
render: function ()
|
573
|
-
{
|
574
|
-
return (
|
575
|
-
<div
|
576
|
-
className="col-md-12">
|
577
|
-
<div
|
578
|
-
className="sequence">
|
579
|
-
<textarea
|
580
|
-
id="sequence" ref="textarea"
|
581
|
-
className="form-control text-monospace"
|
582
|
-
name="sequence" value={this.state.value}
|
583
|
-
placeholder="Paste query sequence(s) or drag file
|
584
|
-
containing query sequence(s) in FASTA format here ..."
|
585
|
-
spellCheck="false" autoFocus="true"
|
586
|
-
onChange={this.handleInput}>
|
587
|
-
</textarea>
|
588
|
-
</div>
|
589
|
-
<div
|
590
|
-
className="hidden"
|
591
|
-
style={{ position: 'absolute', top: '4px', right: '19px' }}
|
592
|
-
ref="controls">
|
593
|
-
<button
|
594
|
-
type="button"
|
595
|
-
className="btn btn-sm btn-default" id="btn-sequence-clear"
|
596
|
-
title="Clear query sequence(s)."
|
597
|
-
onClick={this.clear}>
|
598
|
-
<span id="sequence-file"></span>
|
599
|
-
<i className="fa fa-times"></i>
|
600
|
-
</button>
|
601
|
-
</div>
|
602
|
-
</div>
|
603
|
-
);
|
604
|
-
},
|
605
|
-
|
606
|
-
componentDidMount: function () {
|
607
|
-
$('body').click(function () {
|
608
|
-
$('.notifications .active').hide('drop', {direction: 'up'}).removeClass('active');
|
609
|
-
});
|
610
|
-
},
|
611
|
-
|
612
|
-
componentDidUpdate: function () {
|
613
|
-
this.hideShowButton();
|
614
|
-
var type = this.type();
|
615
|
-
if (!type || type !== this._type) {
|
616
|
-
this._type = type;
|
617
|
-
this.notify(type);
|
618
|
-
this.props.onSequenceTypeChanged(type);
|
619
|
-
}
|
620
|
-
}
|
621
|
-
});
|
622
|
-
|
623
|
-
var ProteinNotification = React.createClass({
|
624
|
-
render: function () {
|
625
|
-
return (
|
626
|
-
<div
|
627
|
-
className="notification row"
|
628
|
-
id="protein-sequence-notification"
|
629
|
-
style={{ display: 'none' }}>
|
630
|
-
<div
|
631
|
-
className="alert-info col-md-6 col-md-offset-3">
|
632
|
-
Detected: amino-acid sequence(s).
|
633
|
-
</div>
|
634
|
-
</div>
|
635
|
-
);
|
636
|
-
}
|
637
|
-
});
|
638
|
-
|
639
|
-
var NucleotideNotification = React.createClass({
|
640
|
-
render: function () {
|
641
|
-
return (
|
642
|
-
<div
|
643
|
-
className="notification row"
|
644
|
-
id="nucleotide-sequence-notification"
|
645
|
-
style={{ display: 'none' }}>
|
646
|
-
<div
|
647
|
-
className="alert-info col-md-6 col-md-offset-3">
|
648
|
-
Detected: nucleotide sequence(s).
|
649
|
-
</div>
|
650
|
-
</div>
|
651
|
-
);
|
652
|
-
}
|
653
|
-
});
|
654
|
-
|
655
|
-
var MixedNotification = React.createClass({
|
656
|
-
render: function () {
|
657
|
-
return (
|
658
|
-
<div
|
659
|
-
className="notification row"
|
660
|
-
id="mixed-sequence-notification"
|
661
|
-
style={{ display: 'none' }}>
|
662
|
-
<div
|
663
|
-
className="alert-danger col-md-10 col-md-offset-1">
|
664
|
-
Error: mixed nucleotide and amino-acid sequences detected.
|
665
|
-
</div>
|
666
|
-
</div>
|
667
|
-
);
|
668
|
-
}
|
669
|
-
});
|
670
|
-
|
671
|
-
var Databases = React.createClass({
|
672
|
-
getInitialState: function () {
|
673
|
-
return { type: '' };
|
674
|
-
},
|
675
|
-
|
676
|
-
databases: function (category) {
|
677
|
-
var databases = this.props.databases;
|
678
|
-
if (category) {
|
679
|
-
databases = _.select(databases, database => database.type === category);
|
680
|
-
}
|
681
|
-
|
682
|
-
return _.sortBy(databases, 'title');
|
683
|
-
},
|
684
|
-
|
685
|
-
nselected: function () {
|
686
|
-
return $('input[name="databases[]"]:checked').length;
|
687
|
-
},
|
688
|
-
|
689
|
-
categories: function () {
|
690
|
-
return _.uniq(_.map(this.props.databases,
|
691
|
-
_.iteratee('type'))).sort();
|
692
|
-
},
|
693
|
-
|
694
|
-
handleClick: function (database) {
|
695
|
-
var type = this.nselected() ? database.type : '';
|
696
|
-
if (type != this.state.type) this.setState({type: type});
|
697
|
-
},
|
698
|
-
|
699
|
-
handleToggle: function (toggleState, type) {
|
700
|
-
switch (toggleState) {
|
701
|
-
case '[Select all]':
|
702
|
-
$(`.${type} .database input:not(:checked)`).click();
|
703
|
-
break;
|
704
|
-
case '[Deselect all]':
|
705
|
-
$(`.${type} .database input:checked`).click();
|
706
|
-
break;
|
707
|
-
}
|
708
|
-
this.forceUpdate();
|
709
|
-
},
|
710
|
-
|
711
|
-
render: function () {
|
712
|
-
return (
|
713
|
-
<div className="form-group databases-container">
|
714
|
-
{ _.map(this.categories(), this.renderDatabases) }
|
715
|
-
</div>
|
716
|
-
);
|
717
|
-
},
|
718
|
-
|
719
|
-
renderDatabases: function (category) {
|
720
|
-
// Panel name and column width.
|
721
|
-
var panelTitle = category[0].toUpperCase() +
|
722
|
-
category.substring(1).toLowerCase() + ' databases';
|
723
|
-
var columnClass = this.categories().length === 1 ? 'col-md-12' :
|
724
|
-
'col-md-6';
|
725
|
-
|
726
|
-
// Toggle button.
|
727
|
-
var toggleState = '[Select all]';
|
728
|
-
var toggleClass = 'btn-link';
|
729
|
-
var toggleShown = this.databases(category).length > 1 ;
|
730
|
-
var toggleDisabled = this.state.type && this.state.type !== category;
|
731
|
-
if (toggleShown && toggleDisabled) toggleClass += ' disabled';
|
732
|
-
if (!toggleShown) toggleClass += ' hidden';
|
733
|
-
if (this.nselected() === this.databases(category).length) {
|
734
|
-
toggleState = '[Deselect all]';
|
735
|
-
}
|
736
|
-
|
737
|
-
// JSX.
|
738
|
-
return (
|
739
|
-
<div className={columnClass} key={'DB_'+category}>
|
740
|
-
<div className="panel panel-default">
|
741
|
-
<div className="panel-heading">
|
742
|
-
<h4 style={{display: 'inline'}}>{panelTitle}</h4>
|
743
|
-
<button type="button" className={toggleClass} disabled={toggleDisabled}
|
744
|
-
onClick={ function () { this.handleToggle(toggleState, category); }.bind(this) }>
|
745
|
-
{toggleState}
|
746
|
-
</button>
|
747
|
-
</div>
|
748
|
-
<ul className={'list-group databases ' + category}>
|
749
|
-
{
|
750
|
-
_.map(this.databases(category), _.bind(function (database,index) {
|
751
|
-
return (
|
752
|
-
<li className="list-group-item" key={'DB_'+category+index}>
|
753
|
-
{ this.renderDatabase(database) }
|
754
|
-
</li>
|
755
|
-
);
|
756
|
-
}, this))
|
757
|
-
}
|
758
|
-
</ul>
|
759
|
-
</div>
|
760
|
-
</div>
|
761
|
-
);
|
762
|
-
},
|
763
|
-
|
764
|
-
renderDatabase: function (database) {
|
765
|
-
var disabled = this.state.type && this.state.type !== database.type;
|
766
|
-
|
767
|
-
return (
|
768
|
-
<label
|
769
|
-
className={disabled && 'disabled database' || 'database'}>
|
770
|
-
<input
|
771
|
-
type="checkbox" name="databases[]" value={database.id}
|
772
|
-
data-type={database.type} disabled={disabled}
|
773
|
-
onChange=
|
774
|
-
{
|
775
|
-
_.bind(function () {
|
776
|
-
this.handleClick(database);
|
777
|
-
}, this)
|
778
|
-
}/>
|
779
|
-
{' ' + (database.title || database.name)}
|
780
|
-
</label>
|
781
|
-
);
|
782
|
-
},
|
783
|
-
|
784
|
-
componentDidUpdate: function () {
|
785
|
-
if (this.databases() && this.databases().length === 1) {
|
786
|
-
$('.databases').find('input').prop('checked',true);
|
787
|
-
this.handleClick(this.databases()[0]);
|
788
|
-
}
|
789
|
-
|
790
|
-
if (this.props.preSelectedDbs) {
|
791
|
-
var selectors = this.props.preSelectedDbs.map(db => `input[value=${db.id}]`);
|
792
|
-
$(selectors.join(',')).prop('checked',true);
|
793
|
-
this.handleClick(this.props.preSelectedDbs[0]);
|
794
|
-
this.props.preSelectedDbs = null;
|
795
|
-
}
|
796
|
-
this.props.onDatabaseTypeChanged(this.state.type);
|
797
|
-
}
|
798
|
-
});
|
799
|
-
|
800
|
-
// Component for the advanced params input field.
|
801
|
-
var Options = React.createClass({
|
802
|
-
// State of this component is the advanced params text.
|
803
|
-
getInitialState: function () {
|
804
|
-
return { preOpts: '' };
|
805
|
-
},
|
806
|
-
|
807
|
-
updateBox: function (evt) {
|
808
|
-
this.setState({
|
809
|
-
preOpts: evt.target.value
|
810
|
-
});
|
811
|
-
},
|
812
|
-
|
813
|
-
render: function () {
|
814
|
-
var classNames = 'form-control';
|
815
|
-
if (this.state.preOpts.trim()) {
|
816
|
-
classNames += ' yellow-background';
|
817
|
-
}
|
818
|
-
return (
|
819
|
-
<div className="col-md-7">
|
820
|
-
<div className="form-group">
|
821
|
-
<div className="col-md-12">
|
822
|
-
<div className="input-group">
|
823
|
-
<label className="control-label" htmlFor="advanced">
|
824
|
-
Advanced parameters:
|
825
|
-
</label>
|
826
|
-
<input type="text" className={classNames} onChange={this.updateBox}
|
827
|
-
id="advanced" name="advanced" value={this.state.preOpts}
|
828
|
-
placeholder="eg: -evalue 1.0e-5 -num_alignments 100"
|
829
|
-
title="View, and enter advanced parameters."
|
830
|
-
/>
|
831
|
-
<div
|
832
|
-
className="input-group-addon cursor-pointer"
|
833
|
-
data-toggle="modal" data-target="#help">
|
834
|
-
<i className="fa fa-question"></i>
|
835
|
-
</div>
|
836
|
-
</div>
|
837
|
-
</div>
|
838
|
-
</div>
|
839
|
-
</div>
|
840
|
-
);
|
841
|
-
}
|
842
|
-
});
|
843
|
-
|
844
|
-
/**
|
845
|
-
* SearchButton widget.
|
846
|
-
*/
|
847
|
-
var SearchButton = React.createClass({
|
848
|
-
|
849
|
-
// Internal helpers. //
|
850
|
-
|
851
|
-
/**
|
852
|
-
* Returns jquery wrapped input group.
|
853
|
-
*/
|
854
|
-
inputGroup: function () {
|
855
|
-
return $(React.findDOMNode(this.refs.inputGroup));
|
856
|
-
},
|
857
|
-
|
858
|
-
/**
|
859
|
-
* Returns jquery wrapped submit button.
|
860
|
-
*/
|
861
|
-
submitButton: function () {
|
862
|
-
return $(React.findDOMNode(this.refs.submitButton));
|
863
|
-
},
|
864
|
-
|
865
|
-
/**
|
866
|
-
* Initialise tooltip on input group and submit button.
|
867
|
-
*/
|
868
|
-
initTooltip: function () {
|
869
|
-
this.inputGroup().tooltip({
|
870
|
-
trigger: 'manual',
|
871
|
-
title: _.bind(function () {
|
872
|
-
if (!this.state.hasQuery && !this.state.hasDatabases) {
|
873
|
-
return 'You must enter a query sequence and select one or more databases above before you can run a search!';
|
874
|
-
}
|
875
|
-
else if (this.state.hasQuery && !this.state.hasDatabases) {
|
876
|
-
return 'You must select one or more databases above before you can run a search!';
|
877
|
-
}
|
878
|
-
else if (!this.state.hasQuery && this.state.hasDatabases) {
|
879
|
-
return 'You must enter a query sequence above before you can run a search!';
|
880
|
-
}
|
881
|
-
}, this)
|
882
|
-
});
|
883
|
-
|
884
|
-
this.submitButton().tooltip({
|
885
|
-
title: _.bind(function () {
|
886
|
-
var title = 'Click to BLAST or press Ctrl+Enter.';
|
887
|
-
if (this.state.methods.length > 1) {
|
888
|
-
title += ' Click dropdown button on the right for other' +
|
889
|
-
' BLAST algorithms that can be used.';
|
890
|
-
}
|
891
|
-
return title;
|
892
|
-
}, this)
|
893
|
-
});
|
894
|
-
},
|
895
|
-
|
896
|
-
/**
|
897
|
-
* Show tooltip on input group.
|
898
|
-
*/
|
899
|
-
showTooltip: function () {
|
900
|
-
this.inputGroup()._tooltip('show');
|
901
|
-
},
|
902
|
-
|
903
|
-
/**
|
904
|
-
* Hide tooltip on input group.
|
905
|
-
*/
|
906
|
-
hideTooltip: function () {
|
907
|
-
this.inputGroup()._tooltip('hide');
|
908
|
-
},
|
909
|
-
|
910
|
-
/**
|
911
|
-
* Change selected algorithm.
|
912
|
-
*
|
913
|
-
* NOTE: Called on click on dropdown menu items.
|
914
|
-
*/
|
915
|
-
changeAlgorithm: function (method) {
|
916
|
-
var methods = this.state.methods.slice();
|
917
|
-
methods.splice(methods.indexOf(method), 1);
|
918
|
-
methods.unshift(method);
|
919
|
-
this.setState({
|
920
|
-
methods: methods
|
921
|
-
});
|
922
|
-
},
|
923
|
-
|
924
|
-
/**
|
925
|
-
* Given, for example 'blastp', returns blast<strong>p</strong>.
|
926
|
-
*/
|
927
|
-
decorate: function(name) {
|
928
|
-
return name.match(/(.?)(blast)(.?)/).slice(1).map(function (token, _) {
|
929
|
-
if (token) {
|
930
|
-
if (token !== 'blast'){
|
931
|
-
return (<strong key={token}>{token}</strong>);
|
932
|
-
}
|
933
|
-
else {
|
934
|
-
return token;
|
935
|
-
}
|
936
|
-
}
|
937
|
-
});
|
938
|
-
},
|
939
|
-
|
940
|
-
|
941
|
-
// Lifecycle methods. //
|
942
|
-
|
943
|
-
getInitialState: function () {
|
944
|
-
return {
|
945
|
-
methods: [],
|
946
|
-
hasQuery: false,
|
947
|
-
hasDatabases: false
|
948
|
-
};
|
949
|
-
},
|
950
|
-
|
951
|
-
render: function () {
|
952
|
-
var methods = this.state.methods;
|
953
|
-
var method = methods[0];
|
954
|
-
var multi = methods.length > 1;
|
955
|
-
|
956
|
-
return (
|
957
|
-
<div className="col-md-3">
|
958
|
-
<div className="form-group">
|
959
|
-
<div className="col-md-12">
|
960
|
-
<div
|
961
|
-
className={multi && 'input-group'} id="methods" ref="inputGroup"
|
962
|
-
onMouseOver={this.showTooltip} onMouseOut={this.hideTooltip}>
|
963
|
-
<button
|
964
|
-
type="submit" className="btn btn-primary form-control text-uppercase"
|
965
|
-
id="method" ref="submitButton" name="method" value={method} disabled={!method}>
|
966
|
-
{this.decorate(method || 'blast')}
|
967
|
-
</button>
|
968
|
-
{
|
969
|
-
multi && <div
|
970
|
-
className="input-group-btn">
|
971
|
-
<button
|
972
|
-
className="btn btn-primary dropdown-toggle"
|
973
|
-
data-toggle="dropdown">
|
974
|
-
<span className="caret"></span>
|
975
|
-
</button>
|
976
|
-
<ul
|
977
|
-
className="dropdown-menu dropdown-menu-right">
|
978
|
-
{
|
979
|
-
_.map(methods.slice(1), _.bind(function (method) {
|
980
|
-
return (
|
981
|
-
<li key={method} className="text-uppercase"
|
982
|
-
onClick={
|
983
|
-
_.bind(function () {
|
984
|
-
this.changeAlgorithm(method);
|
985
|
-
}, this)
|
986
|
-
}>
|
987
|
-
{method}
|
988
|
-
</li>
|
989
|
-
);
|
990
|
-
}, this))
|
991
|
-
}
|
992
|
-
</ul>
|
993
|
-
</div>
|
994
|
-
}
|
995
|
-
</div>
|
996
|
-
</div>
|
997
|
-
</div>
|
998
|
-
</div>
|
999
|
-
);
|
1000
|
-
},
|
1001
|
-
|
1002
|
-
componentDidMount: function () {
|
1003
|
-
this.initTooltip();
|
1004
|
-
},
|
1005
|
-
|
1006
|
-
shouldComponentUpdate: function (props , state) {
|
1007
|
-
return !(_.isEqual(state.methods, this.state.methods));
|
1008
|
-
},
|
1009
|
-
|
1010
|
-
componentDidUpdate: function () {
|
1011
|
-
if (this.state.methods.length > 0) {
|
1012
|
-
this.inputGroup().wiggle();
|
1013
|
-
this.props.onAlgoChanged(this.state.methods[0]);
|
1014
|
-
}
|
1015
|
-
else {
|
1016
|
-
this.props.onAlgoChanged('');
|
1017
|
-
}
|
1018
|
-
}
|
1019
|
-
});
|
23
|
+
class Page extends Component {
|
24
|
+
componentDidMount() {
|
25
|
+
this.refs.dnd.setState({ query: this.refs.form.refs.query });
|
26
|
+
}
|
27
|
+
render() {
|
28
|
+
return (
|
29
|
+
<div>
|
30
|
+
<DnD ref="dnd" />
|
31
|
+
<Form ref="form" />
|
32
|
+
</div>
|
33
|
+
);
|
34
|
+
}
|
35
|
+
}
|
1020
36
|
|
1021
|
-
|
37
|
+
const root = createRoot(document.getElementById("view"));
|
38
|
+
root.render(<Page />);
|