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

ci server - show and filter by active projects or waiting for deployment

parent 7f32bf57
No related branches found
No related tags found
No related merge requests found
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
"overview-filterrole":"Rolle", "overview-filterrole":"Rolle",
"overview-filterreset":"Reset Filter", "overview-filterreset":"Reset Filter",
"overview-filterreset-hint":"Filter zurücksetzen", "overview-filterreset-hint":"Filter zurücksetzen",
"overview-filterprogress":"Fortschritt",
"class-actionlog-title": "Action-Log", "class-actionlog-title": "Action-Log",
"class-actionlog-filter": "Filter", "class-actionlog-filter": "Filter",
...@@ -288,6 +289,8 @@ ...@@ -288,6 +289,8 @@
"phase-is-active": "Phase aktivieren", "phase-is-active": "Phase aktivieren",
"phase-targethosts": "Zielsysteme", "phase-targethosts": "Zielsysteme",
"phases": "Phasen", "phases": "Phasen",
"progress-inprogress": "wird aktualisiert",
"progress-hasqueue": "wartet auf Installation",
"project": "Projekt", "project": "Projekt",
"project-home": "Projekt Startseite", "project-home": "Projekt Startseite",
"projectdescription": "Kurzbeschreibung", "projectdescription": "Kurzbeschreibung",
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
"overview-filterrole":"Role", "overview-filterrole":"Role",
"overview-filterreset":"Reset filter", "overview-filterreset":"Reset filter",
"overview-filterreset-hint":"Remove all filter settings", "overview-filterreset-hint":"Remove all filter settings",
"overview-filterprogress":"Progress",
"class-actionlog-title": "Action-Log", "class-actionlog-title": "Action-Log",
"class-actionlog-filter": "Filter", "class-actionlog-filter": "Filter",
...@@ -290,6 +291,8 @@ ...@@ -290,6 +291,8 @@
"phase-is-active": "Activate phase", "phase-is-active": "Activate phase",
"phase-targethosts": "Target hosts", "phase-targethosts": "Target hosts",
"phases": "Phases", "phases": "Phases",
"progress-inprogress": "in progress",
"progress-hasqueue": "waiting for installation",
"project": "Project", "project": "Project",
"project-home": "Projekt home", "project-home": "Projekt home",
"projectdescription": "Short description", "projectdescription": "Short description",
......
...@@ -815,14 +815,46 @@ class project extends base { ...@@ -815,14 +815,46 @@ class project extends base {
* @return type * @return type
*/ */
public function getAllPhaseInfos() { public function getAllPhaseInfos() {
if (!array_key_exists("phases", $this->_aData))
$bHasQueue=false;
$bHasDifferentVersions=false;
$bFirstVersion=false;
if (!array_key_exists("phases", $this->_aData)){
$this->_aData["phases"] = array(); $this->_aData["phases"] = array();
}
if (!array_key_exists("progress", $this->_aData)){
$this->_aData["progress"] = array();
}
foreach (array_keys($this->_aConfig["phases"]) as $sPhase) { foreach (array_keys($this->_aConfig["phases"]) as $sPhase) {
if (!array_key_exists($sPhase, $this->_aData["phases"])) { if (!array_key_exists($sPhase, $this->_aData["phases"])) {
$this->getPhaseInfos($sPhase); $this->getPhaseInfos($sPhase);
} }
// detect progress
$aDataPhase = $this->_aData["phases"][$sPhase];
foreach (array_keys($this->getPlaces()) as $sPlace) {
if (
array_key_exists($sPlace, $aDataPhase)
&& array_key_exists('version', $aDataPhase[$sPlace])
) {
if($bFirstVersion && !$bHasDifferentVersions && $bFirstVersion!==$aDataPhase[$sPlace]['version']){
$bHasDifferentVersions=true;
}
if (!$bFirstVersion){
$bFirstVersion = $aDataPhase[$sPlace]['version'];
}
}
} }
// check queue
if (!$bHasQueue && array_key_exists('onhold', $aDataPhase) && $aDataPhase['onhold']['version']){
$bHasQueue=true;
}
}
$this->_aData["progress"]=array(
'inprogress'=>$bHasDifferentVersions,
'hasQueue'=>$bHasQueue,
);
return $this->_aData["phases"]; return $this->_aData["phases"];
} }
...@@ -974,6 +1006,13 @@ class project extends base { ...@@ -974,6 +1006,13 @@ class project extends base {
return $this->_aConfig["phases"]; return $this->_aConfig["phases"];
} }
/**
* return array of all (active and inactive) phases
* @return type
*/
public function getPlaces() {
return $this->_aPlaces;
}
/** /**
* get a flat array with active phases of the project * get a flat array with active phases of the project
* @return array * @return array
...@@ -1017,6 +1056,10 @@ class project extends base { ...@@ -1017,6 +1056,10 @@ class project extends base {
return $sNextPhase; return $sNextPhase;
} }
public function getProgress(){
$this->getAllPhaseInfos();
return $this->_aData['progress'];
}
/** /**
* check: is the deployment to the next phase enabled for this phase? * check: is the deployment to the next phase enabled for this phase?
* @param type $sPhase current phase * @param type $sPhase current phase
......
...@@ -83,8 +83,19 @@ class projectlist extends base{ ...@@ -83,8 +83,19 @@ class projectlist extends base{
$sOutPhases2.=' ' . $oPrj->renderLink("accept", $sPhase); $sOutPhases2.=' ' . $oPrj->renderLink("accept", $sPhase);
} }
} }
$aProgress=$oPrj->getProgress();
$sClasses=$sPrj . ' ' . $sTrClass
. ' progress'
.($aProgress['inprogress'] ? ' progressinprogress' : '')
.($aProgress['hasQueue'] ? ' progresshasqueue' : '')
;
$sProgress=''
.($aProgress['inprogress'] ? ' <i class="fa fa-refresh" title="'.t("progress-inprogress").'"></i> ' : '')
.($aProgress['hasQueue'] ? ' <i class="glyphicon glyphicon-time" title="'.t("progress-hasqueue").'"></i> ' : '')
;
$sOut2 .= '<div class="' . $sPrj . ' ' . $sTrClass . ' prjbox"><div class="title">' $sOut2 .= '<div class="' . $sClasses . ' prjbox"><div class="title">'
.$oHtml->getLink(array( .$oHtml->getLink(array(
'href'=>'#', 'href'=>'#',
'onclick'=>'$(\'#prjfilter\').val(\'' . $sPrj . '\'); window.setTimeout(\'filterOverviewTable();\', 10);setview(\'extended\'); return false;', 'onclick'=>'$(\'#prjfilter\').val(\'' . $sPrj . '\'); window.setTimeout(\'filterOverviewTable();\', 10);setview(\'extended\'); return false;',
...@@ -101,6 +112,7 @@ class projectlist extends base{ ...@@ -101,6 +112,7 @@ class projectlist extends base{
'label'=>'<strong>'.$oPrj->getLabel().'</strong>' 'label'=>'<strong>'.$oPrj->getLabel().'</strong>'
)) ))
.'</strong>' .'</strong>'
. $sProgress
. '</div>' . '</div>'
. '<div class="box" ' . '<div class="box" '
. 'onclick="location.href=\'/deployment/' . $sPrj . '/\'">' . 'onclick="location.href=\'/deployment/' . $sPrj . '/\'">'
...@@ -110,7 +122,7 @@ class projectlist extends base{ ...@@ -110,7 +122,7 @@ class projectlist extends base{
// render output // render output
$sOut.=' $sOut.='
<tr class="' . $sPrj . ' ' . $sTrClass . '" ' <tr class="' . $sClasses . '" '
. 'ondblclick="location.href=\'/deployment/' . $sPrj . '/\'" ' . 'ondblclick="location.href=\'/deployment/' . $sPrj . '/\'" '
. 'title="'.sprintf(t("overview-hint-dblclick"),$sPrj).'"> . 'title="'.sprintf(t("overview-hint-dblclick"),$sPrj).'">
<td class="prj"> <td class="prj">
...@@ -122,6 +134,7 @@ class projectlist extends base{ ...@@ -122,6 +134,7 @@ class projectlist extends base{
'label'=>$oPrj->getLabel() 'label'=>$oPrj->getLabel()
)) ))
.'</strong>' .'</strong>'
. $sProgress
. ' <br>' . ' <br>'
// . $oPrj->getDescription() // . $oPrj->getDescription()
. '</td>' . '</td>'
...@@ -219,7 +232,7 @@ class projectlist extends base{ ...@@ -219,7 +232,7 @@ class projectlist extends base{
} }
/** /**
* switch view between tiles and table * filter table by role
*/ */
function setrole(){ function setrole(){
var sRole=$("#rolefilter").val(); var sRole=$("#rolefilter").val();
...@@ -229,6 +242,17 @@ class projectlist extends base{ ...@@ -229,6 +242,17 @@ class projectlist extends base{
showResetbtn(); showResetbtn();
return false; return false;
} }
/**
* filter table by progress status
*/
function setprogress(){
var sProgress=$("#progressfilter").val();
$(\'.progress\').hide();
$(\'.progress\'+sProgress).show();
localStorage.setItem("progress", sProgress);
showResetbtn();
return false;
}
/** /**
* set default view; it gets the last values for filter text, * set default view; it gets the last values for filter text,
...@@ -274,6 +298,7 @@ class projectlist extends base{ ...@@ -274,6 +298,7 @@ class projectlist extends base{
if ($("#prjfilter").val()!="' . $sTrClass . '")sVisible="visible"; if ($("#prjfilter").val()!="' . $sTrClass . '")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";
$("#btnresetfilter").css("visibility", sVisible); $("#btnresetfilter").css("visibility", sVisible);
return false; return false;
} }
...@@ -289,6 +314,8 @@ class projectlist extends base{ ...@@ -289,6 +314,8 @@ class projectlist extends base{
window.setTimeout("filterTableByTyping();", 10); window.setTimeout("filterTableByTyping();", 10);
$("#rolefilter").val(""); $("#rolefilter").val("");
window.setTimeout("setrole();", 20); window.setTimeout("setrole();", 20);
$("#progressfilter").val("");
window.setTimeout("setprogress();", 30);
showResetbtn(); showResetbtn();
return false; return false;
} }
...@@ -343,6 +370,15 @@ class projectlist extends base{ ...@@ -343,6 +370,15 @@ class projectlist extends base{
<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") . '"
onclick="resetFilter();"><i class="glyphicon glyphicon-remove"></i> ' . t("overview-filterreset") . '</a> onclick="resetFilter();"><i class="glyphicon glyphicon-remove"></i> ' . t("overview-filterreset") . '</a>
......
...@@ -131,6 +131,9 @@ tr:hover{background:#ddd; background: linear-gradient(#f0f0f0,#fff,#f0f0f0);} ...@@ -131,6 +131,9 @@ tr:hover{background:#ddd; background: linear-gradient(#f0f0f0,#fff,#f0f0f0);}
.trprojectfiltered a.btn, .trprojectfiltered a.btn,
.trproject:hover a.btn{opacity: 1;} .trproject:hover a.btn{opacity: 1;}
.trproject{border-left:3px solid #fff;}
.progressinprogress{border-left:3px solid #fea;}
.progresshasqueue{border-left:3px solid #fc1;}
td.preview{} td.preview{}
td.stage{} td.stage{}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment