diff options
author | Jacob Schatz <jschatz1@gmail.com> | 2017-04-15 08:59:48 -0400 |
---|---|---|
committer | Jacob Schatz <jschatz1@gmail.com> | 2017-04-15 08:59:48 -0400 |
commit | 0039d5df739dcf10f50c8a615d86261d91cdb22d (patch) | |
tree | 0940ba139c6de0ceada0f72b6677070c55311430 | |
parent | 309bab431075eabfb7a01300f946ce9eb5b6fb98 (diff) | |
download | gitlab-ce-dxf-render.tar.gz |
Add DXF Stuffdxf-render
-rw-r--r-- | app/assets/javascripts/blob/dxf/dxf.js | 0 | ||||
-rw-r--r-- | app/assets/javascripts/blob/dxf/index.js | 29 | ||||
-rw-r--r-- | app/assets/javascripts/blob/dxf_viewer.js | 6 | ||||
-rw-r--r-- | app/models/blob.rb | 6 | ||||
-rw-r--r-- | app/views/projects/blob/_dxf.html.haml | 6 | ||||
-rw-r--r-- | config/webpack.config.js | 1 | ||||
-rw-r--r-- | package.json | 1 | ||||
-rw-r--r-- | yarn.lock | 10 |
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" |