client/js/full-json.js
author veltr
Tue, 21 Aug 2012 12:46:11 +0200
changeset 23 70c8af9b44ec
parent 20 bd58970ffd16
child 24 121a24be9da4
permissions -rw-r--r--
Rebased Rendering on Backbone Model
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
20
bd58970ffd16 Refactoring to better fit the MVVM pattern
veltr
parents: 14
diff changeset
     1
/* Saves the Full JSON at each modification */
bd58970ffd16 Refactoring to better fit the MVVM pattern
veltr
parents: 14
diff changeset
     2
23
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
     3
Rkns.jsonIO = function(_renkan, _opts) {
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
     4
    var _proj = _renkan.project;
20
bd58970ffd16 Refactoring to better fit the MVVM pattern
veltr
parents: 14
diff changeset
     5
    if (typeof _opts.http_method == "undefined") {
bd58970ffd16 Refactoring to better fit the MVVM pattern
veltr
parents: 14
diff changeset
     6
        _opts.http_method = 'PUT';
bd58970ffd16 Refactoring to better fit the MVVM pattern
veltr
parents: 14
diff changeset
     7
    }
23
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
     8
    var _load = function() {
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
     9
        Rkns.$.getJSON(_opts.url, function(_data) {
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    10
            _proj.get("users").add(_data.users);
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    11
            Rkns._(_data.nodes).each(function(_item) {
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    12
                _proj.addNode(_item);
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    13
            });
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    14
            Rkns._(_data.edges).each(function(_item) {
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    15
                _proj.addEdge(_item);
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    16
            });
4
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    17
        });
1
45cca39b00ac First rendering tests
veltr
parents:
diff changeset
    18
    }
23
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    19
    var _save = function() {
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    20
        var _data = {
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    21
            users: _proj.get("users").map(function(_item) {
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    22
                return {
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    23
                    id: _item.get("id"),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    24
                    title: _item.get("title"),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    25
                    uri: _item.get("uri"),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    26
                    description: _item.get("description"),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    27
                    color: _item.get("color")
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    28
                }
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    29
            }),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    30
            nodes: _proj.get("nodes").map(function(_item) {
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    31
                return {
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    32
                    id: _item.get("id"),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    33
                    title: _item.get("title"),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    34
                    uri: _item.get("uri"),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    35
                    description: _item.get("description"),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    36
                    position: _item.get("position"),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    37
                    created_by: _item.get("created_by").get("id")
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    38
                }
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    39
            }),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    40
            edges: _proj.get("edges").map(function(_item) {
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    41
                return {
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    42
                    id: _item.get("id"),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    43
                    title: _item.get("title"),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    44
                    uri: _item.get("uri"),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    45
                    description: _item.get("description"),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    46
                    from: _item.get("from").get("id"),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    47
                    to: _item.get("to").get("id"),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    48
                    created_by: _item.get("created_by").get("id")
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    49
                }
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    50
            })
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    51
        };
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    52
        Rkns.$.ajax({
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    53
            type: _opts.http_method,
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    54
            url: _opts.url,
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    55
            contentType: "application/json",
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    56
            data: JSON.stringify(_data),
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    57
            success: function(data, textStatus, jqXHR) {
4
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    58
            }
23
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    59
        });
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    60
        
4
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    61
    }
23
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    62
    var _thrSave = Rkns._.throttle(_save, 2000);
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    63
    _load();
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    64
    _proj.on("add:nodes add:edges add:users", function(_model) {
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    65
        _model.on("change remove", function(_model) {
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    66
            _thrSave();
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    67
        });
70c8af9b44ec Rebased Rendering on Backbone Model
veltr
parents: 20
diff changeset
    68
    });
4
f5297dde9053 Can now add nodes/edges
veltr
parents: 2
diff changeset
    69
}