@abi-software/map-side-bar 1.2.0-beta.7 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -201
- package/README.md +53 -53
- package/babel.config.js +14 -14
- package/dist/map-side-bar.common.js +493 -905
- package/dist/map-side-bar.common.js.map +1 -1
- package/dist/map-side-bar.css +1 -1
- package/dist/map-side-bar.umd.js +493 -905
- package/dist/map-side-bar.umd.js.map +1 -1
- package/dist/map-side-bar.umd.min.js +1 -1
- package/dist/map-side-bar.umd.min.js.map +1 -1
- package/package-lock.json +13548 -13653
- package/package.json +64 -65
- package/public/index.html +17 -17
- package/scaffold_context_info.json +28 -0
- package/src/App.vue +130 -133
- package/src/algolia/algolia.js +116 -99
- package/src/algolia/utils.js +51 -51
- package/src/components/Cascader.vue +49 -49
- package/src/components/ContextCard.vue +240 -157
- package/src/components/DatasetCard.vue +404 -475
- package/src/components/EventBus.js +3 -3
- package/src/components/SearchFilters.vue +557 -557
- package/src/components/SideBar.vue +239 -239
- package/src/components/SidebarContent.vue +458 -459
- package/src/components/Tabs.vue +78 -78
- package/src/components/hardcoded-context-info.js +80 -0
- package/src/components/index.js +8 -8
- package/src/components/processFilters.js +22 -0
- package/src/components/scaffold-meta-map.js +29 -0
- package/src/components/species-map.js +8 -8
- package/src/main.js +8 -8
- package/static.json +6 -6
- package/vue.config.js +11 -11
- package/src/components/ImageGallery.vue +0 -494
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://map-side-bar/webpack/universalModuleDefinition","webpack://map-side-bar/webpack/bootstrap","webpack://map-side-bar/external \"element-ui/lib/pagination\"","webpack://map-side-bar/external \"core-js/modules/es.symbol.iterator\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/pagination.css\"","webpack://map-side-bar/external \"core-js/modules/es.parse-int\"","webpack://map-side-bar/external \"element-ui/lib/select\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/select.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.for-each\"","webpack://map-side-bar/./src/components/Tabs.vue?c191","webpack://map-side-bar/external \"core-js/modules/es.array.concat\"","webpack://map-side-bar/external \"core-js/modules/web.dom-collections.iterator\"","webpack://map-side-bar/external \"core-js/modules/es.object.keys\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/link.css\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/button.css\"","webpack://map-side-bar/external \"core-js/modules/web.url\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/loading.css\"","webpack://map-side-bar/./src/components/SearchFilters.vue?445d","webpack://map-side-bar/external \"element-ui/lib/drawer\"","webpack://map-side-bar/external \"@abi-software/gallery\"","webpack://map-side-bar/external \"@abi-software/svg-sprite\"","webpack://map-side-bar/external \"core-js/modules/es.object.get-own-property-descriptors\"","webpack://map-side-bar/external \"core-js/modules/es.string.split\"","webpack://map-side-bar/external \"core-js/modules/es.set\"","webpack://map-side-bar/external \"core-js/modules/es.array.filter\"","webpack://map-side-bar/./src/components/SidebarContent.vue?5803","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/card.css\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/drawer.css\"","webpack://map-side-bar/external \"core-js/modules/es.symbol.description\"","webpack://map-side-bar/external \"core-js/modules/es.regexp.exec\"","webpack://map-side-bar/external \"element-ui/lib/button\"","webpack://map-side-bar/external \"core-js/modules/es.regexp.to-string\"","webpack://map-side-bar/external \"core-js/modules/es.symbol\"","webpack://map-side-bar/external \"core-js/modules/es.array.slice\"","webpack://map-side-bar/external \"core-js/modules/es.object.get-own-property-descriptor\"","webpack://map-side-bar/external \"element-ui/lib/cascader\"","webpack://map-side-bar/external \"element-ui/lib/locale/lang/en\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/cascader.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.sort\"","webpack://map-side-bar/external \"core-js/modules/es.number.constructor\"","webpack://map-side-bar/external \"regenerator-runtime/runtime\"","webpack://map-side-bar/external \"core-js/modules/es.array.splice\"","webpack://map-side-bar/external \"element-ui/lib/link\"","webpack://map-side-bar/external \"element-ui/lib/locale\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/option.css\"","webpack://map-side-bar/external \"core-js/modules/es.promise\"","webpack://map-side-bar/./src/components/ImageGallery.vue?693b","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/./src/components/ContextCard.vue?0546","webpack://map-side-bar/external \"core-js/modules/es.map\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/base.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.flat\"","webpack://map-side-bar/./assets/missing-image.svg","webpack://map-side-bar/external \"@abi-software/gallery/src/mixins/GalleryHelpers\"","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/./src/components/SideBar.vue?a3c3","webpack://map-side-bar/external \"core-js/modules/es.function.name\"","webpack://map-side-bar/external \"core-js/modules/web.dom-collections.for-each\"","webpack://map-side-bar/external \"core-js/modules/es.string.search\"","webpack://map-side-bar/external \"core-js/modules/es.string.replace\"","webpack://map-side-bar/external \"element-ui/lib/option\"","webpack://map-side-bar/external \"core-js/modules/es.array.last-index-of\"","webpack://map-side-bar/external \"current-script-polyfill\"","webpack://map-side-bar/./src/components/DatasetCard.vue?8ae0","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?5c35","webpack://map-side-bar/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://map-side-bar/./src/components/SidebarContent.vue?e5bc","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?bfa5","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?5111","webpack://map-side-bar/./src/components/EventBus.js","webpack://map-side-bar/./src/components/ImageGallery.vue?4349","webpack://map-side-bar/src/components/ImageGallery.vue","webpack://map-side-bar/./src/components/ImageGallery.vue?b8b4","webpack://map-side-bar/./src/components/ImageGallery.vue","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?58bf","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?1f8e","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","description","images","scaffolds","scaffoldViews","segmentation","simulationLinks","videos","thumbnails","thumbnail","biolucidaData","galleryClicked","cardClicked","contributors","publishDate","publishYear","samples","openRepository","cardOverflow","expand","EventBus","Vue","bottomSpacer","galleryItems","maxWidth","imageStyle","imageContainerStyle","shadow","str","pop","string","mixins","datasetScicrunch","datasetBiolucida","String","plots","segmentations","additionalLinks","datasetId","Number","datasetVersion","datasetThumbnail","currentIndex","ro","scicrunchItems","biolucidaItems","payload","createSciCurnchItems","createDatasetItem","createScaffoldItems","createSimulationItems","createPlotItems","createSegmentationItems","createImageItems","createVideoItems","title","link","baseName","filePath","linkUrl","thumbnailURL","file_path","path","mimetype","resource","userData","action","apiLocation","replaceAll","share_link","isSedmlResource","uri","API_LOCATION","video","onResize","$el","clientWidth","created","watch","deep","immediate","handler","ResizeObserver","observe","destroyed","dataIsReady","dataLocation","lastName","numberSamples","numberSubjects","organs","openDataset","propogateCardAction","openScaffold","openPlot","open","xmlhttp","setRequestHeader","onreadystatechange","readyState","status","url","JSON","parse","responseText","send","stringify","openSimulation","openSegmentation","openImage","image","image_id","itemId","sourcepkg_id","contextCardUrl","getScaffoldPath","getFileFromPath","isOverflown","clientHeight","scrollHeight","splitDOI","getBanner","fullName","getBiolucidaInfo","endpoint","$refs","card","showDetails","contextData","banner","heading","view","openViewFile","showContextCard","val","getContextFile","contextFileUrl","removeDoubleFilesPath","viewUrl","handleErrors","initial_state","lastSearch","pageModel","start","hasSearched","visible","Boolean","isDrawer","firstSearch","flex","display","openSearch","resetPageNavigation","searchAlgolia","filtersRef","keyCode","MouseEvent","searchSciCrunch","disableCards","callSciCrunch","params","content","scroll","style","resultsProcessing","sampleSize","subjectSize","updated","timestamp","dataset_identifier","datasetRevision","dataset_revision","dataset_version","organisms","plot","contextualInformation","simulation","s3uri","createfilterParams","append","e","fullEndpoint","console","log","searchEndpoint","highlightText","titleClicked","tabTitles","openAtStart","openNeuronSearch"],"mappings":"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UyC,QAAQ,4B,qBCAzBxC,EAAOD,QAAUyC,QAAQ,kC,8CCAzBxC,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,oCCAzB,yBAAygB,EAAG,G,qBCA5gBxC,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,oCCAzB,yBAAwgB,EAAG,G,mBCA3gBxC,EAAOD,QAAUyC,QAAQ,2B,qBCAzBxC,EAAOD,QAAUyC,QAAQ,wC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,kC,uBCAzBxC,EAAOD,QAAU,IAA0B,kC,mBCA3CC,EAAOD,QAAUyC,QAAQ,oD,mBCAzBxC,EAAOD,QAAUyC,QAAQ,2C,0CCAzBxC,EAAOD,QAAUyC,QAAQ,yC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,sC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,2B,mBCAzBxC,EAAOD,QAAUyC,QAAQ,wB,mBCAzBxC,EAAOD,QAAUyC,QAAQ,wB,kCCAzB,yBAAogB,EAAG,G,mBCAvgBxC,EAAOD,QAAUyC,QAAQ,qC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,iD,mBCAzBxC,EAAOD,QAAUyC,QAAQ,qC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,sC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,0B,iECAzBxC,EAAOD,QAAUyC,QAAQ,2C,mBCAzBxC,EAAOD,QAAUyC,QAAQ,4B,kCCAzB,yBAAwgB,EAAG,G,mBCA3gBxC,EAAOD,QAAUyC,QAAQ,kC,0CCAzBxC,EAAOD,QAAU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","file":"map-side-bar.umd.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"map-side-bar\"] = factory();\n\telse\n\t\troot[\"map-side-bar\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fae3\");\n","module.exports = require(\"element-ui/lib/pagination\");","module.exports = require(\"core-js/modules/es.symbol.iterator\");","module.exports = require(\"element-ui/lib/theme-chalk/pagination.css\");","module.exports = require(\"core-js/modules/es.parse-int\");","module.exports = require(\"element-ui/lib/select\");","module.exports = require(\"element-ui/lib/theme-chalk/select.css\");","module.exports = require(\"core-js/modules/es.array.for-each\");","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=style&index=0&id=5d1b9484&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=style&index=0&id=5d1b9484&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/es.array.concat\");","module.exports = require(\"core-js/modules/web.dom-collections.iterator\");","module.exports = require(\"core-js/modules/es.object.keys\");","module.exports = require(\"element-ui/lib/theme-chalk/link.css\");","module.exports = require(\"element-ui/lib/theme-chalk/button.css\");","module.exports = require(\"core-js/modules/web.url\");","module.exports = require(\"element-ui/lib/theme-chalk/loading.css\");","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilters.vue?vue&type=style&index=0&id=57801ec0&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=57801ec0&scoped=true&lang=css&\"","module.exports = require(\"element-ui/lib/drawer\");","module.exports = require(\"@abi-software/gallery\");","module.exports = require(\"@abi-software/svg-sprite\");","module.exports = require(\"core-js/modules/es.object.get-own-property-descriptors\");","module.exports = require(\"core-js/modules/es.string.split\");","module.exports = require(\"core-js/modules/es.set\");","module.exports = require(\"core-js/modules/es.array.filter\");","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=3d1731ba&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=3d1731ba&scoped=true&lang=css&\"","module.exports = require(\"element-ui/lib/theme-chalk/card.css\");","module.exports = require(\"element-ui/lib/theme-chalk/drawer.css\");","module.exports = require(\"core-js/modules/es.symbol.description\");","module.exports = require(\"core-js/modules/es.regexp.exec\");","module.exports = require(\"element-ui/lib/button\");","module.exports = require(\"core-js/modules/es.regexp.to-string\");","module.exports = require(\"core-js/modules/es.symbol\");","module.exports = require(\"core-js/modules/es.array.slice\");","module.exports = require(\"core-js/modules/es.object.get-own-property-descriptor\");","module.exports = require(\"element-ui/lib/cascader\");","module.exports = require(\"element-ui/lib/locale/lang/en\");","module.exports = require(\"element-ui/lib/theme-chalk/cascader.css\");","module.exports = require(\"core-js/modules/es.array.sort\");","module.exports = require(\"core-js/modules/es.number.constructor\");","module.exports = require(\"regenerator-runtime/runtime\");","module.exports = require(\"core-js/modules/es.array.splice\");","module.exports = require(\"element-ui/lib/link\");","module.exports = require(\"element-ui/lib/locale\");","module.exports = require(\"element-ui/lib/theme-chalk/option.css\");","module.exports = require(\"core-js/modules/es.promise\");","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!./ImageGallery.vue?vue&type=style&index=0&id=6e33602c&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!./ImageGallery.vue?vue&type=style&index=0&id=6e33602c&scoped=true&lang=css&\"","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\");","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=5de93eb9&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=5de93eb9&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/es.map\");","module.exports = require(\"element-ui/lib/theme-chalk/base.css\");","module.exports = require(\"core-js/modules/es.array.flat\");","module.exports = __webpack_public_path__ + \"img/missing-image.1878d8b8.svg\";","module.exports = require(\"@abi-software/gallery/src/mixins/GalleryHelpers\");","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\");","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=style&index=0&id=3d831a8e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=style&index=0&id=3d831a8e&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/es.function.name\");","module.exports = require(\"core-js/modules/web.dom-collections.for-each\");","module.exports = require(\"core-js/modules/es.string.search\");","module.exports = require(\"core-js/modules/es.string.replace\");","module.exports = require(\"element-ui/lib/option\");","module.exports = require(\"core-js/modules/es.array.last-index-of\");","module.exports = require(\"current-script-polyfill\");","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=66c0a49d&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=66c0a49d&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 && _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>\n/* eslint-disable no-alert, no-console */\nimport { Cascader } from \"element-ui\";\n\nexport default {\n name: 'CustomCascader',\n extends: Cascader,\n methods:{\n //Modify this internal function to disable Show all tags\n computePresentTags() {\n const { isDisabled, leafOnly, showAllLevels, separator, collapseTags } = this;\n const checkedNodes = this.getCheckedNodes(leafOnly);\n const tags = [];\n const genTag = node => ({\n node,\n key: node.uid,\n text: node.getText(showAllLevels, separator),\n hitState: false,\n closable: !isDisabled && !node.isDisabled\n });\n let customNodes = checkedNodes.filter(node =>\n {\n return !(node.getText(showAllLevels, separator).includes(\"Show all\"));\n }\n );\n if (customNodes.length) {\n const [first, ...rest] = customNodes;\n const restCount = rest.length;\n tags.push(genTag(first));\n if (restCount) {\n if (collapseTags) {\n tags.push({\n key: -1,\n text: `+ ${restCount}`,\n closable: false\n });\n } else {\n rest.forEach(node => tags.push(genTag(node)));\n }\n }\n }\n this.checkedNodes = checkedNodes;\n this.presentTags = tags;\n this.$emit(\"tags-changed\", this.presentTags);\n }\n }\n}\n\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cascader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cascader.vue?vue&type=script&lang=js&\"","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","export default {\n 'homo sapiens': 'Human',\n 'rattus norvegicus': 'Rat',\n 'mus musculus': 'Mouse',\n 'sus scrofa domesticus': 'Pig',\n 'sus scrofa': 'Boar',\n 'felis catus': 'Cat'\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* eslint-disable no-alert, no-console */\nimport algoliasearch from 'algoliasearch'\n\n// export `createAlgoliaClient` to use it in page components\nexport class AlgoliaClient {\n constructor(algoliaId, algoliaKey, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {\n this.client = algoliasearch(\n algoliaId,\n algoliaKey\n )\n this.PENNSIEVE_API_LOCATION = PENNSIEVE_API_LOCATION\n }\n initIndex(ALGOLIA_INDEX) {\n this.index = this.client.initIndex(ALGOLIA_INDEX);\n }\n\n getAlgoliaFacets (propPathMapping) {\n const map = new Map(Object.entries(propPathMapping));\n const facetPropPaths = Array.from(map.keys() );\n let facetData = []\n let facetId = 0\n return this.index\n .search('', {\n sortFacetValuesBy: 'alpha',\n facets: facetPropPaths\n })\n .then(response => {\n facetPropPaths.map((facetPropPath) => {\n var children = []\n const responseFacets = response.facets\n if (responseFacets === undefined) {return}\n const responseFacetChildren =\n responseFacets[facetPropPath] == undefined\n ? {}\n : responseFacets[facetPropPath]\n Object.keys(responseFacetChildren).map(facet => {\n children.push({\n label: facet,\n id: facetId++,\n facetPropPath: facetPropPath\n })\n })\n if (children.length > 0) {\n facetData.push({\n label: map.get(facetPropPath),\n id: facetId++,\n children: children,\n key: facetPropPath\n })\n }\n })\n return facetData\n })\n }\n \n // Returns all DOIs of all versions for a given discover dataset\n _discoverAllDois (discoverId, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {\n return new Promise(resolve => {\n fetch(`${PENNSIEVE_API_LOCATION}/discover/datasets/${discoverId}/versions`).then(r=>r.json()).then(dataset => {\n resolve(dataset.map(version => version.doi))\n })\n })\n }\n \n // Get all dois given a list of discoverIds\n _expandDois (discoverIds, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {\n return new Promise(resolve => {\n let promiseList = discoverIds.map(discoverId => this._discoverAllDois(discoverId, PENNSIEVE_API_LOCATION))\n Promise.all(promiseList).then((values) => {\n resolve(values.flat())\n });\n })\n }\n \n /**\n * Get Search results\n * This is using fetch from the Algolia API\n */\n search (filter, query='', hitsperPage=10, page=1) {\n return new Promise(resolve => {\n this.index\n .search(query, {\n facets:['*'],\n hitsPerPage: hitsperPage,\n page: page-1,\n filters: filter\n })\n .then(response => {\n let searchData = {\n items: response.hits,\n total: response.nbHits,\n discoverIds: response.hits.map(r=>r.pennsieve.identifier),\n dois: response.hits.map(r=>r.item.curie.split(':')[1])\n }\n resolve(searchData)\n })\n })\n }\n}\n","/* eslint-disable no-alert, no-console */\n\n// Mapping between display categories and their Algolia index property path\n// Used for populating the Dataset Search Results facet menu dynamically\nexport const facetPropPathMapping = {\n 'anatomy.organ.name' : 'Anatomical Structure',\n 'organisms.primary.species.name' : 'Species',\n 'item.modalities.keyword' : 'Experimental Approach',\n 'attributes.subject.sex.value' : 'Sex',\n 'attributes.subject.ageCategory.value' : 'Age Categories',\n}\n\n/* Returns filter for searching algolia. All facets of the same category are joined with OR,\n * and each of those results is then joined with an AND.\n * i.e. (color:blue OR color:red) AND (shape:circle OR shape:red) */\nexport function getFilters(selectedFacetArray=undefined) {\n \n // return all datasets if no filter\n if (selectedFacetArray === undefined) {\n return 'NOT item.published.status:embargo'\n }\n\n // Switch the 'term' attribute to 'label' if 'label' does not exist \n selectedFacetArray.forEach(f=>f.label=f.facet)\n \n\n let facets = removeShowAllFacets(selectedFacetArray)\n\n let filters = \"NOT item.published.status:embargo\";\n filters = `(${filters}) AND `;\n\n const facetPropPaths = Object.keys(facetPropPathMapping);\n facetPropPaths.map((facetPropPath) => {\n const facetsToOr = facets.filter(\n (facet) => facet.facetPropPath == facetPropPath\n );\n var filter = \"\";\n facetsToOr.map((facet) => {\n filter += `\"${facetPropPath}\":\"${facet.label}\" OR `;\n });\n if (filter == \"\") {\n return;\n }\n filter = `(${filter.substring(0, filter.lastIndexOf(\" OR \"))})`;\n filters += `${filter} AND `;\n });\n return filters.substring(0, filters.lastIndexOf(\" AND \"));\n}\n\nfunction removeShowAllFacets(facetArray){\n return facetArray.filter( f => f.label !== 'Show all')\n}","<template>\n <div class=\"filters\">\n <map-svg-sprite-color />\n <transition name=\"el-zoom-in-top\">\n <span v-show=\"showFilters\" class=\"search-filters transition-box\">\n <custom-cascader\n class=\"cascader\"\n ref=\"cascader\"\n v-model=\"cascadeSelected\"\n placeholder\n :collapse-tags=\"true\"\n :options=\"options\"\n :props=\"props\"\n @change=\"cascadeEvent($event)\"\n @expand-change=\"cascadeExpandChange\"\n :show-all-levels=\"false\"\n :append-to-body=\"false\"\n @tags-changed=\"tagsChangedCallback\"\n ></custom-cascader>\n <div v-if=\"showFiltersText\" class=\"filter-default-value\">\n Filters\n </div>\n <el-popover\n title=\"How do filters work?\"\n width=\"250\"\n trigger=\"hover\"\n :append-to-body=false\n popper-class=\"popover\"\n >\n <map-svg-icon slot=\"reference\" icon=\"help\" class=\"help\"/>\n <div >\n <strong>Within categories:</strong> OR \n <br/>\n example: 'heart' OR 'colon'\n <br/>\n <br/>\n <strong>Between categories:</strong> AND\n <br/>\n example: 'rat' AND 'lung'\n </div>\n </el-popover>\n \n </span>\n </transition>\n\n <el-select\n class=\"number-shown-select\"\n v-model=\"numberShown\"\n placeholder=\"10\"\n @change=\"numberShownChanged($event)\"\n >\n <el-option\n v-for=\"item in numberDatasetsShown\"\n :key=\"item\"\n :label=\"item\"\n :value=\"item\"\n ></el-option>\n </el-select>\n <span class=\"dataset-results-feedback\">{{ this.numberOfResultsText }}</span>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Option, Select, Popover } from \"element-ui\";\nimport CustomCascader from \"./Cascader\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport speciesMap from \"./species-map\";\nimport { MapSvgIcon, MapSvgSpriteColor } from \"@abi-software/svg-sprite\";\n\nimport {AlgoliaClient} from \"../algolia/algolia.js\";\nimport { facetPropPathMapping } from \"../algolia/utils.js\";\n\nlocale.use(lang);\nVue.use(Option);\nVue.use(Select);\nVue.use(Popover)\n\nconst capitalise = function (txt) {\n return txt.charAt(0).toUpperCase() + txt.slice(1);\n};\n\nconst convertReadableLabel = function (original) {\n const name = original.toLowerCase();\n if (speciesMap[name]) {\n return capitalise(speciesMap[name]);\n } else {\n return capitalise(name);\n }\n};\n\nexport default {\n name: \"SearchFilters\",\n components: {\n CustomCascader,\n MapSvgIcon,\n MapSvgSpriteColor,\n },\n props: {\n /**\n * Object containing information for\n * the required viewing.\n */\n entry: Object,\n envVars: {\n type: Object,\n default: ()=>{}\n },\n },\n data: function () {\n return {\n cascaderIsReady: false,\n previousShowAllChecked: {\n species: false,\n gender: false,\n organ: false,\n datasets: false,\n },\n showFilters: true,\n showFiltersText: true,\n cascadeSelected: [],\n numberShown: 10,\n filters: [],\n facets: [\"Species\", \"Gender\", \"Organ\", \"Datasets\"],\n numberDatasetsShown: [\"10\", \"20\", \"50\"],\n props: { multiple: true },\n options: [\n {\n value: \"Species\",\n label: \"Species\",\n children: [{}],\n },\n ],\n };\n },\n computed: {\n numberOfResultsText: function () {\n return `${this.entry.numberOfHits} results | Showing`;\n },\n },\n methods: {\n createCascaderItemValue: function (term, facet) {\n if (facet) return term + \"/\" + facet;\n else return term;\n },\n populateCascader: function () {\n return new Promise((resolve) => {\n // Algolia facet serach\n this.algoliaClient.getAlgoliaFacets(facetPropPathMapping)\n .then((data) => {\n this.facets = data;\n this.options = data;\n\n // create top level of options in cascader\n this.options.forEach((facet, i) => {\n this.options[i].label = convertReadableLabel(facet.label);\n this.options[i].value = this.createCascaderItemValue(\n facet.key,\n undefined\n );\n\n // put \"Show all\" as first option\n this.options[i].children.unshift({\n value: this.createCascaderItemValue(\"Show all\"),\n label: \"Show all\",\n });\n\n // populate second level of options \n this.options[i].children.forEach((facetItem, j) => {\n this.options[i].children[j].label = convertReadableLabel(\n facetItem.label\n );\n this.options[i].children[j].value =\n this.createCascaderItemValue(facet.label, facetItem.label);\n });\n });\n this.createDataTypeFacet()\n })\n .finally(() => {\n resolve();\n });\n });\n },\n tagsChangedCallback: function (presentTags) {\n if (presentTags.length > 0) {\n this.showFiltersText = false;\n } else {\n this.showFiltersText = true;\n }\n },\n // cascadeEvent: initiate searches based off cascader changes\n cascadeEvent: function (event) {\n if (event) {\n // Check for show all in selected cascade options\n event = this.showAllEventModifier(event);\n\n // Create results for the filter update \n let filterKeys = event.filter( selection => selection !== undefined).map( fs => ({\n facetPropPath: fs[0], \n facet: fs[1].split(\"/\")[1],\n term: fs[1].split(\"/\")[0], \n }))\n\n // Move results from arrays to object for use on scicrunch (note that we remove 'duplicate' as that is only needed for filter keys)\n let filters = event.filter( selection => selection !== undefined).map( fs => {\n let propPath = fs[0].includes('duplicate') ? fs[0].split('duplicate')[0] : fs[0]\n return {\n facetPropPath: propPath, \n facet: fs[1].split(\"/\")[1],\n term: fs[1].split(\"/\")[0], \n }\n })\n\n\n this.$emit('loading', true) // let sidebarcontent wait for the requests\n\n this.$emit(\"filterResults\", filters); // emit filters for apps above sidebar\n this.setCascader(filterKeys); //update our cascader v-model if we modified the event\n this.makeCascadeLabelsClickable();\n }\n },\n // showAllEventModifier: Modifies a cascade event to unlick all selections in category if \"show all\" is clicked. Also unchecks \"Show all\" if any secection is clicked\n // *NOTE* Does NOT remove 'Show all' selections from showing in 'cascadeSelected'\n showAllEventModifier: function (event) {\n // check if show all is in the cascader checked option list\n let hasShowAll = event\n .map((ev) => (ev ? ev[1].toLowerCase().includes(\"show all\") : false))\n .includes(true);\n // remove all selected options below the show all if checked\n if (hasShowAll) {\n let modifiedEvent = [];\n let facetMaps = {};\n //catagorised different facet items\n for (const i in event) {\n if (facetMaps[event[i][0]] === undefined) facetMaps[event[i][0]] = [];\n facetMaps[event[i][0]].push(event[i]);\n }\n // go through each facets\n for (const facet in facetMaps) {\n let showAll = undefined;\n // Find the show all item if any\n for (let i = facetMaps[facet].length - 1; i >= 0; i--) {\n if (facetMaps[facet][i][1].toLowerCase().includes(\"show all\")) {\n //seperate the showAll item and the rest\n showAll = facetMaps[facet].splice(i, 1)[0];\n break;\n }\n }\n if (showAll) {\n if (this.previousShowAllChecked[facet]) {\n //Unset the show all if it was present previously\n //and there are other items\n if (facetMaps[facet].length > 0)\n modifiedEvent.push(...facetMaps[facet]);\n else modifiedEvent.push(showAll);\n } else {\n //showAll is turned on\n modifiedEvent.push(showAll);\n }\n } else {\n modifiedEvent.push(...facetMaps[facet]);\n }\n }\n //Make sure the expanded item are sorted first.\n return modifiedEvent.sort((a, b) => {\n if (this.__expandItem__) {\n if (a[0] == this.__expandItem__) {\n if (b[0] == this.__expandItem__) {\n return 0;\n } else {\n return -1;\n }\n } else if (b[0] == this.__expandItem__) {\n if (a[0] == this.__expandItem__) {\n return 0;\n } else {\n return 1;\n }\n } else {\n return 0;\n }\n } else return 0;\n });\n }\n return event;\n },\n createDataTypeFacet: function(){\n let dataFacet = {...this.facets[2]} // copy the 'Experiemental approach' facet\n let count = this.facets.at(-1).id // get the last id count\n\n // Step through the children that are valid data types, switch thier values \n let newChildren = dataFacet.children.filter( el=> {\n if (el.label === 'Scaffold' || el.label === 'Simulation' || el.label === 'Show all'){\n el.key = el.label\n el.id = count\n el.value = el.value.replace('Experimental approach', 'Data type')\n count++\n return el\n }\n })\n dataFacet.id = count\n dataFacet.key = 'Data type'\n // Add 'duplicate' so that the key is unique. This is removed in the cascade event for filtering\n dataFacet.value += 'duplicate' \n dataFacet.children = newChildren\n dataFacet.label = 'Data type'\n this.facets.push(dataFacet)\n },\n cascadeExpandChange: function (event) {\n //work around as the expand item may change on modifying the cascade props\n this.__expandItem__ = event;\n this.makeCascadeLabelsClickable();\n },\n numberShownChanged: function (event) {\n this.$emit(\"numberPerPage\", parseInt(event));\n },\n updatePreviousShowAllChecked: function (options) {\n //Reset the states\n for (const facet in this.previousShowAllChecked) {\n this.previousShowAllChecked[facet] = false;\n }\n options.forEach((element) => {\n if (element[1].toLowerCase().includes(\"show all\"))\n this.previousShowAllChecked[element[0]] = true;\n });\n },\n // setCascader: Clears previous selections and takes in an array of facets to select: filterFacets\n // facets are in the form:\n // {\n // facetPropPath: 'anatomy.organ.name',\n // term: 'Sex',\n // facet: 'Male'\n // }\n setCascader: function (filterFacets) {\n //Do not set the value unless it is ready\n if (this.cascaderIsReady && filterFacets && filterFacets.length != 0) {\n this.cascadeSelected = filterFacets.map(e => {\n return [\n e.facetPropPath,\n this.createCascaderItemValue(capitalise(e.term), e.facet),\n ]\n });\n this.updatePreviousShowAllChecked(this.cascadeSelected);\n }\n },\n addFilter: function (filter) {\n //Do not set the value unless it is ready\n if (this.cascaderIsReady && filter) {\n this.cascadeSelected.filter(f=>f.term != filter.term)\n this.cascadeSelected.push([filter.facetPropPath, this.createCascaderItemValue(filter.term, filter.facet)])\n }\n },\n initiateSearch: function() {\n this.cascadeEvent(this.cascadeSelected)\n },\n // checkShowAllBoxes: Checks each 'Show all' cascade option by using the setCascader function\n checkShowAllBoxes: function(){\n this.setCascader(\n this.options.map(option => {\n return {\n facetPropPath: option.value,\n term: option.label,\n facet: 'Show all'\n }\n })\n )\n },\n makeCascadeLabelsClickable: function () {\n // Next tick allows the cascader menu to change\n this.$nextTick(() => {\n this.$refs.cascader.$el\n .querySelectorAll(\".el-cascader-node__label\")\n .forEach((el) => {\n // step through each cascade label\n el.onclick = function () {\n const checkbox = this.previousElementSibling;\n if (checkbox) {\n if (!checkbox.parentElement.attributes[\"aria-owns\"]) {\n // check if we are at the lowest level of cascader\n this.previousElementSibling.click(); // Click the checkbox\n }\n }\n };\n });\n });\n },\n },\n mounted: function () {\n this.algoliaClient = new AlgoliaClient(this.envVars.ALGOLIA_ID, this.envVars.ALGOLIA_KEY, this.envVars.PENNSIEVE_API_LOCATION);\n this.algoliaClient.initIndex(this.envVars.ALGOLIA_INDEX);\n this.populateCascader().then(() => {\n this.cascaderIsReady = true;\n this.checkShowAllBoxes()\n this.setCascader(this.entry.filterFacets);\n this.makeCascadeLabelsClickable();\n });\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n.filter-default-value {\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n padding-top: 10px;\n padding-left: 16px;\n}\n\n.help {\n width: 24px !important;\n height: 24px;\n transform: scale(1.1);\n color: #8300bf;\n cursor: pointer;\n}\n\n.popover {\n color: rgb(48, 49, 51);\n font-family: Asap;\n margin: 12px;\n}\n\n.filter-icon-inside {\n width: 12px !important;\n height: 12px !important;\n color: #292b66;\n transform: scale(2) !important;\n margin-bottom: 0px !important;\n}\n\n.cascader {\n font-family: Asap;\n font-size: 14px;\n font-weight: 500;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n color: #292b66;\n text-align: center;\n padding-bottom: 6px;\n}\n\n.cascader >>> .el-cascder-panel {\n max-height: 500px;\n}\n\n.cascader >>> .el-scrollbar__wrap {\n overflow-x: hidden;\n margin-bottom: 2px !important;\n}\n\n.cascader >>> li[aria-owns*=\"cascader\"] > .el-checkbox {\n display: none;\n}\n\n.dataset-results-feedback {\n float: right;\n text-align: right;\n color: rgb(48, 49, 51);\n font-family: Asap;\n font-size: 18px;\n font-weight: 500;\n padding-top: 8px;\n}\n\n.search-filters {\n position: relative;\n float: left;\n padding-right: 15px;\n padding-bottom: 12px;\n}\n\n.number-shown-select {\n float: right;\n}\n\n.number-shown-select >>> .el-input__inner {\n width: 68px;\n height: 40px;\n color: rgb(48, 49, 51);\n}\n\n.search-filters >>> .el-cascader-node.is-active {\n color: #8300bf;\n}\n\n.search-filters >>> .el-cascader-node.in-active-path {\n color: #8300bf;\n}\n\n.search-filters >>> .el-checkbox__input.is-checked > .el-checkbox__inner {\n background-color: #8300bf;\n border-color: #8300bf;\n}\n\n.cascader >>> .el-cascader-menu:nth-child(2) .el-cascader-node:first-child {\n border-bottom: 1px solid #e4e7ed;\n}\n\n.cascader >>> .el-cascader-node__label {\n text-align: left;\n}\n\n.filters >>> .el-popover {\n background: #f3ecf6 !important;\n border: 1px solid #8300BF;\n border-radius: 4px;\n color: #303133 !important;\n font-size: 12px;\n line-height: 18px;\n \n \n}\n\n.filters >>> .el-popover[x-placement^=\"top\"] .popper__arrow {\n border-top-color: #8300BF;\n border-bottom-width: 0;\n}\n.filters >>> .el-popover[x-placement^=\"top\"] .popper__arrow::after {\n border-top-color: #f3ecf6;\n border-bottom-width: 0;\n}\n\n.filters >>> .el-popover[x-placement^=\"bottom\"] .popper__arrow {\n border-top-width: 0;\n border-bottom-color: #8300BF;\n}\n.filters >>> .el-popover[x-placement^=\"bottom\"] .popper__arrow::after {\n border-top-width: 0;\n border-bottom-color: #f3ecf6;\n}\n\n.filters >>> .el-popover[x-placement^=\"right\"] .popper__arrow {\n border-right-color: #8300BF;\n border-left-width: 0;\n}\n.filters >>> .el-popover[x-placement^=\"right\"] .popper__arrow::after {\n border-right-color: #f3ecf6;\n border-left-width: 0;\n}\n\n.filters >>> .el-popover[x-placement^=\"left\"] .popper__arrow {\n border-right-width: 0;\n border-left-color: #8300BF;\n}\n.filters >>> .el-popover[x-placement^=\"left\"] .popper__arrow::after {\n border-right-width: 0;\n border-left-color: #f3ecf6;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilters.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilters.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SearchFilters.vue?vue&type=template&id=57801ec0&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=57801ec0&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 \"57801ec0\",\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'},[_c('div',{staticClass:\"seperator-path\"}),_c('div',{staticClass:\"card\"},[_c('span',{staticClass:\"card-left\"},[(_vm.dataIsReady)?_c('image-gallery',{attrs:{\"datasetId\":_vm.discoverId,\"datasetVersion\":_vm.version,\"name\":_vm.entry.name,\"description\":_vm.entry.description,\"envVars\":_vm.envVars,\"images\":_vm.entry.images,\"scaffolds\":_vm.entry.scaffolds,\"scaffoldViews\":_vm.entry.scaffoldViews,\"segmentations\":_vm.entry.segmentation,\"additionalLinks\":_vm.simulationLinks,\"videos\":_vm.entry.videos,\"thumbnails\":_vm.entry.thumbnails,\"label\":_vm.label,\"datasetThumbnail\":_vm.thumbnail,\"dataset-biolucida\":_vm.biolucidaData},on:{\"card-clicked\":_vm.galleryClicked}}):_vm._e()],1),_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-view\"},on:{\"click\":_vm.openRepository}},[_vm._v(\"View repository\")]):_vm._e()],1)])]),((_vm.cardOverflow && !_vm.expanded))?_c('p',{staticClass:\"read-more\"},[_c('el-button',{staticClass:\"read-more-button\",on:{\"click\":_vm.expand}},[_vm._v(\"Read more...\")])],1):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nconst EventBus = new Vue();\nexport default EventBus;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"full-size\"},[_c('gallery',{attrs:{\"bottomSpacer\":_vm.bottomSpacer,\"cardWidth\":10,\"items\":_vm.galleryItems,\"max-width\":_vm.maxWidth,\"show-indicator-bar\":true,\"show-card-details\":true,\"highlight-active\":false,\"image-style\":_vm.imageStyle,\"image-container-style\":_vm.imageContainerStyle,\"body-style\":_vm.bodyStyle,\"shadow\":_vm.shadow},on:{\"card-clicked\":_vm.cardClicked}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"full-size\">\n <gallery\n :bottomSpacer=\"bottomSpacer\"\n :cardWidth=\"10\"\n :items=\"galleryItems\"\n :max-width=\"maxWidth\"\n :show-indicator-bar=\"true\"\n :show-card-details=\"true\"\n :highlight-active=\"false\"\n :image-style=\"imageStyle\"\n :image-container-style=\"imageContainerStyle\"\n :body-style=\"bodyStyle\"\n :shadow=\"shadow\"\n @card-clicked=\"cardClicked\"\n />\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\nconst baseName = (str) => {\n return str.split(\"\\\\\").pop().split(\"/\").pop();\n};\n\nconst capitalise = function (string) {\n return string.replace(/\\b\\w/g, (v) => v.toUpperCase());\n};\n\nimport GalleryHelper from \"@abi-software/gallery/src/mixins/GalleryHelpers\";\nimport Gallery from \"@abi-software/gallery\";\n\nexport default {\n name: \"ImageGallery\",\n components: { Gallery },\n mixins: [GalleryHelper],\n props: {\n datasetScicrunch: {\n type: Object,\n default: () => {\n return {};\n },\n },\n datasetBiolucida: {\n type: Object,\n default: () => {\n return {};\n },\n },\n envVars: {\n type: Object,\n default: () => {},\n },\n label: {\n type: String,\n default: \"\",\n },\n images: {\n type: Array,\n default: () => {\n return [];\n },\n },\n plots: {\n type: Array,\n default: () => {\n return [];\n },\n },\n scaffolds: {\n type: Array,\n default: () => {\n return [];\n },\n },\n scaffoldViews: {\n type: Array,\n default: () => {\n return [];\n },\n },\n segmentations: {\n type: Array,\n default: () => {\n return [];\n },\n },\n additionalLinks: {\n type: Array,\n default: () => {\n return [];\n },\n },\n thumbnails: {\n type: Array,\n default: () => {\n return [];\n },\n },\n videos: {\n type: Array,\n default: () => {\n return [];\n },\n },\n datasetId: {\n type: Number,\n default: -1,\n },\n datasetVersion: {\n type: Number,\n default: -1,\n },\n datasetThumbnail: {\n type: String,\n default: \"\",\n },\n name: {\n type: String,\n default: \"\",\n },\n description: {\n type: String,\n default: \"\",\n },\n },\n data() {\n return {\n currentIndex: 0,\n ro: null,\n maxWidth: 3,\n scicrunchItems: [],\n biolucidaItems: [],\n bodyStyle: { padding: '0px', background: '#ffffff' },\n imageContainerStyle: { width: '160px', height: '160px'},\n imageStyle: { maxWidth: '160px', maxHeight: '160px'},\n shadow: \"never\",\n bottomSpacer: { minHeight: '1.5rem' },\n };\n },\n methods: {\n cardClicked: function(payload) {\n this.$emit('card-clicked', payload);\n },\n createSciCurnchItems: function () {\n this.createDatasetItem();\n this.createScaffoldItems();\n this.createSimulationItems();\n this.createPlotItems();\n this.createSegmentationItems();\n this.createImageItems();\n this.createVideoItems();\n },\n createDatasetItem: function () {\n const link = `${this.envVars.ROOT_URL}/datasets/${this.datasetId}?type=dataset`\n if (this.datasetThumbnail) {\n this.scicrunchItems.push({\n id: -1,\n title: link,\n type: `Dataset ${this.datasetId}`,\n thumbnail: this.datasetThumbnail,\n link,\n });\n }\n },\n createImageItems: function () {\n if (this.images) {\n this.images.forEach((image) => {\n const filePath = image.dataset.path;\n const id = image.identifier;\n const linkUrl = `${this.envVars.ROOT_URL}/datasets/imageviewer?dataset_id=${this.datasetId}&dataset_version=${this.datasetVersion}&file_path=${filePath}&mimetype=${image.mimetype.name}`;\n this.scicrunchItems.push({\n id,\n title: baseName(filePath),\n type: \"Image\",\n link: linkUrl,\n });\n });\n }\n },\n createPlotItems: function () {\n if (this.plots) {\n this.plots.forEach((plot) => {\n const filePath = plot.dataset.path;\n const id = plot.identifier;\n const thumbnail = this.getThumbnailForPlot(plot, this.thumbnails);\n let thumbnailURL = undefined;\n let mimetype = '';\n if (thumbnail) {\n thumbnailURL = this.getImageURLFromS3(this.envVars.API_LOCATION, {\n id,\n datasetId: this.datasetId,\n datasetVersion: this.datasetVersion,\n file_path: thumbnail.dataset.path,\n });\n mimetype = thumbnail.mimetype.name;\n }\n let action = {\n label: capitalise(this.label),\n resource: `${this.envVars.API_LOCATION}s3-resource/${this.datasetId}/${this.datasetVersion}/files/${filePath}`,\n title: \"View plot\",\n type: \"Plot\",\n discoverId: this.discoverId,\n version: this.datasetVersion,\n };\n this.scicrunchItems.push({\n id,\n title: baseName(filePath),\n type: \"Plot\",\n thumbnail: thumbnailURL,\n userData: action,\n mimetype\n });\n });\n }\n },\n createScaffoldItems: function () {\n if (this.scaffolds) {\n let index = 0;\n this.scaffolds.forEach((scaffold) => {\n const filePath = scaffold.dataset.path;\n const id = scaffold.identifier;\n const thumbnail = this.getThumbnailForScaffold(\n scaffold,\n this.scaffoldViews,\n this.thumbnails,\n index\n );\n let mimetype = '';\n let thumbnailURL = undefined;\n if (thumbnail) {\n thumbnailURL = this.getImageURLFromS3(this.envVars.API_LOCATION, {\n id,\n datasetId: this.datasetId,\n datasetVersion: this.datasetVersion,\n file_path: thumbnail.dataset.path,\n });\n mimetype = thumbnail.mimetype.name;\n }\n let action = {\n label: capitalise(this.label),\n resource: `${this.envVars.API_LOCATION}s3-resource/${this.datasetId}/${this.datasetVersion}/files/${filePath}`,\n title: \"View 3D scaffold\",\n type: \"Scaffold\",\n discoverId: this.datasetId,\n apiLocation: this.envVars.API_LOCATION,\n version: this.datasetVersion,\n };\n this.scicrunchItems.push({\n id,\n title: baseName(filePath),\n type: \"Scaffold\",\n thumbnail: thumbnailURL,\n userData: action,\n mimetype\n });\n });\n }\n },\n createSegmentationItems: function () {\n if (this.segmentations) {\n this.segmentations.forEach((segmentation) => {\n const id = segmentation.id;\n let filePath = segmentation.dataset.path;\n filePath = filePath.replaceAll(\" \", \"_\");\n filePath = filePath.replaceAll(\",\", \"_\");\n const prefix = this.envVars.NL_LINK_PREFIX;\n const resource = {\n share_link: `${prefix}/dataviewer?datasetId=${this.datasetId}&version=${this.datasetVersion}&path=${filePath}`,\n };\n let action = {\n label: capitalise(this.label),\n resource: resource,\n datasetId: this.datasetId,\n title: \"View segmentation\",\n type: \"Segmentation\",\n };\n const thumbnailURL = this.getSegmentationThumbnailURL(\n this.envVars.API_LOCATION,\n {\n id,\n datasetId: this.datasetId,\n datasetVersion: this.datasetVersion,\n segmentationFilePath: filePath,\n }\n );\n this.scicrunchItems.push({\n id,\n title: baseName(filePath),\n type: \"Segmentation\",\n thumbnail: thumbnailURL,\n userData: action,\n mimetype: 'image/png',\n });\n });\n }\n },\n createSimulationItems: function () {\n let isSedmlResource = false;\n let resource = undefined;\n if (this.additionalLinks) {\n this.additionalLinks.forEach(function(el) {\n if (el.description == \"SED-ML file\") {\n isSedmlResource = true;\n resource = el.uri;\n } else if (!isSedmlResource && (el.description == \"CellML file\")) {\n resource = el.uri;\n }\n });\n if (resource) {\n let action = {\n label: undefined,\n resource: resource,\n apiLocation: this.envVars.API_LOCATION,\n version: this.datasetVersion,\n title: \"View simulation\",\n type: \"Simulation\",\n name: this.name,\n description: this.description,\n discoverId: this.datasetId,\n dataset: `${this.envVars.ROOT_URL}/datasets/${this.datasetId}?type=dataset`\n };\n this.scicrunchItems.push({\n id: \"simulation\",\n title: resource,\n type: \"Simulation\",\n userData: action,\n\n });\n }\n }\n },\n createVideoItems: function () {\n if (this.videos) {\n this.videos.forEach((video) => {\n const filePath = this.getS3FilePath(\n this.datasetId,\n this.datasetVersion,\n video.dataset.path\n );\n const linkUrl = `${this.envVars.ROOT_URL}/datasets/videoviewer?dataset_version=${this.datasetVersion}&dataset_id=${this.datasetId}&file_path=${filePath}&mimetype=${video.mimetype.name}`;\n this.scicrunchItems.push({\n title: video.name,\n type: \"Video\",\n thumbnail: this.defaultVideoImg,\n link: linkUrl,\n });\n });\n }\n },\n onResize: function () {\n this.maxWidth = this.$el.clientWidth;\n // this.$emit('resize', this.$el.clientWidth)\n },\n },\n computed: {\n galleryItems() {\n return this.scicrunchItems.concat(this.biolucidaItems);\n },\n },\n created: function () {\n this.createSciCurnchItems();\n },\n watch: {\n datasetBiolucida: {\n deep: true,\n immediate: true,\n handler: function (biolucidaData) {\n let items = [];\n if (\"dataset_images\" in biolucidaData) {\n items.push(\n ...Array.from(biolucidaData.dataset_images, (dataset_image) => {\n const thumbnailURL = this.getThumbnailURLFromBiolucida(\n this.envVars.API_LOCATION,\n {\n id: dataset_image.image_id,\n }\n );\n const resource = {\n share_link: dataset_image.share_link,\n id: dataset_image.image_id,\n itemId: dataset_image.sourcepkg_id,\n };\n let action = {\n label: capitalise(this.label),\n resource: resource,\n datasetId: this.datasetId,\n title: \"View image\",\n name: capitalise(this.label),\n type: \"Biolucida\",\n };\n return {\n id: dataset_image.image_id,\n title: `Biolucida Image`,\n type: \"Image\",\n thumbnail: thumbnailURL,\n userData: action,\n mimetype: 'image/png'\n };\n })\n );\n }\n this.biolucidaItems = items;\n },\n },\n },\n mounted() {\n this.ro = new ResizeObserver(this.onResize).observe(this.$el);\n },\n destroyed() {\n delete this.ro;\n },\n};\n</script>\n\n<style scoped>\n.full-size {\n height: 100%;\n width: 244px;\n}\n\n.key-image-span.active {\n transform: scale(1.16);\n border: 4px #8300bf solid;\n}\n\n.key-image-span {\n display: flex;\n position: relative;\n}\n\n.overlay {\n position: absolute;\n right: 5px;\n top: 5px;\n width: 1.61em;\n height: 1em;\n border-radius: 3px;\n opacity: 0.8;\n}\n\nimg {\n vertical-align: bottom;\n}\n\na.prev,\na.next {\n display: flex;\n font-size: 3em;\n}\n\na.prev:not(.underline),\na.next:not(.underline) {\n text-decoration: none;\n}\n\na.prev {\n justify-content: flex-start;\n}\n\na.next {\n justify-content: flex-end;\n}\n\n.standard-gallery {\n display: flex;\n flex-wrap: nowrap;\n justify-content: space-around;\n align-items: center;\n}\n\n.image-line {\n display: flex;\n margin-top: 1%;\n margin-bottom: 1%;\n flex-grow: 1;\n justify-content: space-between;\n}\n.disabled {\n opacity: 0.2;\n cursor: default;\n}\n\n.rectangle {\n height: 1em;\n width: 2em;\n border-radius: 3px;\n background-color: #555;\n}\n\n.full-size >>> .el-card {\n border: 0px;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageGallery.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!./ImageGallery.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ImageGallery.vue?vue&type=template&id=6e33602c&scoped=true&\"\nimport script from \"./ImageGallery.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageGallery.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ImageGallery.vue?vue&type=style&index=0&id=6e33602c&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 \"6e33602c\",\n null\n \n)\n\nexport default component.exports","<template>\n <div class=\"dataset-card-container\" ref=\"container\">\n <div v-bind:class=\" expanded ? 'dataset-card-expanded' : 'dataset-card'\" ref=\"card\">\n <!-- The seperator-path css is set on SidebarContent.vue -->\n <div class=\"seperator-path\"></div>\n <div class=\"card\" >\n <span class=\"card-left\">\n <!--\n <img svg-inline class=\"banner-img\" :src=\"thumbnail\" @click=\"openDataset\"/>\n -->\n <image-gallery v-if=\"dataIsReady\" \n :datasetId=\"discoverId\"\n :datasetVersion=\"version\"\n :name=\"entry.name\"\n :description=\"entry.description\"\n :envVars=\"envVars\"\n :images=\"entry.images\"\n :scaffolds=\"entry.scaffolds\"\n :scaffoldViews=\"entry.scaffoldViews\"\n :segmentations=\"entry.segmentation\"\n :additionalLinks=\"simulationLinks\"\n :videos=\"entry.videos\"\n :thumbnails=\"entry.thumbnails\"\n :label=\"label\"\n :datasetThumbnail=\"thumbnail\"\n :dataset-biolucida=\"biolucidaData\"\n @card-clicked=\"galleryClicked\"/>\n </span>\n <div class=\"card-right\" >\n <div class=\"title\" @click=\"cardClicked\">{{entry.name}}</div>\n <div class=\"details\">{{contributors}} {{entry.publishDate ? `(${publishYear})` : ''}}</div>\n <div class=\"details\">{{samples}}</div>\n <div class=\"details\">id: {{discoverId}}</div>\n <!--\n <div>\n <el-button v-if=\"!entry.simulation\" @click=\"openDataset\" size=\"mini\" class=\"button\" icon=\"el-icon-coin\">View dataset</el-button>\n </div>\n <div>\n <el-button v-if=\"entry.scaffolds\" @click=\"openScaffold\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View scaffold</el-button>\n </div>\n -->\n <!--\n <div>\n <el-button v-if=\"hasCSVFile\" @click=\"openPlot\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View plot</el-button>\n </div>\n -->\n <div>\n <el-button v-if=\"entry.simulation\" @click=\"openRepository\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View repository</el-button>\n </div>\n <!--\n <div>\n <el-button v-if=\"entry.simulation\" @click=\"openSimulation\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View simulation</el-button>\n </div>\n -->\n <!--\n <div>\n <el-button v-if=\"entry.segmentation\" @click=\"openSegmentation\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View segmentation</el-button>\n </div>\n <div>\n <el-button v-if=\"biolucidaData\" @click=\"openImage\" size=\"mini\" class=\"button\" icon=\"el-icon-view\">View image</el-button>\n </div>\n -->\n </div>\n\n </div>\n <p v-if=\"(cardOverflow && !expanded)\" class=\"read-more\"><el-button @click=\"expand\" class=\"read-more-button\">Read more...</el-button></p>\n </div>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Button, Icon } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport EventBus from \"./EventBus\"\nimport speciesMap from \"./species-map\";\nimport ImageGallery from \"./ImageGallery.vue\";\n\nlocale.use(lang);\nVue.use(Button);\nVue.use(Icon);\n\nconst capitalise = function(string){\n return string.replace(/\\b\\w/g, v => v.toUpperCase());\n}\n\nexport default {\n name: \"DatasetCard\",\n components: { ImageGallery },\n props: {\n /**\n * Object containing information for\n * the required viewing.\n */\n entry: Object,\n envVars: {\n type: Object,\n default: () => {}\n },\n },\n data: function () {\n return {\n dataIsReady: false,\n thumbnail: require('@/../assets/missing-image.svg'),\n dataLocation: this.entry.doi,\n discoverId: undefined,\n cardOverflow: false,\n expanded: false,\n biolucidaData: undefined\n };\n },\n computed: {\n contributors: function() {\n let text = \"\";\n if (this.entry.contributors) {\n if (this.entry.contributors.length === 1) {\n text = this.lastName(this.entry.contributors[0].name);\n } else if (this.entry.contributors.length === 2) {\n text = this.lastName(this.entry.contributors[0].name) + \" & \" + this.lastName(this.entry.contributors[1].name);\n } else if (this.entry.contributors.length > 2) {\n text = this.lastName(this.entry.contributors[0].name) + \" et al.\";\n }\n }\n return text;\n },\n samples: function() {\n let text = \"\";\n if (this.entry.species) {\n if (speciesMap[this.entry.species[0].toLowerCase()]){\n text = `${speciesMap[this.entry.species[0].toLowerCase()]}`;\n } else {\n text = `${this.entry.species}`;\n }\n }\n if (this.entry.numberSamples > 0) {\n text += \" (\";\n if (this.entry.numberSamples === 1) {\n text += `${this.entry.numberSamples} sample`;\n } else if (this.entry.numberSamples > 1) {\n text += `${this.entry.numberSamples} samples`;\n }\n if (this.entry.numberSubjects === 1) {\n text += ` from ${this.entry.numberSubjects} subject`;\n } else if (this.entry.numberSamples > 1) {\n text += ` from ${this.entry.numberSubjects} subjects`;\n }\n text += \")\";\n }\n\n return text;\n },\n simulationLinks: function() {\n if (this.entry.additionalLinks) {\n if (typeof this.entry.additionalLinks != \"boolean\")\n return this.entry.additionalLinks;\n }\n return [];\n },\n label: function(){\n return this.entry.organs ? this.entry.organs[0] : this.entry.name\n },\n publishYear: function() {\n return this.entry.publishDate.split('-')[0]\n }\n },\n methods: {\n cardClicked: function(){\n this.openDataset()\n },\n galleryClicked: function(payload) {\n this.propogateCardAction(payload)\n },\n openScaffold: function(){\n let action = {\n label: capitalise(this.label),\n resource: this.getScaffoldPath(this.discoverId, this.version, this.entry.scaffolds[0].dataset.path),\n title: \"View 3D scaffold\",\n type: \"Scaffold\",\n discoverId: this.discoverId,\n apiLocation: this.envVars.API_LOCATION,\n version: this.version,\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\n banner: this.thumbnail\n }\n this.propogateCardAction(action)\n },\n openPlot: function(){\n let action = {\n label: capitalise(this.label),\n resource: this.getFileFromPath(this.discoverId, this.version, this.entry.csvFiles[0].dataset.path),\n title: \"View plot\",\n type: \"Plot\",\n discoverId: this.discoverId,\n apiLocation: this.envVars.API_LOCATION,\n version: this.version,\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\n banner: this.thumbnail\n }\n this.propogateCardAction(action)\n },\n openDataset: function(){\n window.open(this.dataLocation,'_blank');\n },\n openRepository: function() {\n let apiLocation = this.envVars.API_LOCATION;\n this.entry.additionalLinks.forEach(function(el) {\n if (el.description == \"Repository\") {\n let xmlhttp = new XMLHttpRequest();\n xmlhttp.open(\"POST\", apiLocation + \"/pmr_latest_exposure\", true);\n xmlhttp.setRequestHeader(\"Content-type\", \"application/json\");\n xmlhttp.onreadystatechange = () => {\n if (xmlhttp.readyState === 4) {\n let url = \"\";\n if (xmlhttp.status === 200) {\n url = JSON.parse(xmlhttp.responseText)[\"url\"];\n }\n if (url === \"\") {\n url = el.uri;\n }\n window.open(url,'_blank');\n }\n };\n xmlhttp.send(JSON.stringify({workspace_url: el.uri}));\n }\n });\n },\n openSimulation: function() {\n let isSedmlResource = false;\n let resource = undefined;\n this.entry.additionalLinks.forEach(function(el) {\n if (el.description == \"SED-ML file\") {\n isSedmlResource = true;\n resource = el.uri;\n } else if (!isSedmlResource && (el.description == \"CellML file\")) {\n resource = el.uri;\n }\n });\n let action = {\n label: undefined,\n resource: resource,\n discoverId: this.dataLocation,\n apiLocation: this.envVars.API_LOCATION,\n version: this.version,\n contextCardUrl: this.entry.contextualInformation ? this.getFileFromPath(this.discoverId, this.version,this.entry.contextualInformation) : undefined,\n banner: this.thumbnail,\n title: \"View simulation\",\n name: this.entry.name,\n description: this.entry.description,\n type: \"Simulation\"\n }\n EventBus.$emit(\"PopoverActionClick\", action)\n },\n openSegmentation: function() {\n if (this.entry.segmentation && this.entry.segmentation[0]) {\n const segmentation = this.entry.segmentation[0];\n const filePath = segmentation.dataset.path;\n const datasetId = this.discoverId;\n const datasetVersion = this.version;\n const prefix = this.envVars.NL_LINK_PREFIX;\n const resource = {\n share_link: `${prefix}/dataviewer?datasetId=${datasetId}&version=${datasetVersion}&path=files/${filePath}`\n };\n let action = {\n label: capitalise(this.label),\n resource: resource,\n dataset: this.dataLocation,\n datasetId: this.discoverId,\n title: \"View segmentation\",\n name: this.entry.name,\n description: this.entry.description,\n type: \"Segmentation\"\n };\n EventBus.$emit(\"PopoverActionClick\", action);\n }\n },\n openImage: function() {\n if (this.biolucidaData) {\n const biolucidaData = this.biolucidaData;\n if ('dataset_images' in biolucidaData) {\n const image = biolucidaData['dataset_images'][0];\n const resource = {\n share_link: image.share_link,\n id: image.image_id,\n itemId: image.sourcepkg_id\n }\n let action = {\n label: capitalise(this.label),\n resource: resource,\n dataset: this.dataLocation,\n datasetId: this.discoverId,\n title: \"View image\",\n name: this.entry.name,\n description: this.entry.description,\n type: \"Biolucida\"\n };\n EventBus.$emit(\"PopoverActionClick\", action);\n }\n }\n },\n propogateCardAction: function(action){\n EventBus.$emit(\"PopoverActionClick\", action)\n if (action.contextCardUrl) {\n this.$emit('contextUpdate', action)\n }\n },\n getScaffoldPath: function(discoverId, version, scaffoldPath){\n let id = discoverId\n let path = `${this.envVars.API_LOCATION}s3-resource/${id}/${version}/files/${scaffoldPath}`\n return path\n },\n getFileFromPath: function(discoverId, version, path){\n return `${this.envVars.API_LOCATION}s3-resource/${discoverId}/${version}/files/${path}`\n },\n isOverflown: function(el){\n return el.clientHeight < el.scrollHeight\n },\n expand: function() {\n this.expanded = true\n },\n splitDOI: function(doi){\n return [doi.split('/')[doi.split('/').length-2], doi.split('/')[doi.split('/').length-1]]\n },\n getBanner: function () {\n let doi = this.splitDOI(this.entry.doi)\n fetch(`${this.envVars.PENNSIEVE_API_LOCATION}/discover/datasets/doi/${doi[0]}/${doi[1]}`)\n .then((response) =>{\n if (!response.ok){\n throw Error(response.statusText)\n } else {\n return response.json()\n }\n })\n .then((data) => {\n this.thumbnail = data.banner\n this.discoverId = data.id\n this.version = data.version\n this.dataLocation = `https://sparc.science/datasets/${data.id}?type=dataset`\n this.getBiolucidaInfo(this.discoverId)\n this.dataIsReady = true\n })\n .catch(() => {\n //set defaults if we hit an error\n this.thumbnail = require('@/../assets/missing-image.svg')\n this.discoverId = undefined\n });\n },\n lastName: function(fullName){\n return fullName.split(',')[0]\n },\n getBiolucidaInfo: function(id) {\n let apiLocation = this.envVars.API_LOCATION;\n let endpoint = apiLocation + \"image_search/\" + id;\n // Add parameters if we are sent them\n fetch(endpoint)\n .then(response => response.json())\n .then(data => {\n if (data.status == \"success\")\n this.biolucidaData = data;\n });\n }\n },\n created: function() {\n this.getBanner()\n },\n mounted: function(){\n this.cardOverflow = this.isOverflown(this.$refs.card)\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n.dataset-card {\n padding-left: 16px;\n position: relative;\n}\n\n.title {\n padding-bottom: 5px;\n font-family: Asap;\n font-size: 14px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.5;\n letter-spacing: 1.05px;\n color: #484848;\n cursor: pointer;\n}\n.card {\n padding-top: 18px;\n position: relative;\n display: flex;\n}\n\n.card-left{\n flex: 1\n}\n\n.card-right {\n flex: 1.3;\n padding-left: 6px;\n}\n\n.dataset-card .read-more {\n position: absolute;\n z-index: 9;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 20px;\n margin: 0; padding: 20px 66px;\n /* \"transparent\" only works here because == rgba(0,0,0,0) */\n background-image: linear-gradient(to bottom, transparent, white);\n pointer-events: none;\n}\n\n.read-more-button{\n width: 85px;\n height: 20px;\n font-family: Asap;\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n color: #8300bf;\n padding: 0px;\n pointer-events: all;\n cursor: pointer;\n}\n\n.button{\n z-index: 10;\n font-family: Asap;\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: normal;\n background-color: #8300bf;\n border: #8300bf;\n color: white;\n cursor: pointer;\n margin-top: 8px;\n}\n\n.button:hover {\n background-color: #8300bf;\n color: white;\n}\n\n.banner-img {\n width: 128px;\n height: 128px;\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.25);\n background-color: #ffffff;\n cursor: pointer;\n}\n.details{\n font-family: Asap;\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.5;\n letter-spacing: 1.05px;\n color: #484848;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DatasetCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DatasetCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DatasetCard.vue?vue&type=template&id=66c0a49d&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=66c0a49d&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 \"66c0a49d\",\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',{staticClass:\"context-card card\"},[_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',staticClass:\"scaffold-view\",on:{\"click\":function($event){return _vm.openViewFile(view)}}},[_c('img',{attrs:{\"src\":_vm.getFileFromPath(view.thumbnail)}}),_vm._v(\" \"+_vm._s(view.description))])]})],2)]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"context-card-container\" ref=\"container\">\n <div v-show=\"showContextCard\">\n <div v-show=\"showDetails\" class=\"hide\" @click=\"showDetails = !showDetails\">Hide information<i class=\"el-icon-arrow-up\"></i></div>\n <div v-show=\"!showDetails\" class=\"hide\" @click=\"showDetails = !showDetails\">Show information<i class=\"el-icon-arrow-down\"></i></div>\n <el-card v-if=\"showDetails && Object.keys(contextData).length !== 0\" class=\"context-card card\" >\n <img :src=\"entry.banner\" class=\"context-image card-left\">\n <div class=\"card-right\">\n <div class=\"title\">{{contextData.heading}}</div>\n <div>{{contextData.description}}</div>\n <template v-for=\"(view, i) in contextData.views\">\n <br v-bind:key=\"i\"/>\n <span v-bind:key=\"i+'_1'\" @click=\"openViewFile(view)\" class=\"scaffold-view\"><img :src=\"getFileFromPath(view.thumbnail)\"> {{view.description}}</span>\n </template>\n </div>\n </el-card>\n </div>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport { Link, Icon, Card, Button, Select, Input } from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport EventBus from \"./EventBus\"\n\nlocale.use(lang);\nVue.use(Link);\nVue.use(Icon);\nVue.use(Card);\nVue.use(Button);\nVue.use(Select);\nVue.use(Input);\n\n\n\nexport default {\n name: \"contextCard\",\n props: {\n /**\n * Object containing information for\n * the required viewing.\n */\n entry: Object,\n },\n data: function () {\n return {\n contextData: {},\n showDetails: true,\n showContextCard: true\n };\n },\n watch: {\n 'entry.contextCardUrl': {\n handler(val){\n if (val) {\n this.getContextFile(val)\n this.showContextCard = true\n } else {\n this.showContextCard = false\n }\n },\n immediate: true\n }\n },\n methods: {\n getContextFile: function (contextFileUrl) {\n fetch(contextFileUrl)\n .then((response) =>{\n if (!response.ok){\n throw Error(response.statusText)\n } else {\n return response.json()\n }\n })\n .then((data) => {\n this.contextData = data\n })\n .catch(() => {\n //set defaults if we hit an error\n this.thumbnail = require('@/../assets/missing-image.svg')\n this.discoverId = undefined\n });\n },\n removeDoubleFilesPath: function(path){\n if (path.includes('files/files/')){\n return path.replace('files/files/', 'files/')\n } else {\n return path\n }\n },\n getFileFromPath: function(path){\n path = this.removeDoubleFilesPath(path)\n return `${this.entry.apiLocation}s3-resource/${this.entry.discoverId}/${this.entry.version}/files/${path}`\n },\n openViewFile: function(view){\n\n // note that we assume that the view file is in the same directory as the scaffold (viewUrls take relative paths)\n this.entry.viewUrl = view.path.split('/')[view.path.split('/').length-1]\n this.entry.type = 'Scaffold View'\n EventBus.$emit(\"PopoverActionClick\", this.entry)\n }\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n.hide{\n color: #e4e7ed;\n cursor: pointer;\n}\n\n.context-card{\n background-color: white;\n}\n\n.context-card >>> .el-card__body {\n padding: 0px;\n display: flex;\n width: 516px; \n}\n\n.context-image{\n width: 250px\n}\n\n.card {\n padding-top: 18px;\n margin-bottom: 18px;\n position: relative;\n border: solid 1px #e4e7ed;\n display: flex;\n}\n\n.card-left{\n flex: 1\n}\n\n.card-right {\n flex: 1.3;\n padding-left: 6px;\n}\n\n.cursor-pointer {\n cursor: pointer;\n height: 25px;\n}\n\n.title{\n font-weight: bold;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ContextCard.vue?vue&type=template&id=5de93eb9&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=5de93eb9&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 \"5de93eb9\",\n null\n \n)\n\nexport default component.exports","<template>\n <el-card :body-style=\"bodyStyle\" class=\"content-card\">\n <div slot=\"header\" class=\"header\">\n <context-card v-if=\"contextCardEntry && contextCardEnabled\" :entry=\"contextCardEntry\" />\n <el-input\n class=\"search-input\"\n placeholder=\"Search\"\n v-model=\"searchInput\"\n @keyup.native=\"searchEvent\"\n clearable\n @clear=\"clearSearchClicked\"\n ></el-input>\n <el-button class=\"button\" @click=\"searchEvent\">Search</el-button>\n </div>\n <SearchFilters\n class=\"filters\"\n ref=\"filtersRef\"\n :entry=\"filterEntry\"\n :envVars=\"envVars\"\n @filterResults=\"filterUpdate\"\n @numberPerPage=\"numberPerPageUpdate\"\n @loading=\"filtersLoading\"\n ></SearchFilters>\n <div class=\"content scrollbar\" v-loading=\"loadingCards\" ref=\"content\">\n <div\n class=\"error-feedback\"\n v-if=\"results.length === 0 && !loadingCards && !sciCrunchError\"\n >No results found - Please change your search / filter criteria.</div>\n <div class=\"error-feedback\" v-if=\"sciCrunchError\">{{sciCrunchError}}</div>\n <div v-for=\"o in results\" :key=\"o.id\" class=\"step-item\">\n <DatasetCard :entry=\"o\" :envVars=\"envVars\" @contextUpdate=\"contextCardUpdate\"></DatasetCard>\n </div>\n <el-pagination\n class=\"pagination\"\n :current-page.sync=\"page\"\n hide-on-single-page\n large\n layout=\"prev, pager, next\"\n :page-size=\"numberPerPage\"\n :total=\"numberOfHits\"\n @current-change=\"pageChange\"\n ></el-pagination>\n </div>\n </el-card>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport {\n Button,\n Card,\n Drawer,\n Icon,\n Input,\n Loading,\n Pagination\n} from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport SearchFilters from \"./SearchFilters\";\nimport DatasetCard from \"./DatasetCard\";\nimport ContextCard from \"./ContextCard.vue\";\n\nimport {AlgoliaClient} from \"../algolia/algolia.js\";\nimport {getFilters} from \"../algolia/utils.js\"\n\nlocale.use(lang);\nVue.use(Button);\nVue.use(Card);\nVue.use(Drawer);\nVue.use(Icon);\nVue.use(Input);\nVue.use(Loading);\nVue.use(Pagination);\n\n// handleErrors: A custom fetch error handler to recieve messages from the server\n// even when an error is found\nvar handleErrors = async function(response) {\n if (!response.ok) {\n let parse = await response.json();\n if (parse) {\n throw new Error(parse.message);\n } else {\n throw new Error(response);\n }\n }\n return response;\n};\n\nvar initial_state = {\n searchInput: \"\",\n lastSearch: \"\",\n results: [],\n numberOfHits: 0,\n filter: [],\n loadingCards: false,\n numberPerPage: 10,\n page: 1,\n pageModel: 1,\n start: 0,\n hasSearched: false,\n sciCrunchError: false,\n contextCardEntry: undefined,\n contextCardEnabled: false\n};\n\nexport default {\n components: { SearchFilters, DatasetCard, ContextCard },\n name: \"SideBarContent\",\n props: {\n visible: {\n type: Boolean,\n default: false\n },\n isDrawer: {\n type: Boolean,\n default: true\n },\n entry: {\n type: Object,\n default: () => initial_state\n },\n envVars: {\n type: Object,\n default: () => {}\n },\n firstSearch: {\n type: String,\n default: \"\"\n }\n },\n data: function() {\n return {\n ...this.entry,\n bodyStyle: {\n flex: \"1 1 auto\",\n \"flex-flow\": \"column\",\n display: \"flex\"\n }\n };\n },\n computed: {\n // This computed property populates filter data's entry object with $data from this sidebar\n filterEntry: function() {\n return {\n numberOfHits: this.numberOfHits,\n filterFacets: this.filter\n };\n }\n },\n methods: {\n contextCardUpdate: function(val){\n this.contextCardEntry = val\n },\n openSearch: function(filter, search='') {\n this.searchInput = search;\n this.resetPageNavigation();\n this.searchAlgolia(filter, search);\n if (filter) {\n this.filter = [...filter];\n this.$refs.filtersRef.setCascader(this.filter);\n }\n },\n addFilter: function(filter) {\n this.resetPageNavigation();\n if (filter) {\n this.$refs.filtersRef.addFilter(filter);\n this.$refs.filtersRef.initiateSearch()\n }\n },\n clearSearchClicked: function() {\n this.searchInput = \"\";\n this.resetPageNavigation();\n this.searchAlgolia(this.filters, this.searchInput);\n },\n searchEvent: function(event = false) {\n if (event.keyCode === 13 || event instanceof MouseEvent) {\n this.resetPageNavigation();\n this.searchAlgolia(this.filters, this.searchInput);\n }\n },\n filterUpdate: function(filters) {\n this.filters = [...filters]\n this.resetPageNavigation()\n this.searchAlgolia(filters, this.searchInput)\n this.$emit(\"search-changed\", {\n value: filters,\n type: \"filter-update\"\n });\n },\n searchAlgolia(filters, query=''){\n // Algolia search\n this.algoliaClient.search(getFilters(filters), query, this.numberPerPage, this.page).then(searchData => {\n this.numberOfHits = searchData.total\n this.discoverIds = searchData.discoverIds\n this.dois = searchData.dois\n this.results = searchData.items\n this.searchSciCrunch({'dois': this.dois})\n })\n },\n filtersLoading: function (val) {\n this.loadingCards = val;\n },\n numberPerPageUpdate: function(val) {\n this.numberPerPage = val;\n this.pageChange(1);\n },\n pageChange: function(page) {\n this.start = (page - 1) * this.numberPerPage;\n this.page = page\n this.searchAlgolia(this.filters, this.searchInput, this.numberPerPage, this.page)\n },\n searchSciCrunch: function(params) {\n this.loadingCards = true;\n this.results = [];\n this.disableCards();\n this.$emit(\"search-changed\", { value: this.searchInput, type: \"query-update\" });\n this.callSciCrunch(this.envVars.API_LOCATION, params)\n .then(result => {\n //Only process if the search term is the same as the last search term.\n //This avoid old search being displayed.\n this.sciCrunchError = false;\n this.resultsProcessing(result);\n this.$refs.content.style[\"overflow-y\"] = \"scroll\";\n this.loadingCards = false;\n })\n .catch(result => {\n if (result.name !== 'AbortError') {\n this.loadingCards = false;\n this.sciCrunchError = result.message;\n }\n })\n },\n disableCards: function() {\n if (this.$refs.content) {\n this.$refs.content.scroll({ top: 0, behavior: \"smooth\" });\n this.$refs.content.style[\"overflow-y\"] = \"hidden\";\n }\n },\n resetPageNavigation: function() {\n this.start = 0;\n this.page = 1;\n },\n resultsProcessing: function(data) {\n this.lastSearch = this.searchInput;\n this.results = [];\n if (data.results.length === 0) {\n return;\n }\n data.results.forEach(element => {\n // this.results.push(element) below should be once backend is ready\n let datasetInfo = {\n name: element.name,\n description: element.description,\n contributors: element.contributors,\n numberSamples: element.sampleSize\n ? parseInt(element.sampleSize)\n : 0,\n numberSubjects: element.subjectSize\n ? parseInt(element.subjectSize)\n : 0,\n updated: element.updated[0].timestamp.split(\"T\")[0],\n url: element.uri[0],\n datasetId: element.dataset_identifier,\n datasetRevision: element.dataset_revision,\n datasetVersion: element.dataset_version,\n organs: (element.organs && element.organs.length > 0)\n ? [...new Set(element.organs.map(v => v.name))]\n : undefined,\n species: element.organisms \n ? element.organisms[0].species\n ? [...new Set(element.organisms.map((v) =>v.species ? v.species.name : null))]\n : undefined\n : undefined, // This processing only includes each gender once into 'sexes'\n doi: element.doi,\n publishDate: element.publishDate,\n scaffolds: element['abi-scaffold-metadata-file'],\n thumbnails: element['abi-thumbnail'] ? element['abi-thumbnail']: element['abi-scaffold-thumbnail'],\n scaffoldViews: element['abi-scaffold-view-file'],\n videos: element.video,\n plots: element.plot,\n images: element['common-images'],\n contextualInformation: element['abi-contextual-information'].length > 0 ? element['abi-contextual-information'] : undefined,\n additionalLinks: element.additionalLinks,\n segmentation: element['mbf-segmentation'],\n simulation: element.additionalLinks\n ? element.additionalLinks[0].description == 'Repository'\n : false,\n s3uri: element.s3uri\n };\n this.results.push(datasetInfo);\n });\n },\n createfilterParams: function(params) {\n let p = new URLSearchParams();\n //Check if field is array or value\n for (const key in params) {\n if (Array.isArray(params[key])) {\n params[key].forEach(e => {\n p.append(key, e);\n });\n } else {\n p.append(key, params[key]);\n }\n }\n return p.toString();\n },\n callSciCrunch: function(apiLocation, params = {}) {\n return new Promise((resolve, reject) => {\n // the following controller will abort current search\n // if a new one has been started\n if (this._controller) this._controller.abort();\n this._controller = new AbortController();\n let signal = this._controller.signal;\n // Add parameters if we are sent them\n let fullEndpoint = this.envVars.API_LOCATION + this.searchEndpoint + \"?\" + this.createfilterParams(params);\n fetch(fullEndpoint, { signal })\n .then(handleErrors)\n .then(response => response.json())\n .then(data => resolve(data))\n .catch(data => reject(data));\n });\n },\n },\n mounted: function() {\n // initialise algolia\n this.algoliaClient = new AlgoliaClient(this.envVars.ALGOLIA_ID, this.envVars.ALGOLIA_KEY, this.envVars.PENNSIEVE_API_LOCATION);\n this.algoliaClient.initIndex(this.envVars.ALGOLIA_INDEX);\n console.log('Algolia initialised in sidebar')\n\n // temporarily disable flatmap search since there are no datasets\n if (this.firstSearch === \"Flatmap\" || this.firstSearch === \"flatmap\") {\n this.openSearch(undefined, '')\n } else {\n this.openSearch(undefined, '');\n }\n },\n created: function() {\n //Create non-reactive local variables\n this.searchEndpoint = \"dataset_info/using_multiple_dois/\";\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n.content-card {\n height: 100%;\n flex-flow: column;\n display: flex;\n}\n\n.button {\n background-color: #8300bf;\n border: #8300bf;\n color: white;\n}\n\n.step-item {\n font-size: 14px;\n margin-bottom: 18px;\n text-align: left;\n}\n\n.search-input {\n width: 298px !important;\n height: 40px;\n padding-right: 14px;\n align-items: left;\n}\n\n.header {\n border: solid 1px #292b66;\n background-color: #292b66;\n text-align: left;\n}\n\n.pagination {\n padding-bottom: 16px;\n background-color: white;\n text-align: center;\n}\n\n.pagination >>> button {\n background-color: white !important;\n}\n.pagination >>> li {\n background-color: white !important;\n}\n.pagination >>> li.active {\n color: #8300bf;\n}\n\n.error-feedback {\n font-family: Asap;\n font-size: 14px;\n font-style: italic;\n padding-top: 15px;\n}\n\n.content-card >>> .el-card__header {\n background-color: #292b66;\n border: solid 1px #292b66;\n}\n\n.content-card >>> .el-card__body {\n background-color: #f7faff;\n overflow-y: hidden;\n}\n\n.content {\n width: 518px;\n flex: 1 1 auto;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n background-color: #ffffff;\n overflow-y: scroll;\n scrollbar-width: thin;\n}\n\n.content >>> .step-item:first-child .seperator-path{\n display: none;\n}\n\n.content >>> .step-item:not(:first-child) .seperator-path{\n width: 486px;\n height: 0px;\n border: solid 1px #e4e7ed;\n background-color: #e4e7ed;\n}\n\n.scrollbar::-webkit-scrollbar-track {\n border-radius: 10px;\n background-color: #f5f5f5;\n}\n\n.scrollbar::-webkit-scrollbar {\n width: 12px;\n right: -12px;\n background-color: #f5f5f5;\n}\n\n.scrollbar::-webkit-scrollbar-thumb {\n border-radius: 4px;\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.06);\n background-color: #979797;\n}\n\n>>> .el-input__suffix {\n padding-right: 10px;\n}\n\n>>> .my-drawer {\n background: rgba(0, 0, 0, 0);\n box-shadow: none;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarContent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarContent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarContent.vue?vue&type=template&id=3d1731ba&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=3d1731ba&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 \"3d1731ba\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tab-container\"},_vm._l((_vm.tabTitles),function(title){return _c('div',{key:title.id,staticClass:\"title\"},[_c('div',{staticClass:\"title-text-table\",class:{ highlightText : (title.id==_vm.activeId) },on:{\"click\":function($event){return _vm.titleClicked(title.id)}}},[_c('div',{staticClass:\"title-text\"},[_vm._v(\" \"+_vm._s(title.title)+\" \")])])])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"tab-container\">\n <div class=\"title\" v-for=\"title in tabTitles\" :key=\"title.id\">\n <div class=\"title-text-table\" v-bind:class=\"{ highlightText : (title.id==activeId) }\" v-on:click=\"titleClicked(title.id)\">\n <div class=\"title-text\">\n {{title.title}}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n/* eslint-disable no-alert, no-console */\n\nexport default {\n name: \"Tabs\",\n props: {\n tabTitles: {\n type: Array,\n default: () => []\n },\n activeId: {\n type: Number,\n default: 1\n }\n },\n methods: {\n titleClicked: function(id) {\n this.$emit(\"titleClicked\", id);\n },\n }\n\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n.tab-container{\n height: 28px;\n}\n\n.title {\n width: 101px;\n height: 28px;\n border: solid 1px #dcdfe6;\n border-bottom: none;\n background-color: white;\n display:inline-block;\n}\n\n.title:hover {\n cursor: pointer;\n}\n\n.title-text {\n text-align:center;\n display: table-cell;\n vertical-align: middle;\n font-size: 14px;\n}\n\n.title-text-table {\n display:table;\n height: 100%;\n width: 100%;\n}\n\n.parent-dialog:hover .title-text {\n color:#8300bf;\n}\n\n.highlightText {\n color:#8300bf;\n}\n\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tabs.vue?vue&type=template&id=5d1b9484&scoped=true&\"\nimport script from \"./Tabs.vue?vue&type=script&lang=js&\"\nexport * from \"./Tabs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Tabs.vue?vue&type=style&index=0&id=5d1b9484&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5d1b9484\",\n null\n \n)\n\nexport default component.exports","<template>\n <div ref=\"container\">\n <div v-if=\"!drawerOpen\" @click=\"toggleDrawer\" class=\"open-tab\">\n <i class=\"el-icon-arrow-left\"></i>\n </div>\n <el-drawer\n custom-class=\"my-drawer\"\n class=\"side-bar\"\n :visible.sync=\"drawerOpen\"\n :appendToBody=\"false\"\n :modal-append-to-body=\"false\"\n size=550\n :with-header=\"false\"\n :wrapperClosable=\"false\"\n :modal=\"false\"\n >\n <div class=\"box-card\">\n <div v-if=\"drawerOpen\" @click=\"close\" class=\"close-tab\">\n <i class=\"el-icon-arrow-right\"></i>\n </div>\n <div class=\"sidebar-container\">\n <tabs v-if=\"tabs.length > 1\" :tabTitles=\"tabs\" :activeId=\"activeId\"\n @titleClicked=\"tabClicked\"/>\n <template v-for=\"tab in tabs\">\n <sidebar-content class=\"sidebar-content-container\"\n v-show=\"tab.id===activeId\" :contextCardEntry=\"tab.contextCard\"\n :envVars=\"envVars\"\n v-bind:key=\"tab.id\" :ref=\"tab.id\"\n @search-changed=\"searchChanged(tab.id, $event)\"/>\n </template>\n </div>\n </div>\n </el-drawer>\n </div>\n</template>\n\n\n<script>\n/* eslint-disable no-alert, no-console */\nimport Vue from \"vue\";\nimport {\n Drawer,\n Icon,\n} from \"element-ui\";\nimport lang from \"element-ui/lib/locale/lang/en\";\nimport locale from \"element-ui/lib/locale\";\nimport SidebarContent from './SidebarContent.vue';\nimport EventBus from './EventBus';\nimport Tabs from './Tabs'\n\nlocale.use(lang);\nVue.use(Drawer);\nVue.use(Icon);\n\nvar initial_state = {\n searchInput: \"\",\n lastSearch: \"\",\n results: [],\n drawerOpen: false,\n numberOfHits: 0,\n filter:{},\n filterFacet: undefined,\n loadingCards: false,\n numberPerPage: 10,\n page: 1,\n pageModel: 1,\n start: 0,\n hasSearched: false,\n sciCrunchError: false\n}\n\nexport default {\n components: {SidebarContent, Tabs },\n name: \"SideBar\",\n props: {\n visible: {\n type: Boolean,\n default: false\n },\n entry: {\n type: Object,\n default: () => (initial_state)\n },\n envVars: {\n type: Object,\n default: () => {}\n },\n tabs: {\n type: Array,\n default: () => [{title:'flatmap', id:1}]\n },\n activeId: {\n type: Number,\n default: 1\n },\n openAtStart: {\n type: Boolean,\n default: false\n }\n },\n data: function () {\n return {\n ...this.entry,\n }\n },\n methods: {\n searchChanged: function (id, data) {\n this.$emit(\"search-changed\", {...data, id: id});\n },\n close: function () {\n this.drawerOpen = false;\n },\n toggleDrawer: function () {\n this.drawerOpen = !this.drawerOpen;\n },\n openSearch: function(facets, query){\n this.drawerOpen = true;\n // Because refs are in v-for, nextTick is needed here\n Vue.nextTick(()=>{this.$refs[this.activeId][0].openSearch(facets, query)})\n },\n addFilter: function(filter){\n this.drawerOpen = true;\n // Because refs are in v-for, nextTick is needed here\n Vue.nextTick(()=>{this.$refs[this.activeId][0].addFilter(filter)})\n },\n openNeuronSearch: function(neuron){\n this.drawerOpen = true;\n // Because refs are in v-for, nextTick is needed here\n Vue.nextTick(()=>{this.$refs[this.activeId][0].openSearch('', undefined, 'scicrunch-query-string/', {'field': '*organ.curie', 'curie':neuron})})\n },\n tabClicked: function(id) {\n this.$emit(\"tabClicked\", id);\n },\n },\n created:function() {\n this.drawerOpen = this.openAtStart;\n },\n mounted: function(){\n EventBus.$on(\"PopoverActionClick\", (payLoad) => {\n this.$emit(\"actionClick\", payLoad);\n })\n }\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n.box-card {\n flex: 3;\n height: 100%;\n overflow: hidden;\n pointer-events: auto;\n}\n\n.side-bar{\n position: relative;\n height: 100%;\n pointer-events: none;\n}\n\n.side-bar >>> .el-drawer:focus{\n outline:none;\n}\n\n.sidebar-container {\n height: 100%;\n flex-flow: column;\n display: flex;\n}\n\n.open-tab{\n width: 20px;\n height: 40px;\n z-index: 8;\n position: absolute;\n top: calc(50vh - 80px);\n right: 0px;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n background-color: #F7FAFF;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.el-icon-arrow-left{\n font-size: 20px;\n padding-top: 8px;\n color: #292b66;\n}\n\n.el-icon-arrow-right{\n font-size: 20px;\n padding-top: 8px;\n color: #292b66;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.close-tab{\n float: left;\n flex: 1;\n width: 20px;\n height: 40px;\n z-index: 8;\n margin-top: calc(50vh - 80px);\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.06);\n border: solid 1px #e4e7ed;\n border-right: 0;\n background-color: #F7FAFF;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.box-card {\n flex: 3;\n height: 100%;\n overflow: hidden;\n pointer-events: auto;\n}\n\n>>> .my-drawer {\n background: rgba(0,0,0,0);\n box-shadow: none;\n}\n\n>>> .my-drawer .el-drawer__body {\n height: 100%;\n}\n\n.sidebar-content-container {\n flex: 1 1 auto;\n}\n\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SideBar.vue?vue&type=template&id=3d831a8e&scoped=true&\"\nimport script from \"./SideBar.vue?vue&type=script&lang=js&\"\nexport * from \"./SideBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SideBar.vue?vue&type=style&index=0&id=3d831a8e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d831a8e\",\n null\n \n)\n\nexport default component.exports","module.exports = require(\"core-js/modules/es.string.includes\");"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack://map-side-bar/webpack/universalModuleDefinition","webpack://map-side-bar/webpack/bootstrap","webpack://map-side-bar/external \"element-ui/lib/pagination\"","webpack://map-side-bar/external \"core-js/modules/es.symbol.iterator\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/pagination.css\"","webpack://map-side-bar/external \"core-js/modules/es.parse-int\"","webpack://map-side-bar/external \"element-ui/lib/select\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/select.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.for-each\"","webpack://map-side-bar/external \"core-js/modules/es.array.concat\"","webpack://map-side-bar/external \"core-js/modules/web.dom-collections.iterator\"","webpack://map-side-bar/external \"core-js/modules/es.object.keys\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/link.css\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/button.css\"","webpack://map-side-bar/./src/components/DatasetCard.vue?a4c1","webpack://map-side-bar/external \"core-js/modules/web.url\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/loading.css\"","webpack://map-side-bar/external \"element-ui/lib/drawer\"","webpack://map-side-bar/external \"@abi-software/svg-sprite\"","webpack://map-side-bar/./src/components/Tabs.vue?88de","webpack://map-side-bar/external \"core-js/modules/es.object.get-own-property-descriptors\"","webpack://map-side-bar/external \"core-js/modules/es.string.split\"","webpack://map-side-bar/external \"core-js/modules/es.set\"","webpack://map-side-bar/external \"core-js/modules/es.array.filter\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/card.css\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/drawer.css\"","webpack://map-side-bar/external \"core-js/modules/es.symbol.description\"","webpack://map-side-bar/external \"core-js/modules/es.regexp.exec\"","webpack://map-side-bar/external \"element-ui/lib/button\"","webpack://map-side-bar/external \"core-js/modules/es.regexp.to-string\"","webpack://map-side-bar/external \"core-js/modules/es.symbol\"","webpack://map-side-bar/external \"core-js/modules/es.array.slice\"","webpack://map-side-bar/external \"core-js/modules/es.object.get-own-property-descriptor\"","webpack://map-side-bar/external \"element-ui/lib/cascader\"","webpack://map-side-bar/external \"element-ui/lib/locale/lang/en\"","webpack://map-side-bar/external \"element-ui/lib/theme-chalk/cascader.css\"","webpack://map-side-bar/external \"core-js/modules/es.array.sort\"","webpack://map-side-bar/external \"core-js/modules/es.number.constructor\"","webpack://map-side-bar/./src/components/ContextCard.vue?86ff","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 \"core-js/modules/es.array.find-index\"","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.object.assign\"","webpack://map-side-bar/external \"core-js/modules/es.function.name\"","webpack://map-side-bar/external \"core-js/modules/web.dom-collections.for-each\"","webpack://map-side-bar/external \"core-js/modules/es.string.search\"","webpack://map-side-bar/external \"core-js/modules/es.string.replace\"","webpack://map-side-bar/external \"element-ui/lib/option\"","webpack://map-side-bar/./src/components/SidebarContent.vue?3f3f","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?69e3","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?47cc","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?86a8","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","result","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","newResults","newResult","res","curie","split","description","updated","pennsieve","updatedAt","publishDate","filter","query","hitsperPage","hitsPerPage","filters","searchData","items","_processResultsForCards","hits","total","nbHits","identifier","dois","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","publishYear","samples","simulation","openScaffold","openPlot","openRepository","openSimulation","cardOverflow","expand","EventBus","Vue","string","dataLocation","loading","lastDoi","hasCSVFile","lastName","numberSamples","numberSubjects","organs","open","additionalLinks","xmlhttp","apiLocation","setRequestHeader","onreadystatechange","readyState","status","url","JSON","parse","responseText","uri","send","stringify","isSedmlResource","resource","propogateCardAction","action","getScaffoldPath","path","getFileFromPath","isOverflown","clientHeight","scrollHeight","splitDOI","getBanner","fullName","$refs","card","watch","showDetails","contextData","banner","heading","view","openViewFile","staticStyle","sample","toggleSampleDetails","style","color","sampleDetails","generateFileLink","showContextCard","handler","val","getContextFile","immediate","contextFileUrl","removeDoubleFilesPath","viewUrl","handleErrors","initial_state","lastSearch","pageModel","start","hasSearched","loadingScicrunch","visible","Boolean","isDrawer","firstSearch","String","flex","display","openSearch","resetPageNavigation","searchAlgolia","filtersRef","keyCode","MouseEvent","searchSciCrunch","scrollToTop","callSciCrunch","API_LOCATION","params","content","scroll","resultsProcessing","assign","sampleSize","subjectSize","timestamp","datasetId","organisms","scaffolds","contextualInformation","createfilterParams","append","e","fullEndpoint","console","log","created","searchEndpoint","title","highlightText","titleClicked","tabTitles","Number","openAtStart","openNeuronSearch"],"mappings":"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AOD,QAAUyC,QAAQ,4C,qBCAzBxC,EAAOD,QAAUyC,QAAQ,kC,qBCAzBxC,EAAOD,QAAUyC,QAAQ,0C,oCCAzB,yBAAwgB,EAAG,G,qBCA3gBxC,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,mBCAzBxC,EAAOD,QAAUyC,QAAQ,wC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,wB,mBCAzBxC,EAAOD,QAAUyC,QAAQ,wB,mBCAzBxC,EAAOD,QAAUyC,QAAQ,qC,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,kCCAzB,yBAA2gB,EAAG,G,mBCA9gBxC,EAAOD,QAAUyC,QAAQ,2C,mBCAzBxC,EAAOD,QAAUyC,QAAQ,4B,mBCAzBxC,EAAOD,QAAUyC,QAAQ,kC,mBCAzBxC,EAAOD,QAAUyC,QAAQ,yB,mBCAzBxC,EAAOD,QAAUyC,QAAQ,sC,mBCAz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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\");","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=75e03782&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=75e03782&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/web.url\");","module.exports = require(\"element-ui/lib/theme-chalk/loading.css\");","module.exports = require(\"element-ui/lib/drawer\");","module.exports = require(\"@abi-software/svg-sprite\");","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=style&index=0&id=d68260c4&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=style&index=0&id=d68260c4&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/es.object.get-own-property-descriptors\");","module.exports = require(\"core-js/modules/es.string.split\");","module.exports = require(\"core-js/modules/es.set\");","module.exports = require(\"core-js/modules/es.array.filter\");","module.exports = require(\"element-ui/lib/theme-chalk/card.css\");","module.exports = require(\"element-ui/lib/theme-chalk/drawer.css\");","module.exports = require(\"core-js/modules/es.symbol.description\");","module.exports = require(\"core-js/modules/es.regexp.exec\");","module.exports = require(\"element-ui/lib/button\");","module.exports = require(\"core-js/modules/es.regexp.to-string\");","module.exports = require(\"core-js/modules/es.symbol\");","module.exports = require(\"core-js/modules/es.array.slice\");","module.exports = require(\"core-js/modules/es.object.get-own-property-descriptor\");","module.exports = require(\"element-ui/lib/cascader\");","module.exports = require(\"element-ui/lib/locale/lang/en\");","module.exports = require(\"element-ui/lib/theme-chalk/cascader.css\");","module.exports = require(\"core-js/modules/es.array.sort\");","module.exports = require(\"core-js/modules/es.number.constructor\");","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextCard.vue?vue&type=style&index=0&id=41eb07ec&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=41eb07ec&scoped=true&lang=css&\"","module.exports = require(\"regenerator-runtime/runtime\");","module.exports = require(\"core-js/modules/es.array.splice\");","module.exports = require(\"element-ui/lib/link\");","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(\"core-js/modules/es.array.find-index\");","module.exports = require(\"element-ui/lib/card\");","module.exports = require(\"element-ui/lib/icon\");","module.exports = require(\"core-js/modules/es.object.assign\");","module.exports = require(\"core-js/modules/es.function.name\");","module.exports = require(\"core-js/modules/web.dom-collections.for-each\");","module.exports = require(\"core-js/modules/es.string.search\");","module.exports = require(\"core-js/modules/es.string.replace\");","module.exports = require(\"element-ui/lib/option\");","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarContent.vue?vue&type=style&index=0&id=53d83468&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=53d83468&scoped=true&lang=css&\"","module.exports = require(\"core-js/modules/es.array.last-index-of\");","module.exports = require(\"current-script-polyfill\");","module.exports = require(\"core-js/modules/es.array.from\");","module.exports = require(\"element-ui/lib/input\");","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.loadingScicrunch)?_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loadingScicrunch),expression:\"loadingScicrunch\"}],staticClass:\"loading-icon\"}):_vm._e(),(_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(result){return _c('div',{key:result.id,staticClass:\"step-item\"},[_c('DatasetCard',{attrs:{\"entry\":result,\"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 _processResultsForCards(results) {\r\n let newResults = []\r\n let newResult = {}\r\n for (let res of results) {\r\n newResult = {...res}\r\n newResult = {\r\n doi: res.item.curie.split(':')[1],\r\n name: res.item.name,\r\n description: res.item.description,\r\n updated: res.pennsieve.updatedAt,\r\n publishDate: res.pennsieve.publishDate,\r\n } \r\n newResults.push(newResult)\r\n }\r\n return newResults\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: this._processResultsForCards(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',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],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\r\n}\r\n// //Uncomment the code below to add in hardcoded data\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 v-loading=\"loading\" 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: {\r\n type: Object,\r\n default: () => {}\r\n },\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 loading: false,\r\n lastDoi: undefined,\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 discoverId: this.discoverId,\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 this.propogateCardAction(action)\r\n },\r\n propogateCardAction: function(action){\r\n EventBus.$emit(\"PopoverActionClick\", action)\r\n this.$emit('contextUpdate', action)\r\n },\r\n getScaffoldPath: function(discoverId, version, scaffoldPath){\r\n let id = discoverId\r\n let path = `${this.envVars.API_LOCATION}s3-resource/${id}/${version}/files/${scaffoldPath}`\r\n return path\r\n },\r\n getFileFromPath: function(discoverId, version, path){\r\n return `${this.envVars.API_LOCATION}s3-resource/${discoverId}/${version}/files/${path}`\r\n },\r\n isOverflown: function(el){\r\n return el.clientHeight < el.scrollHeight\r\n },\r\n expand: function() {\r\n this.expanded = true\r\n },\r\n splitDOI: function(doi){\r\n return [doi.split('/')[doi.split('/').length-2], doi.split('/')[doi.split('/').length-1]]\r\n },\r\n getBanner: function () {\r\n // Only load banner if card has changed\r\n if (this.lastDoi !== this.entry.doi) {\r\n this.lastDoi = this.entry.doi\r\n this.loading = true\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 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\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 // currently not using card overflow\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 }\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=75e03782&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=75e03782&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 \"75e03782\",\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 && _vm.contextData.samples.length > 0)?_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 && contextData.samples.length > 0\" 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 console.log(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 font-size: 14px;\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 width: 500px;\r\n max-height: 480px;\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=41eb07ec&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=41eb07ec&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 \"41eb07ec\",\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 v-if=\"loadingScicrunch\" class=\"loading-icon\" v-loading=\"loadingScicrunch\"></div>\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=\"result in results\" :key=\"result.id\" class=\"step-item\">\r\n <DatasetCard :entry=\"result\" :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 loadingScicrunch: false,\r\n};\r\n\r\nexport default {\r\n components: { SearchFilters, DatasetCard, ContextCard },\r\n name: \"SideBarContent\",\r\n props: {\r\n visible: {\r\n type: Boolean,\r\n default: false\r\n },\r\n isDrawer: {\r\n type: Boolean,\r\n default: true\r\n },\r\n entry: {\r\n type: Object,\r\n default: () => initial_state\r\n },\r\n 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.loadingCards = false\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.loadingScicrunch = true\r\n this.scrollToTop();\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 this.loadingScicrunch = false\r\n })\r\n .catch(result => {\r\n if (result.name !== 'AbortError') {\r\n this.loadingCards = false;\r\n this.loadingScicrunch = false\r\n this.sciCrunchError = result.message;\r\n }\r\n })\r\n },\r\n scrollToTop: function() {\r\n if (this.$refs.content) {\r\n this.$refs.content.scroll({ top: 0, behavior: \"smooth\" });\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\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\r\n // match the scicrunch result with algolia result\r\n let i = this.results.findIndex(res=> res.name === element.name)\r\n\r\n\r\n // Assign scicrunch results to the object\r\n Object.assign(this.results[i], element)\r\n\r\n // Assign the attributes that need some processing\r\n Object.assign(this.results[i],{\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 id: id,\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 simulation: element.additionalLinks\r\n ? element.additionalLinks[0].description == 'Repository'\r\n : false,\r\n });\r\n id++;\r\n\r\n Vue.set(this.results, i, this.results[i])\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.loading-icon {\r\n position: relative;\r\n display: flex;\r\n float: right;\r\n top: 0;\r\n z-index: 20;\r\n width: 40px;\r\n height: 40px;\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=53d83468&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=53d83468&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 \"53d83468\",\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":""}
|