* [task#152672, done] Display execution information by item and hierarchy in the execution list.
This commit is contained in:
@@ -57,7 +57,7 @@ class executionsEntry extends entry
|
||||
$executionsMap = array();
|
||||
foreach($data->data->executionStats as $execution)
|
||||
{
|
||||
$execution = $this->filterFields($execution, 'id,name,project,code,type,parent,begin,end,status,openedBy,openedDate,delay,progress,children,' . $appendFields);
|
||||
$execution = $this->filterFields($execution, 'id,name,project,code,type,parent,begin,end,status,openedBy,openedDate,delay,progress,children,isParent,' . $appendFields);
|
||||
$execution = $this->format($execution, 'openedBy:user,openedDate:time,lastEditedBy:user,lastEditedDate:time,closedBy:user,closedDate:time,canceledBy:user,canceledDate:time,PM:user,PO:user,RD:user,QD:user,whitelist:userList,begin:date,end:date,realBegan:date,realEnd:date,deleted:bool');
|
||||
|
||||
if($mergeChildren)
|
||||
|
||||
@@ -79,12 +79,52 @@ class tasksEntry extends entry
|
||||
{
|
||||
$tasks = $data->data->tasks;
|
||||
$pager = $data->data->pager;
|
||||
$mergeChildren = $this->param('mergeChildren', 0);
|
||||
|
||||
$result = array();
|
||||
foreach($tasks as $task)
|
||||
$tasksMap = array();
|
||||
|
||||
if($mergeChildren)
|
||||
{
|
||||
if(isset($task->children)) $task->children = array_values((array)$task->children);
|
||||
$result[] = $this->format($task, 'deadline:date,openedBy:user,openedDate:time,assignedTo:user,assignedDate:time,realStarted:time,finishedBy:user,finishedDate:time,closedBy:user,closedDate:time,canceledBy:user,canceledDate:time,lastEditedBy:user,lastEditedDate:time,deleted:bool,mailto:userList');
|
||||
/* Build tasks map. */
|
||||
foreach($tasks as $task)
|
||||
{
|
||||
$tasksMap[$task->id] = $task;
|
||||
}
|
||||
|
||||
/* Merge children tasks into parent tasks. */
|
||||
foreach($tasksMap as $task)
|
||||
{
|
||||
if(!empty($task->parent) && $task->parent != 0 && $task->parent != '0' && isset($tasksMap[$task->parent]))
|
||||
{
|
||||
$parentTask = $tasksMap[$task->parent];
|
||||
if(!isset($parentTask->children)) $parentTask->children = array();
|
||||
$parentTask->children[] = $task;
|
||||
}
|
||||
}
|
||||
|
||||
/* Only return parent tasks (tasks with no parent or parent not in the map). */
|
||||
foreach($tasksMap as $task)
|
||||
{
|
||||
if(empty($task->parent) || $task->parent == 0 || $task->parent == '0' || !isset($tasksMap[$task->parent]))
|
||||
{
|
||||
if(isset($task->children)) $task->children = array_values((array)$task->children);
|
||||
$result[] = $this->format($task, 'deadline:date,openedBy:user,openedDate:time,assignedTo:user,assignedDate:time,realStarted:time,finishedBy:user,finishedDate:time,closedBy:user,closedDate:time,canceledBy:user,canceledDate:time,lastEditedBy:user,lastEditedDate:time,deleted:bool,mailto:userList');
|
||||
}
|
||||
}
|
||||
|
||||
/* Adjust pager total when mergeChildren is enabled. */
|
||||
$pager->recTotal = count($result);
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($tasks as $task)
|
||||
{
|
||||
if(isset($task->children)) $task->children = array_values((array)$task->children);
|
||||
$result[] = $this->format($task, 'deadline:date,openedBy:user,openedDate:time,assignedTo:user,assignedDate:time,realStarted:time,finishedBy:user,finishedDate:time,closedBy:user,closedDate:time,canceledBy:user,canceledDate:time,lastEditedBy:user,lastEditedDate:time,deleted:bool,mailto:userList');
|
||||
}
|
||||
}
|
||||
|
||||
return $this->send(200, array('page' => $pager->pageID, 'total' => $pager->recTotal, 'limit' => $pager->recPerPage, 'tasks' => $result));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user