client/js/full-json.js
author rougeronj
Thu, 05 Feb 2015 13:19:42 +0100
changeset 383 ba1f278841a2
parent 370 8dff53b60f4e
child 414 276042cb477c
permissions -rw-r--r--
close 55 - add function to set current user when someone log In Minor css update

/* Saves the Full JSON at each modification */

Rkns.jsonIO = function(_renkan, _opts) {
    var _proj = _renkan.project;
    if (typeof _opts.http_method === "undefined") {
        _opts.http_method = 'PUT';
    }
    var _load = function() {
        _renkan.renderer.redrawActive = false;
        _proj.set({loading_status:true});
        Rkns.$.getJSON(_opts.url, function(_data) {
            _proj.set(_data, {validate: true});
            _proj.set({loading_status:false});
            _proj.set({save_status:0});
            _renkan.renderer.redrawActive = true;
            _renkan.renderer.autoScale();
        });
    };
    var _save = function() {
    	_proj.set({save_status:2});
        var _data = _proj.toJSON();
        if (!_renkan.read_only) {
            Rkns.$.ajax({
                type: _opts.http_method,
                url: _opts.url,
                contentType: "application/json",
                data: JSON.stringify(_data),
                success: function(data, textStatus, jqXHR) {
                	_proj.set({save_status:0});
                }
            });
        }

    };
    var _thrSave = Rkns._.throttle(
        function() {
            setTimeout(_save, 100);
        }, 1000);
    _proj.on("add:nodes add:edges add:users add:views", function(_model) {
        _model.on("change remove", function(_model) {
            _thrSave();
        });
        _thrSave();
    });
    _proj.on("change", function() {
    	if(!(_proj.changedAttributes.length === 1 && _proj.hasChanged('save_status'))) {
    		_thrSave();
    	}
    });

    _load();
};