Add resources in gantt

This commit is contained in:
Laurent Destailleur 2010-05-23 22:07:24 +00:00
parent 920706e9b4
commit e7438320e3
6 changed files with 55 additions and 21 deletions

View File

@ -561,6 +561,7 @@ ValidateBefore=Card must be validated before using this feature
Visibility=Visibility
Private=Private
Hidden=Hidden
Resources=Resources
# Week day
Day1=Monday
Day2=Tuesday

View File

@ -560,6 +560,7 @@ ValidateBefore=La fiche doit être validée pour pouvoir utiliser cette fonction
Visibility=Visibilité
Private=Privé
Hidden=Caché
Resources=Ressources
# Week day
Day1=Lundi
Day2=Mardi

View File

@ -447,7 +447,7 @@ class Task extends CommonObject
}
/**
* Return list of task for all projects or for one particular project
* Return list of tasks for all projects or for one particular project
* Sort order is on project, TODO then of position of task, and last on title of first level task
* @param usert Object user to limit tasks affected to a particular user
* @param userp Object user to limit projects of a particular user and public projects
@ -547,8 +547,8 @@ class Task extends CommonObject
/**
* Return list of roles for a user for each projects or each tasks (or a particular project or task)
* @param userp Return roles on project for this user (task id can't be defined)
* @param usert Return roles on task for this user
* @param userp Return roles on project for this internal user (task id can't be defined)
* @param usert Return roles on task for this internal user
* @param projectid Project id to filter on a project
* @param taskid Task id to filter on a task
* @return array Array (projectid => 'list of roles for project' or taskid => 'list of roles for task')
@ -573,7 +573,7 @@ class Task extends CommonObject
}
/* Liste des taches et role sur les projets ou taches */
$sql = "SELECT pt.rowid as pid, ec.element_id, ctc.code";
$sql = "SELECT pt.rowid as pid, ec.element_id, ctc.code, ctc.source";
if ($userp) $sql.= " FROM ".MAIN_DB_PREFIX."projet as pt";
if ($usert) $sql.= " FROM ".MAIN_DB_PREFIX."projet_task as pt";
$sql.= ", ".MAIN_DB_PREFIX."element_contact as ec";
@ -585,6 +585,7 @@ class Task extends CommonObject
if ($userp) $sql.= " AND ec.fk_socpeople = ".$userp->id;
if ($usert) $sql.= " AND ec.fk_socpeople = ".$usert->id;
$sql.= " AND ec.statut = 4";
$sql.= " AND ctc.source = 'internal'";
if ($projectid)
{
if ($userp) $sql.= " AND pt.rowid = ".$projectid;
@ -595,8 +596,8 @@ class Task extends CommonObject
if ($userp) $sql.= " ERROR SHOULD NOT HAPPENS";
if ($usert) $sql.= " AND pt.rowid = ".$taskid;
}
//print $sql;
dol_syslog("Task::getUserRolesForProjectsOrTasks sql=".$sql);
$resql = $this->db->query($sql);
if ($resql)
@ -625,10 +626,10 @@ class Task extends CommonObject
* \brief Return list of id of contacts of task
* \return array Array of id of contacts
*/
function getListContactId()
function getListContactId($source='internal')
{
$contactAlreadySelected = array();
$tab = $this->liste_contact(-1,'internal');
$tab = $this->liste_contact(-1,$source);
$num=sizeof($tab);
$i = 0;
while ($i < $num)

View File

@ -103,8 +103,8 @@ $tnums = count($tasks);
for ($tcursor=0; $tcursor < $tnums; $tcursor++) {
$t = $tasks[$tcursor];
if ($t["task_parent"] == 0) {
constructGanttLine($array_contacts,$tasks,$t,$project_dependencies,$level,$project_id);
findChildGanttLine($array_contacts,$tasks,$t["task_id"],$project_dependencies,$level+1);
constructGanttLine($tasks,$t,$project_dependencies,$level,$project_id);
findChildGanttLine($tasks,$t["task_id"],$project_dependencies,$level+1);
}
}
?>
@ -120,15 +120,14 @@ else
<?php
function constructGanttLine($array_contacts,$tarr,$task,$project_dependencies,$level=0,$project_id=null){
function constructGanttLine($tarr,$task,$project_dependencies,$level=0,$project_id=null){
$start_date = $task["task_start_date"];
$end_date = $task["task_end_date"];
if (!$end_date) $end_date = $start_date;
$start_date = dol_print_date($start_date,"%m/%d/%Y");
$end_date = dol_print_date($end_date,"%m/%d/%Y");
// Ressources
$ressources = $array_contacts[$task["task_id"]];
//$ressources = 'ee'; // TODO Add list of ressources
// Resources
$resources = $task["task_resources"];
// Define depend (ex: "", "4,13", ...)
$depend = "\"";
$count = 0;
@ -153,18 +152,18 @@ function constructGanttLine($array_contacts,$tarr,$task,$project_dependencies,$l
for($i=0; $i < $level; $i++) { $name=' &nbsp; &nbsp; '.$name; }
// Add line to gantt
$s = "// Add taks id=".$tasks["task_id"]." level = ".$level."\n";
//$s.= "g.AddElementItem(new JSGantt.ElementItem('task',".$task['task_id'].",'".$name."','".$start_date."', '".$end_date."', '".$task['task_color']."', '', ".$task['task_milestone'].", '".$ressources."', ".$percent.", ".($task["task_is_group"]>0?1:0).", ".$parent.", 1".($depend?", ".$depend:"")."));";
$s = "g.AddTaskItem(new JSGantt.TaskItem(".$task['task_id'].",'".$name."','".$start_date."', '".$end_date."', '".$task['task_color']."', '".$link."', ".$task['task_milestone'].", '".$ressources."', ".$percent.", ".($task["task_is_group"]>0?1:0).", '".$parent."', 1, '".($depend?$depend:"")."'));";
//$s.= "g.AddElementItem(new JSGantt.ElementItem('task',".$task['task_id'].",'".$name."','".$start_date."', '".$end_date."', '".$task['task_color']."', '', ".$task['task_milestone'].", '".$resources."', ".$percent.", ".($task["task_is_group"]>0?1:0).", ".$parent.", 1".($depend?", ".$depend:"")."));";
$s = "g.AddTaskItem(new JSGantt.TaskItem(".$task['task_id'].",'".$name."','".$start_date."', '".$end_date."', '".$task['task_color']."', '".$link."', ".$task['task_milestone'].", '".$resources."', ".$percent.", ".($task["task_is_group"]>0?1:0).", '".$parent."', 1, '".($depend?$depend:"")."'));";
echo $s."\n";
}
function findChildGanttLine($array_contacts,$tarr,$parent,$project_dependencies,$level) {
function findChildGanttLine($tarr,$parent,$project_dependencies,$level) {
$n=count( $tarr );
for ($x=0; $x < $n; $x++) {
if($tarr[$x]["task_parent"] == $parent && $tarr[$x]["task_parent"] != $tarr[$x]["task_id"])
{
constructGanttLine($array_contacts,$tarr,$tarr[$x],$project_dependencies,$level,null);
findChildGanttLine($array_contacts,$tarr,$tarr[$x]["task_id"],$project_dependencies,$level+1);
constructGanttLine($tarr,$tarr[$x],$project_dependencies,$level,null);
findChildGanttLine($tarr,$tarr[$x]["task_id"],$project_dependencies,$level+1);
}
}
}

View File

@ -99,6 +99,7 @@ if ($id > 0 || ! empty($ref))
$userstatic=new User($db);
$companystatic=new Societe($db);
$tab='gantt';
@ -174,7 +175,7 @@ print '<br>';
// can have a parent that is not affected to him).
$tasksarray=$task->getTasksArray(0, 0, $project->id, $socid, 0);
// We load also tasks limited to a particular user
$tasksrole=($_REQUEST["mode"]=='mine' ? $task->getUserRolesForProjectsOrTasks(0,$user,$project->id,0) : '');
//$tasksrole=($_REQUEST["mode"]=='mine' ? $task->getUserRolesForProjectsOrTasks(0,$user,$project->id,0) : '');
//var_dump($tasksarray);
//var_dump($tasksrole);
@ -193,15 +194,47 @@ if (sizeof($tasksarray)>0)
$i=0;
foreach($tasksarray as $key => $val)
{
$task->fetch($val->id);
$tasks[$i]['task_id']=$val->id;
$tasks[$i]['task_parent']=$val->fk_parent;
$tasks[$i]['task_is_group']=0;
$tasks[$i]['task_milestone']=0;
$tasks[$i]['task_percent_complete']=$val->progress;
//$tasks[$i]['task_name']=$task->getNomUrl(1);
$tasks[$i]['task_name']=$val->label;
$tasks[$i]['task_start_date']=$val->date_start;
$tasks[$i]['task_end_date']=$val->date_end;
$tasks[$i]['task_color']='b4d1ea';
$idofusers=$task->getListContactId('internal');
$idofthirdparty=$task->getListContactId('external');
$s='';
if (sizeof($idofusers)>0)
{
$s.=$langs->trans("Internals").': ';
$i=0;
foreach($idofusers as $key => $valid)
{
$userstatic->fetch($valid);
if ($i) $s.=',';
$s.=$userstatic->login;
$i++;
}
}
if (sizeof($idofusers)>0 && (sizeof($idofthirdparty)>0)) $s.=' - ';
if (sizeof($idofusers)>0)
{
$s.=$langs->trans("Externals").': ';
$i=0;
foreach($idofthirdparty as $key => $valid)
{
$companystatic->fetch($valid);
if ($i) $s.=',';
$s.=$companystatic->name;
$i++;
}
}
if ($s) $tasks[$i]['task_resources']='<a href="'.DOL_URL_ROOT.'/projet/tasks/contact.php?id='.$val->id.'" title="'.dol_escape_htmltag($s).'">'.$langs->trans("List").'</a>';
//print "xxx".$val->id.$tasks[$i]['task_resources'];
$i++;
}
//var_dump($tasks);

View File

@ -16,7 +16,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/**
* \file htdocs/projet/jsgantt_language.js.php
* \brief Fichier de javascript de traduction pour JSGantt
@ -53,7 +52,7 @@ i18n["sWeek"] = "<?php echo $langs->transnoentities("Week") ?>";
i18n["sMonth"] = "<?php echo $langs->transnoentities("Month") ?>";
i18n["sQuarter"] = "<?php echo $langs->transnoentities("Quarter") ?>";
i18n["View"] = "<?php echo $langs->transnoentities("View") ?>";
i18n["Resource"] = "<?php echo $langs->transnoentities("Ressource") ?>";
i18n["Resource"] = "<?php echo $langs->transnoentities("Resources") ?>";
i18n["Duration"] = "<?php echo $langs->transnoentities("Duration") ?>";
i18n["Start_Date"] = "<?php echo $langs->transnoentities("DateStart") ?>";
i18n["End_Date"] = "<?php echo $langs->transnoentities("DateEnd") ?>";