{"version":3,"file":"DownloadDialog.js","sources":["../../src/modules/Datasets/list/DownloadDialog.tsx"],"sourcesContent":["import { computed, defineComponent, toRefs, ref, onMounted, onUnmounted } from 'vue'\nimport { useQuery } from '@vue/apollo-composable'\nimport { DownloadLinkJson, GetDatasetDownloadLink, getDatasetDownloadLink } from '../../../api/dataset'\nimport safeJsonParse from '../../../lib/safeJsonParse'\nimport { ElDialog, ElLoading } from '../../../lib/element-plus'\nimport { useStore } from 'vuex'\n\nconst getFilenameAndExt = (filename: string) => {\n const lastDot = filename.lastIndexOf('.')\n if (lastDot !== -1) {\n const name = filename.slice(0, lastDot)\n const ext = filename.slice(lastDot)\n if (ext.toLowerCase() === '.imzml') {\n return [name, '.imzML']\n } else {\n return [name, ext.toLowerCase()]\n }\n }\n return [filename, '']\n}\n\nconst FileIcon = defineComponent({\n props: { ext: { type: String, required: true } },\n setup(props) {\n return () => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {props.ext}\n \n \n )\n },\n})\n\nconst FileItem = defineComponent({\n props: {\n filename: { type: String, required: true },\n link: { type: String, required: true },\n },\n setup(props) {\n return () => {\n const { filename, link } = props\n const [name, ext] = getFilenameAndExt(filename)\n\n return (\n
\n \n \n \n \n {name}\n {ext}\n \n
\n )\n }\n },\n})\n\nexport default defineComponent({\n props: {\n datasetName: { type: String, required: true },\n datasetId: { type: String, required: true },\n isLogged: { type: Boolean, default: () => false },\n onClose: { type: Function },\n },\n directives: {\n loading: ElLoading.directive,\n },\n setup(props, { emit }) {\n const { datasetId } = toRefs(props)\n const store = useStore()\n const dialogRef = ref(null)\n\n const { result: downloadLinkResult, loading } = useQuery(\n getDatasetDownloadLink,\n { datasetId },\n { fetchPolicy: 'no-cache' }\n )\n const downloadLinks = computed(() =>\n downloadLinkResult.value != null ? safeJsonParse(downloadLinkResult.value.dataset.downloadLinkJson) : null\n )\n const showSignIn = () => {\n emit('close')\n store.commit('account/showDialog', 'signIn')\n }\n\n const handleOutsideClick = (event) => {\n if (dialogRef.value && !dialogRef.value.$el.contains(event.target)) {\n event.stopPropagation()\n }\n }\n\n onMounted(() => {\n document.addEventListener('mousedown', handleOutsideClick)\n })\n\n onUnmounted(() => {\n document.removeEventListener('mousedown', handleOutsideClick)\n })\n\n return () => {\n let content\n if (loading.value) {\n content =
\n } else if (!props.isLogged) {\n content = (\n
\n

\n \n Sign in\n {' '}\n to download. Access is available for public datasets or those you have permissions for.\n

\n
\n )\n } else if (downloadLinks.value == null) {\n content = (\n
\n

Error

\n

This dataset cannot be downloaded.

\n
\n )\n } else if (((downloadLinks.value || {}) as any).message != null) {\n content = (\n
\n

{((downloadLinks.value || {}) as any).message}

\n
\n )\n } else {\n const { license, contributors, files } = downloadLinks.value\n const authorStr = contributors.length !== 1 ? 'authors' : 'author'\n content = (\n
\n

\n {license.code === 'NO-LICENSE' ? (\n

\n This dataset's submitter has not selected a license. Please get approval from the {authorStr} before\n downloading or using this dataset in any way.\n

\n ) : (\n

\n This dataset is distributed under the{' '}\n \n {license.code}\n {' '}\n license. Make sure to credit the {authorStr} of this dataset:\n

\n )}\n

\n
    \n {contributors.map(({ name, institution }) => (\n
  • \n {name}\n {institution && `, ${institution}`}\n
  • \n ))}\n
\n

Files

\n {files != null && files.length > 0 ? (\n
\n {files.map(({ filename, link }) => (\n \n ))}\n
\n ) : (\n
No files were found for this dataset.
\n )}\n

\n \n Please be aware of daily download limits (2 downloads per day). Closing and reopening this dialog will\n count as a new download.\n \n

\n

\n These download links expire after 30 minutes.\n

\n
\n )\n }\n\n return (\n e.stopPropagation()}\n onClose={() => emit('close')}\n title={`Download ${props.datasetName}`}\n >\n {content.children}\n \n )\n }\n },\n})\n"],"names":["getFilenameAndExt","filename","lastDot","lastIndexOf","name","slice","ext","toLowerCase","FileIcon","defineComponent","props","type","String","required","setup","_createVNode","FileItem","link","datasetName","datasetId","isLogged","Boolean","default","onClose","Function","directives","loading","ElLoading","directive","emit","toRefs","store","useStore","dialogRef","ref","result","downloadLinkResult","useQuery","getDatasetDownloadLink","fetchPolicy","downloadLinks","computed","value","safeJsonParse","dataset","downloadLinkJson","showSignIn","commit","handleOutsideClick","event","$el","contains","target","stopPropagation","onMounted","document","addEventListener","onUnmounted","removeEventListener","content","_withDirectives","_resolveDirective","_createTextVNode","message","license","contributors","files","authorStr","length","code","map","institution","ElDialog","e","children"],"mappings":"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"}