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 {
`action` 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
* of the database
......@@ -72,6 +85,11 @@ class Actionlog {
// echo "<pre>$sSql</pre>";
$db = new PDO("sqlite:" . $this->_dbfile);
$result = $db->query($sSql);
/*
if(!$result){
echo "PDO ERROR " . print_r($db->errorInfo(), 1) ."<br>";
}
*/
$db = NULL;
return $result;
}
......@@ -81,8 +99,9 @@ class Actionlog {
* @param string $sMessage message
* @param string $sAction project action; i.e. build, deploy, ...
* @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) {
die(__class__ . ": loglevel $sLoglevel is invalid");
}
......@@ -97,8 +116,24 @@ class Actionlog {
'" . $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>";
$this->_makeQuery($sql);
$oResult=$this->_makeQuery($sql);
return $oResult;
}
/**
......@@ -200,7 +235,7 @@ class Actionlog {
);
// --- 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(
'type' => 'select',
'name' => 'selectproject',
......@@ -281,6 +316,11 @@ class Actionlog {
$sReturn = '<div id="divActionlogs">'.$oForm->renderHtml("filter").'
<div style="clear: both; margin-bottom: 1em;"></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>
<script>
var sMsgNolog="'.t("class-actionlog-nolog").'";
......
......@@ -11,10 +11,12 @@
not html5 valid:
<meta http-equiv="cleartype" content="on">
<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/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>
<link rel="stylesheet" type="text/css" href="/deployment/main.css" media="screen">
......
......@@ -20,6 +20,8 @@ class projectlist extends base{
// ----------------------------------------------------------------------
// CONFIG
// ----------------------------------------------------------------------
var $_sInprogress='';
var $_sHasqueue='';
// ----------------------------------------------------------------------
// constructor
// ----------------------------------------------------------------------
......@@ -29,6 +31,9 @@ class projectlist extends base{
*/
public function __construct() {
$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
}
......@@ -62,8 +67,12 @@ class projectlist extends base{
$sPrjFilter = '';
$sPhaseFilter = '';
$sPrjFilter.='<option value="' . $sTrClass . '">' . t("all") . '</option>';
$sPrjFilter.='<option value="">' . t("all") . '</option>';
$sPhaseFilter.='<option value="' . $sColClass . '">' . t("all") . '</option>';
$iInprogress=0;
$iHasqueue=0;
// foreach (array_keys($this->_aPhases) as $sPhase) {
foreach (array_keys($oPrj1->getPhases()) as $sPhase) {
$sPhaseFilter.='<option value="' . $sPhase . '" >' . $sPhase . '</option>';
......@@ -74,6 +83,7 @@ class projectlist extends base{
$sOutPhases = '';
$sOutPhases2 = '';
$sProgress='';
// loop over phases ...
foreach (array_keys($oPrj->getPhases()) as $sPhase) {
......@@ -90,11 +100,14 @@ class projectlist extends base{
.($aProgress['hasQueue'] ? ' progresshasqueue' : '')
;
$sProgress=''
.($aProgress['inprogress'] ? '<div class="progressinprogress"><i class="fa fa-refresh" title="'.t("progress-inprogress").'"></i> '.t("progress-inprogress").'</div>' : '')
.($aProgress['hasQueue'] ? '<div class="progresshasqueue"><i class="glyphicon glyphicon-time" title="'.t("progress-hasqueue").'"></i> '.t("progress-hasqueue").'</div>' : '')
;
if($aProgress['inprogress']){
$iInprogress++;
$sProgress.=$this->_sInprogress;
}
if($aProgress['hasQueue']){
$iHasqueue++;
$sProgress.=$this->_sHasqueue;
}
$sOut2 .= '<div class="' . $sClasses . ' prjbox"><div class="title">'
.$oHtml->getLink(array(
'href'=>'#',
......@@ -175,26 +188,59 @@ class projectlist extends base{
* filter table by chosen select values for project and phase
*/
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 sPhase=$("#phasefilter").val();
// localStorage.setItem("selectedPhase", sPhase);
// $(\'.' . $sColClass . '\').hide(); $(\'.\' + sPhase).show();
localStorage.setItem("selectedPrj", sPrj);
$(\'.' . $sTrClass . '\').hide().removeClass("trprojectfiltered");
$(\'.\' + sPrj).show();
if (sPrj!="' . $sTrClass . '"){
$(\'.\' + sPrj).addClass("trprojectfiltered");
// --- get progress filter
var sProgress=$("#progressfilter").val();
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();
}
/**
* onclick event of [filter] button in table row of a project
* toggle: show a single project/ all projects
*/
function setProjectFilter(sPrj){
var sCurrentPrj=$(\'#prjfilter\').val();
if (sCurrentPrj != \'' .$sTrClass. '\'){
$(\'#prjfilter\').val(\'' .$sTrClass. '\');
if (sCurrentPrj != \'\'){
$(\'#prjfilter\').val(\'\');
} else {
$(\'#prjfilter\').val(sPrj);
}
......@@ -206,18 +252,7 @@ class projectlist extends base{
* filter table and tiles by filtertext
*/
function filterTableByTyping(){
var sVisible="";
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();
filterOverviewTable();
return false;
}
......@@ -246,11 +281,7 @@ class projectlist extends base{
* filter table by progress status
*/
function setprogress(){
var sProgress=$("#progressfilter").val();
$(\'.progress\').hide();
$(\'.progress\'+sProgress).show();
localStorage.setItem("progress", sProgress);
showResetbtn();
filterOverviewTable();
return false;
}
......@@ -272,6 +303,12 @@ class projectlist extends base{
} else {
$("#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);
filterOverviewTable();
......@@ -294,12 +331,14 @@ class projectlist extends base{
* Button zum Filter reset anzeigen/ verbergen
*/
function showResetbtn(){
var sVisible=($("#efilter").val())?"visible":"hidden";
if ($("#prjfilter").val()!="' . $sTrClass . '")sVisible="visible";
var sVisible=$("#efilter").val()?"visible":"hidden";
if ($("#prjfilter").val()>"")sVisible="visible";
// if ($("#phasefilter").val()!="' . $sColClass . '")sVisible="visible";
if ($("#rolefilter").val())sVisible="visible";
if ($("#progressfilter").val())sVisible="visible";
$("#btnresetfilter").css("visibility", sVisible);
$("#btnresetefilter").css("visibility", $("#efilter").val()?"visible":"hidden");
return false;
}
......@@ -307,7 +346,7 @@ class projectlist extends base{
* Aktion des Filter reset: Filter zurücksetzen
*/
function resetFilter(){
$(\'#prjfilter\').val(\'' .$sTrClass. '\');
$(\'#prjfilter\').val(\'\');
// $("#phasefilter").val("");
filterOverviewTable();
$("#efilter").val("");
......@@ -324,9 +363,11 @@ class projectlist extends base{
<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 viewsimple" onclick="setview(\'extended\');" ><i class="glyphicon glyphicon-th-list"></i> ' . t("overview-extview") . '</a>
|
-->
<label for="efilter">
......@@ -335,13 +376,37 @@ class projectlist extends base{
</label>
<input type="text" id="efilter" name="efilter"
class="form-control"
style="width: 150px;"
style="width: 200px;"
onchange="filterTableByTyping();"
onKeypress="filterTableByTyping(); "
onKeyup="filterTableByTyping(); "
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">
&nbsp;&nbsp;&nbsp;
<label for="prjfilter">
......@@ -360,7 +425,12 @@ class projectlist extends base{
</span>
</span>
</span>
&nbsp;&nbsp;&nbsp;
<input type="hidden" id="rolefilter" value="" />
<!--
<label for="rolefilter">
' . t("overview-filterrole") . ':
</label>
......@@ -369,15 +439,8 @@ class projectlist extends base{
<option value="developer">' . t("developer") . '</option>
<option value="pl">' . t("projectmanager") . '</option>
</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"
title="' . t("overview-filterreset-hint") . '"
......@@ -385,6 +448,7 @@ class projectlist extends base{
</form>
<div style="clear: both; margin-bottom: 1em"></div>
</div>
<br>
<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