From f1348214cb49735225d382d14a0a13d0636a9287 Mon Sep 17 00:00:00 2001 From: Karl Burkhart Date: Fri, 17 Feb 2012 12:28:42 +0000 Subject: [PATCH] der Gantt Chart zeigt jetzt auch die Projekte der markierten OE an --- content/planner.overlay.js.php | 3 +- content/projekt/gantt.overlay.js.php | 28 +- content/projekt/gantt.overlay.xul.php | 2 +- content/projekt/gantt.svg.php | 874 ++++++++++++++++++-------- 4 files changed, 623 insertions(+), 284 deletions(-) diff --git a/content/planner.overlay.js.php b/content/planner.overlay.js.php index 67775bfcf..85fdbda77 100755 --- a/content/planner.overlay.js.php +++ b/content/planner.overlay.js.php @@ -185,7 +185,8 @@ function treeProjektmenueSelect() else { document.getElementById('toolbarbutton-projektdokument-neu').disabled=true; - document.getElementById('toolbarbutton-projektdokument-zuweisung').disabled=true; + document.getElementById('toolbarbutton-projektdokument-zuweisung').disabled=true; + drawGantt(); } diff --git a/content/projekt/gantt.overlay.js.php b/content/projekt/gantt.overlay.js.php index 7dfaabcd6..06380c09b 100755 --- a/content/projekt/gantt.overlay.js.php +++ b/content/projekt/gantt.overlay.js.php @@ -15,7 +15,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * - * Authors: Christian Paminger + * Authors: Karl Burkhart */ require_once('../../config/vilesci.config.inc.php'); @@ -51,7 +51,6 @@ function showStudienjahr() netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var tree=document.getElementById('tree-projektmenue'); - // Wenn auf die Ueberschrift geklickt wird, soll nix passieren if(tree.currentIndex==-1) { @@ -59,9 +58,17 @@ function showStudienjahr() return; } projekt_kurzbz=getTreeCellText(tree, "treecol-projektmenue-projekt_kurzbz", tree.currentIndex); - - var url = 'projekt/gantt.svg.php?projekt='+projekt_kurzbz+'&studienjahr='+(global_year-1)+'&ansicht=studienjahr'; - global_url = url; + if(projekt_kurzbz == '') + { + oe_kurzbz = getTreeCellText(tree, "treecol-projektmenue-oe", tree.currentIndex); + var url = 'projekt/gantt.svg.php?oe='+oe_kurzbz+'&studienjahr='+(global_year-1)+'&ansicht=studienjahr'; + } + else + { + var url = 'projekt/gantt.svg.php?projekt='+projekt_kurzbz+'&studienjahr='+(global_year-1)+'&ansicht=studienjahr'; + global_url = url; + } + document.getElementById('iframe-ressource-projekt').contentWindow.location.href=url; } @@ -84,8 +91,17 @@ function showKalenderjahr() return; } projekt_kurzbz=getTreeCellText(tree, "treecol-projektmenue-projekt_kurzbz", tree.currentIndex); + if(projekt_kurzbz == '') + { + oe_kurzbz = getTreeCellText(tree, "treecol-projektmenue-oe", tree.currentIndex); + var url = 'projekt/gantt.svg.php?oe='+oe_kurzbz+'&studienjahr='+global_year+'&ansicht=kalenderjahr'; + } + else + { + var url = 'projekt/gantt.svg.php?projekt='+projekt_kurzbz+'&studienjahr='+global_year+'&ansicht=kalenderjahr'; + global_url = url; + } - var url = 'projekt/gantt.svg.php?projekt='+projekt_kurzbz+'&studienjahr='+global_year+'&ansicht=kalenderjahr'; global_url = url; document.getElementById('iframe-ressource-projekt').contentWindow.location.href=url; } diff --git a/content/projekt/gantt.overlay.xul.php b/content/projekt/gantt.overlay.xul.php index 2b0de4f12..00e1c132f 100755 --- a/content/projekt/gantt.overlay.xul.php +++ b/content/projekt/gantt.overlay.xul.php @@ -15,7 +15,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * - * Authors: Christian Paminger + * Authors: Karl Burkhart */ header("Cache-Control: no-cache"); diff --git a/content/projekt/gantt.svg.php b/content/projekt/gantt.svg.php index 06e333a35..1587a3003 100755 --- a/content/projekt/gantt.svg.php +++ b/content/projekt/gantt.svg.php @@ -18,10 +18,18 @@ * Authors: Karl Burkhart */ -if(isset($_REQUEST['projekt'])) - $projekt_kurzbz = $_REQUEST['projekt']; +global $projekt_kurzbz; +global $oe; +global $studienjahr; +global $ansicht; + +if(isset($_REQUEST['projekt']) || isset($_REQUEST['oe'])) +{ + $projekt_kurzbz = isset($_REQUEST['projekt'])?$_REQUEST['projekt']: ''; + $oe = isset($_REQUEST['oe'])?$_REQUEST['oe']:''; +} else - die ('Kein Projekt übergeben!'); + die ('Kein Projekt oder OE übergeben!'); if(isset($_REQUEST['studienjahr'])) $studienjahr = $_REQUEST['studienjahr']; @@ -47,289 +55,603 @@ require_once('../../include/projekt.class.php'); require_once('../../include/functions.inc.php'); require_once('../../include/datum.class.php'); -$projektphasen = new projektphase(); -if(!$projektphasen->getProjektphasen($projekt_kurzbz)) - die('Kein gültiges Projekt übergeben.'); - -$projekt = new projekt(); -if(!$projekt->load($projekt_kurzbz)) - die('Konnte Projekt nicht laden.'); - -$datum = new datum(); -$widthPerWeek = 16; -$startX = 20; -$startY = 90; -// KW in der 28.12 liegt ist lezte KW -$datum_gesamt = $studienjahr.'-12-28'; -$timestamp_gesamt = $datum->mktime_fromdate($datum_gesamt); -$kw_gesamt = date('W',$timestamp_gesamt); -// kommt auf Anzahl der Phasen an -$height = (count($projektphasen->result)) * 50; - -// Zeichne Kalenderjahr -> beginnend mit KW 1 -if($ansicht=='kalenderjahr') +if($projekt_kurzbz != '') { - echo ' - '; - - echo ' - '; - - // Überschriften - echo'Kalenderjahr: '.$studienjahr.''; - echo' KW:'; - - // Zeichne Raster - for($i=1; $i<=$kw_gesamt; $i++) - { - $x1 = $startX + $i*$widthPerWeek; - echo ''; - if($i%2 == 1) - echo ''.$i.''; - - } - - // aktuelle KW markieren - $timestamp_now = time(); - $kw_now = kalenderwoche($timestamp_now); - $year_now=date("Y",$timestamp_now); - if($year_now == $studienjahr) - { - $x = (($startX +($kw_now*$widthPerWeek))-$widthPerWeek/2); - echo ''; - } - - $i=0; - foreach($projektphasen->result as $phase) - { - $width = 0; - $x = 0; - // wenn kein start oder ende angegeben -> nichts zeichnen -> width=0 - if($phase->start != '' && $phase->ende != '') - { - $timestamp_beginn = $datum->mktime_fromdate($phase->start); - $timestamp_end = $datum->mktime_fromdate($phase->ende); - $kw_beginn = kalenderwoche($timestamp_beginn); - $kw_end = kalenderwoche($timestamp_end); - // kw soll bei 0 zu zeichnen beginnen - $kw_beginn = $kw_beginn -1; - $kw_end = $kw_end -1; - - $year_beginn=date("Y",$timestamp_beginn); - $year_end=date("Y",$timestamp_end); - - // phase beginnt und endet im Jahr - if($year_end == $year_beginn && $year_beginn == $studienjahr) - { - $width = ($kw_end - $kw_beginn+1)*$widthPerWeek; - $x = ($startX+$kw_beginn*$widthPerWeek); - } - // endet im nächsten jahr - else if($year_beginn == $studienjahr && $year_end > $year_beginn) - { - $width = ($kw_gesamt - $kw_beginn)*$widthPerWeek; - $x = ($startX+$kw_beginn*$widthPerWeek); - } - // geht über gesamtes jahr - else if($year_beginn < $studienjahr && $year_end > $studienjahr) - { - $width = ($kw_gesamt*$widthPerWeek); - $x = $startX; - } - // beginnt im vorigen und endet im aktuellen - else if($year_beginn < $studienjahr && $year_end == $studienjahr) - { - $width = ($kw_end+1)*$widthPerWeek; - $x = $startX; - } - } - - // zeichne balken - echo ''; - echo''.$phase->bezeichnung.''; - $i++; - } - echo'Projekt: '.$projekt->titel.''; - - echo ''; + // Zeichne alle Phasen vom übergebenen Projekt + getProjektGantt(); } -else if($ansicht == 'studienjahr') +else { - echo ' - '; - echo ' - >'; - - // Überschriften - echo'Studienjahr: '.$studienjahr.'/'.($studienjahr+1).''; - echo' KW:'; - - // WS - $year_old = $studienjahr.'-09-01'; - $timestamp_old = $datum->mktime_fromdate($year_old); - $kw_old = kalenderwoche($timestamp_old); - - // SS - $year_new = ($studienjahr+1).'-09-01'; - $timestamp_new = $datum->mktime_fromdate($year_new); - $kw_new = kalenderwoche($timestamp_new); - - // gesamtanzahl der KWs im Studienjahr - $y = 0; - // Zeichne Raster studienjahr WS - for($i=$kw_old; $i<=$kw_gesamt; $i++) - { - $x1 = ($startX +$y*$widthPerWeek); - echo ''; - if($y%2 == 0) - echo ''.$i.''; - $y++; - } - // Zeichne Raster studienjahr SS - for($i=1; $i<=$kw_new; $i++) - { - $x1 = ($startX +$y*$widthPerWeek); - echo ''; - if($y%2 == 0) - echo ''.$i.''; - $y++; - } - echo ''; - - $i=0; - foreach($projektphasen->result as $phase) - { - $width = 0; - $x = 0; - // wenn kein start oder ende angegeben -> nichts zeichnen -> width=0 - if($phase->start != '' && $phase->ende != '') - { - $timestamp_beginn = $datum->mktime_fromdate($phase->start); - $timestamp_end = $datum->mktime_fromdate($phase->ende); - $kw_beginn = kalenderwoche($timestamp_beginn); - $kw_end = kalenderwoche($timestamp_end); - $kw_beginn = $kw_beginn; - $kw_end = $kw_end; - - $startSS = $kw_gesamt-$kw_old; - - $year_beginn=date("Y",$timestamp_beginn); - $year_end=date("Y",$timestamp_end); - $test = 0; - // phase beginnt und endet im WS - if($year_end == $year_beginn && $year_beginn == $studienjahr && $kw_beginn >= $kw_old) - { - $width = ($kw_end - $kw_beginn + 1)*$widthPerWeek; - $x = ($startX+($kw_beginn-$kw_old)*$widthPerWeek); - $test = 1; - } - // phase beginnt und endet im SS - if($year_end == $year_beginn && $year_beginn == $studienjahr+1 && $kw_beginn >= 1 && $kw_end <=$kw_new) - { - if($kw_end == 1)// es kann auch sein dass 31.12 des kalenderjahres schon in der 1. KW liegt - $kw_end =$kw_new; - $width = ($kw_end - $kw_beginn + 1)*$widthPerWeek; - $x = ($startX+($kw_beginn+$startSS)*$widthPerWeek); - $test = 2; - } - // phase beginnt im WS und endet im SS - else if($year_beginn == $studienjahr && $year_end == $studienjahr+1 && $kw_beginn >= $kw_old && $kw_end <= $kw_new) - { - $width = ($kw_gesamt - $kw_beginn + $kw_end + 1)*$widthPerWeek; - $x = ($startX+($kw_beginn-$kw_old)*$widthPerWeek); - $test = 3; - } - // geht über gesamtes studienjahr - else if($year_beginn == $studienjahr && $kw_beginn <= $kw_old && (($year_end == $studienjahr+1 && $kw_end >= $kw_new) || $year_end > $studienjahr+1)) - { - $width = $y*$widthPerWeek; - $x = $startX; - $test = 4; - } - // geht über gesamtes studienjahr - else if($year_beginn < $studienjahr && $year_end > $studienjahr+1) - { - $width = $y*$widthPerWeek; - $x = $startX; - $test = 5; - } - // beginnt früher und endet im aktuellen WS - else if((($year_beginn == $studienjahr && $kw_beginn < $kw_old) || ($year_beginn < $studienjahr)) && ($year_end == $studienjahr && $kw_end >= $kw_old)) - { + // Zeichne alle Projekte der übergebenen OE + getOeGantt(); + +} - $width = ($kw_end - $kw_old + 1)*$widthPerWeek; - $x = $startX; - $test = 6; - } - // beginnt früher und endet im aktuellen SS - else if((($year_beginn == $studienjahr && $kw_beginn < $kw_old) || ($year_beginn < $studienjahr)) && ($year_end == $studienjahr+1 && $kw_end <= $kw_new)) - { - if($kw_end == 1) // es kann auch sein dass 31.12 des kalenderjahres schon in der 1. KW liegt - $kw_end =$kw_new; - $width = ($kw_gesamt - $kw_old + $kw_end + 1)*$widthPerWeek; - $x = $startX; - $test = 7; - } - // beginnt im aktuellen WS und endet nach Studienjahr im aktuellen Kalenderjahr - else if(($year_beginn == $studienjahr && $kw_beginn >= $kw_old) && ($year_end == $studienjahr+1 && $kw_end > $kw_new)) - { - $width = ($kw_gesamt - $kw_beginn + $kw_new + 1)*$widthPerWeek; - $x = ($startX+($kw_beginn-$kw_old)*$widthPerWeek); - $test = 8; - } - // beginnt im aktuellen WS und endet nach Studienjahr und nach aktuellem Kalenderjahr - else if(($year_beginn == $studienjahr && $kw_beginn > $kw_old) && ($year_end > $studienjahr+1)) - { - $width = ($kw_gesamt - $kw_beginn + $kw_new + 1)*$widthPerWeek; - $x = ($startX+($kw_beginn-$kw_old)*$widthPerWeek); - $test = 9; - } - // beginnt im aktuellen SS und endet nach Studienjahr im aktuellen Kalenderjahr - else if(($year_beginn == $studienjahr+1 && $kw_beginn <= $kw_new) && ($year_end == $studienjahr+1 && ($kw_end > $kw_new || $kw_end == 1))) // da 31.123 - { - $width = ($y-$kw_beginn - $startSS)*$widthPerWeek; - $x = ($startX+($kw_beginn+$startSS)*$widthPerWeek); - $test = 10; - } - // beginnt im aktuellen SS und endet nach Studienjahr und nach aktuellem Kalenderjahr - else if(($year_beginn == $studienjahr+1 && $kw_beginn <= $kw_new) && ($year_end > $studienjahr+1)) - { - $width = ($y-$kw_beginn - $startSS)*$widthPerWeek; - $x = ($startX+($kw_beginn+$startSS)*$widthPerWeek); - $test = 11; - } +/** + * + * Zeichnet den Chart für alle Projekte einer Übergebenen Organisationseinheit + */ +function getOeGantt() +{ + global $oe; + global $studienjahr; + global $ansicht; + + $projekt = new projekt(); + if(!$projekt->getProjekte($oe)) + die('Keine gültige OE übergeben.'); + + $datum = new datum(); + $widthPerWeek = 16; + $startX =50; + $startY = 90; + // KW in der 28.12 liegt ist letzte KW + $datum_gesamt = $studienjahr.'-12-28'; + $timestamp_gesamt = $datum->mktime_fromdate($datum_gesamt); + $kw_gesamt = date('W',$timestamp_gesamt); + + // kommt auf Anzahl der Phasen an + $height = (count($projekt->result)) * 50; + + // Zeichne Kalenderjahr -> beginnend mit KW 1 + if($ansicht=='kalenderjahr') + { + echo ' + '; + + echo ' + '; + + // Überschriften + echo'Kalenderjahr: '.$studienjahr.''; + echo' KW:'; + + // Zeichne Raster + for($i=1; $i<=$kw_gesamt; $i++) + { + $x1 = $startX + $i*$widthPerWeek; + echo ''; + if($i%2 == 1) + echo ''.$i.''; + } - - // zeichne balken - echo "test:".$test.$phase->bezeichnung."jahr".$studienjahr; - echo ''; - echo''.$phase->bezeichnung.''; - $i++; + + // aktuelle KW markieren + $timestamp_now = time(); + $kw_now = kalenderwoche($timestamp_now); + $year_now=date("Y",$timestamp_now); + if($year_now == $studienjahr) + { + $x = (($startX +($kw_now*$widthPerWeek))-$widthPerWeek/2); + echo ''; + } + + $i=0; + foreach($projekt->result as $projekt) + { + $width = 0; + $x = 0; + // wenn kein start oder ende angegeben -> nichts zeichnen -> width=0 + if($projekt->beginn != '' && $projekt->ende != '') + { + $timestamp_beginn = $datum->mktime_fromdate($projekt->beginn); + $timestamp_end = $datum->mktime_fromdate($projekt->ende); + $kw_beginn = kalenderwoche($timestamp_beginn); + $kw_end = kalenderwoche($timestamp_end); + // kw soll bei 0 zu zeichnen beginnen + $kw_beginn = $kw_beginn -1; + $kw_end = $kw_end -1; + + $year_beginn=date("Y",$timestamp_beginn); + $year_end=date("Y",$timestamp_end); + + // phase beginnt und endet im Jahr + if($year_end == $year_beginn && $year_beginn == $studienjahr) + { + $width = ($kw_end - $kw_beginn+1)*$widthPerWeek; + $x = ($startX+$kw_beginn*$widthPerWeek); + } + // endet im nächsten jahr + else if($year_beginn == $studienjahr && $year_end > $year_beginn) + { + $width = ($kw_gesamt - $kw_beginn)*$widthPerWeek; + $x = ($startX+$kw_beginn*$widthPerWeek); + } + // geht über gesamtes jahr + else if($year_beginn < $studienjahr && $year_end > $studienjahr) + { + $width = ($kw_gesamt*$widthPerWeek); + $x = $startX; + } + // beginnt im vorigen und endet im aktuellen + else if($year_beginn < $studienjahr && $year_end == $studienjahr) + { + $width = ($kw_end+1)*$widthPerWeek; + $x = $startX; + } + } + + // zeichne balken + echo ''; + echo''.$projekt->titel.''; + $i++; + } + echo'Organisationseinheit: '.$projekt->oe_kurzbz.''; + + echo ''; } - - echo'Projekt: '.$projekt->titel.''; - - // aktuelle KW markieren - $timestamp_now = time(); - $kw_now = kalenderwoche($timestamp_now); - $year_now=date("Y",$timestamp_now); - if($year_now == $studienjahr && $kw_now > $kw_old) + else if($ansicht == 'studienjahr') { - $x = (($startX +(($kw_now-$kw_old)*$widthPerWeek))-$widthPerWeek/2); - echo ''; + echo ' + '; + echo ''; + + // Überschriften + echo'Studienjahr: '.$studienjahr.'/'.($studienjahr+1).''; + echo' KW:'; + + // WS + $year_old = $studienjahr.'-09-01'; + $timestamp_old = $datum->mktime_fromdate($year_old); + $kw_old = kalenderwoche($timestamp_old); + + // SS + $year_new = ($studienjahr+1).'-09-01'; + $timestamp_new = $datum->mktime_fromdate($year_new); + $kw_new = kalenderwoche($timestamp_new); + + // gesamtanzahl der KWs im Studienjahr + $y = 0; + // Zeichne Raster studienjahr WS + for($i=$kw_old; $i<=$kw_gesamt; $i++) + { + $x1 = ($startX +$y*$widthPerWeek); + echo ''; + if($y%2 == 0) + echo ''.$i.''; + $y++; + } + // Zeichne Raster studienjahr SS + for($i=1; $i<=$kw_new; $i++) + { + $x1 = ($startX +$y*$widthPerWeek); + echo ''; + if($y%2 == 0) + echo ''.$i.''; + $y++; + } + echo ''; + + $i=0; + foreach($projekt->result as $projekt) + { + $width = 0; + $x = 0; + // wenn kein start oder ende angegeben -> nichts zeichnen -> width=0 + if($projekt->beginn != '' && $projekt->ende != '') + { + $timestamp_beginn = $datum->mktime_fromdate($projekt->beginn); + $timestamp_end = $datum->mktime_fromdate($projekt->ende); + $kw_beginn = kalenderwoche($timestamp_beginn); + $kw_end = kalenderwoche($timestamp_end); + $kw_beginn = $kw_beginn; + $kw_end = $kw_end; + + $startSS = $kw_gesamt-$kw_old; + + $year_beginn=date("Y",$timestamp_beginn); + $year_end=date("Y",$timestamp_end); + $test = 0; + // phase beginnt und endet im WS + if($year_end == $year_beginn && $year_beginn == $studienjahr && $kw_beginn >= $kw_old) + { + $width = ($kw_end - $kw_beginn + 1)*$widthPerWeek; + $x = ($startX+($kw_beginn-$kw_old)*$widthPerWeek); + $test = 1; + } + // phase beginnt und endet im SS + if($year_end == $year_beginn && $year_beginn == $studienjahr+1 && $kw_beginn >= 1 && $kw_end <=$kw_new) + { + if($kw_end == 1)// es kann auch sein dass 31.12 des kalenderjahres schon in der 1. KW liegt + $kw_end =$kw_new; + $width = ($kw_end - $kw_beginn + 1)*$widthPerWeek; + $x = ($startX+($kw_beginn+$startSS)*$widthPerWeek); + $test = 2; + } + // phase beginnt im WS und endet im SS + else if($year_beginn == $studienjahr && $year_end == $studienjahr+1 && $kw_beginn >= $kw_old && $kw_end <= $kw_new) + { + $width = ($kw_gesamt - $kw_beginn + $kw_end + 1)*$widthPerWeek; + $x = ($startX+($kw_beginn-$kw_old)*$widthPerWeek); + $test = 3; + } + // geht über gesamtes studienjahr + else if($year_beginn == $studienjahr && $kw_beginn <= $kw_old && (($year_end == $studienjahr+1 && $kw_end >= $kw_new) || $year_end > $studienjahr+1)) + { + $width = $y*$widthPerWeek; + $x = $startX; + $test = 4; + } + // geht über gesamtes studienjahr + else if($year_beginn < $studienjahr && $year_end > $studienjahr+1) + { + $width = $y*$widthPerWeek; + $x = $startX; + $test = 5; + } + // beginnt früher und endet im aktuellen WS + else if((($year_beginn == $studienjahr && $kw_beginn < $kw_old) || ($year_beginn < $studienjahr)) && ($year_end == $studienjahr && $kw_end >= $kw_old)) + { + + $width = ($kw_end - $kw_old + 1)*$widthPerWeek; + $x = $startX; + $test = 6; + } + // beginnt früher und endet im aktuellen SS + else if((($year_beginn == $studienjahr && $kw_beginn < $kw_old) || ($year_beginn < $studienjahr)) && ($year_end == $studienjahr+1 && $kw_end <= $kw_new)) + { + if($kw_end == 1) // es kann auch sein dass 31.12 des kalenderjahres schon in der 1. KW liegt + $kw_end =$kw_new; + $width = ($kw_gesamt - $kw_old + $kw_end + 1)*$widthPerWeek; + $x = $startX; + $test = 7; + } + // beginnt im aktuellen WS und endet nach Studienjahr im aktuellen Kalenderjahr + else if(($year_beginn == $studienjahr && $kw_beginn >= $kw_old) && ($year_end == $studienjahr+1 && $kw_end > $kw_new)) + { + $width = ($kw_gesamt - $kw_beginn + $kw_new + 1)*$widthPerWeek; + $x = ($startX+($kw_beginn-$kw_old)*$widthPerWeek); + $test = 8; + } + // beginnt im aktuellen WS und endet nach Studienjahr und nach aktuellem Kalenderjahr + else if(($year_beginn == $studienjahr && $kw_beginn > $kw_old) && ($year_end > $studienjahr+1)) + { + $width = ($kw_gesamt - $kw_beginn + $kw_new + 1)*$widthPerWeek; + $x = ($startX+($kw_beginn-$kw_old)*$widthPerWeek); + $test = 9; + } + // beginnt im aktuellen SS und endet nach Studienjahr im aktuellen Kalenderjahr + else if(($year_beginn == $studienjahr+1 && $kw_beginn <= $kw_new) && ($year_end == $studienjahr+1 && ($kw_end > $kw_new || $kw_end == 1))) // da 31.123 + { + $width = ($y-$kw_beginn - $startSS)*$widthPerWeek; + $x = ($startX+($kw_beginn+$startSS)*$widthPerWeek); + $test = 10; + } + // beginnt im aktuellen SS und endet nach Studienjahr und nach aktuellem Kalenderjahr + else if(($year_beginn == $studienjahr+1 && $kw_beginn <= $kw_new) && ($year_end > $studienjahr+1)) + { + $width = ($y-$kw_beginn - $startSS)*$widthPerWeek; + $x = ($startX+($kw_beginn+$startSS)*$widthPerWeek); + $test = 11; + } + } + + // zeichne balken + echo "test:".$test.$projekt->titel."jahr".$studienjahr; + echo ''; + echo''.$projekt->titel.''; + $i++; + } + + echo'Organistationseinheit: '.$projekt->oe_kurzbz.''; + + // aktuelle KW markieren + $timestamp_now = time(); + $kw_now = kalenderwoche($timestamp_now); + $year_now=date("Y",$timestamp_now); + if($year_now == $studienjahr && $kw_now > $kw_old) + { + $x = (($startX +(($kw_now-$kw_old)*$widthPerWeek))-$widthPerWeek/2); + echo ''; + } + else if($year_now == $studienjahr+1 && $kw_now < $kw_new) + { + $x = (($startX +(($kw_now+$kw_gesamt - $kw_old +1 )*$widthPerWeek))-$widthPerWeek/2); + echo ''; + } + echo ''; } - else if($year_now == $studienjahr+1 && $kw_now < $kw_new) +} + +/** + * + * Zeichnet den Chart für alle Phasen eines übergebenen PRojektes + */ +function getProjektGantt() +{ + global $projekt_kurzbz; + global $studienjahr; + global $ansicht; + + $projektphasen = new projektphase(); + if(!$projektphasen->getProjektphasen($projekt_kurzbz)) + die('Kein gültiges Projekt übergeben.'); + $projekt = new projekt(); + if(!$projekt->load($projekt_kurzbz)) + die('Konnte Projekt nicht laden.'); + + $datum = new datum(); + $widthPerWeek = 16; + $startX = 20; + $startY = 90; + // KW in der 28.12 liegt ist letzte KW + $datum_gesamt = $studienjahr.'-12-28'; + $timestamp_gesamt = $datum->mktime_fromdate($datum_gesamt); + $kw_gesamt = date('W',$timestamp_gesamt); + + // kommt auf Anzahl der Phasen an + $height = (count($projektphasen->result)) * 50; + + // Zeichne Kalenderjahr -> beginnend mit KW 1 + if($ansicht=='kalenderjahr') { - $x = (($startX +(($kw_now+$kw_gesamt - $kw_old +1 )*$widthPerWeek))-$widthPerWeek/2); - echo ''; + echo ' + '; + + echo ' + '; + + // Überschriften + echo'Kalenderjahr: '.$studienjahr.''; + echo' KW:'; + + // Zeichne Raster + for($i=1; $i<=$kw_gesamt; $i++) + { + $x1 = $startX + $i*$widthPerWeek; + echo ''; + if($i%2 == 1) + echo ''.$i.''; + + } + + // aktuelle KW markieren + $timestamp_now = time(); + $kw_now = kalenderwoche($timestamp_now); + $year_now=date("Y",$timestamp_now); + if($year_now == $studienjahr) + { + $x = (($startX +($kw_now*$widthPerWeek))-$widthPerWeek/2); + echo ''; + } + + $i=0; + foreach($projektphasen->result as $phase) + { + $width = 0; + $x = 0; + // wenn kein start oder ende angegeben -> nichts zeichnen -> width=0 + if($phase->start != '' && $phase->ende != '') + { + $timestamp_beginn = $datum->mktime_fromdate($phase->start); + $timestamp_end = $datum->mktime_fromdate($phase->ende); + $kw_beginn = kalenderwoche($timestamp_beginn); + $kw_end = kalenderwoche($timestamp_end); + // kw soll bei 0 zu zeichnen beginnen + $kw_beginn = $kw_beginn -1; + $kw_end = $kw_end -1; + + $year_beginn=date("Y",$timestamp_beginn); + $year_end=date("Y",$timestamp_end); + + // phase beginnt und endet im Jahr + if($year_end == $year_beginn && $year_beginn == $studienjahr) + { + $width = ($kw_end - $kw_beginn+1)*$widthPerWeek; + $x = ($startX+$kw_beginn*$widthPerWeek); + } + // endet im nächsten jahr + else if($year_beginn == $studienjahr && $year_end > $year_beginn) + { + $width = ($kw_gesamt - $kw_beginn)*$widthPerWeek; + $x = ($startX+$kw_beginn*$widthPerWeek); + } + // geht über gesamtes jahr + else if($year_beginn < $studienjahr && $year_end > $studienjahr) + { + $width = ($kw_gesamt*$widthPerWeek); + $x = $startX; + } + // beginnt im vorigen und endet im aktuellen + else if($year_beginn < $studienjahr && $year_end == $studienjahr) + { + $width = ($kw_end+1)*$widthPerWeek; + $x = $startX; + } + } + + // zeichne balken + echo ''; + echo''.$phase->bezeichnung.''; + $i++; + } + echo'Projekt: '.$projekt->titel.''; + + echo ''; + } + else if($ansicht == 'studienjahr') + { + echo ' + '; + echo ''; + + // Überschriften + echo'Studienjahr: '.$studienjahr.'/'.($studienjahr+1).''; + echo' KW:'; + + // WS + $year_old = $studienjahr.'-09-01'; + $timestamp_old = $datum->mktime_fromdate($year_old); + $kw_old = kalenderwoche($timestamp_old); + + // SS + $year_new = ($studienjahr+1).'-09-01'; + $timestamp_new = $datum->mktime_fromdate($year_new); + $kw_new = kalenderwoche($timestamp_new); + + // gesamtanzahl der KWs im Studienjahr + $y = 0; + // Zeichne Raster studienjahr WS + for($i=$kw_old; $i<=$kw_gesamt; $i++) + { + $x1 = ($startX +$y*$widthPerWeek); + echo ''; + if($y%2 == 0) + echo ''.$i.''; + $y++; + } + // Zeichne Raster studienjahr SS + for($i=1; $i<=$kw_new; $i++) + { + $x1 = ($startX +$y*$widthPerWeek); + echo ''; + if($y%2 == 0) + echo ''.$i.''; + $y++; + } + echo ''; + + $i=0; + foreach($projektphasen->result as $phase) + { + $width = 0; + $x = 0; + // wenn kein start oder ende angegeben -> nichts zeichnen -> width=0 + if($phase->start != '' && $phase->ende != '') + { + $timestamp_beginn = $datum->mktime_fromdate($phase->start); + $timestamp_end = $datum->mktime_fromdate($phase->ende); + $kw_beginn = kalenderwoche($timestamp_beginn); + $kw_end = kalenderwoche($timestamp_end); + $kw_beginn = $kw_beginn; + $kw_end = $kw_end; + + $startSS = $kw_gesamt-$kw_old; + + $year_beginn=date("Y",$timestamp_beginn); + $year_end=date("Y",$timestamp_end); + $test = 0; + // phase beginnt und endet im WS + if($year_end == $year_beginn && $year_beginn == $studienjahr && $kw_beginn >= $kw_old) + { + $width = ($kw_end - $kw_beginn + 1)*$widthPerWeek; + $x = ($startX+($kw_beginn-$kw_old)*$widthPerWeek); + $test = 1; + } + // phase beginnt und endet im SS + if($year_end == $year_beginn && $year_beginn == $studienjahr+1 && $kw_beginn >= 1 && $kw_end <=$kw_new) + { + if($kw_end == 1)// es kann auch sein dass 31.12 des kalenderjahres schon in der 1. KW liegt + $kw_end =$kw_new; + $width = ($kw_end - $kw_beginn + 1)*$widthPerWeek; + $x = ($startX+($kw_beginn+$startSS)*$widthPerWeek); + $test = 2; + } + // phase beginnt im WS und endet im SS + else if($year_beginn == $studienjahr && $year_end == $studienjahr+1 && $kw_beginn >= $kw_old && $kw_end <= $kw_new) + { + $width = ($kw_gesamt - $kw_beginn + $kw_end + 1)*$widthPerWeek; + $x = ($startX+($kw_beginn-$kw_old)*$widthPerWeek); + $test = 3; + } + // geht über gesamtes studienjahr + else if($year_beginn == $studienjahr && $kw_beginn <= $kw_old && (($year_end == $studienjahr+1 && $kw_end >= $kw_new) || $year_end > $studienjahr+1)) + { + $width = $y*$widthPerWeek; + $x = $startX; + $test = 4; + } + // geht über gesamtes studienjahr + else if($year_beginn < $studienjahr && $year_end > $studienjahr+1) + { + $width = $y*$widthPerWeek; + $x = $startX; + $test = 5; + } + // beginnt früher und endet im aktuellen WS + else if((($year_beginn == $studienjahr && $kw_beginn < $kw_old) || ($year_beginn < $studienjahr)) && ($year_end == $studienjahr && $kw_end >= $kw_old)) + { + + $width = ($kw_end - $kw_old + 1)*$widthPerWeek; + $x = $startX; + $test = 6; + } + // beginnt früher und endet im aktuellen SS + else if((($year_beginn == $studienjahr && $kw_beginn < $kw_old) || ($year_beginn < $studienjahr)) && ($year_end == $studienjahr+1 && $kw_end <= $kw_new)) + { + if($kw_end == 1) // es kann auch sein dass 31.12 des kalenderjahres schon in der 1. KW liegt + $kw_end =$kw_new; + $width = ($kw_gesamt - $kw_old + $kw_end + 1)*$widthPerWeek; + $x = $startX; + $test = 7; + } + // beginnt im aktuellen WS und endet nach Studienjahr im aktuellen Kalenderjahr + else if(($year_beginn == $studienjahr && $kw_beginn >= $kw_old) && ($year_end == $studienjahr+1 && $kw_end > $kw_new)) + { + $width = ($kw_gesamt - $kw_beginn + $kw_new + 1)*$widthPerWeek; + $x = ($startX+($kw_beginn-$kw_old)*$widthPerWeek); + $test = 8; + } + // beginnt im aktuellen WS und endet nach Studienjahr und nach aktuellem Kalenderjahr + else if(($year_beginn == $studienjahr && $kw_beginn > $kw_old) && ($year_end > $studienjahr+1)) + { + $width = ($kw_gesamt - $kw_beginn + $kw_new + 1)*$widthPerWeek; + $x = ($startX+($kw_beginn-$kw_old)*$widthPerWeek); + $test = 9; + } + // beginnt im aktuellen SS und endet nach Studienjahr im aktuellen Kalenderjahr + else if(($year_beginn == $studienjahr+1 && $kw_beginn <= $kw_new) && ($year_end == $studienjahr+1 && ($kw_end > $kw_new || $kw_end == 1))) // da 31.123 + { + $width = ($y-$kw_beginn - $startSS)*$widthPerWeek; + $x = ($startX+($kw_beginn+$startSS)*$widthPerWeek); + $test = 10; + } + // beginnt im aktuellen SS und endet nach Studienjahr und nach aktuellem Kalenderjahr + else if(($year_beginn == $studienjahr+1 && $kw_beginn <= $kw_new) && ($year_end > $studienjahr+1)) + { + $width = ($y-$kw_beginn - $startSS)*$widthPerWeek; + $x = ($startX+($kw_beginn+$startSS)*$widthPerWeek); + $test = 11; + } + } + + // zeichne balken + echo "test:".$test.$phase->bezeichnung."jahr".$studienjahr; + echo ''; + echo''.$phase->bezeichnung.''; + $i++; + } + + echo'Projekt: '.$projekt->titel.''; + + // aktuelle KW markieren + $timestamp_now = time(); + $kw_now = kalenderwoche($timestamp_now); + $year_now=date("Y",$timestamp_now); + if($year_now == $studienjahr && $kw_now > $kw_old) + { + $x = (($startX +(($kw_now-$kw_old)*$widthPerWeek))-$widthPerWeek/2); + echo ''; + } + else if($year_now == $studienjahr+1 && $kw_now < $kw_new) + { + $x = (($startX +(($kw_now+$kw_gesamt - $kw_old +1 )*$widthPerWeek))-$widthPerWeek/2); + echo ''; + } + echo ''; } - echo ''; } ?>