client/js/save-once.js
author rougeronj
Mon, 14 Sep 2015 11:48:24 +0200
changeset 516 7d1d44b53af5
parent 455 18b9be54174d
child 543 5f7bebdcfc0d
permissions -rw-r--r--
small fixes to be sure the project and the view are loaded before using it
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
52
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
     1
/* Saves the Full JSON once */
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
     2
320
154b121a43f1 enhance save on click (snapshot mode) and update django app
cavaliet
parents: 293
diff changeset
     3
Rkns.jsonIOSaveOnClick = function(_renkan, _opts) {
52
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
     4
    var _proj = _renkan.project,
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
     5
        _saveWarn = false,
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
     6
        _onLeave = function() {
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
     7
            return "Project not saved";
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
     8
        };
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 190
diff changeset
     9
    if (typeof _opts.http_method === "undefined") {
52
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    10
        _opts.http_method = 'POST';
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    11
    }
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    12
    var _load = function() {
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    13
        var getdata = {},
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    14
            rx = /id=([^&#?=]+)/,
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    15
            matches = document.location.hash.match(rx);
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    16
        if (matches) {
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    17
            getdata.id = matches[1];
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    18
        }
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    19
        Rkns.$.ajax({
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    20
            url: _opts.url,
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    21
            data: getdata,
368
3abc79964948 Close #33 - Add loading status var to set up a loading bar while the renkan is loading
rougeronj
parents: 359
diff changeset
    22
            beforeSend: function(){
516
7d1d44b53af5 small fixes to be sure the project and the view are loaded before using it
rougeronj
parents: 455
diff changeset
    23
                _renkan.renderer.redrawActive = false;
443
4c7ab16e5845 best coding convention for loadingstatus and savingstatus, rempve loadingatatus form export
ymh <ymh.work@gmail.com>
parents: 368
diff changeset
    24
            	_proj.set({loadingStatus:true});
368
3abc79964948 Close #33 - Add loading status var to set up a loading bar while the renkan is loading
rougeronj
parents: 359
diff changeset
    25
            },
52
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    26
            success: function(_data) {
444
19f0b7803aed add schema version + dataloaders to ensure data migrations + small correction for php server exmple + a readme for the php server example
ymh <ymh.work@gmail.com>
parents: 443
diff changeset
    27
                _renkan.dataloader.load(_data);
443
4c7ab16e5845 best coding convention for loadingstatus and savingstatus, rempve loadingatatus form export
ymh <ymh.work@gmail.com>
parents: 368
diff changeset
    28
                _proj.set({loadingStatus:false});
4c7ab16e5845 best coding convention for loadingstatus and savingstatus, rempve loadingatatus form export
ymh <ymh.work@gmail.com>
parents: 368
diff changeset
    29
                _proj.set({saveStatus:0});
516
7d1d44b53af5 small fixes to be sure the project and the view are loaded before using it
rougeronj
parents: 455
diff changeset
    30
                _renkan.renderer.redrawActive = true;
52
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    31
            }
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    32
        });
170
603ffa4c6fa5 correct ";" and "," in javascripts
ymh <ymh.work@gmail.com>
parents: 116
diff changeset
    33
    };
52
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    34
    var _save = function() {
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    35
        _proj.set("saved_at", new Date());
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    36
        var _data = _proj.toJSON();
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    37
        Rkns.$.ajax({
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    38
            type: _opts.http_method,
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    39
            url: _opts.url,
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    40
            contentType: "application/json",
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    41
            data: JSON.stringify(_data),
357
70e577b0cdc6 add save_status var to specify the status of the renkan (saved/to-save/saving)
rougeronj
parents: 320
diff changeset
    42
            beforeSend: function(){
443
4c7ab16e5845 best coding convention for loadingstatus and savingstatus, rempve loadingatatus form export
ymh <ymh.work@gmail.com>
parents: 368
diff changeset
    43
            	_proj.set({saveStatus:2});
357
70e577b0cdc6 add save_status var to specify the status of the renkan (saved/to-save/saving)
rougeronj
parents: 320
diff changeset
    44
            },
52
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    45
            success: function(data, textStatus, jqXHR) {
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    46
                $(window).off("beforeunload", _onLeave);
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    47
                _saveWarn = false;
443
4c7ab16e5845 best coding convention for loadingstatus and savingstatus, rempve loadingatatus form export
ymh <ymh.work@gmail.com>
parents: 368
diff changeset
    48
                _proj.set({saveStatus:0});
320
154b121a43f1 enhance save on click (snapshot mode) and update django app
cavaliet
parents: 293
diff changeset
    49
                //document.location.hash = "#id=" + data.id;
154b121a43f1 enhance save on click (snapshot mode) and update django app
cavaliet
parents: 293
diff changeset
    50
                //$(".Rk-Notifications").text("Saved as "+document.location.href).fadeIn().delay(2000).fadeOut();
52
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    51
            }
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    52
        });
170
603ffa4c6fa5 correct ";" and "," in javascripts
ymh <ymh.work@gmail.com>
parents: 116
diff changeset
    53
    };
52
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    54
    var _checkLeave = function() {
443
4c7ab16e5845 best coding convention for loadingstatus and savingstatus, rempve loadingatatus form export
ymh <ymh.work@gmail.com>
parents: 368
diff changeset
    55
    	_proj.set({saveStatus:1});
4c7ab16e5845 best coding convention for loadingstatus and savingstatus, rempve loadingatatus form export
ymh <ymh.work@gmail.com>
parents: 368
diff changeset
    56
52
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    57
        var title = _proj.get("title");
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    58
        if (title && _proj.get("nodes").length) {
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    59
            $(".Rk-Save-Button").removeClass("disabled");
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    60
        } else {
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    61
            $(".Rk-Save-Button").addClass("disabled");
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    62
        }
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    63
        if (title) {
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    64
            $(".Rk-PadTitle").css("border-color","#333333");
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    65
        }
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    66
        if (!_saveWarn) {
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    67
            _saveWarn = true;
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    68
            $(window).on("beforeunload", _onLeave);
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    69
        }
170
603ffa4c6fa5 correct ";" and "," in javascripts
ymh <ymh.work@gmail.com>
parents: 116
diff changeset
    70
    };
52
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    71
    _load();
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    72
    _proj.on("add:nodes add:edges add:users change", function(_model) {
357
70e577b0cdc6 add save_status var to specify the status of the renkan (saved/to-save/saving)
rougeronj
parents: 320
diff changeset
    73
	    _model.on("change remove", function(_model) {
443
4c7ab16e5845 best coding convention for loadingstatus and savingstatus, rempve loadingatatus form export
ymh <ymh.work@gmail.com>
parents: 368
diff changeset
    74
	    	if(!(_model.changedAttributes.length === 1 && _model.hasChanged('saveStatus'))) {
357
70e577b0cdc6 add save_status var to specify the status of the renkan (saved/to-save/saving)
rougeronj
parents: 320
diff changeset
    75
	    		_checkLeave();
70e577b0cdc6 add save_status var to specify the status of the renkan (saved/to-save/saving)
rougeronj
parents: 320
diff changeset
    76
	    	}
70e577b0cdc6 add save_status var to specify the status of the renkan (saved/to-save/saving)
rougeronj
parents: 320
diff changeset
    77
	    });
443
4c7ab16e5845 best coding convention for loadingstatus and savingstatus, rempve loadingatatus form export
ymh <ymh.work@gmail.com>
parents: 368
diff changeset
    78
		if(!(_proj.changedAttributes.length === 1 && _proj.hasChanged('saveStatus'))) {
357
70e577b0cdc6 add save_status var to specify the status of the renkan (saved/to-save/saving)
rougeronj
parents: 320
diff changeset
    79
		    _checkLeave();
70e577b0cdc6 add save_status var to specify the status of the renkan (saved/to-save/saving)
rougeronj
parents: 320
diff changeset
    80
    	}
52
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    81
    });
190
a9040a7c47d9 Some changes for standalone app compatibility
veltr
parents: 170
diff changeset
    82
    _renkan.renderer.save = function() {
a9040a7c47d9 Some changes for standalone app compatibility
veltr
parents: 170
diff changeset
    83
        if ($(".Rk-Save-Button").hasClass("disabled")) {
52
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    84
            if (!_proj.get("title")) {
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    85
                $(".Rk-PadTitle").css("border-color","#ff0000");
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    86
            }
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    87
        } else {
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    88
            _save();
e0f6f3c31150 Added colors !
veltr
parents:
diff changeset
    89
        }
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 190
diff changeset
    90
    };
170
603ffa4c6fa5 correct ";" and "," in javascripts
ymh <ymh.work@gmail.com>
parents: 116
diff changeset
    91
};