Skip to content
Snippets Groups Projects
Commit b0a32cac authored by hahn's avatar hahn
Browse files

- update appmonitor client class

- simplify filter on top in the project overview
parent 0419c3ca
No related branches found
No related tags found
No related merge requests found
...@@ -23,7 +23,20 @@ class Actionlog { ...@@ -23,7 +23,20 @@ class Actionlog {
`action` TEXT, `action` TEXT,
`message` TEXT `message` TEXT
)'; )';
/*
private $_sCreateFUTURE = '
CREATE TABLE "logs" (
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE ,
`time` DATETIME,
`time-start` DATETIME,
`loglevel` TEXT,
`ip` TEXT,
`user` TEXT,
`project` TEXT,
`action` TEXT,
`message` TEXT
)';
*/
/** /**
* constructor - sets internal environment variables and checks existence * constructor - sets internal environment variables and checks existence
* of the database * of the database
...@@ -72,6 +85,11 @@ class Actionlog { ...@@ -72,6 +85,11 @@ class Actionlog {
// echo "<pre>$sSql</pre>"; // echo "<pre>$sSql</pre>";
$db = new PDO("sqlite:" . $this->_dbfile); $db = new PDO("sqlite:" . $this->_dbfile);
$result = $db->query($sSql); $result = $db->query($sSql);
/*
if(!$result){
echo "PDO ERROR " . print_r($db->errorInfo(), 1) ."<br>";
}
*/
$db = NULL; $db = NULL;
return $result; return $result;
} }
...@@ -81,8 +99,9 @@ class Actionlog { ...@@ -81,8 +99,9 @@ class Actionlog {
* @param string $sMessage message * @param string $sMessage message
* @param string $sAction project action; i.e. build, deploy, ... * @param string $sAction project action; i.e. build, deploy, ...
* @param string $sLoglevel loglevel * @param string $sLoglevel loglevel
* @return type
*/ */
public function add($sMessage, $sAction = "", $sLoglevel = "info") { public function add($sMessage, $sAction = "", $sLoglevel = "info", $sTimeStart = false) {
if (array_search($sLoglevel, $this->_aLoglevels) === false) { if (array_search($sLoglevel, $this->_aLoglevels) === false) {
die(__class__ . ": loglevel $sLoglevel is invalid"); die(__class__ . ": loglevel $sLoglevel is invalid");
} }
...@@ -97,8 +116,24 @@ class Actionlog { ...@@ -97,8 +116,24 @@ class Actionlog {
'" . $sMessage . "' '" . $sMessage . "'
); );
"; ";
/*
$sqlFUTURE = "INSERT INTO `logs` (`time`, ".($sTimeStart ? "`time-start`, " : "" )." `loglevel`, `ip`, `user`, `project` ,`action`, `message`)
VALUES(
'" . date("Y-m-d H:i:s") . "',
".($sTimeStart ? "'" . $sTimeStart . "', " : "" ) ."
'" . $sLoglevel . "',
'" . $this->_sIP . "',
'" . $this->_sUser . "',
'" . $this->_sProject . "',
'" . $sAction . "',
'" . $sMessage . "'
);
";
*
*/
// echo $sql . "<br>"; // echo $sql . "<br>";
$this->_makeQuery($sql); $oResult=$this->_makeQuery($sql);
return $oResult;
} }
/** /**
...@@ -200,7 +235,7 @@ class Actionlog { ...@@ -200,7 +235,7 @@ class Actionlog {
); );
// --- list of all projects in log // --- list of all projects in log
$sSql='SELECT DISTINCT(project) from `logs`'; $sSql='SELECT DISTINCT(project) from `logs` order by project asc';
$aForms["filter"]["form"]['selectproject'] = array( $aForms["filter"]["form"]['selectproject'] = array(
'type' => 'select', 'type' => 'select',
'name' => 'selectproject', 'name' => 'selectproject',
...@@ -281,6 +316,11 @@ class Actionlog { ...@@ -281,6 +316,11 @@ class Actionlog {
$sReturn = '<div id="divActionlogs">'.$oForm->renderHtml("filter").' $sReturn = '<div id="divActionlogs">'.$oForm->renderHtml("filter").'
<div style="clear: both; margin-bottom: 1em;"></div> <div style="clear: both; margin-bottom: 1em;"></div>
<div id="tableLogactions"></div> <div id="tableLogactions"></div>
<!--
<script src="/vendor/vis/4.21.0/vis.min.js"></script>
<link href="/vendor/vis/4.21.0/vis.min.css" rel="stylesheet" type="text/css" />
<div id="divTimeline"></div>
-->
</div> </div>
<script> <script>
var sMsgNolog="'.t("class-actionlog-nolog").'"; var sMsgNolog="'.t("class-actionlog-nolog").'";
......
...@@ -11,10 +11,12 @@ ...@@ -11,10 +11,12 @@
not html5 valid: not html5 valid:
<meta http-equiv="cleartype" content="on"> <meta http-equiv="cleartype" content="on">
<link href="/deployment/bootstrap3/css/bootstrap-theme.min.css" rel="stylesheet" type="text/css"/> <link href="/deployment/bootstrap3/css/bootstrap-theme.min.css" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" type="text/css" href="/vendor/twitter-bootstrap/4.1.1/css/bootstrap.min.css"/>
<script src="/vendor/twitter-bootstrap/4.1.1/js/bootstrap.min.js"></script>
--> -->
<link rel="stylesheet" type="text/css" href="/vendor/bootstrap3/css/bootstrap.min.css"/> <link rel="stylesheet" type="text/css" href="/vendor/bootstrap3/css/bootstrap.min.css"/>
<link rel="stylesheet" type="text/css" href="/vendor/font-awesome-4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" type="text/css" href="/vendor/font-awesome-4.7.0/css/font-awesome.min.css">
<script src="/vendor/jquery/jquery-3.2.0.min.js"></script> <script src="/vendor/jquery/3.3.1/jquery.min.js"></script>
<title>IML Deployment</title> <title>IML Deployment</title>
<link rel="stylesheet" type="text/css" href="/deployment/main.css" media="screen"> <link rel="stylesheet" type="text/css" href="/deployment/main.css" media="screen">
......
...@@ -20,6 +20,8 @@ class projectlist extends base{ ...@@ -20,6 +20,8 @@ class projectlist extends base{
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
// CONFIG // CONFIG
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
var $_sInprogress='';
var $_sHasqueue='';
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
// constructor // constructor
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
...@@ -29,6 +31,9 @@ class projectlist extends base{ ...@@ -29,6 +31,9 @@ class projectlist extends base{
*/ */
public function __construct() { public function __construct() {
$this->oUser=new user(); $this->oUser=new user();
$this->_sInprogress='<div class="progressinprogress"><i class="fa fa-refresh" title="'.t("progress-inprogress").'"></i> '.t("progress-inprogress").'</div>';
$this->_sHasqueue='<div class="progresshasqueue"><i class="glyphicon glyphicon-time" title="'.t("progress-hasqueue").'"></i> '.t("progress-hasqueue").'</div>';
// define // define
} }
...@@ -62,8 +67,12 @@ class projectlist extends base{ ...@@ -62,8 +67,12 @@ class projectlist extends base{
$sPrjFilter = ''; $sPrjFilter = '';
$sPhaseFilter = ''; $sPhaseFilter = '';
$sPrjFilter.='<option value="' . $sTrClass . '">' . t("all") . '</option>'; $sPrjFilter.='<option value="">' . t("all") . '</option>';
$sPhaseFilter.='<option value="' . $sColClass . '">' . t("all") . '</option>'; $sPhaseFilter.='<option value="' . $sColClass . '">' . t("all") . '</option>';
$iInprogress=0;
$iHasqueue=0;
// foreach (array_keys($this->_aPhases) as $sPhase) { // foreach (array_keys($this->_aPhases) as $sPhase) {
foreach (array_keys($oPrj1->getPhases()) as $sPhase) { foreach (array_keys($oPrj1->getPhases()) as $sPhase) {
$sPhaseFilter.='<option value="' . $sPhase . '" >' . $sPhase . '</option>'; $sPhaseFilter.='<option value="' . $sPhase . '" >' . $sPhase . '</option>';
...@@ -74,6 +83,7 @@ class projectlist extends base{ ...@@ -74,6 +83,7 @@ class projectlist extends base{
$sOutPhases = ''; $sOutPhases = '';
$sOutPhases2 = ''; $sOutPhases2 = '';
$sProgress='';
// loop over phases ... // loop over phases ...
foreach (array_keys($oPrj->getPhases()) as $sPhase) { foreach (array_keys($oPrj->getPhases()) as $sPhase) {
...@@ -90,11 +100,14 @@ class projectlist extends base{ ...@@ -90,11 +100,14 @@ class projectlist extends base{
.($aProgress['hasQueue'] ? ' progresshasqueue' : '') .($aProgress['hasQueue'] ? ' progresshasqueue' : '')
; ;
$sProgress='' if($aProgress['inprogress']){
.($aProgress['inprogress'] ? '<div class="progressinprogress"><i class="fa fa-refresh" title="'.t("progress-inprogress").'"></i> '.t("progress-inprogress").'</div>' : '') $iInprogress++;
.($aProgress['hasQueue'] ? '<div class="progresshasqueue"><i class="glyphicon glyphicon-time" title="'.t("progress-hasqueue").'"></i> '.t("progress-hasqueue").'</div>' : '') $sProgress.=$this->_sInprogress;
; }
if($aProgress['hasQueue']){
$iHasqueue++;
$sProgress.=$this->_sHasqueue;
}
$sOut2 .= '<div class="' . $sClasses . ' prjbox"><div class="title">' $sOut2 .= '<div class="' . $sClasses . ' prjbox"><div class="title">'
.$oHtml->getLink(array( .$oHtml->getLink(array(
'href'=>'#', 'href'=>'#',
...@@ -175,26 +188,59 @@ class projectlist extends base{ ...@@ -175,26 +188,59 @@ class projectlist extends base{
* filter table by chosen select values for project and phase * filter table by chosen select values for project and phase
*/ */
function filterOverviewTable(){ function filterOverviewTable(){
// --- reset
$(\'.' . $sTrClass . '\').removeClass("trproject-textfilter");
$(\'.' . $sTrClass . '\').removeClass("trproject-progressfilter");
$(\'.' . $sTrClass . '\').removeClass("trproject-projectfilter");
$(\'.' . $sTrClass . '\').removeClass("trprojectfiltered");
$(\'button.prjprogress\').removeClass(\'selected\');
// --- get free filter
var sSearch=$("#efilter").val();
localStorage.setItem("efilter", sSearch);
var RegexFreetext = new RegExp(sSearch, "i");
// --- get project filter
var sPrj=$("#prjfilter").val(); var sPrj=$("#prjfilter").val();
// var sPhase=$("#phasefilter").val();
// localStorage.setItem("selectedPhase", sPhase);
// $(\'.' . $sColClass . '\').hide(); $(\'.\' + sPhase).show();
localStorage.setItem("selectedPrj", sPrj); localStorage.setItem("selectedPrj", sPrj);
$(\'.' . $sTrClass . '\').hide().removeClass("trprojectfiltered");
$(\'.\' + sPrj).show(); // --- get progress filter
if (sPrj!="' . $sTrClass . '"){ var sProgress=$("#progressfilter").val();
$(\'.\' + sPrj).addClass("trprojectfiltered"); localStorage.setItem("progress", sProgress);
$(\'#btnProgress\'+sProgress).addClass(\'selected\').blur();
// --- loop over project rows
$(".trproject").each(function() {
if ( !RegexFreetext.exec(this.innerHTML)) {
$(this).addClass("trproject-textfilter");
}
if (sPrj){
if ($(this).hasClass(sPrj)){
$(this).addClass("trprojectfiltered");
} else {
$(this).addClass("trproject-projectfilter");
}
} }
if (sProgress && !$(this).hasClass("progress" + sProgress)){
$(this).addClass("trproject-progressfilter");
}
});
showResetbtn(); showResetbtn();
} }
/** /**
* onclick event of [filter] button in table row of a project
* toggle: show a single project/ all projects * toggle: show a single project/ all projects
*/ */
function setProjectFilter(sPrj){ function setProjectFilter(sPrj){
var sCurrentPrj=$(\'#prjfilter\').val(); var sCurrentPrj=$(\'#prjfilter\').val();
if (sCurrentPrj != \'' .$sTrClass. '\'){ if (sCurrentPrj != \'\'){
$(\'#prjfilter\').val(\'' .$sTrClass. '\'); $(\'#prjfilter\').val(\'\');
} else { } else {
$(\'#prjfilter\').val(sPrj); $(\'#prjfilter\').val(sPrj);
} }
...@@ -206,18 +252,7 @@ class projectlist extends base{ ...@@ -206,18 +252,7 @@ class projectlist extends base{
* filter table and tiles by filtertext * filter table and tiles by filtertext
*/ */
function filterTableByTyping(){ function filterTableByTyping(){
var sVisible=""; filterOverviewTable();
var sSearch=$("#efilter").val();
localStorage.setItem("efilter", sSearch);
var Regex = new RegExp(sSearch, "i");
$(".trproject").each(function() {
sVisible="none";
if ( Regex.exec(this.innerHTML)) {
sVisible="";
}
$(this).css("display", sVisible);
});
showResetbtn();
return false; return false;
} }
...@@ -246,11 +281,7 @@ class projectlist extends base{ ...@@ -246,11 +281,7 @@ class projectlist extends base{
* filter table by progress status * filter table by progress status
*/ */
function setprogress(){ function setprogress(){
var sProgress=$("#progressfilter").val(); filterOverviewTable();
$(\'.progress\').hide();
$(\'.progress\'+sProgress).show();
localStorage.setItem("progress", sProgress);
showResetbtn();
return false; return false;
} }
...@@ -272,6 +303,12 @@ class projectlist extends base{ ...@@ -272,6 +303,12 @@ class projectlist extends base{
} else { } else {
$("#phasefilter").val($("#phasefilter option:first").val()); $("#phasefilter").val($("#phasefilter option:first").val());
} }
if (localStorage.getItem("progress") && localStorage.getItem("progress")!=\'null\'){
$("#progressfilter").val(localStorage.getItem("progress"));
} else {
$("#progressfilter").val($("#progressfilter option:first").val());
}
// window.setTimeout("filterOverviewTable();", 10); // window.setTimeout("filterOverviewTable();", 10);
filterOverviewTable(); filterOverviewTable();
...@@ -294,12 +331,14 @@ class projectlist extends base{ ...@@ -294,12 +331,14 @@ class projectlist extends base{
* Button zum Filter reset anzeigen/ verbergen * Button zum Filter reset anzeigen/ verbergen
*/ */
function showResetbtn(){ function showResetbtn(){
var sVisible=($("#efilter").val())?"visible":"hidden"; var sVisible=$("#efilter").val()?"visible":"hidden";
if ($("#prjfilter").val()!="' . $sTrClass . '")sVisible="visible"; if ($("#prjfilter").val()>"")sVisible="visible";
// if ($("#phasefilter").val()!="' . $sColClass . '")sVisible="visible"; // if ($("#phasefilter").val()!="' . $sColClass . '")sVisible="visible";
if ($("#rolefilter").val())sVisible="visible"; if ($("#rolefilter").val())sVisible="visible";
if ($("#progressfilter").val())sVisible="visible"; if ($("#progressfilter").val())sVisible="visible";
$("#btnresetfilter").css("visibility", sVisible); $("#btnresetfilter").css("visibility", sVisible);
$("#btnresetefilter").css("visibility", $("#efilter").val()?"visible":"hidden");
return false; return false;
} }
...@@ -307,7 +346,7 @@ class projectlist extends base{ ...@@ -307,7 +346,7 @@ class projectlist extends base{
* Aktion des Filter reset: Filter zurücksetzen * Aktion des Filter reset: Filter zurücksetzen
*/ */
function resetFilter(){ function resetFilter(){
$(\'#prjfilter\').val(\'' .$sTrClass. '\'); $(\'#prjfilter\').val(\'\');
// $("#phasefilter").val(""); // $("#phasefilter").val("");
filterOverviewTable(); filterOverviewTable();
$("#efilter").val(""); $("#efilter").val("");
...@@ -324,9 +363,11 @@ class projectlist extends base{ ...@@ -324,9 +363,11 @@ class projectlist extends base{
<form class="form-inline"> <form class="form-inline">
<!--
<a href="#" class="view viewextended" onclick="setview(\'simple\');"><i class="glyphicon glyphicon-th-large"></i> ' . t("overview-simpleview") . '</a> <a href="#" class="view viewextended" onclick="setview(\'simple\');"><i class="glyphicon glyphicon-th-large"></i> ' . t("overview-simpleview") . '</a>
<a href="#" class="view viewsimple" onclick="setview(\'extended\');" ><i class="glyphicon glyphicon-th-list"></i> ' . t("overview-extview") . '</a> <a href="#" class="view viewsimple" onclick="setview(\'extended\');" ><i class="glyphicon glyphicon-th-list"></i> ' . t("overview-extview") . '</a>
| |
-->
<label for="efilter"> <label for="efilter">
...@@ -335,13 +376,37 @@ class projectlist extends base{ ...@@ -335,13 +376,37 @@ class projectlist extends base{
</label> </label>
<input type="text" id="efilter" name="efilter" <input type="text" id="efilter" name="efilter"
class="form-control" class="form-control"
style="width: 150px;" style="width: 200px;"
onchange="filterTableByTyping();" onchange="filterTableByTyping();"
onKeypress="filterTableByTyping(); " onKeypress="filterTableByTyping(); "
onKeyup="filterTableByTyping(); " onKeyup="filterTableByTyping(); "
title="' . t("overview-textsearch-hint") . '" title="' . t("overview-textsearch-hint") . '"
> >
<button class="btn btn-default" onclick="$(\'#efilter\').val(\''.$this->oUser->getUsername().'\'); filterTableByTyping(); return false;">
'.$this->oUser->getUsername().'
</button>
<button id="btnresetefilter" class="btn btn-default" onclick="$(\'#efilter\').val(\'\'); filterTableByTyping(); return false;">
x
</button>
&nbsp;&nbsp;&nbsp;
<span style="display: none;">
<label for="progressfilter">
' . t("overview-filterprogress") . ':
</label>
<select id="progressfilter" class="form-control" onchange="setprogress(); return false;">
<option value="">' . t("all") . '</option>
<option value="inprogress">' . t("progress-inprogress") . '</option>
<option value="hasqueue">' . t("progress-hasqueue") . '</option>
</select>
</span>
<button id="btnProgress" class="btn btn-default prjprogress" onclick="$(\'#progressfilter\').val(\'\'); return setprogress();" >'.t("overview-projectcount").'<br><span>'.count($oPrj1->getProjects()).'</span></button>
<button id="btnProgressinprogress" class="btn btn-default prjprogress" onclick="$(\'#progressfilter\').val(\'inprogress\'); return setprogress();" >'.$this->_sInprogress.'<span>'.$iInprogress.'</span></button>
<button id="btnProgresshasqueue" class="btn btn-default prjprogress" onclick="$(\'#progressfilter\').val(\'hasqueue\'); return setprogress();" >'.$this->_sHasqueue .'<span>'.$iHasqueue.'</span></button>
<span style="display: none;">
<span class="view viewextended"> <span class="view viewextended">
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
<label for="prjfilter"> <label for="prjfilter">
...@@ -360,7 +425,12 @@ class projectlist extends base{ ...@@ -360,7 +425,12 @@ class projectlist extends base{
</span> </span>
</span> </span>
</span>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
<input type="hidden" id="rolefilter" value="" />
<!--
<label for="rolefilter"> <label for="rolefilter">
' . t("overview-filterrole") . ': ' . t("overview-filterrole") . ':
</label> </label>
...@@ -369,15 +439,8 @@ class projectlist extends base{ ...@@ -369,15 +439,8 @@ class projectlist extends base{
<option value="developer">' . t("developer") . '</option> <option value="developer">' . t("developer") . '</option>
<option value="pl">' . t("projectmanager") . '</option> <option value="pl">' . t("projectmanager") . '</option>
</select> </select>
-->
<label for="rolefilter">
' . t("overview-filterprogress") . ':
</label>
<select id="progressfilter" class="form-control" onchange="setprogress(); return false;">
<option value="">' . t("all") . '</option>
<option value="inprogress">' . t("progress-inprogress") . '</option>
<option value="hasqueue">' . t("progress-hasqueue") . '</option>
</select>
<a href="#" class="btn btn-danger" id="btnresetfilter" <a href="#" class="btn btn-danger" id="btnresetfilter"
title="' . t("overview-filterreset-hint") . '" title="' . t("overview-filterreset-hint") . '"
...@@ -385,6 +448,7 @@ class projectlist extends base{ ...@@ -385,6 +448,7 @@ class projectlist extends base{
</form> </form>
<div style="clear: both; margin-bottom: 1em"></div> <div style="clear: both; margin-bottom: 1em"></div>
</div> </div>
<br>
<div class="view viewsimple"> <div class="view viewsimple">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment