$projects[$row['task_project']]['tasks'][] = $row; } $q->clear(); unset($proTasks); //consider critical (concerning end date) tasks as well if ($caller != 'todo') { $start_min = $projects[$project_id]['project_start_date']; $end_max = $projects[$project_id]['project_end_date'] > $criticalTasks[0]['task_end_date'] ? $projects[$project_id]['project_end_date'] : $criticalTasks[0]['task_end_date']; } $width = min(w2PgetParam($_GET, 'width', 600), 1400); $start_date = w2PgetParam($_GET, 'start_date', $start_min); $end_date = w2PgetParam($_GET, 'end_date', $end_max); $count = 0; $gantt = new GanttRenderer($AppUI, $width); $gantt->localize(); $gantt->setTitle($projects[$project_id]['project_name'], '#' . $projects[$project_id]['project_color_identifier']); $field = $showWork == '1' ? 'Work' : 'Dur'; if ($caller == 'todo') { $columnNames = array('Task name', 'Project name', $field, 'Start', 'Finish'); $columnSizes = array(180, 50, 60, 60, 60); } else { $columnNames = array('Task name', $field, 'Start', 'Finish'); $columnSizes = array(230, 60, 60, 60); } $gantt->setColumnHeaders($columnNames, $columnSizes); //----------------------------------------- // nice Gantt image // if diff(end_date,start_date) > 90 days it shows only //week number // if diff(end_date,start_date) > 240 days it shows only //month number
} } $pjobj->setAllowedSQL($AppUI->user_id, $q, null, 'pr'); $q->addGroup('pr.project_id'); $q->addOrder('pr.project_name, task_end_date DESC'); $projects = $q->loadList(); $q->clear(); // Don't push the width higher than about 1200 pixels, otherwise it may not display. $width = min(w2PgetParam($_GET, 'width', 600), 1400); $start_date = w2PgetParam($_GET, 'start_date', 0); $end_date = w2PgetParam($_GET, 'end_date', 0); $showAllGantt = w2PgetParam($_REQUEST, 'showAllGantt', '0'); $gantt = new GanttRenderer($AppUI, $width); $gantt->localize(); $tableTitle = $proFilter == '-1' ? $AppUI->_('All Projects') : $projectStatus[$proFilter]; $gantt->setTitle($tableTitle); $columnNames = array('Project name', 'Start Date', 'Finish', 'Actual End'); $columnSizes = array(160, 10, 70, 70); $gantt->setColumnHeaders($columnNames, $columnSizes); if (!$start_date || !$end_date) { // find out DateRange from $projects array $projectCount = count($projects); for ($i = 0, $i_cmp = $projectCount; $i < $i_cmp; $i++) { $start = substr($projects[$i]['project_start_date'], 0, 10); $end = substr($projects[$i]['project_end_date'], 0, 10); if (0 == strlen($end)) { $lastTask = $pjobj->getCriticalTasks($projects[$i]['project_id']); $projects[$i]['project_actual_end_date'] = $lastTask[0]['task_end_date']; $projects[$i]['project_end_date'] = $lastTask[0]['task_end_date']; $end = substr($lastTask[0]['task_end_date'], 0, 10); }