From 313258fa423f9c3a03e793e2a7bc8686d0757e91 Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Mon, 20 Mar 2017 14:44:07 +0000 Subject: Stops errors in the rendering breaking the page Fixed some output types [ci skip] --- app/assets/javascripts/blob/notebook_viewer.js | 18 ++++++----- vendor/assets/javascripts/notebooklab.js | 41 ++++++++++++++++++++++++-- 2 files changed, 49 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/blob/notebook_viewer.js b/app/assets/javascripts/blob/notebook_viewer.js index 057afc9b2e5..4bd80393d17 100644 --- a/app/assets/javascripts/blob/notebook_viewer.js +++ b/app/assets/javascripts/blob/notebook_viewer.js @@ -5,6 +5,10 @@ import NotebookLab from 'vendor/notebooklab'; Vue.use(VueResource); Vue.use(NotebookLab); +Vue.config.errorHandler = (err) => { + console.log(err); +} + $(() => { const el = document.getElementById('js-notebook-viewer'); @@ -12,6 +16,7 @@ $(() => { el, data() { return { + error: false, loading: true, json: {}, }; @@ -28,14 +33,11 @@ $(() => { `, mounted() { - $.get(gon.katex_css_url, () => { - const css = $('', { - rel: 'stylesheet', - type: 'text/css', - href: gon.katex_css_url, - }); - css.appendTo('head'); - }); + $('', { + rel: 'stylesheet', + type: 'text/css', + href: gon.katex_css_url, + }).appendTo('head'); $.getScript(gon.katex_js_url, () => { this.$http.get(el.dataset.endpoint) diff --git a/vendor/assets/javascripts/notebooklab.js b/vendor/assets/javascripts/notebooklab.js index abcd6cd3d98..06d41f03211 100644 --- a/vendor/assets/javascripts/notebooklab.js +++ b/vendor/assets/javascripts/notebooklab.js @@ -235,11 +235,24 @@ exports.default = { output: function output() { return this.cell.outputs[0]; }, + outputType: function outputType() { + if (!this.output.text) { + return Object.keys(this.output.data)[0]; + } + }, outputText: function outputText() { if (this.output.text) { return this.output.text.join(''); } else { - return this.output.data[Object.keys(this.output.data)[0]].join(''); + var output = this.output.data[this.outputType]; + + if (typeof output === 'array') { + return output.join(''); + } else if (typeof output === 'string') { + return output; + } else { + return ''; + } } } } @@ -257,6 +270,7 @@ exports.default = { // // // +// /***/ }), /* 4 */ @@ -284,6 +298,11 @@ exports.default = { type: Number, required: false }, + outputType: { + type: String, + required: false, + default: '' + }, type: { type: String, required: true @@ -305,6 +324,13 @@ exports.default = { var type = this.type.split('put')[0]; return type.charAt(0).toUpperCase() + type.slice(1);; + }, + isImage: function isImage() { + if (this.outputType) { + return this.outputType.indexOf('image/') === 0; + } else { + return false; + } } } }; // @@ -316,6 +342,12 @@ exports.default = { // // // +// +// +// +// +// +// /***/ }), /* 5 */ @@ -1896,6 +1928,7 @@ module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c attrs: { "type": "output", "raw-code": _vm.outputText, + "output-type": _vm.outputType, "count": _vm.output.execution_count } }) : _vm._e()], 1) @@ -1982,10 +2015,14 @@ module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c "type": _vm.promptType, "count": _vm.count } - }), _vm._v(" "), _c('pre', { + }), _vm._v(" "), (!_vm.isImage) ? _c('pre', { domProps: { "innerHTML": _vm._s(_vm.code) } + }, [_vm._v("\n ")]) : _c('img', { + attrs: { + "src": 'data:' + _vm.outputType + ';base64,' + _vm.rawCode + } })], 1) },staticRenderFns: []} module.exports.render._withStripped = true -- cgit v1.2.3