{% extends 'layout2.html' %} {% load i18n %} {% load static %} {% block css_include %} {% endblock %} {% block js_include %} {% endblock %} {% block content %}
{% endblock %} {% block jquery_code %} $(document).ready(function(){ $('[data-toggle="tooltip"]').tooltip(); }); var datatableCanRedraw = true; var aoColumns = [ { sTitle: "ID", name: "id", aTargets: [0], defaultContent: "", mData: "id", bVisible: false, }, { sTitle: '{% translate "Status" %}', defaultContent: "", name: "status", mData: "status", aTargets: [1], bSearchable: false, mRender: function(data, type, row) { var cpt = 0; var result = ""; $.each(data, function(key, value) { if( cpt > 0 ) result += "
"; switch( value ) { case "UP": result += ' '; break; case "DOWN": result += ' '; break; case "UNKNOWN": result += ' '; break; case "ERROR": result += ' '; break; case "DISABLED": result += ' '; break; case "WAITING": result += ' '; break; } result += key+':'+value+''; cpt++; }); return result; } }, { sTitle: '{% translate "Name" %}', name: "name", aTargets: [2], defaultContent: "", mData: "name" }, { sTitle: '{% translate "Tags" %}', name: "tags", aTargets: [3], defaultContent: "", mData: "tags" }, { sTitle: '{% translate "Servers" %}', name: "servers", aTargets: [4], defaultContent: "", mData: "servers", mRender: function(data, type, row) { var result = ""; for( l of data ) { result = result + l + "
"; } return result; } }, { sTitle: '{% translate "Mode" %}', name: "mode", aTargets: [5], defaultContent: "", mData: "mode" }, { sTitle: '{% translate "Additional infos" %}', name: "additional_infos", aTargets: [6], defaultContent: "", mData: "additional_infos" }, { sTitle: '{% translate "Action" %}', mData:"id", aTargets: [7], defaultContent: "", mRender: function(data, type, row) { var statuses = Object.values(row.status); result = '' + ' '; if( statuses.indexOf("OPEN") >= 0 ) { result += ' '; } else if( statuses.indexOf("STOP") >= 0 ) result += ' '; return result; } } ]; var backends_table = $("#backend_list").dataTable({ bServerSide : true, order : [[1, 'desc']], iDisplayLength: 10, bProcessing : true, bSort : true, sAjaxSource : '', sServerMethod : 'POST', aoColumnDefs: aoColumns, language: language_datatable, fnServerData : function(sSource, aoData, fnCallback){ var columns = []; for (var i in aoColumns){ if( aoColumns[i].bSearchable !== false && aoColumns[i].mData !== null ) columns.push(aoColumns[i].mData); } aoData.push({ name: 'columns', value: JSON.stringify(columns) }); $.ajax({ type : "POST", url : sSource, data : aoData, success: function(data, callback){ if (!data.status){ notify('error', "{% translate 'Error' %}", data.error); } else { fnCallback(data); } } }) // /$.ajax .fail( function( jqXHR, textStatus ) { notify('error', "{% translate 'Error' %}", jqXHR.responseText); }) // /$.fail .done( function( data ) { if (!data.status){ notify('error', "{% translate 'Error' %}", data.error); } else { fnCallback(data); } }); // /$.done }, // /fnServerData fnCreatedRow: function(nRow, aData, iDataIndex){ /* Events binding to start a backend */ $(nRow).on('click', '.action', function(e) { /* Request start of the selected backend */ /* First, retrieve the action to do */ var action = ($(this).hasClass('start') ? "start" : ($(this).hasClass('pause') ? "pause" : ($(this).hasClass('disable') ? "disable" : ""))); $.ajax({ type : "GET", url : "/services/backend/"+action+"/"+aData.id, }) // /$.ajax .fail( function( jqXHR, textStatus ) { new PNotify({ title: 'Unknown error occurred', text: ''+jqXHR.responseText +'', type: 'error', styling: 'bootstrap3', width: '500px', buttons: { closer: true, sticker: false } }); }) // /$.fail .done( function( msg ) { if( msg.status ) { new PNotify({ title: "Success", text: ''+msg.message+'', type: 'success', styling: 'bootstrap3', width: '500px', buttons: { closer: true, sticker: false } }); } else { new PNotify({ title: msg.error.split(':').join('
'), // Replace : by return for better view, text: ''+msg.error_details+'', type: 'error', styling: 'bootstrap3', width: '500px', buttons: { closer: true, sticker: false } }); } }); // /$.done e.stopPropagation(); }); // /$(nRow).on('click', '.action' /* Events binding to edit a backend */ $(nRow).on('click', 'td', function(e) { if (e.target.tagName !== "TD") return; const url = "{% url 'applications.backend.edit' %}" + aData.id /* Open a backend edition in a new tab with ctrl click */ if (e.ctrlKey || e.metaKey) { window.open(url, '_blank'); } else { window.location.href = url; } }); // /$(nRow).on('click', 'td' /* Open a backend edition in a new tab with middle click */ $(nRow).on('mousedown', 'td', function(e){ if (e.target.tagName === "TD" && e.button === 1) { window.open("{% url 'applications.backend.edit' %}" + aData.id, '_blank'); } }); // /$(nRow).on('mousedown', 'td' /* Events binding to print a backend conf $(nRow).on('mouseover', function(e) { $('#details_backend').html(""); var conf = aData['conf']; $('#details_backend').append("
"+conf+"
"); $('#details_backend').show(); }); $(nRow).on('mouseout', function(e){ $('#details_backend').hide(); }); // $(nRow).on('mouseover' */ }, // fnCreatedRow: function fnDrawCallback: function(settings){ datatableCanRedraw = true; }, // fnDrawCallback: function }); // var backends_table = $("#backend_list").dataTable /* Filter datatable only 1s after end of user input */ $(".dataTables_filter input") .off("keyup.DT input.DT") .bind("input", (delay(function (e) { backends_table.fnFilter($(".dataTables_filter input").val()); }, 1000))); function delay(callback, ms) { var timer = 0; return function () { clearTimeout(timer); timer = setTimeout(function () { callback.apply(this, arguments); }, ms || 0); }; } /* Reload table data every 5 seconds if previous one answered */ setInterval(function(){ if(datatableCanRedraw == true) { datatableCanRedraw = false; backends_table.fnDraw(false); } }, 5000) /* Listener to reload haproxy service on all nodes */ $('#reload_all').on('click', function(event) { $.ajax({ type : "GET", url : "{% url 'services.haproxy.reload' %}", }) // /$.ajax .fail( function( jqXHR, textStatus ) { new PNotify({ title: 'Unknown error occurred', text: ''+jqXHR.responseText +'', type: 'error', styling: 'bootstrap3', width: '500px', buttons: { closer: true, sticker: false } }); }) // /$.fail .done( function( msg ) { if( msg.status ) { new PNotify({ title: "Success", text: ''+msg.message+'', type: 'success', styling: 'bootstrap3', width: '500px', buttons: { closer: true, sticker: false } }); } else { new PNotify({ title: msg.error, text: ''+msg.error_details+'', type: 'error', styling: 'bootstrap3', width: '500px', buttons: { closer: true, sticker: false } }); } }); // /$.done }); // $('#reload_all').on('click' {% endblock %}