client/js/json-serializer.js
author veltr
Fri, 27 Jul 2012 19:15:32 +0200
changeset 4 f5297dde9053
parent 2 3360c3f7fb18
child 5 67085e6281e5
permissions -rw-r--r--
Can now add nodes/edges
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
     1
Rkns.Serializers.BasicJson = Rkns.Utils.inherit(Rkns.Serializers._Base);
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
     2
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
     3
Rkns.Serializers.BasicJson.prototype._init = function() {
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
     4
    this.load(this._project._opts.url);
4
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
     5
    var _this = this;
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
     6
    this.save = Rkns._.throttle(function() {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
     7
        _this._save.apply(this, Array.prototype.slice.call(arguments,0));
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
     8
    }, 2000);
1
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
     9
}
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    10
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    11
Rkns.Serializers.BasicJson.prototype.load = function(_url) {
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    12
    var _this = this;
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    13
    Rkns.$.getJSON(_url, function(_data) {
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    14
        _this.deserialize(_data);
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    15
        _this.handleCallbacks();
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    16
    });
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    17
}
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    18
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    19
Rkns.Serializers.BasicJson.prototype.deserialize = function(_serializedData) {
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    20
    if (typeof _serializedData === "string") {
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    21
        _serializedData = JSON.parse(_serializedData);
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    22
    }
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    23
    var _proj = this._project;
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    24
    _proj.title = _serializedData.title || "(untitled project)";
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    25
    if (typeof _serializedData.users === "object" && _serializedData.users) {
4
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    26
        Rkns._(_serializedData.users).each(function(_data) {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    27
            var _userData = {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    28
                id: _data.id,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    29
                title: _data.title,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    30
                uri: _data.uri,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    31
                color: _data.color
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    32
            };
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    33
            _proj.addUser(_userData);
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    34
        });
1
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    35
    }
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    36
    if (typeof _serializedData.nodes === "object" && _serializedData.nodes) {
4
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    37
        Rkns._(_serializedData.nodes).each(function(_data) {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    38
            var _nodeData = {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    39
                id: _data.id,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    40
                title: _data.title,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    41
                uri: _data.uri,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    42
                created_by: _data.created_by,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    43
                position: {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    44
                    x: _data.position.x,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    45
                    y: _data.position.y
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    46
                }
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    47
            };
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    48
            _proj.addNode(_nodeData);
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    49
        });
1
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    50
    }
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    51
    if (typeof _serializedData.edges === "object" && _serializedData.edges) {
4
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    52
        Rkns._(_serializedData.edges).each(function(_data) {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    53
            var _edgeData = {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    54
                id: _data.id,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    55
                title: _data.title,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    56
                uri: _data.uri,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    57
                from: _data.from,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    58
                to: _data.to,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    59
                created_by: _data.created_by
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    60
            };
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    61
            _proj.addEdge(_edgeData);
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    62
        });
1
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    63
    }
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    64
}
4
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    65
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    66
Rkns.Serializers.BasicJson.prototype.serialize = function() {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    67
    var _res = {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    68
        title: this._project.title,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    69
        users: this._project.users.map(function(_user) {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    70
            return {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    71
                id: _user.id,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    72
                title: _user.title,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    73
                uri: _user.uri,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    74
                color: _user.color
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    75
            }
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    76
        }),
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    77
        nodes: this._project.nodes.map(function(_node) {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    78
            return {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    79
                id: _node.id,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    80
                title: _node.title,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    81
                uri: _node.uri,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    82
                created_by: _node.created_by.id,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    83
                position: {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    84
                    x: _node.position.x,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    85
                    y: _node.position.y
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    86
                }
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    87
            }
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    88
        }),
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    89
        edges: this._project.edges.map(function(_node) {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    90
            return {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    91
                id: _node.id,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    92
                title: _node.title,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    93
                uri: _node.uri,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    94
                from: _node.from.id,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    95
                to: _node.to.id,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    96
                created_by: _node.created_by.id
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    97
            }
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    98
        })
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    99
    }
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
   100
    return _res;
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
   101
}
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
   102
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
   103
Rkns.Serializers.BasicJson.prototype._save = function() {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
   104
    var _data = this.serialize();
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
   105
    Rkns.$.post(
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
   106
        this._project._opts.url,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
   107
        _data,
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
   108
        function(_res) {
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
   109
        }
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
   110
    );
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
   111
}