From 4537657823bec8e8f7ae8855970b6dab10510698 Mon Sep 17 00:00:00 2001 From: Amanda Ghassaei <amandaghassaei@gmail.com> Date: Thu, 12 Mar 2015 02:16:43 -0400 Subject: [PATCH] moving origin --- css/main.css | 5 +++++ js/cam/Assembler.js | 23 +++++++++++++++++++++++ js/menus/CamMenuView.js | 19 ++++++++++++++++++- js/menus/MenuWrapperView.js | 1 + 4 files changed, 47 insertions(+), 1 deletion(-) diff --git a/css/main.css b/css/main.css index 8dd5b138..e058094d 100644 --- a/css/main.css +++ b/css/main.css @@ -160,3 +160,8 @@ hr { #gcodeEditor:focus { outline-width: 0; } + +input.numberInput{ + width:22%; + display: inline; +} diff --git a/js/cam/Assembler.js b/js/cam/Assembler.js index cbe18822..96405d56 100644 --- a/js/cam/Assembler.js +++ b/js/cam/Assembler.js @@ -14,6 +14,8 @@ Assembler = Backbone.Model.extend({ rapidHeight: 12, stockHeight: 3, + origin: null, + originPosition: new THREE.Vector3(0,0,0) }, initialize: function(){ @@ -23,7 +25,28 @@ Assembler = Backbone.Model.extend({ //bind events this.listenTo(this, "change:camProcess", this._setNeedsPostProcessing); this.listenTo(dmaGlobals.appState, "change:units", this._setNeedsPostProcessing); + this.listenTo(dmaGlobals.appState, "change:currentTab", this._setOriginVisibility); + this.listenTo(this, "change:originPosition", this._moveOrigin); + + //init origin mesh + var origin = new THREE.Mesh(new THREE.SphereGeometry(dmaGlobals.lattice.get("scale")/4), new THREE.MeshBasicMaterial({color:0xff0000})); + dmaGlobals.three.sceneAdd(origin); + this.set("origin", origin); + this._setOriginVisibility(); + }, + + _setOriginVisibility: function(){ + var visible = false; + var currentTab = dmaGlobals.appState.get("currentTab"); + if (currentTab == "cam" || currentTab == "animate" || currentTab == "send") visible = true; + this.get("origin").visible = visible; + dmaGlobals.three.render(); + }, + _moveOrigin: function(){ + var position = this.get("originPosition"); + this.get("origin").position.set(position.x, position.y, position.z); + dmaGlobals.three.render(); }, _setNeedsPostProcessing: function(){ diff --git a/js/menus/CamMenuView.js b/js/menus/CamMenuView.js index 4edc02b2..6337df5a 100644 --- a/js/menus/CamMenuView.js +++ b/js/menus/CamMenuView.js @@ -20,8 +20,11 @@ CamMenuView = Backbone.View.extend({ this.assembler = options.assembler; _.bindAll(this, "render"); + _.bindAll(this, "_updateOrigin"); + //bind events this.listenTo(this.assembler, "change", this.render); this.listenTo(this.model, "change:units", this.render); + $(document).bind('keyup', {state:false}, this._updateOrigin); }, _selectCamProcess: function(e){ @@ -34,6 +37,16 @@ CamMenuView = Backbone.View.extend({ this.model.set("units", $(e.target).data("type")); }, + _updateOrigin: function(e){ + if (!$(".wcs").is(":focus")) return; + e.preventDefault(); + var newPosition = parseFloat($(e.target).val()); + if (isNaN(newPosition)) return; + var origin = this.assembler.get("originPosition"); + origin[$(e.target).data("type")] = newPosition; + this.assembler.trigger("change:originPosition"); + }, + _save: function(e){ e.preventDefault(); this.assembler.save(); @@ -41,6 +54,7 @@ CamMenuView = Backbone.View.extend({ render: function(){ if (this.model.get("currentTab") != "cam") return; + if ($(".wcs").is(":focus")) return; this.$el.html(this.template(_.extend(this.model.toJSON(), this.assembler.toJSON()))); }, @@ -54,6 +68,7 @@ CamMenuView = Backbone.View.extend({ <% }); %>\ </ul>\ </div><br/><br/>\ + <a href="#" id="saveCam" class=" btn btn-block btn-lg btn-default">Process and Save</a><br/>\ Units: \ <div class="btn-group">\ <button data-toggle="dropdown" class="btn dropdown-toggle" type="button"><%= allUnitTypes[units] %><span class="caret"></span></button>\ @@ -63,7 +78,9 @@ CamMenuView = Backbone.View.extend({ <% }); %>\ </ul>\ </div><br/><br/>\ - <a href="#" id="saveCam" class=" btn btn-block btn-lg btn-default">Process and Save</a><br/>\ + Part Zero: <input data-type="x" value="<%= originPosition.x %>" placeholder="origin X" class="form-control numberInput wcs" type="text">\ + <input data-type="y" value="<%= originPosition.y %>" placeholder="origin Y" class="form-control numberInput wcs" type="text">\ + <input data-type="z" value="<%= originPosition.z %>" placeholder="origin Z" class="form-control numberInput wcs" type="text"><br/>\ ') }); \ No newline at end of file diff --git a/js/menus/MenuWrapperView.js b/js/menus/MenuWrapperView.js index 9d09c254..ee51d2be 100644 --- a/js/menus/MenuWrapperView.js +++ b/js/menus/MenuWrapperView.js @@ -92,6 +92,7 @@ MenuWrapper = Backbone.View.extend({ var self = this; this._hide(function(){ self._populateAndShow(); + self.model.trigger("change:currentTab");//this was updated silently before }, true); }, -- GitLab