diff --git a/css/main.css b/css/main.css index 158ad82eeb6d93d995a3bea4cef7697cca35caf4..c5697fb66e883317c46589da9bc16d008a14f91d 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 c2c1f35364b4790218bb96816ddf74de26af8626..51d27b01bfeeb4d90da58482dbdaebf3e5478748 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 625095bc5b74f9c50b462298d0235518fe6c2fdf..a73d0a021d2248db84101415d5fa42fb5739df8a 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 95188c55324685ab7d49d95b5c8bb2278f6b9538..0790a08a793b70304ab81c04cf02668dbb88f265 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