diff options
Diffstat (limited to 'app/assets/javascripts/blob/pdf/index.js')
-rw-r--r-- | app/assets/javascripts/blob/pdf/index.js | 60 |
1 files changed, 60 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..0ed915c1ac9 --- /dev/null +++ b/app/assets/javascripts/blob/pdf/index.js @@ -0,0 +1,60 @@ +/* eslint-disable no-new */ +import Vue from 'vue'; +import pdfLab from '../../pdf/index.vue'; + +export default () => { + const el = document.getElementById('js-pdf-viewer'); + + return new Vue({ + el, + data() { + return { + error: false, + loadError: false, + loading: true, + pdf: el.dataset.endpoint, + }; + }, + components: { + pdfLab, + }, + methods: { + onLoad() { + this.loading = false; + }, + onError(error) { + this.loading = false; + this.loadError = true; + this.error = error; + }, + }, + template: ` + <div class="js-pdf-viewer 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> + `, + }); +}; |