From 2f12e7c75191307904b442a9dad64ccc2ad12d6f Mon Sep 17 00:00:00 2001
From: amandaghassaei <amandaghassaei@gmail.com>
Date: Sat, 14 Mar 2015 04:09:49 -0400
Subject: [PATCH] units in lattice

---
 js/cam/Assembler.js         | 4 ++--
 js/cam/GCodeExporter.js     | 3 ++-
 js/cam/ShopbotExporter.js   | 2 +-
 js/menus/CamMenuView.js     | 6 +++---
 js/menus/LatticeMenuView.js | 3 +--
 js/models/AppState.js       | 2 +-
 js/models/Lattice.js        | 7 ++++++-
 7 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/js/cam/Assembler.js b/js/cam/Assembler.js
index 5242d67a..a0329a55 100644
--- a/js/cam/Assembler.js
+++ b/js/cam/Assembler.js
@@ -32,7 +32,6 @@ Assembler = Backbone.Model.extend({
         this.listenTo(dmaGlobals.appState, "change:currentTab", this._setCAMVisibility);
         this.listenTo(this, "change:originPosition", this._moveOrigin);
         this.listenTo(this, "change:stockPosition", this._moveStock);
-        this.listenTo(dmaGlobals.appState, "change:units", this._setNeedsPostProcessing);
         this.listenTo(this,
                 "change:originPosition " +
                 "change:stockPosition " +
@@ -43,6 +42,7 @@ Assembler = Backbone.Model.extend({
             this._setNeedsPostProcessing);
         this.listenTo(dmaGlobals.lattice,
                 "change:numCells " +
+                "change:units " +
                 "change:scale " +
                 "change:cellType " +
                 "change:connectionType",
@@ -133,7 +133,7 @@ Assembler = Backbone.Model.extend({
 
         var wcs = this.get("originPosition");
         var stockPosition = this.get("stockPosition");
-        dmaGlobals.lattice.rasterCells(this._getOrder(this.get("camStrategy"), function(cell){
+        dmaGlobals.lattice.rasterCells(this._getOrder(this.get("camStrategy")), function(cell){
             if (!cell) return;
 
             data += exporter.rapidXY(stockPosition.x-wcs.x, stockPosition.y-wcs.y);
diff --git a/js/cam/GCodeExporter.js b/js/cam/GCodeExporter.js
index 64ba054f..7d544bf7 100644
--- a/js/cam/GCodeExporter.js
+++ b/js/cam/GCodeExporter.js
@@ -7,7 +7,7 @@ function GCodeExporter() {
 
 GCodeExporter.prototype.makeHeader = function(){
     var data = "";
-    if (dmaGlobals.appState.get("units") == "inches") data += this.addLine("G20", [], "units inches");
+    if (dmaGlobals.lattice.get("units") == "inches") data += this.addLine("G20", [], "units inches");
     else data += this.addLine("G21", [], "units mm");
     data += this.addLine("G90", [], "absolute positioning");
     data += this.addLine("G54", [], "work offset");
@@ -31,6 +31,7 @@ GCodeExporter.prototype.addLine = function(command, params, comment){
         if (!param) return;
         if (isNaN(parseFloat(param))) {
             data += param + " ";
+            return;
         }
         data += param.toFixed(3) + " ";
     });
diff --git a/js/cam/ShopbotExporter.js b/js/cam/ShopbotExporter.js
index 4fe28e78..a2d26f5e 100644
--- a/js/cam/ShopbotExporter.js
+++ b/js/cam/ShopbotExporter.js
@@ -27,7 +27,7 @@ ShopbotExporter.prototype.addLine = function(command, params, comment){
             data += param + ", ";
             return;
         }
-        if (dmaGlobals.appState.get("units") == "mm") param = self.convertToInches(param);//all shopbot stuff must be in inches
+        if (dmaGlobals.lattice.get("units") == "mm") param = self.convertToInches(param);//all shopbot stuff must be in inches
         data += param.toFixed(3) + ", ";
     });
     if (comment) data += "'" +comment;
diff --git a/js/menus/CamMenuView.js b/js/menus/CamMenuView.js
index be447d49..a115d993 100644
--- a/js/menus/CamMenuView.js
+++ b/js/menus/CamMenuView.js
@@ -23,7 +23,7 @@ CamMenuView = Backbone.View.extend({
         _.bindAll(this, "_onKeyup");
         //bind events
         this.listenTo(this.assembler, "change", this.render);
-        this.listenTo(this.model, "change:units", this.render);
+        this.listenTo(this.lattice, "change:units", this.render);
         $(document).bind('keyup', {state:false}, this._onKeyup);
     },
 
@@ -34,7 +34,7 @@ CamMenuView = Backbone.View.extend({
 
     _changeUnits: function(e){
         e.preventDefault();
-        this.model.set("units", $(e.target).data("type"));
+        this.lattice.set("units", $(e.target).data("type"));
     },
 
     _onKeyup: function(e){
@@ -61,7 +61,7 @@ CamMenuView = Backbone.View.extend({
     render: function(){
         if (this.model.get("currentTab") != "cam") return;
         if ($("input").is(":focus")) return;
-        this.$el.html(this.template(_.extend(this.model.toJSON(), this.assembler.toJSON())));
+        this.$el.html(this.template(_.extend(this.model.toJSON(), this.assembler.toJSON(), this.lattice.toJSON())));
     },
 
     template: _.template('\
diff --git a/js/menus/LatticeMenuView.js b/js/menus/LatticeMenuView.js
index 87a49017..9c5bf375 100644
--- a/js/menus/LatticeMenuView.js
+++ b/js/menus/LatticeMenuView.js
@@ -28,7 +28,6 @@ LatticeMenuView = Backbone.View.extend({
 
         //bind events
         this.listenTo(this.lattice, "change", this.render);
-        this.listenTo(this.model, "change:units", this.render);
     },
 
     _clearCells: function(e){
@@ -45,7 +44,7 @@ LatticeMenuView = Backbone.View.extend({
 
     _changeUnits: function(e){
         e.preventDefault();
-        this.model.set("units", $(e.target).data("type"));
+        this.lattice.set("units", $(e.target).data("type"));
     },
 
     _sliderDidSlide: function(e){
diff --git a/js/models/AppState.js b/js/models/AppState.js
index 80bbdfe9..5cad69bd 100644
--- a/js/models/AppState.js
+++ b/js/models/AppState.js
@@ -142,7 +142,6 @@ AppState = Backbone.Model.extend({
             mm: "mm",
             inches: "Inches"
         },
-        units: "mm",
 
         //key bindings
         shift: false,
@@ -238,6 +237,7 @@ AppState = Backbone.Model.extend({
                 this.set("shift", state);
                 break;
             case 68://d delete mode
+                console.log(state);
                 if (dmaGlobals.lattice.get("cellMode") == "cell") this.set("deleteMode", state);//only for cell mode
                 else this.set("deleteMode", false);
                 break;
diff --git a/js/models/Lattice.js b/js/models/Lattice.js
index 6b19e6a3..94c7d22e 100644
--- a/js/models/Lattice.js
+++ b/js/models/Lattice.js
@@ -7,6 +7,8 @@ Lattice = Backbone.Model.extend({
 
     defaults: {
 
+        units: "mm",
+
         nodes: [],
         cells: [[[null]]],//3D matrix containing all cells and null, dynamic size
         cellsMin: {x:0, y:0, z:0},//min position of cells matrix
@@ -503,7 +505,10 @@ Lattice = Backbone.Model.extend({
 
     saveJSON: function(name){
         if (!name) name = "lattice";
-        var data = JSON.stringify(_.omit(this.toJSON(), ["highlighter", "basePlane"]));
+        var data = JSON.stringify({
+            lattice:_.omit(this.toJSON(), ["highlighter", "basePlane"]),
+            assembler: _.omit(dmaGlobals.assembler.toJSON(), ["origin", "stock"])
+        });
         var blob = new Blob([data], {type: "text/plain;charset=utf-8"});
         saveAs(blob, name + ".json");
     },
-- 
GitLab