summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/blob/notebook_viewer.js20
-rw-r--r--app/models/blob.rb6
-rw-r--r--app/views/projects/blob/_notebook.html.haml5
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