diff -r 4b07ff5c2dd6 -r 45cca39b00ac client/js/json-serializer.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/js/json-serializer.js Wed Jul 25 19:36:31 2012 +0200 @@ -0,0 +1,42 @@ +Rkns.Serializers.BasicJson = Rkns.Utils.inherit(Rkns.Serializers._Base); + +Rkns.Serializers.BasicJson.prototype._init = function() { + this.load(this._project._opts.url); +} + +Rkns.Serializers.BasicJson.prototype.load = function(_url) { + var _this = this; + Rkns.$.getJSON(_url, function(_data) { + _this.deserialize(_data); + _this.handleCallbacks(); + }); +} + +Rkns.Serializers.BasicJson.prototype.deserialize = function(_serializedData) { + if (typeof _serializedData === "string") { + _serializedData = JSON.parse(_serializedData); + } + var _proj = this._project; + _proj.title = _serializedData.title || "(untitled project)"; + if (typeof _serializedData.users === "object" && _serializedData.users) { + _proj.users.addElements( + Rkns._(_serializedData.users).map(function(_userData) { + return new Rkns.Model.User(_proj, _userData); + }) + ); + } + if (typeof _serializedData.nodes === "object" && _serializedData.nodes) { + _proj.nodes.addElements( + Rkns._(_serializedData.nodes).map(function(_nodeData) { + return new Rkns.Model.Node(_proj, _nodeData); + }) + ); + } + if (typeof _serializedData.edges === "object" && _serializedData.edges) { + _proj.edges.addElements( + Rkns._(_serializedData.edges).map(function(_edgeData) { + return new Rkns.Model.Edge(_proj, _edgeData); + }) + ); + } +}