diff --git a/module/block/ui/sprintblock.html.php b/module/block/ui/sprintblock.html.php index 19bf454bdb..88fc23fb2f 100644 --- a/module/block/ui/sprintblock.html.php +++ b/module/block/ui/sprintblock.html.php @@ -1,24 +1,19 @@ +* @author Gang Liu * @package block * @link https://www.zentao.net */ namespace zin; -panel +overviewBlock ( - set('headingClass', 'border-b'), - set::title($block->title), - div - ( - '正在开发中...' - ) + set(array('block' => $block, 'groups' => $groups)) ); render(); diff --git a/module/block/zen.php b/module/block/zen.php index d4a9d25323..9071177ecb 100644 --- a/module/block/zen.php +++ b/module/block/zen.php @@ -1361,31 +1361,13 @@ class blockZen extends block /** * Print sprint block. * + * @param object $block * @access protected * @return void */ - protected function printSprintBlock(): void + protected function printSprintBlock(object $block): void { - $sprints = $this->dao->select('status, count(*) as sprints')->from(TABLE_EXECUTION) - ->where('deleted')->eq(0) - ->beginIF($this->config->vision == 'lite')->andWhere('type')->eq('kanban')->fi() - ->beginIF($this->config->vision == 'rnd')->andWhere('type')->in('sprint,kanban')->fi() - ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->sprints)->fi() - ->andWhere('project')->eq($this->session->project) - ->groupBy('status') - ->fetchPairs(); - - $summary = new stdclass(); - $summary->total = array_sum($sprints); - $summary->doing = zget($sprints, 'doing', 0); - $summary->closed = zget($sprints, 'closed', 0); - - $progress = new stdclass(); - $progress->doing = $summary->total == 0 ? 0 : round($summary->doing / $summary->total, 3); - $progress->closed = $summary->total == 0 ? 0 : round($summary->closed / $summary->total, 3); - - $this->view->summary = $summary; - $this->view->progress = $progress; + $this->printExecutionOverviewBlock($block, 'sprint', (int)$this->session->project, true); } /** @@ -1600,16 +1582,20 @@ class blockZen extends block * Print execution overview block. * * @param object $block + * @param string $code executionoverview|sprint + * @param int $project + * @param bool $showClosed true|false * @access protected * @return void */ - protected function printExecutionOverviewBlock(object $block): void + protected function printExecutionOverviewBlock(object $block, string $code = 'executionoverview', int $project = 0, bool $showClosed = false): void { $query = $this->dao->select('id, status, Year(closedDate) AS year')->from(TABLE_PROJECT) ->where('deleted')->eq('0') ->andWhere('type')->in('sprint, stage, kanban') ->andWhere('multiple')->eq('1') ->andWhere('vision')->eq($this->config->vision) + ->beginIF($project)->andWhere('project')->eq($project)->fi() ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->sprints)->fi(); $statusPairs = $query->fetchPairs('id', 'status'); @@ -1622,12 +1608,15 @@ class blockZen extends block $cards[0] = new stdclass(); $cards[0]->value = array_sum($statusStats); $cards[0]->class = 'text-primary'; - $cards[0]->label = $this->lang->block->executionoverview->totalExecution; - $cards[0]->url = common::hasPriv('execution', 'all') ? helper::createLink('execution', 'all', 'status=all') : null; + $cards[0]->label = $this->lang->block->{$code}->totalExecution; + + $url = common::hasPriv('execution', 'all') ? helper::createLink('execution', 'all', 'status=all') : null; + if($project) $url = common::hasPriv('project', 'execution') ? helper::createLink('project', 'execution', "status=all&projectID=$project") : null; + $cards[0]->url = $url; $cards[1] = new stdclass(); $cards[1]->value = zget($yearStats, date('Y'), 0); - $cards[1]->label = $this->lang->block->executionoverview->thisYear; + $cards[1]->label = $this->lang->block->{$code}->thisYear; $cardGroup = new stdclass(); $cardGroup->type = 'cards'; @@ -1638,7 +1627,7 @@ class blockZen extends block $max = 0; foreach($this->lang->execution->statusList as $status => $label) { - if($status == 'closed') continue; + if(!$showClosed && $status == 'closed') continue; $$status = zget($statusStats, $status, 0); if($max < $$status) $max = $$status; @@ -1647,7 +1636,7 @@ class blockZen extends block $bars = array(); foreach($this->lang->execution->statusList as $status => $label) { - if($status == 'closed') continue; + if(!$showClosed && $status == 'closed') continue; $bar = new stdclass(); $bar->label = $label; @@ -1659,7 +1648,7 @@ class blockZen extends block $barGroup = new stdclass(); $barGroup->type = 'barChart'; - $barGroup->title = $this->lang->block->executionoverview->statusCount; + $barGroup->title = $this->lang->block->{$code}->statusCount; $barGroup->bars = $bars; $this->view->groups = array($cardGroup, $barGroup);