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

query parameter handling

parent dcbb2dc0
Branches
No related tags found
No related merge requests found
......@@ -44,7 +44,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('SCRIPTSTARTTIME', 'SCRIPTLABEL', 'Server', 'SCRIPTEXECTIME', 'SCRIPTTTL', 'SCRIPTRC', 'Kommentar', 'Aktionen') as $sKey){
foreach(array('SCRIPTSTARTTIME', 'SCRIPTLABEL', 'Server', 'SCRIPTEXECTIME', 'SCRIPTTTL', 'SCRIPTRC', 'Kommentar' /*, 'Aktionen'*/) as $sKey){
$sTblHead.='<th>'.$sKey.'</th>';
}
$iLast=date("U", $aEntry['SCRIPTSTARTTIME']);
......@@ -53,7 +53,7 @@ class cronlogrenderer extends cronlog{
// $sClass='message-'.($aEntry['SCRIPTRC']?'error':'ok');
$aErrors=array();
$iNextRun=$aEntry['SCRIPTSTARTTIME']+($aEntry['SCRIPTTTL']*60);
$iNextRun=$aEntry['SCRIPTSTARTTIME']+((int)$aEntry['SCRIPTTTL']*60);
if($iNextRun < date("U")){
$aErrors[]='outdated';
......@@ -80,13 +80,13 @@ class cronlogrenderer extends cronlog{
. '<td>'.$aEntry['SCRIPTLABEL'].'</td>'
. '<td>'.$aEntry['server'].'</td>'
. '<td>'
.$aEntry['SCRIPTEXECTIME'].'s'
.($aEntry['SCRIPTEXECTIME']>100 ? ' ('.round($aEntry['SCRIPTEXECTIME']/60).'min)' : '')
.(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><button onclick="showFile(\''.$aEntry['logfile'].'\');">Ansehen</button></td>'
// . '<td><button onclick="showFile(\''.$aEntry['logfile'].'\');">Ansehen</button></td>'
. '</tr>'
;
}
......@@ -113,7 +113,7 @@ class cronlogrenderer extends cronlog{
// init datatable
. '<script>'
. '$(document).ready( function () {$(\'#'.$sIdTable.'\').DataTable({"bPaginate":false, "aaSorting":[[0,"desc"]]});} );'
. '$(document).ready( function () { $(\'#'.$sIdTable.'\').DataTable({"retrieve": true, "bPaginate":false, "aaSorting":[[0,"desc"]]}); } );'
. '</script>'
. '
......@@ -211,7 +211,7 @@ class cronlogrenderer extends cronlog{
// init datatable
. '<script>'
. '$(document).ready( function () {$(\'#'.$sIdTable.'\').DataTable({"aaSorting":[[0,"desc"]]});} );'
. '$(document).ready( function () {$(\'#'.$sIdTable.'\').DataTable({"retrieve": true, "aaSorting":[[0,"desc"]]});} );'
. '</script>'
. '
......@@ -357,7 +357,9 @@ class cronlogrenderer extends cronlog{
public function renderServerlist($sSelectedItem=false){
$sHtml='';
$sHtml.='<option value="ALL">[ALLE]</option>';
$sHtml.='<option value="ALL"'
.($sSelectedItem===false ? ' selected="selected"' : '')
. '>[ALLE]</option>';
foreach($this->getServers() as $sServer=>$aData){
$sHtml.='<option value="'.$sServer.'"'
.($sSelectedItem===$sServer ? ' selected="selected"' : '')
......
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
* Description of cronlog
*
......@@ -71,6 +65,7 @@ class cronlog {
}
protected function _getCacheData($sTaskId){
// DISABLE CACHE return false;
$sFile=$this->_getCacheFile($sTaskId);
if(file_exists($sFile)){
if (filemtime($sFile)>(date('U')-$this->_iTtlCache)){
......
<?php
// ----- supported query params
// server=[servername] ... default: ALL
// q=[filtervalue] ... default: nothing
?><!doctype html>
<html><head>
<!doctype html>
<html>
<head>
<title>Cronjob-Viewer</title>
<script type="text/javascript" src="js/functions.js"></script>
<script type="text/javascript" src="vendor/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="js/functions.js"></script>
<script type="text/javascript" src="vendor/vis/4.21.0/vis.min.js"></script>
<link href="vendor/vis/4.21.0/vis-timeline-graph2d.min.css" rel="stylesheet" type="text/css"/>
......@@ -23,6 +18,7 @@
<div id="errorlog">
</div>
<span style="float: right">Coded by Axel :-)</span>
<h1><span class="imllogo"></span> CronjobViewer</h1>
<nav class="servers">
<div id="selectserver" class="active">...</div>
......@@ -35,8 +31,10 @@
<a href="#cronlogs" onclick="setTab(this); return false;" class="active"><i class="far fa-file-alt"></i> Logs</a>
<a href="#crontable" onclick="setTab(this); return false;"><i class="fas fa-history"></i> History</a>
<a href="#graph" onclick="setTab(this); return false;"><i class="far fa-chart-bar"></i> Timeline</a>
</nav><br><br><br>
<button onclick="refreshPage(); return false;"><i class="fas fa-sync"></i> Reload</button>
<div id="tabcontent">
<div id="cronlogs" class="active"></div>
<div id="crontable"></div>
......@@ -44,29 +42,4 @@
</div>
</div>
<script>
// draw navigation with servers
getPageItem('selectserver');
// check query params and set filter
// ?server=neon&tab=crontable&q=123
var oQuery=getQueryParams();
var sServer=oQuery.server ? oQuery.server : 'ALL';
var q=oQuery.q ? oQuery.q : '';
var sTab=oQuery.tab ? oQuery.tab : '';
setServer(sServer);
if(sTab){
var oLink=$('a[href="#'+sTab+'"]').first();
console.log(oLink);
setTab(oLink);
}
if (q) {
window.setTimeout("$('#datatable1_filter label input').val(q); $('#datatable1').dataTable().fnFilter(q)" , 500);
window.setTimeout("$('#datatable2_filter label input').val(q); $('#datatable2').dataTable().fnFilter(q)" , 500);
}
</script>
</body></html>
\ No newline at end of file
var sSELECTEDSERVER='';
var sACTIVESERVERTAB='cronlogs';
var bSETADDRESSBAR=false;
/**
......@@ -38,6 +39,7 @@ function getPageItem(id, sData) {
if(!sData){
sData='item='+id+'&server='+sSELECTEDSERVER;
}
setAdressbar();
jQuery.ajax({
url: phpscript,
data: sData,
......@@ -56,9 +58,36 @@ function getPageItem(id, sData) {
});
}
/**
* refresh content with ajax requests
* @returns {undefined}
*/
function refreshPage(){
getPageItem('selectserver');
getPageItem(sACTIVESERVERTAB);
}
/**
* manipulate url in the browser address bar
*
* @returns {undefined}
*/
function setAdressbar() {
// console.log("--- setAdressbar()"); console.log(aViewFilters);
// ?server=neon&tab=graph&q=backup
if(!bSETADDRESSBAR){
return false;
}
var url = '?'
+ 'server=' + sSELECTEDSERVER
+ '&tab=' + sACTIVESERVERTAB
+ '&q=' // + $('#datatable1_filter label input').val()+$('#datatable2_filter label input').val()
;
window.history.pushState('dummy', 'Title', url);
}
/**
* set server (show its navigation)
* tghis action is used after clicking a servername in the navigation
* this action is used after clicking a servername in the navigation
*
* @param {string} sServer
* @returns {undefined}
......@@ -98,4 +127,50 @@ function showFile(sLogfile){
}
function showFileBack(){
getPageItem(sACTIVESERVERTAB);
}
\ No newline at end of file
}
function updateFilterFields(q){
if($('#datatable1_filter label input')){
$('#datatable1_filter label input').val(q);
$('#datatable1').dataTable().fnFilter(q);
// $('#datatable1').dataTable().bind('filter', 'setAdressbar()');
}
if($('#datatable2_filter label input')){
$('#datatable2_filter label input').val(q);
$('#datatable2').dataTable().fnFilter(q);
// $('#datatable1').dataTable().bind('filter', 'setAdressbar()');
}
}
// ----------------------------------------------------------------------
// MAIN
// ----------------------------------------------------------------------
$(document).ready( function () {
// draw navigation with servers
// check query params and set filter
// ?server=neon&tab=crontable&q=123
var oQuery=getQueryParams();
var sServer=oQuery.server ? oQuery.server : 'ALL';
var q=oQuery.q ? oQuery.q : '';
var sTab=oQuery.tab ? oQuery.tab : '';
setServer(sServer);
getPageItem('selectserver');
if(sTab){
var oLink=$('a[href="#'+sTab+'"]').first();
setTab(oLink);
}
console.log('suchfield ' + q);
if (q) {
// window.setTimeout("$('#datatable1_filter label input').val('"+q+"'); $('#datatable1').dataTable().fnFilter('"+q+"')" , 500);
window.setTimeout("updateFilterFields('"+q+"');" , 500);
}
bSETADDRESSBAR=true;
// window.setInterval('refreshPage()', 60000);
});
\ No newline at end of file
......@@ -47,7 +47,7 @@ td{padding:0.3em;}
.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;}
.message{border: 1px solid rgba(0,0,0,0.1); padding: 1em; float: right;}
.message-ok{background:#cfc !important; color:#080 !important;}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment