diff --git a/public_html/deployment/classes/projectlist.class.php b/public_html/deployment/classes/projectlist.class.php index 6569fd76c693d031df8a48cb8db7b27f123a21d8..155575b017c0453a8398761707072ed9ee3bca29 100644 --- a/public_html/deployment/classes/projectlist.class.php +++ b/public_html/deployment/classes/projectlist.class.php @@ -55,7 +55,6 @@ class projectlist extends base global $renderAdminLTE; $sOut = ''; // table - $sOut2 = ''; // tiles $oPrj = false; $sTrClass = "trproject"; $sColClass = "tdphase"; @@ -145,35 +144,6 @@ class projectlist extends base $sErrors .= $oPrj->renderErrorBoxes(); - /* - $sOut2 .= '<div class="' . $sClasses . ' prjbox"><div class="title">' - .$oHtml->getLink(array( - 'href'=>'#', - 'onclick'=>'$(\'#prjfilter\').val(\'' . $sPrj . '\'); window.setTimeout(\'filterOverviewTable();\', 10);setview(\'extended\'); return false;', - 'style'=>'float: right;', - 'title'=>t("overview-filter-hint"), - 'icon'=>'filter', - 'label'=>t("overview-filter") - )) - . '<span class="float-right">'.$sPrjGroup.' </span>' - .'<strong>' - .$oHtml->getLink(array( - 'href'=>'/deployment/' . $sPrj . '/', - 'title'=>t("menu-project-home"). ' ' . $oPrj->getLabel(), - 'icon'=>'project', - 'label'=>'<strong>'.$oPrj->getLabel().'</strong>' - )) - .'</strong>' - // . $sProgress - . '</div>' - . '<div class="box" ' - . 'onclick="location.href=\'/deployment/' . $sPrj . '/\'">' - . $oPrj->getDescription() - . '<br>' - . ''; - */ - - // render output $sOut .= ' <tr class="' . $sClasses . '" ' @@ -207,13 +177,10 @@ class projectlist extends base . '<td class="prj">'; if ($oPrj->canAcceptPhase()) { $sOut .= $oPrj->renderLink("build"); - // $sOut2.=$oPrj->renderLink("build"); - // $sOut.='<a href="/deployment/'.$sPrj.'/build/" class="btn btn-default '.$sNext.'"><i class=" icon-forward"></i> Build für ['.$sNext.']</a><br>'; } $sOut .= '</td> ' . $sOutPhases . ' </tr>'; - // $sOut2.=$sOutPhases2 . '</div></div>'; } if ($sOut) { $sRowHead1 = ''; @@ -238,222 +205,9 @@ class projectlist extends base $sRowHead2 .= $oPrj->renderPlacesAsTd($sPhase); } $sOutTop = ' - <script> - - /** - * 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("trproject-projectgroupfilter"); - $(\'.' . $sTrClass . '\').removeClass("trprojectfiltered"); - $(\'button.prjprogress\').removeClass(\'selected\'); - - // --- get free filter - var sSearch=$("#efilter").val(); - localStorage.setItem("efilter", sSearch); - - $("table").removeHighlight(); - if (sSearch) { - // $("tr:regex(\'" + sSearch + "\')").show(); - // $("tr:not(:regex(\'" + sSearch + "\'))").hide(); - // $("tr").first().show(); - - $("td").highlight(sSearch); - } else { - $("td").removeHighlight(); - $(\'tr\').show(); - } - - var RegexFreetext = new RegExp(sSearch, "i"); - - // --- get project filter - var sPrj=$("#prjfilter").val(); - localStorage.setItem("selectedPrj", sPrj); - - // --- get project group filter - var sPrjGroup=$("#prjgroupfilter").val(); - localStorage.setItem("selectedPrjGroup", sPrjGroup); - - // --- 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 (sPrjGroup){ - if ($(this).hasClass("group-"+sPrjGroup)){ - $(this).addClass("trprojectgroupfiltered"); - } else { - $(this).addClass("trproject-projectgroupfilter"); - } - } - 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 != \'\'){ - $(\'#prjfilter\').val(\'\'); - } else { - $(\'#prjfilter\').val(sPrj); - } - window.setTimeout(\'filterOverviewTable();\', 10); - setview(\'extended\'); - } - - /** - * filter table and tiles by filtertext - */ - function filterTableByTyping(){ - filterOverviewTable(); - return false; - } - - /** - * switch view between tiles and table - */ - function setview(sMode){ - $(\'.view\').hide(); - $(\'.view\'+sMode).show(); - localStorage.setItem("mode", sMode); - return false; - } - - /** - * filter table by role - */ - function setrole(){ - var sRole=$("#rolefilter").val(); - $(\'.role\').hide(); - $(\'.role\'+sRole).show(); - localStorage.setItem("role", sRole); - showResetbtn(); - return false; - } - /** - * filter table by progress status - */ - function setprogress(){ - filterOverviewTable(); - return false; - } - - /** - * set default view; it gets the last values for filter text, - * and selected values in dropdowns and restores the - * last view - */ - function setDefaultView(){ + <div id="counter">...</div><br> - - if (localStorage.getItem("progress") && localStorage.getItem("progress")!=\'null\'){ - $("#progressfilter").val(localStorage.getItem("progress")); - } else { - $("#progressfilter").val($("#progressfilter option:first").val()); - } - if (localStorage.getItem("efilter") && localStorage.getItem("efilter")!=\'null\') { - $("#efilter").val(localStorage.getItem("efilter")); - window.setTimeout("filterTableByTyping();", 10); - } - - if(localStorage.getItem("selectedPrjGroup") && localStorage.getItem("selectedPrjGroup")!=\'null\'){ - $("#prjgroupfilter").val(localStorage.getItem("selectedPrjGroup")); - } else { - // $("#selectedPrjGroup").val($("#selectedPrjgroup option:first").val()); - } - - // window.setTimeout("filterOverviewTable();", 10); - filterOverviewTable(); - - /* - if(localStorage.getItem("selectedPrj") && localStorage.getItem("selectedPrj")!=\'null\'){ - $("#prjfilter").val(localStorage.getItem("selectedPrj")); - } else { - $("#prjfilter").val($("#prjfilter option:first").val()); - } - - if (localStorage.getItem("selectedPhase") && localStorage.getItem("selectedPhase")!=\'null\'){ - $("#phasefilter").val(localStorage.getItem("selectedPhase")); - } else { - $("#phasefilter").val($("#phasefilter option:first").val()); - } - - if (localStorage.getItem("role") && localStorage.getItem("role")!=\'null\') { - $("#rolefilter").val(localStorage.getItem("role")); - window.setTimeout("setrole();", 20); - } - - if (localStorage.getItem("mode") && localStorage.getItem("mode")!=\'null\') { - var sMode=localStorage.getItem("mode"); - if (sMode)setview(sMode); - } - */ - } - - /** - * Button zum Filter reset anzeigen/ verbergen - */ - function showResetbtn(){ - var sVisible=$("#efilter").val()?"visible":"hidden"; - if ($("#prjfilter").val()>"")sVisible="visible"; - if ($("#prjgroupfilter").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; - } - - /** - * Aktion des Filter reset: Filter zurücksetzen - */ - function resetFilter(){ - $("#prjfilter").val(""); - $("#prjgroupfilter").val(""); - // $("#phasefilter").val(""); - filterOverviewTable(); - $("#efilter").val(""); - window.setTimeout("filterTableByTyping();", 10); - $("#rolefilter").val(""); - window.setTimeout("setrole();", 20); - $("#progressfilter").val(""); - window.setTimeout("setprogress();", 30); - showResetbtn(); - return false; - } - </script> - <div class="filterbar"> - + <div class="filterbar"> <form class="form-inline"> <!-- @@ -551,15 +305,6 @@ class projectlist extends base <div style="clear: both; margin-bottom: 1em"></div> </div>'; $sOut = $sErrors - - /* - .' - <div class="view viewsimple"> - ' . $sOut2 . ' - <div style="clear: both;"></div> - <br> - </div>' - */ . ' <table class="table view viewextended" id="tbloverview"> @@ -576,7 +321,7 @@ class projectlist extends base </thead> <tbody> ' . $sOut . '</tbody></table>' - . '<script>window.setTimeout("setDefaultView();", 50); window.setTimeout("window.location.replace(window.location.pathname + window.location.search + window.location.hash);", 60000);</script>'; + ; } else { $sOut = t("class-pl-error-no-project") . '<br><br>' . $oPrj1->renderLink("new"); diff --git a/public_html/deployment/index.php b/public_html/deployment/index.php index 2842f78a0a4c8324c8ba3bc2d827d69d4fc6520e..8bc8d030aefe545edf640bfd915ab675e1dd0fa4 100644 --- a/public_html/deployment/index.php +++ b/public_html/deployment/index.php @@ -131,7 +131,9 @@ if($oUser->getUsername()){ // ---------------------------------------------------------------------- // html body // ---------------------------------------------------------------------- +$HEAD_INCLUDE=''; $BODY=""; +$BODY_END=''; $TITLE=""; $JS=''; @@ -274,10 +276,12 @@ if(!file_exists($sIncfile)){ // ---------- generate output +$aReplace['{{HEAD_INCLUDE}}']=$HEAD_INCLUDE; $aReplace['{{PAGE_BODY}}']=$BODY; $aReplace['{{PAGE_HEADER_LEFT}}']='<h2>'.$TITLE.'</h2>'; $aReplace['{{PAGE_HEADER_RIGHT}}']=$oUser->getUsername() ? getBreadcrumb("link") : ''; $aReplace['{{INJECT_JS}}']=$JS; +$aReplace['{{BODY_END}}']=$BODY_END; $sTemplate=file_get_contents('ui/page.tpl.php'); echo $renderAdminLTE->render($sTemplate,$aReplace); diff --git a/public_html/deployment/js/functions_overview.js b/public_html/deployment/js/functions_overview.js new file mode 100644 index 0000000000000000000000000000000000000000..2bb2293aabfc1abb4587a5692fcacd66d8c8f1ae --- /dev/null +++ b/public_html/deployment/js/functions_overview.js @@ -0,0 +1,245 @@ +// ---------------------------------------------------------------------- +// JS FOR OVERVIEW PAGE +// ---------------------------------------------------------------------- + + +// ---------------------------------------------------------------------- +// COUNTER +// ---------------------------------------------------------------------- + +// reload after N seconds +var iReload = 60; + + +/** + * get the current unix ts + * @returns {Number} + */ +function getUnixTS() { + return Date.now() / 1000; +} + + +/** + * show a timer and progress bar + * @returns {undefined} + */ +function refreshTimer() { + if (iRefreshCounter == 0) { + $('#counter').html( + '<span>-</span><br>' + + '<div style="width:100%; float: left;"> </div>' + ); + } + $('#counter span').html(iReload - iRefreshCounter + 's'); + $('#counter div').css('width', (100 - (iRefreshCounter / iReload * 100)) + '%'); + iRefreshCounter++; + + if (iRefreshCounter > iReload) { + document.location.reload(); + } +} + + +// ---------------------------------------------------------------------- +// FILTERING +// ---------------------------------------------------------------------- + +/** +* filter table by chosen select values for project and phase +*/ +function filterOverviewTable() { + + // --- reset + $('.trproject').removeClass("trproject-textfilter"); + $('.trproject').removeClass("trproject-progressfilter"); + $('.trproject').removeClass("trproject-projectfilter"); + $('.trproject').removeClass("trproject-projectgroupfilter"); + $('.trproject').removeClass("trprojectfiltered"); + $('button.prjprogress').removeClass('selected'); + + // --- get free filter + var sSearch = $("#efilter").val(); + localStorage.setItem("efilter", sSearch); + + $("table").removeHighlight(); + if (sSearch) { + $("td").highlight(sSearch); + } else { + $("td").removeHighlight(); + $('tr').show(); + } + + var RegexFreetext = new RegExp(sSearch, "i"); + + // --- get project filter + var sPrj = $("#prjfilter").val(); + localStorage.setItem("selectedPrj", sPrj); + + // --- get project group filter + var sPrjGroup = $("#prjgroupfilter").val(); + localStorage.setItem("selectedPrjGroup", sPrjGroup); + + // --- 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 (sPrjGroup) { + if ($(this).hasClass("group-" + sPrjGroup)) { + $(this).addClass("trprojectgroupfiltered"); + } else { + $(this).addClass("trproject-projectgroupfilter"); + } + } + 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 != '') { + $('#prjfilter').val(''); + } else { + $('#prjfilter').val(sPrj); + } + window.setTimeout('filterOverviewTable();', 10); + setview('extended'); +} + +/** +* filter table and tiles by filtertext +*/ +function filterTableByTyping() { + filterOverviewTable(); + return false; +} + +/** +* switch view between tiles and table +*/ +function setview(sMode) { + $('.view').hide(); + $('.view' + sMode).show(); + localStorage.setItem("mode", sMode); + return false; +} + +/** +* filter table by role +*/ +function setrole() { + var sRole = $("#rolefilter").val(); + $('.role').hide(); + $('.role' + sRole).show(); + localStorage.setItem("role", sRole); + showResetbtn(); + return false; +} +/** +* filter table by progress status +*/ +function setprogress() { + filterOverviewTable(); + return false; +} + +/** +* set default view; it gets the last values for filter text, +* and selected values in dropdowns and restores the +* last view +*/ +function setDefaultView() { + + + if (localStorage.getItem("progress") && localStorage.getItem("progress") != 'null') { + $("#progressfilter").val(localStorage.getItem("progress")); + } else { + $("#progressfilter").val($("#progressfilter option:first").val()); + } + if (localStorage.getItem("efilter") && localStorage.getItem("efilter") != 'null') { + $("#efilter").val(localStorage.getItem("efilter")); + window.setTimeout("filterTableByTyping();", 10); + } + + if (localStorage.getItem("selectedPrjGroup") && localStorage.getItem("selectedPrjGroup") != 'null') { + $("#prjgroupfilter").val(localStorage.getItem("selectedPrjGroup")); + } else { + // $("#selectedPrjGroup").val($("#selectedPrjgroup option:first").val()); + } + + // window.setTimeout("filterOverviewTable();", 10); + filterOverviewTable(); + + +} + +/** +* Button zum Filter reset anzeigen/ verbergen +*/ +function showResetbtn() { + var sVisible = $("#efilter").val() ? "visible" : "hidden"; + if ($("#prjfilter").val() > "") sVisible = "visible"; + if ($("#prjgroupfilter").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; +} + +/** +* Aktion des Filter reset: Filter zurücksetzen +*/ +function resetFilter() { + $("#prjfilter").val(""); + $("#prjgroupfilter").val(""); + // $("#phasefilter").val(""); + filterOverviewTable(); + $("#efilter").val(""); + window.setTimeout("filterTableByTyping();", 10); + $("#rolefilter").val(""); + window.setTimeout("setrole();", 20); + $("#progressfilter").val(""); + window.setTimeout("setprogress();", 30); + showResetbtn(); + return false; +} + +// ---------------------------------------------------------------------- +// MAIN +// ---------------------------------------------------------------------- + +iStartTime = getUnixTS(); +iRefreshCounter = 0; + +refreshTimer(); +window.setInterval('refreshTimer()', 1000); +window.setTimeout("setDefaultView();", 50); + +// ---------------------------------------------------------------------- diff --git a/public_html/deployment/pages/act_overview.php b/public_html/deployment/pages/act_overview.php index a00c34d996684b6f2c83a2ad8a18bd82d1860922..d96cbb833048d1e278210baa793dacd7b1f1fe0b 100644 --- a/public_html/deployment/pages/act_overview.php +++ b/public_html/deployment/pages/act_overview.php @@ -23,6 +23,8 @@ if (!array_key_exists("prj", $aParams)) { // ---------------------------------------------------------------------- require_once("./classes/projectlist.class.php"); $oPrjList = new projectlist(); + + $BODY_END='<script type="text/javascript" src="/deployment/js/functions_overview.js"></script>'; $BODY = $oPrjList->renderOverview(); } else {