server/src/assets/js/mtdc-save.js
author ymh <ymh.work@gmail.com>
Mon, 25 Jul 2016 16:29:56 +0200
changeset 98 6ff1d74b4afe
parent 90 00c9bb0f6f37
permissions -rw-r--r--
small change to call to close tracking api - revert async
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
90
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
/* globals Rkns */
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
/* Saves the Full JSON at each modification */
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
Rkns.mtdcJsonIO = function(_renkan, _opts) {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
    var _proj = _renkan.project;
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
    if (typeof _opts.http_method === 'undefined') {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
        _opts.http_method = 'PUT';
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
    }
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
    var _load = function() {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
        _proj.set({
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
            loadingStatus : true
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
        });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
        Rkns.$.getJSON(_opts.url, function(_data) {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
            _renkan.dataloader.load(_data);
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
            _renkan.setCurrentUser(_opts.user_id, _opts.user_name);
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
            _proj.set({
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
                loadingStatus : false
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
            });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
            _proj.set({
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
                saveStatus : 0
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
            });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
            _proj.on('add:nodes add:edges add:users add:views', function(_model) {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
                _model.on('change remove', function() {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
                    _thrSave();
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
                });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
                _thrSave();
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
            });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
            _proj.on('change', function() {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
                if (!(_proj.changedAttributes.length === 1 && _proj
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
                      .hasChanged('saveStatus'))) {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
                    _thrSave();
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
                }
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
            });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
            _proj.get('nodes').each(function(_node) {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
                _node.on('change remove', function() {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
                    _thrSave();
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
                });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
            });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
            _proj.get('edges').each(function(_edge) {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
                _edge.on('change remove', function() {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
                    _thrSave();
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
                });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
            });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
            _proj.get('users').each(function(_user) {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
                _user.on('change remove', function() {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
                    _thrSave();
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
                });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
            });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
        }).fail(function(jqXHR, textStatus) {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
            _showErrorModal(jqXHR, textStatus);
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
        });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
    };
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
    var _save = function() {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
        _proj.set({
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
            saveStatus : 2
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
        });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
        var _data = _proj.toJSON();
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
        if (!_renkan.read_only) {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
            Rkns.$.ajax({
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
                type : _opts.http_method,
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
                url : _opts.url,
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
                contentType : 'application/json',
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
                data : JSON.stringify(_data),
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
                success : function(data) {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
                    _proj.set({
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
                        saveStatus : 0,
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
                        updated : data.updated
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
                    });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
                },
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
                error: function (jqXHR, textStatus, errorThrown) {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
                    _showErrorModal(jqXHR, textStatus, errorThrown);
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
                }
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
            });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
        }
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
    };
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
    var _thrSave = Rkns._.debounce(_save, 1000);
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
    Rkns.$('#renkanErrorReload').on('click', function(){
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
        location.reload();
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
    });
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
    var errorModal = document.getElementById('renkanErrorModal');
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
    var _showErrorModal = function(jqXHR) {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
        errorModal.style.display = 'block';
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
        switch(jqXHR.status){
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
        case 400:
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
            var jsonResp = JSON.parse(jqXHR.responseText);
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
            if(jsonResp.hasOwnProperty('validation_timestamp')){
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
                document.getElementById('400Error_timestamp').style.display = 'block';
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
            }
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
            else {
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
                Rkns.$('#400Error_other').append(jqXHR.responseText);
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
                document.getElementById('400Error_other').style.display = 'block';
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
            }
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
            break;
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
        case 403:
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
            document.getElementById('403Error').style.display = 'block';
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
            break;
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
        case 404:
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
            document.getElementById('404Error').style.display = 'block';
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
            break;
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
        case 500:
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
            Rkns.$('#500Error').append(jqXHR.responseText);
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
            document.getElementById('500Error').style.display = 'block';
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
            break;
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
        case 503:
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
            document.getElementById('503Error').style.display = 'block';
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
            break;
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
        }
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
    };
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
    _load();
00c9bb0f6f37 Add asset compilation step to transpile js files for older browser (adn Safari)
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
};