summaryrefslogtreecommitdiff
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
parent309bab431075eabfb7a01300f946ce9eb5b6fb98 (diff)
downloadgitlab-ce-dxf-render.tar.gz
Add DXF Stuffdxf-render
-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
-rw-r--r--config/webpack.config.js1
-rw-r--r--package.json1
-rw-r--r--yarn.lock10
8 files changed, 59 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')
diff --git a/config/webpack.config.js b/config/webpack.config.js
index ffb16190093..8a212810316 100644
--- a/config/webpack.config.js
+++ b/config/webpack.config.js
@@ -46,6 +46,7 @@ var config = {
protected_tags: './protected_tags',
snippet: './snippet/snippet_bundle.js',
stl_viewer: './blob/stl_viewer.js',
+ dxf_viewer: './blob/dxf_viewer.js',
terminal: './terminal/terminal_bundle.js',
u2f: ['vendor/u2f'],
users: './users/users_bundle.js',
diff --git a/package.json b/package.json
index a17399ddb8f..4709472a1b2 100644
--- a/package.json
+++ b/package.json
@@ -24,6 +24,7 @@
"d3": "^3.5.11",
"document-register-element": "^1.3.0",
"dropzone": "^4.2.0",
+ "dxf-parser": "^0.4.6",
"emoji-unicode-version": "^0.2.1",
"eslint-plugin-html": "^2.0.1",
"file-loader": "^0.11.1",
diff --git a/yarn.lock b/yarn.lock
index e16cd9c3673..cd798447b40 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1702,6 +1702,12 @@ duplexify@^3.2.0:
readable-stream "^2.0.0"
stream-shift "^1.0.0"
+dxf-parser@^0.4.6:
+ version "0.4.6"
+ resolved "https://registry.yarnpkg.com/dxf-parser/-/dxf-parser-0.4.6.tgz#fb73a9d51c53bb853a2fc0ea4d72998b131ac87a"
+ dependencies:
+ loglevel "^1.2.0"
+
ecc-jsbn@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
@@ -3511,6 +3517,10 @@ log4js@^0.6.31:
readable-stream "~1.0.2"
semver "~4.3.3"
+loglevel@^1.2.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.4.1.tgz#95b383f91a3c2756fd4ab093667e4309161f2bcd"
+
longest@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"