From 20bfa72ac0b91aca645ea7d2463c4f29a41f8660 Mon Sep 17 00:00:00 2001 From: jlpereira Date: Wed, 7 Jun 2023 12:04:27 -0300 Subject: [PATCH] Add DwC download --- src/components/Icon/IconDownload.global.vue | 15 +++++++++++ src/modules/otus/components/DWCDownload.vue | 30 +++++++++++++++++++++ src/modules/otus/services/TaxonWorks.js | 4 +++ src/modules/otus/utils/files.js | 29 ++++++++++++++++++++ src/modules/otus/utils/index.js | 1 + src/modules/otus/views/Index.vue | 9 ++++++- 6 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 src/components/Icon/IconDownload.global.vue create mode 100644 src/modules/otus/components/DWCDownload.vue create mode 100644 src/modules/otus/utils/files.js diff --git a/src/components/Icon/IconDownload.global.vue b/src/components/Icon/IconDownload.global.vue new file mode 100644 index 0000000..0099b27 --- /dev/null +++ b/src/components/Icon/IconDownload.global.vue @@ -0,0 +1,15 @@ + diff --git a/src/modules/otus/components/DWCDownload.vue b/src/modules/otus/components/DWCDownload.vue new file mode 100644 index 0000000..86864f8 --- /dev/null +++ b/src/modules/otus/components/DWCDownload.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/modules/otus/services/TaxonWorks.js b/src/modules/otus/services/TaxonWorks.js index f0cb21e..601759b 100644 --- a/src/modules/otus/services/TaxonWorks.js +++ b/src/modules/otus/services/TaxonWorks.js @@ -64,4 +64,8 @@ export default class TaxonWorks { extend: ['depiction'] }) } + + static getDwC(otuId) { + return makeAPIRequest.get(`/otus/${otuId}/inventory/dwc`) + } } diff --git a/src/modules/otus/utils/files.js b/src/modules/otus/utils/files.js new file mode 100644 index 0000000..449b666 --- /dev/null +++ b/src/modules/otus/utils/files.js @@ -0,0 +1,29 @@ +function downloadTextFile(text, fileType, fileName) { + const blob = new Blob([text], { type: fileType }) + const a = document.createElement('a') + + a.download = fileName + a.href = URL.createObjectURL(blob) + a.dataset.downloadurl = [fileType, a.download, a.href].join(':') + a.style.display = 'none' + document.body.appendChild(a) + a.click() + document.body.removeChild(a) + setTimeout(() => { + URL.revokeObjectURL(a.href) + }, 1500) +} + +function blobToArrayBuffer(blob) { + return new Promise((resolve, reject) => { + const reader = new FileReader() + + reader.addEventListener('loadend', (_) => { + resolve(reader.result) + }) + reader.addEventListener('error', reject) + reader.readAsArrayBuffer(blob) + }) +} + +export { blobToArrayBuffer, downloadTextFile } diff --git a/src/modules/otus/utils/index.js b/src/modules/otus/utils/index.js index 1094c15..9fe8130 100644 --- a/src/modules/otus/utils/index.js +++ b/src/modules/otus/utils/index.js @@ -1,3 +1,4 @@ +export * from './files' export * from './isRankGroup' export * from './makeGeoJSONFeature' export * from './removeDuplicateShapes' diff --git a/src/modules/otus/views/Index.vue b/src/modules/otus/views/Index.vue index 8686f3e..34cb26f 100644 --- a/src/modules/otus/views/Index.vue +++ b/src/modules/otus/views/Index.vue @@ -24,7 +24,7 @@ /> -
+
+
+ +