Example #1
0
 public function getJPGraphBar($issueActivityMapping)
 {
     $user = UserCache::getInstance()->getUser($this->userid);
     $issue = IssueCache::getInstance()->getIssue($this->bugid);
     if (NULL != $issue->getTcId()) {
         $formatedActivityName = substr($this->bugid . " [" . $issue->getTcId() . "] - " . $issue->getSummary(), 0, 50);
     } else {
         $formatedActivityName = substr($this->bugid . " - " . $issue->getSummary(), 0, 50);
     }
     $formatedActivityInfo = $user->getName();
     if ($issue->getCurrentStatus() < $issue->getBugResolvedStatusThreshold()) {
         $formatedActivityInfo .= " (" . Constants::$statusNames[$issue->getCurrentStatus()] . ")";
     }
     $bar = new GanttBar($this->activityIdx, utf8_decode($formatedActivityName), date('Y-m-d', $this->startTimestamp), date('Y-m-d', $this->endTimestamp), $formatedActivityInfo, 10);
     // --- colors
     $bar->SetPattern(GANTT_SOLID, $this->color);
     $bar->progress->Set($this->progress);
     $bar->progress->SetPattern(GANTT_SOLID, 'slateblue');
     // --- add constrains
     $relationships = $issue->getRelationships();
     $relationships = $relationships['' . Constants::$relationship_constrains];
     if (is_array($relationships)) {
         foreach ($relationships as $bugid) {
             // Add a constrain from the end of this activity to the start of the activity $bugid
             $bar->SetConstrain($issueActivityMapping[$bugid], CONSTRAIN_ENDSTART);
         }
     }
     if (self::$logger->isDebugEnabled()) {
         self::$logger->debug("JPGraphBar bugid={$this->bugid} prj=" . $issue->getProjectId() . " activityIdx={$this->activityIdx}" . " progress={$this->progress} [" . date('Y-m-d', $this->startTimestamp) . " -> " . date('Y-m-d', $this->endTimestamp) . "]");
         self::$logger->debug("JPGraphBar bugid={$this->bugid} GanttBar = " . var_export($bar, TRUE));
     }
     return $bar;
 }
Example #2
0
function prj_drawProjectTasksGanttBar(&$graph, &$row, &$count, $pid = 0, $nameIndent = '', $tid = 0, $sampleCounting = 0, $sm, $stm)
{
    global $_TABLES, $_CONF, $showMonitor, $showTeamMember, $userid, $_PRJCONF, $filterCSV;
    $sql = 'SELECT tid,name,start_date, estimated_end_date,parent_task, progress, progress_id ';
    $sql .= "FROM {$_TABLES['prj_tasks']} ";
    if ($pid == 0) {
        $sql .= 'WHERE pid=0 ';
    } else {
        $sql .= "WHERE pid='{$pid}' ";
    }
    $sql .= "and parent_task={$tid} ";
    if ($filterCSV != '') {
        $sql .= "AND  {$_TABLES['prj_tasks']}.pid  in ({$filterCSV}) ";
    }
    $sql .= ' ORDER BY lhs ASC';
    $result = DB_query($sql, true);
    $testnumrows = DB_numRows($result);
    if ($testnumrows == 0) {
        //this is to help overcome any COOKIE issues with the filtercsv
        $sql = 'SELECT tid,name,start_date, estimated_end_date,parent_task, progress, progress_id ';
        $sql .= "FROM {$_TABLES['prj_tasks']} ";
        if ($pid == 0) {
            $sql .= 'WHERE pid=0 ';
        } else {
            $sql .= "WHERE pid='{$pid}' ";
        }
        $sql .= "and parent_task={$tid} ";
        $sql .= ' ORDER BY lhs ASC';
        $result = DB_query($sql);
    }
    for ($j = 0; $j < DB_numrows($result); $j++) {
        list($tid, $name, $startdate, $enddate, $parent_task, $progress, $status) = DB_fetchArray($result);
        $permsArray = prj_getProjectPermissions($pid, $userid, $tid);
        $ownertoken = getTaskToken($tid, $userid, "{$_TABLES['prj_task_users']}", "{$_TABLES['prj_tasks']}");
        if ($sm == '1' && $stm == '1') {
            // all projects
            if ($permsArray['monitor'] == '1' || $permsArray['teammember'] == '1' || $ownertoken != 0) {
                $name = html_entity_decode($name);
                $strdate = strftime("%Y/%m/%d", $startdate);
                $edate = strftime("%Y/%m/%d", $enddate);
                $sql = "SELECT c.fullname ";
                $sql .= "FROM {$_TABLES['prj_task_users']} a ";
                $sql .= "INNER JOIN {$_TABLES['prj_tasks']} b on a.tid=b.tid ";
                $sql .= "INNER JOIN {$_TABLES['users']} c on a.uid=c.uid ";
                $sql .= "WHERE a.role='o' AND a.tid={$tid} ";
                $result2 = DB_query($sql);
                list($owner) = DB_fetchArray($result2);
                $link = $_CONF['site_url'] . "/nexproject/viewproject.php?mode=view&id=" . $tid;
                $count = $count + 1;
                if (strlen($name) > $_PRJCONF['project_name_length']) {
                    $name = substr($name, 0, $_PRJCONF['project_name_length']);
                    $name .= "...";
                }
                $name = $nameIndent . $name;
                if ($strdate == $edate) {
                    $milestone = new Milestone($row, $name, $strdate);
                    $milestone->mark->SetType(MARK_DIAMOND);
                    $graph->Add($milestone);
                } else {
                    $taskActivity = new GanttBar($count, $name, "{$strdate}", "{$edate}", "");
                    if ($status == 0) {
                        // Yellow diagonal line pattern on a red background
                        $taskActivity->SetPattern(BAND_RDIAG, "green");
                        $taskActivity->progress->SetPattern(GANTT_RDIAG, "black");
                        $taskActivity->progress->SetFillColor("white");
                    } elseif ($status == 1) {
                        $taskActivity->SetPattern(BAND_RDIAG, "yellow");
                        $taskActivity->progress->SetPattern(GANTT_RDIAG, "black");
                        $taskActivity->progress->SetFillColor("white");
                    } else {
                        $taskActivity->SetPattern(BAND_RDIAG, "red");
                        $taskActivity->progress->SetPattern(GANTT_RDIAG, "black");
                        $taskActivity->progress->SetFillColor("white");
                    }
                    $taskActivity->caption->SetFont(FF_FONT1, FS_NORMAL, 10);
                    $taskActivity->caption->SetColor('black');
                    $taskActivity->caption->Set($name);
                    // Set absolute height
                    $taskActivity->SetHeight(10);
                    $taskActivity->progress->Set($progress / 100);
                    // Specify progress
                    $taskActivity->SetCSIMTarget("{$link}");
                    $taskActivity->SetCSIMAlt($progress . "% completed");
                    $tempval = $_GET['expanded'];
                    $tempval2 = $_SERVER['PHP_SELF'];
                    $taskActivity->title->SetCSIMTarget("");
                    $taskActivity->title->SetCSIMAlt($progress . "% completed");
                    $qconstraints = DB_query("SELECT tid FROM {$_TABLES['prj_tasks']} WHERE parent_task='{$tid}' ORDER BY lhs ASC");
                    $numconstraints = DB_numRows($qconstraints);
                    for ($c = 1; $c <= $numconstraints; $c++) {
                        //$taskActivity->SetConstrain($row+$c,CONSTRAIN_STARTSTART,"maroon4");
                    }
                    // Add line to Gantt Chart
                    if (!$sampleCounting) {
                        $graph->Add($taskActivity);
                    }
                }
                $row++;
            }
        } else {
            // my projects
            if ($ownertoken != 0) {
                $name = html_entity_decode($name);
                $strdate = strftime("%Y/%m/%d", $startdate);
                $edate = strftime("%Y/%m/%d", $enddate);
                $sql = "SELECT c.fullname ";
                $sql .= "FROM {$_TABLES['prj_task_users']} a ";
                $sql .= "INNER JOIN {$_TABLES['prj_tasks']} b on a.tid=b.tid ";
                $sql .= "INNER JOIN {$_TABLES['users']} c on a.uid=c.uid ";
                $sql .= "WHERE a.role='o' AND a.tid={$tid}";
                $result2 = DB_query($sql);
                list($owner) = DB_fetchArray($result2);
                $link = $_CONF['site_url'] . "/nexproject/viewproject.php?mode=view&id=" . $tid;
                $count = $count + 1;
                if (strlen($name) > $_PRJCONF['project_name_length']) {
                    $name = substr($name, 0, $_PRJCONF['project_name_length']);
                    $name .= "...";
                }
                $name = $nameIndent . $name;
                if ($strdate == $edate) {
                    $milestone = new Milestone($row, $name, $strdate);
                    $milestone->mark->SetType(MARK_DIAMOND);
                    $graph->Add($milestone);
                } else {
                    $taskActivity = new GanttBar($count, $name, "{$strdate}", "{$edate}", "");
                    if ($status == 0) {
                        // Yellow diagonal line pattern on a red background
                        $taskActivity->SetPattern(BAND_RDIAG, "green");
                        $taskActivity->progress->SetPattern(GANTT_RDIAG, "black");
                        $taskActivity->progress->SetFillColor("white");
                    } elseif ($status == 1) {
                        $taskActivity->SetPattern(BAND_RDIAG, "yellow");
                        $taskActivity->progress->SetPattern(GANTT_RDIAG, "black");
                        $taskActivity->progress->SetFillColor("white");
                    } else {
                        $taskActivity->SetPattern(BAND_RDIAG, "red");
                        $taskActivity->progress->SetPattern(GANTT_RDIAG, "black");
                        $taskActivity->progress->SetFillColor("white");
                    }
                    $taskActivity->caption->SetFont(FF_FONT1, FS_NORMAL, 10);
                    $taskActivity->caption->SetColor('black');
                    $taskActivity->caption->Set($name);
                    // Set absolute height
                    $taskActivity->SetHeight(10);
                    $taskActivity->progress->Set($progress / 100);
                    // Specify progress
                    $taskActivity->SetCSIMTarget("{$link}");
                    $taskActivity->SetCSIMAlt($progress . "% completed");
                    $tempval = $_GET['expanded'];
                    $tempval2 = $_SERVER['PHP_SELF'];
                    $taskActivity->title->SetCSIMTarget("");
                    $taskActivity->title->SetCSIMAlt($progress . "% completed");
                    $qconstraints = DB_query("SELECT tid FROM {$_TABLES['prj_tasks']} WHERE parent_task='{$tid}' ORDER BY lhs ASC");
                    $numconstraints = DB_numRows($qconstraints);
                    for ($c = 1; $c <= $numconstraints; $c++) {
                        //$taskActivity->SetConstrain($row+$c,CONSTRAIN_STARTSTART,"maroon4");
                    }
                    // Add line to Gantt Chart
                    if (!$sampleCounting) {
                        $graph->Add($taskActivity);
                    }
                }
                $row++;
            }
        }
        if (DB_count($_TABLES['prj_tasks'], 'parent_task', $tid) > 0) {
            prj_drawProjectTasksGanttBar($graph, $row, $count, $pid, $nameIndent . " ", $tid, $sampleCounting, $sm, $stm);
        }
    }
    //end for
}
Example #3
0
                    $bar2->title->SetFont(FF_CUSTOM, FS_NORMAL, 9);
                    $bar2->title->SetColor('#CC0000');
                    $graph->Add($bar2);
                }
                //Insert workers for each task into Gantt Chart
                $q->addTable('user_tasks', 't');
                $q->addQuery('DISTINCT user_username, t.task_id');
                $q->addJoin('users', 'u', 'u.user_id = t.user_id');
                $q->addWhere('t.task_id = ' . $t['task_id']);
                $q->addOrder('user_username ASC');
                $workers = $q->loadList();
                $q->clear();
                $workersName = '';
                foreach ($workers as $w) {
                    $workersName .= ' ' . $w['user_username'];
                    $bar3 = new GanttBar($row++, array('   * ' . $w['user_username'], ' ', ' ', ' '), $tStartObj->format(FMT_DATETIME_MYSQL), $tEndObj->format(FMT_DATETIME_MYSQL), 0.6);
                    $bar3->title->SetFont(FF_CUSTOM, FS_NORMAL, 9);
                    $bar3->title->SetColor(bestColor('#ffffff', '#' . $p['project_color_identifier'], '#000000'));
                    $bar3->SetFillColor('#' . $p['project_color_identifier']);
                    $graph->Add($bar3);
                }
                //End of insert workers for each task into Gantt Chart
            }
            unset($tasks);
            //End of insert tasks into Gantt Chart
        }
        //End of if showAllGant checkbox is checked
    }
}
// End of check for valid projects array.
unset($projects);
Example #4
0
     $q->addWhere('t.task_duration_type = 1');
     $q->addWhere('t.task_id = ' . (int) $a['task_id']);
     $wh2 = $q->loadResult();
     $work_hours += $wh2;
     $q->clear();
     //due to the round above, we don't want to print decimals unless they really exist
     $dur = $work_hours;
 }
 $dur .= ' h';
 $enddate = new CDate($end);
 $startdate = new CDate($start);
 //$gantt->addBar($name, $start, $end, $actual_end, $caption, 0.6, $p['project_color_identifier'], $p['project_active'], $progress);
 if ($caller == 'todo') {
     $bar = new GanttBar($row++, array($name, $pname, $dur, $startdate->format($df), $enddate->format($df)), substr($start, 2, 8), substr($end, 2, 8), $cap, $a['task_dynamic'] == 1 ? 0.1 : 0.6);
 } else {
     $bar = new GanttBar($row++, array($name, $dur, $startdate->format($df), $enddate->format($df)), substr($start, 2, 8), substr($end, 2, 8), $cap, $a['task_dynamic'] == 1 ? 0.1 : 0.6);
 }
 $bar->progress->Set(min($progress / 100, 1));
 if (is_file(TTF_DIR . 'FreeSans.ttf')) {
     $bar->title->SetFont(FF_CUSTOM, FS_NORMAL, 8);
 }
 if ($a['task_dynamic'] == 1) {
     if (is_file(TTF_DIR . 'FreeSans.ttf')) {
         $bar->title->SetFont(FF_CUSTOM, FS_BOLD, 8);
     }
     $bar->rightMark->Show();
     $bar->rightMark->SetType(MARK_RIGHTTRIANGLE);
     $bar->rightMark->SetWidth(3);
     $bar->rightMark->SetColor('black');
     $bar->rightMark->SetFillColor('black');
     $bar->leftMark->Show();
 function CreateSimple($data, $constrains = array(), $progress = array())
 {
     $num = count($data);
     for ($i = 0; $i < $num; ++$i) {
         switch ($data[$i][1]) {
             case ACTYPE_GROUP:
                 // Create a slightly smaller height bar since the
                 // "wings" at the end will make it look taller
                 $a = new GanttBar($data[$i][0], $data[$i][2], $data[$i][3], $data[$i][4], '', 8);
                 $a->title->SetFont($this->iSimpleFont, FS_BOLD, $this->iSimpleFontSize);
                 $a->rightMark->Show();
                 $a->rightMark->SetType(MARK_RIGHTTRIANGLE);
                 $a->rightMark->SetWidth(8);
                 $a->rightMark->SetColor('black');
                 $a->rightMark->SetFillColor('black');
                 $a->leftMark->Show();
                 $a->leftMark->SetType(MARK_LEFTTRIANGLE);
                 $a->leftMark->SetWidth(8);
                 $a->leftMark->SetColor('black');
                 $a->leftMark->SetFillColor('black');
                 $a->SetPattern(BAND_SOLID, 'black');
                 $csimpos = 6;
                 break;
             case ACTYPE_NORMAL:
                 $a = new GanttBar($data[$i][0], $data[$i][2], $data[$i][3], $data[$i][4], '', 10);
                 $a->title->SetFont($this->iSimpleFont, FS_NORMAL, $this->iSimpleFontSize);
                 $a->SetPattern($this->iSimpleStyle, $this->iSimpleColor);
                 $a->SetFillColor($this->iSimpleBkgColor);
                 // Check if this activity should have a constrain line
                 $n = count($constrains);
                 for ($j = 0; $j < $n; ++$j) {
                     if (empty($constrains[$j]) || count($constrains[$j]) != 3) {
                         JpGraphError::RaiseL(6003, $j);
                         //("Invalid format for Constrain parameter at index=$j in CreateSimple(). Parameter must start with index 0 and contain arrays of (Row,Constrain-To,Constrain-Type)");
                     }
                     if ($constrains[$j][0] == $data[$i][0]) {
                         $a->SetConstrain($constrains[$j][1], $constrains[$j][2], 'black', ARROW_S2, ARROWT_SOLID);
                     }
                 }
                 // Check if this activity have a progress bar
                 $n = count($progress);
                 for ($j = 0; $j < $n; ++$j) {
                     if (empty($progress[$j]) || count($progress[$j]) != 2) {
                         JpGraphError::RaiseL(6004, $j);
                         //("Invalid format for Progress parameter at index=$j in CreateSimple(). Parameter must start with index 0 and contain arrays of (Row,Progress)");
                     }
                     if ($progress[$j][0] == $data[$i][0]) {
                         $a->progress->Set($progress[$j][1]);
                         $a->progress->SetPattern($this->iSimpleProgressStyle, $this->iSimpleProgressColor);
                         $a->progress->SetFillColor($this->iSimpleProgressBkgColor);
                         //$a->progress->SetPattern($progress[$j][2],$progress[$j][3]);
                         break;
                     }
                 }
                 $csimpos = 6;
                 break;
             case ACTYPE_MILESTONE:
                 $a = new MileStone($data[$i][0], $data[$i][2], $data[$i][3]);
                 $a->title->SetFont($this->iSimpleFont, FS_NORMAL, $this->iSimpleFontSize);
                 $a->caption->SetFont($this->iSimpleFont, FS_NORMAL, $this->iSimpleFontSize);
                 $csimpos = 5;
                 break;
             default:
                 die('Unknown activity type');
                 break;
         }
         // Setup caption
         $a->caption->Set($data[$i][$csimpos - 1]);
         // Check if this activity should have a CSIM target�?
         if (!empty($data[$i][$csimpos])) {
             $a->SetCSIMTarget($data[$i][$csimpos]);
             $a->SetCSIMAlt($data[$i][$csimpos + 1]);
         }
         if (!empty($data[$i][$csimpos + 2])) {
             $a->title->SetCSIMTarget($data[$i][$csimpos + 2]);
             $a->title->SetCSIMAlt($data[$i][$csimpos + 3]);
         }
         $this->Add($a);
     }
 }
Example #6
0
<?php

// Gantt example to create CSIM
include "../jpgraph.php";
include "../jpgraph_gantt.php";
$bar1 = new GanttBar(0, "Activity 1", "2001-12-21", "2002-01-20");
$bar1->SetCSIMTarget('#', 'Go back 1');
$bar1->title->SetCSIMTarget('#', 'Go back 1 (title)');
$bar2 = new GanttBar(1, "Activity 2", "2002-01-03", "2002-01-25");
$bar2->SetCSIMTarget('#', 'Go back 2');
$bar2->title->SetCSIMTarget('#', 'Go back 2 (title)');
$graph = new GanttGraph(500);
$graph->title->Set("Example with image map");
$graph->ShowHeaders(GANTT_HYEAR | GANTT_HMONTH | GANTT_HDAY | GANTT_HWEEK);
$graph->scale->week->SetStyle(WEEKSTYLE_FIRSTDAY);
$graph->scale->week->SetFont(FF_FONT1);
$graph->Add(array($bar1, $bar2));
// And stroke
$graph->StrokeCSIM();
?>


Example #7
0
     $bar = new GanttBar($row++, $bar_label_array, $start, $end, $cap, $a['task_dynamic'] == 1 ? 0.1 : 0.6);
     $bar->progress->Set(min($progress / 100, 1));
     // make the font a little bigger if showing task names only
     if ($monospacefont) {
         $bar->title->SetFont(FF_DEJAVUMONO, FS_NORMAL, 10);
         //specify the use of VeraMono
     } else {
         $bar->title->SetFont(FF_DEJAVU, FS_NORMAL, 10);
     }
 } else {
     if ($caller == 'todo') {
         $bar_label_array = array($name, $pname, $dur, $startdate->format($df), $enddate->format($df));
     } else {
         $bar_label_array = array($name, $dur, $startdate->format($df), $enddate->format($df));
     }
     $bar = new GanttBar($row++, $bar_label_array, $start, $end, $cap, $a['task_dynamic'] == 1 ? 0.1 : 0.6);
     $bar->progress->Set(min($progress / 100, 1));
     if ($monospacefont) {
         $bar->title->SetFont(FF_DEJAVUMONO, FS_NORMAL, 8);
         //specify the use of VeraMono
     } else {
         $bar->title->SetFont(FF_DEJAVU, FS_NORMAL, 8);
     }
 }
 // make the font a little bigger if showing task names only////////////////////////////////
 if ($a['task_dynamic'] == 1) {
     if ($showTaskNameOnly == '1') {
         if ($monospacefont) {
             $bar->title->SetFont(FF_DEJAVUMONO, FS_BOLD, 10);
             //specify the use of VeraMono
         } else {
Example #8
0
 /**
  * @param int $teamid
  * @param int $startTimestamp
  * @param int $endTimestamp
  * @param int[] $projectIds
  * @return GanttGraph
  */
 private function getGanttGraph($teamid, $startTimestamp, $endTimestamp, array $projectIds)
 {
     $graph = new GanttGraph();
     // set graph title
     $team = TeamCache::getInstance()->getTeam($teamid);
     if (0 != count($projectIds)) {
         $pnameList = "";
         foreach ($projectIds as $pid) {
             if ("" != $pnameList) {
                 $pnameList .= ",";
             }
             $project = ProjectCache::getInstance()->getProject($pid);
             $pnameList .= $project->getName();
         }
         $graph->title->Set(T_('Team') . ' ' . $team->getName() . '    ' . T_('Project(s)') . ': ' . $pnameList);
     } else {
         $graph->title->Set(T_('Team') . ' ' . $team->getName() . '    (' . T_('All projects') . ')');
     }
     // Setup scale
     $graph->ShowHeaders(GANTT_HYEAR | GANTT_HMONTH | GANTT_HDAY | GANTT_HWEEK);
     $graph->scale->week->SetStyle(WEEKSTYLE_FIRSTDAYWNBR);
     $gantManager = new GanttManager($teamid, $startTimestamp, $endTimestamp);
     $teamActivities = $gantManager->getTeamActivities();
     // mapping to ease constrains building
     // Note: $issueActivityMapping must be completed before calling $a->getJPGraphBar()
     $issueActivityMapping = array();
     $activityIdx = 0;
     foreach ($teamActivities as $a) {
         $a->setActivityIdx($activityIdx);
         $issueActivityMapping[$a->bugid] = $activityIdx;
         ++$activityIdx;
     }
     // Add the specified activities
     foreach ($teamActivities as $a) {
         // FILTER on projects
         if (NULL != $projectIds && 0 != sizeof($projectIds)) {
             $issue = IssueCache::getInstance()->getIssue($a->bugid);
             if (!in_array($issue->getProjectId(), $projectIds)) {
                 // skip activity indexing
                 continue;
             }
         }
         $filterTeamActivities[] = $a;
         // Shorten bar depending on gantt startDate
         if (NULL != $startTimestamp && $a->startTimestamp < $startTimestamp) {
             // leave one day to insert prefixBar
             $newStartTimestamp = $startTimestamp + 60 * 60 * 24;
             if ($newStartTimestamp > $a->endTimestamp) {
                 // there is not enough space for a prefixBar
                 $newStartTimestamp = $startTimestamp;
                 self::$logger->debug("bugid=" . $a->bugid . ": Shorten bar to Gantt start date");
             } else {
                 $formattedStartDate = date('Y-m-d', $startTimestamp);
                 $prefixBar = new GanttBar($a->activityIdx, "", $formattedStartDate, $formattedStartDate, "", 10);
                 $prefixBar->SetBreakStyle(true, 'dotted', 1);
                 $graph->Add($prefixBar);
                 self::$logger->debug("bugid=" . $a->bugid . ": Shorten bar & add prefixBar");
             }
             self::$logger->debug("bugid=" . $a->bugid . ": Shorten bar from " . date('Y-m-d', $a->startTimestamp) . " to " . date('Y-m-d', $newStartTimestamp));
             $a->startTimestamp = $newStartTimestamp;
         }
         $bar = $a->getJPGraphBar($issueActivityMapping);
         $graph->Add($bar);
     }
     return $graph;
 }
Example #9
0
function grafica($fecha_max, $fecha_min, $datos)
{
    $graph = new GanttGraph();
    $graph->title->Set("");
    // Rango de fechas a presentar
    $graph->SetDateRange($fecha_min, $fecha_max);
    // linea de espaciado vertical entre los elementos
    $graph->SetVMarginFactor(2);
    // configuracion de colores
    $graph->SetMarginColor('lightgreen@0.8');
    //  color del fondo
    $graph->SetBox(true, 'yellow:0.6', 2);
    //  contorno del marco interior
    $graph->SetFrame(true, 'darkgreen', 4);
    // contorno  del marco exterior
    $graph->scale->divider->SetColor('yellow:0.6');
    // linea divisora de datos y grafico
    $graph->scale->dividerh->SetColor('red:0.6');
    //liena que divide el tiempo con las barras de la grafica
    // Ponemos la medida de tiempo que queremos usar, por ejemplo años, meses, dias, hors o minutos
    //por ejemplo, si queremos solamente la division por meses y semanas en lugar de tener
    //GANTT_HWEEK | GANTT_HMONTH | GANTT_HYEAR | GANTT_HDAY
    //dejamos
    //GANTT_HWEEK | GANTT_HMONTH
    // para mas opciones de division de tiempo ver comentarios abajo
    $graph->ShowHeaders(GANTT_HWEEK | GANTT_HMONTH | GANTT_HYEAR | GANTT_HDAY);
    $graph->scale->month->grid->SetColor('gray');
    //lineas verticales que dividen los meses
    $graph->scale->month->grid->Show(true);
    $graph->scale->year->grid->SetColor('gray');
    // linea verticales que dividen los años
    $graph->scale->year->grid->Show(true);
    $graph->scale->actinfo->SetColTitles(array('Acción', 'Duracion', 'Inicio', 'Final', 'Porcentaje'), array(30, 100));
    $graph->scale->actinfo->SetBackgroundColor('blue:0.5@0.5');
    //color de fondo de los titulos de la tabla
    $graph->scale->actinfo->SetFont(FF_ARIAL, FS_NORMAL, 12);
    //tipografia
    // division vertical de los datos a la izquierda, posibles valores 'solid', 'dotted', 'dashed'
    $graph->scale->actinfo->vgrid->SetStyle('solid');
    $graph->scale->actinfo->vgrid->SetColor('red');
    // color de las divisiones puestas en el renglon anterior
    // Configuración de los iconos que queremos usar
    //para poner algun icono no definido podemos usarlo de la siguiente manera
    //$icon = new IconImage("imagen.png",0.7);
    //en el ejemplo estoy usando una omagen desde blogspot
    //el numero que es el segundo parametro de IconImage es el porcentaje de la imagen, en este caso esta al 20%
    $erricon = new IconImage("logo-copia.png", 0.2);
    $startconicon = new IconImage(GICON_FOLDEROPEN, 0.6);
    $endconicon = new IconImage(GICON_TEXTIMPORTANT, 0.5);
    //ahora ponemos los datos de la tabla e iniciamos los datos de las barras
    //    $data = array(
    //        //valores del arreglo:
    //        //indice del arreglo, arreglo de datos para la informacion a la izquierda, fecha de inicio de la barra, fecha final de la barra, tipografia, estilo,tamaño tipografia,% de progreso en la barra
    //        array(0,array("Pre-study","17 days","1 Nov '2011","1 Mar '2012")
    //              , "2011-11-01","2012-01-1",FF_ARIAL,FS_NORMAL,8, 0.5),//el 0.5 indica el 50%, que ocuparemos en la linea 74, dando su posicion en el arreglo
    //        array(1,array("Prototype","10 days","26 Oct '2011","16 Nov '2011"),
    //              "2011-10-26","2011-11-01",FF_ARIAL,FS_NORMAL,8, 0.12),
    //        array(2,array("Report","12 days","1 Mar '2012","13 Mar '2012"),
    //              "2012-03-01","2012-03-13",FF_ARIAL,FS_NORMAL,8, 1)
    //    );
    $data = $datos;
    // Crea las barras y las añade a la grafica gantt
    for ($i = 0; $i < count($data); ++$i) {
        $bar = new GanttBar($data[$i][0], $data[$i][1], $data[$i][2], $data[$i][3], '', 10);
        if (count($data[$i]) > 4) {
            $bar->title->SetFont($data[$i][4], $data[$i][5], $data[$i][6]);
        }
        $bar->SetPattern(BAND_RDIAG, "yellow");
        $bar->SetFillColor("gray");
        $bar->progress->Set($data[$i][7]);
        // ocupamos el % de adelanto en la actividad
        $bar->progress->SetPattern(GANTT_SOLID, "darkgreen");
        //$bar->title->SetCSIMTarget(array('#1'.$i,'#2'.$i,'#3'.$i,'#4'.$i,'#5'.$i),array('11'.$i,'22'.$i,'33'.$i));
        $graph->Add($bar);
        //echo "<br>--> ".$data[$i][7];
    }
    // Creamos la imagen y le damos nombre, la imagen se guarda donde estan estos archivos
    $graph->Stroke('imagenprueba.jpg');
}
Example #10
0
<?php

// Gantt example
include "../jpgraph.php";
include "../jpgraph_gantt.php";
// Create the basic graph
$graph = new GanttGraph();
$graph->title->Set("Example with multiple constrains");
$bar1 = new GanttBar(0, "Label 1", "2003-06-08", "2003-06-12");
$bar2 = new GanttBar(1, "Label 2", "2003-06-16", "2003-06-19");
$bar3 = new GanttBar(2, "Label 3", "2003-06-15", "2003-06-21");
//create constraints
$bar1->SetConstrain(1, CONSTRAIN_ENDSTART);
$bar1->SetConstrain(2, CONSTRAIN_ENDSTART);
// Setup scale
$graph->ShowHeaders(GANTT_HDAY | GANTT_HWEEK);
$graph->scale->week->SetStyle(WEEKSTYLE_FIRSTDAYWNBR);
// Add the specified activities
$graph->Add($bar1);
$graph->Add($bar2);
$graph->Add($bar3);
// .. and stroke the graph
$graph->Stroke();
Example #11
0
// match the weekend settings ...
$graph->scale->hour->SetFontColor($styles->val('image.session.header.color', 'black', true));
$graph->scale->hour->SetBackgroundColor($styles->val('image.session.header.bgcolor', 'lightyellow:1.5', true));
$graph->scale->hour->SetFont(constant($styles->val('image.session.font', 'FF_FONT0', true)));
$graph->scale->hour->SetIntervall($styles->val('image.session.interval', 2, true));
$graph->scale->hour->SetStyle(constant($styles->val('image.session.header.hourstyle', 'HOURSTYLE_H24', true)));
/**
$graph->scale->actinfo->SetBackgroundColor('lightyellow:1.5');
$graph->scale->actinfo->SetFont(FF_FONT0);
$graph->scale->actinfo->SetColTitles(array(""));
/**/
$show = (bool) $styles->val('image.session.hgrid.show', true, true);
$graph->hgrid->Show($show);
if ($show) {
    $graph->hgrid->SetRowFillColor($styles->val('image.session.hgrid.color1', 'whitesmoke@0.9', true), $styles->val('image.session.hgrid.color2', 'darkblue@0.9', true));
}
for ($i = 0; $i < count($data); ++$i) {
    $bar = new GanttBar($data[$i][0], $data[$i][1], $data[$i][2], $data[$i][3]);
    $bar->SetPattern(constant($styles->val('image.session.bar.pattern', 'BAND_RDIAG', true)), $styles->val('image.session.bar.patternfill', 'lightblue', true));
    $bar->SetFillColor($styles->val('image.session.bar.fill', 'BAND_SOLID', true));
    $shadow = $styles->val('image.session.bar.shadow', '', true);
    if ($shadow) {
        $bar->SetShadow(true, $shadow);
    }
    $graph->Add($bar);
}
$graph->SetVMarginFactor($styles->val('image.session.bar.vmargin', 0.4, true));
if ($styles->val('image.session.showfooter', 'image.common.footer.show')) {
    stdImgFooter($graph);
}
$graph->Stroke();
Example #12
0
 public function graficar($filename)
 {
     $graph = new GanttGraph();
     $graph->SetShadow();
     $graph->SetBox();
     // Only show part of the Gantt
     $graph = new GanttGraph(1000);
     /*
     $graph->title->Set('Proceso '.$this->dataSource->getParameter('desc_proceso_macro')."\n".
     																			'Seguimiento de Solicitud '.$this->dataSource->getParameter('numero')."\n".
     																			'Unidad '.$this->dataSource->getParameter('desc_uo'));
     $graph->title->SetFont(FF_ARIAL,FS_BOLD,6);
     */
     define('UTF-8', $locale_char_set);
     // Setup some "very" nonstandard colors
     $graph->SetMarginColor('lightgreen@0.8');
     $graph->SetBox(true, 'yellow:0.6', 2);
     $graph->SetFrame(true, 'darkgreen', 4);
     $graph->scale->divider->SetColor('yellow:0.6');
     $graph->scale->dividerh->SetColor('yellow:0.6');
     // Explicitely set the date range
     // (Autoscaling will of course also work)
     // Display month and year scale with the gridlines
     $graph->ShowHeaders(GANTT_HMONTH | GANTT_HYEAR | GANTT_HDAY);
     $graph->scale->month->grid->SetColor('gray');
     $graph->scale->month->grid->Show(true);
     $graph->scale->year->grid->SetColor('gray');
     $graph->scale->year->grid->Show(true);
     // Setup a horizontal grid
     $graph->hgrid->Show();
     $graph->hgrid->SetRowFillColor('darkblue@0.9');
     // Setup activity info
     // For the titles we also add a minimum width of 100 pixels for the Task name column
     $graph->scale->actinfo->SetColTitles(array('Tipo', 'Estado', 'Responsable', 'Duracion', 'Inicio', 'Fin'), array(40, 100));
     $graph->scale->actinfo->SetBackgroundColor('green:0.5@0.5');
     $graph->scale->actinfo->SetFont(FF_ARIAL, FS_NORMAL, 10);
     $data = array();
     $dataset = $this->dataSource->getDataset();
     $tamanioDataset = count($dataset);
     $fechaInicio = 0;
     $fechaFin = 0;
     for ($i = 0; $i < $tamanioDataset; $i++) {
         if ($i == 0) {
             $fechaInicio = $dataset[$i]['fecha_reg'];
         }
         /*
         if($dataset[$i]['nombre_estado']=='En_Proceso'||$dataset[$i]['nombre_estado']=='Habilitado para pagar'||$dataset[$i]['nombre_estado']=='En Pago'){
         		$milestone = new MileStone($i,$dataset[$i]['nombre_estado'],$dataset[$i]['fecha_reg'],$dataset[$i]['fecha_reg']);
         		$milestone->title->SetColor("black");
         		$milestone->title->SetFont(FF_FONT1,FS_BOLD);
         		$graph->Add($milestone);
         		continue;
         }
         */
         $actividad = array();
         array_push($actividad, $i);
         if ($i == $tamanioDataset - 1) {
             $fechaFin = $dataset[$i]['fecha_reg'];
         } else {
             $fechaFin = $dataset[$i + 1]['fecha_reg'];
         }
         $startLiteral = new DateTime($dataset[$i]['fecha_reg']);
         $endLiteral = new DateTime($fechaFin);
         $start = strtotime($dataset[$i]['fecha_reg']);
         $end = strtotime($fechaFin);
         $days_between = round(($end - $start) / 86400);
         $cabecera = array($dataset[$i]['proceso'], $dataset[$i]['estado'], $dataset[$i]['funcionario'] != '-' ? $dataset[$i]['func'] : $dataset[$i]['depto'], "{$days_between}" . ' dias', $startLiteral->format('d M Y'), $endLiteral->format('d M Y'));
         array_push($actividad, $cabecera);
         array_push($actividad, $dataset[$i]['fecha_reg']);
         array_push($actividad, $fechaFin);
         array_push($actividad, FF_ARIAL);
         array_push($actividad, FS_NORMAL);
         array_push($actividad, 8);
         array_push($data, $actividad);
     }
     // Create the bars and add them to the gantt chart
     for ($i = 0; $i < count($data); $i++) {
         $bar = new GanttBar($data[$i][0], $data[$i][1], $data[$i][2], $data[$i][3], "[100%]", 10);
         if (count($data[$i]) > 4) {
             $bar->title->SetFont($data[$i][4], $data[$i][5], $data[$i][6]);
         }
         $bar->SetPattern(BAND_RDIAG, "yellow");
         $bar->SetFillColor("gray");
         $bar->progress->Set(1);
         $bar->progress->SetPattern(GANTT_SOLID, "darkgreen");
         $graph->Add($bar);
     }
     //$graph->SetDateRange($fechaInicio,$fechaFin);
     $archivo = dirname(__FILE__) . '/../../../reportes_generados/' . $filename;
     //$graph->StrokeCSIM();
     //exit;
     $graph->Stroke($archivo);
 }
Example #13
0
     if ($equipment_reservations[$id]) {
         //put the information in a new array
         $gantt_data[$id] = $equipment_reservations[$id]['reservations'];
     } else {
         $gantt_data[$id][] = array('reservation_idx' => NULL, 'start_date' => '0000-00-00', 'end_date' => '0000-00-00');
     }
 }
 if ($gantt_data) {
     foreach ($gantt_data as $id => $item) {
         foreach ($item as $reservation) {
             if ($id != $current_id) {
                 //this makes it so that it will only add the item on the same line if it has multiple dates
                 $counter++;
                 $current_id = $id;
             }
             $activity = new GanttBar($counter, $id, $reservation['start_date'], $reservation['end_date']);
             $activity->SetCSIMTarget($GLOBALS['BASE_URL'] . '/admin/reservation/search/id/' . $reservation['reservation_idx'], "Reservation ID: " . $reservation['reservation_idx']);
             $graph->Add($activity);
         }
     }
 }
 //DRAW GRAPH
 $is_rendering_image = (bool) $_GET['_jpg_csimd'];
 // if jpgraph isn't rendering the image, it is instead rendering the image map.
 // turn on outputbuffering to capture the html
 if (!$is_rendering_image) {
     ob_start();
 }
 //end if
 // generate the graph (this dumps either the HTML OR the image contents)
 $graph->StrokeCSIM();
Example #14
0
 /**
  * @param $task Task
  * @param $start_date string
  * @param $end_date string
  * @param $position
  * @return GanttBar
  *
  * Create a Gantt bar that represents a task with subtasks, this gives it 'wings' at each end to 
  * represent it spanning the subtasks.
  * $start_date and $end_date should be YYYY-MM-DD formatted dates
  */
 private function makeGroup(Task $task, $start_date, $end_date, $position)
 {
     $bar = new GanttBar($position, $task->name, $start_date, $end_date, $task->getField('duration')->formatted, 8);
     $bar->rightMark->Show();
     $bar->rightMark->SetType(MARK_RIGHTTRIANGLE);
     $bar->rightMark->SetWidth(8);
     $bar->rightMark->SetColor('#0077BD');
     $bar->rightMark->SetFillColor('#0077BD');
     $bar->leftMark->Show();
     $bar->leftMark->SetType(MARK_LEFTTRIANGLE);
     $bar->leftMark->SetWidth(8);
     $bar->leftMark->SetColor('#0077BD');
     $bar->leftMark->SetFillColor('#0077BD');
     $bar->setColor('#0077BD');
     $bar->SetPattern(BAND_SOLID, '#0077BD');
     return $bar;
 }
Example #15
0
 public function addSubSubBar($label, $start, $end, $caption = '', $height = '0.6', $barcolor = 'FFFFFF', $progress = 0)
 {
     $startDate = new CDate($start);
     $endDate = new CDate($end);
     $bar = new GanttBar($this->rowCount++, array($label, ' ', ' ', ' '), $startDate->format(FMT_DATETIME_MYSQL), $endDate->format(FMT_DATETIME_MYSQL), 0.6);
     $bar->title->SetFont(FF_CUSTOM, FS_NORMAL, 9);
     $bar->SetFillColor('#' . $barcolor);
     $this->graph->Add($bar);
 }
 /**
  * creates the image for the gantt chart
  *
  * @param $_params	array containing projectdata, start- and enddate
  * @param $_filename	filename for the image, if empty image gets printed to browser
  * @author	Lars Kneschke / Bettina Gille
  * @returns	nothing - writes image to disk
  */
 function show_graph($params, $_filename = '')
 {
     $modernJPGraph = false;
     // no gd support
     if (!function_exists('imagecopyresampled')) {
         return false;
     }
     DEFINE("TTF_DIR", PHPGW_SERVER_ROOT . "/projects/ttf-bitstream-vera-1.10/");
     if (file_exists(PHPGW_SERVER_ROOT . '/../jpgraph/src/jpgraph.php')) {
         include PHPGW_SERVER_ROOT . '/../jpgraph/src/jpgraph.php';
         include PHPGW_SERVER_ROOT . '/../jpgraph/src/jpgraph_gantt.php';
     } else {
         include PHPGW_SERVER_ROOT . '/projects/inc/jpgraph-1.5.2/src/jpgraph.php';
         include PHPGW_SERVER_ROOT . '/projects/inc/jpgraph-1.5.2/src/jpgraph_gantt.php';
     }
     //_debug_array($params);
     $project_array = $params['project_array'];
     $sdate = $params['sdate'];
     $edate = $params['edate'];
     $showMilestones = $params['showMilestones'];
     $showResources = $params['showResources'];
     $bocalendar = CreateObject('calendar.bocalendar');
     $this->graph = CreateObject('phpgwapi.gdgraph', $this->debug);
     $bolink = CreateObject('infolog.bolink');
     //$this->boprojects->order = 'parent';
     $this->boprojects->limit = False;
     $this->boprojects->html_output = False;
     if (is_array($project_array)) {
         $projects = array();
         foreach ($project_array as $pro) {
             $project = $this->boprojects->list_projects(array('action' => 'mainsubsorted', 'project_id' => $pro, 'mstones_stat' => True));
             if (is_array($project)) {
                 $i = count($projects);
                 for ($k = 0; $k < count($project); $k++) {
                     $projects[$i + $k] = $project[$k];
                 }
             }
         }
     }
     if (is_array($projects)) {
         $modernJPGraph = version_compare('1.13', JPG_VERSION);
         $sdate = $sdate + 60 * 60 * $GLOBALS['phpgw_info']['user']['preferences']['common']['tz_offset'];
         $sdateout = $GLOBALS['phpgw']->common->show_date($sdate, $GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']);
         $edate = $edate + 60 * 60 * $GLOBALS['phpgw_info']['user']['preferences']['common']['tz_offset'];
         $edateout = $GLOBALS['phpgw']->common->show_date($edate, $GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']);
         #				$this->graph->title = lang('Gantt chart from %1 to %2',$sdateout,$edateout);
         // Standard calls to create a new graph
         if ($modernJPGraph) {
             $graph = new GanttGraph(940, -1, "auto");
         } else {
             $graph = new GanttGraph(-1, -1, "auto");
         }
         $graph->SetShadow();
         $graph->SetBox();
         $duration = $edate - $sdate;
         if ($duration < 5958000) {
             $graph->ShowHeaders(GANTT_HYEAR | GANTT_HMONTH | GANTT_HDAY | GANTT_HWEEK);
             if ($modernJPGraph) {
                 $graph->scale->week->SetStyle(WEEKSTYLE_FIRSTDAYWNBR);
             } else {
                 $graph->scale->week->SetStyle(WEEKSTYLE_FIRSTDAY);
             }
         } elseif ($duration < 13820400) {
             $graph->scale->week->SetStyle(WEEKSTYLE_FIRSTDAY);
             $graph->ShowHeaders(GANTT_HYEAR | GANTT_HMONTH | GANTT_HWEEK);
         } else {
             $graph->ShowHeaders(GANTT_HYEAR | GANTT_HMONTH);
         }
         // For the week we choose to show the start date of the week
         // the default is to show week number (according to ISO 8601)
         #$graph->scale->SetDateLocale('de_DE');
         // Change the scale font
         $graph->scale->week->SetFont(FF_VERA, FS_NORMAL, 8);
         $graph->scale->year->SetFont(FF_VERA, FS_BOLD, 10);
         // Titles for chart
         $graph->title->Set(lang('project overview'));
         $graph->subtitle->Set(lang('from %1 to %2', $sdateout, $edateout));
         $graph->title->SetFont(FF_VERA, FS_BOLD, 12);
         $graph->subtitle->SetFont(FF_VERA, FS_BOLD, 10);
         // set the start and end date
         // add one day to the end is needed internaly by jpgraph
         $graph->SetDateRange(date('Y-m-d 00:00:00', $sdate), date('Y-m-d', $edate + 86400));
         foreach ($projects as $pro) {
             $ptime_pro = $this->boprojects->return_value('ptime', $pro[project_id]);
             $acc = $this->boprojects->get_budget(array('project_id' => $pro[project_id], 'ptime' => $ptime_pro));
             if ($ptime_pro > 0) {
                 $finnishedPercent = 100 / $ptime_pro * $acc[uhours_jobs_wminutes];
             } else {
                 $finnishedPercent = 0;
             }
             $previous = '';
             if ($pro['previous'] > 0) {
                 $previous = $this->boprojects->read_single_project($pro['previous']);
                 $spro[] = array('title' => str_repeat(' ', $spro['level']) . '[!]' . $previous['title'], 'extracolor' => 'darkorange', 'sdate' => $previous['sdate'], 'edate' => $previous['edate'], 'pro_id' => $previous['project_id'], 'f_sdate' => $pro['sdate']);
                 $color_legend['previous'] = array('title' => '[!]' . lang('previous project'), 'extracolor' => 'darkorange');
             }
             // add a empty row before new project
             if ($pro['level'] == 0 && $counter > 0) {
                 $counter++;
             }
             $spro = array('title' => $pro['title'], 'sdate' => $pro['sdate'], 'edate' => $pro['edate'] ? $pro['edate'] : mktime(0, 0, 0, date('m'), date('d'), date('Y')), 'color' => $pro['level'], 'pro_id' => $pro['project_id'], 'previous' => $pro['previous']);
             // convert title to iso-8859-1
             $spro[title] = $this->botranslation->convert($spro[title], $this->displayCharset, 'iso-8859-1');
             if ($spro[edate] < $sdate) {
                 continue;
             }
             if ($spro[edate] > $edate) {
                 $spro[edate] = $edate;
             }
             if ($spro[sdate] < $sdate) {
                 $spro[sdate] = $sdate;
             }
             $bar = new GanttBar($counter, $spro[title], date('Y-m-d', $spro[sdate]), date('Y-m-d', $spro[edate]), round($finnishedPercent) . '%', 0.5);
             // mark beginn of new project bold
             if ($pro['level'] == 0) {
                 $bar->title->SetFont(FF_VERA, FS_BOLD, 9);
                 #$bar->title->SetColor("#9999FF");
                 $bar->SetPattern(BAND_SOLID, "#9999FF");
             } else {
                 // For illustration lets make each bar be red with yellow diagonal stripes
                 $bar->SetPattern(BAND_SOLID, "#ccccFF");
                 #$bar->title->SetColor("#ccccFF");
             }
             // To indicate progress each bar can have a smaller bar within
             // For illustrative purpose just set the progress to 50% for each bar
             $bar->progress->SetHeight(0.2);
             $bar->SetColor('#777777');
             if ($finnishedPercent > 100) {
                 $bar->progress->Set(1);
                 #$bar->progress->SetPattern(GANTT_SOLID,"darkred",98);
                 $bar->caption->SetColor("red");
             } else {
                 $bar->progress->Set($finnishedPercent / 100);
                 #$bar->progress->SetPattern(GANTT_SOLID,"darkgreen",98);
             }
             $bar->caption->SetFont(FF_VERA, FS_NORMAL, 8);
             // ... and add the bar to the gantt chart
             $graphs['bars'][] = $bar;
             #$graph->Add($bar);
             $counter++;
             // check for Resources
             if ($showResources == 'true') {
                 $linkedObjects = $bolink->get_links('projects', $pro[project_id]);
                 $projectACL = $this->boprojects->get_acl_for_project($pro[project_id]);
                 if (is_array($projectACL)) {
                     // if beginn
                     foreach ($projectACL as $accountID) {
                         #_debug_array($projectData);
                         $accountData = CreateObject('phpgwapi.accounts', $accountID);
                         $accountData->read_repository();
                         $accountName = $GLOBALS['phpgw']->common->display_fullname($accountData->data['account_lid'], $accountData->data['firstname'], $accountData->data['lastname']);
                         $calData = array('syear' => date('Y', $sdate), 'smonth' => date('m', $sdate), 'sday' => date('d', $sdate), 'eyear' => date('Y', $edate), 'emonth' => date('m', $edate), 'eday' => date('d', $edate), 'owner' => array($accountID));
                         $calEntries = $bocalendar->store_to_cache($calData);
                         $bocalendar->remove_doubles_in_cache(date('Y', $sdate) . date('m', $sdate) . date('d', $sdate), date('Y', $edate) . date('m', $edate) . date('d', $edate));
                         $calEntries = $bocalendar->cached_events;
                         #_debug_array($calEntries);
                         if (is_array($calEntries) && count($calEntries)) {
                             #_debug_array($calEntries);
                             foreach ($calEntries as $calDayDate => $calDayEntries) {
                                 foreach ($calDayEntries as $calDayEntry) {
                                     if ($calDayEntry['recur_type']) {
                                         $bocalendar->set_recur_date($calDayEntry, $calDayDate);
                                     }
                                     #_debug_array($calDayEntry);
                                     if (!$bocalendar->rejected_no_show($calDayEntry)) {
                                         $startDate = date('Y-m-d H:i:s', mktime($calDayEntry['start']['hour'], $calDayEntry['start']['min'], $calDayEntry['start']['sec'], $calDayEntry['start']['month'], $calDayEntry['start']['mday'], $calDayEntry['start']['year']));
                                         $endDate = date('Y-m-d H:i:s', mktime($calDayEntry['end']['hour'], $calDayEntry['end']['min'], $calDayEntry['end']['sec'], $calDayEntry['end']['month'], $calDayEntry['end']['mday'], $calDayEntry['end']['year']));
                                         #$endDate = $startDate+1000;
                                         #_debug_array($startDate);
                                         $bar = new GanttBar($counter, str_repeat(' ', $pro['level'] + 1) . $accountName, $startDate, $endDate, '', 0.5);
                                         $bar->SetPattern(BAND_SOLID, "#DDDDDD");
                                         $bar->SetColor('#CCCCCC');
                                         #$bar->SetShadow(true,"darkgray");
                                         if (count($projectLinks = $bolink->get_links('calendar', $calDayEntry['id'], 'projects'))) {
                                             $projectLinks = array_flip($projectLinks);
                                             #_debug_array($projectLinks);
                                             if (isset($projectLinks[$pro[project_id]])) {
                                                 $bar->SetPattern(BAND_SOLID, "#33FF33");
                                                 $bar->SetColor('#33FF33');
                                             }
                                         }
                                         $graphs['bars'][] = $bar;
                                         #$graph->Add($bar);
                                     } else {
                                         print "rejected<br>";
                                     }
                                 }
                             }
                             $counter++;
                         }
                     }
                 }
                 // if end
             }
             // check for milstones
             if (is_array($pro['mstones']) && $showMilestones == 'true') {
                 $msColor = "#999999";
                 foreach ($pro['mstones'] as $ms) {
                     if ($sdate < $ms['edate'] && $ms['edate'] <= $edate) {
                         $ms[title] = $this->botranslation->convert($ms[title], $this->displayCharset, 'iso-8859-1');
                         $msData = array('title' => $ms['title'], 'extracolor' => 'yellow', 'edate' => $ms['edate'], 'pro_id' => $pro['project_id']);
                         // Create a milestone mark
                         $ms = new MileStone($counter, str_repeat(' ', $pro['level'] + 1) . lang('Milestone'), date('Y-m-d', $msData['edate']), $msData['title']);
                         $ms->caption->SetFont(FF_VERA, FS_NORMAL, 8);
                         $ms->title->SetFont(FF_VERA, FS_NORMAL, 8);
                         $ms->mark->SetColor($msColor);
                         $ms->mark->SetFillColor('#EEEEEE');
                         $graphs['ms'][$counter] = $ms;
                         // Create a vertical line to emphasize the milestone
                         $vl = new GanttVLine(date('Y-m-d', $msData[edate]), '', $msColor, 2);
                         $vl->SetDayOffset(0.5);
                         // Center the line in the day
                         $graphs['vl'][$counter] = $vl;
                         $counter++;
                     }
                 }
             }
         }
         // add the vertical lines
         if (is_array($graphs['vl'])) {
             foreach ($graphs['vl'] as $graphCounter => $graphPointer) {
                 $graph->Add($graphPointer);
             }
         }
         // add the milestones
         if (is_array($graphs['ms'])) {
             foreach ($graphs['ms'] as $graphCounter => $graphPointer) {
                 $graph->Add($graphPointer);
             }
         }
         // add the resources
         if (is_array($graphs['bars'])) {
             foreach ($graphs['bars'] as $graphCounter => $graphPointer) {
                 $graph->Add($graphPointer);
             }
         }
         #$graph->Stroke(PHPGW_SERVER_ROOT . SEP . 'phpgwapi' . SEP . 'images' . SEP . 'draw_tmp.png');
         $graph->Stroke($_filename);
     }
 }
$graph->scale->day->SetSundayFontColor('black');
$graph->scale->hour->SetFont(FF_FONT1);
$graph->scale->hour->SetIntervall(1);
$graph->scale->hour->SetStyle(HOURSTYLE_H24);
$graph->hgrid->SetRowFillColor('whitesmoke@0.9', 'darkblue@0.9');
$graph->setMargin(0, 0, 0, 20);
$graph->scale->hour->SetFont(FF_FONT1);
$graph->scale->day->SetFont(FF_FONT1, FS_BOLD);
$graph->title->SetColor('white');
$graph->scale->UseWeekendBackground(false);
$graph->scale->day->SetWeekendColor('lightyellow:1.5');
$graph->scale->week->SetFont(FF_FONT1);
$graph->hgrid->Show(true);
$graph->hgrid->SetRowFillColor('whitesmoke@0.9', 'darkblue@0.9');
if ($suma > 0) {
    for ($i = 0; $i < count($data); ++$i) {
        $bar = new GanttBar($data[$i][0], $data[$i][1], $data[$i][2], $data[$i][3]);
        $bar->SetPattern(BAND_RDIAG, 'lightgray');
        $bar->SetFillColor('brown');
        $bar->SetShadow(true, 'black@0.5');
        $graph->Add($bar);
    }
} else {
    $bar = new GanttBar(0, $text["noactivity"], "23:59", "00:00");
    $bar->SetPattern(BAND_RDIAG, 'white@1');
    $graph->Add($bar);
}
$graph->footer->left->Set($text["totalingame"] . " " . formatTD($suma));
$graph->footer->left->SetColor('black@0.5');
$graph->footer->left->SetFont(FF_FONT2, FS_BOLD);
$graph->Stroke();
 public function addBar(array $columnValues, $caption = '', $height = '0.6', $barcolor = 'FFFFFF', $active = true, $progress = 0, $identifier = 0)
 {
     foreach ($columnValues as $name => $value) {
         switch ($name) {
             case 'start_date':
                 $start = $value;
                 $startDate = new w2p_Utilities_Date($value);
                 $rowValues[] = $startDate->format($this->df);
                 break;
             case 'end_date':
                 $endDate = new w2p_Utilities_Date($value);
                 $rowValues[] = $endDate->format($this->df);
                 break;
             case 'actual_end':
                 if ('' == $value) {
                     $actual_end = $columnValues['end_date'];
                     $rowValues[] = $value;
                 } else {
                     $actual_end = $value;
                     $actual_endDate = new w2p_Utilities_Date($value);
                     $rowValues[] = $actual_endDate->format($this->df);
                 }
                 break;
             default:
                 $rowValues[] = $value;
         }
     }
     $bar = new GanttBar($this->rowCount++, $rowValues, $start, $actual_end, $caption, $height);
     $this->rowMap[$identifier] = $this->rowCount;
     $bar->progress->Set(min($progress / 100, 1));
     $bar->title->SetFont(FF_CUSTOM, FS_NORMAL, 10);
     $bar->title->SetColor(bestColor('#ffffff', '#' . $barcolor, '#000000'));
     $bar->SetFillColor('#' . $barcolor);
     $bar->SetPattern(BAND_SOLID, '#' . $barcolor);
     if (0.1 == $height) {
         $bar->rightMark->Show();
         $bar->rightMark->SetType(MARK_RIGHTTRIANGLE);
         $bar->rightMark->SetWidth(3);
         $bar->rightMark->SetColor('black');
         $bar->rightMark->SetFillColor('black');
         $bar->leftMark->Show();
         $bar->leftMark->SetType(MARK_LEFTTRIANGLE);
         $bar->leftMark->SetWidth(3);
         $bar->leftMark->SetColor('black');
         $bar->leftMark->SetFillColor('black');
         $bar->SetPattern(BAND_SOLID, 'black');
         $bar->title->SetFont(FF_CUSTOM, FS_BOLD, 9);
     }
     //adding captions
     $bar->caption = new TextProperty($caption);
     $bar->caption->Align('left', 'center');
     if (is_file(TTF_DIR . 'FreeSans.ttf')) {
         $bar->caption->SetFont(FF_CUSTOM, FS_NORMAL, 8);
     }
     // gray out templates, completes, on ice, on hold
     if (!$active) {
         $bar->caption->SetColor('darkgray');
         $bar->title->SetColor('darkgray');
         $bar->SetColor('darkgray');
         $bar->SetFillColor('gray');
         $bar->progress->SetFillColor('darkgray');
         $bar->progress->SetPattern(BAND_SOLID, 'darkgray', 98);
     }
     $this->graph->Add($this->addDependencies($bar, $identifier));
 }
Example #19
0
// Format and add the Gantt bars to the chart
$n = count($data);
for ($i = 0; $i < $n; ++$i) {
    if ($i === 0 || $i === 3) {
        // Format the group bars
        $bar = new GanttBar($data[$i][0], array($data[$i][1], $data[$i][2], $data[$i][3]), $data[$i][2], $data[$i][3], '', 0.35);
        // For each group make the name bold but keep the dates as the default font
        $bar->title->SetColumnFonts(array(array(FF_ARIAL, FS_BOLD, 11)));
        // Add group markers
        $bar->leftMark->SetType(MARK_LEFTTRIANGLE);
        $bar->leftMark->Show();
        $bar->rightMark->SetType(MARK_RIGHTTRIANGLE);
        $bar->rightMark->Show();
        $bar->SetFillColor('black');
        $bar->SetPattern(BAND_SOLID, 'black');
    } else {
        // Format the activity bars
        $bar = new GanttBar($data[$i][0], array($data[$i][1], $data[$i][2], $data[$i][3]), $data[$i][2], $data[$i][3], '', 0.45);
        $bar->SetPattern(BAND_RDIAG, 'black');
        $bar->SetFillColor('orange');
    }
    // Default font
    $bar->title->SetFont(FF_ARIAL, FS_NORMAL, 10);
    $graph->Add($bar);
}
// Send back the graph to the client
$graph->Stroke();
?>


Example #20
0
 function CreateSimple($data, $constrains = array(), $progress = array())
 {
     $num = count($data);
     for ($i = 0; $i < $num; ++$i) {
         switch ($data[$i][1]) {
             case ACTYPE_GROUP:
                 $a = new GanttBar($data[$i][0], $data[$i][2], $data[$i][3], $data[$i][4], '', 8);
                 $a->title->SetFont($this->iSimpleFont, FS_BOLD, $this->iSimpleFontSize);
                 $a->rightMark->Show();
                 $a->rightMark->SetType(MARK_RIGHTTRIANGLE);
                 $a->rightMark->SetWidth(8);
                 $a->rightMark->SetColor('black');
                 $a->rightMark->SetFillColor('black');
                 $a->leftMark->Show();
                 $a->leftMark->SetType(MARK_LEFTTRIANGLE);
                 $a->leftMark->SetWidth(8);
                 $a->leftMark->SetColor('black');
                 $a->leftMark->SetFillColor('black');
                 $a->SetPattern(BAND_SOLID, 'black');
                 $csimpos = 6;
                 break;
             case ACTYPE_NORMAL:
                 $a = new GanttBar($data[$i][0], $data[$i][2], $data[$i][3], $data[$i][4], '', 10);
                 $a->title->SetFont($this->iSimpleFont, FS_NORMAL, $this->iSimpleFontSize);
                 $a->SetPattern($this->iSimpleStyle, $this->iSimpleColor);
                 $a->SetFillColor($this->iSimpleBkgColor);
                 $n = count($constrains);
                 for ($j = 0; $j < $n; ++$j) {
                     if (empty($constrains[$j]) || count($constrains[$j]) != 3) {
                         JpGraphError::RaiseL(6003, $j);
                     }
                     if ($constrains[$j][0] == $data[$i][0]) {
                         $a->SetConstrain($constrains[$j][1], $constrains[$j][2], 'black', ARROW_S2, ARROWT_SOLID);
                     }
                 }
                 $n = count($progress);
                 for ($j = 0; $j < $n; ++$j) {
                     if (empty($progress[$j]) || count($progress[$j]) != 2) {
                         JpGraphError::RaiseL(6004, $j);
                     }
                     if ($progress[$j][0] == $data[$i][0]) {
                         $a->progress->Set($progress[$j][1]);
                         $a->progress->SetHeight(0.5);
                         $a->progress->SetPattern($this->iSimpleProgressStyle, $this->iSimpleProgressColor);
                         $a->progress->SetFillColor($this->iSimpleProgressBkgColor);
                         break;
                     }
                 }
                 $csimpos = 6;
                 break;
             case ACTYPE_MILESTONE:
                 $a = new MileStone($data[$i][0], $data[$i][2], $data[$i][3]);
                 $a->title->SetFont($this->iSimpleFont, FS_NORMAL, $this->iSimpleFontSize);
                 $a->caption->SetFont($this->iSimpleFont, FS_NORMAL, $this->iSimpleFontSize);
                 $csimpos = 5;
                 break;
             default:
                 die('Unknown activity type');
                 break;
         }
         $a->caption->Set($data[$i][$csimpos - 1]);
         if (!empty($data[$i][$csimpos])) {
             $a->SetCSIMTarget($data[$i][$csimpos]);
             $a->SetCSIMAlt($data[$i][$csimpos + 1]);
         }
         if (!empty($data[$i][$csimpos + 2])) {
             $a->title->SetCSIMTarget($data[$i][$csimpos + 2]);
             $a->title->SetCSIMAlt($data[$i][$csimpos + 3]);
         }
         $this->Add($a);
     }
 }
Example #21
0
function graph_schedule($data, $title, $show_day)
{
    require_once "jpgraph/jpgraph.php";
    require_once "jpgraph/jpgraph_gantt.php";
    // Some sample Gantt data
    /*
    	$data = array(
    		array(0, " Bryce", "2009-08-28 11:00","2009-08-28 15:30"),
    		array(1, " Kyla", "2009-08-28 08:00","2009-08-28 15:30"),
    		array(2, " Nathan", "2009-08-28 08:00","2009-08-28 17:00")
    	);
    */
    // Basic graph parameters
    $graph = new GanttGraph(700);
    $graph->SetMarginColor('darkgreen@0.8');
    $graph->SetColor('white');
    $graph->title->Set("{$title}'s Schedule");
    $graph->title->SetColor('darkgray');
    // We want to display day, hour and minute scales
    if ($show_day) {
        $graph->ShowHeaders(GANTT_HDAY | GANTT_HHOUR);
    } else {
        $graph->ShowHeaders(GANTT_HHOUR);
    }
    #$graph->ShowHeaders(GANTT_HDAY | GANTT_HHOUR);
    #$graph->ShowHeaders(GANTT_HHOUR);
    // Setup day format
    $graph->scale->day->SetBackgroundColor('lightyellow:1.5');
    $graph->scale->day->SetStyle(DAYSTYLE_LONG);
    $graph->scale->day->SetFont(FF_FONT1, FS_NORMAL, 16);
    // Setup hour format
    $graph->scale->hour->SetIntervall(1);
    $graph->scale->hour->SetBackgroundColor('lightyellow:1.5');
    $graph->scale->hour->SetStyle(HOURSTYLE_HAMPM);
    $graph->scale->hour->grid->SetColor('gray:0.8');
    $graph->scale->hour->SetFont(FF_FONT1, FS_NORMAL, 13);
    for ($i = 0; $i < count($data); ++$i) {
        $bar = new GanttBar($data[$i][0], $data[$i][1], $data[$i][2], $data[$i][3], $data[$i][4]);
        $bar->SetPattern(BAND_RDIAG, "yellow");
        $bar->SetFillColor("gray");
        $graph->Add($bar);
    }
    // Draw graph
    $graph->Stroke();
}
Example #22
0
// 0 % vertical label margin
$graph->SetLabelVMarginFactor(1);
// Format the bar for the first activity
// ($row,$title,$startdate,$enddate)
$activity = new GanttBar(0, 'Project', '2001-12-21', '2002-01-07', '[50%]');
// Yellow diagonal line pattern on a red background
$activity->SetPattern(BAND_RDIAG, 'yellow');
$activity->SetFillColor('red');
// Set absolute height
$activity->SetHeight(10);
// Specify progress to 60%
$activity->progress->Set(0.6);
$activity->progress->SetPattern(BAND_HVCROSS, 'blue');
// Format the bar for the second activity
// ($row,$title,$startdate,$enddate)
$activity2 = new GanttBar(1, 'Project', '2001-12-21', '2002-01-02', '[30%]');
// Yellow diagonal line pattern on a red background
$activity2->SetPattern(BAND_RDIAG, 'yellow');
$activity2->SetFillColor('red');
// Set absolute height
$activity2->SetHeight(10);
// Specify progress to 30%
$activity2->progress->Set(0.3);
$activity2->progress->SetPattern(BAND_HVCROSS, 'blue');
// Finally add the bar to the graph
$graph->Add($activity);
$graph->Add($activity2);
// Add a vertical line
$vline = new GanttVLine('2001-12-24', 'Phase 1');
$vline->SetDayOffset(0.5);
//$graph->Add($vline);
Example #23
0
$graph->SetColor("white");
$graph->title->Set($strings["task"] . " " . $taskDetail->tas_name[0]);
$graph->subtitle->Set("(" . $strings["created"] . ": " . $taskDetail->tas_created[0] . ")");
$graph->title->SetFont(FF_FONT1);
$graph->SetColor("white");
$graph->ShowHeaders(GANTT_HYEAR | GANTT_HMONTH | GANTT_HDAY | GANTT_HWEEK);
$graph->scale->week->SetStyle(WEEKSTYLE_FIRSTDAY);
$graph->scale->week->SetFont(FF_FONT0);
$graph->scale->year->SetFont(FF_FONT1);
$tmpquery = "WHERE subtas.task = '{$task}' AND subtas.start_date != '--' AND subtas.due_date != '--' AND tas.published != '1' ORDER BY subtas.due_date";
$listTasks = new request();
$listTasks->openSubtasks($tmpquery);
$comptListTasks = count($listTasks->subtas_id);
for ($i = 0; $i < $comptListTasks; $i++) {
    $listTasks->subtas_name[$i] = str_replace('&quot;', '"', $listTasks->subtas_name[$i]);
    $listTasks->subtas_name[$i] = str_replace("&#39;", "'", $listTasks->subtas_name[$i]);
    $progress = round($listTasks->subtas_completion[$i] / 10, 2);
    $printProgress = $listTasks->subtas_completion[$i] * 10;
    $activity = new GanttBar($i, $listTasks->subtas_name[$i], $listTasks->subtas_start_date[$i], $listTasks->subtas_due_date[$i]);
    $activity->SetPattern(BAND_LDIAG, "yellow");
    $activity->caption->Set($listTasks->subtas_mem_login[$i] . " (" . $printProgress . "%)");
    $activity->SetFillColor("gray");
    if ($listTasks->subtas_priority[$i] == "4" || $listTasks->subtas_priority[$i] == "5") {
        $activity->progress->SetPattern(BAND_SOLID, "#BB0000");
    } else {
        $activity->progress->SetPattern(BAND_SOLID, "#0000BB");
    }
    $activity->progress->Set($progress);
    $graph->Add($activity);
}
$graph->Stroke();
 function parse($input, $parser)
 {
     foreach (split("\n", $input) as $line) {
         // skip empty line or comments
         if (preg_match("/^(\\s*)#.*\$|^(\\s*)\$/", $line)) {
             continue;
         }
         #               1ID>, 2P%,   3DEP,   4TASKNAME ,5DATE>,  6DATE,       7Tag
         if (preg_match("/(\\d+),(\\d+)%,([\\d:]*),([^,]+),([\\d\\s\\-]+),([\\d\\s\\-]+),?([^,]+)?/", $line, $parse_result)) {
             # $bar = new GanttBar(ID,             Comment,          start,            end,            tag, height);
             $bar = new GanttBar($parse_result[1], $parse_result[4], $parse_result[5], $parse_result[6]);
             foreach (split(",", $parse_result[3]) as $dep) {
                 if (!$dep) {
                     continue;
                 }
                 $bar->SetConstrain($dep, CONSTRAIN_STARTEND);
             }
             if ($this->min_date) {
                 if (strtotime($parse_result[5]) < strtotime($this->min_date)) {
                     $this->min_date = $parse_result[5];
                 }
             } else {
                 $this->min_date = $parse_result[5];
             }
             if ($this->max_date) {
                 if (strtotime($parse_result[6]) > strtotime($this->max_date)) {
                     $this->max_date = $parse_result[6];
                 }
             } else {
                 $this->max_date = $parse_result[6];
             }
             $bar->SetPattern(BAND_RDIAG, "yellow");
             $bar->SetFillColor("gray");
             //$bar->progress->Set($parse_result[2]/100);
             $bar->progress->SetPattern(GANTT_SOLID, "darkgreen");
             $this->graph->Add($bar);
         } else {
             throw new Exception("Error while parsing line '{$line}': expected 'ID,PURCENT%,DEPENDENCY,TASK NAME,DATE,DATE'");
         }
     }
 }
Example #25
0
     if (!$end) {
         $end = $start;
         $caption .= $AppUI->_('(no end date)');
     } else {
         $cap = '';
     }
     if ($showLabels) {
         $caption .= $t['project_name'] . ' (' . $t['perc_assignment'] . '%)';
         /*
         $caption .= (($p['project_status']) != 7 ? $AppUI->_('active') : $AppUI->_('inactive'));
         */
     }
     if ($t['task_milestone'] != 1) {
         $enddate = new CDate($end);
         $startdate = new CDate($start);
         $bar = new GanttBar($row++, array($name, $startdate->format($df), $enddate->format($df), ' '), $start, $actual_end, $cap, $t['task_dynamic'] == 1 ? 0.1 : 0.6);
         if (is_file(TTF_DIR . 'FreeSans.ttf')) {
             $bar->title->SetFont(FF_CUSTOM, FS_NORMAL, 10);
         }
         $bar->SetFillColor('#' . $t['project_color_identifier']);
         $bar->SetPattern(BAND_SOLID, '#' . $t['project_color_identifier']);
         //adding captions
         $bar->caption = new TextProperty($caption);
         $bar->caption->Align('left', 'center');
     } else {
         $bar = new MileStone($row++, $name, $start, substr($start, 0, 10));
         $bar->title->SetColor('#CC0000');
     }
     $graph2->Add($bar);
     // If showAllGant checkbox is checked
 }
Example #26
0
 /**
  * Executes ganttChart action
  *
  */
 public function executeGanttChart()
 {
     //@todo change color according to status, and add a legend
     $this->forward404Unless($project = ProjectPeer::retrieveBySlug($this->getRequestParameter('project')));
     $w = 450;
     $graph = new sfJpGraph('gantt', 0, 0);
     $graph = $graph->getJpGraph();
     $graph->SetShadow();
     // Add title and subtitle
     $graph->title->Set($project->getTitle());
     //$graph->title-> SetFont( FF_ARIAL, FS_BOLD,12);
     $graph->subtitle->Set("(Gantt Chart)");
     // Show day, week and month scale
     $graph->ShowHeaders(GANTT_HDAY | GANTT_HWEEK | GANTT_HMONTH);
     // Instead of week number show the date for the first day in the week
     // on the week scale
     $graph->scale->week->SetStyle(WEEKSTYLE_FIRSTDAY);
     // Make the week scale font smaller than the default
     $graph->scale->week->SetFont(FF_FONT0);
     // Use the short name of the month together with a 2 digit year
     // on the month scale
     $graph->scale->month->SetStyle(MONTHSTYLE_SHORTNAMEYEAR2);
     // Use the short name of the month together with a 4 digit year
     // on the month scale
     $graph->scale->month->SetStyle(MONTHSTYLE_SHORTNAMEYEAR4);
     //$graph->scale-> month-> SetTextColor( "white");
     $graph->scale->month->SetBackgroundColor("blue");
     $row = 0;
     foreach ($project->getTasks() as $task) {
         $activity = new GanttBar($row, $task->getName(), $task->getBegin('Y-m-d'), $task->getFinish('Y-m-d'));
         $activity->SetPattern(BAND_RDIAG, "red");
         $activity->setFillColor("blue");
         // Finally add the bar to the graph
         $graph->Add($activity);
         $row++;
     }
     // ... and display it
     $graph->Stroke();
 }
Example #27
0
$graph->scale->month->SetBackgroundColor("blue");
// 0 % vertical label margin
$graph->SetLabelVMarginFactor(1);
// Format the bar for the first activity
// ($row,$title,$startdate,$enddate)
$activity = new GanttBar(0, "Project", "2001-12-21", "2002-01-07", "[50%]");
// Yellow diagonal line pattern on a red background
$activity->SetPattern(BAND_RDIAG, "yellow");
$activity->SetFillColor("red");
// Set absolute height
$activity->SetHeight(10);
// Specify progress to 60%
$activity->progress->Set(0.6);
// Format the bar for the second activity
// ($row,$title,$startdate,$enddate)
$activity2 = new GanttBar(1, "Project", "2001-12-21", "2002-01-02", "[30%]");
// Yellow diagonal line pattern on a red background
$activity2->SetPattern(BAND_RDIAG, "yellow");
$activity2->SetFillColor("red");
// Set absolute height
$activity2->SetHeight(10);
// Specify progress to 30%
$activity2->progress->Set(0.3);
// Finally add the bar to the graph
$graph->Add($activity);
$graph->Add($activity2);
// Add a vertical line
$vline = new GanttVLine("2001-12-24", "Phase 1");
$vline->SetDayOffset(0.5);
//$graph->Add($vline);
// ... and display it
$ms_cnt = 0;
for ($i = 0; $i < $comptListTasks; $i++) {
    $listTasks->tas_name[$i] = str_replace('&quot;', '"', $listTasks->tas_name[$i]);
    $listTasks->tas_name[$i] = str_replace("&#39;", "'", $listTasks->tas_name[$i]);
    $progress = round($listTasks->tas_completion[$i] / 10, 2);
    $printProgress = $listTasks->tas_completion[$i] * 10;
    // get the duration in days for this task
    $duration = diff_date($listTasks->tas_due_date[$i], $listTasks->tas_start_date[$i]);
    if ($duration > 1) {
        $duration_label = sprintf("%s %s", $duration, $strings['days']);
    } else {
        $duration_label = sprintf("%s %s", $duration, $strings['day']);
    }
    // build an activity bar
    if ($listTasks->tas_milestone[$i] != '0') {
        $activity = new GanttBar($i, array($listTasks->tas_name[$i], $duration_label), $listTasks->tas_start_date[$i], $listTasks->tas_due_date[$i]);
        switch ($listTasks->tas_status[$i]) {
            case 0:
                $pattern = 'steelblue';
                // client completed
                break;
            case 1:
                $pattern = 'blue';
                // Completed
                break;
            case 2:
                $pattern = 'orange';
                // Not Started
                break;
            case 3:
                $pattern = 'green';
Example #29
0
$graph->scale->month->grid->SetColor('gray');
$graph->scale->month->grid->Show(true);
$graph->scale->year->grid->SetColor('gray');
$graph->scale->year->grid->Show(true);
// Setup activity info
// For the titles we also add a minimum width of 100 pixels for the Task name column
$graph->scale->actinfo->SetColTitles(array('Name', 'Duration', 'Start', 'Finish'), array(100));
$graph->scale->actinfo->SetBackgroundColor('green:0.5@0.5');
$graph->scale->actinfo->SetFont(FF_ARIAL, FS_NORMAL, 10);
$graph->scale->actinfo->vgrid->SetStyle('solid');
$graph->scale->actinfo->vgrid->SetColor('gray');
// Data for our example activities
$data = array(array(0, array("Pre-study", "102 days", "23 Nov '01", "1 Mar '02"), "2001-11-23", "2002-03-1", FF_ARIAL, FS_NORMAL, 8), array(1, array("Prototype", "21 days", "26 Oct '01", "16 Nov '01"), "2001-10-26", "2001-11-16", FF_ARIAL, FS_NORMAL, 8), array(2, array("Report", "12 days", "1 Mar '02", "13 Mar '02"), "2002-03-01", "2002-03-13", FF_ARIAL, FS_NORMAL, 8));
// Create the bars and add them to the gantt chart
for ($i = 0; $i < count($data); ++$i) {
    $bar = new GanttBar($data[$i][0], $data[$i][1], $data[$i][2], $data[$i][3], "[50%]", 10);
    if (count($data[$i]) > 4) {
        $bar->title->SetFont($data[$i][4], $data[$i][5], $data[$i][6]);
    }
    $bar->SetPattern(BAND_RDIAG, "yellow");
    $bar->SetFillColor("gray");
    $bar->progress->Set(0.5);
    $bar->progress->SetPattern(GANTT_SOLID, "darkgreen");
    $graph->Add($bar);
}
// Output the chart
$graph->Stroke();
?>


Example #30
0
function ganttPDF($reportName, $listTasks)
{
    include "../includes/jpgraph/jpgraph.php";
    include "../includes/jpgraph/jpgraph_gantt.php";
    $graph = new GanttGraph();
    $graph->SetBox();
    $graph->SetMarginColor("white");
    $graph->SetColor("white");
    $graph->title->Set($strings["project"] . " " . $reportName);
    //    $graph->subtitle->Set("(".$strings["created"].": "..")");
    $graph->title->SetFont(FF_FONT1);
    $graph->SetColor("white");
    $graph->ShowHeaders(GANTT_HYEAR | GANTT_HMONTH | GANTT_HDAY | GANTT_HWEEK);
    $graph->scale->week->SetStyle(WEEKSTYLE_FIRSTDAY);
    $graph->scale->week->SetFont(FF_FONT0);
    $graph->scale->year->SetFont(FF_FONT1);
    $comptListTasks = count($listTasks->tas_id);
    $posGantt = 0;
    for ($i = 0; $i < $comptListTasks; $i++) {
        $listTasks->tas_name[$i] = str_replace('&quot;', '"', $listTasks->tas_name[$i]);
        $listTasks->tas_name[$i] = str_replace("&#39;", "'", $listTasks->tas_name[$i]);
        $progress = round($listTasks->tas_completion[$i] / 10, 2);
        $printProgress = $listTasks->tas_completion[$i] * 10;
        $activity = new GanttBar($posGantt, $listTasks->tas_pro_name[$i] . " / " . $listTasks->tas_name[$i], $listTasks->tas_start_date[$i], $listTasks->tas_due_date[$i]);
        $activity->SetPattern(BAND_LDIAG, "yellow");
        $activity->caption->Set($listTasks->tas_mem_login[$i] . " (" . $printProgress . "%)");
        $activity->SetFillColor("gray");
        if ($listTasks->tas_priority[$i] == "4" || $listTasks->tas_priority[$i] == "5") {
            $activity->progress->SetPattern(BAND_SOLID, "#BB0000");
        } else {
            $activity->progress->SetPattern(BAND_SOLID, "#0000BB");
        }
        $activity->progress->Set($progress);
        $graph->Add($activity);
        // begin if subtask
        $tmpquery = "WHERE task = " . $listTasks->tas_id[$i];
        $listSubTasks = new request();
        $listSubTasks->openSubtasks($tmpquery);
        $comptListSubTasks = count($listSubTasks->subtas_id);
        if ($comptListSubTasks >= 1) {
            // list subtasks
            for ($j = 0; $j < $comptListSubTasks; $j++) {
                $listSubTasks->subtas_name[$j] = str_replace('&quot;', '"', $listSubTasks->subtas_name[$j]);
                $listSubTasks->subtas_name[$j] = str_replace("&#39;", "'", $listSubTasks->subtas_name[$j]);
                $progress = round($listSubTasks->subtas_completion[$j] / 10, 2);
                $printProgress = $listSubTasks->subtas_completion[$j] * 10;
                $posGantt += 1;
                // $activity = new GanttBar($posGantt,$listTasks->tas_pro_name[$i]." / ".$listSubTasks->subtas_name[$j],$listSubTasks->subtas_start_date[$j],$listSubTasks->subtas_due_date[$j]);
                // change name of project for name of parent task
                $activity = new GanttBar($posGantt, $listSubTasks->subtas_tas_name[$j] . " / " . $listSubTasks->subtas_name[$j], $listSubTasks->subtas_start_date[$j], $listSubTasks->subtas_due_date[$j]);
                //$activity = new GanttBar($j,$strings["project"].": ".$listSubTasks->subtas_pro_name[$j]." / ".$strings["task"].": ".$listSubTasks->subtas_name[$j],$listSubTasks->subtas_start_date[$j],$listSubTasks->subtas_due_date[$j]);
                $activity->SetPattern(BAND_LDIAG, "yellow");
                $activity->caption->Set($listSubTasks->subtas_mem_login[$j] . " (" . $printProgress . "%)");
                $activity->SetFillColor("gray");
                if ($listSubTasks->subtas_priority[$j] == "4" || $listSubTasks->subtas_priority[$j] == "5") {
                    $activity->progress->SetPattern(BAND_SOLID, "#BB0000");
                } else {
                    $activity->progress->SetPattern(BAND_SOLID, "#0000BB");
                }
                $activity->progress->Set($progress);
                $graph->Add($activity);
            }
            // end for comptListSubTasks
        }
        // end if subtask
        $posGantt += 1;
    }
    // end for complisttask
    $tmpGantt = "../files/" . md5(uniqid(rand()));
    $graph->Stroke($tmpGantt);
    return $tmpGantt;
}