diff --git a/trunk/module/project/control.php b/trunk/module/project/control.php index 0695076c48..dfff30bc93 100644 --- a/trunk/module/project/control.php +++ b/trunk/module/project/control.php @@ -196,11 +196,16 @@ class project extends control $position[] = html::a($this->createLink('project', 'browse', "projectID=$projectID"), $project->name); $position[] = $this->lang->project->burn; + /* 生成图表。*/ + $dataXML = $this->report->createSingleXML($this->project->getBurnData($project->id), $this->lang->project->charts->burn->graph); + $charts = $this->report->createJSChart('line', $dataXML, 800); + /* 赋值。*/ $this->assign('header', $header); $this->assign('position', $position); $this->assign('tabID', 'burn'); - $this->assign('charts', $this->report->createChart('line', $this->createLink('project', 'burnData', "project=$projectID", 'xml'))); + $this->assign('charts', $charts); + $this->display(); } diff --git a/trunk/module/project/model.php b/trunk/module/project/model.php index 5dae99be80..4e7fc4e210 100644 --- a/trunk/module/project/model.php +++ b/trunk/module/project/model.php @@ -231,37 +231,52 @@ class projectModel extends model { $project = $this->findById($projectID); $sql = $this->dao->select('date AS name, `left` AS value')->from(TABLE_BURN)->where('project')->eq((int)$projectID); + + /* 没有指定结束日期的情况。*/ if($project->end == '0000-00-00') { $sets = $sql->orderBy('date|desc')->limit(14)->fetchAll('name'); $sets = array_reverse($sets); + + /* 如果没有记录,手工补齐。*/ + if(!$sets) + { + $current = time(); + for($i = 0; $i < 14; $i ++) + { + $nextDay = date('Y-m-d', $current + 60 * 60 * 24 * $i); + $set = array('name' => $nextDay, 'value' => ''); + $sets[] = (object)$set; + } + } + foreach($sets as $set) $set->name = substr($set->name, 5); + return $sets; } else { - $sets = $sql->orderBy('date')->fetchAll('name'); - } - - /* 取得burn表中最大的日期和project的结束时间。*/ - end($sets); - $current = key($sets); - $end = $project->end; - - /* 根据当前日期和项目最后结束的日期,补足后续日期。*/ - if($end != '0000-00-00' and helper::diffDate($end, $current) > 0) - { - while(true) + $sets = $sql->orderBy('date')->fetchAll('name'); + $current = $project->begin; + $end = $project->end; + if($sets) { - $nextDay = date('Y-m-d', strtotime('next day', strtotime($current))); - $current = $nextDay; - $sets[$current]->name = $current; - $sets[$current]->value = ''; // value为空,这样fushioncharts不会打印节点。 - if($nextDay == $end) break; + end($sets); + $current = key($sets); } + + /* 根据当前日期和项目最后结束的日期,补足后续日期。*/ + if(helper::diffDate($end, $current) > 0) + { + while(true) + { + $nextDay = date('Y-m-d', strtotime('next day', strtotime($current))); + $current = $nextDay; + $sets[$current]->name = $current; + $sets[$current]->value = '1'; // value为空,这样fushioncharts不会打印节点。 + if($nextDay == $end) break; + } + } + foreach($sets as $set) $set->name = substr($set->name, 5); + return $sets; } - foreach($sets as $set) - { - $set->name = substr($set->name, 5); - } - return $sets; } } diff --git a/trunk/module/project/view/burn.html.php b/trunk/module/project/view/burn.html.php index fe038fc6a0..6033f0cb58 100644 --- a/trunk/module/project/view/burn.html.php +++ b/trunk/module/project/view/burn.html.php @@ -24,4 +24,5 @@ ?>
+