@abi-software/map-side-bar 1.1.8 → 1.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -201
- package/README.md +53 -53
- package/babel.config.js +14 -14
- package/dist/map-side-bar.common.js +164 -161
- package/dist/map-side-bar.common.js.map +1 -1
- package/dist/map-side-bar.css +1 -1
- package/dist/map-side-bar.umd.js +164 -161
- package/dist/map-side-bar.umd.js.map +1 -1
- package/dist/map-side-bar.umd.min.js +1 -1
- package/dist/map-side-bar.umd.min.js.map +1 -1
- package/package-lock.json +13669 -13548
- package/package.json +64 -64
- package/public/index.html +17 -17
- package/src/App.vue +112 -112
- package/src/algolia/algolia.js +99 -98
- package/src/algolia/utils.js +51 -51
- package/src/components/Cascader.vue +49 -49
- package/src/components/ContextCard.vue +95 -95
- package/src/components/DatasetCard.vue +372 -372
- package/src/components/EventBus.js +3 -3
- package/src/components/SearchFilters.vue +443 -442
- package/src/components/SideBar.vue +239 -239
- package/src/components/SidebarContent.vue +439 -440
- package/src/components/Tabs.vue +78 -78
- package/src/components/index.js +8 -8
- package/src/components/scaffold-meta-map.js +29 -29
- package/src/components/species-map.js +8 -8
- package/src/main.js +8 -8
- package/static.json +6 -6
- package/vue.config.js +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://map-side-bar/webpack/universalModuleDefinition","webpack://map-side-bar/webpack/bootstrap","webpack://map-side-bar/external \"element-ui/lib/pagination\"","webpack://map-side-bar/external \"core-js/modules/es.symbol.iterator\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/pagination.css\"","webpack://map-side-bar/external \"core-js/modules/es.parse-int\"","webpack://map-side-bar/external \"element-ui/lib/select\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/select.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.for-each\"","webpack://map-side-bar/./src/components/Tabs.vue?c191","webpack://map-side-bar/external \"core-js/modules/es.array.concat\"","webpack://map-side-bar/external \"core-js/modules/web.dom-collections.iterator\"","webpack://map-side-bar/external \"core-js/modules/es.object.keys\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/link.css\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/button.css\"","webpack://map-side-bar/external \"core-js/modules/web.url\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/loading.css\"","webpack://map-side-bar/./src/components/ContextCard.vue?c61d","webpack://map-side-bar/external \"element-ui/lib/drawer\"","webpack://map-side-bar/./src/components/SidebarContent.vue?f014","webpack://map-side-bar/external \"@abi-software/svg-sprite\"","webpack://map-side-bar/external \"core-js/modules/es.object.get-own-property-descriptors\"","webpack://map-side-bar/external \"core-js/modules/es.string.split\"","webpack://map-side-bar/external \"core-js/modules/es.set\"","webpack://map-side-bar/external \"core-js/modules/es.array.filter\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/card.css\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/drawer.css\"","webpack://map-side-bar/external \"core-js/modules/es.symbol.description\"","webpack://map-side-bar/external \"core-js/modules/es.regexp.exec\"","webpack://map-side-bar/external \"element-ui/lib/button\"","webpack://map-side-bar/external \"core-js/modules/es.regexp.to-string\"","webpack://map-side-bar/external \"core-js/modules/es.symbol\"","webpack://map-side-bar/external \"core-js/modules/es.array.slice\"","webpack://map-side-bar/external \"core-js/modules/es.object.get-own-property-descriptor\"","webpack://map-side-bar/external \"element-ui/lib/cascader\"","webpack://map-side-bar/external \"element-ui/lib/locale/lang/en\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/cascader.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.sort\"","webpack://map-side-bar/external \"core-js/modules/es.number.constructor\"","webpack://map-side-bar/external \"regenerator-runtime/runtime\"","webpack://map-side-bar/external \"core-js/modules/es.array.splice\"","webpack://map-side-bar/external \"element-ui/lib/link\"","webpack://map-side-bar/external \"element-ui/lib/locale\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/option.css\"","webpack://map-side-bar/external \"core-js/modules/es.promise\"","webpack://map-side-bar/external \"core-js/modules/es.object.to-string\"","webpack://map-side-bar/external \"algoliasearch\"","webpack://map-side-bar/external \"vue\"","webpack://map-side-bar/external \"core-js/modules/es.array.iterator\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/icon.css\"","webpack://map-side-bar/external \"core-js/modules/es.string.iterator\"","webpack://map-side-bar/external \"core-js/modules/es.map\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/base.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.flat\"","webpack://map-side-bar/./assets/missing-image.svg","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/input.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.includes\"","webpack://map-side-bar/external \"element-ui/lib/loading\"","webpack://map-side-bar/external \"element-ui/lib/card\"","webpack://map-side-bar/external \"element-ui/lib/icon\"","webpack://map-side-bar/./src/components/SearchFilters.vue?f463","webpack://map-side-bar/./src/components/DatasetCard.vue?c105","webpack://map-side-bar/./src/components/SideBar.vue?a3c3","webpack://map-side-bar/external \"core-js/modules/es.function.name\"","webpack://map-side-bar/external \"core-js/modules/web.dom-collections.for-each\"","webpack://map-side-bar/external \"core-js/modules/es.string.search\"","webpack://map-side-bar/external \"core-js/modules/es.string.replace\"","webpack://map-side-bar/external \"element-ui/lib/option\"","webpack://map-side-bar/external \"core-js/modules/es.array.last-index-of\"","webpack://map-side-bar/external \"current-script-polyfill\"","webpack://map-side-bar/external \"core-js/modules/es.array.from\"","webpack://map-side-bar/external \"element-ui/lib/input\"","webpack://map-side-bar/external \"core-js/modules/es.object.entries\"","webpack://map-side-bar/external \"core-js/modules/es.array.unscopables.flat\"","webpack://map-side-bar/external \"core-js/modules/es.array.map\"","webpack://map-side-bar/external \"core-js/modules/es.promise.finally\"","webpack://map-side-bar/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://map-side-bar/./src/components/SideBar.vue?cd83","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://map-side-bar/./src/components/SidebarContent.vue?5264","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://map-side-bar/./src/components/SearchFilters.vue?992f","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://map-side-bar/./src/components/Cascader.vue","webpack://map-side-bar/src/components/Cascader.vue","webpack://map-side-bar/./src/components/Cascader.vue?9729","webpack://map-side-bar/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://map-side-bar/./src/components/species-map.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://map-side-bar/./src/algolia/algolia.js","webpack://map-side-bar/./src/algolia/utils.js","webpack://map-side-bar/src/components/SearchFilters.vue","webpack://map-side-bar/./src/components/SearchFilters.vue?8079","webpack://map-side-bar/./src/components/SearchFilters.vue","webpack://map-side-bar/./src/components/DatasetCard.vue?7230","webpack://map-side-bar/./src/components/EventBus.js","webpack://map-side-bar/./src/components/scaffold-meta-map.js","webpack://map-side-bar/src/components/DatasetCard.vue","webpack://map-side-bar/./src/components/DatasetCard.vue?d021","webpack://map-side-bar/./src/components/DatasetCard.vue","webpack://map-side-bar/./src/components/ContextCard.vue?a1ce","webpack://map-side-bar/src/components/ContextCard.vue","webpack://map-side-bar/./src/components/ContextCard.vue?667e","webpack://map-side-bar/./src/components/ContextCard.vue","webpack://map-side-bar/src/components/SidebarContent.vue","webpack://map-side-bar/./src/components/SidebarContent.vue?7e01","webpack://map-side-bar/./src/components/SidebarContent.vue","webpack://map-side-bar/./src/components/Tabs.vue?36ff","webpack://map-side-bar/src/components/Tabs.vue","webpack://map-side-bar/./src/components/Tabs.vue?3d38","webpack://map-side-bar/./src/components/Tabs.vue","webpack://map-side-bar/src/components/SideBar.vue","webpack://map-side-bar/./src/components/SideBar.vue?b259","webpack://map-side-bar/./src/components/SideBar.vue","webpack://map-side-bar/external \"core-js/modules/es.string.includes\""],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","window","document","currentScript","src","match","render","_vm","_h","$createElement","_c","_self","ref","drawerOpen","_e","staticClass","on","toggleDrawer","attrs","$event","close","tabs","length","activeId","tabClicked","_l","tab","directives","rawName","id","expression","refInFor","contextCard","envVars","searchChanged","staticRenderFns","_defineProperty","obj","configurable","writable","bodyStyle","slot","contextCardEntry","clearSearchClicked","nativeOn","searchEvent","model","callback","$$v","searchInput","_v","filterEntry","filterUpdate","numberPerPageUpdate","filtersLoading","results","loadingCards","sciCrunchError","_s","page","numberPerPage","numberOfHits","pageChange","_arrayWithoutHoles","arr","Array","isArray","arr2","_iterableToArray","iter","iterator","toString","from","_nonIterableSpread","TypeError","_toConsumableArray","arrayWithoutHoles","iterableToArray","nonIterableSpread","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","done","Promise","then","_asyncToGenerator","fn","args","arguments","apply","err","undefined","options","props","cascadeEvent","cascadeExpandChange","tagsChangedCallback","cascadeSelected","numberShownChanged","numberShown","item","numberOfResultsText","_arrayWithHoles","_nonIterableRest","_toArray","arrayWithHoles","nonIterableRest","extends","methods","computePresentTags","customNodes","tags","push","genTag","first","restCount","collapseTags","text","closable","rest","forEach","checkedNodes","presentTags","$emit","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","component","_classCallCheck","instance","Constructor","_defineProperties","target","descriptor","_createClass","protoProps","staticProps","AlgoliaClient","algoliaId","algoliaKey","PENNSIEVE_API_LOCATION","client","algoliasearch","ALGOLIA_INDEX","index","initIndex","propPathMapping","map","Map","entries","facetPropPaths","keys","facetData","facetId","search","sortFacetValuesBy","facets","response","facetPropPath","children","responseFacets","responseFacetChildren","facet","label","discoverId","fetch","json","dataset","version","doi","discoverIds","promiseList","_discoverAllDois","all","values","flat","filter","query","hitsperPage","hitsPerPage","filters","searchData","items","hits","total","nbHits","pennsieve","identifier","facetPropPathMapping","getFilters","selectedFacetArray","f","removeShowAllFacets","facetsToOr","substring","lastIndexOf","facetArray","txt","charAt","toUpperCase","slice","capitalise","components","CustomCascader","MapSvgIcon","MapSvgSpriteColor","entry","type","default","data","cascaderIsReady","previousShowAllChecked","species","gender","organ","datasets","showFilters","showFiltersText","numberDatasetsShown","computed","createCascaderItemValue","term","populateCascader","event","showAllEventModifier","setCascader","makeCascadeLabelsClickable","hasShowAll","facetMaps","showAll","splice","modifiedEvent","sort","a","b","__expandItem__","parseInt","updatePreviousShowAllChecked","element","toLowerCase","includes","filterFacets","addFilter","initiateSearch","checkShowAllBoxes","$nextTick","mounted","algoliaClient","class","expanded","thumbnail","openDataset","cardClicked","contributors","publishDate","publishYear","samples","simulation","openScaffold","openPlot","openRepository","openSimulation","cardOverflow","expand","EventBus","Vue","77","meta_file","title","description","bannerImage","image","76","32","string","replace","dataLocation","hasCSVFile","lastName","numberSamples","numberSubjects","organs","split","open","additionalLinks","el","xmlhttp","apiLocation","setRequestHeader","onreadystatechange","readyState","status","url","JSON","parse","responseText","uri","send","stringify","isSedmlResource","resource","getScaffoldPath","path","getFileFromPath","isOverflown","clientHeight","scrollHeight","splitDOI","getBanner","fullName","$refs","card","updated","watch","showDetails","padding","display","width","staticStyle","handleErrors","initial_state","lastSearch","pageModel","start","hasSearched","visible","Boolean","isDrawer","firstSearch","String","flex","openSearch","resetPageNavigation","searchAlgolia","filtersRef","keyCode","MouseEvent","val","searchSciCrunch","disableCards","callSciCrunch","API_LOCATION","params","content","scroll","style","resultsProcessing","sampleSize","subjectSize","timestamp","datasetId","organisms","csvFiles","scaffolds","s3uri","createfilterParams","append","e","fullEndpoint","console","log","created","searchEndpoint","highlightText","titleClicked","tabTitles","Number","openAtStart","openNeuronSearch"],"mappings":"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","file":"map-side-bar.umd.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"map-side-bar\"] = factory();\n\telse\n\t\troot[\"map-side-bar\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fae3\");\n","module.exports = require(\"element-ui/lib/pagination\");","module.exports = require(\"core-js/modules/es.symbol.iterator\");","module.exports = require(\"element-ui/lib/theme-chalk/pagination.css\");","module.exports = require(\"core-js/modules/es.parse-int\");","module.exports = require(\"element-ui/lib/select\");","module.exports = require(\"element-ui/lib/theme-chalk/select.css\");","module.exports = require(\"core-js/modules/es.array.for-each\");","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=style&index=0&id=5d1b9484&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=style&index=0&id=5d1b9484&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/es.array.concat\");","module.exports = require(\"core-js/modules/web.dom-collections.iterator\");","module.exports = require(\"core-js/modules/es.object.keys\");","module.exports = require(\"element-ui/lib/theme-chalk/link.css\");","module.exports = require(\"element-ui/lib/theme-chalk/button.css\");","module.exports = require(\"core-js/modules/web.url\");","module.exports = require(\"element-ui/lib/theme-chalk/loading.css\");","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextCard.vue?vue&type=style&index=0&id=17e861eb&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextCard.vue?vue&type=style&index=0&id=17e861eb&scoped=true&lang=css&\"","module.exports = require(\"element-ui/lib/drawer\");","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarContent.vue?vue&type=style&index=0&id=44ece0e4&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarContent.vue?vue&type=style&index=0&id=44ece0e4&scoped=true&lang=css&\"","module.exports = require(\"@abi-software/svg-sprite\");","module.exports = require(\"core-js/modules/es.object.get-own-property-descriptors\");","module.exports = require(\"core-js/modules/es.string.split\");","module.exports = require(\"core-js/modules/es.set\");","module.exports = require(\"core-js/modules/es.array.filter\");","module.exports = require(\"element-ui/lib/theme-chalk/card.css\");","module.exports = require(\"element-ui/lib/theme-chalk/drawer.css\");","module.exports = require(\"core-js/modules/es.symbol.description\");","module.exports = require(\"core-js/modules/es.regexp.exec\");","module.exports = require(\"element-ui/lib/button\");","module.exports = require(\"core-js/modules/es.regexp.to-string\");","module.exports = require(\"core-js/modules/es.symbol\");","module.exports = require(\"core-js/modules/es.array.slice\");","module.exports = require(\"core-js/modules/es.object.get-own-property-descriptor\");","module.exports = require(\"element-ui/lib/cascader\");","module.exports = require(\"element-ui/lib/locale/lang/en\");","module.exports = require(\"element-ui/lib/theme-chalk/cascader.css\");","module.exports = require(\"core-js/modules/es.array.sort\");","module.exports = require(\"core-js/modules/es.number.constructor\");","module.exports = require(\"regenerator-runtime/runtime\");","module.exports = require(\"core-js/modules/es.array.splice\");","module.exports = require(\"element-ui/lib/link\");","module.exports = require(\"element-ui/lib/locale\");","module.exports = require(\"element-ui/lib/theme-chalk/option.css\");","module.exports = require(\"core-js/modules/es.promise\");","module.exports = require(\"core-js/modules/es.object.to-string\");","module.exports = require(\"algoliasearch\");","module.exports = require(\"vue\");","module.exports = require(\"core-js/modules/es.array.iterator\");","module.exports = require(\"element-ui/lib/theme-chalk/icon.css\");","module.exports = require(\"core-js/modules/es.string.iterator\");","module.exports = require(\"core-js/modules/es.map\");","module.exports = require(\"element-ui/lib/theme-chalk/base.css\");","module.exports = require(\"core-js/modules/es.array.flat\");","module.exports = __webpack_public_path__ + \"img/missing-image.1878d8b8.svg\";","module.exports = require(\"element-ui/lib/theme-chalk/input.css\");","module.exports = require(\"core-js/modules/es.array.includes\");","module.exports = require(\"element-ui/lib/loading\");","module.exports = require(\"element-ui/lib/card\");","module.exports = require(\"element-ui/lib/icon\");","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilters.vue?vue&type=style&index=0&id=ee150fe2&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilters.vue?vue&type=style&index=0&id=ee150fe2&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DatasetCard.vue?vue&type=style&index=0&id=7fd04450&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DatasetCard.vue?vue&type=style&index=0&id=7fd04450&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=style&index=0&id=3d831a8e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=style&index=0&id=3d831a8e&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/es.function.name\");","module.exports = require(\"core-js/modules/web.dom-collections.for-each\");","module.exports = require(\"core-js/modules/es.string.search\");","module.exports = require(\"core-js/modules/es.string.replace\");","module.exports = require(\"element-ui/lib/option\");","module.exports = require(\"core-js/modules/es.array.last-index-of\");","module.exports = require(\"current-script-polyfill\");","module.exports = require(\"core-js/modules/es.array.from\");","module.exports = require(\"element-ui/lib/input\");","module.exports = require(\"core-js/modules/es.object.entries\");","module.exports = require(\"core-js/modules/es.array.unscopables.flat\");","module.exports = require(\"core-js/modules/es.array.map\");","module.exports = require(\"core-js/modules/es.promise.finally\");","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n require('current-script-polyfill')\n }\n\n var i\n if ((i = window.document.currentScript) && (i = i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n __webpack_public_path__ = i[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\"},[(!_vm.drawerOpen)?_c('div',{staticClass:\"open-tab\",on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-left\"})]):_vm._e(),_c('el-drawer',{staticClass:\"side-bar\",attrs:{\"custom-class\":\"my-drawer\",\"visible\":_vm.drawerOpen,\"appendToBody\":false,\"modal-append-to-body\":false,\"size\":\"550\",\"with-header\":false,\"wrapperClosable\":false,\"modal\":false},on:{\"update:visible\":function($event){_vm.drawerOpen=$event}}},[_c('div',{staticClass:\"box-card\"},[(_vm.drawerOpen)?_c('div',{staticClass:\"close-tab\",on:{\"click\":_vm.close}},[_c('i',{staticClass:\"el-icon-arrow-right\"})]):_vm._e(),_c('div',{staticClass:\"sidebar-container\"},[(_vm.tabs.length > 1)?_c('tabs',{attrs:{\"tabTitles\":_vm.tabs,\"activeId\":_vm.activeId},on:{\"titleClicked\":_vm.tabClicked}}):_vm._e(),_vm._l((_vm.tabs),function(tab){return [_c('sidebar-content',{directives:[{name:\"show\",rawName:\"v-show\",value:(tab.id===_vm.activeId),expression:\"tab.id===activeId\"}],key:tab.id,ref:tab.id,refInFor:true,staticClass:\"sidebar-content-container\",attrs:{\"contextCardEntry\":tab.contextCard,\"envVars\":_vm.envVars},on:{\"search-changed\":function($event){return _vm.searchChanged(tab.id, $event)}}})]})],2)])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-card',{staticClass:\"content-card\",attrs:{\"body-style\":_vm.bodyStyle}},[_c('div',{staticClass:\"header\",attrs:{\"slot\":\"header\"},slot:\"header\"},[(_vm.contextCardEntry)?_c('context-card',{attrs:{\"entry\":_vm.contextCardEntry}}):_vm._e(),_c('el-input',{staticClass:\"search-input\",attrs:{\"placeholder\":\"Search\",\"clearable\":\"\"},on:{\"clear\":_vm.clearSearchClicked},nativeOn:{\"keyup\":function($event){return _vm.searchEvent($event)}},model:{value:(_vm.searchInput),callback:function ($$v) {_vm.searchInput=$$v},expression:\"searchInput\"}}),_c('el-button',{staticClass:\"button\",on:{\"click\":_vm.searchEvent}},[_vm._v(\"Search\")])],1),_c('SearchFilters',{ref:\"filtersRef\",staticClass:\"filters\",attrs:{\"entry\":_vm.filterEntry,\"envVars\":_vm.envVars},on:{\"filterResults\":_vm.filterUpdate,\"numberPerPage\":_vm.numberPerPageUpdate,\"loading\":_vm.filtersLoading}}),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loadingCards),expression:\"loadingCards\"}],ref:\"content\",staticClass:\"content scrollbar\"},[(_vm.results.length === 0 && !_vm.loadingCards && !_vm.sciCrunchError)?_c('div',{staticClass:\"error-feedback\"},[_vm._v(\"No results found - Please change your search / filter criteria.\")]):_vm._e(),(_vm.sciCrunchError)?_c('div',{staticClass:\"error-feedback\"},[_vm._v(_vm._s(_vm.sciCrunchError))]):_vm._e(),_vm._l((_vm.results),function(o){return _c('div',{key:o.id,staticClass:\"step-item\"},[_c('DatasetCard',{attrs:{\"entry\":o,\"envVars\":_vm.envVars}})],1)}),_c('el-pagination',{staticClass:\"pagination\",attrs:{\"current-page\":_vm.page,\"hide-on-single-page\":\"\",\"large\":\"\",\"layout\":\"prev, pager, next\",\"page-size\":_vm.numberPerPage,\"total\":_vm.numberOfHits},on:{\"update:currentPage\":function($event){_vm.page=$event},\"update:current-page\":function($event){_vm.page=$event},\"current-change\":_vm.pageChange}})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"filters\"},[_c('map-svg-sprite-color'),_c('transition',{attrs:{\"name\":\"el-zoom-in-top\"}},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showFilters),expression:\"showFilters\"}],staticClass:\"search-filters transition-box\"},[_c('custom-cascader',{ref:\"cascader\",staticClass:\"cascader\",attrs:{\"placeholder\":\"\",\"collapse-tags\":true,\"options\":_vm.options,\"props\":_vm.props,\"show-all-levels\":false,\"append-to-body\":false},on:{\"change\":function($event){return _vm.cascadeEvent($event)},\"expand-change\":_vm.cascadeExpandChange,\"tags-changed\":_vm.tagsChangedCallback},model:{value:(_vm.cascadeSelected),callback:function ($$v) {_vm.cascadeSelected=$$v},expression:\"cascadeSelected\"}}),(_vm.showFiltersText)?_c('div',{staticClass:\"filter-default-value\"},[_c('map-svg-icon',{staticClass:\"filter-icon-inside\",attrs:{\"icon\":\"noun-filter\"}}),_vm._v(\"Apply Filters \")],1):_vm._e()],1)]),_c('el-select',{staticClass:\"number-shown-select\",attrs:{\"placeholder\":\"10\"},on:{\"change\":function($event){return _vm.numberShownChanged($event)}},model:{value:(_vm.numberShown),callback:function ($$v) {_vm.numberShown=$$v},expression:\"numberShown\"}},_vm._l((_vm.numberDatasetsShown),function(item){return _c('el-option',{key:item,attrs:{\"label\":item,\"value\":item}})}),1),_c('span',{staticClass:\"dataset-results-feedback\"},[_vm._v(_vm._s(this.numberOfResultsText))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || nonIterableRest();\n}","var render, staticRenderFns\nimport script from \"./Cascader.vue?vue&type=script&lang=js&\"\nexport * from \"./Cascader.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<script>\n/* eslint-disable no-alert, no-console */\nimport { Cascader } from \"element-ui\";\n\nexport default {\n name: 'CustomCascader',\n extends: Cascader,\n methods:{\n //Modify this internal function to disable Show all tags\n computePresentTags() {\n const { isDisabled, leafOnly, showAllLevels, separator, collapseTags } = this;\n const checkedNodes = this.getCheckedNodes(leafOnly);\n const tags = [];\n const genTag = node => ({\n node,\n key: node.uid,\n text: node.getText(showAllLevels, separator),\n hitState: false,\n closable: !isDisabled && !node.isDisabled\n });\n let customNodes = checkedNodes.filter(node =>\n {\n return !(node.getText(showAllLevels, separator).includes(\"Show all\"));\n }\n );\n if (customNodes.length) {\n const [first, ...rest] = customNodes;\n const restCount = rest.length;\n tags.push(genTag(first));\n if (restCount) {\n if (collapseTags) {\n tags.push({\n key: -1,\n text: `+ ${restCount}`,\n closable: false\n });\n } else {\n rest.forEach(node => tags.push(genTag(node)));\n }\n }\n }\n this.checkedNodes = checkedNodes;\n this.presentTags = tags;\n this.$emit(\"tags-changed\", this.presentTags);\n }\n }\n}\n\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cascader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cascader.vue?vue&type=script&lang=js&\"","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","export default {\n 'homo sapiens': 'Human',\n 'rattus norvegicus': 'Rat',\n 'mus musculus': 'Mouse',\n 'sus scrofa domesticus': 'Pig',\n 'sus scrofa': 'Boar',\n 'felis catus': 'Cat'\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* eslint-disable no-alert, no-console */\nimport algoliasearch from 'algoliasearch'\n\n// export `createAlgoliaClient` to use it in page components\nexport class AlgoliaClient {\n constructor(algoliaId, algoliaKey, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {\n this.client = algoliasearch(\n algoliaId,\n algoliaKey\n )\n this.PENNSIEVE_API_LOCATION = PENNSIEVE_API_LOCATION\n }\n initIndex(ALGOLIA_INDEX) {\n this.index = this.client.initIndex(ALGOLIA_INDEX);\n }\n\n getAlgoliaFacets (propPathMapping) {\n const map = new Map(Object.entries(propPathMapping));\n const facetPropPaths = Array.from(map.keys() );\n let facetData = []\n let facetId = 0\n return this.index\n .search('', {\n sortFacetValuesBy: 'alpha',\n facets: facetPropPaths\n })\n .then(response => {\n facetPropPaths.map((facetPropPath) => {\n var children = []\n const responseFacets = response.facets\n if (responseFacets === undefined) {return}\n const responseFacetChildren =\n responseFacets[facetPropPath] == undefined\n ? {}\n : responseFacets[facetPropPath]\n Object.keys(responseFacetChildren).map(facet => {\n children.push({\n label: facet,\n id: facetId++,\n facetPropPath: facetPropPath\n })\n })\n if (children.length > 0) {\n facetData.push({\n label: map.get(facetPropPath),\n id: facetId++,\n children: children,\n key: facetPropPath\n })\n }\n })\n return facetData\n })\n }\n \n // Returns all DOIs of all versions for a given discover dataset\n _discoverAllDois (discoverId, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {\n return new Promise(resolve => {\n fetch(`${PENNSIEVE_API_LOCATION}/discover/datasets/${discoverId}/versions`).then(r=>r.json()).then(dataset => {\n resolve(dataset.map(version => version.doi))\n })\n })\n }\n \n // Get all dois given a list of discoverIds\n _expandDois (discoverIds, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {\n return new Promise(resolve => {\n let promiseList = discoverIds.map(discoverId => this._discoverAllDois(discoverId, PENNSIEVE_API_LOCATION))\n Promise.all(promiseList).then((values) => {\n resolve(values.flat())\n });\n })\n }\n \n /**\n * Get Search results\n * This is using fetch from the Algolia API\n */\n search (filter, query='', hitsperPage=10, page=1) {\n return new Promise(resolve => {\n this.index\n .search(query, {\n facets:['*'],\n hitsPerPage: hitsperPage,\n page: page-1,\n filters: filter\n })\n .then(response => {\n let searchData = {\n items: response.hits,\n total: response.nbHits,\n discoverIds: response.hits.map(r=>r.pennsieve.identifier)\n }\n resolve(searchData)\n })\n })\n }\n}\n","/* eslint-disable no-alert, no-console */\n\n// Mapping between display categories and their Algolia index property path\n// Used for populating the Dataset Search Results facet menu dynamically\nexport const facetPropPathMapping = {\n 'anatomy.organ.name' : 'Anatomical Structure',\n 'organisms.primary.species.name' : 'Species',\n 'item.modalities.keyword' : 'Experimental Approach',\n 'attributes.subject.sex.value' : 'Sex',\n 'attributes.subject.ageCategory.value' : 'Age Categories',\n}\n\n/* Returns filter for searching algolia. All facets of the same category are joined with OR,\n * and each of those results is then joined with an AND.\n * i.e. (color:blue OR color:red) AND (shape:circle OR shape:red) */\nexport function getFilters(selectedFacetArray=undefined) {\n \n // return all datasets if no filter\n if (selectedFacetArray === undefined) {\n return 'NOT item.published.status:embargo'\n }\n\n // Switch the 'term' attribute to 'label' if 'label' does not exist \n selectedFacetArray.forEach(f=>f.label=f.facet)\n \n\n let facets = removeShowAllFacets(selectedFacetArray)\n\n let filters = \"NOT item.published.status:embargo\";\n filters = `(${filters}) AND `;\n\n const facetPropPaths = Object.keys(facetPropPathMapping);\n facetPropPaths.map((facetPropPath) => {\n const facetsToOr = facets.filter(\n (facet) => facet.facetPropPath == facetPropPath\n );\n var filter = \"\";\n facetsToOr.map((facet) => {\n filter += `\"${facetPropPath}\":\"${facet.label}\" OR `;\n });\n if (filter == \"\") {\n return;\n }\n filter = `(${filter.substring(0, filter.lastIndexOf(\" OR \"))})`;\n filters += `${filter} AND `;\n });\n return filters.substring(0, filters.lastIndexOf(\" AND \"));\n}\n\nfunction removeShowAllFacets(facetArray){\n return facetArray.filter( f => f.label !== 'Show all')\n}","<template>\n <div class=\"filters\">\n <map-svg-sprite-color />\n <transition name=\"el-zoom-in-top\">\n <span v-show=\"showFilters\" class=\"search-filters transition-box\">\n <custom-cascader\n class=\"cascader\"\n ref=\"cascader\"\n v-model=\"cascadeSelected\"\n placeholder\n :collapse-tags=\"true\"\n :options=\"options\"\n :props=\"props\"\n @change=\"cascadeEvent($event)\"\n @expand-change=\"cascadeExpandChange\"\n :show-all-levels=\"false\"\n :append-to-body=\"false\"\n @tags-changed=\"tagsChangedCallback\"\n ></custom-cascader>\n <div v-if=\"showFiltersText\" class=\"filter-default-value\">\n <map-svg-icon icon=\"noun-filter\" class=\"filter-icon-inside\" />Apply\n Filters\n </div>\n </span>\n </transition>\n\n <el-select\n class=\"number-shown-select\"\n v-model=\"numberShown\"\n placeholder=\"10\"\n @change=\"numberShownChanged($event)\"\n >\n <el-option\n v-for=\"item in numberDatasetsShown\"\n :key=\"item\"\n :label=\"item\"\n :value=\"item\"\n ></el-option>\n </el-select>\n <span class=\"dataset-results-feedback\">{{ this.numberOfResultsText }}</span>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Option, Select } from \"element-ui\";\nimport CustomCascader from \"./Cascader\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport speciesMap from \"./species-map\";\nimport { MapSvgIcon, MapSvgSpriteColor } from \"@abi-software/svg-sprite\";\n\nimport {AlgoliaClient} from \"../algolia/algolia.js\";\nimport { facetPropPathMapping } from \"../algolia/utils.js\";\n\nlocale.use(lang);\nVue.use(Option);\nVue.use(Select);\n\nconst capitalise = function (txt) {\n return txt.charAt(0).toUpperCase() + txt.slice(1);\n};\n\nconst convertReadableLabel = function (original) {\n const name = original.toLowerCase();\n if (speciesMap[name]) {\n return capitalise(speciesMap[name]);\n } else {\n return capitalise(name);\n }\n};\n\nexport default {\n name: \"SearchFilters\",\n components: {\n CustomCascader,\n MapSvgIcon,\n MapSvgSpriteColor,\n },\n props: {\n /**\n * Object containing information for\n * the required viewing.\n */\n entry: Object,\n envVars: {\n type: Object,\n default: ()=>{}\n },\n },\n data: function () {\n return {\n cascaderIsReady: false,\n previousShowAllChecked: {\n species: false,\n gender: false,\n organ: false,\n datasets: false,\n },\n showFilters: true,\n showFiltersText: true,\n cascadeSelected: [],\n numberShown: 10,\n filters: [],\n facets: [\"Species\", \"Gender\", \"Organ\", \"Datasets\"],\n numberDatasetsShown: [\"10\", \"20\", \"50\"],\n props: { multiple: true },\n options: [\n {\n value: \"Species\",\n label: \"Species\",\n children: [{}],\n },\n ],\n };\n },\n computed: {\n numberOfResultsText: function () {\n return `${this.entry.numberOfHits} results | Showing`;\n },\n },\n methods: {\n createCascaderItemValue: function (term, facet) {\n if (facet) return term + \"/\" + facet;\n else return term;\n },\n populateCascader: function () {\n return new Promise((resolve) => {\n // Algolia facet serach\n this.algoliaClient.getAlgoliaFacets(facetPropPathMapping)\n .then((data) => {\n this.facets = data;\n this.options = data;\n\n // create top level of options in cascader\n this.options.forEach((facet, i) => {\n this.options[i].label = convertReadableLabel(facet.label);\n this.options[i].value = this.createCascaderItemValue(\n facet.key,\n undefined\n );\n\n // put \"Show all\" as first option\n this.options[i].children.unshift({\n value: this.createCascaderItemValue(\"Show all\"),\n label: \"Show all\",\n });\n\n // populate second level of options \n this.options[i].children.forEach((facetItem, j) => {\n this.options[i].children[j].label = convertReadableLabel(\n facetItem.label\n );\n this.options[i].children[j].value =\n this.createCascaderItemValue(facet.label, facetItem.label);\n });\n });\n })\n .finally(() => {\n resolve();\n });\n });\n },\n tagsChangedCallback: function (presentTags) {\n if (presentTags.length > 0) {\n this.showFiltersText = false;\n } else {\n this.showFiltersText = true;\n }\n },\n // cascadeEvent: initiate searches based off cascader changes\n cascadeEvent: function (event) {\n if (event) {\n // Check for show all in selected cascade options\n event = this.showAllEventModifier(event);\n\n // Move results from arrays to object\n let filters = event.filter( selection => selection !== undefined).map( fs => ({\n facetPropPath: fs[0], \n facet: fs[1].split(\"/\")[1],\n term: fs[1].split(\"/\")[0], \n }))\n\n this.$emit('loading', true) // let sidebarcontent wait for the requests\n\n this.$emit(\"filterResults\", filters); // emit filters for apps above sidebar\n this.setCascader(filters); //update our cascader v-model if we modified the event\n this.makeCascadeLabelsClickable();\n }\n },\n // showAllEventModifier: Modifies a cascade event to unlick all selections in category if \"show all\" is clicked. Also unchecks \"Show all\" if any secection is clicked\n // *NOTE* Does NOT remove 'Show all' selections from showing in 'cascadeSelected'\n showAllEventModifier: function (event) {\n // check if show all is in the cascader checked option list\n let hasShowAll = event\n .map((ev) => (ev ? ev[1].toLowerCase().includes(\"show all\") : false))\n .includes(true);\n // remove all selected options below the show all if checked\n if (hasShowAll) {\n let modifiedEvent = [];\n let facetMaps = {};\n //catagorised different facet items\n for (const i in event) {\n if (facetMaps[event[i][0]] === undefined) facetMaps[event[i][0]] = [];\n facetMaps[event[i][0]].push(event[i]);\n }\n // go through each facets\n for (const facet in facetMaps) {\n let showAll = undefined;\n // Find the show all item if any\n for (let i = facetMaps[facet].length - 1; i >= 0; i--) {\n if (facetMaps[facet][i][1].toLowerCase().includes(\"show all\")) {\n //seperate the showAll item and the rest\n showAll = facetMaps[facet].splice(i, 1)[0];\n break;\n }\n }\n if (showAll) {\n if (this.previousShowAllChecked[facet]) {\n //Unset the show all if it was present previously\n //and there are other items\n if (facetMaps[facet].length > 0)\n modifiedEvent.push(...facetMaps[facet]);\n else modifiedEvent.push(showAll);\n } else {\n //showAll is turned on\n modifiedEvent.push(showAll);\n }\n } else {\n modifiedEvent.push(...facetMaps[facet]);\n }\n }\n //Make sure the expanded item are sorted first.\n return modifiedEvent.sort((a, b) => {\n if (this.__expandItem__) {\n if (a[0] == this.__expandItem__) {\n if (b[0] == this.__expandItem__) {\n return 0;\n } else {\n return -1;\n }\n } else if (b[0] == this.__expandItem__) {\n if (a[0] == this.__expandItem__) {\n return 0;\n } else {\n return 1;\n }\n } else {\n return 0;\n }\n } else return 0;\n });\n }\n return event;\n },\n cascadeExpandChange: function (event) {\n //work around as the expand item may change on modifying the cascade props\n this.__expandItem__ = event;\n this.makeCascadeLabelsClickable();\n },\n numberShownChanged: function (event) {\n this.$emit(\"numberPerPage\", parseInt(event));\n },\n updatePreviousShowAllChecked: function (options) {\n //Reset the states\n for (const facet in this.previousShowAllChecked) {\n this.previousShowAllChecked[facet] = false;\n }\n options.forEach((element) => {\n if (element[1].toLowerCase().includes(\"show all\"))\n this.previousShowAllChecked[element[0]] = true;\n });\n },\n // setCascader: Clears previous selections and takes in an array of facets to select: filterFacets\n // facets are in the form:\n // {\n // facetPropPath: 'anatomy.organ.name',\n // term: 'Sex',\n // facet: 'Male'\n // }\n setCascader: function (filterFacets) {\n //Do not set the value unless it is ready\n if (this.cascaderIsReady && filterFacets && filterFacets.length != 0) {\n this.cascadeSelected = filterFacets.map(e => {\n return [\n e.facetPropPath,\n this.createCascaderItemValue(capitalise(e.term), e.facet),\n ]\n });\n this.updatePreviousShowAllChecked(this.cascadeSelected);\n }\n },\n addFilter: function (filter) {\n //Do not set the value unless it is ready\n if (this.cascaderIsReady && filter) {\n this.cascadeSelected.filter(f=>f.term != filter.term)\n this.cascadeSelected.push([filter.facetPropPath, this.createCascaderItemValue(filter.term, filter.facet)])\n }\n },\n initiateSearch: function() {\n this.cascadeEvent(this.cascadeSelected)\n },\n // checkShowAllBoxes: Checks each 'Show all' cascade option by using the setCascader function\n checkShowAllBoxes: function(){\n this.setCascader(\n this.options.map(option => {\n return {\n facetPropPath: option.value,\n term: option.label,\n facet: 'Show all'\n }\n })\n )\n },\n makeCascadeLabelsClickable: function () {\n // Next tick allows the cascader menu to change\n this.$nextTick(() => {\n this.$refs.cascader.$el\n .querySelectorAll(\".el-cascader-node__label\")\n .forEach((el) => {\n // step through each cascade label\n el.onclick = function () {\n const checkbox = this.previousElementSibling;\n if (checkbox) {\n if (!checkbox.parentElement.attributes[\"aria-owns\"]) {\n // check if we are at the lowest level of cascader\n this.previousElementSibling.click(); // Click the checkbox\n }\n }\n };\n });\n });\n },\n },\n mounted: function () {\n this.algoliaClient = new AlgoliaClient(this.envVars.ALGOLIA_ID, this.envVars.ALGOLIA_KEY, this.envVars.PENNSIEVE_API_LOCATION);\n this.algoliaClient.initIndex(this.envVars.ALGOLIA_INDEX);\n this.populateCascader().then(() => {\n this.cascaderIsReady = true;\n this.checkShowAllBoxes()\n this.setCascader(this.entry.filterFacets);\n this.makeCascadeLabelsClickable();\n });\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n.filter-default-value {\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n padding-top: 10px;\n padding-left: 16px;\n}\n\n.filter-icon-inside {\n width: 12px !important;\n height: 12px !important;\n color: #292b66;\n transform: scale(2) !important;\n margin-bottom: 0px !important;\n}\n\n.cascader {\n font-family: Asap;\n font-size: 14px;\n font-weight: 500;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n color: #292b66;\n text-align: center;\n padding-bottom: 6px;\n}\n\n.cascader >>> .el-cascder-panel {\n max-height: 500px;\n}\n\n.cascader >>> .el-scrollbar__wrap {\n overflow-x: hidden;\n margin-bottom: 2px !important;\n}\n\n.cascader >>> li[aria-owns*=\"cascader\"] > .el-checkbox {\n display: none;\n}\n\n.dataset-results-feedback {\n float: right;\n text-align: right;\n color: rgb(48, 49, 51);\n font-family: Asap;\n font-size: 18px;\n font-weight: 500;\n padding-top: 8px;\n}\n\n.search-filters {\n position: relative;\n float: left;\n padding-right: 15px;\n padding-bottom: 12px;\n}\n\n.number-shown-select {\n float: right;\n}\n\n.number-shown-select >>> .el-input__inner {\n width: 68px;\n height: 40px;\n color: rgb(48, 49, 51);\n}\n\n.search-filters >>> .el-cascader-node.is-active {\n color: #8300bf;\n}\n\n.search-filters >>> .el-cascader-node.in-active-path {\n color: #8300bf;\n}\n\n.search-filters >>> .el-checkbox__input.is-checked > .el-checkbox__inner {\n background-color: #8300bf;\n border-color: #8300bf;\n}\n\n.cascader >>> .el-cascader-menu:nth-child(2) .el-cascader-node:first-child {\n border-bottom: 1px solid #e4e7ed;\n}\n\n.cascader >>> .el-cascader-node__label {\n text-align: left;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilters.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilters.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SearchFilters.vue?vue&type=template&id=ee150fe2&scoped=true&\"\nimport script from \"./SearchFilters.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchFilters.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchFilters.vue?vue&type=style&index=0&id=ee150fe2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ee150fe2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"dataset-card-container\"},[_c('div',{ref:\"card\",class:_vm.expanded ? 'dataset-card-expanded' : 'dataset-card'},[(_vm.entry.id !== 0)?_c('div',{staticClass:\"seperator-path\"}):_vm._e(),_c('div',{staticClass:\"card\"},[_c('span',{staticClass:\"card-left\"},[_c('img',{staticClass:\"banner-img\",attrs:{\"svg-inline\":\"\",\"src\":_vm.thumbnail},on:{\"click\":_vm.openDataset}})]),_c('div',{staticClass:\"card-right\"},[_c('div',{staticClass:\"title\",on:{\"click\":_vm.cardClicked}},[_vm._v(_vm._s(_vm.entry.name))]),_c('div',{staticClass:\"details\"},[_vm._v(_vm._s(_vm.contributors)+\" \"+_vm._s(_vm.entry.publishDate ? (\"(\" + _vm.publishYear + \")\") : ''))]),_c('div',{staticClass:\"details\"},[_vm._v(_vm._s(_vm.samples))]),_c('div',{staticClass:\"details\"},[_vm._v(\"id: \"+_vm._s(_vm.discoverId))]),_c('div',[(!_vm.entry.simulation)?_c('el-button',{staticClass:\"button\",attrs:{\"size\":\"mini\",\"icon\":\"el-icon-coin\"},on:{\"click\":_vm.openDataset}},[_vm._v(\"View dataset\")]):_vm._e()],1),_c('div',[(_vm.entry.scaffolds)?_c('el-button',{staticClass:\"button\",attrs:{\"size\":\"mini\",\"icon\":\"el-icon-view\"},on:{\"click\":_vm.openScaffold}},[_vm._v(\"View scaffold\")]):_vm._e()],1),_c('div',[(_vm.hasCSVFile)?_c('el-button',{staticClass:\"button\",attrs:{\"size\":\"mini\",\"icon\":\"el-icon-view\"},on:{\"click\":_vm.openPlot}},[_vm._v(\"View plot\")]):_vm._e()],1),_c('div',[(_vm.entry.simulation)?_c('el-button',{staticClass:\"button\",attrs:{\"size\":\"mini\",\"icon\":\"el-icon-view\"},on:{\"click\":_vm.openRepository}},[_vm._v(\"View repository\")]):_vm._e()],1),_c('div',[(_vm.entry.simulation)?_c('el-button',{staticClass:\"button\",attrs:{\"size\":\"mini\",\"icon\":\"el-icon-view\"},on:{\"click\":_vm.openSimulation}},[_vm._v(\"View simulation\")]):_vm._e()],1)])]),((_vm.cardOverflow && !_vm.expanded))?_c('p',{staticClass:\"read-more\"},[_c('el-button',{staticClass:\"read-more-button\",on:{\"click\":_vm.expand}},[_vm._v(\"Read more...\")])],1):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nconst EventBus = new Vue();\nexport default EventBus;\n","export default {\n 77: {\n version: 2, meta_file: 'integrated_metadata.json', contextCard: {\n title: \"ICN fitted Scaffold\",\n description: \"Points are mapped to their positions on a 3d heart that is mapped to the data.\",\n bannerImage: 'https://raw.githubusercontent.com/Tehsurfer/map-sidebar/tabs/assets/temp-pics/icn.png',\n keys: [{\n image: \"https://raw.githubusercontent.com/Tehsurfer/map-sidebar/tabs/assets/temp-pics/orange.png\",\n text: \"ICN Subject 54-8\"\n }, {\n image: \"https://raw.githubusercontent.com/Tehsurfer/map-sidebar/tabs/assets/temp-pics/teal.png\",\n text: \"ICN Subject 54-5\"\n }\n ]\n },\n },\n 76: { version: 2, meta_file: 'mouseColon_metadata.json' },\n 32: {\n version: 3, meta_file: 'mouse-heart-071020_metadata.json', contextCard: {\n title: \"Neural paths mapped to a heart scaffold\",\n description: \"Points are mapped to their positions on a 3d heart that is mapped to the data.\",\n bannerImage: 'https://raw.githubusercontent.com/Tehsurfer/map-sidebar/tabs/assets/temp-pics/aNIksBFARaKwlKhpnDCKbA.png',\n keys: [{\n image: \"https://raw.githubusercontent.com/Tehsurfer/map-sidebar/tabs/assets/temp-pics/VqNcZ8fSQJu5TJEf9ahwvA.png\",\n text: \"Neural path\"\n }],\n }\n }\n }\n","<template>\n <div class=\"dataset-card-container\" ref=\"container\">\n <div v-bind:class=\" expanded ? 'dataset-card-expanded' : 'dataset-card'\" ref=\"card\">\n <div v-if=\"entry.id !== 0\" class=\"seperator-path\"></div>\n <div class=\"card\" >\n <span class=\"card-left\">\n <img svg-inline class=\"banner-img\" :src=\"thumbnail\" @click=\"openDataset\"/>\n </span>\n <div class=\"card-right\" >\n <div class=\"title\" @click=\"cardClicked\">{{entry.name}}</div>\n <div class=\"details\">{{contributors}} {{entry.publishDate ? `(${publishYear})` : ''}}</div>\n <div class=\"details\">{{samples}}</div>\n <div class=\"details\">id: {{discoverId}}</div>\n <div>\n <el-button v-if=\"!entry.simulation\" @click=\"openDataset\" size=\"mini\" class=\"button\" icon=\"el-icon-coin\">View dataset</el-button>\n </div>\n <div>\n <el-button v-if=\"entry.scaffolds\" @click=\"openScaffold\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View scaffold</el-button>\n </div>\n <div>\n <el-button v-if=\"hasCSVFile\" @click=\"openPlot\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View plot</el-button>\n </div>\n <div>\n <el-button v-if=\"entry.simulation\" @click=\"openRepository\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View repository</el-button>\n </div>\n <div>\n <el-button v-if=\"entry.simulation\" @click=\"openSimulation\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View simulation</el-button>\n </div>\n </div>\n\n </div>\n <p v-if=\"(cardOverflow && !expanded)\" class=\"read-more\"><el-button @click=\"expand\" class=\"read-more-button\">Read more...</el-button></p>\n </div>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Button, Icon } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport EventBus from \"./EventBus\"\nimport scaffoldMetaMap from './scaffold-meta-map';\nimport speciesMap from \"./species-map\";\n\nlocale.use(lang);\nVue.use(Button);\nVue.use(Icon);\n\nconst capitalise = function(string){\n return string.replace(/\\b\\w/g, v => v.toUpperCase());\n}\n\nexport default {\n name: \"DatasetCard\",\n props: {\n /**\n * Object containing information for\n * the required viewing.\n */\n entry: Object,\n envVars: {\n type: Object,\n default: () => {}\n },\n },\n data: function () {\n return {\n thumbnail: require('@/../assets/missing-image.svg'),\n dataLocation: this.entry.doi,\n discoverId: undefined,\n cardOverflow: false,\n expanded: false\n };\n },\n computed: {\n hasCSVFile: function(){\n return ( this.entry.csvFiles && this.entry.csvFiles.length !== 0 )\n },\n contributors: function() {\n let text = \"\";\n if (this.entry.contributors) {\n if (this.entry.contributors.length === 1) {\n text = this.lastName(this.entry.contributors[0].name);\n } else if (this.entry.contributors.length === 2) {\n text = this.lastName(this.entry.contributors[0].name) + \" & \" + this.lastName(this.entry.contributors[1].name);\n } else if (this.entry.contributors.length > 2) {\n text = this.lastName(this.entry.contributors[0].name) + \" et al.\";\n }\n }\n return text;\n },\n samples: function() {\n let text = \"\";\n if (this.entry.species) {\n if (speciesMap[this.entry.species[0].toLowerCase()]){\n text = `${speciesMap[this.entry.species[0].toLowerCase()]}`;\n } else {\n text = `${this.entry.species}`;\n }\n }\n if (this.entry.numberSamples > 0) {\n text += \" (\";\n if (this.entry.numberSamples === 1) {\n text += `${this.entry.numberSamples} sample`;\n } else if (this.entry.numberSamples > 1) {\n text += `${this.entry.numberSamples} samples`;\n }\n if (this.entry.numberSubjects === 1) {\n text += ` from ${this.entry.numberSubjects} subject`;\n } else if (this.entry.numberSamples > 1) {\n text += ` from ${this.entry.numberSubjects} subjects`;\n }\n text += \")\";\n }\n\n return text;\n },\n label: function(){\n return this.entry.organs ? this.entry.organs[0] : this.entry.name\n },\n publishYear: function() {\n return this.entry.publishDate.split('-')[0]\n }\n },\n methods: {\n cardClicked: function(){\n if(this.entry.scaffolds){\n this.openScaffold()\n }else{\n this.openDataset()\n }\n },\n openScaffold: function(){\n let action = {\n label: capitalise(this.label),\n resource: this.getScaffoldPath(this.discoverId, this.version, this.entry.scaffolds[0].dataset.path),\n title: \"View 3D scaffold\",\n type: \"Scaffold\",\n discoverId: this.discoverId,\n contextCard: scaffoldMetaMap[this.discoverId] ? scaffoldMetaMap[this.discoverId].contextCard : undefined\n }\n EventBus.$emit(\"PopoverActionClick\", action)\n },\n openPlot: function(){\n let action = {\n label: capitalise(this.label),\n resource: this.getFileFromPath(this.discoverId, this.version, this.entry.csvFiles[0].dataset.path),\n title: \"View plot\",\n type: \"Plot\",\n discoverId: this.discoverId,\n }\n EventBus.$emit(\"PopoverActionClick\", action)\n },\n openDataset: function(){\n window.open(this.dataLocation,'_blank');\n },\n openRepository: function() {\n let apiLocation = this.envVars.API_LOCATION;\n this.entry.additionalLinks.forEach(function(el) {\n if (el.description == \"Repository\") {\n let xmlhttp = new XMLHttpRequest();\n xmlhttp.open(\"POST\", apiLocation + \"/pmr_latest_exposure\", true);\n xmlhttp.setRequestHeader(\"Content-type\", \"application/json\");\n xmlhttp.onreadystatechange = () => {\n if (xmlhttp.readyState === 4) {\n let url = \"\";\n if (xmlhttp.status === 200) {\n url = JSON.parse(xmlhttp.responseText)[\"url\"];\n }\n if (url === \"\") {\n url = el.uri;\n }\n window.open(url,'_blank');\n }\n };\n xmlhttp.send(JSON.stringify({workspace_url: el.uri}));\n }\n });\n },\n openSimulation: function() {\n let isSedmlResource = false;\n let resource = undefined;\n this.entry.additionalLinks.forEach(function(el) {\n if (el.description == \"SED-ML file\") {\n isSedmlResource = true;\n resource = el.uri;\n } else if (!isSedmlResource && (el.description == \"CellML file\")) {\n resource = el.uri;\n }\n });\n let action = {\n label: undefined,\n resource: resource,\n dataset: this.dataLocation,\n datasetId: this.discoverId,\n title: \"View simulation\",\n name: this.entry.name,\n description: this.entry.description,\n type: \"Simulation\"\n }\n EventBus.$emit(\"PopoverActionClick\", action)\n },\n getScaffoldPath: function(discoverId, version, scaffoldPath){\n let id = discoverId\n let path = `${this.envVars.API_LOCATION}s3-resource/${id}/${version}/files/${scaffoldPath}`\n return path\n },\n getFileFromPath: function(discoverId, version, path){\n return `${this.envVars.API_LOCATION}s3-resource/${discoverId}/${version}/files/${path}`\n },\n isOverflown: function(el){\n return el.clientHeight < el.scrollHeight\n },\n expand: function() {\n this.expanded = true\n },\n splitDOI: function(doi){\n return [doi.split('/')[doi.split('/').length-2], doi.split('/')[doi.split('/').length-1]]\n },\n getBanner: function () {\n let doi = this.splitDOI(this.entry.doi)\n fetch(`https://api.pennsieve.io/discover/datasets/doi/${doi[0]}/${doi[1]}`)\n .then((response) =>{\n if (!response.ok){\n throw Error(response.statusText)\n } else {\n return response.json()\n }\n })\n .then((data) => {\n this.thumbnail = data.banner\n this.discoverId = data.id\n this.version = data.version\n this.dataLocation = `https://sparc.science/datasets/${data.id}?type=dataset`\n })\n .catch(() => {\n //set defaults if we hit an error\n this.thumbnail = require('@/../assets/missing-image.svg')\n this.discoverId = undefined\n });\n },\n lastName: function(fullName){\n return fullName.split(',')[0]\n },\n },\n mounted: function(){\n this.getBanner()\n this.cardOverflow = this.isOverflown(this.$refs.card)\n },\n updated: function () {\n },\n watch: {\n 'entry.description': function() { // watch it\n this.cardOverflow = false\n this.expanded = false\n this.cardOverflow = this.isOverflown(this.$refs.card)\n this.getBanner()\n }\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n.dataset-card {\n padding-left: 16px;\n position: relative;\n}\n.seperator-path {\n width: 486px;\n height: 0px;\n border: solid 1px #e4e7ed;\n background-color: #e4e7ed;\n}\n.title {\n padding-bottom: 5px;\n font-family: Asap;\n font-size: 14px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.5;\n letter-spacing: 1.05px;\n color: #484848;\n cursor: pointer;\n}\n.card {\n padding-top: 18px;\n position: relative;\n display: flex;\n}\n\n.card-left{\n flex: 1\n}\n\n.card-right {\n flex: 1.3;\n padding-left: 6px;\n}\n\n.dataset-card .read-more {\n position: absolute;\n z-index: 9;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 20px;\n margin: 0; padding: 20px 66px;\n /* \"transparent\" only works here because == rgba(0,0,0,0) */\n background-image: linear-gradient(to bottom, transparent, white);\n pointer-events: none;\n}\n\n.read-more-button{\n width: 85px;\n height: 20px;\n font-family: Asap;\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n color: #8300bf;\n padding: 0px;\n pointer-events: all;\n cursor: pointer;\n}\n\n.button{\n z-index: 10;\n font-family: Asap;\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n background-color: #8300bf;\n border: #8300bf;\n color: white;\n cursor: pointer;\n margin-top: 8px;\n}\n\n.button:hover {\n background-color: #8300bf;\n color: white;\n}\n\n.banner-img {\n width: 128px;\n height: 128px;\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.25);\n background-color: #ffffff;\n cursor: pointer;\n}\n.details{\n font-family: Asap;\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.5;\n letter-spacing: 1.05px;\n color: #484848;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DatasetCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DatasetCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DatasetCard.vue?vue&type=template&id=7fd04450&scoped=true&\"\nimport script from \"./DatasetCard.vue?vue&type=script&lang=js&\"\nexport * from \"./DatasetCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DatasetCard.vue?vue&type=style&index=0&id=7fd04450&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7fd04450\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"context-card-container\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDetails),expression:\"showDetails\"}],staticClass:\"hide\",on:{\"click\":function($event){_vm.showDetails = !_vm.showDetails}}},[_vm._v(\"Hide information\"),_c('i',{staticClass:\"el-icon-arrow-up\"})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showDetails),expression:\"!showDetails\"}],staticClass:\"hide\",on:{\"click\":function($event){_vm.showDetails = !_vm.showDetails}}},[_vm._v(\"Show information\"),_c('i',{staticClass:\"el-icon-arrow-down\"})]),_c('el-card',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDetails),expression:\"showDetails\"}],staticClass:\"context-card card\",attrs:{\"body-style\":{ padding: '0px', 'background-color': 'white', display: 'flex', width: '516px'}}},[_c('img',{staticClass:\"context-image card-left\",attrs:{\"src\":_vm.entry.bannerImage}}),_c('div',{staticClass:\"card-right\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.entry.title))]),_c('div',[_vm._v(_vm._s(_vm.entry.description))]),_vm._l((_vm.entry.keys),function(key){return [_c('br',{key:key.text}),_c('span',{key:key.text + 1},[_c('img',{staticStyle:{\"height\":\"20px\"},attrs:{\"src\":key.image}}),_vm._v(\" \"+_vm._s(key.text))])]})],2)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"context-card-container\" ref=\"container\">\n <div v-show=\"showDetails\" class=\"hide\" @click=\"showDetails = !showDetails\">Hide information<i class=\"el-icon-arrow-up\"></i></div>\n <div v-show=\"!showDetails\" class=\"hide\" @click=\"showDetails = !showDetails\">Show information<i class=\"el-icon-arrow-down\"></i></div>\n <el-card v-show=\"showDetails\" class=\"context-card card\" :body-style=\"{ padding: '0px', 'background-color': 'white', display: 'flex', width: '516px'}\">\n <img :src=\"entry.bannerImage\" class=\"context-image card-left\">\n <div class=\"card-right\">\n <div class=\"title\">{{entry.title}}</div>\n <div>{{entry.description}}</div>\n <template v-for=\"key in entry.keys\">\n <br v-bind:key=\"key.text\"/>\n <span v-bind:key=\"key.text + 1\"><img :src=\"key.image\" style=\"height: 20px;\"> {{key.text}}</span>\n </template>\n </div>\n </el-card>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Link, Icon, Card, Button, Select, Input } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\n\nlocale.use(lang);\nVue.use(Link);\nVue.use(Icon);\nVue.use(Card);\nVue.use(Button);\nVue.use(Select);\nVue.use(Input);\n\n\n\nexport default {\n name: \"contextCard\",\n props: {\n /**\n * Object containing information for\n * the required viewing.\n */\n entry: Object,\n },\n data: function () {\n return {\n showDetails: true\n };\n },\n computed: {\n\n },\n methods: {\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n.hide{\n color: #e4e7ed;\n cursor: pointer;\n}\n\n.context-card{\n background-color: white;\n}\n\n.context-image{\n width: 250px\n}\n\n.card {\n padding-top: 18px;\n margin-bottom: 18px;\n position: relative;\n border: solid 1px #e4e7ed;\n display: flex;\n}\n\n.card-left{\n flex: 1\n}\n\n.card-right {\n flex: 1.3;\n padding-left: 6px;\n}\n\n.title{\n font-weight: bold;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ContextCard.vue?vue&type=template&id=17e861eb&scoped=true&\"\nimport script from \"./ContextCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ContextCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ContextCard.vue?vue&type=style&index=0&id=17e861eb&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17e861eb\",\n null\n \n)\n\nexport default component.exports","<template>\n <el-card :body-style=\"bodyStyle\" class=\"content-card\">\n <div slot=\"header\" class=\"header\">\n <context-card v-if=\"contextCardEntry\" :entry=\"contextCardEntry\" />\n <el-input\n class=\"search-input\"\n placeholder=\"Search\"\n v-model=\"searchInput\"\n @keyup.native=\"searchEvent\"\n clearable\n @clear=\"clearSearchClicked\"\n ></el-input>\n <el-button class=\"button\" @click=\"searchEvent\">Search</el-button>\n </div>\n <SearchFilters\n class=\"filters\"\n ref=\"filtersRef\"\n :entry=\"filterEntry\"\n :envVars=\"envVars\"\n @filterResults=\"filterUpdate\"\n @numberPerPage=\"numberPerPageUpdate\"\n @loading=\"filtersLoading\"\n ></SearchFilters>\n <div class=\"content scrollbar\" v-loading=\"loadingCards\" ref=\"content\">\n <div\n class=\"error-feedback\"\n v-if=\"results.length === 0 && !loadingCards && !sciCrunchError\"\n >No results found - Please change your search / filter criteria.</div>\n <div class=\"error-feedback\" v-if=\"sciCrunchError\">{{sciCrunchError}}</div>\n <div v-for=\"o in results\" :key=\"o.id\" class=\"step-item\">\n <DatasetCard :entry=\"o\" :envVars=\"envVars\"></DatasetCard>\n </div>\n <el-pagination\n class=\"pagination\"\n :current-page.sync=\"page\"\n hide-on-single-page\n large\n layout=\"prev, pager, next\"\n :page-size=\"numberPerPage\"\n :total=\"numberOfHits\"\n @current-change=\"pageChange\"\n ></el-pagination>\n </div>\n </el-card>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport {\n Button,\n Card,\n Drawer,\n Icon,\n Input,\n Loading,\n Pagination\n} from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport SearchFilters from \"./SearchFilters\";\nimport DatasetCard from \"./DatasetCard\";\nimport ContextCard from \"./ContextCard.vue\";\n\nimport {AlgoliaClient} from \"../algolia/algolia.js\";\nimport {getFilters} from \"../algolia/utils.js\"\n\nlocale.use(lang);\nVue.use(Button);\nVue.use(Card);\nVue.use(Drawer);\nVue.use(Icon);\nVue.use(Input);\nVue.use(Loading);\nVue.use(Pagination);\n\n// handleErrors: A custom fetch error handler to recieve messages from the server\n// even when an error is found\nvar handleErrors = async function(response) {\n if (!response.ok) {\n let parse = await response.json();\n if (parse) {\n throw new Error(parse.message);\n } else {\n throw new Error(response);\n }\n }\n return response;\n};\n\nvar initial_state = {\n searchInput: \"\",\n lastSearch: \"\",\n results: [],\n numberOfHits: 0,\n filter: [],\n loadingCards: false,\n numberPerPage: 10,\n page: 1,\n pageModel: 1,\n start: 0,\n hasSearched: false,\n sciCrunchError: false\n};\n\nexport default {\n components: { SearchFilters, DatasetCard, ContextCard },\n name: \"SideBarContent\",\n props: {\n visible: {\n type: Boolean,\n default: false\n },\n isDrawer: {\n type: Boolean,\n default: true\n },\n entry: {\n type: Object,\n default: () => initial_state\n },\n contextCardEntry: {\n type: Object,\n default: undefined\n },\n envVars: {\n type: Object,\n default: () => {}\n },\n firstSearch: {\n type: String,\n default: \"\"\n }\n },\n data: function() {\n return {\n ...this.entry,\n bodyStyle: {\n flex: \"1 1 auto\",\n \"flex-flow\": \"column\",\n display: \"flex\"\n }\n };\n },\n computed: {\n // This computed property populates filter data's entry object with $data from this sidebar\n filterEntry: function() {\n return {\n numberOfHits: this.numberOfHits,\n filterFacets: this.filter\n };\n }\n },\n methods: {\n openSearch: function(filter, search='') {\n this.searchInput = search;\n this.resetPageNavigation();\n this.searchAlgolia(filter, search);\n if (filter) {\n this.filter = [...filter];\n this.$refs.filtersRef.setCascader(this.filter);\n }\n },\n addFilter: function(filter) {\n this.resetPageNavigation();\n if (filter) {\n this.$refs.filtersRef.addFilter(filter);\n this.$refs.filtersRef.initiateSearch()\n }\n },\n clearSearchClicked: function() {\n this.searchInput = \"\";\n this.resetPageNavigation();\n this.searchAlgolia(this.filters, this.searchInput);\n },\n searchEvent: function(event = false) {\n if (event.keyCode === 13 || event instanceof MouseEvent) {\n this.resetPageNavigation();\n this.searchAlgolia(this.filters, this.searchInput);\n }\n },\n filterUpdate: function(filters) {\n this.filters = [...filters]\n this.resetPageNavigation()\n this.searchAlgolia(filters, this.searchInput)\n this.$emit(\"search-changed\", {\n value: this.filter,\n type: \"filter-update\"\n });\n },\n searchAlgolia(filters, query=''){\n // Algolia search\n this.algoliaClient.search(getFilters(filters), query, this.numberPerPage, this.page).then(searchData => {\n this.numberOfHits = searchData.total\n this.discoverIds = searchData.discoverIds\n this.results = searchData.items\n this.searchSciCrunch({'discoverIds':this.discoverIds})\n })\n },\n filtersLoading: function (val) {\n this.loadingCards = val;\n },\n numberPerPageUpdate: function(val) {\n this.numberPerPage = val;\n this.pageChange(1);\n },\n pageChange: function(page) {\n this.start = (page - 1) * this.numberPerPage;\n this.page = page\n this.searchAlgolia(this.filters, this.searchInput, this.numberPerPage, this.page)\n },\n searchSciCrunch: function(params) {\n this.loadingCards = true;\n this.results = [];\n this.disableCards();\n this.$emit(\"search-changed\", { value: this.searchInput, type: \"query-update\" });\n this.callSciCrunch(this.envVars.API_LOCATION, params)\n .then(result => {\n //Only process if the search term is the same as the last search term.\n //This avoid old search being displayed.\n this.sciCrunchError = false;\n this.resultsProcessing(result);\n this.$refs.content.style[\"overflow-y\"] = \"scroll\";\n this.loadingCards = false;\n })\n .catch(result => {\n if (result.name !== 'AbortError') {\n this.loadingCards = false;\n this.sciCrunchError = result.message;\n }\n })\n },\n disableCards: function() {\n if (this.$refs.content) {\n this.$refs.content.scroll({ top: 0, behavior: \"smooth\" });\n this.$refs.content.style[\"overflow-y\"] = \"hidden\";\n }\n },\n resetPageNavigation: function() {\n this.start = 0;\n this.page = 1;\n },\n resultsProcessing: function(data) {\n this.lastSearch = this.searchInput;\n this.results = [];\n let id = 0;\n if (data.results.length === 0) {\n return;\n }\n data.results.forEach(element => {\n // this.results.push(element) below should be once backend is ready\n this.results.push({\n name: element.name,\n description: element.description,\n contributors: element.contributors,\n numberSamples: element.sampleSize\n ? parseInt(element.sampleSize)\n : 0,\n numberSubjects: element.subjectSize\n ? parseInt(element.subjectSize)\n : 0,\n updated: element.updated[0].timestamp.split(\"T\")[0],\n url: element.uri[0],\n datasetId: element.identifier,\n organs: (element.organs && element.organs.length > 0)\n ? [...new Set(element.organs.map(v => v.name))]\n : undefined,\n species: element.organisms \n ? element.organisms[0].species\n ? [...new Set(element.organisms.map((v) =>v.species ? v.species.name : null))]\n : undefined\n : undefined, // This processing only includes each gender once into 'sexes'\n csvFiles: element.csvFiles,\n id: id,\n doi: element.doi,\n publishDate: element.publishDate,\n scaffolds: element['abi-scaffold-metadata-file'] ? element['abi-scaffold-metadata-file'] : undefined,\n additionalLinks: element.additionalLinks,\n simulation: element.additionalLinks\n ? element.additionalLinks[0].description == 'Repository'\n : false,\n s3uri: element.s3uri\n });\n id++;\n });\n },\n createfilterParams: function(params) {\n let p = new URLSearchParams();\n //Check if field is array or value\n for (const key in params) {\n if (Array.isArray(params[key])) {\n params[key].forEach(e => {\n p.append(key, e);\n });\n } else {\n p.append(key, params[key]);\n }\n }\n return p.toString();\n },\n callSciCrunch: function(apiLocation, params = {}) {\n return new Promise((resolve, reject) => {\n // the following controller will abort current search\n // if a new one has been started\n if (this._controller) this._controller.abort();\n this._controller = new AbortController();\n let signal = this._controller.signal;\n // Add parameters if we are sent them\n let fullEndpoint = this.envVars.API_LOCATION + this.searchEndpoint + \"?\" + this.createfilterParams(params);\n fetch(fullEndpoint, { signal })\n .then(handleErrors)\n .then(response => response.json())\n .then(data => resolve(data))\n .catch(data => reject(data));\n });\n }\n },\n mounted: function() {\n // initialise algolia\n this.algoliaClient = new AlgoliaClient(this.envVars.ALGOLIA_ID, this.envVars.ALGOLIA_KEY, this.envVars.PENNSIEVE_API_LOCATION);\n this.algoliaClient.initIndex(this.envVars.ALGOLIA_INDEX);\n console.log('Algolia initialised in sidebar')\n\n // temporarily disable flatmap search since there are no datasets\n if (this.firstSearch === \"Flatmap\" || this.firstSearch === \"flatmap\") {\n this.openSearch(undefined, '')\n } else {\n this.openSearch(undefined, '');\n }\n },\n created: function() {\n //Create non-reactive local variables\n this.searchEndpoint = \"dataset_info/using_multiple_discoverIds/\";\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n.content-card {\n height: 100%;\n flex-flow: column;\n display: flex;\n}\n\n.button {\n background-color: #8300bf;\n border: #8300bf;\n color: white;\n}\n\n.step-item {\n font-size: 14px;\n margin-bottom: 18px;\n text-align: left;\n}\n\n.search-input {\n width: 298px !important;\n height: 40px;\n padding-right: 14px;\n align-items: left;\n}\n\n.header {\n border: solid 1px #292b66;\n background-color: #292b66;\n text-align: left;\n}\n\n.pagination {\n padding-bottom: 16px;\n background-color: white;\n text-align: center;\n}\n\n.pagination >>> button {\n background-color: white !important;\n}\n.pagination >>> li {\n background-color: white !important;\n}\n.pagination >>> li.active {\n color: #8300bf;\n}\n\n.error-feedback {\n font-family: Asap;\n font-size: 14px;\n font-style: italic;\n padding-top: 15px;\n}\n\n.content-card >>> .el-card__header {\n background-color: #292b66;\n border: solid 1px #292b66;\n}\n\n.content-card >>> .el-card__body {\n background-color: #f7faff;\n overflow-y: hidden;\n}\n\n.content {\n width: 518px;\n flex: 1 1 auto;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n background-color: #ffffff;\n overflow-y: scroll;\n scrollbar-width: thin;\n}\n\n.scrollbar::-webkit-scrollbar-track {\n border-radius: 10px;\n background-color: #f5f5f5;\n}\n\n.scrollbar::-webkit-scrollbar {\n width: 12px;\n right: -12px;\n background-color: #f5f5f5;\n}\n\n.scrollbar::-webkit-scrollbar-thumb {\n border-radius: 4px;\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.06);\n background-color: #979797;\n}\n\n>>> .el-input__suffix {\n padding-right: 10px;\n}\n\n>>> .my-drawer {\n background: rgba(0, 0, 0, 0);\n box-shadow: none;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarContent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarContent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarContent.vue?vue&type=template&id=44ece0e4&scoped=true&\"\nimport script from \"./SidebarContent.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SidebarContent.vue?vue&type=style&index=0&id=44ece0e4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"44ece0e4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tab-container\"},_vm._l((_vm.tabTitles),function(title){return _c('div',{key:title.id,staticClass:\"title\"},[_c('div',{staticClass:\"title-text-table\",class:{ highlightText : (title.id==_vm.activeId) },on:{\"click\":function($event){return _vm.titleClicked(title.id)}}},[_c('div',{staticClass:\"title-text\"},[_vm._v(\" \"+_vm._s(title.title)+\" \")])])])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"tab-container\">\n <div class=\"title\" v-for=\"title in tabTitles\" :key=\"title.id\">\n <div class=\"title-text-table\" v-bind:class=\"{ highlightText : (title.id==activeId) }\" v-on:click=\"titleClicked(title.id)\">\n <div class=\"title-text\">\n {{title.title}}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\n\nexport default {\n name: \"Tabs\",\n props: {\n tabTitles: {\n type: Array,\n default: () => []\n },\n activeId: {\n type: Number,\n default: 1\n }\n },\n methods: {\n titleClicked: function(id) {\n this.$emit(\"titleClicked\", id);\n },\n }\n\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n.tab-container{\n height: 28px;\n}\n\n.title {\n width: 101px;\n height: 28px;\n border: solid 1px #dcdfe6;\n border-bottom: none;\n background-color: white;\n display:inline-block;\n}\n\n.title:hover {\n cursor: pointer;\n}\n\n.title-text {\n text-align:center;\n display: table-cell;\n vertical-align: middle;\n font-size: 14px;\n}\n\n.title-text-table {\n display:table;\n height: 100%;\n width: 100%;\n}\n\n.parent-dialog:hover .title-text {\n color:#8300bf;\n}\n\n.highlightText {\n color:#8300bf;\n}\n\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tabs.vue?vue&type=template&id=5d1b9484&scoped=true&\"\nimport script from \"./Tabs.vue?vue&type=script&lang=js&\"\nexport * from \"./Tabs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Tabs.vue?vue&type=style&index=0&id=5d1b9484&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5d1b9484\",\n null\n \n)\n\nexport default component.exports","<template>\n <div ref=\"container\">\n <div v-if=\"!drawerOpen\" @click=\"toggleDrawer\" class=\"open-tab\">\n <i class=\"el-icon-arrow-left\"></i>\n </div>\n <el-drawer\n custom-class=\"my-drawer\"\n class=\"side-bar\"\n :visible.sync=\"drawerOpen\"\n :appendToBody=\"false\"\n :modal-append-to-body=\"false\"\n size=550\n :with-header=\"false\"\n :wrapperClosable=\"false\"\n :modal=\"false\"\n >\n <div class=\"box-card\">\n <div v-if=\"drawerOpen\" @click=\"close\" class=\"close-tab\">\n <i class=\"el-icon-arrow-right\"></i>\n </div>\n <div class=\"sidebar-container\">\n <tabs v-if=\"tabs.length > 1\" :tabTitles=\"tabs\" :activeId=\"activeId\"\n @titleClicked=\"tabClicked\"/>\n <template v-for=\"tab in tabs\">\n <sidebar-content class=\"sidebar-content-container\"\n v-show=\"tab.id===activeId\" :contextCardEntry=\"tab.contextCard\"\n :envVars=\"envVars\"\n v-bind:key=\"tab.id\" :ref=\"tab.id\"\n @search-changed=\"searchChanged(tab.id, $event)\"/>\n </template>\n </div>\n </div>\n </el-drawer>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport {\n Drawer,\n Icon,\n} from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport SidebarContent from './SidebarContent.vue';\nimport EventBus from './EventBus';\nimport Tabs from './Tabs'\n\nlocale.use(lang);\nVue.use(Drawer);\nVue.use(Icon);\n\nvar initial_state = {\n searchInput: \"\",\n lastSearch: \"\",\n results: [],\n drawerOpen: false,\n numberOfHits: 0,\n filter:{},\n filterFacet: undefined,\n loadingCards: false,\n numberPerPage: 10,\n page: 1,\n pageModel: 1,\n start: 0,\n hasSearched: false,\n sciCrunchError: false\n}\n\nexport default {\n components: {SidebarContent, Tabs },\n name: \"SideBar\",\n props: {\n visible: {\n type: Boolean,\n default: false\n },\n entry: {\n type: Object,\n default: () => (initial_state)\n },\n envVars: {\n type: Object,\n default: () => {}\n },\n tabs: {\n type: Array,\n default: () => [{title:'flatmap', id:1}]\n },\n activeId: {\n type: Number,\n default: 1\n },\n openAtStart: {\n type: Boolean,\n default: false\n }\n },\n data: function () {\n return {\n ...this.entry,\n }\n },\n methods: {\n searchChanged: function (id, data) {\n this.$emit(\"search-changed\", {...data, id: id});\n },\n close: function () {\n this.drawerOpen = false;\n },\n toggleDrawer: function () {\n this.drawerOpen = !this.drawerOpen;\n },\n openSearch: function(facets, query){\n this.drawerOpen = true;\n // Because refs are in v-for, nextTick is needed here\n Vue.nextTick(()=>{this.$refs[this.activeId][0].openSearch(facets, query)})\n },\n addFilter: function(filter){\n this.drawerOpen = true;\n // Because refs are in v-for, nextTick is needed here\n Vue.nextTick(()=>{this.$refs[this.activeId][0].addFilter(filter)})\n },\n openNeuronSearch: function(neuron){\n this.drawerOpen = true;\n // Because refs are in v-for, nextTick is needed here\n Vue.nextTick(()=>{this.$refs[this.activeId][0].openSearch('', undefined, 'scicrunch-query-string/', {'field': '*organ.curie', 'curie':neuron})})\n },\n tabClicked: function(id) {\n this.$emit(\"tabClicked\", id);\n },\n },\n created:function() {\n this.drawerOpen = this.openAtStart;\n },\n mounted: function(){\n EventBus.$on(\"PopoverActionClick\", (payLoad) => {\n this.$emit(\"actionClick\", payLoad);\n })\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n.box-card {\n flex: 3;\n height: 100%;\n overflow: hidden;\n pointer-events: auto;\n}\n\n.side-bar{\n position: relative;\n height: 100%;\n pointer-events: none;\n}\n\n.side-bar >>> .el-drawer:focus{\n outline:none;\n}\n\n.sidebar-container {\n height: 100%;\n flex-flow: column;\n display: flex;\n}\n\n.open-tab{\n width: 20px;\n height: 40px;\n z-index: 8;\n position: absolute;\n top: calc(50vh - 80px);\n right: 0px;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n background-color: #F7FAFF;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.el-icon-arrow-left{\n font-size: 20px;\n padding-top: 8px;\n color: #292b66;\n}\n\n.el-icon-arrow-right{\n font-size: 20px;\n padding-top: 8px;\n color: #292b66;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.close-tab{\n float: left;\n flex: 1;\n width: 20px;\n height: 40px;\n z-index: 8;\n margin-top: calc(50vh - 80px);\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n border-right: 0;\n background-color: #F7FAFF;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.box-card {\n flex: 3;\n height: 100%;\n overflow: hidden;\n pointer-events: auto;\n}\n\n>>> .my-drawer {\n background: rgba(0,0,0,0);\n box-shadow: none;\n}\n\n>>> .my-drawer .el-drawer__body {\n height: 100%;\n}\n\n.sidebar-content-container {\n flex: 1 1 auto;\n}\n\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SideBar.vue?vue&type=template&id=3d831a8e&scoped=true&\"\nimport script from \"./SideBar.vue?vue&type=script&lang=js&\"\nexport * from \"./SideBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SideBar.vue?vue&type=style&index=0&id=3d831a8e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d831a8e\",\n null\n \n)\n\nexport default component.exports","module.exports = require(\"core-js/modules/es.string.includes\");"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack://map-side-bar/webpack/universalModuleDefinition","webpack://map-side-bar/webpack/bootstrap","webpack://map-side-bar/external \"element-ui/lib/pagination\"","webpack://map-side-bar/external \"core-js/modules/es.symbol.iterator\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/pagination.css\"","webpack://map-side-bar/external \"core-js/modules/es.parse-int\"","webpack://map-side-bar/external \"element-ui/lib/select\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/select.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.for-each\"","webpack://map-side-bar/external \"core-js/modules/es.array.concat\"","webpack://map-side-bar/external \"core-js/modules/web.dom-collections.iterator\"","webpack://map-side-bar/external \"core-js/modules/es.object.keys\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/link.css\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/button.css\"","webpack://map-side-bar/external \"core-js/modules/web.url\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/loading.css\"","webpack://map-side-bar/external \"element-ui/lib/drawer\"","webpack://map-side-bar/external \"@abi-software/svg-sprite\"","webpack://map-side-bar/./src/components/Tabs.vue?88de","webpack://map-side-bar/external \"core-js/modules/es.object.get-own-property-descriptors\"","webpack://map-side-bar/external \"core-js/modules/es.string.split\"","webpack://map-side-bar/external \"core-js/modules/es.set\"","webpack://map-side-bar/external \"core-js/modules/es.array.filter\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/card.css\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/drawer.css\"","webpack://map-side-bar/external \"core-js/modules/es.symbol.description\"","webpack://map-side-bar/external \"core-js/modules/es.regexp.exec\"","webpack://map-side-bar/external \"element-ui/lib/button\"","webpack://map-side-bar/external \"core-js/modules/es.regexp.to-string\"","webpack://map-side-bar/external \"core-js/modules/es.symbol\"","webpack://map-side-bar/external \"core-js/modules/es.array.slice\"","webpack://map-side-bar/external \"core-js/modules/es.object.get-own-property-descriptor\"","webpack://map-side-bar/external \"element-ui/lib/cascader\"","webpack://map-side-bar/external \"element-ui/lib/locale/lang/en\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/cascader.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.sort\"","webpack://map-side-bar/external \"core-js/modules/es.number.constructor\"","webpack://map-side-bar/./src/components/SidebarContent.vue?f1d4","webpack://map-side-bar/external \"regenerator-runtime/runtime\"","webpack://map-side-bar/external \"core-js/modules/es.array.splice\"","webpack://map-side-bar/external \"element-ui/lib/link\"","webpack://map-side-bar/./src/components/ContextCard.vue?2ed7","webpack://map-side-bar/external \"element-ui/lib/locale\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/option.css\"","webpack://map-side-bar/external \"core-js/modules/es.promise\"","webpack://map-side-bar/external \"core-js/modules/es.object.to-string\"","webpack://map-side-bar/external \"algoliasearch\"","webpack://map-side-bar/external \"vue\"","webpack://map-side-bar/external \"core-js/modules/es.array.iterator\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/icon.css\"","webpack://map-side-bar/external \"core-js/modules/es.string.iterator\"","webpack://map-side-bar/external \"core-js/modules/es.map\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/base.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.flat\"","webpack://map-side-bar/./assets/missing-image.svg","webpack://map-side-bar/./src/components/SideBar.vue?f7bf","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/input.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.includes\"","webpack://map-side-bar/external \"element-ui/lib/loading\"","webpack://map-side-bar/external \"element-ui/lib/card\"","webpack://map-side-bar/external \"element-ui/lib/icon\"","webpack://map-side-bar/external \"core-js/modules/es.function.name\"","webpack://map-side-bar/external \"core-js/modules/web.dom-collections.for-each\"","webpack://map-side-bar/external \"core-js/modules/es.string.search\"","webpack://map-side-bar/external \"core-js/modules/es.string.replace\"","webpack://map-side-bar/external \"element-ui/lib/option\"","webpack://map-side-bar/./src/components/SearchFilters.vue?69f2","webpack://map-side-bar/external \"core-js/modules/es.array.last-index-of\"","webpack://map-side-bar/external \"current-script-polyfill\"","webpack://map-side-bar/external \"core-js/modules/es.array.from\"","webpack://map-side-bar/external \"element-ui/lib/input\"","webpack://map-side-bar/./src/components/DatasetCard.vue?c612","webpack://map-side-bar/external \"core-js/modules/es.object.entries\"","webpack://map-side-bar/external \"core-js/modules/es.array.unscopables.flat\"","webpack://map-side-bar/external \"core-js/modules/es.array.map\"","webpack://map-side-bar/external \"core-js/modules/es.promise.finally\"","webpack://map-side-bar/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://map-side-bar/./src/components/SideBar.vue?9566","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://map-side-bar/./src/components/SidebarContent.vue?e34e","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://map-side-bar/./src/components/SearchFilters.vue?b07d","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://map-side-bar/./src/components/Cascader.vue","webpack://map-side-bar/src/components/Cascader.vue","webpack://map-side-bar/./src/components/Cascader.vue?9729","webpack://map-side-bar/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://map-side-bar/./src/components/species-map.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://map-side-bar/./src/algolia/algolia.js","webpack://map-side-bar/./src/algolia/utils.js","webpack://map-side-bar/src/components/SearchFilters.vue","webpack://map-side-bar/./src/components/SearchFilters.vue?8079","webpack://map-side-bar/./src/components/SearchFilters.vue","webpack://map-side-bar/./src/components/DatasetCard.vue?cde9","webpack://map-side-bar/./src/components/EventBus.js","webpack://map-side-bar/./src/components/scaffold-meta-map.js","webpack://map-side-bar/src/components/DatasetCard.vue","webpack://map-side-bar/./src/components/DatasetCard.vue?d021","webpack://map-side-bar/./src/components/DatasetCard.vue","webpack://map-side-bar/./src/components/ContextCard.vue?bea5","webpack://map-side-bar/src/components/ContextCard.vue","webpack://map-side-bar/./src/components/ContextCard.vue?667e","webpack://map-side-bar/./src/components/ContextCard.vue","webpack://map-side-bar/src/components/SidebarContent.vue","webpack://map-side-bar/./src/components/SidebarContent.vue?7e01","webpack://map-side-bar/./src/components/SidebarContent.vue","webpack://map-side-bar/./src/components/Tabs.vue?5d47","webpack://map-side-bar/src/components/Tabs.vue","webpack://map-side-bar/./src/components/Tabs.vue?3d38","webpack://map-side-bar/./src/components/Tabs.vue","webpack://map-side-bar/src/components/SideBar.vue","webpack://map-side-bar/./src/components/SideBar.vue?b259","webpack://map-side-bar/./src/components/SideBar.vue","webpack://map-side-bar/external \"core-js/modules/es.string.includes\""],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","window","document","currentScript","src","match","render","_vm","_h","$createElement","_c","_self","ref","drawerOpen","_e","staticClass","on","toggleDrawer","attrs","$event","close","tabs","length","activeId","tabClicked","_l","tab","directives","rawName","id","expression","refInFor","contextCard","envVars","searchChanged","staticRenderFns","_defineProperty","obj","configurable","writable","bodyStyle","slot","contextCardEntry","clearSearchClicked","nativeOn","searchEvent","model","callback","$$v","searchInput","_v","filterEntry","filterUpdate","numberPerPageUpdate","filtersLoading","results","loadingCards","sciCrunchError","_s","page","numberPerPage","numberOfHits","pageChange","_arrayWithoutHoles","arr","Array","isArray","arr2","_iterableToArray","iter","iterator","toString","from","_nonIterableSpread","TypeError","_toConsumableArray","arrayWithoutHoles","iterableToArray","nonIterableSpread","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","done","Promise","then","_asyncToGenerator","fn","args","arguments","apply","err","undefined","options","props","cascadeEvent","cascadeExpandChange","tagsChangedCallback","cascadeSelected","numberShownChanged","numberShown","item","numberOfResultsText","_arrayWithHoles","_nonIterableRest","_toArray","arrayWithHoles","nonIterableRest","extends","methods","computePresentTags","customNodes","tags","push","genTag","first","restCount","collapseTags","text","closable","rest","forEach","checkedNodes","presentTags","$emit","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","component","_classCallCheck","instance","Constructor","_defineProperties","target","descriptor","_createClass","protoProps","staticProps","AlgoliaClient","algoliaId","algoliaKey","PENNSIEVE_API_LOCATION","client","algoliasearch","ALGOLIA_INDEX","index","initIndex","propPathMapping","map","Map","entries","facetPropPaths","keys","facetData","facetId","search","sortFacetValuesBy","facets","response","facetPropPath","children","responseFacets","responseFacetChildren","facet","label","discoverId","fetch","json","dataset","version","doi","discoverIds","promiseList","_discoverAllDois","all","values","flat","filter","query","hitsperPage","hitsPerPage","filters","searchData","items","hits","total","nbHits","pennsieve","identifier","dois","curie","split","facetPropPathMapping","getFilters","selectedFacetArray","f","removeShowAllFacets","facetsToOr","substring","lastIndexOf","facetArray","txt","charAt","toUpperCase","slice","capitalise","components","CustomCascader","SvgSpriteColor","entry","type","default","data","cascaderIsReady","previousShowAllChecked","species","gender","organ","datasets","showFilters","showFiltersText","numberDatasetsShown","computed","createCascaderItemValue","term","populateCascader","event","showAllEventModifier","setCascader","makeCascadeLabelsClickable","hasShowAll","facetMaps","showAll","splice","modifiedEvent","sort","a","b","__expandItem__","parseInt","updatePreviousShowAllChecked","element","toLowerCase","includes","filterFacets","addFilter","initiateSearch","checkShowAllBoxes","$nextTick","mounted","algoliaClient","class","expanded","thumbnail","openDataset","cardClicked","contributors","publishDate","publishYear","samples","simulation","openScaffold","openPlot","openRepository","openSimulation","cardOverflow","expand","EventBus","Vue","77","meta_file","title","description","bannerImage","image","76","32","string","replace","dataLocation","hasCSVFile","lastName","numberSamples","numberSubjects","organs","open","additionalLinks","el","xmlhttp","apiLocation","setRequestHeader","onreadystatechange","readyState","status","url","JSON","parse","responseText","uri","send","stringify","isSedmlResource","resource","getScaffoldPath","path","getFileFromPath","isOverflown","clientHeight","scrollHeight","splitDOI","getBanner","fullName","$refs","card","updated","watch","showDetails","padding","display","width","staticStyle","handleErrors","initial_state","lastSearch","pageModel","start","hasSearched","visible","Boolean","isDrawer","firstSearch","String","flex","openSearch","resetPageNavigation","searchAlgolia","filtersRef","keyCode","MouseEvent","val","searchSciCrunch","disableCards","callSciCrunch","API_LOCATION","params","content","scroll","style","resultsProcessing","sampleSize","subjectSize","timestamp","datasetId","organisms","csvFiles","scaffolds","s3uri","createfilterParams","append","e","fullEndpoint","console","log","created","searchEndpoint","highlightText","titleClicked","tabTitles","Number","openAtStart","openNeuronSearch"],"mappings":"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","file":"map-side-bar.umd.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"map-side-bar\"] = factory();\n\telse\n\t\troot[\"map-side-bar\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fae3\");\n","module.exports = require(\"element-ui/lib/pagination\");","module.exports = require(\"core-js/modules/es.symbol.iterator\");","module.exports = require(\"element-ui/lib/theme-chalk/pagination.css\");","module.exports = require(\"core-js/modules/es.parse-int\");","module.exports = require(\"element-ui/lib/select\");","module.exports = require(\"element-ui/lib/theme-chalk/select.css\");","module.exports = require(\"core-js/modules/es.array.for-each\");","module.exports = require(\"core-js/modules/es.array.concat\");","module.exports = require(\"core-js/modules/web.dom-collections.iterator\");","module.exports = require(\"core-js/modules/es.object.keys\");","module.exports = require(\"element-ui/lib/theme-chalk/link.css\");","module.exports = require(\"element-ui/lib/theme-chalk/button.css\");","module.exports = require(\"core-js/modules/web.url\");","module.exports = require(\"element-ui/lib/theme-chalk/loading.css\");","module.exports = require(\"element-ui/lib/drawer\");","module.exports = require(\"@abi-software/svg-sprite\");","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=style&index=0&id=d68260c4&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=style&index=0&id=d68260c4&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/es.object.get-own-property-descriptors\");","module.exports = require(\"core-js/modules/es.string.split\");","module.exports = require(\"core-js/modules/es.set\");","module.exports = require(\"core-js/modules/es.array.filter\");","module.exports = require(\"element-ui/lib/theme-chalk/card.css\");","module.exports = require(\"element-ui/lib/theme-chalk/drawer.css\");","module.exports = require(\"core-js/modules/es.symbol.description\");","module.exports = require(\"core-js/modules/es.regexp.exec\");","module.exports = require(\"element-ui/lib/button\");","module.exports = require(\"core-js/modules/es.regexp.to-string\");","module.exports = require(\"core-js/modules/es.symbol\");","module.exports = require(\"core-js/modules/es.array.slice\");","module.exports = require(\"core-js/modules/es.object.get-own-property-descriptor\");","module.exports = require(\"element-ui/lib/cascader\");","module.exports = require(\"element-ui/lib/locale/lang/en\");","module.exports = require(\"element-ui/lib/theme-chalk/cascader.css\");","module.exports = require(\"core-js/modules/es.array.sort\");","module.exports = require(\"core-js/modules/es.number.constructor\");","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarContent.vue?vue&type=style&index=0&id=930a8680&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarContent.vue?vue&type=style&index=0&id=930a8680&scoped=true&lang=css&\"","module.exports = require(\"regenerator-runtime/runtime\");","module.exports = require(\"core-js/modules/es.array.splice\");","module.exports = require(\"element-ui/lib/link\");","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextCard.vue?vue&type=style&index=0&id=262a6750&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextCard.vue?vue&type=style&index=0&id=262a6750&scoped=true&lang=css&\"","module.exports = require(\"element-ui/lib/locale\");","module.exports = require(\"element-ui/lib/theme-chalk/option.css\");","module.exports = require(\"core-js/modules/es.promise\");","module.exports = require(\"core-js/modules/es.object.to-string\");","module.exports = require(\"algoliasearch\");","module.exports = require(\"vue\");","module.exports = require(\"core-js/modules/es.array.iterator\");","module.exports = require(\"element-ui/lib/theme-chalk/icon.css\");","module.exports = require(\"core-js/modules/es.string.iterator\");","module.exports = require(\"core-js/modules/es.map\");","module.exports = require(\"element-ui/lib/theme-chalk/base.css\");","module.exports = require(\"core-js/modules/es.array.flat\");","module.exports = __webpack_public_path__ + \"img/missing-image.1878d8b8.svg\";","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=style&index=0&id=3f7eb1a5&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=style&index=0&id=3f7eb1a5&scoped=true&lang=css&\"","module.exports = require(\"element-ui/lib/theme-chalk/input.css\");","module.exports = require(\"core-js/modules/es.array.includes\");","module.exports = require(\"element-ui/lib/loading\");","module.exports = require(\"element-ui/lib/card\");","module.exports = require(\"element-ui/lib/icon\");","module.exports = require(\"core-js/modules/es.function.name\");","module.exports = require(\"core-js/modules/web.dom-collections.for-each\");","module.exports = require(\"core-js/modules/es.string.search\");","module.exports = require(\"core-js/modules/es.string.replace\");","module.exports = require(\"element-ui/lib/option\");","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilters.vue?vue&type=style&index=0&id=e43dafae&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilters.vue?vue&type=style&index=0&id=e43dafae&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/es.array.last-index-of\");","module.exports = require(\"current-script-polyfill\");","module.exports = require(\"core-js/modules/es.array.from\");","module.exports = require(\"element-ui/lib/input\");","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DatasetCard.vue?vue&type=style&index=0&id=0e9538ce&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DatasetCard.vue?vue&type=style&index=0&id=0e9538ce&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/es.object.entries\");","module.exports = require(\"core-js/modules/es.array.unscopables.flat\");","module.exports = require(\"core-js/modules/es.array.map\");","module.exports = require(\"core-js/modules/es.promise.finally\");","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n require('current-script-polyfill')\n }\n\n var i\n if ((i = window.document.currentScript) && (i = i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n __webpack_public_path__ = i[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\"},[(!_vm.drawerOpen)?_c('div',{staticClass:\"open-tab\",on:{\"click\":_vm.toggleDrawer}},[_c('i',{staticClass:\"el-icon-arrow-left\"})]):_vm._e(),_c('el-drawer',{staticClass:\"side-bar\",attrs:{\"custom-class\":\"my-drawer\",\"visible\":_vm.drawerOpen,\"appendToBody\":false,\"modal-append-to-body\":false,\"size\":\"550\",\"with-header\":false,\"wrapperClosable\":false,\"modal\":false},on:{\"update:visible\":function($event){_vm.drawerOpen=$event}}},[_c('div',{staticClass:\"box-card\"},[(_vm.drawerOpen)?_c('div',{staticClass:\"close-tab\",on:{\"click\":_vm.close}},[_c('i',{staticClass:\"el-icon-arrow-right\"})]):_vm._e(),_c('div',{staticClass:\"sidebar-container\"},[(_vm.tabs.length > 1)?_c('tabs',{attrs:{\"tabTitles\":_vm.tabs,\"activeId\":_vm.activeId},on:{\"titleClicked\":_vm.tabClicked}}):_vm._e(),_vm._l((_vm.tabs),function(tab){return [_c('sidebar-content',{directives:[{name:\"show\",rawName:\"v-show\",value:(tab.id===_vm.activeId),expression:\"tab.id===activeId\"}],key:tab.id,ref:tab.id,refInFor:true,staticClass:\"sidebar-content-container\",attrs:{\"contextCardEntry\":tab.contextCard,\"envVars\":_vm.envVars},on:{\"search-changed\":function($event){return _vm.searchChanged(tab.id, $event)}}})]})],2)])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-card',{staticClass:\"content-card\",attrs:{\"body-style\":_vm.bodyStyle}},[_c('div',{staticClass:\"header\",attrs:{\"slot\":\"header\"},slot:\"header\"},[(_vm.contextCardEntry)?_c('context-card',{attrs:{\"entry\":_vm.contextCardEntry}}):_vm._e(),_c('el-input',{staticClass:\"search-input\",attrs:{\"placeholder\":\"Search\",\"clearable\":\"\"},on:{\"clear\":_vm.clearSearchClicked},nativeOn:{\"keyup\":function($event){return _vm.searchEvent($event)}},model:{value:(_vm.searchInput),callback:function ($$v) {_vm.searchInput=$$v},expression:\"searchInput\"}}),_c('el-button',{staticClass:\"button\",on:{\"click\":_vm.searchEvent}},[_vm._v(\"Search\")])],1),_c('SearchFilters',{ref:\"filtersRef\",staticClass:\"filters\",attrs:{\"entry\":_vm.filterEntry,\"envVars\":_vm.envVars},on:{\"filterResults\":_vm.filterUpdate,\"numberPerPage\":_vm.numberPerPageUpdate,\"loading\":_vm.filtersLoading}}),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loadingCards),expression:\"loadingCards\"}],ref:\"content\",staticClass:\"content scrollbar\"},[(_vm.results.length === 0 && !_vm.loadingCards && !_vm.sciCrunchError)?_c('div',{staticClass:\"error-feedback\"},[_vm._v(\"No results found - Please change your search / filter criteria.\")]):_vm._e(),(_vm.sciCrunchError)?_c('div',{staticClass:\"error-feedback\"},[_vm._v(_vm._s(_vm.sciCrunchError))]):_vm._e(),_vm._l((_vm.results),function(o){return _c('div',{key:o.id,staticClass:\"step-item\"},[_c('DatasetCard',{attrs:{\"entry\":o,\"envVars\":_vm.envVars}})],1)}),_c('el-pagination',{staticClass:\"pagination\",attrs:{\"current-page\":_vm.page,\"hide-on-single-page\":\"\",\"large\":\"\",\"layout\":\"prev, pager, next\",\"page-size\":_vm.numberPerPage,\"total\":_vm.numberOfHits},on:{\"update:currentPage\":function($event){_vm.page=$event},\"update:current-page\":function($event){_vm.page=$event},\"current-change\":_vm.pageChange}})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"filters\"},[_c('SvgSpriteColor'),_c('transition',{attrs:{\"name\":\"el-zoom-in-top\"}},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showFilters),expression:\"showFilters\"}],staticClass:\"search-filters transition-box\"},[_c('custom-cascader',{ref:\"cascader\",staticClass:\"cascader\",attrs:{\"placeholder\":\"\",\"collapse-tags\":true,\"options\":_vm.options,\"props\":_vm.props,\"show-all-levels\":false,\"append-to-body\":false},on:{\"change\":function($event){return _vm.cascadeEvent($event)},\"expand-change\":_vm.cascadeExpandChange,\"tags-changed\":_vm.tagsChangedCallback},model:{value:(_vm.cascadeSelected),callback:function ($$v) {_vm.cascadeSelected=$$v},expression:\"cascadeSelected\"}}),(_vm.showFiltersText)?_c('div',{staticClass:\"filter-default-value\"},[_c('svg-icon',{staticClass:\"filter-icon-inside\",attrs:{\"icon\":\"noun-filter\"}}),_vm._v(\"Apply Filters \")],1):_vm._e()],1)]),_c('el-select',{staticClass:\"number-shown-select\",attrs:{\"placeholder\":\"10\"},on:{\"change\":function($event){return _vm.numberShownChanged($event)}},model:{value:(_vm.numberShown),callback:function ($$v) {_vm.numberShown=$$v},expression:\"numberShown\"}},_vm._l((_vm.numberDatasetsShown),function(item){return _c('el-option',{key:item,attrs:{\"label\":item,\"value\":item}})}),1),_c('span',{staticClass:\"dataset-results-feedback\"},[_vm._v(_vm._s(this.numberOfResultsText))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || nonIterableRest();\n}","var render, staticRenderFns\nimport script from \"./Cascader.vue?vue&type=script&lang=js&\"\nexport * from \"./Cascader.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<script>\r\n/* eslint-disable no-alert, no-console */\r\nimport { Cascader } from \"element-ui\";\r\n\r\nexport default {\r\n name: 'CustomCascader',\r\n extends: Cascader,\r\n methods:{\r\n //Modify this internal function to disable Show all tags\r\n computePresentTags() {\r\n const { isDisabled, leafOnly, showAllLevels, separator, collapseTags } = this;\r\n const checkedNodes = this.getCheckedNodes(leafOnly);\r\n const tags = [];\r\n const genTag = node => ({\r\n node,\r\n key: node.uid,\r\n text: node.getText(showAllLevels, separator),\r\n hitState: false,\r\n closable: !isDisabled && !node.isDisabled\r\n });\r\n let customNodes = checkedNodes.filter(node =>\r\n {\r\n return !(node.getText(showAllLevels, separator).includes(\"Show all\"));\r\n }\r\n );\r\n if (customNodes.length) {\r\n const [first, ...rest] = customNodes;\r\n const restCount = rest.length;\r\n tags.push(genTag(first));\r\n if (restCount) {\r\n if (collapseTags) {\r\n tags.push({\r\n key: -1,\r\n text: `+ ${restCount}`,\r\n closable: false\r\n });\r\n } else {\r\n rest.forEach(node => tags.push(genTag(node)));\r\n }\r\n }\r\n }\r\n this.checkedNodes = checkedNodes;\r\n this.presentTags = tags;\r\n this.$emit(\"tags-changed\", this.presentTags);\r\n }\r\n }\r\n}\r\n\r\n</script>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cascader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cascader.vue?vue&type=script&lang=js&\"","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","export default {\r\n 'homo sapiens': 'Human',\r\n 'rattus norvegicus': 'Rat',\r\n 'mus musculus': 'Mouse',\r\n 'sus scrofa domesticus': 'Pig',\r\n 'sus scrofa': 'Boar',\r\n 'felis catus': 'Cat'\r\n}\r\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* eslint-disable no-alert, no-console */\r\nimport algoliasearch from 'algoliasearch'\r\n\r\n// export `createAlgoliaClient` to use it in page components\r\nexport class AlgoliaClient {\r\n constructor(algoliaId, algoliaKey, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {\r\n this.client = algoliasearch(\r\n algoliaId,\r\n algoliaKey\r\n )\r\n this.PENNSIEVE_API_LOCATION = PENNSIEVE_API_LOCATION\r\n }\r\n initIndex(ALGOLIA_INDEX) {\r\n this.index = this.client.initIndex(ALGOLIA_INDEX);\r\n }\r\n\r\n getAlgoliaFacets (propPathMapping) {\r\n const map = new Map(Object.entries(propPathMapping));\r\n const facetPropPaths = Array.from(map.keys() );\r\n let facetData = []\r\n let facetId = 0\r\n return this.index\r\n .search('', {\r\n sortFacetValuesBy: 'alpha',\r\n facets: facetPropPaths\r\n })\r\n .then(response => {\r\n facetPropPaths.map((facetPropPath) => {\r\n var children = []\r\n const responseFacets = response.facets\r\n if (responseFacets === undefined) {return}\r\n const responseFacetChildren =\r\n responseFacets[facetPropPath] == undefined\r\n ? {}\r\n : responseFacets[facetPropPath]\r\n Object.keys(responseFacetChildren).map(facet => {\r\n children.push({\r\n label: facet,\r\n id: facetId++,\r\n facetPropPath: facetPropPath\r\n })\r\n })\r\n if (children.length > 0) {\r\n facetData.push({\r\n label: map.get(facetPropPath),\r\n id: facetId++,\r\n children: children,\r\n key: facetPropPath\r\n })\r\n }\r\n })\r\n return facetData\r\n })\r\n }\r\n \r\n // Returns all DOIs of all versions for a given discover dataset\r\n _discoverAllDois (discoverId, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {\r\n return new Promise(resolve => {\r\n fetch(`${PENNSIEVE_API_LOCATION}/discover/datasets/${discoverId}/versions`).then(r=>r.json()).then(dataset => {\r\n resolve(dataset.map(version => version.doi))\r\n })\r\n })\r\n }\r\n \r\n // Get all dois given a list of discoverIds\r\n _expandDois (discoverIds, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {\r\n return new Promise(resolve => {\r\n let promiseList = discoverIds.map(discoverId => this._discoverAllDois(discoverId, PENNSIEVE_API_LOCATION))\r\n Promise.all(promiseList).then((values) => {\r\n resolve(values.flat())\r\n });\r\n })\r\n }\r\n \r\n /**\r\n * Get Search results\r\n * This is using fetch from the Algolia API\r\n */\r\n search (filter, query='', hitsperPage=10, page=1) {\r\n return new Promise(resolve => {\r\n this.index\r\n .search(query, {\r\n facets:['*'],\r\n hitsPerPage: hitsperPage,\r\n page: page-1,\r\n filters: filter\r\n })\r\n .then(response => {\r\n let searchData = {\r\n items: response.hits,\r\n total: response.nbHits,\r\n discoverIds: response.hits.map(r=>r.pennsieve.identifier),\r\n dois: response.hits.map(r=>r.item.curie.split(':')[1])\r\n }\r\n resolve(searchData)\r\n })\r\n })\r\n }\r\n}\r\n","/* eslint-disable no-alert, no-console */\r\n\r\n// Mapping between display categories and their Algolia index property path\r\n// Used for populating the Dataset Search Results facet menu dynamically\r\nexport const facetPropPathMapping = {\r\n 'anatomy.organ.name' : 'Anatomical Structure',\r\n 'organisms.primary.species.name' : 'Species',\r\n 'item.modalities.keyword' : 'Experimental Approach',\r\n 'attributes.subject.sex.value' : 'Sex',\r\n 'attributes.subject.ageCategory.value' : 'Age Categories',\r\n}\r\n\r\n/* Returns filter for searching algolia. All facets of the same category are joined with OR,\r\n * and each of those results is then joined with an AND.\r\n * i.e. (color:blue OR color:red) AND (shape:circle OR shape:red) */\r\nexport function getFilters(selectedFacetArray=undefined) {\r\n \r\n // return all datasets if no filter\r\n if (selectedFacetArray === undefined) {\r\n return 'NOT item.published.status:embargo'\r\n }\r\n\r\n // Switch the 'term' attribute to 'label' if 'label' does not exist \r\n selectedFacetArray.forEach(f=>f.label=f.facet)\r\n \r\n\r\n let facets = removeShowAllFacets(selectedFacetArray)\r\n\r\n let filters = \"NOT item.published.status:embargo\";\r\n filters = `(${filters}) AND `;\r\n\r\n const facetPropPaths = Object.keys(facetPropPathMapping);\r\n facetPropPaths.map((facetPropPath) => {\r\n const facetsToOr = facets.filter(\r\n (facet) => facet.facetPropPath == facetPropPath\r\n );\r\n var filter = \"\";\r\n facetsToOr.map((facet) => {\r\n filter += `\"${facetPropPath}\":\"${facet.label}\" OR `;\r\n });\r\n if (filter == \"\") {\r\n return;\r\n }\r\n filter = `(${filter.substring(0, filter.lastIndexOf(\" OR \"))})`;\r\n filters += `${filter} AND `;\r\n });\r\n return filters.substring(0, filters.lastIndexOf(\" AND \"));\r\n}\r\n\r\nfunction removeShowAllFacets(facetArray){\r\n return facetArray.filter( f => f.label !== 'Show all')\r\n}","<template>\r\n <div class=\"filters\">\r\n <SvgSpriteColor />\r\n <transition name=\"el-zoom-in-top\">\r\n <span v-show=\"showFilters\" class=\"search-filters transition-box\">\r\n <custom-cascader\r\n class=\"cascader\"\r\n ref=\"cascader\"\r\n v-model=\"cascadeSelected\"\r\n placeholder\r\n :collapse-tags=\"true\"\r\n :options=\"options\"\r\n :props=\"props\"\r\n @change=\"cascadeEvent($event)\"\r\n @expand-change=\"cascadeExpandChange\"\r\n :show-all-levels=\"false\"\r\n :append-to-body=\"false\"\r\n @tags-changed=\"tagsChangedCallback\"\r\n ></custom-cascader>\r\n <div v-if=\"showFiltersText\" class=\"filter-default-value\">\r\n <svg-icon icon=\"noun-filter\" class=\"filter-icon-inside\" />Apply\r\n Filters\r\n </div>\r\n </span>\r\n </transition>\r\n\r\n <el-select\r\n class=\"number-shown-select\"\r\n v-model=\"numberShown\"\r\n placeholder=\"10\"\r\n @change=\"numberShownChanged($event)\"\r\n >\r\n <el-option\r\n v-for=\"item in numberDatasetsShown\"\r\n :key=\"item\"\r\n :label=\"item\"\r\n :value=\"item\"\r\n ></el-option>\r\n </el-select>\r\n <span class=\"dataset-results-feedback\">{{ this.numberOfResultsText }}</span>\r\n </div>\r\n</template>\r\n\r\n\r\n<script>\r\n/* eslint-disable no-alert, no-console */\r\nimport Vue from \"vue\";\r\nimport { Option, Select } from \"element-ui\";\r\nimport CustomCascader from \"./Cascader\";\r\nimport lang from \"element-ui/lib/locale/lang/en\";\r\nimport locale from \"element-ui/lib/locale\";\r\nimport speciesMap from \"./species-map\";\r\nimport { SvgIcon, SvgSpriteColor } from \"@abi-software/svg-sprite\";\r\n\r\nimport {AlgoliaClient} from \"../algolia/algolia.js\";\r\nimport { facetPropPathMapping } from \"../algolia/utils.js\";\r\n\r\nVue.component(\"svg-icon\", SvgIcon);\r\n\r\nlocale.use(lang);\r\nVue.use(Option);\r\nVue.use(Select);\r\n\r\nconst capitalise = function (txt) {\r\n return txt.charAt(0).toUpperCase() + txt.slice(1);\r\n};\r\n\r\nconst convertReadableLabel = function (original) {\r\n const name = original.toLowerCase();\r\n if (speciesMap[name]) {\r\n return capitalise(speciesMap[name]);\r\n } else {\r\n return capitalise(name);\r\n }\r\n};\r\n\r\nexport default {\r\n name: \"SearchFilters\",\r\n components: {\r\n CustomCascader,\r\n SvgSpriteColor,\r\n },\r\n props: {\r\n /**\r\n * Object containing information for\r\n * the required viewing.\r\n */\r\n entry: Object,\r\n envVars: {\r\n type: Object,\r\n default: ()=>{}\r\n },\r\n },\r\n data: function () {\r\n return {\r\n cascaderIsReady: false,\r\n previousShowAllChecked: {\r\n species: false,\r\n gender: false,\r\n organ: false,\r\n datasets: false,\r\n },\r\n showFilters: true,\r\n showFiltersText: true,\r\n cascadeSelected: [],\r\n numberShown: 10,\r\n filters: [],\r\n facets: [\"Species\", \"Gender\", \"Organ\", \"Datasets\"],\r\n numberDatasetsShown: [\"10\", \"20\", \"50\"],\r\n props: { multiple: true },\r\n options: [\r\n {\r\n value: \"Species\",\r\n label: \"Species\",\r\n children: [{}],\r\n },\r\n ],\r\n };\r\n },\r\n computed: {\r\n numberOfResultsText: function () {\r\n return `${this.entry.numberOfHits} results | Showing`;\r\n },\r\n },\r\n methods: {\r\n createCascaderItemValue: function (term, facet) {\r\n if (facet) return term + \"/\" + facet;\r\n else return term;\r\n },\r\n populateCascader: function () {\r\n return new Promise((resolve) => {\r\n // Algolia facet serach\r\n this.algoliaClient.getAlgoliaFacets(facetPropPathMapping)\r\n .then((data) => {\r\n this.facets = data;\r\n this.options = data;\r\n\r\n // create top level of options in cascader\r\n this.options.forEach((facet, i) => {\r\n this.options[i].label = convertReadableLabel(facet.label);\r\n this.options[i].value = this.createCascaderItemValue(\r\n facet.key,\r\n undefined\r\n );\r\n\r\n // put \"Show all\" as first option\r\n this.options[i].children.unshift({\r\n value: this.createCascaderItemValue(\"Show all\"),\r\n label: \"Show all\",\r\n });\r\n\r\n // populate second level of options \r\n this.options[i].children.forEach((facetItem, j) => {\r\n this.options[i].children[j].label = convertReadableLabel(\r\n facetItem.label\r\n );\r\n this.options[i].children[j].value =\r\n this.createCascaderItemValue(facet.label, facetItem.label);\r\n });\r\n });\r\n })\r\n .finally(() => {\r\n resolve();\r\n });\r\n });\r\n },\r\n tagsChangedCallback: function (presentTags) {\r\n if (presentTags.length > 0) {\r\n this.showFiltersText = false;\r\n } else {\r\n this.showFiltersText = true;\r\n }\r\n },\r\n // cascadeEvent: initiate searches based off cascader changes\r\n cascadeEvent: function (event) {\r\n if (event) {\r\n // Check for show all in selected cascade options\r\n event = this.showAllEventModifier(event);\r\n\r\n // Move results from arrays to object\r\n let filters = event.filter( selection => selection !== undefined).map( fs => ({\r\n facetPropPath: fs[0], \r\n facet: fs[1].split(\"/\")[1],\r\n term: fs[1].split(\"/\")[0], \r\n }))\r\n\r\n this.$emit('loading', true) // let sidebarcontent wait for the requests\r\n\r\n this.$emit(\"filterResults\", filters); // emit filters for apps above sidebar\r\n this.setCascader(filters); //update our cascader v-model if we modified the event\r\n this.makeCascadeLabelsClickable();\r\n }\r\n },\r\n // showAllEventModifier: Modifies a cascade event to unlick all selections in category if \"show all\" is clicked. Also unchecks \"Show all\" if any secection is clicked\r\n // *NOTE* Does NOT remove 'Show all' selections from showing in 'cascadeSelected'\r\n showAllEventModifier: function (event) {\r\n // check if show all is in the cascader checked option list\r\n let hasShowAll = event\r\n .map((ev) => (ev ? ev[1].toLowerCase().includes(\"show all\") : false))\r\n .includes(true);\r\n // remove all selected options below the show all if checked\r\n if (hasShowAll) {\r\n let modifiedEvent = [];\r\n let facetMaps = {};\r\n //catagorised different facet items\r\n for (const i in event) {\r\n if (facetMaps[event[i][0]] === undefined) facetMaps[event[i][0]] = [];\r\n facetMaps[event[i][0]].push(event[i]);\r\n }\r\n // go through each facets\r\n for (const facet in facetMaps) {\r\n let showAll = undefined;\r\n // Find the show all item if any\r\n for (let i = facetMaps[facet].length - 1; i >= 0; i--) {\r\n if (facetMaps[facet][i][1].toLowerCase().includes(\"show all\")) {\r\n //seperate the showAll item and the rest\r\n showAll = facetMaps[facet].splice(i, 1)[0];\r\n break;\r\n }\r\n }\r\n if (showAll) {\r\n if (this.previousShowAllChecked[facet]) {\r\n //Unset the show all if it was present previously\r\n //and there are other items\r\n if (facetMaps[facet].length > 0)\r\n modifiedEvent.push(...facetMaps[facet]);\r\n else modifiedEvent.push(showAll);\r\n } else {\r\n //showAll is turned on\r\n modifiedEvent.push(showAll);\r\n }\r\n } else {\r\n modifiedEvent.push(...facetMaps[facet]);\r\n }\r\n }\r\n //Make sure the expanded item are sorted first.\r\n return modifiedEvent.sort((a, b) => {\r\n if (this.__expandItem__) {\r\n if (a[0] == this.__expandItem__) {\r\n if (b[0] == this.__expandItem__) {\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n } else if (b[0] == this.__expandItem__) {\r\n if (a[0] == this.__expandItem__) {\r\n return 0;\r\n } else {\r\n return 1;\r\n }\r\n } else {\r\n return 0;\r\n }\r\n } else return 0;\r\n });\r\n }\r\n return event;\r\n },\r\n cascadeExpandChange: function (event) {\r\n //work around as the expand item may change on modifying the cascade props\r\n this.__expandItem__ = event;\r\n this.makeCascadeLabelsClickable();\r\n },\r\n numberShownChanged: function (event) {\r\n this.$emit(\"numberPerPage\", parseInt(event));\r\n },\r\n updatePreviousShowAllChecked: function (options) {\r\n //Reset the states\r\n for (const facet in this.previousShowAllChecked) {\r\n this.previousShowAllChecked[facet] = false;\r\n }\r\n options.forEach((element) => {\r\n if (element[1].toLowerCase().includes(\"show all\"))\r\n this.previousShowAllChecked[element[0]] = true;\r\n });\r\n },\r\n // setCascader: Clears previous selections and takes in an array of facets to select: filterFacets\r\n // facets are in the form:\r\n // {\r\n // facetPropPath: 'anatomy.organ.name',\r\n // term: 'Sex',\r\n // facet: 'Male'\r\n // }\r\n setCascader: function (filterFacets) {\r\n //Do not set the value unless it is ready\r\n if (this.cascaderIsReady && filterFacets && filterFacets.length != 0) {\r\n this.cascadeSelected = filterFacets.map(e => {\r\n return [\r\n e.facetPropPath,\r\n this.createCascaderItemValue(capitalise(e.term), e.facet),\r\n ]\r\n });\r\n this.updatePreviousShowAllChecked(this.cascadeSelected);\r\n }\r\n },\r\n addFilter: function (filter) {\r\n //Do not set the value unless it is ready\r\n if (this.cascaderIsReady && filter) {\r\n this.cascadeSelected.filter(f=>f.term != filter.term)\r\n this.cascadeSelected.push([filter.facetPropPath, this.createCascaderItemValue(filter.term, filter.facet)])\r\n }\r\n },\r\n initiateSearch: function() {\r\n this.cascadeEvent(this.cascadeSelected)\r\n },\r\n // checkShowAllBoxes: Checks each 'Show all' cascade option by using the setCascader function\r\n checkShowAllBoxes: function(){\r\n this.setCascader(\r\n this.options.map(option => {\r\n return {\r\n facetPropPath: option.value,\r\n term: option.label,\r\n facet: 'Show all'\r\n }\r\n })\r\n )\r\n },\r\n makeCascadeLabelsClickable: function () {\r\n // Next tick allows the cascader menu to change\r\n this.$nextTick(() => {\r\n this.$refs.cascader.$el\r\n .querySelectorAll(\".el-cascader-node__label\")\r\n .forEach((el) => {\r\n // step through each cascade label\r\n el.onclick = function () {\r\n const checkbox = this.previousElementSibling;\r\n if (checkbox) {\r\n if (!checkbox.parentElement.attributes[\"aria-owns\"]) {\r\n // check if we are at the lowest level of cascader\r\n this.previousElementSibling.click(); // Click the checkbox\r\n }\r\n }\r\n };\r\n });\r\n });\r\n },\r\n },\r\n mounted: function () {\r\n this.algoliaClient = new AlgoliaClient(this.envVars.ALGOLIA_ID, this.envVars.ALGOLIA_KEY, this.envVars.PENNSIEVE_API_LOCATION);\r\n this.algoliaClient.initIndex(this.envVars.ALGOLIA_INDEX);\r\n this.populateCascader().then(() => {\r\n this.cascaderIsReady = true;\r\n this.checkShowAllBoxes()\r\n this.setCascader(this.entry.filterFacets);\r\n this.makeCascadeLabelsClickable();\r\n });\r\n },\r\n};\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n.filter-default-value {\r\n pointer-events: none;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n padding-top: 10px;\r\n padding-left: 16px;\r\n}\r\n\r\n.filter-icon-inside {\r\n width: 12px !important;\r\n height: 12px !important;\r\n color: #292b66;\r\n transform: scale(2) !important;\r\n margin-bottom: 0px !important;\r\n}\r\n\r\n.cascader {\r\n font-family: Asap;\r\n font-size: 14px;\r\n font-weight: 500;\r\n font-stretch: normal;\r\n font-style: normal;\r\n line-height: normal;\r\n letter-spacing: normal;\r\n color: #292b66;\r\n text-align: center;\r\n padding-bottom: 6px;\r\n}\r\n\r\n.cascader >>> .el-cascder-panel {\r\n max-height: 500px;\r\n}\r\n\r\n.cascader >>> .el-scrollbar__wrap {\r\n overflow-x: hidden;\r\n margin-bottom: 2px !important;\r\n}\r\n\r\n.cascader >>> li[aria-owns*=\"cascader\"] > .el-checkbox {\r\n display: none;\r\n}\r\n\r\n.dataset-results-feedback {\r\n float: right;\r\n text-align: right;\r\n color: rgb(48, 49, 51);\r\n font-family: Asap;\r\n font-size: 18px;\r\n font-weight: 500;\r\n padding-top: 8px;\r\n}\r\n\r\n.search-filters {\r\n position: relative;\r\n float: left;\r\n padding-right: 15px;\r\n padding-bottom: 12px;\r\n}\r\n\r\n.number-shown-select {\r\n float: right;\r\n}\r\n\r\n.number-shown-select >>> .el-input__inner {\r\n width: 68px;\r\n height: 40px;\r\n color: rgb(48, 49, 51);\r\n}\r\n\r\n.search-filters >>> .el-cascader-node.is-active {\r\n color: #8300bf;\r\n}\r\n\r\n.search-filters >>> .el-cascader-node.in-active-path {\r\n color: #8300bf;\r\n}\r\n\r\n.search-filters >>> .el-checkbox__input.is-checked > .el-checkbox__inner {\r\n background-color: #8300bf;\r\n border-color: #8300bf;\r\n}\r\n\r\n.cascader >>> .el-cascader-menu:nth-child(2) .el-cascader-node:first-child {\r\n border-bottom: 1px solid #e4e7ed;\r\n}\r\n\r\n.cascader >>> .el-cascader-node__label {\r\n text-align: left;\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilters.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilters.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SearchFilters.vue?vue&type=template&id=e43dafae&scoped=true&\"\nimport script from \"./SearchFilters.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchFilters.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchFilters.vue?vue&type=style&index=0&id=e43dafae&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e43dafae\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"dataset-card-container\"},[_c('div',{ref:\"card\",class:_vm.expanded ? 'dataset-card-expanded' : 'dataset-card'},[(_vm.entry.id !== 0)?_c('div',{staticClass:\"seperator-path\"}):_vm._e(),_c('div',{staticClass:\"card\"},[_c('span',{staticClass:\"card-left\"},[_c('img',{staticClass:\"banner-img\",attrs:{\"svg-inline\":\"\",\"src\":_vm.thumbnail},on:{\"click\":_vm.openDataset}})]),_c('div',{staticClass:\"card-right\"},[_c('div',{staticClass:\"title\",on:{\"click\":_vm.cardClicked}},[_vm._v(_vm._s(_vm.entry.name))]),_c('div',{staticClass:\"details\"},[_vm._v(_vm._s(_vm.contributors)+\" \"+_vm._s(_vm.entry.publishDate ? (\"(\" + _vm.publishYear + \")\") : ''))]),_c('div',{staticClass:\"details\"},[_vm._v(_vm._s(_vm.samples))]),_c('div',{staticClass:\"details\"},[_vm._v(\"id: \"+_vm._s(_vm.discoverId))]),_c('div',[(!_vm.entry.simulation)?_c('el-button',{staticClass:\"button\",attrs:{\"size\":\"mini\",\"icon\":\"el-icon-coin\"},on:{\"click\":_vm.openDataset}},[_vm._v(\"View dataset\")]):_vm._e()],1),_c('div',[(_vm.entry.scaffolds)?_c('el-button',{staticClass:\"button\",attrs:{\"size\":\"mini\",\"icon\":\"el-icon-view\"},on:{\"click\":_vm.openScaffold}},[_vm._v(\"View scaffold\")]):_vm._e()],1),_c('div',[(_vm.hasCSVFile)?_c('el-button',{staticClass:\"button\",attrs:{\"size\":\"mini\",\"icon\":\"el-icon-view\"},on:{\"click\":_vm.openPlot}},[_vm._v(\"View plot\")]):_vm._e()],1),_c('div',[(_vm.entry.simulation)?_c('el-button',{staticClass:\"button\",attrs:{\"size\":\"mini\",\"icon\":\"el-icon-view\"},on:{\"click\":_vm.openRepository}},[_vm._v(\"View repository\")]):_vm._e()],1),_c('div',[(_vm.entry.simulation)?_c('el-button',{staticClass:\"button\",attrs:{\"size\":\"mini\",\"icon\":\"el-icon-view\"},on:{\"click\":_vm.openSimulation}},[_vm._v(\"View simulation\")]):_vm._e()],1)])]),((_vm.cardOverflow && !_vm.expanded))?_c('p',{staticClass:\"read-more\"},[_c('el-button',{staticClass:\"read-more-button\",on:{\"click\":_vm.expand}},[_vm._v(\"Read more...\")])],1):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\r\nconst EventBus = new Vue();\r\nexport default EventBus;\r\n","export default {\r\n 77: {\r\n version: 2, meta_file: 'integrated_metadata.json', contextCard: {\r\n title: \"ICN fitted Scaffold\",\r\n description: \"Points are mapped to their positions on a 3d heart that is mapped to the data.\",\r\n bannerImage: 'https://raw.githubusercontent.com/Tehsurfer/map-sidebar/tabs/assets/temp-pics/icn.png',\r\n keys: [{\r\n image: \"https://raw.githubusercontent.com/Tehsurfer/map-sidebar/tabs/assets/temp-pics/orange.png\",\r\n text: \"ICN Subject 54-8\"\r\n }, {\r\n image: \"https://raw.githubusercontent.com/Tehsurfer/map-sidebar/tabs/assets/temp-pics/teal.png\",\r\n text: \"ICN Subject 54-5\"\r\n }\r\n ]\r\n },\r\n },\r\n 76: { version: 2, meta_file: 'mouseColon_metadata.json' },\r\n 32: {\r\n version: 3, meta_file: 'mouse-heart-071020_metadata.json', contextCard: {\r\n title: \"Neural paths mapped to a heart scaffold\",\r\n description: \"Points are mapped to their positions on a 3d heart that is mapped to the data.\",\r\n bannerImage: 'https://raw.githubusercontent.com/Tehsurfer/map-sidebar/tabs/assets/temp-pics/aNIksBFARaKwlKhpnDCKbA.png',\r\n keys: [{\r\n image: \"https://raw.githubusercontent.com/Tehsurfer/map-sidebar/tabs/assets/temp-pics/VqNcZ8fSQJu5TJEf9ahwvA.png\",\r\n text: \"Neural path\"\r\n }],\r\n }\r\n }\r\n }\r\n","<template>\r\n <div class=\"dataset-card-container\" ref=\"container\">\r\n <div v-bind:class=\" expanded ? 'dataset-card-expanded' : 'dataset-card'\" ref=\"card\">\r\n <div v-if=\"entry.id !== 0\" class=\"seperator-path\"></div>\r\n <div class=\"card\" >\r\n <span class=\"card-left\">\r\n <img svg-inline class=\"banner-img\" :src=\"thumbnail\" @click=\"openDataset\"/>\r\n </span>\r\n <div class=\"card-right\" >\r\n <div class=\"title\" @click=\"cardClicked\">{{entry.name}}</div>\r\n <div class=\"details\">{{contributors}} {{entry.publishDate ? `(${publishYear})` : ''}}</div>\r\n <div class=\"details\">{{samples}}</div>\r\n <div class=\"details\">id: {{discoverId}}</div>\r\n <div>\r\n <el-button v-if=\"!entry.simulation\" @click=\"openDataset\" size=\"mini\" class=\"button\" icon=\"el-icon-coin\">View dataset</el-button>\r\n </div>\r\n <div>\r\n <el-button v-if=\"entry.scaffolds\" @click=\"openScaffold\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View scaffold</el-button>\r\n </div>\r\n <div>\r\n <el-button v-if=\"hasCSVFile\" @click=\"openPlot\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View plot</el-button>\r\n </div>\r\n <div>\r\n <el-button v-if=\"entry.simulation\" @click=\"openRepository\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View repository</el-button>\r\n </div>\r\n <div>\r\n <el-button v-if=\"entry.simulation\" @click=\"openSimulation\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View simulation</el-button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <p v-if=\"(cardOverflow && !expanded)\" class=\"read-more\"><el-button @click=\"expand\" class=\"read-more-button\">Read more...</el-button></p>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n\r\n<script>\r\n/* eslint-disable no-alert, no-console */\r\nimport Vue from \"vue\";\r\nimport { Button, Icon } from \"element-ui\";\r\nimport lang from \"element-ui/lib/locale/lang/en\";\r\nimport locale from \"element-ui/lib/locale\";\r\nimport EventBus from \"./EventBus\"\r\nimport scaffoldMetaMap from './scaffold-meta-map';\r\nimport speciesMap from \"./species-map\";\r\n\r\nlocale.use(lang);\r\nVue.use(Button);\r\nVue.use(Icon);\r\n\r\nconst capitalise = function(string){\r\n return string.replace(/\\b\\w/g, v => v.toUpperCase());\r\n}\r\n\r\nexport default {\r\n name: \"DatasetCard\",\r\n props: {\r\n /**\r\n * Object containing information for\r\n * the required viewing.\r\n */\r\n entry: Object,\r\n envVars: {\r\n type: Object,\r\n default: () => {}\r\n },\r\n },\r\n data: function () {\r\n return {\r\n thumbnail: require('@/../assets/missing-image.svg'),\r\n dataLocation: this.entry.doi,\r\n discoverId: undefined,\r\n cardOverflow: false,\r\n expanded: false\r\n };\r\n },\r\n computed: {\r\n hasCSVFile: function(){\r\n return ( this.entry.csvFiles && this.entry.csvFiles.length !== 0 )\r\n },\r\n contributors: function() {\r\n let text = \"\";\r\n if (this.entry.contributors) {\r\n if (this.entry.contributors.length === 1) {\r\n text = this.lastName(this.entry.contributors[0].name);\r\n } else if (this.entry.contributors.length === 2) {\r\n text = this.lastName(this.entry.contributors[0].name) + \" & \" + this.lastName(this.entry.contributors[1].name);\r\n } else if (this.entry.contributors.length > 2) {\r\n text = this.lastName(this.entry.contributors[0].name) + \" et al.\";\r\n }\r\n }\r\n return text;\r\n },\r\n samples: function() {\r\n let text = \"\";\r\n if (this.entry.species) {\r\n if (speciesMap[this.entry.species[0].toLowerCase()]){\r\n text = `${speciesMap[this.entry.species[0].toLowerCase()]}`;\r\n } else {\r\n text = `${this.entry.species}`;\r\n }\r\n }\r\n if (this.entry.numberSamples > 0) {\r\n text += \" (\";\r\n if (this.entry.numberSamples === 1) {\r\n text += `${this.entry.numberSamples} sample`;\r\n } else if (this.entry.numberSamples > 1) {\r\n text += `${this.entry.numberSamples} samples`;\r\n }\r\n if (this.entry.numberSubjects === 1) {\r\n text += ` from ${this.entry.numberSubjects} subject`;\r\n } else if (this.entry.numberSamples > 1) {\r\n text += ` from ${this.entry.numberSubjects} subjects`;\r\n }\r\n text += \")\";\r\n }\r\n\r\n return text;\r\n },\r\n label: function(){\r\n return this.entry.organs ? this.entry.organs[0] : this.entry.name\r\n },\r\n publishYear: function() {\r\n return this.entry.publishDate.split('-')[0]\r\n }\r\n },\r\n methods: {\r\n cardClicked: function(){\r\n if(this.entry.scaffolds){\r\n this.openScaffold()\r\n }else{\r\n this.openDataset()\r\n }\r\n },\r\n openScaffold: function(){\r\n let action = {\r\n label: capitalise(this.label),\r\n resource: this.getScaffoldPath(this.discoverId, this.version, this.entry.scaffolds[0].dataset.path),\r\n title: \"View 3D scaffold\",\r\n type: \"Scaffold\",\r\n discoverId: this.discoverId,\r\n contextCard: scaffoldMetaMap[this.discoverId] ? scaffoldMetaMap[this.discoverId].contextCard : undefined\r\n }\r\n EventBus.$emit(\"PopoverActionClick\", action)\r\n },\r\n openPlot: function(){\r\n let action = {\r\n label: capitalise(this.label),\r\n resource: this.getFileFromPath(this.discoverId, this.version, this.entry.csvFiles[0].dataset.path),\r\n title: \"View plot\",\r\n type: \"Plot\",\r\n discoverId: this.discoverId,\r\n }\r\n EventBus.$emit(\"PopoverActionClick\", action)\r\n },\r\n openDataset: function(){\r\n window.open(this.dataLocation,'_blank');\r\n },\r\n openRepository: function() {\r\n let apiLocation = this.envVars.API_LOCATION;\r\n this.entry.additionalLinks.forEach(function(el) {\r\n if (el.description == \"Repository\") {\r\n let xmlhttp = new XMLHttpRequest();\r\n xmlhttp.open(\"POST\", apiLocation + \"/pmr_latest_exposure\", true);\r\n xmlhttp.setRequestHeader(\"Content-type\", \"application/json\");\r\n xmlhttp.onreadystatechange = () => {\r\n if (xmlhttp.readyState === 4) {\r\n let url = \"\";\r\n if (xmlhttp.status === 200) {\r\n url = JSON.parse(xmlhttp.responseText)[\"url\"];\r\n }\r\n if (url === \"\") {\r\n url = el.uri;\r\n }\r\n window.open(url,'_blank');\r\n }\r\n };\r\n xmlhttp.send(JSON.stringify({workspace_url: el.uri}));\r\n }\r\n });\r\n },\r\n openSimulation: function() {\r\n let isSedmlResource = false;\r\n let resource = undefined;\r\n this.entry.additionalLinks.forEach(function(el) {\r\n if (el.description == \"SED-ML file\") {\r\n isSedmlResource = true;\r\n resource = el.uri;\r\n } else if (!isSedmlResource && (el.description == \"CellML file\")) {\r\n resource = el.uri;\r\n }\r\n });\r\n let action = {\r\n label: undefined,\r\n resource: resource,\r\n dataset: this.dataLocation,\r\n datasetId: this.discoverId,\r\n title: \"View simulation\",\r\n name: this.entry.name,\r\n description: this.entry.description,\r\n type: \"Simulation\"\r\n }\r\n EventBus.$emit(\"PopoverActionClick\", action)\r\n },\r\n getScaffoldPath: function(discoverId, version, scaffoldPath){\r\n let id = discoverId\r\n let path = `${this.envVars.API_LOCATION}s3-resource/${id}/${version}/files/${scaffoldPath}`\r\n return path\r\n },\r\n getFileFromPath: function(discoverId, version, path){\r\n return `${this.envVars.API_LOCATION}s3-resource/${discoverId}/${version}/files/${path}`\r\n },\r\n isOverflown: function(el){\r\n return el.clientHeight < el.scrollHeight\r\n },\r\n expand: function() {\r\n this.expanded = true\r\n },\r\n splitDOI: function(doi){\r\n return [doi.split('/')[doi.split('/').length-2], doi.split('/')[doi.split('/').length-1]]\r\n },\r\n getBanner: function () {\r\n let doi = this.splitDOI(this.entry.doi)\r\n fetch(`https://api.pennsieve.io/discover/datasets/doi/${doi[0]}/${doi[1]}`)\r\n .then((response) =>{\r\n if (!response.ok){\r\n throw Error(response.statusText)\r\n } else {\r\n return response.json()\r\n }\r\n })\r\n .then((data) => {\r\n this.thumbnail = data.banner\r\n this.discoverId = data.id\r\n this.version = data.version\r\n this.dataLocation = `https://sparc.science/datasets/${data.id}?type=dataset`\r\n })\r\n .catch(() => {\r\n //set defaults if we hit an error\r\n this.thumbnail = require('@/../assets/missing-image.svg')\r\n this.discoverId = undefined\r\n });\r\n },\r\n lastName: function(fullName){\r\n return fullName.split(',')[0]\r\n },\r\n },\r\n mounted: function(){\r\n this.getBanner()\r\n this.cardOverflow = this.isOverflown(this.$refs.card)\r\n },\r\n updated: function () {\r\n },\r\n watch: {\r\n 'entry.description': function() { // watch it\r\n this.cardOverflow = false\r\n this.expanded = false\r\n this.cardOverflow = this.isOverflown(this.$refs.card)\r\n this.getBanner()\r\n }\r\n },\r\n};\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n.dataset-card {\r\n padding-left: 16px;\r\n position: relative;\r\n}\r\n.seperator-path {\r\n width: 486px;\r\n height: 0px;\r\n border: solid 1px #e4e7ed;\r\n background-color: #e4e7ed;\r\n}\r\n.title {\r\n padding-bottom: 5px;\r\n font-family: Asap;\r\n font-size: 14px;\r\n font-weight: bold;\r\n font-stretch: normal;\r\n font-style: normal;\r\n line-height: 1.5;\r\n letter-spacing: 1.05px;\r\n color: #484848;\r\n cursor: pointer;\r\n}\r\n.card {\r\n padding-top: 18px;\r\n position: relative;\r\n display: flex;\r\n}\r\n\r\n.card-left{\r\n flex: 1\r\n}\r\n\r\n.card-right {\r\n flex: 1.3;\r\n padding-left: 6px;\r\n}\r\n\r\n.dataset-card .read-more {\r\n position: absolute;\r\n z-index: 9;\r\n bottom: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 20px;\r\n margin: 0; padding: 20px 66px;\r\n /* \"transparent\" only works here because == rgba(0,0,0,0) */\r\n background-image: linear-gradient(to bottom, transparent, white);\r\n pointer-events: none;\r\n}\r\n\r\n.read-more-button{\r\n width: 85px;\r\n height: 20px;\r\n font-family: Asap;\r\n font-size: 14px;\r\n font-weight: normal;\r\n font-stretch: normal;\r\n font-style: normal;\r\n line-height: normal;\r\n letter-spacing: normal;\r\n color: #8300bf;\r\n padding: 0px;\r\n pointer-events: all;\r\n cursor: pointer;\r\n}\r\n\r\n.button{\r\n z-index: 10;\r\n font-family: Asap;\r\n font-size: 14px;\r\n font-weight: normal;\r\n font-stretch: normal;\r\n font-style: normal;\r\n line-height: normal;\r\n letter-spacing: normal;\r\n background-color: #8300bf;\r\n border: #8300bf;\r\n color: white;\r\n cursor: pointer;\r\n margin-top: 8px;\r\n}\r\n\r\n.button:hover {\r\n background-color: #8300bf;\r\n color: white;\r\n}\r\n\r\n.banner-img {\r\n width: 128px;\r\n height: 128px;\r\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.25);\r\n background-color: #ffffff;\r\n cursor: pointer;\r\n}\r\n.details{\r\n font-family: Asap;\r\n font-size: 14px;\r\n font-weight: normal;\r\n font-stretch: normal;\r\n font-style: normal;\r\n line-height: 1.5;\r\n letter-spacing: 1.05px;\r\n color: #484848;\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DatasetCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DatasetCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DatasetCard.vue?vue&type=template&id=0e9538ce&scoped=true&\"\nimport script from \"./DatasetCard.vue?vue&type=script&lang=js&\"\nexport * from \"./DatasetCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DatasetCard.vue?vue&type=style&index=0&id=0e9538ce&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0e9538ce\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticClass:\"context-card-container\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDetails),expression:\"showDetails\"}],staticClass:\"hide\",on:{\"click\":function($event){_vm.showDetails = !_vm.showDetails}}},[_vm._v(\"Hide information\"),_c('i',{staticClass:\"el-icon-arrow-up\"})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showDetails),expression:\"!showDetails\"}],staticClass:\"hide\",on:{\"click\":function($event){_vm.showDetails = !_vm.showDetails}}},[_vm._v(\"Show information\"),_c('i',{staticClass:\"el-icon-arrow-down\"})]),_c('el-card',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDetails),expression:\"showDetails\"}],staticClass:\"context-card card\",attrs:{\"body-style\":{ padding: '0px', 'background-color': 'white', display: 'flex', width: '516px'}}},[_c('img',{staticClass:\"context-image card-left\",attrs:{\"src\":_vm.entry.bannerImage}}),_c('div',{staticClass:\"card-right\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.entry.title))]),_c('div',[_vm._v(_vm._s(_vm.entry.description))]),_vm._l((_vm.entry.keys),function(key){return [_c('br',{key:key.text}),_c('span',{key:key.text + 1},[_c('img',{staticStyle:{\"height\":\"20px\"},attrs:{\"src\":key.image}}),_vm._v(\" \"+_vm._s(key.text))])]})],2)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"context-card-container\" ref=\"container\">\r\n <div v-show=\"showDetails\" class=\"hide\" @click=\"showDetails = !showDetails\">Hide information<i class=\"el-icon-arrow-up\"></i></div>\r\n <div v-show=\"!showDetails\" class=\"hide\" @click=\"showDetails = !showDetails\">Show information<i class=\"el-icon-arrow-down\"></i></div>\r\n <el-card v-show=\"showDetails\" class=\"context-card card\" :body-style=\"{ padding: '0px', 'background-color': 'white', display: 'flex', width: '516px'}\">\r\n <img :src=\"entry.bannerImage\" class=\"context-image card-left\">\r\n <div class=\"card-right\">\r\n <div class=\"title\">{{entry.title}}</div>\r\n <div>{{entry.description}}</div>\r\n <template v-for=\"key in entry.keys\">\r\n <br v-bind:key=\"key.text\"/>\r\n <span v-bind:key=\"key.text + 1\"><img :src=\"key.image\" style=\"height: 20px;\"> {{key.text}}</span>\r\n </template>\r\n </div>\r\n </el-card>\r\n </div>\r\n</template>\r\n\r\n\r\n<script>\r\n/* eslint-disable no-alert, no-console */\r\nimport Vue from \"vue\";\r\nimport { Link, Icon, Card, Button, Select, Input } from \"element-ui\";\r\nimport lang from \"element-ui/lib/locale/lang/en\";\r\nimport locale from \"element-ui/lib/locale\";\r\n\r\nlocale.use(lang);\r\nVue.use(Link);\r\nVue.use(Icon);\r\nVue.use(Card);\r\nVue.use(Button);\r\nVue.use(Select);\r\nVue.use(Input);\r\n\r\n\r\n\r\nexport default {\r\n name: \"contextCard\",\r\n props: {\r\n /**\r\n * Object containing information for\r\n * the required viewing.\r\n */\r\n entry: Object,\r\n },\r\n data: function () {\r\n return {\r\n showDetails: true\r\n };\r\n },\r\n computed: {\r\n\r\n },\r\n methods: {\r\n },\r\n};\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n.hide{\r\n color: #e4e7ed;\r\n cursor: pointer;\r\n}\r\n\r\n.context-card{\r\n background-color: white;\r\n}\r\n\r\n.context-image{\r\n width: 250px\r\n}\r\n\r\n.card {\r\n padding-top: 18px;\r\n margin-bottom: 18px;\r\n position: relative;\r\n border: solid 1px #e4e7ed;\r\n display: flex;\r\n}\r\n\r\n.card-left{\r\n flex: 1\r\n}\r\n\r\n.card-right {\r\n flex: 1.3;\r\n padding-left: 6px;\r\n}\r\n\r\n.title{\r\n font-weight: bold;\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ContextCard.vue?vue&type=template&id=262a6750&scoped=true&\"\nimport script from \"./ContextCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ContextCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ContextCard.vue?vue&type=style&index=0&id=262a6750&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"262a6750\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <el-card :body-style=\"bodyStyle\" class=\"content-card\">\r\n <div slot=\"header\" class=\"header\">\r\n <context-card v-if=\"contextCardEntry\" :entry=\"contextCardEntry\" />\r\n <el-input\r\n class=\"search-input\"\r\n placeholder=\"Search\"\r\n v-model=\"searchInput\"\r\n @keyup.native=\"searchEvent\"\r\n clearable\r\n @clear=\"clearSearchClicked\"\r\n ></el-input>\r\n <el-button class=\"button\" @click=\"searchEvent\">Search</el-button>\r\n </div>\r\n <SearchFilters\r\n class=\"filters\"\r\n ref=\"filtersRef\"\r\n :entry=\"filterEntry\"\r\n :envVars=\"envVars\"\r\n @filterResults=\"filterUpdate\"\r\n @numberPerPage=\"numberPerPageUpdate\"\r\n @loading=\"filtersLoading\"\r\n ></SearchFilters>\r\n <div class=\"content scrollbar\" v-loading=\"loadingCards\" ref=\"content\">\r\n <div\r\n class=\"error-feedback\"\r\n v-if=\"results.length === 0 && !loadingCards && !sciCrunchError\"\r\n >No results found - Please change your search / filter criteria.</div>\r\n <div class=\"error-feedback\" v-if=\"sciCrunchError\">{{sciCrunchError}}</div>\r\n <div v-for=\"o in results\" :key=\"o.id\" class=\"step-item\">\r\n <DatasetCard :entry=\"o\" :envVars=\"envVars\"></DatasetCard>\r\n </div>\r\n <el-pagination\r\n class=\"pagination\"\r\n :current-page.sync=\"page\"\r\n hide-on-single-page\r\n large\r\n layout=\"prev, pager, next\"\r\n :page-size=\"numberPerPage\"\r\n :total=\"numberOfHits\"\r\n @current-change=\"pageChange\"\r\n ></el-pagination>\r\n </div>\r\n </el-card>\r\n</template>\r\n\r\n\r\n<script>\r\n/* eslint-disable no-alert, no-console */\r\nimport Vue from \"vue\";\r\nimport {\r\n Button,\r\n Card,\r\n Drawer,\r\n Icon,\r\n Input,\r\n Loading,\r\n Pagination\r\n} from \"element-ui\";\r\nimport lang from \"element-ui/lib/locale/lang/en\";\r\nimport locale from \"element-ui/lib/locale\";\r\nimport SearchFilters from \"./SearchFilters\";\r\nimport DatasetCard from \"./DatasetCard\";\r\nimport ContextCard from \"./ContextCard.vue\";\r\n\r\nimport {AlgoliaClient} from \"../algolia/algolia.js\";\r\nimport {getFilters} from \"../algolia/utils.js\"\r\n\r\nlocale.use(lang);\r\nVue.use(Button);\r\nVue.use(Card);\r\nVue.use(Drawer);\r\nVue.use(Icon);\r\nVue.use(Input);\r\nVue.use(Loading);\r\nVue.use(Pagination);\r\n\r\n// handleErrors: A custom fetch error handler to recieve messages from the server\r\n// even when an error is found\r\nvar handleErrors = async function(response) {\r\n if (!response.ok) {\r\n let parse = await response.json();\r\n if (parse) {\r\n throw new Error(parse.message);\r\n } else {\r\n throw new Error(response);\r\n }\r\n }\r\n return response;\r\n};\r\n\r\nvar initial_state = {\r\n searchInput: \"\",\r\n lastSearch: \"\",\r\n results: [],\r\n numberOfHits: 0,\r\n filter: [],\r\n loadingCards: false,\r\n numberPerPage: 10,\r\n page: 1,\r\n pageModel: 1,\r\n start: 0,\r\n hasSearched: false,\r\n sciCrunchError: false\r\n};\r\n\r\nexport default {\r\n components: { SearchFilters, DatasetCard, ContextCard },\r\n name: \"SideBarContent\",\r\n props: {\r\n visible: {\r\n type: Boolean,\r\n default: false\r\n },\r\n isDrawer: {\r\n type: Boolean,\r\n default: true\r\n },\r\n entry: {\r\n type: Object,\r\n default: () => initial_state\r\n },\r\n contextCardEntry: {\r\n type: Object,\r\n default: undefined\r\n },\r\n envVars: {\r\n type: Object,\r\n default: () => {}\r\n },\r\n firstSearch: {\r\n type: String,\r\n default: \"\"\r\n }\r\n },\r\n data: function() {\r\n return {\r\n ...this.entry,\r\n bodyStyle: {\r\n flex: \"1 1 auto\",\r\n \"flex-flow\": \"column\",\r\n display: \"flex\"\r\n }\r\n };\r\n },\r\n computed: {\r\n // This computed property populates filter data's entry object with $data from this sidebar\r\n filterEntry: function() {\r\n return {\r\n numberOfHits: this.numberOfHits,\r\n filterFacets: this.filter\r\n };\r\n }\r\n },\r\n methods: {\r\n openSearch: function(filter, search='') {\r\n this.searchInput = search;\r\n this.resetPageNavigation();\r\n this.searchAlgolia(filter, search);\r\n if (filter) {\r\n this.filter = [...filter];\r\n this.$refs.filtersRef.setCascader(this.filter);\r\n }\r\n },\r\n addFilter: function(filter) {\r\n this.resetPageNavigation();\r\n if (filter) {\r\n this.$refs.filtersRef.addFilter(filter);\r\n this.$refs.filtersRef.initiateSearch()\r\n }\r\n },\r\n clearSearchClicked: function() {\r\n this.searchInput = \"\";\r\n this.resetPageNavigation();\r\n this.searchAlgolia(this.filters, this.searchInput);\r\n },\r\n searchEvent: function(event = false) {\r\n if (event.keyCode === 13 || event instanceof MouseEvent) {\r\n this.resetPageNavigation();\r\n this.searchAlgolia(this.filters, this.searchInput);\r\n }\r\n },\r\n filterUpdate: function(filters) {\r\n this.filters = [...filters]\r\n this.resetPageNavigation()\r\n this.searchAlgolia(filters, this.searchInput)\r\n this.$emit(\"search-changed\", {\r\n value: this.filter,\r\n type: \"filter-update\"\r\n });\r\n },\r\n searchAlgolia(filters, query=''){\r\n // Algolia search\r\n this.algoliaClient.search(getFilters(filters), query, this.numberPerPage, this.page).then(searchData => {\r\n this.numberOfHits = searchData.total\r\n this.discoverIds = searchData.discoverIds\r\n this.searchSciCrunch({'dois':this.dois})\r\n })\r\n },\r\n filtersLoading: function (val) {\r\n this.loadingCards = val;\r\n },\r\n numberPerPageUpdate: function(val) {\r\n this.numberPerPage = val;\r\n this.pageChange(1);\r\n },\r\n pageChange: function(page) {\r\n this.start = (page - 1) * this.numberPerPage;\r\n this.page = page\r\n this.searchAlgolia(this.filters, this.searchInput, this.numberPerPage, this.page)\r\n },\r\n searchSciCrunch: function(params) {\r\n this.loadingCards = true;\r\n this.results = [];\r\n this.disableCards();\r\n this.$emit(\"search-changed\", { value: this.searchInput, type: \"query-update\" });\r\n this.callSciCrunch(this.envVars.API_LOCATION, params)\r\n .then(result => {\r\n //Only process if the search term is the same as the last search term.\r\n //This avoid old search being displayed.\r\n this.sciCrunchError = false;\r\n this.resultsProcessing(result);\r\n this.$refs.content.style[\"overflow-y\"] = \"scroll\";\r\n this.loadingCards = false;\r\n })\r\n .catch(result => {\r\n if (result.name !== 'AbortError') {\r\n this.loadingCards = false;\r\n this.sciCrunchError = result.message;\r\n }\r\n })\r\n },\r\n disableCards: function() {\r\n if (this.$refs.content) {\r\n this.$refs.content.scroll({ top: 0, behavior: \"smooth\" });\r\n this.$refs.content.style[\"overflow-y\"] = \"hidden\";\r\n }\r\n },\r\n resetPageNavigation: function() {\r\n this.start = 0;\r\n this.page = 1;\r\n },\r\n resultsProcessing: function(data) {\r\n this.lastSearch = this.searchInput;\r\n this.results = [];\r\n let id = 0;\r\n if (data.results.length === 0) {\r\n return;\r\n }\r\n data.results.forEach(element => {\r\n // this.results.push(element) below should be once backend is ready\r\n this.results.push({\r\n name: element.name,\r\n description: element.description,\r\n contributors: element.contributors,\r\n numberSamples: element.sampleSize\r\n ? parseInt(element.sampleSize)\r\n : 0,\r\n numberSubjects: element.subjectSize\r\n ? parseInt(element.subjectSize)\r\n : 0,\r\n updated: element.updated[0].timestamp.split(\"T\")[0],\r\n url: element.uri[0],\r\n datasetId: element.identifier,\r\n organs: (element.organs && element.organs.length > 0)\r\n ? [...new Set(element.organs.map(v => v.name))]\r\n : undefined,\r\n species: element.organisms \r\n ? element.organisms[0].species\r\n ? [...new Set(element.organisms.map((v) =>v.species ? v.species.name : null))]\r\n : undefined\r\n : undefined, // This processing only includes each gender once into 'sexes'\r\n csvFiles: element.csvFiles,\r\n id: id,\r\n doi: element.doi,\r\n publishDate: element.publishDate,\r\n scaffolds: element['abi-scaffold-metadata-file'] ? element['abi-scaffold-metadata-file'] : undefined,\r\n additionalLinks: element.additionalLinks,\r\n simulation: element.additionalLinks\r\n ? element.additionalLinks[0].description == 'Repository'\r\n : false,\r\n s3uri: element.s3uri\r\n });\r\n id++;\r\n });\r\n },\r\n createfilterParams: function(params) {\r\n let p = new URLSearchParams();\r\n //Check if field is array or value\r\n for (const key in params) {\r\n if (Array.isArray(params[key])) {\r\n params[key].forEach(e => {\r\n p.append(key, e);\r\n });\r\n } else {\r\n p.append(key, params[key]);\r\n }\r\n }\r\n return p.toString();\r\n },\r\n callSciCrunch: function(apiLocation, params = {}) {\r\n return new Promise((resolve, reject) => {\r\n // the following controller will abort current search\r\n // if a new one has been started\r\n if (this._controller) this._controller.abort();\r\n this._controller = new AbortController();\r\n let signal = this._controller.signal;\r\n // Add parameters if we are sent them\r\n let fullEndpoint = this.envVars.API_LOCATION + this.searchEndpoint + \"?\" + this.createfilterParams(params);\r\n fetch(fullEndpoint, { signal })\r\n .then(handleErrors)\r\n .then(response => response.json())\r\n .then(data => resolve(data))\r\n .catch(data => reject(data));\r\n });\r\n }\r\n },\r\n mounted: function() {\r\n // initialise algolia\r\n this.algoliaClient = new AlgoliaClient(this.envVars.ALGOLIA_ID, this.envVars.ALGOLIA_KEY, this.envVars.PENNSIEVE_API_LOCATION);\r\n this.algoliaClient.initIndex(this.envVars.ALGOLIA_INDEX);\r\n console.log('Algolia initialised in sidebar')\r\n\r\n // temporarily disable flatmap search since there are no datasets\r\n if (this.firstSearch === \"Flatmap\" || this.firstSearch === \"flatmap\") {\r\n this.openSearch(undefined, '')\r\n } else {\r\n this.openSearch(undefined, '');\r\n }\r\n },\r\n created: function() {\r\n //Create non-reactive local variables\r\n this.searchEndpoint = \"dataset_info/using_multiple_dois/\";\r\n }\r\n};\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n.content-card {\r\n height: 100%;\r\n flex-flow: column;\r\n display: flex;\r\n}\r\n\r\n.button {\r\n background-color: #8300bf;\r\n border: #8300bf;\r\n color: white;\r\n}\r\n\r\n.step-item {\r\n font-size: 14px;\r\n margin-bottom: 18px;\r\n text-align: left;\r\n}\r\n\r\n.search-input {\r\n width: 298px !important;\r\n height: 40px;\r\n padding-right: 14px;\r\n align-items: left;\r\n}\r\n\r\n.header {\r\n border: solid 1px #292b66;\r\n background-color: #292b66;\r\n text-align: left;\r\n}\r\n\r\n.pagination {\r\n padding-bottom: 16px;\r\n background-color: white;\r\n text-align: center;\r\n}\r\n\r\n.pagination >>> button {\r\n background-color: white !important;\r\n}\r\n.pagination >>> li {\r\n background-color: white !important;\r\n}\r\n.pagination >>> li.active {\r\n color: #8300bf;\r\n}\r\n\r\n.error-feedback {\r\n font-family: Asap;\r\n font-size: 14px;\r\n font-style: italic;\r\n padding-top: 15px;\r\n}\r\n\r\n.content-card >>> .el-card__header {\r\n background-color: #292b66;\r\n border: solid 1px #292b66;\r\n}\r\n\r\n.content-card >>> .el-card__body {\r\n background-color: #f7faff;\r\n overflow-y: hidden;\r\n}\r\n\r\n.content {\r\n width: 518px;\r\n flex: 1 1 auto;\r\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\r\n border: solid 1px #e4e7ed;\r\n background-color: #ffffff;\r\n overflow-y: scroll;\r\n scrollbar-width: thin;\r\n}\r\n\r\n.scrollbar::-webkit-scrollbar-track {\r\n border-radius: 10px;\r\n background-color: #f5f5f5;\r\n}\r\n\r\n.scrollbar::-webkit-scrollbar {\r\n width: 12px;\r\n right: -12px;\r\n background-color: #f5f5f5;\r\n}\r\n\r\n.scrollbar::-webkit-scrollbar-thumb {\r\n border-radius: 4px;\r\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.06);\r\n background-color: #979797;\r\n}\r\n\r\n>>> .el-input__suffix {\r\n padding-right: 10px;\r\n}\r\n\r\n>>> .my-drawer {\r\n background: rgba(0, 0, 0, 0);\r\n box-shadow: none;\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarContent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarContent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarContent.vue?vue&type=template&id=930a8680&scoped=true&\"\nimport script from \"./SidebarContent.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SidebarContent.vue?vue&type=style&index=0&id=930a8680&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"930a8680\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tab-container\"},_vm._l((_vm.tabTitles),function(title){return _c('div',{key:title.id,staticClass:\"title\"},[_c('div',{staticClass:\"title-text-table\",class:{ highlightText : (title.id==_vm.activeId) },on:{\"click\":function($event){return _vm.titleClicked(title.id)}}},[_c('div',{staticClass:\"title-text\"},[_vm._v(\" \"+_vm._s(title.title)+\" \")])])])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"tab-container\">\r\n <div class=\"title\" v-for=\"title in tabTitles\" :key=\"title.id\">\r\n <div class=\"title-text-table\" v-bind:class=\"{ highlightText : (title.id==activeId) }\" v-on:click=\"titleClicked(title.id)\">\r\n <div class=\"title-text\">\r\n {{title.title}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable no-alert, no-console */\r\n\r\nexport default {\r\n name: \"Tabs\",\r\n props: {\r\n tabTitles: {\r\n type: Array,\r\n default: () => []\r\n },\r\n activeId: {\r\n type: Number,\r\n default: 1\r\n }\r\n },\r\n methods: {\r\n titleClicked: function(id) {\r\n this.$emit(\"titleClicked\", id);\r\n },\r\n }\r\n\r\n};\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n.tab-container{\r\n height: 28px;\r\n}\r\n\r\n.title {\r\n width: 101px;\r\n height: 28px;\r\n border: solid 1px #dcdfe6;\r\n border-bottom: none;\r\n background-color: white;\r\n display:inline-block;\r\n}\r\n\r\n.title:hover {\r\n cursor: pointer;\r\n}\r\n\r\n.title-text {\r\n text-align:center;\r\n display: table-cell;\r\n vertical-align: middle;\r\n font-size: 14px;\r\n}\r\n\r\n.title-text-table {\r\n display:table;\r\n height: 100%;\r\n width: 100%;\r\n}\r\n\r\n.parent-dialog:hover .title-text {\r\n color:#8300bf;\r\n}\r\n\r\n.highlightText {\r\n color:#8300bf;\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tabs.vue?vue&type=template&id=d68260c4&scoped=true&\"\nimport script from \"./Tabs.vue?vue&type=script&lang=js&\"\nexport * from \"./Tabs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Tabs.vue?vue&type=style&index=0&id=d68260c4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d68260c4\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div ref=\"container\">\r\n <div v-if=\"!drawerOpen\" @click=\"toggleDrawer\" class=\"open-tab\">\r\n <i class=\"el-icon-arrow-left\"></i>\r\n </div>\r\n <el-drawer\r\n custom-class=\"my-drawer\"\r\n class=\"side-bar\"\r\n :visible.sync=\"drawerOpen\"\r\n :appendToBody=\"false\"\r\n :modal-append-to-body=\"false\"\r\n size=550\r\n :with-header=\"false\"\r\n :wrapperClosable=\"false\"\r\n :modal=\"false\"\r\n >\r\n <div class=\"box-card\">\r\n <div v-if=\"drawerOpen\" @click=\"close\" class=\"close-tab\">\r\n <i class=\"el-icon-arrow-right\"></i>\r\n </div>\r\n <div class=\"sidebar-container\">\r\n <tabs v-if=\"tabs.length > 1\" :tabTitles=\"tabs\" :activeId=\"activeId\"\r\n @titleClicked=\"tabClicked\"/>\r\n <template v-for=\"tab in tabs\">\r\n <sidebar-content class=\"sidebar-content-container\"\r\n v-show=\"tab.id===activeId\" :contextCardEntry=\"tab.contextCard\"\r\n :envVars=\"envVars\"\r\n v-bind:key=\"tab.id\" :ref=\"tab.id\"\r\n @search-changed=\"searchChanged(tab.id, $event)\"/>\r\n </template>\r\n </div>\r\n </div>\r\n </el-drawer>\r\n </div>\r\n</template>\r\n\r\n\r\n<script>\r\n/* eslint-disable no-alert, no-console */\r\nimport Vue from \"vue\";\r\nimport {\r\n Drawer,\r\n Icon,\r\n} from \"element-ui\";\r\nimport lang from \"element-ui/lib/locale/lang/en\";\r\nimport locale from \"element-ui/lib/locale\";\r\nimport SidebarContent from './SidebarContent.vue';\r\nimport EventBus from './EventBus';\r\nimport Tabs from './Tabs'\r\n\r\nlocale.use(lang);\r\nVue.use(Drawer);\r\nVue.use(Icon);\r\n\r\nvar initial_state = {\r\n searchInput: \"\",\r\n lastSearch: \"\",\r\n results: [],\r\n drawerOpen: false,\r\n numberOfHits: 0,\r\n filter:{},\r\n filterFacet: undefined,\r\n loadingCards: false,\r\n numberPerPage: 10,\r\n page: 1,\r\n pageModel: 1,\r\n start: 0,\r\n hasSearched: false,\r\n sciCrunchError: false\r\n}\r\n\r\nexport default {\r\n components: {SidebarContent, Tabs },\r\n name: \"SideBar\",\r\n props: {\r\n visible: {\r\n type: Boolean,\r\n default: false\r\n },\r\n entry: {\r\n type: Object,\r\n default: () => (initial_state)\r\n },\r\n envVars: {\r\n type: Object,\r\n default: () => {}\r\n },\r\n tabs: {\r\n type: Array,\r\n default: () => [{title:'flatmap', id:1}]\r\n },\r\n activeId: {\r\n type: Number,\r\n default: 1\r\n },\r\n openAtStart: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data: function () {\r\n return {\r\n ...this.entry,\r\n }\r\n },\r\n methods: {\r\n searchChanged: function (id, data) {\r\n this.$emit(\"search-changed\", {...data, id: id});\r\n },\r\n close: function () {\r\n this.drawerOpen = false;\r\n },\r\n toggleDrawer: function () {\r\n this.drawerOpen = !this.drawerOpen;\r\n },\r\n openSearch: function(facets, query){\r\n this.drawerOpen = true;\r\n // Because refs are in v-for, nextTick is needed here\r\n Vue.nextTick(()=>{this.$refs[this.activeId][0].openSearch(facets, query)})\r\n },\r\n addFilter: function(filter){\r\n this.drawerOpen = true;\r\n // Because refs are in v-for, nextTick is needed here\r\n Vue.nextTick(()=>{this.$refs[this.activeId][0].addFilter(filter)})\r\n },\r\n openNeuronSearch: function(neuron){\r\n this.drawerOpen = true;\r\n // Because refs are in v-for, nextTick is needed here\r\n Vue.nextTick(()=>{this.$refs[this.activeId][0].openSearch('', undefined, 'scicrunch-query-string/', {'field': '*organ.curie', 'curie':neuron})})\r\n },\r\n tabClicked: function(id) {\r\n this.$emit(\"tabClicked\", id);\r\n },\r\n },\r\n created:function() {\r\n this.drawerOpen = this.openAtStart;\r\n },\r\n mounted: function(){\r\n EventBus.$on(\"PopoverActionClick\", (payLoad) => {\r\n this.$emit(\"actionClick\", payLoad);\r\n })\r\n }\r\n};\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n.box-card {\r\n flex: 3;\r\n height: 100%;\r\n overflow: hidden;\r\n pointer-events: auto;\r\n}\r\n\r\n.side-bar{\r\n position: relative;\r\n height: 100%;\r\n pointer-events: none;\r\n}\r\n\r\n.side-bar >>> .el-drawer:focus{\r\n outline:none;\r\n}\r\n\r\n.sidebar-container {\r\n height: 100%;\r\n flex-flow: column;\r\n display: flex;\r\n}\r\n\r\n.open-tab{\r\n width: 20px;\r\n height: 40px;\r\n z-index: 8;\r\n position: absolute;\r\n top: calc(50vh - 80px);\r\n right: 0px;\r\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\r\n border: solid 1px #e4e7ed;\r\n background-color: #F7FAFF;\r\n text-align: center;\r\n vertical-align: middle;\r\n cursor: pointer;\r\n pointer-events: auto;\r\n}\r\n\r\n.el-icon-arrow-left{\r\n font-size: 20px;\r\n padding-top: 8px;\r\n color: #292b66;\r\n}\r\n\r\n.el-icon-arrow-right{\r\n font-size: 20px;\r\n padding-top: 8px;\r\n color: #292b66;\r\n cursor: pointer;\r\n pointer-events: auto;\r\n}\r\n\r\n.close-tab{\r\n float: left;\r\n flex: 1;\r\n width: 20px;\r\n height: 40px;\r\n z-index: 8;\r\n margin-top: calc(50vh - 80px);\r\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\r\n border: solid 1px #e4e7ed;\r\n border-right: 0;\r\n background-color: #F7FAFF;\r\n text-align: center;\r\n vertical-align: middle;\r\n cursor: pointer;\r\n pointer-events: auto;\r\n}\r\n\r\n.box-card {\r\n flex: 3;\r\n height: 100%;\r\n overflow: hidden;\r\n pointer-events: auto;\r\n}\r\n\r\n>>> .my-drawer {\r\n background: rgba(0,0,0,0);\r\n box-shadow: none;\r\n}\r\n\r\n>>> .my-drawer .el-drawer__body {\r\n height: 100%;\r\n}\r\n\r\n.sidebar-content-container {\r\n flex: 1 1 auto;\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SideBar.vue?vue&type=template&id=3f7eb1a5&scoped=true&\"\nimport script from \"./SideBar.vue?vue&type=script&lang=js&\"\nexport * from \"./SideBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SideBar.vue?vue&type=style&index=0&id=3f7eb1a5&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3f7eb1a5\",\n null\n \n)\n\nexport default component.exports","module.exports = require(\"core-js/modules/es.string.includes\");"],"sourceRoot":""}
|