diff --git a/public/js/dnd.js b/public/js/dnd.js index bc164d7e6..e247d5948 100644 --- a/public/js/dnd.js +++ b/public/js/dnd.js @@ -1,6 +1,6 @@ import React, { Component } from 'react'; -/** +/** * Drag n drop widget. */ export class DnD extends Component { @@ -74,7 +74,7 @@ export class DnD extends Component { } var file = files[0]; - if (file.size > 10 * 1048576) { + if (file.size > 250 * 1048576) { dndError('dnd-large-file'); return; } @@ -141,7 +141,7 @@ export class DnD extends Component { style={{ display: 'none' }}>
- Too big a file. Can only do less than 10 MB. >_< + Too big a file. Can only do less than 250 MB. >_<
diff --git a/public/sequenceserver-search.min.js b/public/sequenceserver-search.min.js index c9becacb1..bb7cd04a3 100644 --- a/public/sequenceserver-search.min.js +++ b/public/sequenceserver-search.min.js @@ -38,7 +38,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DnD: () => (/* binding */ DnD)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n/** \n * Drag n drop widget.\n */\n\n\nvar DnD = /*#__PURE__*/function (_Component) {\n _inherits(DnD, _Component);\n var _super = _createSuper(DnD);\n function DnD(props) {\n var _this;\n _classCallCheck(this, DnD);\n _this = _super.call(this, props);\n _this.state = {\n query: null\n };\n return _this;\n }\n _createClass(DnD, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var self = this;\n var FASTA_FORMAT = /^>/;\n $(document).ready(function () {\n var tgtMarker = $('.dnd-overlay');\n var dndError = function dndError(id) {\n $('.dnd-error').hide();\n $('#' + id + '-notification').show();\n tgtMarker.effect('fade', 2500);\n };\n $(document).on('dragenter', function (evt) {\n // Do not activate DnD if a modal is active.\n if ($.modalActive()) return;\n\n // Based on http://stackoverflow.com/a/8494918/1205465.\n // Contrary to what the above link says, the snippet below can't\n // distinguish directories from files. We handle that on drop.\n var dt = evt.originalEvent.dataTransfer;\n var isFile = dt.types && (dt.types.indexOf &&\n // Chrome and Safari\n dt.types.indexOf('Files') != -1 || dt.types.contains &&\n // Firefox\n dt.types.contains('application/x-moz-file'));\n if (!isFile) {\n return;\n }\n $('.dnd-error').hide();\n tgtMarker.stop(true, true);\n tgtMarker.show();\n dt.effectAllowed = 'copy';\n if (self.state.query.isEmpty()) {\n $('.dnd-overlay-overwrite').hide();\n $('.dnd-overlay-drop').show('drop', {\n direction: 'down'\n }, 'fast');\n } else {\n $('.dnd-overlay-drop').hide();\n $('.dnd-overlay-overwrite').show('drop', {\n direction: 'down'\n }, 'fast');\n }\n }).on('dragleave', '.dnd-overlay', function (evt) {\n tgtMarker.hide();\n $('.dnd-overlay-drop').hide();\n $('.dnd-overlay-overwrite').hide();\n }).on('dragover', '.dnd-overlay', function (evt) {\n evt.originalEvent.dataTransfer.dropEffect = 'copy';\n evt.preventDefault();\n }).on('drop', '.dnd-overlay', function (evt) {\n evt.preventDefault();\n evt.stopPropagation();\n var indicator = $('#sequence-file');\n self.state.query.focus();\n var files = evt.originalEvent.dataTransfer.files;\n if (files.length > 1) {\n dndError('dnd-multi');\n return;\n }\n var file = files[0];\n if (file.size > 10 * 1048576) {\n dndError('dnd-large-file');\n return;\n }\n var reader = new FileReader();\n reader.onload = function (e) {\n var content = e.target.result;\n if (FASTA_FORMAT.test(content)) {\n indicator.text(file.name + ' ');\n self.state.query.value(content);\n tgtMarker.hide();\n } else {\n // apparently not FASTA\n dndError('dnd-format');\n }\n };\n reader.onerror = function (e) {\n // Couldn't read. Means dropped stuff wasn't FASTA file.\n dndError('dnd-format');\n };\n reader.readAsText(file);\n });\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"dnd-overlay\",\n style: {\n display: 'none'\n },\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"container dnd-overlay-container\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"row\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"div\", {\n className: \"col-md-offset-2 col-md-10\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"p\", {\n className: \"dnd-overlay-drop\",\n style: {\n display: 'none'\n },\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"i\", {\n className: \"fa fa-2x fa-file-o\"\n }), \"Drop query sequence file here\"]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"p\", {\n className: \"dnd-overlay-overwrite\",\n style: {\n display: 'none'\n },\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"i\", {\n className: \"fa fa-2x fa-file-o\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"span\", {\n style: {\n color: 'red'\n },\n children: \"Overwrite\"\n }), \" query sequence file\"]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"div\", {\n className: \"dnd-errors\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"dnd-error row\",\n id: \"dnd-multi-notification\",\n style: {\n display: 'none'\n },\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"col-md-6 col-md-offset-3\",\n children: \"One file at a time please.\"\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"dnd-error row\",\n id: \"dnd-large-file-notification\",\n style: {\n display: 'none'\n },\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"col-md-6 col-md-offset-3\",\n children: \"Too big a file. Can only do less than 10 MB. >_<\"\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"dnd-error row\",\n id: \"dnd-format-notification\",\n style: {\n display: 'none'\n },\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"col-md-6 col-md-offset-3\",\n children: \"Only FASTA files please.\"\n })\n })]\n })]\n })\n })\n })\n });\n }\n }]);\n return DnD;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n\n//# sourceURL=webpack://SequenceServer/./public/js/dnd.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DnD: () => (/* binding */ DnD)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n/**\n * Drag n drop widget.\n */\n\n\nvar DnD = /*#__PURE__*/function (_Component) {\n _inherits(DnD, _Component);\n var _super = _createSuper(DnD);\n function DnD(props) {\n var _this;\n _classCallCheck(this, DnD);\n _this = _super.call(this, props);\n _this.state = {\n query: null\n };\n return _this;\n }\n _createClass(DnD, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var self = this;\n var FASTA_FORMAT = /^>/;\n $(document).ready(function () {\n var tgtMarker = $('.dnd-overlay');\n var dndError = function dndError(id) {\n $('.dnd-error').hide();\n $('#' + id + '-notification').show();\n tgtMarker.effect('fade', 2500);\n };\n $(document).on('dragenter', function (evt) {\n // Do not activate DnD if a modal is active.\n if ($.modalActive()) return;\n\n // Based on http://stackoverflow.com/a/8494918/1205465.\n // Contrary to what the above link says, the snippet below can't\n // distinguish directories from files. We handle that on drop.\n var dt = evt.originalEvent.dataTransfer;\n var isFile = dt.types && (dt.types.indexOf &&\n // Chrome and Safari\n dt.types.indexOf('Files') != -1 || dt.types.contains &&\n // Firefox\n dt.types.contains('application/x-moz-file'));\n if (!isFile) {\n return;\n }\n $('.dnd-error').hide();\n tgtMarker.stop(true, true);\n tgtMarker.show();\n dt.effectAllowed = 'copy';\n if (self.state.query.isEmpty()) {\n $('.dnd-overlay-overwrite').hide();\n $('.dnd-overlay-drop').show('drop', {\n direction: 'down'\n }, 'fast');\n } else {\n $('.dnd-overlay-drop').hide();\n $('.dnd-overlay-overwrite').show('drop', {\n direction: 'down'\n }, 'fast');\n }\n }).on('dragleave', '.dnd-overlay', function (evt) {\n tgtMarker.hide();\n $('.dnd-overlay-drop').hide();\n $('.dnd-overlay-overwrite').hide();\n }).on('dragover', '.dnd-overlay', function (evt) {\n evt.originalEvent.dataTransfer.dropEffect = 'copy';\n evt.preventDefault();\n }).on('drop', '.dnd-overlay', function (evt) {\n evt.preventDefault();\n evt.stopPropagation();\n var indicator = $('#sequence-file');\n self.state.query.focus();\n var files = evt.originalEvent.dataTransfer.files;\n if (files.length > 1) {\n dndError('dnd-multi');\n return;\n }\n var file = files[0];\n if (file.size > 250 * 1048576) {\n dndError('dnd-large-file');\n return;\n }\n var reader = new FileReader();\n reader.onload = function (e) {\n var content = e.target.result;\n if (FASTA_FORMAT.test(content)) {\n indicator.text(file.name + ' ');\n self.state.query.value(content);\n tgtMarker.hide();\n } else {\n // apparently not FASTA\n dndError('dnd-format');\n }\n };\n reader.onerror = function (e) {\n // Couldn't read. Means dropped stuff wasn't FASTA file.\n dndError('dnd-format');\n };\n reader.readAsText(file);\n });\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"dnd-overlay\",\n style: {\n display: 'none'\n },\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"container dnd-overlay-container\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"row\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"div\", {\n className: \"col-md-offset-2 col-md-10\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"p\", {\n className: \"dnd-overlay-drop\",\n style: {\n display: 'none'\n },\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"i\", {\n className: \"fa fa-2x fa-file-o\"\n }), \"Drop query sequence file here\"]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"p\", {\n className: \"dnd-overlay-overwrite\",\n style: {\n display: 'none'\n },\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"i\", {\n className: \"fa fa-2x fa-file-o\"\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"span\", {\n style: {\n color: 'red'\n },\n children: \"Overwrite\"\n }), \" query sequence file\"]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(\"div\", {\n className: \"dnd-errors\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"dnd-error row\",\n id: \"dnd-multi-notification\",\n style: {\n display: 'none'\n },\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"col-md-6 col-md-offset-3\",\n children: \"One file at a time please.\"\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"dnd-error row\",\n id: \"dnd-large-file-notification\",\n style: {\n display: 'none'\n },\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"col-md-6 col-md-offset-3\",\n children: \"Too big a file. Can only do less than 250 MB. >_<\"\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"dnd-error row\",\n id: \"dnd-format-notification\",\n style: {\n display: 'none'\n },\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n className: \"col-md-6 col-md-offset-3\",\n children: \"Only FASTA files please.\"\n })\n })]\n })]\n })\n })\n })\n });\n }\n }]);\n return DnD;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n\n//# sourceURL=webpack://SequenceServer/./public/js/dnd.js?"); /***/ }),