From ae26f99db1450c0da9690da9217e4b6c9b21c6ea Mon Sep 17 00:00:00 2001
From: Amanda Ghassaei <amandaghassaei@gmail.com>
Date: Mon, 25 May 2015 13:28:55 -0700
Subject: [PATCH] import menu

---
 ...ngCrossection.stl => wingCrossSection.stl} | Bin
 js/menus/ImportMenuView.js                    |  83 +++++-------------
 js/menus/LatticeMenuView.js                   |   9 +-
 js/menus/MenuWrapperView.js                   |   8 +-
 4 files changed, 30 insertions(+), 70 deletions(-)
 rename assets/stls/meshes-airbus/{wingCrossection.stl => wingCrossSection.stl} (100%)

diff --git a/assets/stls/meshes-airbus/wingCrossection.stl b/assets/stls/meshes-airbus/wingCrossSection.stl
similarity index 100%
rename from assets/stls/meshes-airbus/wingCrossection.stl
rename to assets/stls/meshes-airbus/wingCrossSection.stl
diff --git a/js/menus/ImportMenuView.js b/js/menus/ImportMenuView.js
index 131e5222..07405167 100644
--- a/js/menus/ImportMenuView.js
+++ b/js/menus/ImportMenuView.js
@@ -8,28 +8,35 @@ ImportMenuView = Backbone.View.extend({
     el: "#menuContent",
 
     events: {
-        "change #uploadMesh":               "_uploadMesh",
-        "click .selectMesh":                "_selectMesh",
+        "change #importMenuUploadSTL":      "_uploadSTL",
+        "click .importMenuSelectMesh":      "_selectMesh",
+        "click #importMenuSelectWall":      "_buildWall",
         "fileselect .btn-file :file":       "_readDataURL",
         "click #removeFillGeo":             "_removeMesh",
-        "click #selectWall":                "_buildWall",
+
         "click #doSubtractGeo":             "_subtractGeo",
-        "click #doFillGeo":                 "_fillGeo",
-        "click .btn-clearCells":            "_clearCells"
+        "click #doFillGeo":                 "_fillGeo"
     },
 
     initialize: function(){
 
         this.fillGeometry = new FillGeometry();
-
         this.listenTo(this.fillGeometry, "change", this.render);
     },
 
+    _uploadSTL: function(e){//select a mesh to upload
+        e.preventDefault();
+        var input = $(e.target),
+        numFiles = input.get(0).files ? input.get(0).files.length : 1,
+        label = input.val().replace(/\\/g, '/').replace(/.*\//, '');
+        input.trigger('fileselect', [numFiles, label, input.get(0).files]);
+        input.val("");
+    },
+
     _selectMesh: function(e){//select mesh from dropdown list
         e.preventDefault();
         var filename = $(e.target).data("file");
-        this._loadMeshFromURL('assets/stls/' + filename);
-        this.fillGeometry.set("filename", filename.split('/')[1]);
+        this._loadMeshFromURL('assets/stls/' + filename, filename.split('/')[1]);
     },
 
     _buildWall: function(e){
@@ -37,15 +44,6 @@ ImportMenuView = Backbone.View.extend({
         globals.lattice.addCellsInRange({min:{x:-5,y:-5,z:0}, max:{x:5,y:5,z:3}});
     },
 
-    _uploadMesh: function(e){//select a mesh to upload
-        e.preventDefault();
-        var input = $(e.target),
-        numFiles = input.get(0).files ? input.get(0).files.length : 1,
-        label = input.val().replace(/\\/g, '/').replace(/.*\//, '');
-        input.trigger('fileselect', [numFiles, label, input.get(0).files]);
-        input.val("");
-    },
-
     _readDataURL: function(event, numFiles, filename, files){
         if (files.length>1) console.warn("too many files selected");
         var reader = new FileReader();
@@ -53,17 +51,17 @@ ImportMenuView = Backbone.View.extend({
         var self = this;
         reader.onload = (function() {
         return function(e) {
-            self._loadMeshFromURL(e.target.result);
-            self.fillGeometry.set("filename", filename);
+            self._loadMeshFromURL(e.target.result, filename);
         }
         })();
     },
 
-    _loadMeshFromURL: function(url){
+    _loadMeshFromURL: function(url, filename){
         var self = this;
         var loader = new THREE.STLLoader();
   	    loader.load(url, function(geometry){
             self.fillGeometry.buildNewMesh(geometry);
+            self.fillGeometry.set("filename", filename);
         });
     },
 
@@ -82,49 +80,12 @@ ImportMenuView = Backbone.View.extend({
         this.fillGeometry.removeMesh();
     },
 
-    _clearCells: function(e){
-        e.preventDefault();
-        globals.lattice.clearCells();
-    },
-
     render: function(){
         if (this.model.changedAttributes()["currentNav"]) return;
         if (this.model.get("currentTab") != "import") return;
         this.$el.html(this.template(_.extend(this.model.toJSON(), this.fillGeometry.toJSON())));
     },
 
-//    makeDimensionString: function(){
-//        var bounds = this.fillGeometry.get("boundingBoxHelper").box;
-//        return (bounds.max.x - bounds.min.x).toFixed(1) + " x " +
-//            (bounds.max.y - bounds.min.y).toFixed(1) + " x " + (bounds.max.z - bounds.min.z).toFixed(1);
-//    },
-//
-//    getScale: function(){
-//        var scale = this.fillGeometry.get("scale");
-//        var dimensions = {};
-//        dimensions.xScale = scale[0];
-//        dimensions.yScale = scale[1];
-//        dimensions.zScale = scale[2];
-//        dimensions.dimensions = this.makeDimensionString();
-//        return dimensions;
-//    },
-//
-//    scale: function(e){
-//
-//        this.fillGeometry.scale([this.getDimScale($(".xScale").val()), this.getDimScale($(".yScale").val()), this.getDimScale($(".zScale").val())]);
-//    },
-//
-//    getDimScale: function(val){
-//        if (val == "") return null;
-//        return parseFloat(val);
-//    },
-//
-//    rotate: function(e){
-//        e.preventDefault();
-//        var axis = $(e.target).data("axis");
-//        this.fillGeometry.rotate(axis);
-//    },
-
     template: _.template('\
         Filename: &nbsp;&nbsp;<%= filename %><br/><br/>\
         <% if (mesh){ %>\
@@ -133,16 +94,16 @@ ImportMenuView = Backbone.View.extend({
         <a href="#" id="removeFillGeo" class=" btn btn-block btn-lg btn-default">Remove Mesh</a><br/>\
         <hr>\
         <% } %>\
-        <a href="#" class=" btn btn-block btn-lg btn-default btn-clearCells">Clear All Cells</a><br/><br/>\
+        <a href="#" class=" btn btn-block btn-lg btn-default clearCells">Clear All Cells</a><br/><br/>\
         <br/><span class="btn btn-default btn-lg btn-file fullWidth">\
-            Upload STL<input id="uploadMesh" type="file">\
+            Upload STL<input id="importMenuUploadSTL" type="file">\
        </span><br/>\
        <div class="text-center">OR</div>\
         <div class="btn-group fullWidth">\
             <button data-toggle="dropdown" class="btn btn-lg btn-default dropdown-toggle fullWidth" type="button">Select Model <span class="caret"></span></button>\
             <ul role="menu" class="dropdown-menu">\
-              <li><a class="selectMesh" data-file="meshes-airbus/wingCrossection.stl" href="#">Wing</a></li>\
-              <li><a id="selectWall" href="#">Block</a></li>\
+              <li><a class="importMenuSelectMesh" data-file="meshes-airbus/wingCrossSection.stl" href="#">Wing</a></li>\
+              <li><a id="importMenuSelectWall" href="#">Block</a></li>\
             </ul>\
         </div><!-- /btn-group -->\
         ')
diff --git a/js/menus/LatticeMenuView.js b/js/menus/LatticeMenuView.js
index 2a154bbf..18c8684d 100644
--- a/js/menus/LatticeMenuView.js
+++ b/js/menus/LatticeMenuView.js
@@ -10,8 +10,6 @@ LatticeMenuView = Backbone.View.extend({
     el: "#menuContent",
 
     events: {
-        "click #latticeMenuClearCells":                 "_clearCells",
-
         "change #latticeScale":                         "_changeScale",
         "slide #latticeMenuScaleSlider":                "_sliderDidSlide",
         "slideStop #latticeMenuScaleSlider":            "_changeScaleSlider"
@@ -25,11 +23,6 @@ LatticeMenuView = Backbone.View.extend({
         this.listenTo(globals.lattice, "change", this.render);
     },
 
-    _clearCells: function(e){
-        e.preventDefault();
-        globals.lattice.clearCells();
-    },
-
     _changeScale: function(e){
         e.preventDefault();
         var val = parseFloat($(e.target).val());
@@ -119,7 +112,7 @@ LatticeMenuView = Backbone.View.extend({
             </div><br/><br/>\
         Num Cells:&nbsp;&nbsp;<%= numCells %><br/><br/>\
         <br/>\
-        <a href="#" id="latticeMenuClearCells" class=" btn btn-block btn-lg btn-default">Clear All Cells</a><br/>\
+        <a href="#" class="clearCells btn btn-block btn-lg btn-default">Clear All Cells</a><br/>\
         ')
 
 });
diff --git a/js/menus/MenuWrapperView.js b/js/menus/MenuWrapperView.js
index ebf0eca5..89527038 100644
--- a/js/menus/MenuWrapperView.js
+++ b/js/menus/MenuWrapperView.js
@@ -10,6 +10,7 @@ MenuWrapper = Backbone.View.extend({
     events: {
         "click .menuWrapperTab>a":                     "_tabWasSelected",
         "click .dropdownSelector":                     "_makeDropdownSelection",
+        "click .clearCells":                           "_clearCells"
     },
 
     initialize: function(){
@@ -20,7 +21,6 @@ MenuWrapper = Backbone.View.extend({
         var lattice = globals.lattice;
 
         //init all tab view controllers
-        this.importMenu = new ImportMenuView({model:this.model});
         this.sketchMenu = new SketchMenuView({model:lattice, appState:this.model});
         this.partMenu = new PartMenuView({model:this.model, lattice:lattice});
         this.scriptMenu = new ScriptMenuView({model:this.model});
@@ -98,6 +98,11 @@ MenuWrapper = Backbone.View.extend({
         if ($target.hasClass("lattice")) globals.lattice.set(property, value);
     },
 
+    _clearCells: function(e){
+        e.preventDefault();
+        globals.lattice.clearCells();
+    },
+
 
 
     _tabWasSelected: function(e){
@@ -127,6 +132,7 @@ MenuWrapper = Backbone.View.extend({
             if (!this.latticeMenu) this.latticeMenu = new LatticeMenuView({model:this.model});
             this.latticeMenu.render();
         } else if (tabName == "import"){
+            if (!this.importMenu) this.importMenu = new ImportMenuView({model:this.model});
             this.importMenu.render();
         } else if (tabName == "sketch"){
             this.sketchMenu.render();
-- 
GitLab