diff --git a/css/main.css b/css/main.css index 24b0d487c755973214194a54309ee71e7d32eb37..f912b18d849d3696676263199ee661dded3c0c33 100644 --- a/css/main.css +++ b/css/main.css @@ -145,4 +145,3 @@ hr { border-color: #888 -moz-use-text-color #888; } - diff --git a/js/menus/Navbar.js b/js/menus/Navbar.js index adbaae9c10640c5a9364af2ab8156ce2f2a1e8ab..203c1be5916b9984cbd2c47757928ebeac827ae8 100644 --- a/js/menus/Navbar.js +++ b/js/menus/Navbar.js @@ -8,12 +8,13 @@ NavBar = Backbone.View.extend({ - el: "#globalNav", + el: "body", events: { "click #showHideMenu": "_setMenuVis", "click .menuHoverControls": "_setNavSelection", - "click #saveAsJSON": "_saveAs", + "click #saveJSON": "_save", + "click #saveAsJSON": "_saveAs", "click #importJSON": "_importJSON", "change #jsonInput": "_selectJSONFiles", }, @@ -90,11 +91,17 @@ NavBar = Backbone.View.extend({ })(); }, - _saveAs: function(e){ + _save: function(e){ e.preventDefault(); dmaGlobals.lattice.saveAsJSON(); }, + _saveAs: function(e){ + e.preventDefault(); + var fileName = $("#saveAsFileName").val(); + dmaGlobals.lattice.saveAsJSON(fileName); + }, + _uiStuff: function(){ var $logo = $("#logo"); $logo.mouseover(function(){ diff --git a/js/models/AppState.js b/js/models/AppState.js index 61830789ef3e920ef9c055bf956f3967c4a4bd90..60b3f1bd9af762392e5fa16f55428ad0bc96f9e2 100644 --- a/js/models/AppState.js +++ b/js/models/AppState.js @@ -114,11 +114,9 @@ AppState = Backbone.Model.extend({ // console.log(e.keyCode); switch(e.keyCode){ case 16://shift - e.preventDefault(); this.set("shift", state); break; case 68://d delete mode - e.preventDefault(); if (this.get("cellMode") == "cell") this.set("deleteMode", state);//only for cell mode else this.set("deleteMode", false); break; @@ -135,14 +133,14 @@ AppState = Backbone.Model.extend({ this.lattice.set("inverseMode", !this.lattice.get("inverseMode")); break; case 83://s save - e.preventDefault(); if (e.ctrlKey || e.metaKey){//command + e.preventDefault(); dmaGlobals.lattice.saveAsJSON(); } break; case 79://o open - e.preventDefault(); if (e.ctrlKey || e.metaKey){//command + e.preventDefault(); $("#jsonInput").click(); } break; diff --git a/js/models/Lattice.js b/js/models/Lattice.js index 95c04a7837654320e0aafb8e050b50edb6495d33..801b59aa31457935c38ed837c2208525c60e7044 100644 --- a/js/models/Lattice.js +++ b/js/models/Lattice.js @@ -454,10 +454,11 @@ Lattice = Backbone.Model.extend({ } }, - saveAsJSON: function(){ + saveAsJSON: function(name){ + if (!name) name = "lattice"; var data = JSON.stringify(_.omit(this.toJSON(), ["highlighter", "basePlane"])); var blob = new Blob([data], {type: "text/plain;charset=utf-8"}); - saveAs(blob, "lattice.json"); + saveAs(blob, name + ".json"); }, loadFromJSON: function(data){ diff --git a/main.html b/main.html index fffec2809014c7ed09541ee463d4d54c667414b3..34886801d46f6e99612467bc0dc29b0f5c5c043a 100644 --- a/main.html +++ b/main.html @@ -95,9 +95,10 @@ <a href="#" class="dropdown-toggle" data-toggle="dropdown">File <b class="caret"></b></a> <span class="dropdown-arrow"></span> <ul class="dropdown-menu"> + <li><a id="saveJSON" href="#">Save Lattice JSON</a></li> + <li><a data-toggle="modal" data-target="#saveAsModel" href="#">Save As...</a></li> <li><a id="importJSON" href="#">Import Lattice JSON</a></li> - <li><a id="saveAsJSON" href="#">Save Lattice JSON</a></li> - <li><a href="#">Something else here</a></li> + <li><a id="exportSTL" href="#">Export STL</a></li> <li class="divider"></li> <li><a href="#">Separated link</a></li> </ul> @@ -113,6 +114,24 @@ </nav> +<div class="modal fade" id="saveAsModel" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true"> + <div class="modal-dialog modal-sm"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> + <p class="modal-title" id="myModalLabel">Enter File Name</p> + </div> + <div class="modal-body"> + <input id="saveAsFileName" type="text" value="lattice" placeholder="Enter file name" class="form-control"> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> + <button type="button" id="saveAsJSON" class="btn btn-primary">Save</button> + </div> + </div> + </div> +</div> + <div id="menuWrapper"><div id="menuHeader"></div><div id="menuContent"></div></div> <div id="about" class="row navMenu">