* [task#144206,done,2h] optimize task compute delay logic for the stage list.
This commit is contained in:
@@ -2009,11 +2009,11 @@ class executionModel extends model
|
||||
if(isset($teamGroups[$task->id])) $task->team = $teamGroups[$task->id];
|
||||
|
||||
/* Delayed or not?. */
|
||||
if(!empty($workingDays) && !empty($task->deadline) && !helper::isZeroDate($task->deadline))
|
||||
$isNotCancel = !in_array($task->status, array('cancel', 'closed')) || ($task->status == 'closed' && !helper::isZeroDate($task->finishedDate) && $task->closedReason != 'cancel');
|
||||
$isComputeDelay = !helper::isZeroDate($task->deadline) && $isNotCancel;
|
||||
if($isComputeDelay)
|
||||
{
|
||||
$endDate = $today;
|
||||
if(($task->status == 'done' || $task->status == 'closed') && !helper::isZeroDate($task->finishedDate) && $task->finishedDate < $today) $endDate = substr($task->finishedDate, 0, 10);
|
||||
|
||||
$endDate = helper::isZeroDate($task->finishedDate) ? $today : $task->finishedDate;
|
||||
$betweenDays = $this->holiday->getDaysBetween($task->deadline, $endDate);
|
||||
if($betweenDays)
|
||||
{
|
||||
|
||||
@@ -873,16 +873,21 @@ class programplanModel extends model
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
$plans = $this->loadModel('execution')->getByIdList($planIdList);
|
||||
$isGantt = $this->app->rawModule == 'programplan' && $this->app->rawMethod == 'browse';
|
||||
if($isGantt) $plans = $this->loadModel('execution')->getByIdList($planIdList);
|
||||
|
||||
$today = helper::today();
|
||||
$begin = $today;
|
||||
$end = $today;
|
||||
$deadlineList = array();
|
||||
foreach($tasks as $taskID => $task)
|
||||
{
|
||||
$plan = $plans[$task->execution];
|
||||
$deadline = helper::isZeroDate($task->deadline) ? $plan->end : $task->deadline;
|
||||
$begin = $deadline < $begin ? $deadline : $begin;
|
||||
if(!$isGantt && helper::isZeroDate($task->deadline)) continue;
|
||||
|
||||
$deadline = $task->deadline;
|
||||
if(helper::isZeroDate($task->deadline)) $deadline = $plans[$task->execution]->end;
|
||||
|
||||
$begin = $deadline < $begin ? $deadline : $begin;
|
||||
$deadlineList[$taskID] = $deadline;
|
||||
}
|
||||
|
||||
@@ -901,7 +906,8 @@ class programplanModel extends model
|
||||
|
||||
/* Delayed or not?. */
|
||||
$task->delay = 0;
|
||||
$isComputeDelay = !in_array($task->status, array('cancel', 'closed')) || ($task->status == 'closed' && !helper::isZeroDate($task->finishedDate) && $task->closedReason != 'cancel');
|
||||
$isNotCancel = !in_array($task->status, array('cancel', 'closed')) || ($task->status == 'closed' && !helper::isZeroDate($task->finishedDate) && $task->closedReason != 'cancel');
|
||||
$isComputeDelay = $isNotCancel && !empty($deadlineList[$taskID]);
|
||||
if($isComputeDelay)
|
||||
{
|
||||
$endDate = helper::isZeroDate($task->finishedDate) ? $today : $task->finishedDate;
|
||||
|
||||
@@ -86,7 +86,7 @@ window.onRenderCell = function(result, {col, row})
|
||||
result[1].attrs.title = typeof data.rawName != 'undefined' && data.rawName ? data.rawName : data.name;
|
||||
if(html) result.unshift({className: 'flex items-center', html: html});
|
||||
|
||||
if(typeof data.delay != 'undefined' && data.delay && !['done', 'cancel', 'close'].includes(data.status) && data.type != 'point' && data.end != '' && data.end != '0000-00-00' && today > data.end)
|
||||
if(typeof data.delay != 'undefined' && data.delay > 0 && data.type != 'point' && data.end != '' && data.end != '0000-00-00' && today > data.end)
|
||||
{
|
||||
result.push({html: '<span class="label danger-pale ml-1 flex-none nowrap">' + delayWarning.replace('%s', data.delay) + '</span>', className: 'flex items-end', style: { flexDirection: "column" } });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user