From 73c5b8291fc5eec3eac1b92361695e9e148dd798 Mon Sep 17 00:00:00 2001 From: Amanda Ghassaei <amandaghassaei@gmail.com> Date: Sat, 7 Mar 2015 12:12:30 -0500 Subject: [PATCH] save as modal --- css/main.css | 1 - js/menus/Navbar.js | 13 ++++++++++--- js/models/AppState.js | 6 ++---- js/models/Lattice.js | 5 +++-- main.html | 23 +++++++++++++++++++++-- 5 files changed, 36 insertions(+), 12 deletions(-) diff --git a/css/main.css b/css/main.css index 24b0d487..f912b18d 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 adbaae9c..203c1be5 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 61830789..60b3f1bd 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 95c04a78..801b59aa 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 fffec280..34886801 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"> -- GitLab