diff options
author | Sam Rose <sam@gitlab.com> | 2017-04-03 14:39:50 -0400 |
---|---|---|
committer | Jacob Schatz <jschatz1@gmail.com> | 2017-04-05 11:22:12 -0400 |
commit | dad30d6bbf9816993bf999edcc7b1a7203a3eae5 (patch) | |
tree | a8b75a1fc2bbe22d54da02c0396ba2089ff7360b /app/assets/javascripts/blob/pdf | |
parent | 97667b83420cf42b01836d9b0c46d904f55aae21 (diff) | |
download | gitlab-ce-dad30d6bbf9816993bf999edcc7b1a7203a3eae5.tar.gz |
Use PDFLab to render PDFs in GitLab
Diffstat (limited to 'app/assets/javascripts/blob/pdf')
-rw-r--r-- | app/assets/javascripts/blob/pdf/index.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/app/assets/javascripts/blob/pdf/index.js b/app/assets/javascripts/blob/pdf/index.js new file mode 100644 index 00000000000..5b79717d1e1 --- /dev/null +++ b/app/assets/javascripts/blob/pdf/index.js @@ -0,0 +1,62 @@ +/* eslint-disable no-new */ +import Vue from 'vue'; +import PDFLab from 'vendor/pdflab'; +import workerSrc from 'vendor/pdf.worker'; + +Vue.use(PDFLab, { + workerSrc, +}); + +export default () => { + const el = document.getElementById('js-pdf-viewer'); + + new Vue({ + el, + data() { + return { + error: false, + loadError: false, + loading: true, + pdf: el.dataset.endpoint, + }; + }, + methods: { + onLoad() { + this.loading = false; + }, + onError(error) { + this.loading = false; + this.loadError = true; + this.error = error; + }, + }, + template: ` + <div class="container-fluid md prepend-top-default append-bottom-default"> + <div + class="text-center loading" + v-if="loading && !error"> + <i + class="fa fa-spinner fa-spin" + aria-hidden="true" + aria-label="PDF loading"> + </i> + </div> + <pdf-lab + v-if="!loadError" + :pdf="pdf" + @pdflabload="onLoad" + @pdflaberror="onError" /> + <p + class="text-center" + v-if="error"> + <span v-if="loadError"> + An error occured whilst loading the file. Please try again later. + </span> + <span v-else> + An error occured whilst decoding the file. + </span> + </p> + </div> + `, + }); +}; |