Merge branch 'master' into zentaopms_239

This commit is contained in:
wangyidong
2022-10-27 11:39:47 +08:00
370 changed files with 9090 additions and 2016 deletions
+1 -1
View File
@@ -58,6 +58,6 @@ $config->programplan->customCreateFields = 'PM,percent,attribute,acl,milestone,r
$config->programplan->custom = new stdclass();
$config->programplan->custom->createFields = 'PM,percent,attribute,acl,milestone';
$config->programplan->custom->customGanttFields = 'PM,deadline,status,realBegan,realEnd,progress,taskProgress,estimate,consumed';
$config->programplan->custom->customGanttFields = 'PM,deadline,status,realBegan,realEnd,progress,taskProgress,estimate,consumed,delay,delayDays';
$config->programplan->ganttCustom = new stdclass();
$config->programplan->ganttCustom->ganttFields = 'PM,deadline';
+19 -9
View File
@@ -60,6 +60,9 @@ $lang->programplan->exporting = 'Exporting';
$lang->programplan->exportFail = 'Export failed';
$lang->programplan->hideCriticalPath = 'Hide Critical Path';
$lang->programplan->showCriticalPath = 'Show Critical Path';
$lang->programplan->delay = 'Delay';
$lang->programplan->delayDays = 'Delay days';
$lang->programplan->errorBegin = "Project begin date: %s, begin date should be >= project begin date.";
$lang->programplan->errorEnd = "Project end date: %s, end date should be <= project end date.";
$lang->programplan->emptyBegin = '『Begin』should not be blank';
@@ -70,6 +73,10 @@ $lang->programplan->checkEnd = '『End』should be valid date';
$lang->programplan->milestoneList[1] = 'Yes';
$lang->programplan->milestoneList[0] = 'No';
$lang->programplan->delayList = array();
$lang->programplan->delayList[1] = 'Yes';
$lang->programplan->delayList[0] = 'No';
$lang->programplan->noData = 'No Data';
$lang->programplan->children = 'Sub Plan';
$lang->programplan->childrenAB = 'Child';
@@ -80,15 +87,17 @@ $lang->programplan->stageCustom = new stdClass();
$lang->programplan->stageCustom->date = 'Show Date';
$lang->programplan->stageCustom->task = 'Show Task';
$lang->programplan->ganttCustom['PM'] ='Manager';
$lang->programplan->ganttCustom['deadline'] ='Deadline';
$lang->programplan->ganttCustom['status'] ='Status';
$lang->programplan->ganttCustom['realBegan'] ='Actual Began';
$lang->programplan->ganttCustom['realEnd'] ='Actual End';
$lang->programplan->ganttCustom['progress'] ='Workload Ratio';
$lang->programplan->ganttCustom['taskProgress'] ='Task Progress';
$lang->programplan->ganttCustom['estimate'] ='Estimate';
$lang->programplan->ganttCustom['consumed'] ='Consumed';
$lang->programplan->ganttCustom['PM'] = 'Manager';
$lang->programplan->ganttCustom['deadline'] = 'Deadline';
$lang->programplan->ganttCustom['status'] = 'Status';
$lang->programplan->ganttCustom['realBegan'] = 'Actual Began';
$lang->programplan->ganttCustom['realEnd'] = 'Actual End';
$lang->programplan->ganttCustom['progress'] = 'Workload Ratio';
$lang->programplan->ganttCustom['taskProgress'] = 'Task Progress';
$lang->programplan->ganttCustom['estimate'] = 'Estimate';
$lang->programplan->ganttCustom['consumed'] = 'Consumed';
$lang->programplan->ganttCustom['delay'] = 'Delay';
$lang->programplan->ganttCustom['delayDays'] = 'Delay days';
$lang->programplan->error = new stdclass();
$lang->programplan->error->percentNumber = '"Workload %" must be digits.';
@@ -98,6 +107,7 @@ $lang->programplan->error->createdTask = 'The task has been decomposed. Sub
$lang->programplan->error->parentWorkload = 'The sum of the workload of the child phase cannot be greater than that of the parent phase: %s.';
$lang->programplan->error->parentDuration = 'The planned start and planned completion of the child phase cannot exceed the parent phase.';
$lang->programplan->error->sameName = 'Stage name cannot be the same!';
$lang->programplan->error->sameCode = 'Stage code cannot be the same!';
$lang->programplan->error->taskDrag = 'The %s task cannot be dragged';
$lang->programplan->error->planDrag = 'The %s stage cannot be dragged';
+19 -9
View File
@@ -60,6 +60,9 @@ $lang->programplan->exporting = 'Exporting';
$lang->programplan->exportFail = 'Failed';
$lang->programplan->hideCriticalPath = 'Hide Critical Path';
$lang->programplan->showCriticalPath = 'Show Critical Path';
$lang->programplan->delay = 'Delay';
$lang->programplan->delayDays = 'Delay days';
$lang->programplan->errorBegin = "Project begin date: %s, begin date should be >= project begin date.";
$lang->programplan->errorEnd = "Project end date: %s, end date should be <= project end date.";
$lang->programplan->emptyBegin = '『Begin』should not be blank';
@@ -70,6 +73,10 @@ $lang->programplan->checkEnd = '『End』should be valid date';
$lang->programplan->milestoneList[1] = 'Yes';
$lang->programplan->milestoneList[0] = 'No';
$lang->programplan->delayList = array();
$lang->programplan->delayList[1] = 'Yes';
$lang->programplan->delayList[0] = 'No';
$lang->programplan->noData = 'No Data';
$lang->programplan->children = 'Sub Plan';
$lang->programplan->childrenAB = 'Child';
@@ -80,15 +87,17 @@ $lang->programplan->stageCustom = new stdClass();
$lang->programplan->stageCustom->date = 'Show Date';
$lang->programplan->stageCustom->task = 'Show Task';
$lang->programplan->ganttCustom['PM'] ='Manager';
$lang->programplan->ganttCustom['deadline'] ='Deadline';
$lang->programplan->ganttCustom['status'] ='Status';
$lang->programplan->ganttCustom['realBegan'] ='Actual Began';
$lang->programplan->ganttCustom['realEnd'] ='Actual End';
$lang->programplan->ganttCustom['progress'] ='Workload Ratio';
$lang->programplan->ganttCustom['taskProgress'] ='Task Progress';
$lang->programplan->ganttCustom['estimate'] ='Estimate';
$lang->programplan->ganttCustom['consumed'] ='Consumed';
$lang->programplan->ganttCustom['PM'] = 'Manager';
$lang->programplan->ganttCustom['deadline'] = 'Deadline';
$lang->programplan->ganttCustom['status'] = 'Status';
$lang->programplan->ganttCustom['realBegan'] = 'Actual Began';
$lang->programplan->ganttCustom['realEnd'] = 'Actual End';
$lang->programplan->ganttCustom['progress'] = 'Workload Ratio';
$lang->programplan->ganttCustom['taskProgress'] = 'Task Progress';
$lang->programplan->ganttCustom['estimate'] = 'Estimate';
$lang->programplan->ganttCustom['consumed'] = 'Consumed';
$lang->programplan->ganttCustom['delay'] = 'Delay';
$lang->programplan->ganttCustom['delayDays'] = 'Delay days';
$lang->programplan->error = new stdclass();
$lang->programplan->error->percentNumber = '"Workload %" must be digits.';
@@ -98,6 +107,7 @@ $lang->programplan->error->createdTask = 'The task is decomposed. Sub stages
$lang->programplan->error->parentWorkload = 'The sum of the workload in the sub stage cannot be > that in the parent stage: %s.';
$lang->programplan->error->parentDuration = 'The planned start and planned completion of the child phase cannot exceed the parent phase.';
$lang->programplan->error->sameName = 'Stage name cannot be the same!';
$lang->programplan->error->sameCode = 'Stage code cannot be the same!';
$lang->programplan->error->taskDrag = 'The %s task cannot be dragged';
$lang->programplan->error->planDrag = 'The %s stage cannot be dragged';
+19 -9
View File
@@ -60,6 +60,9 @@ $lang->programplan->exporting = 'Exporting';
$lang->programplan->exportFail = 'Export failed';
$lang->programplan->hideCriticalPath = 'Hide Critical Path';
$lang->programplan->showCriticalPath = 'Show Critical Path';
$lang->programplan->delay = 'Delay';
$lang->programplan->delayDays = 'Delay days';
$lang->programplan->errorBegin = "Project begin date: %s, begin date should be >= project begin date.";
$lang->programplan->errorEnd = "Project end date: %s, end date should be <= project end date.";
$lang->programplan->emptyBegin = '『Begin』should not be blank';
@@ -70,6 +73,10 @@ $lang->programplan->checkEnd = '『End』should be valid date';
$lang->programplan->milestoneList[1] = 'Yes';
$lang->programplan->milestoneList[0] = 'No';
$lang->programplan->delayList = array();
$lang->programplan->delayList[1] = 'Yes';
$lang->programplan->delayList[0] = 'No';
$lang->programplan->noData = 'No Data';
$lang->programplan->children = 'Sub Plan';
$lang->programplan->childrenAB = 'Child';
@@ -80,15 +87,17 @@ $lang->programplan->stageCustom = new stdClass();
$lang->programplan->stageCustom->date = 'Show Date';
$lang->programplan->stageCustom->task = 'Show Task';
$lang->programplan->ganttCustom['PM'] ='Manager';
$lang->programplan->ganttCustom['deadline'] ='Deadline';
$lang->programplan->ganttCustom['status'] ='Status';
$lang->programplan->ganttCustom['realBegan'] ='Actual Began';
$lang->programplan->ganttCustom['realEnd'] ='Actual End';
$lang->programplan->ganttCustom['progress'] ='Workload Ratio';
$lang->programplan->ganttCustom['taskProgress'] ='Task Progress';
$lang->programplan->ganttCustom['estimate'] ='Estimate';
$lang->programplan->ganttCustom['consumed'] ='Consumed';
$lang->programplan->ganttCustom['PM'] = 'Manager';
$lang->programplan->ganttCustom['deadline'] = 'Deadline';
$lang->programplan->ganttCustom['status'] = 'Status';
$lang->programplan->ganttCustom['realBegan'] = 'Actual Began';
$lang->programplan->ganttCustom['realEnd'] = 'Actual End';
$lang->programplan->ganttCustom['progress'] = 'Workload Ratio';
$lang->programplan->ganttCustom['taskProgress'] = 'Task Progress';
$lang->programplan->ganttCustom['estimate'] = 'Estimate';
$lang->programplan->ganttCustom['consumed'] = 'Consumed';
$lang->programplan->ganttCustom['delay'] = 'Delay';
$lang->programplan->ganttCustom['delayDays'] = 'Delay days';
$lang->programplan->error = new stdclass();
$lang->programplan->error->percentNumber = '"Workload %" must be digits.';
@@ -98,6 +107,7 @@ $lang->programplan->error->createdTask = 'The task has been decomposed. Sub
$lang->programplan->error->parentWorkload = 'The sum of the workload of the child phase cannot be greater than that of the parent phase: %s.';
$lang->programplan->error->parentDuration = 'The planned start and planned completion of the child phase cannot exceed the parent phase.';
$lang->programplan->error->sameName = 'Stage name cannot be the same!';
$lang->programplan->error->sameCode = 'Stage code cannot be the same!';
$lang->programplan->error->taskDrag = 'The %s task cannot be dragged';
$lang->programplan->error->planDrag = 'The %s stage cannot be dragged';
+10
View File
@@ -60,6 +60,9 @@ $lang->programplan->exporting = '导出';
$lang->programplan->exportFail = '导出失败';
$lang->programplan->hideCriticalPath = '隐藏关键路径';
$lang->programplan->showCriticalPath = '显示关键路径';
$lang->programplan->delay = '是否延期';
$lang->programplan->delayDays = '延期天数';
$lang->programplan->errorBegin = '阶段的开始时间不能小于所属项目的开始时间%s';
$lang->programplan->errorEnd = '阶段的结束时间不能大于所属项目的结束时间%s';
$lang->programplan->emptyBegin = '『计划开始』日期不能为空';
@@ -70,6 +73,10 @@ $lang->programplan->checkEnd = '『计划完成』应当为合法的日
$lang->programplan->milestoneList[1] = '是';
$lang->programplan->milestoneList[0] = '否';
$lang->programplan->delayList = array();
$lang->programplan->delayList[1] = '是';
$lang->programplan->delayList[0] = '否';
$lang->programplan->noData = '暂无数据。';
$lang->programplan->children = '二级计划';
$lang->programplan->childrenAB = '子';
@@ -89,6 +96,8 @@ $lang->programplan->ganttCustom['progress'] ='工作量占比';
$lang->programplan->ganttCustom['taskProgress'] ='任务进度';
$lang->programplan->ganttCustom['estimate'] ='工时';
$lang->programplan->ganttCustom['consumed'] ='消耗工时';
$lang->programplan->ganttCustom['delay'] = '是否延期';
$lang->programplan->ganttCustom['delayDays'] = '延期天数';
$lang->programplan->error = new stdclass();
$lang->programplan->error->percentNumber = '"工作量比例"必须为数字';
@@ -98,6 +107,7 @@ $lang->programplan->error->createdTask = '已分解任务,不可添加子
$lang->programplan->error->parentWorkload = '子阶段的工作量之和不能大于父阶段的工作量:%s';
$lang->programplan->error->parentDuration = '子阶段计划开始、计划完成不能超过父阶段';
$lang->programplan->error->sameName = '阶段名称不能相同!';
$lang->programplan->error->sameCode = '阶段代号不能相同!';
$lang->programplan->error->taskDrag = '%s的任务不可以拖动';
$lang->programplan->error->planDrag = '%s的阶段不可以拖动';
+69 -2
View File
@@ -169,6 +169,7 @@ class programplanModel extends model
}
}
$today = helper::today();
$datas = array();
$planIdList = array();
$isMilestone = "<icon class='icon icon-flag icon-sm red'></icon> ";
@@ -205,6 +206,15 @@ class programplanModel extends model
$data->textColor = $this->lang->execution->gantt->stage->textColor;
$data->bar_height = $this->lang->execution->gantt->bar_height;
/* Determines if the object is delay. */
$data->delay = $this->lang->programplan->delayList[0];
$data->delayDays = 0;
if($today > $end)
{
$data->delay = $this->lang->programplan->delayList[1];
$data->delayDays = helper::diffDate($today, substr($end, 0, 10));
}
if($data->endDate > $data->start_date) $data->duration = helper::diffDate(substr($data->endDate, 0, 10), substr($data->start_date, 0, 10)) + 1;
if($data->start_date) $data->start_date = date('d-m-Y', strtotime($data->start_date));
if($data->start_date == '' or $data->endDate == '') $data->duration = 1;
@@ -285,6 +295,15 @@ class programplanModel extends model
$data->textColor = zget($this->lang->execution->gantt->textColor, $task->pri, $this->lang->execution->gantt->defaultTextColor);
$data->bar_height = $this->lang->execution->gantt->bar_height;
/* Determines if the object is delay. */
$data->delay = $this->lang->programplan->delayList[0];
$data->delayDays = 0;
if($today > $end)
{
$data->delay = $this->lang->programplan->delayList[1];
$data->delayDays = helper::diffDate($today, substr($end, 0, 10));
}
/* If multi task then show the teams. */
if($task->mode == 'multi' and !empty($taskTeams[$task->id]))
{
@@ -683,7 +702,15 @@ class programplanModel extends model
return false;
}
$project = $this->loadModel('project')->getByID($projectID);
$project = $this->loadModel('project')->getByID($projectID);
$setCode = (!isset($this->config->setCode) or $this->config->setCode == 1) ? true : false;
$checkCode = $this->checkCodeUnique($codes, isset($planIDList) ? $planIDList : '');
if($setCode and $checkCode !== true)
{
if($checkCode) dao::$errors['message'][] = sprintf($this->lang->error->repeat, $this->lang->execution->code, $checkCode);
else dao::$errors['message'][] = $this->lang->programplan->error->sameCode;
return false;
}
$datas = array();
foreach($names as $key => $name)
@@ -696,6 +723,7 @@ class programplanModel extends model
$plan->project = $projectID;
$plan->parent = $parentID ? $parentID : $projectID;
$plan->name = $names[$key];
if($setCode) $plan->code = $codes[$key];
$plan->percent = $percents[$key];
$plan->attribute = empty($parentID) ? $attributes[$key] : $parentAttribute;
$plan->milestone = $milestone[$key];
@@ -765,6 +793,11 @@ class programplanModel extends model
if(helper::isZeroDate($plan->begin)) $plan->begin = '';
if(helper::isZeroDate($plan->end)) $plan->end = '';
if($setCode and empty($plan->code))
{
dao::$errors['message'][] = sprintf($this->lang->error->notempty, $this->lang->execution->code);
return false;
}
foreach(explode(',', $this->config->programplan->create->requiredFields) as $field)
{
$field = trim($field);
@@ -996,6 +1029,13 @@ class programplanModel extends model
if($projectID) $this->loadModel('execution')->checkBeginAndEndDate($projectID, $plan->begin, $plan->end);
if(dao::isError()) return false;
$setCode = (!isset($this->config->setCode) or $this->config->setCode == 1) ? true : false;
if($setCode and empty($plan->code))
{
dao::$errors['code'][] = sprintf($this->lang->error->notempty, $this->lang->execution->code);
return false;
}
$planChanged = ($oldPlan->name != $plan->name || $oldPlan->milestone != $plan->milestone || $oldPlan->begin != $plan->begin || $oldPlan->end != $plan->end);
if($plan->parent > 0)
@@ -1035,15 +1075,19 @@ class programplanModel extends model
if($planChanged) $plan->version = $oldPlan->version + 1;
if(empty($plan->parent)) $plan->parent = $projectID;
$parentStage = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->eq($plan->parent)->andWhere('type')->eq('stage')->fetch();
/* Fix bug #22030. Reset field name for show dao error. */
$this->lang->project->name = $this->lang->programplan->name;
$this->lang->project->code = $this->lang->execution->code;
$this->dao->update(TABLE_PROJECT)->data($plan)
->autoCheck()
->batchCheck($this->config->programplan->edit->requiredFields, 'notempty')
->checkIF($plan->end != '0000-00-00', 'end', 'ge', $plan->begin)
->checkIF($plan->percent != false, 'percent', 'float')
->checkIF(!empty($plan->name), 'name', 'unique', "id != {$planID} and type in ('sprint','stage') and `project` = {$oldPlan->project}")
->checkIF(!empty($plan->name), 'name', 'unique', "id != {$planID} and type in ('sprint','stage') and `project` = {$oldPlan->project} and `deleted` = '0'" . ($parentStage ? " and `parent` = {$oldPlan->parent}" : ''))
->checkIF(!empty($plan->code) and $setCode, 'code', 'unique', "id != $planID and type in ('sprint','stage','kanban') and `deleted` = '0'")
->where('id')->eq($planID)
->exec();
@@ -1222,6 +1266,29 @@ class programplanModel extends model
return true;
}
/**
* Check code unique.
*
* @param array $codes
* @param array $planIDList
* @access public
* @return mix
*/
public function checkCodeUnique($codes, $planIDList)
{
$codes = array_filter($codes);
if(count(array_unique($codes)) != count($codes)) return false;
$code = $this->dao->select('code')->from(TABLE_EXECUTION)
->where('type')->in('sprint,stage,kanban')
->andWhere('deleted')->eq('0')
->andWhere('code')->in($codes)
->beginIF($planIDList)->andWhere('id')->notin($planIDList)->fi()
->fetch('code');
if($code) return $code;
return true;
}
/**
* Get the stage set to milestone.
*
+15
View File
@@ -56,6 +56,9 @@
<thead>
<tr class='text-center'>
<th class='c-name required'><?php echo $name;?></th>
<?php if(!isset($config->setCode) or $config->setCode == 1):?>
<th class='c-code required'><?php echo $lang->execution->code;?></th>
<?php endif;?>
<th class='c-pm <?php echo zget($visibleFields, 'PM', ' hidden') . zget($requiredFields, 'PM', '', ' required');?>'><?php echo $lang->programplan->PM;?></th>
<th class='c-percent <?php echo zget($visibleFields, 'percent', ' hidden') . zget($requiredFields, 'percent', '', ' required');?>'>
<?php echo $lang->programplan->percent;?>
@@ -82,6 +85,9 @@
<?php foreach($stages as $stage):?>
<tr>
<td><input type='text' name='names[<?php echo $i;?>]' id='names<?php echo $i;?>' value='<?php echo $stage->name;?>' class='form-control' /></td>
<?php if(!isset($config->setCode) or $config->setCode == 1):?>
<td><?php echo html::input("codes[$i]", $stage->code, "class='form-control'");?></td>
<?php endif;?>
<td <?php echo zget($visibleFields, 'PM', ' hidden') . zget($requiredFields, 'PM', '', ' required');?>><?php echo html::select("PM[$i]", $PMUsers, '', "class='form-control picker-select'");?></td>
<td <?php echo zget($visibleFields, 'percent', ' hidden') . zget($requiredFields, 'percent', '', ' required');?>>
<div class='input-group'>
@@ -113,6 +119,9 @@
<?php echo html::hidden("planIDList[$i]", $plan->id);?>
<tr>
<td><input type='text' name="names[<?php echo $i;?>]" id='names<?php echo $i;?>' value='<?php echo $plan->name;?>' class='form-control' /></td>
<?php if(!isset($config->setCode) or $config->setCode == 1):?>
<td><?php echo html::input("codes[$i]", $plan->code, "class='form-control'");?></td>
<?php endif;?>
<td <?php echo zget($visibleFields, 'PM', ' hidden') . zget($requiredFields, 'PM', '', ' required');?>><?php echo html::select("PM[$i]", $PMUsers, $plan->PM, "class='form-control picker-select'");?></td>
<td <?php echo zget($visibleFields, 'percent', ' hidden') . zget($requiredFields, 'percent', '', ' required');?>>
<div class='input-group'>
@@ -142,6 +151,9 @@
<?php for($j = 0; $j < 5; $j ++):?>
<tr class='addedItem'>
<td><input type='text' name='names[<?php echo $i;?>]' id='names<?php echo $i;?>' value='' class='form-control' /></td>
<?php if(!isset($config->setCode) or $config->setCode == 1):?>
<td><?php echo html::input("codes[$i]", '', "class='form-control'");?></td>
<?php endif;?>
<td <?php echo zget($visibleFields, 'PM', ' hidden') . zget($requiredFields, 'PM', '', ' required');?>><?php echo html::select("PM[$i]", $PMUsers, '', "class='form-control picker-select'");?></td>
<td <?php echo zget($visibleFields, 'percent', ' hidden') . zget($requiredFields, 'percent', '', ' required');?>>
<div class='input-group'>
@@ -183,6 +195,9 @@
<table class='hidden'>
<tr id='addItem' class='hidden'>
<td><input type='text' name='<?php echo "names[$i]";?>' id='names<?php echo $i;?>' class='form-control' /></td>
<?php if(!isset($config->setCode) or $config->setCode == 1):?>
<td><?php echo html::input("codes[$i]", '', "class='form-control'");?></td>
<?php endif;?>
<td <?php echo zget($visibleFields, 'PM', ' hidden') . zget($requiredFields, 'PM', '', ' required');?>><?php echo html::select("PM[$i]", $PMUsers, '', "class='form-control' id='PM$i'");?></td>
<?php echo html::hidden("planIDList[$i]", 0);?>
<td <?php echo zget($visibleFields, 'percent', ' hidden') . zget($requiredFields, 'percent', '', ' required');?>>
+6
View File
@@ -31,6 +31,12 @@
<th class='w-100px'><?php echo $lang->programplan->name;?> </th>
<td colspan='2'><?php echo html::input('name', $plan->name, "class='form-control'");?></td>
</tr>
<?php if(!isset($config->setCode) or $config->setCode == 1):?>
<tr>
<th class='w-100px'><?php echo $lang->execution->code;?> </th>
<td class='required' colspan='2'><?php echo html::input('code', $plan->code, "class='form-control'");?></td>
</tr>
<?php endif;?>
<tr>
<th><?php echo $lang->programplan->percent;?> </th>
<td colspan='2'>
+5 -1
View File
@@ -560,7 +560,9 @@ $(function()
if(showFields.indexOf('taskProgress') != -1) gantt.config.columns.push({name: 'taskProgress', align: 'center', resize: true, width: 60});
if(showFields.indexOf('realBegan') != -1) gantt.config.columns.push({name: 'realBegan', align: 'center', resize: true, width: 80});
if(showFields.indexOf('realEnd') != -1) gantt.config.columns.push({name: 'realEnd', align: 'center', resize: true, width: 80});
if(showFields.indexOf('consumed') != -1) gantt.config.columns.push({name: 'consumed', align: 'center', resize: false, width: 60});
if(showFields.indexOf('consumed') != -1) gantt.config.columns.push({name: 'consumed', align: 'center', resize: true, width: 60});
if(showFields.indexOf('delay') != -1) gantt.config.columns.push({name: 'delay', align: 'center', resize: true, width: 60});
if(showFields.indexOf('delayDays') != -1) gantt.config.columns.push({name: 'delayDays', align: 'center', resize: false, width: 60});
endField = gantt.config.columns.pop();
endField.resize = false;
@@ -578,6 +580,8 @@ $(function()
gantt.locale.labels.column_duration = "<?php echo $lang->programplan->duration;?>";
gantt.locale.labels.column_estimate = "<?php echo $lang->programplan->estimate;?>";
gantt.locale.labels.column_consumed = "<?php echo $lang->programplan->consumed;?>";
gantt.locale.labels.column_delay = "<?php echo $lang->programplan->delay;?>";
gantt.locale.labels.column_delayDays = "<?php echo $lang->programplan->delayDays;?>";
if((module == 'review' && method == 'assess') || dateDetails) gantt.config.show_chart = false;