From 6c8e78c97e12398a017bfe885e80bf4113841e32 Mon Sep 17 00:00:00 2001 From: "Hahn Axel (hahn)" <axel.hahn@unibe.ch> Date: Wed, 20 Sep 2023 15:26:15 +0200 Subject: [PATCH] Update show running jobs --- classes/cronlog-renderer.class.php | 94 ++++++++++++++++++------------ classes/cronlog.class.php | 2 +- config/lang_de-de.php | 1 + config/lang_en-en.php | 1 + main.css | 1 + 5 files changed, 61 insertions(+), 38 deletions(-) diff --git a/classes/cronlog-renderer.class.php b/classes/cronlog-renderer.class.php index fe8a776..874ff21 100644 --- a/classes/cronlog-renderer.class.php +++ b/classes/cronlog-renderer.class.php @@ -99,7 +99,7 @@ class cronlogrenderer extends cronlog{ /** * get html code for a table with events of executed cronjobs * - * @param array $aData result of $oCL->getServerLogs() + * @param array $aData result of $this->getServerLogs() * @return string */ public function renderCronlogs($aData=false){ @@ -195,16 +195,24 @@ class cronlogrenderer extends cronlog{ $sTtlHr=$sTtlHr ? '('.$sTtlHr.')' : ''; $sColStatus=''; - if (count($aErrors)){ - foreach($aErrors as $aErr){ - $sColStatus.='<li><abbr title="'.$aErr[1].'">'.$this->t('status-error').': '.$aErr[0].'</abbr></li>'; + $bIsRunning=false; + if($aEntry['SCRIPTRC']){ + if (count($aErrors)){ + foreach($aErrors as $aErr){ + $sColStatus.='<li><abbr title="'.$aErr[1].'">'.$this->t('status-error').': '.$aErr[0].'</abbr></li>'; + } + $sColStatus='<ul>'.$sColStatus.'</ul>'; + } else { + $sColStatus.=$this->t('status-ok'); } - $sColStatus='<ul>'.$sColStatus.'</ul>'; } else { - $sColStatus.=($aEntry['SCRIPTRC'] ? $this->t('status-ok') : ''); + $bIsRunning=true; + $sColStatus.=$this->t('status-running'); } // render table of last logfile per cron job - $sHtml.='<tr onclick="showFile(\''.$aEntry['logfile'].'\');" title="'.sprintf($this->t('row-click-show-logfile'), $aEntry['logfile']).'">' + $sHtml.='<tr onclick="showFile(\''.$aEntry['logfile'].'\');" title="'.sprintf($this->t('row-click-show-logfile'), $aEntry['logfile']).'"' + .($bIsRunning ? ' class="message-running"' : '') + .'>' . '<td>'.date("Y-m-d H:i:s", $aEntry['SCRIPTSTARTTIME']).'</td>' // . '<td>'.$aEntry['SCRIPTNAME'].'</td>' . '<td>'.$aEntry['SCRIPTLABEL'].'</td>' @@ -246,29 +254,32 @@ class cronlogrenderer extends cronlog{ . '<p class="hint">' . $this->t('logs-hint') . '</p>' - . '<div>' - . $this->_renderAccessAndAge($iLast) - . ($iErrors ? '<a href="#" class="btn bg-danger" onclick="'.$this->_filterDatatable($sIdTable, $this->t('status-error')).'"><i class="fas fa-exclamation-circle"></i> ' . $iErrors.'</a> ' : '') - . ( $iOK ? '<a href="#" class="btn bg-success" onclick="'.$this->_filterDatatable($sIdTable, $this->t('status-ok')).'"><i class="fas fa-check"></i> ' . $iOK.'</a>' : '') - . ($iErrors && $iOK ? ' ... '.$this->t('total').': <a href="#" class="btn bg-gray" onclick="'.$this->_filterDatatable($sIdTable, "").'"><i class="fas fa-th-large"></i> ' . count($aData).'</a>' : '' ) - . '</div><br>' - . '<table id="'.$sIdTable.'" class="table-striped">' - . '<thead><tr>'.$sTblHead.'</tr></thead>' - . '<tbody>' - .$sHtml - .'</tbody>' - . '</table>' + . (count($aData) + ? '<div>' + . $this->_renderAccessAndAge($iLast) + . ($iErrors ? '<a href="#" class="btn bg-danger" onclick="'.$this->_filterDatatable($sIdTable, $this->t('status-error')).'"><i class="fas fa-exclamation-circle"></i> ' . $iErrors.'</a> ' : '') + . ( $iOK ? '<a href="#" class="btn bg-success" onclick="'.$this->_filterDatatable($sIdTable, $this->t('status-ok')).'"><i class="fas fa-check"></i> ' . $iOK.'</a>' : '') + . ($iErrors && $iOK ? ' ... '.$this->t('total').': <a href="#" class="btn bg-gray" onclick="'.$this->_filterDatatable($sIdTable, "").'"><i class="fas fa-th-large"></i> ' . count($aData).'</a>' : '' ) + . '</div><br>' + . '<table id="'.$sIdTable.'" class="table-striped">' + . '<thead><tr>'.$sTblHead.'</tr></thead>' + . '<tbody>' + .$sHtml + .'</tbody>' + . '</table>' + . '<script>' + . '$(document).ready( function () { $(\'#'.$sIdTable.'\').DataTable({ + "retrieve": true, + "bPaginate":false, + "aaSorting":[[0,"desc"]] + '.$this->_getDatatableLanguage().' + }); + });' + . '</script>' + : '' + ) // init datatable - . '<script>' - . '$(document).ready( function () { $(\'#'.$sIdTable.'\').DataTable({ - "retrieve": true, - "bPaginate":false, - "aaSorting":[[0,"desc"]] - '.$this->_getDatatableLanguage().' - }); - });' - . '</script>' . ' <!-- ENDE '.__METHOD__.' --> @@ -278,11 +289,17 @@ class cronlogrenderer extends cronlog{ return $sHtml; } + /** + * get html code for a table with events of executed cronjobs for ALL servers + * + * @param array $aData result of $this->getServerLogs() + * @return string + */ public function renderCronlogsOfAllServers(){ $aData=array(); foreach (array_keys($this->getServers()) as $sServer){ $this->setServer($sServer); - $aData=array_merge($aData, $this->getServersLastLog()); + $aData=array_merge($aData, $this->getRunningJobs(),$this->getServersLastLog()); } $this->setServer('ALL'); return $this->renderCronlogs($aData); @@ -400,14 +417,17 @@ class cronlogrenderer extends cronlog{ . '</table>' // init datatable - . '<script>' - . '$(document).ready( function () {$(\'#'.$sIdTable.'\').DataTable({ - "retrieve": true, - "aaSorting":[[0,"desc"]], - "aLengthMenu":[[25,100,-1],[25,100,"---"]] - '.$this->_getDatatableLanguage().' - });} );' - . '</script>' + . (count($aData) + ? '<script>' + . '$(document).ready( function () {$(\'#'.$sIdTable.'\').DataTable({ + "retrieve": true, + "aaSorting":[[0,"desc"]], + "aLengthMenu":[[25,100,-1],[25,100,"---"]] + '.$this->_getDatatableLanguage().' + });} );' + . '</script>' + : '' + ) . ' <!-- ENDE '.__METHOD__.' --> diff --git a/classes/cronlog.class.php b/classes/cronlog.class.php index c05cbff..de0ed21 100644 --- a/classes/cronlog.class.php +++ b/classes/cronlog.class.php @@ -54,7 +54,7 @@ class cronlog { protected $_sFileFilter_serverjoblog = '*joblog*.done'; protected $_sFileFilter_joblog = '*.log'; - protected $_sFileFilter_jobrunning = '*.log.running'; + protected $_sFileFilter_jobrunning = '*.log.running*'; protected $_sLang = ''; // language ... read from config file protected $_aLang = []; // language data diff --git a/config/lang_de-de.php b/config/lang_de-de.php index 4506a22..70ddac6 100644 --- a/config/lang_de-de.php +++ b/config/lang_de-de.php @@ -44,6 +44,7 @@ return [ "col-rc" => "$?", "col-expired" => "veraltet?", "col-status" => "Status", + "status-running" => "AKTIV", "status-ok" => "OK", "status-error" => "FEHLER", diff --git a/config/lang_en-en.php b/config/lang_en-en.php index eef52a0..305b112 100644 --- a/config/lang_en-en.php +++ b/config/lang_en-en.php @@ -44,6 +44,7 @@ return [ "col-rc" => "$?", "col-expired" => "Expired?", "col-status" => "Status", + "status-running" => "RUNNING", "status-ok" => "OK", "status-error" => "ERROR", diff --git a/main.css b/main.css index 09ee0ec..ad737e8 100644 --- a/main.css +++ b/main.css @@ -41,6 +41,7 @@ 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-running, .message-running{background:#f4e0f4; color:#808 !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);} -- GitLab