diff --git a/delta_web/delta/frontend/src/components/csvFile/CsvFileTable.js b/delta_web/delta/frontend/src/components/csvFile/CsvFileTable.js
index ed8b1de1..3f3c658d 100644
--- a/delta_web/delta/frontend/src/components/csvFile/CsvFileTable.js
+++ b/delta_web/delta/frontend/src/components/csvFile/CsvFileTable.js
@@ -38,7 +38,7 @@ const CsvFileTable = (props) => {
}, []);
// probably should return some spinner
- if (csvFiles == null) return
;
+ if (csvFiles == null) return
return (
diff --git a/delta_web/delta/frontend/src/components/data_transfer/PublicCsvFileTable.js b/delta_web/delta/frontend/src/components/data_transfer/PublicCsvFileTable.js
index 8b20fecb..638724e8 100644
--- a/delta_web/delta/frontend/src/components/data_transfer/PublicCsvFileTable.js
+++ b/delta_web/delta/frontend/src/components/data_transfer/PublicCsvFileTable.js
@@ -83,7 +83,20 @@ const PublicCsvFileTable = (props) =>{
if(arrStrTagSearch.length > 0){
filteredCsvs.forEach((csvFile)=>{
const arrStrFileTags= csvFile.tags.map((strObj)=>strObj.text);
- const isSubset =arrStrTagSearch.every(searchTag=>arrStrFileTags.includes(searchTag));
+ var isSubset = false;
+ for(let strSearchTag of arrStrTagSearch){
+ for(let strFileTag of arrStrFileTags){
+ if(strFileTag.toLowerCase().includes(strSearchTag.toLowerCase())){
+ isSubset = true;
+ }
+ }
+ }
+ arrStrTagSearch.every((searchTag)=>
+ {
+
+ arrStrFileTags.includes(searchTag)
+ }
+ );
if(!isSubset){
// can safely remove file
filteredCsvs = filteredCsvs.filter((e)=>{return e != csvFile})
diff --git a/delta_web/delta/frontend/static/frontend/main.js b/delta_web/delta/frontend/static/frontend/main.js
index af33d145..939e47fc 100644
--- a/delta_web/delta/frontend/static/frontend/main.js
+++ b/delta_web/delta/frontend/static/frontend/main.js
@@ -948,7 +948,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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\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_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _actions_file__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../actions/file */ \"./src/actions/file.js\");\n/* harmony import */ var _DataCard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DataCard */ \"./src/components/data_transfer/DataCard.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/*\n###############################################################################\n\nDelta project\n\nAuthors:\nLexington Whalen (@lxaw)\nCarter Marlowe (@Cmarlowe132)\nVince Kolb-LugoVince (@vancevince) \nBlake Seekings (@j-blake-s)\nNaveen Chithan (@nchithan)\n\nFile name: PublicCsvFileTable.js\n\nBrief description: \n When users visit the data download page, they are able to search through\nall public files via name and tags and see that data. This file determines\nhow that searching is done and allows users to download files.\n\n###############################################################################\n*/\n\n\n\n\n\n\n/*\n*/\n\n\nvar PublicCsvFileTable = function PublicCsvFileTable(props) {\n /*\n Takes in:\n props.csvs: an array of csv objects\n */\n\n // the csv files\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(props.csvs),\n _useState2 = _slicedToArray(_useState, 2),\n csvFiles = _useState2[0],\n setCsvFiles = _useState2[1];\n // text being searched\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"),\n _useState4 = _slicedToArray(_useState3, 2),\n searchText = _useState4[0],\n setSearchText = _useState4[1];\n // tags being searched\n // note that this is an array\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState6 = _slicedToArray(_useState5, 2),\n searchTags = _useState6[0],\n setSearchTags = _useState6[1];\n // table data\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(props.csvs),\n _useState8 = _slicedToArray(_useState7, 2),\n tableCsvs = _useState8[0],\n setTableCsvs = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState10 = _slicedToArray(_useState9, 2),\n arrFilesToDownload = _useState10[0],\n setArrFilesToDownload = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0),\n _useState12 = _slicedToArray(_useState11, 2),\n numfilesSelected = _useState12[0],\n setNumFilesSelected = _useState12[1];\n var textMinLength = props.textMinLength != undefined ? props.textMinLength : 3;\n\n // called when checkbox is changed\n var onCheckChange = function onCheckChange(id) {\n var newFiles = arrFilesToDownload;\n if (!arrFilesToDownload.includes(id)) {\n // add\n newFiles.push(id);\n setArrFilesToDownload(newFiles);\n setNumFilesSelected(numfilesSelected + 1);\n } else {\n // remove item\n newFiles = newFiles.filter(function (item) {\n return item !== id;\n });\n setArrFilesToDownload(newFiles);\n setNumFilesSelected(numfilesSelected - 1);\n }\n };\n // when search thru table\n // via name AND tags\n var onSearchChange = function onSearchChange() {\n // get text for filename search\n var strFileNameSearch = $('#inputSearchFileName').val().toLowerCase();\n // get array for tag search\n var arrStrTagSearch = $(\"#inputSearchTags\").val().split(\" \").filter(function (e) {\n return e != \"\";\n }).map(function (e) {\n return e.toLowerCase();\n });\n\n // if not enough length, just reset the search\n // go thru tags\n\n var filteredCsvs = props.csvs;\n // search 1: tags\n // only perform operation of search on tags if there are tags\n if (arrStrTagSearch.length > 0) {\n filteredCsvs.forEach(function (csvFile) {\n var arrStrFileTags = csvFile.tags.map(function (strObj) {\n return strObj.text;\n });\n var isSubset = arrStrTagSearch.every(function (searchTag) {\n return arrStrFileTags.includes(searchTag);\n });\n if (!isSubset) {\n // can safely remove file\n filteredCsvs = filteredCsvs.filter(function (e) {\n return e != csvFile;\n });\n return;\n }\n });\n }\n // search 2: names\n if (strFileNameSearch.length >= textMinLength) {\n filteredCsvs.forEach(function (csvFile) {\n if (!csvFile.file_name.toLowerCase().includes(strFileNameSearch)) {\n filteredCsvs = filteredCsvs.filter(function (e) {\n return e != csvFile;\n });\n return;\n }\n });\n }\n // set the table data\n setSearchText(strFileNameSearch);\n setSearchTags(arrStrTagSearch);\n setTableCsvs(filteredCsvs);\n };\n var onSubmit = function onSubmit(e) {\n e.preventDefault();\n arrFilesToDownload.forEach(function (id) {\n props.downloadCsvFile(id);\n });\n };\n if (csvFiles == null) return;\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n \"data-testid\": \"public_csv_file_table-1\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"form\", {\n onSubmit: onSubmit,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n className: \"input-group mb-3\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n className: \"input-group-prepend\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"span\", {\n className: \"input-group-text\",\n children: \"File Name\"\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"input\", {\n id: \"inputSearchFileName\",\n type: \"text\",\n className: \"form-control\",\n placeholder: \"Enter at least \".concat(textMinLength, \" characters\"),\n onChange: onSearchChange\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n className: \"input-group mb-3\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n className: \"input-group-prepend\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"span\", {\n className: \"input-group-text\",\n children: \"Tags\"\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"input\", {\n id: \"inputSearchTags\",\n type: \"text\",\n className: \"form-control\",\n placeholder: \"Enter tags to search for, separated by spaces. For instance, you could enter \\\"cat dog\\\" to see files with tags of \\\"cat\\\" and \\\"dog\\\"\",\n onChange: onSearchChange\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"p\", {\n children: [\"Number of files selected for download: \", numfilesSelected]\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n style: {\n \"height\": \"20rem\",\n \"overflow\": \"auto\"\n },\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n className: \"row\",\n children: tableCsvs.map(function (item, index) {\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_DataCard__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n author: item.author_username,\n date: item.formatted_date,\n rating: item.avg_rating,\n title: item.file_name,\n link: \"/csvs/\".concat(item.id),\n linkText: \"See file\",\n text: item.description,\n id: item.id,\n parentOnCheckChange: onCheckChange,\n tags: item.tags,\n downloadCount: item.download_count\n }, item.id);\n })\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"br\", {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"button\", {\n className: \"btn btn-sm btn-success mb-2\",\n children: \"Download\"\n })]\n })\n });\n};\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n auth: state.auth\n };\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,react_redux__WEBPACK_IMPORTED_MODULE_1__.connect)(mapStateToProps, {\n downloadCsvFile: _actions_file__WEBPACK_IMPORTED_MODULE_2__.downloadCsvFile\n})(PublicCsvFileTable));\n\n//# sourceURL=webpack://delta_web/./src/components/data_transfer/PublicCsvFileTable.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\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_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _actions_file__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../actions/file */ \"./src/actions/file.js\");\n/* harmony import */ var _DataCard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DataCard */ \"./src/components/data_transfer/DataCard.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/*\n###############################################################################\n\nDelta project\n\nAuthors:\nLexington Whalen (@lxaw)\nCarter Marlowe (@Cmarlowe132)\nVince Kolb-LugoVince (@vancevince) \nBlake Seekings (@j-blake-s)\nNaveen Chithan (@nchithan)\n\nFile name: PublicCsvFileTable.js\n\nBrief description: \n When users visit the data download page, they are able to search through\nall public files via name and tags and see that data. This file determines\nhow that searching is done and allows users to download files.\n\n###############################################################################\n*/\n\n\n\n\n\n\n/*\n*/\n\n\nvar PublicCsvFileTable = function PublicCsvFileTable(props) {\n /*\n Takes in:\n props.csvs: an array of csv objects\n */\n\n // the csv files\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(props.csvs),\n _useState2 = _slicedToArray(_useState, 2),\n csvFiles = _useState2[0],\n setCsvFiles = _useState2[1];\n // text being searched\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"),\n _useState4 = _slicedToArray(_useState3, 2),\n searchText = _useState4[0],\n setSearchText = _useState4[1];\n // tags being searched\n // note that this is an array\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState6 = _slicedToArray(_useState5, 2),\n searchTags = _useState6[0],\n setSearchTags = _useState6[1];\n // table data\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(props.csvs),\n _useState8 = _slicedToArray(_useState7, 2),\n tableCsvs = _useState8[0],\n setTableCsvs = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState10 = _slicedToArray(_useState9, 2),\n arrFilesToDownload = _useState10[0],\n setArrFilesToDownload = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0),\n _useState12 = _slicedToArray(_useState11, 2),\n numfilesSelected = _useState12[0],\n setNumFilesSelected = _useState12[1];\n var textMinLength = props.textMinLength != undefined ? props.textMinLength : 3;\n\n // called when checkbox is changed\n var onCheckChange = function onCheckChange(id) {\n var newFiles = arrFilesToDownload;\n if (!arrFilesToDownload.includes(id)) {\n // add\n newFiles.push(id);\n setArrFilesToDownload(newFiles);\n setNumFilesSelected(numfilesSelected + 1);\n } else {\n // remove item\n newFiles = newFiles.filter(function (item) {\n return item !== id;\n });\n setArrFilesToDownload(newFiles);\n setNumFilesSelected(numfilesSelected - 1);\n }\n };\n // when search thru table\n // via name AND tags\n var onSearchChange = function onSearchChange() {\n // get text for filename search\n var strFileNameSearch = $('#inputSearchFileName').val().toLowerCase();\n // get array for tag search\n var arrStrTagSearch = $(\"#inputSearchTags\").val().split(\" \").filter(function (e) {\n return e != \"\";\n }).map(function (e) {\n return e.toLowerCase();\n });\n\n // if not enough length, just reset the search\n // go thru tags\n\n var filteredCsvs = props.csvs;\n // search 1: tags\n // only perform operation of search on tags if there are tags\n if (arrStrTagSearch.length > 0) {\n filteredCsvs.forEach(function (csvFile) {\n var arrStrFileTags = csvFile.tags.map(function (strObj) {\n return strObj.text;\n });\n var isSubset = false;\n var _iterator = _createForOfIteratorHelper(arrStrTagSearch),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var strSearchTag = _step.value;\n var _iterator2 = _createForOfIteratorHelper(arrStrFileTags),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var strFileTag = _step2.value;\n if (strFileTag.toLowerCase().includes(strSearchTag.toLowerCase())) {\n isSubset = true;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n arrStrTagSearch.every(function (searchTag) {\n arrStrFileTags.includes(searchTag);\n });\n if (!isSubset) {\n // can safely remove file\n filteredCsvs = filteredCsvs.filter(function (e) {\n return e != csvFile;\n });\n return;\n }\n });\n }\n // search 2: names\n if (strFileNameSearch.length >= textMinLength) {\n filteredCsvs.forEach(function (csvFile) {\n if (!csvFile.file_name.toLowerCase().includes(strFileNameSearch)) {\n filteredCsvs = filteredCsvs.filter(function (e) {\n return e != csvFile;\n });\n return;\n }\n });\n }\n // set the table data\n setSearchText(strFileNameSearch);\n setSearchTags(arrStrTagSearch);\n setTableCsvs(filteredCsvs);\n };\n var onSubmit = function onSubmit(e) {\n e.preventDefault();\n arrFilesToDownload.forEach(function (id) {\n props.downloadCsvFile(id);\n });\n };\n if (csvFiles == null) return;\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n \"data-testid\": \"public_csv_file_table-1\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"form\", {\n onSubmit: onSubmit,\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n className: \"input-group mb-3\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n className: \"input-group-prepend\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"span\", {\n className: \"input-group-text\",\n children: \"File Name\"\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"input\", {\n id: \"inputSearchFileName\",\n type: \"text\",\n className: \"form-control\",\n placeholder: \"Enter at least \".concat(textMinLength, \" characters\"),\n onChange: onSearchChange\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"div\", {\n className: \"input-group mb-3\",\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n className: \"input-group-prepend\",\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"span\", {\n className: \"input-group-text\",\n children: \"Tags\"\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"input\", {\n id: \"inputSearchTags\",\n type: \"text\",\n className: \"form-control\",\n placeholder: \"Enter tags to search for, separated by spaces. For instance, you could enter \\\"cat dog\\\" to see files with tags of \\\"cat\\\" and \\\"dog\\\"\",\n onChange: onSearchChange\n })]\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(\"p\", {\n children: [\"Number of files selected for download: \", numfilesSelected]\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n style: {\n \"height\": \"20rem\",\n \"overflow\": \"auto\"\n },\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"div\", {\n className: \"row\",\n children: tableCsvs.map(function (item, index) {\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_DataCard__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n author: item.author_username,\n date: item.formatted_date,\n rating: item.avg_rating,\n title: item.file_name,\n link: \"/csvs/\".concat(item.id),\n linkText: \"See file\",\n text: item.description,\n id: item.id,\n parentOnCheckChange: onCheckChange,\n tags: item.tags,\n downloadCount: item.download_count\n }, item.id);\n })\n })\n }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"br\", {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(\"button\", {\n className: \"btn btn-sm btn-success mb-2\",\n children: \"Download\"\n })]\n })\n });\n};\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n auth: state.auth\n };\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,react_redux__WEBPACK_IMPORTED_MODULE_1__.connect)(mapStateToProps, {\n downloadCsvFile: _actions_file__WEBPACK_IMPORTED_MODULE_2__.downloadCsvFile\n})(PublicCsvFileTable));\n\n//# sourceURL=webpack://delta_web/./src/components/data_transfer/PublicCsvFileTable.js?");
/***/ }),