@abi-software/map-side-bar 1.1.15 → 1.1.17-beta.1

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.
@@ -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/./src/components/ContextCard.vue?b72d","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/./src/components/SidebarContent.vue?5755","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 \"element-ui/lib/popover\"","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/SearchFilters.vue?11e8","webpack://map-side-bar/./src/components/SideBar.vue?f7bf","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/popover.css\"","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/external \"core-js/modules/es.array.last-index-of\"","webpack://map-side-bar/external \"current-script-polyfill\"","webpack://map-side-bar/./src/components/DatasetCard.vue?7c7f","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?237c","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://map-side-bar/./src/components/SidebarContent.vue?2158","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?2524","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?844c","webpack://map-side-bar/./src/components/EventBus.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?b20b","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?6261","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","contextCardUpdate","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","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","openContext","openPlot","openRepository","openSimulation","cardOverflow","expand","EventBus","Vue","string","replace","dataLocation","hasCSVFile","lastName","numberSamples","numberSubjects","organs","open","additionalLinks","el","description","xmlhttp","apiLocation","setRequestHeader","onreadystatechange","readyState","status","url","JSON","parse","responseText","uri","send","stringify","isSedmlResource","resource","propogateCardAction","action","contextCardUrl","getScaffoldPath","path","getFileFromPath","isOverflown","clientHeight","scrollHeight","splitDOI","getBanner","fullName","$refs","card","updated","watch","showDetails","contextData","padding","display","width","banner","heading","view","staticStyle","openViewFile","getContextFile","val","contextFileUrl","viewUrl","handleErrors","initial_state","lastSearch","pageModel","start","hasSearched","visible","Boolean","isDrawer","firstSearch","String","flex","openSearch","resetPageNavigation","searchAlgolia","filtersRef","keyCode","MouseEvent","searchSciCrunch","disableCards","callSciCrunch","API_LOCATION","params","content","scroll","style","resultsProcessing","sampleSize","subjectSize","timestamp","datasetId","organisms","csvFiles","scaffolds","contextualInformation","s3uri","createfilterParams","append","e","fullEndpoint","console","log","created","searchEndpoint","title","highlightText","titleClicked","tabTitles","Number","openAtStart","openNeuronSearch"],"mappings":"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UyC,QAAQ,kC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,4C,qBCAzBxC,EAAOD,QAAUyC,QAAQ,kC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0C,qBCAzBxC,EAAOD,QAAUyC,QAAQ,gC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,oC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,wB,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0B,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0C,mBCAzBxC,EAAOD,QAAUyC,QAAQ,+B,qBCAzBxC,EAAOD,QAAUyC,QAAQ,wC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,kB,qBCAzBxC,EAAOD,QAAUyC,QAAQ,Q,qBCAzBxC,EAAOD,QAAUyC,QAAQ,sC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,wC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,uC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,2B,mBCAzBxC,EAAOD,QAAUyC,QAAQ,2B,qBCAzBxC,EAAOD,QAAUyC,QAAQ,wC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,kC,uBCAzBxC,EAAOD,QAAU,IAA0B,kC,kCCA3C,yBAA0gB,EAAG,G,kCCA7gB,yBAAogB,EAAG,G,mBCAvgBC,EAAOD,QAAUyC,QAAQ,2C,mBCAzBxC,EAAOD,QAAUyC,QAAQ,yC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,sC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,2B,mBCAzBxC,EAAOD,QAAUyC,QAAQ,wB,mBCAzBxC,EAAOD,QAAUyC,QAAQ,wB,mBCAzBxC,EAAOD,QAAUyC,QAAQ,qC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,iD,mBCAzBxC,EAAOD,QAAUyC,QAAQ,qC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,sC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,0B,mBCAzBxC,EAAOD,QAAUyC,QAAQ,2C,mBCAzBxC,EAAOD,QAAUyC,QAAQ,4B,kCCAzB,yBAAwgB,EAAG,G,mBCA3gBxC,EAAOD,QAAUyC,QAAQ,kC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,yB,mBCAzBxC,EAAOD,QAAUyC,QAAQ,sC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,8C,0CCAzBxC,EAA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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\");","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=799c215e&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=799c215e&scoped=true&lang=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\");","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=ccb87ff8&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=ccb87ff8&scoped=true&lang=css&\"","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(\"element-ui/lib/popover\");","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!./SearchFilters.vue?vue&type=style&index=0&id=34bc3234&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=34bc3234&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=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/popover.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\");","module.exports = require(\"core-js/modules/es.array.last-index-of\");","module.exports = require(\"current-script-polyfill\");","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=0cff4106&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=0cff4106&scoped=true&lang=css&\"","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},on:{\"contextUpdate\":_vm.contextCardUpdate}})],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\"},[_vm._v(\" Filters \")]):_vm._e(),_c('el-popover',{attrs:{\"title\":\"How do filters work?\",\"width\":\"250\",\"trigger\":\"click\",\"append-to-body\":false,\"popper-class\":\"popover\"}},[_c('map-svg-icon',{staticClass:\"help\",attrs:{\"slot\":\"reference\",\"icon\":\"help\"},slot:\"reference\"}),_c('div',[_c('strong',[_vm._v(\"Within categories:\")]),_vm._v(\" OR \"),_c('br'),_vm._v(\" example: 'heart' OR 'colon' \"),_c('br'),_c('br'),_c('strong',[_vm._v(\"Between categories:\")]),_vm._v(\" AND \"),_c('br'),_vm._v(\" example: 'rat' AND 'lung' \")])],1)],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 <map-svg-sprite-color />\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 Filters\r\n </div>\r\n <el-popover\r\n title=\"How do filters work?\"\r\n width=\"250\"\r\n trigger=\"click\"\r\n :append-to-body=false\r\n popper-class=\"popover\"\r\n >\r\n <map-svg-icon slot=\"reference\" icon=\"help\" class=\"help\"/>\r\n <div >\r\n <strong>Within categories:</strong> OR \r\n <br/>\r\n example: 'heart' OR 'colon'\r\n <br/>\r\n <br/>\r\n <strong>Between categories:</strong> AND\r\n <br/>\r\n example: 'rat' AND 'lung'\r\n </div>\r\n </el-popover>\r\n \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, Popover } 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 { MapSvgIcon, MapSvgSpriteColor } from \"@abi-software/svg-sprite\";\r\n\r\nimport {AlgoliaClient} from \"../algolia/algolia.js\";\r\nimport { facetPropPathMapping } from \"../algolia/utils.js\";\r\n\r\nlocale.use(lang);\r\nVue.use(Option);\r\nVue.use(Select);\r\nVue.use(Popover)\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 MapSvgIcon,\r\n MapSvgSpriteColor,\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 let dataFacet = {...this.facets[2]}\r\n let newChildren = dataFacet.children.filter( el=> {\r\n if (el.label === 'Scaffold' || el.label === 'Simulation' || el.label === 'Show all'){\r\n return el\r\n }\r\n })\r\n newChildren.push({label:'Image'})\r\n dataFacet.children = newChildren\r\n window.newChildren = newChildren\r\n window.ff = dataFacet\r\n dataFacet.label = 'Data type'\r\n this.facets.push(dataFacet)\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.help {\r\n width: 24px !important;\r\n height: 24px;\r\n transform: scale(1.1);\r\n color: #8300bf;\r\n cursor: pointer;\r\n}\r\n\r\n.popover {\r\n color: rgb(48, 49, 51);\r\n font-family: Asap;\r\n margin: 12px;\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=34bc3234&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=34bc3234&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 \"34bc3234\",\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.entry.contextualInformation)?_c('el-button',{staticClass:\"button\",attrs:{\"size\":\"mini\",\"icon\":\"el-icon-view\"},on:{\"click\":_vm.openContext}},[_vm._v(\"View context data\")]):_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","<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=\"entry.contextualInformation\" @click=\"openContext\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View context data</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 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 apiLocation: this.envVars.API_LOCATION,\r\n version: this.version,\r\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\r\n banner: this.thumbnail\r\n }\r\n this.propogateCardAction(action)\r\n },\r\n openContext: function(){\r\n let action = {\r\n label: capitalise(this.label),\r\n resource: 'not used',\r\n title: \"View 3D scaffold\",\r\n type: \"Scaffold\",\r\n discoverId: this.discoverId,\r\n apiLocation: this.envVars.API_LOCATION,\r\n version: this.version,\r\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\r\n banner: this.thumbnail\r\n }\r\n this.propogateCardAction(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 apiLocation: this.envVars.API_LOCATION,\r\n version: this.version,\r\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\r\n banner: this.thumbnail\r\n }\r\n this.propogateCardAction(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 apiLocation: this.envVars.API_LOCATION,\r\n version: this.version,\r\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\r\n banner: this.thumbnail,\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 propogateCardAction: function(action){\r\n EventBus.$emit(\"PopoverActionClick\", action)\r\n if (action.contextCardUrl) {\r\n this.$emit('contextUpdate', action)\r\n }\r\n\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=0cff4106&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=0cff4106&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 \"0cff4106\",\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\"})]),(_vm.showDetails && Object.keys(_vm.contextData).length !== 0)?_c('el-card',{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.banner}}),_c('div',{staticClass:\"card-right\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.contextData.heading))]),_c('div',[_vm._v(_vm._s(_vm.contextData.description))]),_vm._l((_vm.contextData.views),function(view,i){return [_c('br',{key:i}),_c('span',{key:i+'_1',staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.openViewFile(view)}}},[_c('img',{staticStyle:{\"height\":\"25px\"},attrs:{\"src\":_vm.getFileFromPath(view.thumbnail)}}),_vm._v(\" \"+_vm._s(view.description))])]})],2)]):_vm._e()],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-if=\"showDetails && Object.keys(contextData).length !== 0\" class=\"context-card card\" :body-style=\"{ padding: '0px', 'background-color': 'white', display: 'flex', width: '516px'}\">\r\n <img :src=\"entry.banner\" class=\"context-image card-left\">\r\n <div class=\"card-right\">\r\n <div class=\"title\">{{contextData.heading}}</div>\r\n <div>{{contextData.description}}</div>\r\n <template v-for=\"(view, i) in contextData.views\">\r\n <br v-bind:key=\"i\"/>\r\n <span v-bind:key=\"i+'_1'\" @click=\"openViewFile(view)\" style=\"cursor:pointer;\"><img :src=\"getFileFromPath(view.thumbnail)\" style=\"height: 25px;\"> {{view.description}}</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\nimport EventBus from \"./EventBus\"\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 contextData: {},\r\n showDetails: true\r\n };\r\n },\r\n watch: {\r\n 'entry.contextCardUrl'(val){\r\n this.getContextFile(val)\r\n }\r\n },\r\n methods: {\r\n getContextFile: function (contextFileUrl) {\r\n fetch(contextFileUrl)\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.contextData = data\r\n console.log(this.contextData)\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 getFileFromPath: function(path){\r\n return `${this.entry.apiLocation}s3-resource/${this.entry.discoverId}/${this.entry.version}/files/${path}`\r\n },\r\n openViewFile: function(view){\r\n\r\n // note that we assume that the view file is in the same directory as the scaffold (viewUrls take relative paths)\r\n this.entry.viewUrl = view.path.split('/')[view.path.split('/').length-1]\r\n EventBus.$emit(\"PopoverActionClick\", this.entry)\r\n }\r\n \r\n },\r\n mounted: function(){\r\n this.getContextFile(this.entry.contextCardUrl)\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=799c215e&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=799c215e&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 \"799c215e\",\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\" @contextUpdate=\"contextCardUpdate\"></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 contextCardEntry: undefined\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 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 contextCardUpdate: function(val){\r\n this.contextCardEntry = val\r\n },\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: filters,\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.dois = searchData.dois\r\n this.results = searchData.items\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 contextualInformation: element['abi-contextual-information'].length > 0 ? element['abi-contextual-information'] : 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=ccb87ff8&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=ccb87ff8&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 \"ccb87ff8\",\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":""}
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/./src/components/ContextCard.vue?8138","webpack://map-side-bar/external \"element-ui/lib/drawer\"","webpack://map-side-bar/./src/components/DatasetCard.vue?511e","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/./src/components/SidebarContent.vue?2fc6","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 \"element-ui/lib/popover\"","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/popover.css\"","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/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/./src/components/SearchFilters.vue?77dc","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?5873","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://map-side-bar/./src/components/SidebarContent.vue?04bd","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?277f","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?13c9","webpack://map-side-bar/./src/components/EventBus.js","webpack://map-side-bar/./src/components/hardcoded-context-info.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?4e71","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?13ee","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","contextCardEnabled","clearSearchClicked","nativeOn","searchEvent","model","callback","$$v","searchInput","_v","filterEntry","filterUpdate","numberPerPageUpdate","filtersLoading","results","loadingCards","sciCrunchError","_s","contextCardUpdate","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","MapSvgIcon","MapSvgSpriteColor","entry","type","default","data","cascaderIsReady","previousShowAllChecked","species","gender","organ","datasets","showFilters","showFiltersText","numberDatasetsShown","computed","createCascaderItemValue","term","populateCascader","event","showAllEventModifier","propPath","fs","setCascader","filterKeys","makeCascadeLabelsClickable","hasShowAll","facetMaps","showAll","splice","modifiedEvent","sort","a","b","createDataTypeFacet","el","count","replace","dataFacet","newChildren","__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","221","string","dataLocation","hasCSVFile","lastName","numberSamples","numberSubjects","organs","open","additionalLinks","description","xmlhttp","apiLocation","setRequestHeader","onreadystatechange","readyState","status","url","JSON","parse","responseText","uri","send","stringify","isSedmlResource","resource","propogateCardAction","action","contextCardUrl","getScaffoldPath","path","getFileFromPath","isOverflown","clientHeight","scrollHeight","splitDOI","getBanner","fullName","$refs","card","updated","watch","showDetails","contextData","banner","heading","view","openViewFile","staticStyle","sample","toggleSampleDetails","style","color","sampleDetails","generateFileLink","showContextCard","loading","handler","val","getContextFile","immediate","contextFileUrl","removeDoubleFilesPath","viewUrl","handleErrors","initial_state","lastSearch","pageModel","start","hasSearched","visible","Boolean","isDrawer","firstSearch","String","flex","display","openSearch","resetPageNavigation","searchAlgolia","filtersRef","keyCode","MouseEvent","searchSciCrunch","disableCards","callSciCrunch","API_LOCATION","params","content","scroll","resultsProcessing","sampleSize","subjectSize","timestamp","datasetId","organisms","csvFiles","scaffolds","contextualInformation","s3uri","createfilterParams","append","e","fullEndpoint","console","log","created","searchEndpoint","title","highlightText","titleClicked","tabTitles","Number","openAtStart","openNeuronSearch"],"mappings":"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Q,4B,qBCAzBxC,EAAOD,QAAUyC,QAAQ,kC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,4C,qBCAzBxC,EAAOD,QAAUyC,QAAQ,kC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0C,qBCAzBxC,EAAOD,QAAUyC,QAAQ,gC,8CCAzBxC,EAAOD,QAAUyC,QAAQ,oC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,wB,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0B,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0C,mBCAzBxC,EAAOD,QAAUyC,QAAQ,+B,qBCAzBxC,EAAOD,QAAUyC,QAAQ,wC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,kB,qBCAzBxC,EAAOD,QAAUyC,QAAQ,Q,qBCAzBxC,EAAOD,QAAUyC,QAAQ,sC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,wC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,uC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,2B,mBCAzBxC,EAAOD,QAAUyC,QAAQ,2B,qBCAzBxC,EAAOD,QAAUyC,QAAQ,wC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,kC,uBCAzBxC,EAAOD,QAAU,IAA0B,kC,kCCA3C,yBAAogB,EAAG,G,mBCAvgBC,EAAOD,QAAUyC,QAAQ,2C,mBCAzBxC,EAAOD,QAAUyC,QAAQ,yC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,sC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,2B,0CCAzBxC,EAAOD,QAAUyC,QAAQ,wB,mBCAzBxC,EAAOD,QAAUyC,QAAQ,wB,mBCAzBxC,EAAOD,QAAUyC,QAAQ,qC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,iD,mBCAzBxC,EAAOD,QAAUyC,QAAQ,qC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,sC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,0B,0CCAzBxC,EAAOD,QAAUyC,QAAQ,2C,mBCAzBxC,EAAOD,QAAUyC,QAAQ,4B,mBCAzBxC,EAAOD,QAAUyC,QAAQ,kC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,yB,mBCAzBxC,EAAOD,QAAUyC,QAAQ,sC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,8C,kCCAzB,yBAA0gB,EAAG,G,mBCA7gBxC,EAA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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\");","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=6b08545c&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=6b08545c&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!./DatasetCard.vue?vue&type=style&index=0&id=06a7139c&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=06a7139c&scoped=true&lang=css&\"","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\");","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=391a97dd&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=391a97dd&scoped=true&lang=css&\"","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(\"element-ui/lib/popover\");","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/popover.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\");","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\");","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=58d5fb22&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=58d5fb22&scoped=true&lang=css&\"","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 && _vm.contextCardEnabled)?_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},on:{\"contextUpdate\":_vm.contextCardUpdate}})],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\"},[_vm._v(\" Filters \")]):_vm._e(),_c('el-popover',{attrs:{\"title\":\"How do filters work?\",\"width\":\"250\",\"trigger\":\"hover\",\"append-to-body\":false,\"popper-class\":\"popover\"}},[_c('map-svg-icon',{staticClass:\"help\",attrs:{\"slot\":\"reference\",\"icon\":\"help\"},slot:\"reference\"}),_c('div',[_c('strong',[_vm._v(\"Within categories:\")]),_vm._v(\" OR \"),_c('br'),_vm._v(\" example: 'heart' OR 'colon' \"),_c('br'),_c('br'),_c('strong',[_vm._v(\"Between categories:\")]),_vm._v(\" AND \"),_c('br'),_vm._v(\" example: 'rat' AND 'lung' \")])],1)],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 <map-svg-sprite-color />\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 Filters\r\n </div>\r\n <el-popover\r\n title=\"How do filters work?\"\r\n width=\"250\"\r\n trigger=\"hover\"\r\n :append-to-body=false\r\n popper-class=\"popover\"\r\n >\r\n <map-svg-icon slot=\"reference\" icon=\"help\" class=\"help\"/>\r\n <div >\r\n <strong>Within categories:</strong> OR \r\n <br/>\r\n example: 'heart' OR 'colon'\r\n <br/>\r\n <br/>\r\n <strong>Between categories:</strong> AND\r\n <br/>\r\n example: 'rat' AND 'lung'\r\n </div>\r\n </el-popover>\r\n \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, Popover } 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 { MapSvgIcon, MapSvgSpriteColor } from \"@abi-software/svg-sprite\";\r\n\r\nimport {AlgoliaClient} from \"../algolia/algolia.js\";\r\nimport { facetPropPathMapping } from \"../algolia/utils.js\";\r\n\r\nlocale.use(lang);\r\nVue.use(Option);\r\nVue.use(Select);\r\nVue.use(Popover)\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 MapSvgIcon,\r\n MapSvgSpriteColor,\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 this.createDataTypeFacet()\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 // Create results for the filter update \r\n let filterKeys = 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 // Move results from arrays to object for use on scicrunch (note that we remove 'duplicate' as that is only needed for filter keys)\r\n let filters = event.filter( selection => selection !== undefined).map( fs => {\r\n let propPath = fs[0].includes('duplicate') ? fs[0].split('duplicate')[0] : fs[0]\r\n return {\r\n facetPropPath: propPath, \r\n facet: fs[1].split(\"/\")[1],\r\n term: fs[1].split(\"/\")[0], \r\n }\r\n })\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(filterKeys); //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 createDataTypeFacet: function(){\r\n let dataFacet = {...this.facets[2]} // copy the 'Experiemental approach' facet\r\n let count = this.facets.at(-1).id // get the last id count\r\n\r\n // Step through the children that are valid data types, switch thier values \r\n let newChildren = dataFacet.children.filter( el=> {\r\n if (el.label === 'Scaffold' || el.label === 'Simulation' || el.label === 'Show all'){\r\n el.key = el.label\r\n el.id = count\r\n el.value = el.value.replace('Experimental approach', 'Data type')\r\n count++\r\n return el\r\n }\r\n })\r\n dataFacet.id = count\r\n dataFacet.key = 'Data type'\r\n // Add 'duplicate' so that the key is unique. This is removed in the cascade event for filtering\r\n dataFacet.value += 'duplicate' \r\n dataFacet.children = newChildren\r\n dataFacet.label = 'Data type'\r\n this.facets.push(dataFacet)\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.help {\r\n width: 24px !important;\r\n height: 24px;\r\n transform: scale(1.1);\r\n color: #8300bf;\r\n cursor: pointer;\r\n}\r\n\r\n.popover {\r\n color: rgb(48, 49, 51);\r\n font-family: Asap;\r\n margin: 12px;\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\r\n.filters >>> .el-popover {\r\n background: #f3ecf6 !important;\r\n border: 1px solid #8300BF;\r\n border-radius: 4px;\r\n color: #303133 !important;\r\n font-size: 12px;\r\n line-height: 18px;\r\n \r\n \r\n}\r\n\r\n.filters >>> .el-popover[x-placement^=\"top\"] .popper__arrow {\r\n border-top-color: #8300BF;\r\n border-bottom-width: 0;\r\n}\r\n.filters >>> .el-popover[x-placement^=\"top\"] .popper__arrow::after {\r\n border-top-color: #f3ecf6;\r\n border-bottom-width: 0;\r\n}\r\n\r\n.filters >>> .el-popover[x-placement^=\"bottom\"] .popper__arrow {\r\n border-top-width: 0;\r\n border-bottom-color: #8300BF;\r\n}\r\n.filters >>> .el-popover[x-placement^=\"bottom\"] .popper__arrow::after {\r\n border-top-width: 0;\r\n border-bottom-color: #f3ecf6;\r\n}\r\n\r\n.filters >>> .el-popover[x-placement^=\"right\"] .popper__arrow {\r\n border-right-color: #8300BF;\r\n border-left-width: 0;\r\n}\r\n.filters >>> .el-popover[x-placement^=\"right\"] .popper__arrow::after {\r\n border-right-color: #f3ecf6;\r\n border-left-width: 0;\r\n}\r\n\r\n.filters >>> .el-popover[x-placement^=\"left\"] .popper__arrow {\r\n border-right-width: 0;\r\n border-left-color: #8300BF;\r\n}\r\n.filters >>> .el-popover[x-placement^=\"left\"] .popper__arrow::after {\r\n border-right-width: 0;\r\n border-left-color: #f3ecf6;\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=58d5fb22&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=58d5fb22&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 \"58d5fb22\",\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 \"description\": \"This dataset contains single cell scale anatomical map of the rat intrinsic cardiac nervous system (ICNS) across four male and three female hearts. These cell clusters can be seen by the yellow data points on the image as well as spherical markers on the 3D heart scaffold. The dataset provides an integrative framework to visualise the spatial distribution of ICNS across different hearts.\",\r\n \"heading\": \"Mapped ICN samples\",\r\n \"id\": \"sparc.science.context_data\",\r\n \"samples\": [\r\n {\r\n \"annotation\": \"\",\r\n \"description\": \"Spatial location of isolated ICNS mapped onto a generic heart scaffold\",\r\n \"doi\": \"\",\r\n \"heading\": \"ICNS from subject M54-8\",\r\n \"id\": \"Sample 1\",\r\n \"path\": \"\",\r\n \"view\": \"View 1\",\r\n \"color\": \"#FFFF00\",\r\n \"thumbnail\": \"https://raw.githubusercontent.com/ABI-Software/map-sidebar/main/assets/temp-pics/orange.png\"\r\n },\r\n {\r\n \"annotation\": \"\",\r\n \"description\": \"Spatial location of isolated ICNS mapped onto a generic heart scaffold\",\r\n \"doi\": \"\",\r\n \"heading\": \"ICNS from subject M54-5\",\r\n \"id\": \"Sample 2\",\r\n \"path\": \"\",\r\n \"view\": \"View 2\",\r\n \"color\": \"#FFA500\",\r\n \"thumbnail\": \"https://raw.githubusercontent.com/ABI-Software/map-sidebar/main/assets/temp-pics/teal.png\"\r\n }\r\n ],\r\n \"version\": \"0.1.0\",\r\n },\r\n 221: {\r\n \"description\": \"3D digital tracings of the enteric plexus obtained from seven subjects (M11, M16, M162, M163, M164, M168) are mapped randomly on mouse proximal colon. The data depicts individual neural wiring patterns in enteric microcircuits, and revealed both neuron and fiber units wired in a complex organization.\",\r\n \"heading\": \"Digital tracings of enteric plexus\",\r\n \"id\": \"sparc.science.context_data\",\r\n \"samples\": [\r\n {\r\n \"annotation\": \"\",\r\n \"description\": \"Neuronal soma and fibers in a myenteric ganglion in this subject are annotated into the following groups to highlight their interactions:\\n\\nNeuron1,2,3 Connex: Connections between 3 neurons and cross-ganglionic fibers\\n\\nNeuron4_Connex: A small neuron contacts fibers passing the ganglion\\n\\nNeuron5: Multiple projections of a neuron in an myenteric ganglion\\n\\nNeuron5,3,7 Connex: Connections between 3 neurons, nerve fibers, IGNEx (complex type of intraganglionic nerve endings) and fibers in the circular muscles.\\n\\nNeuron8,9,10 Connex: Connections of 3 neurons with each other and with long passing fibers. \\n\\nIntraganglionic Nerve Ending (IGNE): Digital traces of neurites consist of complex intraganglionic nerve endings. The blue fiber has branched terminals, more likely the afferent nerve endings; the violet and cyan terminals also interweave into the fiber nest; the orange, pink and peach fibers and one process of the neuron cross the IGNE to make 1-2 conjunctions. \\n\",\r\n \"doi\": \"\",\r\n \"heading\": \"Digital tracing for subject M11\",\r\n \"id\": \"Sample 1\",\r\n \"path\": \"files/derivative/sub-M11/sam-pCm11/digital-traces/pC PHPS XFP M11 20XZ 180425_180713_2_NL_20.xml\",\r\n \"view\": \"View 1\"\r\n },\r\n {\r\n \"annotation\": \"\",\r\n \"description\": \"This digital trace demonstrates some types of wiring. A long process of the green neuron terminates in the intraganglionic nerve endings (IGNE) while in contact with a nerve fiber (cyan), soma of a neuron (peach) and processes of 3 neurons (magenta, yellow and red). Two neurons and one fiber are traced to an IGNE. \",\r\n \"doi\": \"\",\r\n \"heading\": \"Digital tracing for subject M16\",\r\n \"id\": \"Sample 2\",\r\n \"path\": \"files/derivative/sub-M16/sam-pCm16/digital-traces/pC PHPS XFP M16 20XZ 180425_180524.xml\",\r\n \"view\": \"View 2\"\r\n }\r\n ],\r\n \"version\": \"0.1.0\",\r\n \"views\": [\r\n {\r\n \"annotation\": \"--\",\r\n \"description\": \"Digital tracing of neurons for subject M11.\",\r\n \"id\": \"View 1\",\r\n \"path\": \"files/derivative/Scaffolds/M11_view.json\",\r\n \"sample\": \"Sample 1\",\r\n \"thumbnail\": \"https://api.sparc.science/s3-resource/221/2/files/derivative/Scaffolds/M11_thumbnail.jpeg\"\r\n },\r\n {\r\n \"annotation\": \"--\",\r\n \"description\": \"Digital tracing of neurons for subject M16.\",\r\n \"id\": \"View 2\",\r\n \"path\": \"files/derivative/Scaffolds/M16_view.json\",\r\n \"sample\": \"Sample 2\",\r\n \"thumbnail\": \"https://api.sparc.science/s3-resource/221/2/files/derivative/Scaffolds/M16_thumbnail.jpeg\"\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 speciesMap from \"./species-map\";\r\nimport hardcoded_info from './hardcoded-context-info'\r\n\r\nlocale.use(lang);\r\nVue.use(Button);\r\nVue.use(Icon);\r\n\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 apiLocation: this.envVars.API_LOCATION,\r\n version: this.version,\r\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\r\n banner: this.thumbnail\r\n }\r\n if (hardcoded_info[this.discoverId]){\r\n action.contextCardUrl = true\r\n }\r\n this.propogateCardAction(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 apiLocation: this.envVars.API_LOCATION,\r\n version: this.version,\r\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\r\n banner: this.thumbnail\r\n }\r\n this.propogateCardAction(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 apiLocation: this.envVars.API_LOCATION,\r\n version: this.version,\r\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\r\n banner: this.thumbnail,\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 propogateCardAction: function(action){\r\n EventBus.$emit(\"PopoverActionClick\", action)\r\n if (action.contextCardUrl) {\r\n this.$emit('contextUpdate', action)\r\n }\r\n\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=06a7139c&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=06a7139c&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 \"06a7139c\",\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.showContextCard),expression:\"showContextCard\"}]},[_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\"})]),(_vm.showDetails && Object.keys(_vm.contextData).length !== 0)?_c('el-card',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"context-card card\"},[_c('div',{staticClass:\"card-left\"},[_c('img',{staticClass:\"context-image\",attrs:{\"src\":_vm.entry.banner}})]),_c('div',{staticClass:\"card-right\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.contextData.heading))]),_c('div',[_vm._v(_vm._s(_vm.contextData.description))]),_c('br'),(_vm.contextData.views)?_c('div',{staticClass:\"subtitle\"},[_vm._v(\"Scaffold Views\")]):_vm._e(),_vm._l((_vm.contextData.views),function(view,i){return [_c('span',{key:i+'_1',staticClass:\"context-card-item\",on:{\"click\":function($event){return _vm.openViewFile(view)}}},[_c('img',{staticClass:\"key-image\",attrs:{\"src\":_vm.getFileFromPath(view.thumbnail)}}),_vm._v(\" \"+_vm._s(view.description)+\" \")]),_c('br',{key:i})]}),_c('div',{staticStyle:{\"margin-bottom\":\"16px\"}}),(_vm.contextData.samples)?_c('div',{staticClass:\"subtitle\"},[_vm._v(\"Samples on Scaffold\")]):_vm._e(),_vm._l((_vm.contextData.samples),function(sample,i){return [_c('span',{key:i+'_3',staticClass:\"context-card-item\",on:{\"click\":function($event){return _vm.toggleSampleDetails(i)}}},[_c('div',{key:i+'_6',staticStyle:{\"display\":\"flex\"}},[(sample.color)?_c('div',{staticClass:\"color-box\",style:('background-color:'+ sample.color)}):(sample.thumbnail)?_c('img',{staticClass:\"key-image\",attrs:{\"src\":_vm.getFileFromPath(sample.thumbnail)}}):_vm._e(),_vm._v(\" \"+_vm._s(sample.heading)+\" \"),_c('i',{staticClass:\"el-icon-warning-outline info\"})])]),(_vm.sampleDetails[i])?_c('div',{key:i+'_4'},[_vm._v(\" \"+_vm._s(sample.description)+\" \"),(_vm.sampleDetails[i])?_c('a',{key:i+'_5',attrs:{\"href\":_vm.generateFileLink(sample.path),\"target\":\"_blank\"}},[_vm._v(\"View Source\")]):_vm._e()]):_vm._e(),_c('br',{key:i+'_2'})]})],2)]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"context-card-container\" ref=\"container\">\r\n <div v-show=\"showContextCard\">\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-if=\"showDetails && Object.keys(contextData).length !== 0\" v-loading=\"loading\" class=\"context-card card\" >\r\n <div class=\"card-left\">\r\n <img :src=\"entry.banner\" class=\"context-image\">\r\n </div>\r\n <div class=\"card-right\">\r\n <div class=\"title\">{{contextData.heading}}</div>\r\n <div>{{contextData.description}}</div>\r\n <br/>\r\n <div v-if=\"contextData.views\" class=\"subtitle\">Scaffold Views</div>\r\n <template v-for=\"(view, i) in contextData.views\">\r\n <span v-bind:key=\"i+'_1'\" @click=\"openViewFile(view)\" class=\"context-card-item\">\r\n <img class=\"key-image\" :src=\"getFileFromPath(view.thumbnail)\"> \r\n {{view.description}}\r\n </span>\r\n <br v-bind:key=\"i\"/>\r\n </template>\r\n <div style=\"margin-bottom: 16px;\"/>\r\n <div v-if=\"contextData.samples\" class=\"subtitle\">Samples on Scaffold</div>\r\n <template v-for=\"(sample, i) in contextData.samples\">\r\n <span v-bind:key=\"i+'_3'\" class=\"context-card-item\" @click=\"toggleSampleDetails(i)\">\r\n <div v-bind:key=\"i+'_6'\" style=\"display: flex\">\r\n <div v-if=\"sample.color\" class=\"color-box\" :style=\"'background-color:'+ sample.color\"></div>\r\n <img class=\"key-image\" v-else-if=\"sample.thumbnail\" :src=\"getFileFromPath(sample.thumbnail)\">\r\n {{sample.heading}}\r\n <i class=\"el-icon-warning-outline info\"></i>\r\n </div>\r\n </span>\r\n <div v-bind:key=\"i+'_4'\" v-if=\"sampleDetails[i]\">\r\n {{sample.description}}\r\n <a v-bind:key=\"i+'_5'\" v-if=\"sampleDetails[i]\" :href=\"generateFileLink(sample.path)\" target=\"_blank\">View Source</a>\r\n </div>\r\n <br v-bind:key=\"i+'_2'\"/>\r\n </template>\r\n </div>\r\n </el-card>\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 { 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\nimport EventBus from \"./EventBus\"\r\nimport hardcoded_info from './hardcoded-context-info'\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\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 contextData: {},\r\n showDetails: true,\r\n showContextCard: true,\r\n sampleDetails: {},\r\n loading: false\r\n };\r\n },\r\n watch: {\r\n 'entry.contextCardUrl': {\r\n handler(val){\r\n if (val) {\r\n // used for hardcoding data\r\n if (val === true){\r\n this.contextData = hardcoded_info[this.entry.discoverId]\r\n } else {\r\n this.getContextFile(val)\r\n this.showContextCard = true\r\n }\r\n } else {\r\n this.showContextCard = false\r\n }\r\n },\r\n immediate: true\r\n }\r\n },\r\n methods: {\r\n getContextFile: function (contextFileUrl) {\r\n this.loading = true\r\n fetch(contextFileUrl)\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.contextData = data\r\n this.loading = false\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 this.loading = false\r\n });\r\n },\r\n removeDoubleFilesPath: function(path){\r\n if (path.includes('files/')){\r\n return path.replace('files/', '')\r\n } else {\r\n return path\r\n }\r\n },\r\n toggleSampleDetails: function(i){\r\n if (this.sampleDetails[i] === undefined){\r\n Vue.set(this.sampleDetails, i, true)\r\n } else {\r\n Vue.set(this.sampleDetails, i, !this.sampleDetails[i])\r\n }\r\n },\r\n getFileFromPath: function(path){\r\n // for hardcoded data\r\n if(this.entry.contextCardUrl === true){\r\n return path\r\n }\r\n path = this.removeDoubleFilesPath(path)\r\n return `${this.entry.apiLocation}s3-resource/${this.entry.discoverId}/${this.entry.version}/files/${path}`\r\n },\r\n generateFileLink(path){\r\n return `https://sparc.science/file/${this.entry.discoverId}/${this.entry.version}?path=${encodeURI(path)}`\r\n\r\n },\r\n openViewFile: function(view){\r\n\r\n // note that we assume that the view file is in the same directory as the scaffold (viewUrls take relative paths)\r\n this.entry.viewUrl = view.path.split('/')[view.path.split('/').length-1]\r\n this.entry.type = 'Scaffold View'\r\n EventBus.$emit(\"PopoverActionClick\", this.entry)\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.hide{\r\n color: #e4e7ed;\r\n cursor: pointer;\r\n}\r\n\r\n.context-card{\r\n background-color: white;\r\n max-height: 10 50px;\r\n padding: 8px;\r\n}\r\n\r\n.context-card-item{\r\n cursor: pointer;\r\n padding-bottom: 8px;\r\n}\r\n\r\n.key-image {\r\n width: 25px;\r\n height: auto;\r\n}\r\n\r\n.context-card >>> .el-card__body {\r\n padding: 0px;\r\n display: flex;\r\n width: 516px; \r\n}\r\n\r\n.context-image{\r\n width: 250px;\r\n height: auto;\r\n}\r\n\r\n.color-box {\r\n width: 16px;\r\n height: 16px;\r\n border: solid 1px #8300bf;\r\n border-radius: 2px;\r\n margin-right: 8px;\r\n}\r\n\r\n.card {\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.cursor-pointer {\r\n cursor: pointer;\r\n height: 25px;\r\n}\r\n\r\n.info{\r\n transform: rotate(180deg);\r\n color: #8300bf;\r\n margin-left: 8px;\r\n}\r\n\r\n.title{\r\n font-weight: bold;\r\n}\r\n\r\n.subtitle{\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=6b08545c&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=6b08545c&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 \"6b08545c\",\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 && contextCardEnabled\" :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\" @contextUpdate=\"contextCardUpdate\"></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 contextCardEntry: undefined,\r\n contextCardEnabled: true\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 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 contextCardUpdate: function(val){\r\n this.contextCardEntry = val\r\n },\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: filters,\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.dois = searchData.dois\r\n this.results = searchData.items\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 contextualInformation: element['abi-contextual-information'].length > 0 ? element['abi-contextual-information'] : 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=391a97dd&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=391a97dd&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 \"391a97dd\",\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":""}