NEW The gantt diagram is now sensitive to hours

NEW Add a group task line for tasks on same level on gantt diagram
This commit is contained in:
Laurent Destailleur 2017-10-20 04:04:16 +02:00
parent daa7847ab3
commit a16f0e4356
8 changed files with 140 additions and 51 deletions

View File

@ -820,7 +820,7 @@ JSGantt.GanttChart=function(pDiv, pFormat)
vTmpCell=this.newNode(vTmpRow, 'td', null, 'gresource'); vTmpCell=this.newNode(vTmpRow, 'td', null, 'gresource');
/*vTmpDiv=this.newNode(vTmpCell, 'div', null, null, vTaskList[i].getResource());*/ /*vTmpDiv=this.newNode(vTmpCell, 'div', null, null, vTaskList[i].getResource());*/
var vTmpNode=this.newNode(vTmpCell, 'div', null, ''); var vTmpNode=this.newNode(vTmpCell, 'div', null, '');
vTmpNode=this.newNode(vTmpNode, 'a', null, '', vLangs[vLang]['moreinfo']); vTmpNode=this.newNode(vTmpNode, 'a', null, '', (vTaskList[i].getLink() != '' ? vLangs[vLang]['moreinfo'] : ''));
vTmpNode.setAttribute('href',vTaskList[i].getLink()); vTmpNode.setAttribute('href',vTaskList[i].getLink());
} }

View File

@ -36,6 +36,7 @@ OpenedTasks=Open tasks
OpportunitiesStatusForOpenedProjects=Opportunities amount of open projects by status OpportunitiesStatusForOpenedProjects=Opportunities amount of open projects by status
OpportunitiesStatusForProjects=Opportunities amount of projects by status OpportunitiesStatusForProjects=Opportunities amount of projects by status
ShowProject=Show project ShowProject=Show project
ShowTask=Show task
SetProject=Set project SetProject=Set project
NoProject=No project defined or owned NoProject=No project defined or owned
NbOfProjects=Nb of projects NbOfProjects=Nb of projects
@ -75,6 +76,7 @@ Time=Time
ListOfTasks=List of tasks ListOfTasks=List of tasks
GoToListOfTimeConsumed=Go to list of time consumed GoToListOfTimeConsumed=Go to list of time consumed
GoToListOfTasks=Go to list of tasks GoToListOfTasks=Go to list of tasks
GanttView=Gantt View
ListProposalsAssociatedProject=List of the commercial proposals associated with the project ListProposalsAssociatedProject=List of the commercial proposals associated with the project
ListOrdersAssociatedProject=List of customer orders associated with the project ListOrdersAssociatedProject=List of customer orders associated with the project
ListInvoicesAssociatedProject=List of customer invoices associated with the project ListInvoicesAssociatedProject=List of customer invoices associated with the project

View File

@ -396,8 +396,8 @@ dol_fiche_end();
print '<div class="floatright right'.($conf->dol_optimize_smallscreen?' centpercent':'').'">'.$nav.'</div>'; // We move this before the assign to components so, the default submit button is not the assign to. print '<div class="floatright right'.($conf->dol_optimize_smallscreen?' centpercent':'').'">'.$nav.'</div>'; // We move this before the assign to components so, the default submit button is not the assign to.
print '<div class="float valignmiddle">'; print '<div class="float valignmiddle">';
$titleassigntask = $langs->trans("AssignTaskToMe"); $titleassigntask = $langs->transnoentities("AssignTaskToMe");
if ($usertoprocess->id != $user->id) $titleassigntask = $langs->trans("AssignTaskToUser", $usertoprocess->getFullName($langs)); if ($usertoprocess->id != $user->id) $titleassigntask = $langs->transnoentities("AssignTaskToUser", $usertoprocess->getFullName($langs));
print '<div class="taskiddiv inline-block">'; print '<div class="taskiddiv inline-block">';
$formproject->selectTasks($socid?$socid:-1, $taskid, 'taskid', 32, 0, 1, 1); $formproject->selectTasks($socid?$socid:-1, $taskid, 'taskid', 32, 0, 1, 1);
print '</div>'; print '</div>';

View File

@ -399,8 +399,8 @@ dol_fiche_end();
print '<div class="floatright right'.($conf->dol_optimize_smallscreen?' centpercent':'').'">'.$nav.'</div>'; // We move this before the assign to components so, the default submit button is not the assign to. print '<div class="floatright right'.($conf->dol_optimize_smallscreen?' centpercent':'').'">'.$nav.'</div>'; // We move this before the assign to components so, the default submit button is not the assign to.
print '<div class="float valignmiddle">'; print '<div class="float valignmiddle">';
$titleassigntask = $langs->trans("AssignTaskToMe"); $titleassigntask = $langs->transnoentities("AssignTaskToMe");
if ($usertoprocess->id != $user->id) $titleassigntask = $langs->trans("AssignTaskToUser", $usertoprocess->getFullName($langs)); if ($usertoprocess->id != $user->id) $titleassigntask = $langs->transnoentities("AssignTaskToUser", $usertoprocess->getFullName($langs));
print '<div class="taskiddiv inline-block">'; print '<div class="taskiddiv inline-block">';
$formproject->selectTasks($socid?$socid:-1, $taskid, 'taskid', 32, 0, 1, 1); $formproject->selectTasks($socid?$socid:-1, $taskid, 'taskid', 32, 0, 1, 1);
print '</div>'; print '</div>';

View File

@ -111,11 +111,27 @@ if (g.getDivId() != null)
<?php <?php
$level=0; $level=0;
$tnums = count($tasks); $tnums = count($tasks);
for ($tcursor=0; $tcursor < $tnums; $tcursor++) { $old_project_id = 0;
for ($tcursor=0; $tcursor < $tnums; $tcursor++)
{
$t = $tasks[$tcursor]; $t = $tasks[$tcursor];
if ($t["task_parent"] == 0) {
constructGanttLine($tasks,$t,$project_dependencies,$level,$project_id); if (empty($old_project_id) || $old_project_id != $t['task_project_id'])
findChildGanttLine($tasks,$t["task_id"],$project_dependencies,$level+1); {
// Break on project, create a fictive task for project id $t['task_project_id']
$projecttmp=new Project($db);
$projecttmp->fetch($t['task_project_id']);
$tmpt = array(
'task_id'=> '-'.$t['task_project_id'], 'task_name'=>$projecttmp->ref.' '.$projecttmp->title, 'task_resources'=>'', 'task_start_date'=>'', 'task_end_date'=>'',
'task_is_group'=>1, 'task_css'=>'ggroupblack', 'task_milestone'=> 0, 'task_parent'=>0, 'task_notes'=>'');
constructGanttLine($tasks, $tmpt, array(), 0, $t['task_project_id']);
$old_project_id = $t['task_project_id'];
}
if ($t["task_parent"] <= 0)
{
constructGanttLine($tasks, $t, $task_dependencies, $level, $t['task_project_id']);
findChildGanttLine($tasks, $t["task_id"], $task_dependencies, $level+1);
} }
} }
?> ?>
@ -138,12 +154,12 @@ else
* *
* @param array $tarr Array of all tasks * @param array $tarr Array of all tasks
* @param array $task Array with properties of one task * @param array $task Array with properties of one task
* @param Project $project_dependencies Project object * @param array $task_dependencies Task dependencies (array(array(0=>idtask,1=>idtasktofinishfisrt))
* @param int $level Level * @param int $level Level
* @param int $project_id Id of project * @param int $project_id Id of project
* @return void * @return void
*/ */
function constructGanttLine($tarr,$task,$project_dependencies,$level=0,$project_id=null) function constructGanttLine($tarr, $task, $task_dependencies, $level=0, $project_id=null)
{ {
global $dateformatinput2; global $dateformatinput2;
@ -157,23 +173,35 @@ function constructGanttLine($tarr,$task,$project_dependencies,$level=0,$project_
// Define depend (ex: "", "4,13", ...) // Define depend (ex: "", "4,13", ...)
$depend = ''; $depend = '';
$count = 0; $count = 0;
foreach ($project_dependencies as $value) { foreach ($task_dependencies as $value) {
// Not yet used project_dependencies = array(array(0=>idtask,1=>idtasktofinishfisrt)) // Not yet used project_dependencies = array(array(0=>idtask,1=>idtasktofinishfisrt))
if ($value[0] == $task['task_id']) { if ($value[0] == $task['task_id']) {
$depend.=($count>0?",":"").$value[1]; $depend.=($count>0?",":"").$value[1];
$count ++; $count ++;
} }
} }
// $depend .= "\""; // $depend .= "\"";
// Define parent // Define parent
if ($project_id && $level < 0) if ($project_id && $level < 0)
$parent = 'p'.$project_id; {
$parent = '-'.$project_id;
}
else else
$parent = $task["task_parent"]; {
$parent = $task["task_parent"];
}
// Define percent // Define percent
$percent = $task['task_percent_complete']?$task['task_percent_complete']:0; $percent = $task['task_percent_complete']?$task['task_percent_complete']:0;
// Link (more information) // Link (more information)
$link=DOL_URL_ROOT.'/projet/tasks/contact.php?withproject=1&id='.$task["task_id"]; if ($task["task_id"] < 0)
{
//$link=DOL_URL_ROOT.'/projet/tasks.php?withproject=1&id='.abs($task["task_id"]);
$link='';
}
else
{
$link=DOL_URL_ROOT.'/projet/tasks/contact.php?withproject=1&id='.$task["task_id"];
}
// Name // Name
//$name='<a href="'.DOL_URL_ROOT.'/projet/task/tasks.php?id='.$task['task_id'].'">'.$task['task_name'].'</a>'; //$name='<a href="'.DOL_URL_ROOT.'/projet/task/tasks.php?id='.$task['task_id'].'">'.$task['task_name'].'</a>';
@ -211,9 +239,19 @@ function constructGanttLine($tarr,$task,$project_dependencies,$level=0,$project_
//$note=""; //$note="";
$s = "\n// Add taks id=".$task["task_id"]." level = ".$level."\n"; $s = "\n// Add taks id=".$task["task_id"]." level = ".$level."\n";
// $s.= "g.AddTaskItem(new JSGantt.TaskItem(".$task['task_id'].",'".dol_escape_js($name)."','".$start_date."', '".$end_date."', '".$task['task_color']."', '".$link."', ".$task['task_milestone'].", '".$resources."', ".($percent >= 0 ? $percent : 0).", ".($task["task_is_group"]>0?1:0).", '".$parent."', 1, '".($depend?$depend:"")."', '".$note."'));";
//$task["task_is_group"]=1; // When task_is_group is 1, content will be autocalculated from sum of all low tasks
// For JSGanttImproved // For JSGanttImproved
$s.= "g.AddTaskItem(new JSGantt.TaskItem(".$task['task_id'].",'".dol_escape_js(trim($name))."','".$start_date."', '".$end_date."', '".$task['task_css']."', '".$link."', ".$task['task_milestone'].", '".dol_escape_js($resources)."', ".($percent >= 0 ? $percent : 0).", ".($task["task_is_group"]).", ".$parent.", 1, '".($depend?$depend:$parent."SS")."', '".($percent >= 0 ? $percent.'%' : '0%')."','".dol_escape_js($task['note'])."', g));"; $css = $task['task_css'];
$line_is_auto_group = $task["task_is_group"];
//$line_is_auto_group=0;
//if ($line_is_auto_group) $css = 'ggroupblack';
//$dependency = ($depend?$depend:$parent."SS");
$dependency = '';
//$name = str_repeat("..", $level).$name;
$s.= "g.AddTaskItem(new JSGantt.TaskItem('".$task['task_id']."', '".dol_escape_js(trim($name))."', '".$start_date."', '".$end_date."', '".$css."', '".$link."', ".$task['task_milestone'].", '".dol_escape_js($resources)."', ".($percent >= 0 ? $percent : 0).", ".$line_is_auto_group.", '".$parent."', 1, '".$dependency."', '".(empty($task["task_is_group"]) ? (($percent >= 0 && $percent != '') ? $percent.'%' : '') : '')."', '".dol_escape_js($task['note'])."', g));";
echo $s; echo $s;
@ -224,19 +262,34 @@ function constructGanttLine($tarr,$task,$project_dependencies,$level=0,$project_
* *
* @param array $tarr tarr * @param array $tarr tarr
* @param int $parent Parent * @param int $parent Parent
* @param Project $project_dependencies Project object * @param array $task_dependencies Task dependencies
* @param int $level Level * @param int $level Level
* @return void * @return void
*/ */
function findChildGanttLine($tarr,$parent,$project_dependencies,$level) function findChildGanttLine($tarr, $parent, $task_dependencies, $level)
{ {
$n=count($tarr); $n=count($tarr);
echo "\n";
echo "/* g.AddTaskItem(new JSGantt.TaskItem(task_id, 'label', 'start_date', 'end_date', 'css', 'link', milestone, 'Resources', Compl%, Group, Parent, 1, 'Dependency', 'label','note', g)); */\n";
$old_parent_id = 0;
for ($x=0; $x < $n; $x++) for ($x=0; $x < $n; $x++)
{ {
if($tarr[$x]["task_parent"] == $parent && $tarr[$x]["task_parent"] != $tarr[$x]["task_id"]) if($tarr[$x]["task_parent"] == $parent && $tarr[$x]["task_parent"] != $tarr[$x]["task_id"])
{ {
constructGanttLine($tarr,$tarr[$x],$project_dependencies,$level,null); // Create a grouping parent task for the new level
findChildGanttLine($tarr,$tarr[$x]["task_id"],$project_dependencies,$level+1); /*if (empty($old_parent_id) || $old_parent_id != $tarr[$x]['task_project_id'])
{
$tmpt = array(
'task_id'=> -98, 'task_name'=>'Level '.$level, 'task_resources'=>'', 'task_start_date'=>'', 'task_end_date'=>'',
'task_is_group'=>1, 'task_css'=>'ggroupblack', 'task_milestone'=> 0, 'task_parent'=>$tarr[$x]["task_parent"], 'task_notes'=>'');
constructGanttLine($tasks, $tmpt, array(), 0, $tarr[$x]['task_project_id']);
$old_parent_id = $tarr[$x]['task_project_id'];
}*/
constructGanttLine($tarr, $tarr[$x], $task_dependencies, $level, null);
findChildGanttLine($tarr, $tarr[$x]["task_id"], $task_dependencies, $level+1);
} }
} }
} }

View File

@ -195,28 +195,36 @@ if ($id > 0 || ! empty($ref))
* Buttons actions * Buttons actions
*/ */
print '<div class="tabsAction">'; if ($id > 0)
if ($user->rights->projet->all->creer || $user->rights->projet->creer)
{ {
if ($object->public || $userWrite > 0)
{ print '<div class="tabsAction">';
print '<a class="butAction" href="'.DOL_URL_ROOT.'/projet/tasks.php?id='.$object->id.'&action=create'.$param.'&tab=gantt&backtopage='.urlencode($_SERVER['PHP_SELF'].'?id='.$object->id).'">'.$langs->trans('AddTask').'</a>';
} if ($user->rights->projet->all->creer || $user->rights->projet->creer)
else {
{ if ($object->public || $userWrite > 0)
print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('AddTask').'</a>'; {
} print '<a class="butAction" href="'.DOL_URL_ROOT.'/projet/tasks.php?id='.$object->id.'&action=create'.$param.'&tab=gantt&backtopage='.urlencode($_SERVER['PHP_SELF'].'?id='.$object->id).'">'.$langs->trans('AddTask').'</a>';
}
else
{
print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('AddTask').'</a>';
}
}
else
{
print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotEnoughPermissions").'">'.$langs->trans('AddTask').'</a>';
}
print '</div>';
print '<br>';
} }
else else
{ {
print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotEnoughPermissions").'">'.$langs->trans('AddTask').'</a>'; print_fiche_titre($langs->trans("GanttView"));
} }
print '</div>';
print '<br>';
// Get list of tasks in tasksarray and taskarrayfiltered // Get list of tasks in tasksarray and taskarrayfiltered
// We need all tasks (even not limited to a user because a task to user // We need all tasks (even not limited to a user because a task to user
@ -237,24 +245,28 @@ if (count($tasksarray)>0)
$datehourformat=$langs->trans("FormatDateShortJQuery").' '.$langs->trans("FormatHourShortJQuery"); // Used by include ganttchart.inc.php later $datehourformat=$langs->trans("FormatDateShortJQuery").' '.$langs->trans("FormatHourShortJQuery"); // Used by include ganttchart.inc.php later
$array_contacts=array(); $array_contacts=array();
$tasks=array(); $tasks=array();
$project_dependencies=array(); $task_dependencies=array();
$taskcursor=0; $taskcursor=0;
foreach($tasksarray as $key => $val) foreach($tasksarray as $key => $val)
{ {
$task->fetch($val->id); $task->fetch($val->id);
$tasks[$taskcursor]['task_id']=$val->id; $tasks[$taskcursor]['task_id']=$val->id;
$tasks[$taskcursor]['task_parent']=$val->fk_parent; $tasks[$taskcursor]['task_project_id']=$val->fk_project;
$tasks[$taskcursor]['task_parent']=($val->fk_parent ? $val->fk_parent : '-'.$val->fk_project);
$tasks[$taskcursor]['task_is_group'] = 0; $tasks[$taskcursor]['task_is_group'] = 0;
$tasks[$taskcursor]['task_css'] = 'gtaskblue'; $tasks[$taskcursor]['task_css'] = 'gtaskblue';
if($val->fk_parent > 0 && $task->hasChildren()> 0){ if ($val->fk_parent != 0 && $task->hasChildren()> 0){
$tasks[$taskcursor]['task_is_group']=1; $tasks[$taskcursor]['task_is_group']=1;
$tasks[$taskcursor]['task_css'] = 'gtaskred'; $tasks[$taskcursor]['task_css']='ggroupblack';
//$tasks[$taskcursor]['task_css'] = 'gtaskblue';
} }
elseif($task->hasChildren()> 0) { elseif ($task->hasChildren()> 0) {
$tasks[$taskcursor]['task_is_group'] = 1; $tasks[$taskcursor]['task_is_group'] = 1;
$tasks[$taskcursor]['task_css'] = 'gtaskgreen'; //$tasks[$taskcursor]['task_is_group'] = 0;
$tasks[$taskcursor]['task_css'] = 'ggroupblack';
//$tasks[$taskcursor]['task_css'] = 'gtaskblue';
} }
$tasks[$taskcursor]['task_milestone']='0'; $tasks[$taskcursor]['task_milestone']='0';
$tasks[$taskcursor]['task_percent_complete']=$val->progress; $tasks[$taskcursor]['task_percent_complete']=$val->progress;
@ -315,9 +327,12 @@ if (count($tasksarray)>0)
if (! empty($conf->use_javascript_ajax)) if (! empty($conf->use_javascript_ajax))
{ {
//var_dump($_SESSION); //var_dump($_SESSION);
$dateformatinput='mm/dd/yyyy'; // How the date for data are formated
$dateformatinput2="%m/%d/%Y"; // How the date for data are formated // How the date for data are formated (format used bu jsgantt)
//var_dump($dateformatinput); $dateformatinput='yyyy-mm-dd';
// How the date for data are formated (format used by dol_print_date)
$dateformatinput2='standard';
//var_dump($dateformatinput);
//var_dump($dateformatinput2); //var_dump($dateformatinput2);
print '<div class="div-table-responsive">'; print '<div class="div-table-responsive">';

View File

@ -38,16 +38,17 @@ require_once __DIR__.'/../main.inc.php';
top_httphead('text/javascript'); top_httphead('text/javascript');
global $langs; global $langs;
$langs->load("projects");
?> ?>
var vLangs={'<?php print $langs->getDefaultLang(1);?>': var vLangs={'<?php print $langs->getDefaultLang(1);?>':
{ {
'format':'<?php print '-';?>','hour':'"<?php print $langs->transnoentities('Hour'); ?>','day':'<?php print $langs->transnoentities('Day'); ?>', 'format':'<?php print $langs->transnoentities('Period');?>','hour':'"<?php print $langs->transnoentities('Hour'); ?>','day':'<?php print $langs->transnoentities('Day'); ?>',
'week':'<?php print $langs->transnoentities('Week'); ?>','month':'<?php print $langs->transnoentities('Month'); ?>','quarter':'<?php print $langs->transnoentities('Quadri'); ?>', 'week':'<?php print $langs->transnoentities('Week'); ?>','month':'<?php print $langs->transnoentities('Month'); ?>','quarter':'<?php print $langs->transnoentities('Quadri'); ?>',
'hours':'<?php print $langs->transnoentities('Hours'); ?>','days':'<?php print $langs->transnoentities('Days'); ?>','weeks':'<?php print $langs->transnoentities('Weeks');?>', 'hours':'<?php print $langs->transnoentities('Hours'); ?>','days':'<?php print $langs->transnoentities('Days'); ?>','weeks':'<?php print $langs->transnoentities('Weeks');?>',
'months':'<?php print $langs->transnoentities('Months'); ?>','quarters':'<?php print $langs->transnoentities('Quadri'); ?>','hr':'Hr','dy':'<?php print $langs->transnoentities('Day'); ?>','wk':'<?php print $langs->transnoentities('Week'); ?>','mth':'<?php print $langs->transnoentities('Month'); ?>','qtr':'<?php print $langs->transnoentities('Quadri'); ?>','hrs':'<?php print $langs->transnoentities('Hours'); ?>', 'months':'<?php print $langs->transnoentities('Months'); ?>','quarters':'<?php print $langs->transnoentities('Quadri'); ?>','hr':'Hr','dy':'<?php print $langs->transnoentities('Day'); ?>','wk':'<?php print $langs->transnoentities('Week'); ?>','mth':'<?php print $langs->transnoentities('Month'); ?>','qtr':'<?php print $langs->transnoentities('Quadri'); ?>','hrs':'<?php print $langs->transnoentities('Hours'); ?>',
'dys':'<?php print $langs->transnoentities('Days'); ?>','wks':'<?php print $langs->transnoentities('Weeks'); ?>','mths':'<?php print $langs->transnoentities('Months'); ?>','qtrs':'<?php print $langs->transnoentities('Quadri'); ?>','resource':'<?php print dol_escape_js($langs->transnoentities('Resources')); ?>','duration':'<?php print dol_escape_js($langs->transnoentities('Duration')); ?>','comp':'% <?php print dol_escape_js($langs->transnoentities('Total')); ?>', 'dys':'<?php print $langs->transnoentities('Days'); ?>','wks':'<?php print $langs->transnoentities('Weeks'); ?>','mths':'<?php print $langs->transnoentities('Months'); ?>','qtrs':'<?php print $langs->transnoentities('Quadri'); ?>','resource':'<?php print dol_escape_js($langs->transnoentities('Resource')); ?>','duration':'<?php print dol_escape_js($langs->transnoentities('Duration')); ?>','comp':'%',
'completion':'<?php print $langs->transnoentities('Total'); ?>','startdate':'<?php print $langs->transnoentities('DateStart'); ?>','enddate':'<?php print $langs->transnoentities('DateEnd'); ?>','moreinfo':'<?php print dol_escape_js($langs->transnoentities('MoreInformation')); ?>', 'completion':'<?php print $langs->transnoentities('Total'); ?>','startdate':'<?php print $langs->transnoentities('DateStart'); ?>','enddate':'<?php print $langs->transnoentities('DateEnd'); ?>','moreinfo':'<?php print dol_escape_js($langs->transnoentities('ShowTask')); ?>',
'notes':'<?php print $langs->transnoentities('NotePublic'); ?>', 'notes':'<?php print $langs->transnoentities('NotePublic'); ?>',
'january':'<?php print $langs->transnoentities('January'); ?>','february':'<?php print $langs->transnoentities('February'); ?>','march':'<?php print $langs->transnoentities('March'); ?>','april':'<?php print $langs->transnoentities('April'); ?>','maylong':'<?php print $langs->transnoentities('May'); ?>','june':'<?php print $langs->transnoentities('June'); ?>','july':'<?php print $langs->transnoentities('July'); ?>', 'january':'<?php print $langs->transnoentities('January'); ?>','february':'<?php print $langs->transnoentities('February'); ?>','march':'<?php print $langs->transnoentities('March'); ?>','april':'<?php print $langs->transnoentities('April'); ?>','maylong':'<?php print $langs->transnoentities('May'); ?>','june':'<?php print $langs->transnoentities('June'); ?>','july':'<?php print $langs->transnoentities('July'); ?>',
'august':'<?php print $langs->transnoentities('August'); ?>','september':'<?php print $langs->transnoentities('September'); ?>','october':'<?php print $langs->transnoentities('October'); ?>','november':'<?php print $langs->transnoentities('November'); ?>','december':'<?php print $langs->transnoentities('December'); ?>', 'august':'<?php print $langs->transnoentities('August'); ?>','september':'<?php print $langs->transnoentities('September'); ?>','october':'<?php print $langs->transnoentities('October'); ?>','november':'<?php print $langs->transnoentities('November'); ?>','december':'<?php print $langs->transnoentities('December'); ?>',

View File

@ -3922,11 +3922,29 @@ div.gTaskInfo {
.gtaskblue { .gtaskblue {
background: rgb(108,152,185) !important; background: rgb(108,152,185) !important;
} }
.gtaskgreen {
background: rgb(160,173,58) !important;
}
td.gtaskname { td.gtaskname {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
td.gminorheadingwkend {
color: #888 !important;
}
td.gminorheading {
color: #666 !important;
}
.gtaskname div, .gtaskname {
min-width: 200px !important;
max-width: 200px !important;
width: 200px !important;
}
.gpccomplete div, .gpccomplete {
min-width: 40px !important;
max-width: 40px !important;
width: 40px !important;
}
/* ============================================================================== */ /* ============================================================================== */