{% extends 'layout2.html' %}
{% load i18n %}
{% load static %}
{% block css_include %}
{% endblock %}
{% block js_include %}
{% endblock %}
{% block content %}
{% translate "Backends" %}
';
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 %}