Skip to content
Snippets Groups Projects
Commit 6eeac4c1 authored by Hahn Axel (hahn)'s avatar Hahn Axel (hahn)
Browse files

- Tabellen-Aussehen; einzelne Zellen färben, nicht ganze Zeilen

- page refresh liess Suchfilter verschwinden
parent 1d479d1b
Branches
No related tags found
No related merge requests found
......@@ -60,7 +60,7 @@ class cronlogrenderer extends cronlog{
// Array ( [SCRIPTNAME] => apt-get update [SCRIPTTTL] => 1440 [SCRIPTSTARTTIME] => 2016-06-21 06:00:02, 1466481602 [SCRIPTLABEL] => apt-get [SCRIPTENDTIME] => 2016-06-21 06:00:49, 1466481649 [SCRIPTEXECTIME] => 47 s [SCRIPTRC] => 0 )
foreach($aData as $sDtakey=>$aEntry){
if(!$sTblHead){
foreach(array('Startzeit', 'Label', 'Server', 'Dauer', 'TTL', 'Exitcode', 'Kommentar' /*, 'Aktionen'*/) as $sKey){
foreach(array('Startzeit', 'Label', 'Server', 'Dauer', 'TTL', '$?', 'Expired', 'Status' /*, 'Aktionen'*/) as $sKey){
$sTblHead.='<th>'.$sKey.'</th>';
}
}
......@@ -69,7 +69,7 @@ class cronlogrenderer extends cronlog{
$iLast=max(array($iLast, date("U", $aEntry['SCRIPTSTARTTIME'])));
$aErrors=array();
$iNextRun=$aEntry['SCRIPTSTARTTIME']+((int)$aEntry['SCRIPTTTL']*1.5*60);
$iNextRun=$aEntry['SCRIPTSTARTTIME']+((int)$aEntry['SCRIPTTTL']*60);
if($iNextRun < date("U")){
$aErrors[]='outdated';
......@@ -90,18 +90,28 @@ class cronlogrenderer extends cronlog{
$sClass='message-ok';
}
$sHtml.='<tr class="'.$sClass.'" onclick="showFile(\''.$aEntry['logfile'].'\');" title="Klick=['.$aEntry['logfile'].'] anzeigen ">'
$sHtml.='<tr onclick="showFile(\''.$aEntry['logfile'].'\');" title="Klick=['.$aEntry['logfile'].'] anzeigen ">'
. '<td>'.date("Y-m-d H:i:s", $aEntry['SCRIPTSTARTTIME']).'</td>'
// . '<td>'.$aEntry['SCRIPTNAME'].'</td>'
. '<td>'.$aEntry['SCRIPTLABEL'].'</td>'
. '<td>'.$aEntry['server'].'</td>'
. '<td>'
. '<td'
.($aEntry['SCRIPTEXECTIME']>$this->_iMinTime4Timeline ? ' class="message-warning"' : '' )
. '>'
.(int)$aEntry['SCRIPTEXECTIME'].'s'
.((int)$aEntry['SCRIPTEXECTIME']>100 ? ' ('.round((int)$aEntry['SCRIPTEXECTIME']/60).'min)' : '')
.'</td>'
. '<td>'.$aEntry['SCRIPTTTL'].'</td>'
. '<td>'.$aEntry['SCRIPTRC'].'</td>'
. '<td>'.(count($aErrors) ? 'FEHLER:<br>*'.implode('<br>*', $aErrors) : 'OK').'</td>'
. '<td class="'.($aEntry['SCRIPTRC']>0 ? 'message-error' : 'message-ok' ).'">'
.$aEntry['SCRIPTRC']
.'</td>'
. '<td class="'.($iNextRun < date("U")
? ($iNextRun < date("U") -600 ? 'message-error' : 'message-warning')
: '' ).'">'
. date("Y-m-d H:i", $iNextRun).'</td>'
. '<td class="'.(count($aErrors) ? 'message-error' : '' ).'">'
// .(count($aErrors) ? 'FEHLER:<br>*'.implode('<br>*', $aErrors) : 'OK').'</td>'
.(count($aErrors) ? 'FEHLER' : 'OK').'</td>'
// . '<td><button onclick="showFile(\''.$aEntry['logfile'].'\');">Ansehen</button></td>'
. '</tr>'
;
......@@ -121,7 +131,7 @@ class cronlogrenderer extends cronlog{
. ($iErrors ? ' (Fehler: <strong>' . $iErrors.'</strong>... OK: <strong>' . $iOK.'</strong>)' : '')
. '<br>'
. '</div>'
. '<table id="'.$sIdTable.'">'
. '<table id="'.$sIdTable.'" class="table-striped">'
. '<thead><tr>'.$sTblHead.'</tr></thead>'
. '<tbody>'
.$sHtml
......@@ -177,7 +187,7 @@ class cronlogrenderer extends cronlog{
// job=dok-kvm-instances:host=kalium:start=1538358001:end=1538358001:exectime=0:ttl=60:rc=0
foreach($aData as $aEntry){
if(!$sTblHead){
foreach(array('Startzeit', /*'Ende',*/ 'Label', 'Server', 'Dauer', 'TTL', 'Exitcode') as $sKey){
foreach(array('Startzeit', /*'Ende',*/ 'Label', 'Server', 'Dauer', 'TTL', '$?') as $sKey){
$sTblHead.='<th>'.$sKey.'</th>';
}
}
......@@ -191,17 +201,21 @@ class cronlogrenderer extends cronlog{
$iOK++;
}
$sHtml.='<tr class="'.$sClass.'">'
$sHtml.='<tr>'
. '<td>'.date("Y-m-d H:i:s", $aEntry['start']).'</td>'
// . '<td>'.date("Y-m-d H:i:s", $aEntry['end']).'</td>'
. '<td>'.$aEntry['job'].'</td>'
. '<td>'.$aEntry['host'].'</td>'
. '<td>'
. '<td'
.($aEntry['exectime']>$this->_iMinTime4Timeline ? ' class="message-warning"' : '' )
. '>'
.$aEntry['exectime'].'s'
.($aEntry['exectime']>100 ? ' ('.round($aEntry['exectime']/60).'min)' : '')
. '</td>'
. '<td>'.$aEntry['ttl'].'</td>'
. '<td>'.$aEntry['rc'].'</td>'
. '<td class="'
.($aEntry['rc']>0 ? 'message-error': 'message-ok')
. '">'.$aEntry['rc'].'</td>'
. '</tr>'
;
}
......@@ -212,7 +226,7 @@ class cronlogrenderer extends cronlog{
. '<h3>History</h3>'
. '<p class="hint">'
. 'Von den gestarteten Cronjobs werden die Ausf&uuml;hrungen und deren Exitcode f&uuml;r 6 Tage aufgehoben.'
. 'Von den gestarteten Cronjobs werden die Ausf&uuml;hrungszeiten und deren Exitcode f&uuml;r 6 Tage aufgehoben.'
. '</p>'
. '<div>'
. $this->_renderAccessAndAge($iLast)
......@@ -351,7 +365,7 @@ class cronlogrenderer extends cronlog{
// Create a Timeline
var timeline = new vis.Timeline(container, items, options);
// fix: some timelines do not properly wirk ... but I make them visible
// fix: some timelines do not properly work ... but I make them visible
$(\'#'.$sDivId.' .vis-timeline\').css(\'visibility\', \'visible\');
</script>
' : '(kein Graph)<br>')
......
......@@ -2,6 +2,7 @@
var sSELECTEDSERVER = '';
var sACTIVESERVERTAB = 'cronlogs';
var bSETADDRESSBAR = false;
var sTABLEFILTER = '';
var iRefreshTime = 60;
var iRefreshCounter = 0;
......@@ -72,8 +73,17 @@ function getPageItem(id, sMoreData, bNoAdressbarUpdate) {
});
}
/**
* show a timer ad a
* @returns {undefined}
*/
function refreshTimer() {
$('#counter').html('Refresh in '+(iRefreshTime-iRefreshCounter)+' sec'+'<div style="width:'+(100 - (iRefreshCounter/iRefreshTime*100))+'%;">&nbsp;</div>');
if(iRefreshCounter==0){
$('#counter').html('Refresh in <span>'+(iRefreshTime)+'</span> sec'+'<div style="width:100%;">&nbsp;</div>');
} else {
$('#counter span').html(iRefreshTime-iRefreshCounter);
$('#counter div').css('width', (100 - (iRefreshCounter/iRefreshTime*100))+'%');
}
iRefreshCounter++;
if(iRefreshCounter>iRefreshTime){
refreshPage();
......@@ -87,6 +97,8 @@ function refreshTimer() {
function refreshPage() {
getPageItem('selectserver');
getPageItem(sACTIVESERVERTAB);
window.setTimeout("updateFilterFields();", 500);
iRefreshCounter=0;
}
......@@ -103,7 +115,7 @@ function setAdressbar() {
var url = '?'
+ 'server=' + sSELECTEDSERVER
+ '&tab=' + sACTIVESERVERTAB
+ '&q=' // + $('#datatable1_filter label input').val()+$('#datatable2_filter label input').val()
+ '&q=' + sTABLEFILTER// + $('#datatable1_filter label input').val()+$('#datatable2_filter label input').val()
;
window.history.pushState('dummy', 'Title', url);
// window.location.reload();
......@@ -155,6 +167,7 @@ function setTab(oLink,sTabid) {
function setTabId(sTabid){
clog("setTabId('"+sTabid+"')");
sACTIVESERVERTAB = sTabid;
sTABLEFILTER = '';
$('#tabcontent div').each(function () {
$(this).removeClass('active');
// $(this).html('Moment...');
......@@ -164,25 +177,39 @@ function setTabId(sTabid){
// setServer(sSELECTEDSERVER);
}
/**
* open overlay and show a file
* @param {type} sLogfile
* @returns {undefined}
*/
function showFile(sLogfile) {
clog("showFile('"+sLogfile+"')");
$('#overlay').show();
sLOGFILE=sLogfile;
getPageItem('showlog', 'logfile=' + sLOGFILE, true);
}
/**
* close overlay
* @param {type} sLogfile
* @returns {undefined}
*/
function closeOverlay() {
$('#overlay').fadeOut(300);
}
function updateFilterFields(q) {
/**
* update filter field for datatable with value of param q=
* @returns {undefined}
*/
function updateFilterFields() {
if ($('#datatable1_filter label input')) {
$('#datatable1_filter label input').val(q);
$('#datatable1').dataTable().fnFilter(q);
$('#datatable1_filter label input').val(sTABLEFILTER);
$('#datatable1').dataTable().fnFilter(sTABLEFILTER);
// $('#datatable1').dataTable().bind('filter', 'setAdressbar()');
}
if ($('#datatable2_filter label input')) {
$('#datatable2_filter label input').val(q);
$('#datatable2').dataTable().fnFilter(q);
$('#datatable2_filter label input').val(sTABLEFILTER);
$('#datatable2').dataTable().fnFilter(sTABLEFILTER);
// $('#datatable1').dataTable().bind('filter', 'setAdressbar()');
}
}
......@@ -207,7 +234,8 @@ $(document).ready(function () {
setTab(oLink);
}
if (q) {
window.setTimeout("updateFilterFields('" + q + "');", 500);
sTABLEFILTER=q;
window.setTimeout("updateFilterFields();", 500);
}
bSETADDRESSBAR = true;
window.setInterval('refreshTimer()', 1000);
......
......@@ -57,17 +57,19 @@ td{padding:0.3em;}
.log-value{color:#008;}
pre div:hover{background:rgba(0,0,0,0.1);}
#counter{color:#cde;}
#counter div{background:#bcd; height: 2px; }
#counter{color:#cde;border-bottom: 1px solid #eee;}
#counter div{background:#bcd; height: 2px; transition: width 1s ;}
/* ----- override datatable defaukts */
.dataTables_wrapper{clear: none;float: left; margin: auto 1px;}
table.dataTable tbody tr{background: none;}
table.dataTable{margin: 0; width: auto; }
table.dataTable tbody td{padding: 3px;padding: 1px;}
table.dataTable tbody tr.even{background: #f0f4f8;}
table.dataTable tbody tr.odd{}
table.dataTable{margin: 0; width: auto; border-spacing: 1px;}
table.dataTable tbody td{padding: 3px;}
.message{border: 1px solid rgba(0,0,0,0.1); padding: 1em; float: right;}
table.dataTable tbody tr.message-ok, .message-ok{background:#cfc; color:#080 !important;}
table.dataTable tbody tr.message-error, .message-error{background:#fdd; color:#800 !important;}
table.dataTable tbody tr.message-warning, .message-warning{background:#fec; color:#876 !important;}
table.dataTable tbody tr:hover{background:rgba(0,0,0,0.1);}
......@@ -76,3 +78,46 @@ table.dataTable tbody tr:hover{background:rgba(0,0,0,0.1);}
.vis-item.timeline-result-error{background:#fcc; border-color: #800}
.vis-item.timeline-result-ok{background:#cfc;border-color: #080}
/* see http://visjs.org/docs/timeline/#Templates */
alternating column backgrounds
.vis-time-axis .vis-odd {
background: #fff;
}
.vis-time-axis .vis-even {
background: #f0f4f8;
}
.vis-time-axis .vis-grid.vis-saturday,
.vis-time-axis .vis-grid.vis-sunday
{
border-bottom: 4px solid #abc;
}
/*
.vis-h0, .vis-h1,.vis-h2,.vis-h3, .vis-h4, .vis-h5, .vis-h6,.vis-h7,.vis-h18,.vis-h19,.vis-h20,.vis-h21,.vis-h22,.vis-h23{
background: #e0e4e8;
}
.vis-h8, .vis-h9,.vis-h10,.vis-h11, .vis-h12, .vis-h13, .vis-h14,.vis-h15,.vis-h16,.vis-h17{
background: #f0f4f8;
}
alternating column backgrounds
.vis-time-axis .vis-odd {
background: #fff;
}
.vis-time-axis .vis-even {
background: #f0f4f8;
}
.vis-time-axis{
background: #fea;
}
gray background in weekends, white text color
.vis-time-axis .vis-grid.vis-saturday,
.vis-time-axis .vis-grid.vis-sunday {
background: #ed8 !important;
}
.vis-time-axis .vis-text.vis-saturday,
.vis-time-axis .vis-text.vis-sunday {
}
*/
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment