
<div id="update_notice" style="display: none; margin: -40px 0px 20px 0px">
    <div>${_('Checking for updates...')}</div>
</div>


<div class="panel panel-default">
    <div class="panel-heading">
        <h3 class="panel-title">${_('Gunicorn process management')}</h3>
        <div class="pull-right">
            <a id="autoRefreshEnable" href="#autoRefreshEnable" onclick="enableAutoRefresh(); return false">${_('start auto refresh')}</a>
            <a id="autoRefreshDisable" href="#autoRefreshDisable" onclick="disableAutoRefresh(); return false" style="display: none">${_('stop auto refresh')}</a>
        </div>
    </div>
    <div class="panel-body" id="app">
        <h3>List of Gunicorn processes on this machine</h3>
        <p>RhodeCode workers set: ${c.gunicorn_workers}</p>
        <%
            def get_name(proc):
                cmd = ' '.join(proc.cmdline())
                if 'vcsserver.ini' in cmd:
                    return 'VCSServer'
                elif 'rhodecode.ini' in cmd:
                    return 'RhodeCode'
                return proc.name()
        %>
        <%include file='settings_process_management_data.mako'/>
    </div>
</div>

<script>


restart = function(elem, pid) {

    if ($(elem).hasClass('disabled')){
        return;
    }
    $(elem).addClass('disabled');
    $(elem).html('processing...');

    $.ajax({
        url: pyroutes.url('admin_settings_process_management_signal'),
        headers: {
            "X-CSRF-Token": CSRF_TOKEN,
        },
        data: JSON.stringify({'pids': [pid]}),
        dataType: 'json',
        type: 'POST',
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            $(elem).html(data.result);
            $(elem).removeClass('disabled');
        },
        failure: function (data) {
            $(elem).text('FAILED TO LOAD RESULT');
            $(elem).removeClass('disabled');
        },
        error: function (data) {
            $(elem).text('FAILED TO LOAD RESULT');
            $(elem).removeClass('disabled');
        }
    })
};

var intervalID = null;
var currentRequest = null;

autoRefresh = function(value) {
    var url = pyroutes.url('admin_settings_process_management_data');
    var loadData = function() {
        currentRequest = $.get(url)
            .done(function(data) {

                if(data.indexOf('id="processTimeStamp"') === -1){
                    clearInterval(intervalID);
                    $('#procList').html('ERROR LOADING DATA. PLEASE REFRESH THE PAGE');
                    return
                }

                currentRequest = null;
                $('#procList').html(data);
                timeagoActivate();
                var beat = function(doCallback) {
                    var callback = function () {};
                    if (doCallback){
                        var callback = function () {beat(false)};
                    }
                    $('#processTimeStamp').animate({
                        opacity: $('#processTimeStamp').css('opacity') == '1' ? '0.3' : '1'
                    }, 500, callback);
                };
                beat(true)
            });
    };

    if (value) {
        intervalID = setInterval(loadData, 5000);
    } else {
        clearInterval(intervalID);
    }
};

enableAutoRefresh = function() {
  $('#autoRefreshEnable').hide();
  $('#autoRefreshDisable').show();
  autoRefresh(true)
};

disableAutoRefresh = function() {
  $('#autoRefreshEnable').show();
  $('#autoRefreshDisable').hide();
  autoRefresh(false)
};

masterAction = function(pid, action) {
    $.ajax({
        url: pyroutes.url('admin_settings_process_management_master_signal'),
        headers: {
            "X-CSRF-Token": CSRF_TOKEN,
        },
        data: JSON.stringify({'pid_data': {'pid': pid, 'action': action}}),
        dataType: 'json',
        type: 'POST',
        contentType: "application/json; charset=utf-8",
        success: function (data) {

        },
        failure: function (data) {

        },
        error: function (data) {

        }
    })
};

addWorker = function(pid) {
    masterAction(pid, '+');
};

removeWorker = function(pid) {
    masterAction(pid, '-');
};

</script>
