diff --git a/raphael.json.js b/raphael.json.js index 1f7b8cd..a39e665 100644 --- a/raphael.json.js +++ b/raphael.json.js @@ -4,63 +4,59 @@ * */ -(function() { - Raphael.fn.toJSON = function(callback) { - var - data, - elements = new Array, - paper = this - ; - - for ( var el = paper.bottom; el != null; el = el.next ) { - data = callback ? callback(el, new Object) : new Object; - - if ( data ) elements.push({ - data: data, - type: el.type, - attrs: el.attrs, - transform: el.matrix.toTransformString(), - id: el.id - }); - } - - var cache = []; - var o = JSON.stringify(elements, function (key, value) { - //http://stackoverflow.com/a/11616993/400048 - if (typeof value === 'object' && value !== null) { - if (cache.indexOf(value) !== -1) { - // Circular reference found, discard key - return; - } - // Store value in our collection - cache.push(value); - } - return value; - }); - cache = null; - return o; - } - - Raphael.fn.fromJSON = function(json, callback) { - var - el, - paper = this - ; - - if ( typeof json === 'string' ) json = JSON.parse(json); - - for ( var i in json ) { - if ( json.hasOwnProperty(i) ) { - el = paper[json[i].type]() - .attr(json[i].attrs) - .transform(json[i].transform); - - el.id = json[i].id; - - if ( callback ) el = callback(el, json[i].data); - - if ( el ) paper.set().push(el); - } - } - } +(function () { + Raphael.fn.toJSON = function (callback) { + var data, elements = new Array, paper = this ; + + for (var el = paper.bottom; el != null; el = el.next) { + data = callback ? callback(el, new Object) : new Object; + + if (data) elements.push({ + data: data, + type: el.type, + attrs: el.attrs, +// transform: el.matrix.toTransformString(), + transform: el.transform().toString(), + id: el.id + }); + } + + var cache = []; + var o = JSON.stringify(elements, function (key, value) { + //http://stackoverflow.com/a/11616993/400048 + if (typeof value === 'object' && value !== null) { + if (cache.indexOf(value) !== -1) { + // Circular reference found, discard key + return; + } + // Store value in our collection + cache.push(value); + } + return value; + }); + cache = null; + return o; + } + + Raphael.fn.fromJSON = function (json, callback) { + var el, paper = this ; + + if (typeof json === 'string') json = JSON.parse(json); + + for (var i in json) { + if (json.hasOwnProperty(i)) { + + el = paper[json[i].type]().attr(json[i].attrs); + if (json[i].transform != null) { + el.transform(json[i].transform); + } + +// el.id = json[i].id; + + if (callback) el = callback(el, json[i].data); + +// if ( el ) paper.set().push(el); + } + } + } })();