* [task#152672, done] Display execution information by item and hierarchy in the execution list.

This commit is contained in:
liuruogu
2025-12-31 08:59:21 +00:00
parent b074f20d46
commit 403ad871a1
2 changed files with 44 additions and 4 deletions
+1 -1
View File
@@ -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)
+43 -3
View File
@@ -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));
}