* [task#140897,done,5h,0h] Finish parent task time updates based on child task time changes.
This commit is contained in:
@@ -243,12 +243,30 @@ function exitHandler()
|
||||
}
|
||||
}
|
||||
|
||||
/* 父级的开始结束跟着子级变动。 */
|
||||
function changeParentTask(child, id)
|
||||
{
|
||||
let task = gantt.getTask(id);
|
||||
if(task.type != 'task') return false;
|
||||
|
||||
if(child.start_date < task.start_date) task.start_date = child.start_date;
|
||||
if(child.end_date > task.end_date) task.end_date = child.end_date;
|
||||
|
||||
let from = new Date(task.start_date);
|
||||
let to = new Date(task.end_date);
|
||||
task.begin = from;
|
||||
task.deadline = (new Date(to.valueOf() - 1));
|
||||
|
||||
gantt.updateTask(task.id, task);
|
||||
if(task.parent) changeParentTask(task, task.parent);
|
||||
}
|
||||
|
||||
/* Validate task drag. */
|
||||
function validateResources(id)
|
||||
{
|
||||
let task = gantt.getTask(id);
|
||||
let from = new Date(task.start_date);
|
||||
let to = new Date(task.end_date);
|
||||
let task = gantt.getTask(id);
|
||||
let from = new Date(task.start_date);
|
||||
let to = new Date(task.end_date);
|
||||
let status = task.status;
|
||||
let type = task.type;
|
||||
let statusLang = ganttLang.taskStatusList['wait'];
|
||||
@@ -266,9 +284,8 @@ function validateResources(id)
|
||||
}
|
||||
|
||||
task.begin = from;
|
||||
task.deadline = (new Date(to.valueOf() - 1));;
|
||||
task.deadline = (new Date(to.valueOf() - 1));
|
||||
|
||||
gantt.updateTask(task.id);
|
||||
let itemID;
|
||||
if(type == 'task') itemID = task.id.split("-")[1];
|
||||
if(type == 'plan') itemID = task.id;
|
||||
@@ -294,6 +311,11 @@ function validateResources(id)
|
||||
zui.Messager.show({content: response.message, type: 'danger-outline', icon: 'exclamation-sign'});
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
gantt.updateTask(task.id, task);
|
||||
if(task.parent) changeParentTask(task, task.parent);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -415,7 +437,6 @@ function initGantt()
|
||||
gantt.config.static_background = true;
|
||||
gantt.config.show_task_cells = false;
|
||||
gantt.config.row_height = 32;
|
||||
gantt.config.min_column_width = 40;
|
||||
gantt.config.details_on_create = false;
|
||||
gantt.config.duration_unit = "day";
|
||||
setScalesByZoom(zooming);
|
||||
@@ -665,7 +686,7 @@ function initGantt()
|
||||
});
|
||||
|
||||
/* Link attachEvent onAfterTaskDrag */
|
||||
gantt.attachEvent("onBeforeTaskChanged", function(id, mode, task){return validateResources(id)});
|
||||
gantt.attachEvent("onBeforeTaskChanged", function(id, mode, task){return validateResources(id);});
|
||||
|
||||
gantt.attachEvent("onRowDragStart", function(id, target, e)
|
||||
{
|
||||
|
||||
@@ -664,7 +664,7 @@ class programplanTao extends programplanModel
|
||||
$data->progress = $plan->progress / 100;
|
||||
$data->taskProgress = $plan->progress . '%';
|
||||
|
||||
if($data->endDate > $data->start_date) $data->duration = $this->getDuration($data->start_date, $data->endDate);
|
||||
if($data->endDate > $data->start_date) $data->duration = helper::diffDate($data->endDate, $data->start_date) + 1;
|
||||
if(empty($data->start_date) || empty($data->endDate)) $data->duration = 1;
|
||||
|
||||
if(!empty($this->config->setPercent)) $data->percent = $plan->percent;
|
||||
@@ -805,7 +805,7 @@ class programplanTao extends programplanModel
|
||||
$data->textColor = zget($this->lang->execution->gantt->textColor, $task->pri, $this->lang->execution->gantt->defaultTextColor);
|
||||
$data->bar_height = $this->lang->execution->gantt->bar_height;
|
||||
|
||||
if($data->endDate > $data->start_date) $data->duration = $this->getDuration($data->start_date, $data->endDate);
|
||||
if($data->endDate > $data->start_date) $data->duration = helper::diffDate($data->endDate, $data->start_date) + 1;
|
||||
if(empty($data->start_date) or empty($data->endDate)) $data->duration = 1;
|
||||
if($data->start_date) $data->start_date = date('d-m-Y', strtotime($data->start_date));
|
||||
|
||||
|
||||
+10
-4
@@ -3231,13 +3231,19 @@ class taskModel extends model
|
||||
{
|
||||
$this->app->loadLang('project');
|
||||
|
||||
$changeTable = $postData->type == 'task' ? TABLE_TASK : TABLE_PROJECT;
|
||||
$actionType = $postData->type == 'task' ? 'task' : 'execution';
|
||||
$oldObject = $this->dao->select('*')->from($changeTable)->where('id')->eq($postData->id)->fetch();
|
||||
$postData->endDate = date('Y-m-d', strtotime('-1 day', strtotime($postData->endDate)));
|
||||
$changeTable = $postData->type == 'task' ? TABLE_TASK : TABLE_PROJECT;
|
||||
$actionType = $postData->type == 'task' ? 'task' : 'execution';
|
||||
$oldObject = $this->dao->select('*')->from($changeTable)->where('id')->eq($postData->id)->fetch();
|
||||
|
||||
if($postData->type == 'task')
|
||||
{
|
||||
$this->taskTao->updateTaskEsDateByGantt($postData);
|
||||
$oldObject->estStarted = $postData->startDate;
|
||||
$oldObject->deadline = $postData->endDate;
|
||||
unset($oldObject->canceledDate);
|
||||
unset($oldObject->finishedDate);
|
||||
unset($oldObject->closedDate);
|
||||
$this->loadModel('task')->update($oldObject);
|
||||
}
|
||||
elseif($postData->type == 'plan')
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user