diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/javascripts/blob/notebook_viewer.js | 20 | ||||
-rw-r--r-- | app/models/blob.rb | 6 | ||||
-rw-r--r-- | app/views/projects/blob/_notebook.html.haml | 5 |
3 files changed, 31 insertions, 0 deletions
diff --git a/app/assets/javascripts/blob/notebook_viewer.js b/app/assets/javascripts/blob/notebook_viewer.js new file mode 100644 index 00000000000..dda137c6603 --- /dev/null +++ b/app/assets/javascripts/blob/notebook_viewer.js @@ -0,0 +1,20 @@ +import Vue from 'vue'; +import NotebookLab from 'vendor/notebooklab'; + +Vue.use(NotebookLab); + +$(() => { + new Vue({ + el: '#js-notebook-viewer', + data() { + return { + json: {}, + }; + }, + template: ` + <div> + <notebook-lab :notebook="json" /> + </div> + `, + }); +}); diff --git a/app/models/blob.rb b/app/models/blob.rb index 1376b86fdad..5b71ac21cc0 100644 --- a/app/models/blob.rb +++ b/app/models/blob.rb @@ -46,6 +46,10 @@ class Blob < SimpleDelegator text? && language && language.name == 'SVG' end + def ipython_notebook? + text? && language && language.name == 'Jupyter Notebook' + end + def size_within_svg_limits? size <= MAXIMUM_SVG_SIZE end @@ -63,6 +67,8 @@ class Blob < SimpleDelegator end elsif image? || svg? 'image' + elsif ipython_notebook? + 'notebook' elsif text? 'text' else diff --git a/app/views/projects/blob/_notebook.html.haml b/app/views/projects/blob/_notebook.html.haml new file mode 100644 index 00000000000..19d3e401d27 --- /dev/null +++ b/app/views/projects/blob/_notebook.html.haml @@ -0,0 +1,5 @@ +- content_for :page_specific_javascripts do + = page_specific_javascript_bundle_tag('common_vue') + = page_specific_javascript_bundle_tag('notebook_viewer') + +.file-content#js-notebook-viewer |