232 lines
9.5 KiB
HTML
Executable File
232 lines
9.5 KiB
HTML
Executable File
{% extends "layout.html" %}
|
|
{% block content %}
|
|
<link rel="stylesheet" type="text/css" href="/static/styles/jquery.dataTables.css">
|
|
<script type=text/javascript src="/static/js/jquery.dataTables.js"></script>
|
|
<script type="text/javascript" charset="utf-8">
|
|
$(document).ready(function() {
|
|
var oTable = $('#table-design').dataTable( {
|
|
"bProcessing": true,
|
|
"pagingType": "full",
|
|
"sAjaxDataProp": "",
|
|
"sAjaxSource": "/backups.json",
|
|
"iDisplayLength": 25,
|
|
// "aLengthMenu": [[25, 50, 100, 200, 500, -1], [25, 50, 100, 200, 500, "All"]],
|
|
"aaSorting": [[ 0, "desc" ]],
|
|
"aoColumnDefs": [
|
|
{
|
|
"aTargets": [ 4 ],
|
|
"mData": "backup_duration",
|
|
"mRender": function ( data, type, full ) {
|
|
return secondsToHms(data * 3600);
|
|
}
|
|
},
|
|
{
|
|
"aTargets": [ 0 ],
|
|
"mData": "backup_start",
|
|
"mRender": function ( data, type, full ) {
|
|
var d = new Date(data);
|
|
return d.getFullYear()+"/"+(d.getMonth()+1)+"/"+d.getDate()+" "+d.toLocaleTimeString();
|
|
}
|
|
},
|
|
{
|
|
"aTargets": [ 1 ],
|
|
"mData": "backup_start",
|
|
"mRender": function ( data, type, full ) {
|
|
var d = new Date(data);
|
|
return d.getFullYear()+"/"+(d.getMonth()+1)+"/"+d.getDate()+" "+d.toLocaleTimeString();
|
|
}
|
|
},
|
|
{
|
|
"aTargets": [ 6 ],
|
|
"mData": "written_bytes",
|
|
"mRender": function ( data, type, full ) {
|
|
return humanFileSize(data, false);
|
|
}
|
|
}
|
|
],
|
|
"aoColumns": [
|
|
{ "mData":"backup_start"},
|
|
{ "mData":"backup_end" , "bVisible": false },
|
|
{ "mData":"server_name" },
|
|
{ "mData":"backup_name" },
|
|
{ "mData":"backup_duration"},
|
|
{ "mData":"status" },
|
|
{ "mData":"written_bytes"},
|
|
{ "mData":"written_files_count" , "bVisible": false},
|
|
{ "mData":"total_files_count" , "bVisible": false},
|
|
{ "mData":"total_bytes" , "bVisible": false },
|
|
{ "mData":"backup_location" , "bVisible": false },
|
|
{ "mData":"description" , "bVisible": false },
|
|
{ "mData":"log" , "bVisible": false },
|
|
{ "mData":"TYPE" , "bVisible": false }
|
|
],
|
|
"fnFooterCallback": function ( nRow, aaData, iStart, iEnd, aiDisplay ) {
|
|
var total_bytes = 0;
|
|
var total_time = 0;
|
|
for (var i = iStart; i < iEnd; i++) {
|
|
total_bytes += aaData[i]['written_bytes'];
|
|
total_time += aaData[i]['backup_duration'];
|
|
}
|
|
|
|
var cells_data = nRow.getElementsByTagName('th');
|
|
cells_data[1].innerHTML = humanFileSize(total_bytes, true);
|
|
|
|
|
|
var cells_time = nRow.nextElementSibling.cells;
|
|
cells_time[1].innerHTML = secondsToHms(total_time * 3600);
|
|
}
|
|
} );
|
|
$('#inputDatabaseName').keyup(function () { delay(function(){ oTable.fnLengthChange($('#inputDatabaseName').val() ); }, 300 )});
|
|
$(".dataTables_length").remove()
|
|
var nb_row = GetURLParameter('row');
|
|
if (nb_row ){
|
|
oTable.fnLengthChange( nb_row) ;
|
|
$('#inputDatabaseName').val(nb_row);
|
|
}
|
|
|
|
} );
|
|
var delay = (function(){
|
|
var timer = 0;
|
|
return function(callback, ms){
|
|
clearTimeout (timer);
|
|
timer = setTimeout(callback, ms);
|
|
};
|
|
})();
|
|
function fnShowHide( iCol )
|
|
{
|
|
/* Get the DataTables object again - this is not a recreation, just a get of the object */
|
|
var oTable = $('#table-design').dataTable();
|
|
|
|
var bVis = oTable.fnSettings().aoColumns[iCol].bVisible;
|
|
oTable.fnSetColumnVis( iCol, bVis ? false : true );
|
|
}
|
|
function secondsToHms(d) {
|
|
d = Number(d);
|
|
var h = Math.floor(d / 3600);
|
|
var m = Math.floor(d % 3600 / 60);
|
|
var s = Math.floor(d % 3600 % 60);
|
|
return ((h > 0 ? h + ":" : "0:") + (m > 0 ? (m < 10 ? "0" : "") + m + ":" : "00:") + (s < 10 ? "0" : "") + s);
|
|
}
|
|
function GetURLParameter(sParam)
|
|
{
|
|
var sPageURL = window.location.search.substring(1);
|
|
var sURLVariables = sPageURL.split('&');
|
|
for (var i = 0; i < sURLVariables.length; i++)
|
|
{
|
|
var sParameterName = sURLVariables[i].split('=');
|
|
if (sParameterName[0] == sParam)
|
|
{
|
|
return sParameterName[1];
|
|
}
|
|
}
|
|
}
|
|
function humanFileSize(bytes, si) {
|
|
var thresh = si ? 1000 : 1024;
|
|
if(bytes < thresh) return bytes + ' B';
|
|
var units = si ? ['kB','MB','GB','TB','PB','EB','ZB','YB'] : ['KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB'];
|
|
var u = -1;
|
|
do {
|
|
bytes /= thresh;
|
|
++u;
|
|
} while(bytes >= thresh);
|
|
return bytes.toFixed(1)+' '+units[u];
|
|
};
|
|
$.fn.dataTableExt.oApi.fnLengthChange = function ( oSettings, iDisplay )
|
|
{
|
|
oSettings._iDisplayLength = iDisplay;
|
|
oSettings.oApi._fnCalculateEnd( oSettings );
|
|
|
|
/* If we have space to show extra rows (backing up from the end point - then do so */
|
|
if ( oSettings._iDisplayEnd == oSettings.aiDisplay.length )
|
|
{
|
|
oSettings._iDisplayStart = oSettings._iDisplayEnd - oSettings._iDisplayLength;
|
|
if ( oSettings._iDisplayStart < 0 )
|
|
{
|
|
oSettings._iDisplayStart = 0;
|
|
}
|
|
}
|
|
|
|
if ( oSettings._iDisplayLength == -1 )
|
|
{
|
|
oSettings._iDisplayStart = 0;
|
|
}
|
|
|
|
oSettings.oApi._fnDraw( oSettings );
|
|
|
|
if ( oSettings.aanFeatures.l )
|
|
{
|
|
$('select', oSettings.aanFeatures.l).val( iDisplay );
|
|
}
|
|
};
|
|
</script>
|
|
<table style='text-align: center;' cellpadding="0" cellspacing="0" border="0" class="display" id="table-design">
|
|
<thead style='text-align: center;'>
|
|
<tr>
|
|
<th>Backup start</th>
|
|
<th>Backup end</th>
|
|
<th>Server name</th>
|
|
<th>Backup name</th>
|
|
<th>Backup duration</th>
|
|
<th>Status</th>
|
|
<th>Written bytes</th>
|
|
<th>Written files count</th>
|
|
<th>Total files count</th>
|
|
<th>Total bytes </th>
|
|
<th>Backup location</th>
|
|
<th>Description</th>
|
|
<th>Log</th>
|
|
<th>Type</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
|
|
</tbody>
|
|
<tfoot>
|
|
<tr>
|
|
<th style="text-align:right" colspan="4" rowspan="1">Total Written Bytes</th>
|
|
<th rowspan="1" colspan="1"></th>
|
|
</tr>
|
|
<tr>
|
|
<th style="text-align:right" colspan="4" rowspan="1">Total Duration time</th>
|
|
<th rowspan="1" colspan="1"></th>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
<p>Nomber of rows per page : <input id="inputDatabaseName" value=25 size=4 style="text-align:center" ></p>
|
|
<p>
|
|
<form class="form-horizontal">
|
|
<div class="col-xs-6 col-md-4">
|
|
<div class="form-group">
|
|
<div class="checkbox"><label><input type="checkbox" onclick="fnShowHide( 0 );" checked> Backup start</label></div>
|
|
<div class="checkbox"><label><input type="checkbox" onclick="fnShowHide( 1 );"/> Backup end</label></div>
|
|
<div class="checkbox"><label><input type="checkbox" onclick="fnShowHide( 2 );" checked> Server name</label></div>
|
|
<div class="checkbox"><label><input type="checkbox" onclick="fnShowHide( 3 );" checked> Backup name</label></div>
|
|
<div class="checkbox"><label><input type="checkbox" onclick="fnShowHide( 4 );" checked> Backup duration</label></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-xs-6 col-md-4">
|
|
<div class="form-group">
|
|
<div class="checkbox"><label><input type="checkbox" onclick="fnShowHide( 6 );"checked> Written bytes</label></div>
|
|
<div class="checkbox"><label><input type="checkbox" onclick="fnShowHide( 7 );"/> Written files count</label></div>
|
|
<div class="checkbox"><label><input type="checkbox" onclick="fnShowHide( 8 );"/> Total files count</label></div>
|
|
<div class="checkbox"><label><input type="checkbox" onclick="fnShowHide( 9 );"/> Total bytes</label></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-xs-6 col-md-4">
|
|
<div class="form-group">
|
|
<div class="checkbox"><label><input type="checkbox" onclick="fnShowHide( 10 );"> Backup location</label></div>
|
|
<div class="checkbox"><label><input type="checkbox" onclick="fnShowHide( 11);">Description </label></div>
|
|
<div class="checkbox"><label><input type="checkbox" onclick="fnShowHide( 12);"> Log</label></div>
|
|
<div class="checkbox"><label><input type="checkbox" onclick="fnShowHide( 13 );">Type </label></div>
|
|
<div class="checkbox"><label><input type="checkbox" onclick="fnShowHide( 5 );"checked> Status</label></div>
|
|
</div>
|
|
</div>
|
|
|
|
</form>
|
|
|
|
</p>
|
|
|
|
{% endblock %}
|