From 1e8a0614be1f51fc9b275e8a2c316fca6a12cf65 Mon Sep 17 00:00:00 2001
From: Amanda Ghassaei <amandaghassaei@gmail.com>
Date: Tue, 27 Oct 2015 01:14:31 -0400
Subject: [PATCH] save script

---
 css/main.css                |  9 +++++++++
 index.html                  |  5 ++++-
 js/menus/otherUI/Console.js | 32 +++++++++++++++++++++++++++-----
 js/models/FileSaver.js      |  7 ++++++-
 4 files changed, 46 insertions(+), 7 deletions(-)

diff --git a/css/main.css b/css/main.css
index 158ad82e..c5697fb6 100644
--- a/css/main.css
+++ b/css/main.css
@@ -596,4 +596,13 @@ label {
 
 .consoleWarning {
     color: orange;
+}
+.consoleComment {
+    color: darkgray;
+}
+
+#saveConsole {
+    height: 42px;
+    border-bottom-width: 0;
+    border-radius: 0;
 }
\ No newline at end of file
diff --git a/index.html b/index.html
index c2c1f353..51d27b01 100644
--- a/index.html
+++ b/index.html
@@ -131,7 +131,10 @@
 <div id="console">
     <div>
         <div id="consoleOutput"></div>
-        <input id="consoleInput" value="" placeholder="Type Command" class="form-control" type="text">
+        <div class="input-group">
+            <input id="consoleInput" value="" aria-describedby="consoleSaveScript" placeholder="Type Command" class="form-control" type="text">
+            <span class="input-group-addon btn btn-defualt" id="consoleSaveScript">Save Script</span>
+        </div>
     </div>
 </div>
 <div id="menuWrapper"><div id="menuHeader"></div><div id="menuContent"></div></div>
diff --git a/js/menus/otherUI/Console.js b/js/menus/otherUI/Console.js
index 625095bc..a73d0a02 100644
--- a/js/menus/otherUI/Console.js
+++ b/js/menus/otherUI/Console.js
@@ -10,7 +10,7 @@ define(['jquery', 'underscore', 'backbone', 'appState'], function($, _, Backbone
         el: "#console",
 
         events: {
-
+            "click #consoleSaveScript":                     "_saveScript"
         },
 
         initialize: function(){
@@ -42,12 +42,16 @@ define(['jquery', 'underscore', 'backbone', 'appState'], function($, _, Backbone
             return appState.get("consoleIsVisible");
         },
 
-        write: function(string){
-            this._writeOutput(string + "<br/>");
+        write: function(string){//for commands
+            this._writeOutput(string + "<br>");
+        },
+
+        log: function(string){//for comments
+            this._writeOutput("<span class='consoleComment'>" + string + "</span><br>");
         },
 
         warn: function(string){
-            this._writeOutput("<span class='consoleWarning'>" + string + "</span><br/>");
+            this._writeOutput("<span class='consoleWarning'>" + string + "</span><br>");
         },
 
         error: function(string){
@@ -89,7 +93,25 @@ define(['jquery', 'underscore', 'backbone', 'appState'], function($, _, Backbone
 //            var command = $input.val();
             var command = "nice try, this doesn't work yet :)";
             $input.val("");
-            this.write(command);
+            this.log(command);
+        },
+
+        _saveScript: function(e){
+            e.preventDefault();
+            var self = this;
+            require(['fileSaver'], function(fileSaver){
+                fileSaver.saveConsoleScript(self.getConsoleData());
+            })
+        },
+
+        getConsoleData: function(){
+            var data = $("#consoleOutput").html().split("<br>");
+            data.pop();//last line is ""
+            var commands = []
+            _.each(data, function(line, index){
+                if (line.substr(0,5) != "<span") commands.push(line);
+            });
+            return commands.join('\n');
         }
 
     });
diff --git a/js/models/FileSaver.js b/js/models/FileSaver.js
index 95188c55..0790a08a 100644
--- a/js/models/FileSaver.js
+++ b/js/models/FileSaver.js
@@ -140,6 +140,10 @@ define(['underscore', 'fileSaverLib', 'lattice', 'materials', 'ribbon', 'menuWra
         });
     }
 
+    function saveConsoleScript(data){
+        saveData(data, "script", "js");
+    }
+
 
     return {//return public methods
 //        save: save,
@@ -150,6 +154,7 @@ define(['underscore', 'fileSaverLib', 'lattice', 'materials', 'ribbon', 'menuWra
 //        saveAssembler: saveAssembler,
         loadFile: loadFile,
         saveSequences: saveSequences,
-        saveSTL: saveSTL
+        saveSTL: saveSTL,
+        saveConsoleScript: saveConsoleScript
     }
 });
\ No newline at end of file
-- 
GitLab