diff --git a/app/components/button/download_document_version.hbs b/app/components/button/download_document_version.hbs index ad7e43fcf608c6848d3ec2c387735aae8969dc7f..0931d85e881c4459ea4823e07d600fbd940d7ebf 100644 --- a/app/components/button/download_document_version.hbs +++ b/app/components/button/download_document_version.hbs @@ -9,12 +9,10 @@ <ul class="dropdown-menu"> {{#each @document_versions as |document_version|}} <li> - <LinkTo - @route="authenticated.document-version-download" - @model={{document_version.id}} - class="dropdown-item"> + <a class="dropdown-item" href="#" + {{on "click" (fn this.download document_version)}}> version {{document_version.number}} {{document_version.short_description}} - </LinkTo> + </a> </li> {{/each}} </ul> diff --git a/app/components/button/download_document_version.js b/app/components/button/download_document_version.js new file mode 100644 index 0000000000000000000000000000000000000000..c974ce5fdd435dd395b3b0bc597595cde0b04ec5 --- /dev/null +++ b/app/components/button/download_document_version.js @@ -0,0 +1,30 @@ +import Component from '@glimmer/component'; +import { action } from '@ember/object'; +import { inject as service } from '@ember/service'; + + +export default class ButtonDownloadComponent extends Component { + + @service requests; + + @action + download(document_version) { + /* + `document_version` contains following attributes: + id + number + file_name + lang + pages + size + page_count + short_description + + attributes which correspond to server side (or client side) DocumentVersion model + */ + this.requests.downloadDocumentVersion( + document_version + ); + } +} + diff --git a/app/components/viewer/action_buttons.hbs b/app/components/viewer/action_buttons.hbs index 294289e304d6ea20aeab93a0a5afe315a5193c81..c967b5cadafda7cf07c3f084df0cd21fc93b851e 100644 --- a/app/components/viewer/action_buttons.hbs +++ b/app/components/viewer/action_buttons.hbs @@ -1,12 +1,6 @@ <div> <Button::DownloadDocumentVersion @document_versions={{@document_versions}} /> - <button - class="btn btn-light" - type="button"> - <i class="fa fa-upload mr-1"></i> - Upload - </button> <button class="btn btn-light" type="button" diff --git a/app/components/viewer/index.js b/app/components/viewer/index.js index 38951fbb6cdae06d1e91f02c203a982471cdd377..4a00bee064bb0adec1fa6fca292aa26f472b882e 100644 --- a/app/components/viewer/index.js +++ b/app/components/viewer/index.js @@ -10,7 +10,7 @@ export default class ViewComponent extends Component { @action onRunOCR() { this.requests.runOCR({ - doc_id: this.args.last_document_version.id, + doc_id: this.args.doc.id, lang: 'deu' }); } diff --git a/app/router.js b/app/router.js index b1ccadd0d657cc8c6aaa5fa951e596b8590ca3ed..014e1720eb88dc7ed45ddc9bb82cffa3631b8ab4 100644 --- a/app/router.js +++ b/app/router.js @@ -11,10 +11,6 @@ Router.map(function () { this.route('documents'); this.route('inbox'); this.route('document', { path: '/document/:document_id' }); - this.route( - 'document-version-download', - { path: '/document-versions/:document_version_id/download/' } - ); this.route('nodes', { path: '/nodes/:node_id' }); diff --git a/app/services/requests.js b/app/services/requests.js index 78b01f777492b9c8b88396c41dc891b05607f57d..fedbb59a28c4f8275cf49559b4859607cedba406 100644 --- a/app/services/requests.js +++ b/app/services/requests.js @@ -27,6 +27,46 @@ export default class Requests extends Service { }); } + async downloadDocumentVersion(document_version) { + /* + `document_version` contains following attributes: + id + number + file_name + lang + pages + size + page_count + short_description + + attributes which correspond to server side (or client side) DocumentVersion model + */ + let url, headers_copy = {}; + + url = `${this.base_url}document-versions/${document_version.id}/download/`; + Object.assign(headers_copy, this.headers); + //headers_copy['Access-Control-Allow-Origin'] = ENV.APP.HOST; + + return fetch(url, { + method: 'GET', + headers: headers_copy + }).then( + response => response.blob() + ).then((blob) => { + let url = window.URL.createObjectURL(blob); + let a = document.createElement('a'); + + a.href = url; + a.download = document_version.file_name; + // we need to append the element to the dom -> otherwise it will not + // work in firefox + document.body.appendChild(a); + a.click(); + //afterwards we remove the element again + a.remove(); + }); + } + get base_url() { return `${ENV.APP.HOST}/${ENV.APP.NAMESPACE}/`; }