Commit e8949a1e authored by Phil Hughes's avatar Phil Hughes

Updated notebooklab library

Added error handling

[ci skip]
parent 313258fa
...@@ -5,11 +5,7 @@ import NotebookLab from 'vendor/notebooklab'; ...@@ -5,11 +5,7 @@ import NotebookLab from 'vendor/notebooklab';
Vue.use(VueResource); Vue.use(VueResource);
Vue.use(NotebookLab); Vue.use(NotebookLab);
Vue.config.errorHandler = (err) => { document.addEventListener('DOMContentLoaded', () => {
console.log(err);
}
$(() => {
const el = document.getElementById('js-notebook-viewer'); const el = document.getElementById('js-notebook-viewer');
new Vue({ new Vue({
...@@ -17,21 +13,53 @@ $(() => { ...@@ -17,21 +13,53 @@ $(() => {
data() { data() {
return { return {
error: false, error: false,
loadError: false,
loading: true, loading: true,
json: {}, json: {},
}; };
}, },
template: ` template: `
<div class="container-fluid"> <div class="container-fluid md prepend-top-default append-bottom-default">
<i <div
class="fa fa-spinner fa-spin" class="text-center loading"
v-if="loading"> v-if="loading && !error">
</i> <i
class="fa fa-spinner fa-spin"
aria-hidden="true"
aria-label="iPython notebook loading">
</i>
</div>
<notebook-lab <notebook-lab
v-if="!loading" v-if="!loading && !error"
:notebook="json" /> :notebook="json" />
<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 parsing the file.
</span>
</p>
</div> </div>
`, `,
methods: {
loadFile() {
this.$http.get(el.dataset.endpoint)
.then((res) => {
this.json = res.json();
this.loading = false;
})
.catch((e) => {
if (e.status) {
this.loadError = true;
}
this.error = true;
});
},
},
mounted() { mounted() {
$('<link>', { $('<link>', {
rel: 'stylesheet', rel: 'stylesheet',
...@@ -40,11 +68,7 @@ $(() => { ...@@ -40,11 +68,7 @@ $(() => {
}).appendTo('head'); }).appendTo('head');
$.getScript(gon.katex_js_url, () => { $.getScript(gon.katex_js_url, () => {
this.$http.get(el.dataset.endpoint) this.loadFile();
.then((res) => {
this.json = res.json();
this.loading = false;
});
}); });
}, },
}); });
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment