summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorJacob Schatz <jschatz1@gmail.com>2017-04-15 08:59:48 -0400
committerJacob Schatz <jschatz1@gmail.com>2017-04-15 08:59:48 -0400
commit0039d5df739dcf10f50c8a615d86261d91cdb22d (patch)
tree0940ba139c6de0ceada0f72b6677070c55311430 /app
parent309bab431075eabfb7a01300f946ce9eb5b6fb98 (diff)
downloadgitlab-ce-dxf-render.tar.gz
Add DXF Stuffdxf-render
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/blob/dxf/dxf.js0
-rw-r--r--app/assets/javascripts/blob/dxf/index.js29
-rw-r--r--app/assets/javascripts/blob/dxf_viewer.js6
-rw-r--r--app/models/blob.rb6
-rw-r--r--app/views/projects/blob/_dxf.html.haml6
5 files changed, 47 insertions, 0 deletions
diff --git a/app/assets/javascripts/blob/dxf/dxf.js b/app/assets/javascripts/blob/dxf/dxf.js
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/app/assets/javascripts/blob/dxf/dxf.js
diff --git a/app/assets/javascripts/blob/dxf/index.js b/app/assets/javascripts/blob/dxf/index.js
new file mode 100644
index 00000000000..ed4d557d02f
--- /dev/null
+++ b/app/assets/javascripts/blob/dxf/index.js
@@ -0,0 +1,29 @@
+import DXFParser from 'dxf-parser';
+import DXF from './dxf';
+
+export default class DXFRenderer {
+ constructor(container) {
+ this.el = container;
+ this.endpoint = this.el.dataset.endpoint;
+ this.loadFile();
+ }
+
+ loadFile() {
+ const xhr = new XMLHttpRequest();
+ xhr.open('GET', this.endpoint, true);
+ xhr.responseType = 'string';
+ xhr.onload = this.parseDxf.bind(this);
+ // xhr.onerror = DXFParser.onError;
+ xhr.send();
+ }
+
+ parseDxf(e) {
+ var parser = new DXFParser();
+ try {
+ var dxf = parser.parseSync(e.target.response);
+ console.log(dxf)
+ }catch(err) {
+ return console.error(err.stack);
+ }
+ }
+} \ No newline at end of file
diff --git a/app/assets/javascripts/blob/dxf_viewer.js b/app/assets/javascripts/blob/dxf_viewer.js
new file mode 100644
index 00000000000..707ac391e2f
--- /dev/null
+++ b/app/assets/javascripts/blob/dxf_viewer.js
@@ -0,0 +1,6 @@
+import DXFRenderer from './dxf';
+
+document.addEventListener('DOMContentLoaded', () => {
+ const viewer = new DXFRenderer(document.getElementById('js-dxf-viewer'));
+ console.log('viewer',viewer)
+});
diff --git a/app/models/blob.rb b/app/models/blob.rb
index 55872acef51..d6d26f7c329 100644
--- a/app/models/blob.rb
+++ b/app/models/blob.rb
@@ -54,6 +54,10 @@ class Blob < SimpleDelegator
extension == 'pdf'
end
+ def dxf?
+ extension == 'dxf'
+ end
+
def ipython_notebook?
text? && language&.name == 'Jupyter Notebook'
end
@@ -91,6 +95,8 @@ class Blob < SimpleDelegator
'svg'
elsif pdf?
'pdf'
+ elsif dxf?
+ 'dxf'
elsif ipython_notebook?
'notebook'
elsif sketch?
diff --git a/app/views/projects/blob/_dxf.html.haml b/app/views/projects/blob/_dxf.html.haml
new file mode 100644
index 00000000000..18a3bd5ddea
--- /dev/null
+++ b/app/views/projects/blob/_dxf.html.haml
@@ -0,0 +1,6 @@
+- content_for :page_specific_javascripts do
+ = page_specific_javascript_bundle_tag('dxf_viewer')
+
+.file-content.is-dxf-loading
+ #js-dxf-viewer{ data: { endpoint: namespace_project_raw_path(@project.namespace, @project, @id) } }
+ = icon('spinner spin 2x', class: 'prepend-top-default append-bottom-default hidden', 'aria-hidden' => 'true', 'aria-label' => 'Loading')