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 @@
+
+
+
+ DwC
+
+
+
+
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 @@
/>
-