client/js/renderer/scene.js
changeset 297 7de2652f7ee8
parent 293 fba23fde14ba
child 298 2f35c2ae7de8
--- a/client/js/renderer/scene.js	Fri May 16 17:36:21 2014 +0200
+++ b/client/js/renderer/scene.js	Sun May 18 10:31:12 2014 +0200
@@ -1,5 +1,5 @@
 
-define(['jquery', 'underscore', 'requtils', 'renderer/miniframe'], function ($, _, requtils, MiniFrame) {
+define(['jquery', 'underscore', 'filesaver', 'requtils', 'renderer/miniframe'], function ($, _, filesaver, requtils, MiniFrame) {
     'use strict';
 
     var Utils = requtils.getUtils();
@@ -255,6 +255,7 @@
         bindClick(".Rk-AddEdge-Button", "addEdgeBtn");
         bindClick(".Rk-Save-Button", "save");
         bindClick(".Rk-Open-Button", "open");
+        bindClick(".Rk-Export-Button", "exportProject");
         this.$.find(".Rk-Bookmarklet-Button")
           /*jshint scripturl:true */
           .attr("href","javascript:" + Utils._BOOKMARKLET_CODE(_renkan))
@@ -455,6 +456,7 @@
                 '<div class="Rk-TopBar-Tooltip-Contents"><%-translate("Add Node")%></div></div></div><% } %>' +
                 '<% if (options.show_addedge_button) { %><div class="Rk-TopBar-Separator"></div><div class="Rk-TopBar-Button Rk-AddEdge-Button"><div class="Rk-TopBar-Tooltip">' +
                 '<div class="Rk-TopBar-Tooltip-Contents"><%-translate("Add Edge")%></div></div></div><% } %>' +
+                '<% if (options.show_export_button) { %><div class="Rk-TopBar-Separator"></div><div class="Rk-TopBar-Button Rk-Export-Button"><div class="Rk-TopBar-Tooltip"><div class="Rk-TopBar-Tooltip-Contents"><%-translate("Download Project")%></div></div></div><% } %>' +
                 '<% if (options.show_save_button) { %><div class="Rk-TopBar-Separator"></div><div class="Rk-TopBar-Button Rk-Save-Button"><div class="Rk-TopBar-Tooltip"><div class="Rk-TopBar-Tooltip-Contents"> </div></div></div><% } %>' +
                 '<% if (options.show_open_button) { %><div class="Rk-TopBar-Separator"></div><div class="Rk-TopBar-Button Rk-Open-Button"><div class="Rk-TopBar-Tooltip"><div class="Rk-TopBar-Tooltip-Contents"><%-translate("Open Project")%></div></div></div><% } %>' +
                 '<% if (options.show_bookmarklet) { %><div class="Rk-TopBar-Separator"></div><a class="Rk-TopBar-Button Rk-Bookmarklet-Button" href="#"><div class="Rk-TopBar-Tooltip"><div class="Rk-TopBar-Tooltip-Contents">' +
@@ -1176,6 +1178,33 @@
             }
             return false;
         },
+        exportProject: function() {
+          var projectJSON = this.renkan.project.toJSON(),
+              downloadLink = document.createElement("a"),
+              projectId = projectJSON.id,
+              fileNameToSaveAs = projectId + ".json";
+
+          // clean ids
+          delete projectJSON.id;
+          _.each(projectJSON.nodes, function(e,i,l) {
+            delete e._id;
+            delete e.id;
+          });
+          _.each(projectJSON.edges, function(e,i,l) {
+            delete e._id;
+            delete e.id;
+          });
+          _.each(projectJSON.views, function(e,i,l) {
+            delete e._id;
+            delete e.id;
+          });
+          projectJSON.users = [];
+
+          var projectJSONStr = JSON.stringify(projectJSON, null, 2);
+          var blob = new Blob([projectJSONStr], {type: "application/json;charset=utf-8"});
+          filesaver(blob,fileNameToSaveAs);
+
+        },
         foldBins: function() {
             var foldBinsButton = this.$.find(".Rk-Fold-Bins"),
             bins = this.renkan.$.find(".Rk-Bins");