From c44d298721ff91d763aa488faaba6f4cc011c086 Mon Sep 17 00:00:00 2001 From: Tarjei Huse Date: Fri, 17 Feb 2012 14:37:36 +0100 Subject: [PATCH] Add more documentation --- ConfigParameters.md | 14 ++++++- ImplementingPersistence.md | 86 ++++++++++++++++++++++++++++++++++++++ README.md | 7 ++++ 3 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 ImplementingPersistence.md diff --git a/ConfigParameters.md b/ConfigParameters.md index 612eb6b8..78964e8e 100644 --- a/ConfigParameters.md +++ b/ConfigParameters.md @@ -27,8 +27,20 @@ The options are: * readOnly: Set to true if the viewer should not be able to edit the map. * zoom: how much the map should be zoomed. * size: size of the map area. -* viewport +* viewPort: set this to the same as the size * persistenceManager: Classname of a class that extends mindplot.PersistenceManager (see ImplementingPersistence for more info.) * mapId: The id of the map * container: The id of the containing div. +Viewport and size should be set like this:: + + var containerSize = { + height: parseInt(screen.height), + width: parseInt(screen.width) + }; + + var viewPort = { + height: parseInt(window.innerHeight - 70), // Footer and Header + width: parseInt(window.innerWidth) + }; + diff --git a/ImplementingPersistence.md b/ImplementingPersistence.md new file mode 100644 index 00000000..0a0e45dc --- /dev/null +++ b/ImplementingPersistence.md @@ -0,0 +1,86 @@ +# Implementing custom storage + +To implement a custom backend, you need to create your own implementation of the mindplot.PersistenceManager class. + +Here is an example skeleton:: + +function createStorageManager(mindplot) { + mindplot.RestStorageManager = new Class({ + Extends:mindplot.PersistenceManager, + initialize: function(url) { + this.parent(); + this.backendUrl = url; + }, + + saveMapXml : function(mapId, mapXml, pref, saveHistory, events) { + var url = this.backendUrl + mapId; + var xmlRequest = new Request({ + url: url, + method: 'post', + async: false, + onSuccess: function(responseText) { + events.onSuccess(); + }, + onError: function (text, error) { + console.log("Error saving mindmap to: " + url, text, error); + events.onError(); + } + }); + xmlRequest.send(); + }, + + loadMapDom : function(mapId) { + var xmlRequest = new Request({ + url: this.backendUrl + mapId, + method: 'get', + async: false, + onSuccess: function(responseText) { + xml = responseText; + } + }); + xmlRequest.send(); + + // If I could not load it from a file, hard code one. + if (xml == null) { + throw "Map could not be loaded"; + } + return core.Utils.createDocumentFromText(xml); + } + + } + ); + return new mindplot.RestStorageManager(url); +} + + +In your script for loading the mindmap you add a call to the callback into the loadcomplete method:: + + $(document).addEvent('loadcomplete', function(resource) { + //Asset.javascript("{{ asset('bundles/fpgadmin/js/FpgMindmapPersistence.js')}}"); + // Options has been defined in by a external ile ? + var options = { + 'persistenceManager' : createStorageManager(mindplot, "http://localhost/my/rest/interface"); + viewPort: { + height: parseInt(window.innerHeight - 70), // Footer and Header + width: parseInt(window.innerWidth) + }, + size : { + height: parseInt(screen.height), + width: parseInt(screen.width) + }, + "readOnly":false, + "zoom":1.3, + "container":"mindplot" + "mapId" : "myMapId" + }; + var designer = buildDesigner(options); + var persistence = mindplot.PersistenceManager.getInstance(); + var mindmap; + try { + mindmap = persistence.load(mapId); + } catch(e) { + // If the map could not be loaded, create a new empty map... + mindmap = mindplot.model.Mindmap.buildEmpty(mapId); + } + designer.loadMap(mindmap); + }); diff --git a/README.md b/README.md index 6cb2d621..1b9d08a2 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,13 @@ This will start the application on the URL: http://localhost:8080/wise-webapp/. User: test@wisemapping.org + +## Running the JS only version + +Start by creating the .zip file: + +`mvn assembly:assembly -Dmaven.test.skip=true` + ## Author * Pablo Luna