* Add project overview block.

This commit is contained in:
daitingting
2018-04-26 11:21:05 +08:00
parent 8e2573fece
commit e4b46020b9
9 changed files with 180 additions and 52 deletions
+49 -2
View File
@@ -242,7 +242,8 @@ class block extends control
$block->actionLink = '';
if($block->block == 'overview' && common::hasPriv('product', 'create'))
{
$block->actionLink = html::a($this->createLink('product', 'create'), "<i class='icon icon-plus'> </i>" . $this->lang->product->create, '', "class='btn'");
if($module == 'product' && common::hasPriv('product', 'create')) $block->actionLink = html::a($this->createLink('product', 'create'), "<i class='icon icon-plus'> </i>" . $this->lang->product->create, '', "class='btn'");
if($module == 'project' && common::hasPriv('project', 'create')) $block->actionLink = html::a($this->createLink('project', 'create'), "<i class='icon icon-sm icon-plus'> </i>" . $this->lang->project->create, '', "class='btn btn-sm'");
}
if($this->block->isLongBlock($block))
@@ -835,7 +836,20 @@ class block extends control
* @access public
* @return void
*/
public function printOverviewBlock()
public function printOverviewBlock($module = 'product')
{
$func = 'print' . ucfirst($module) . 'OverviewBlock';
$this->view->module = $module;
$this->$func();
}
/**
* Print product overview block.
*
* @access public
* @return void
*/
public function printProductOverviewBlock()
{
$normal = 0;
$closed = 0;
@@ -854,6 +868,39 @@ class block extends control
$this->view->closed = $closed;
}
/**
* Print project overview block.
*
* @access public
* @return void
*/
public function printProjectOverviewBlock()
{
$projects = $this->loadModel('project')->getList();
$total = 0;
foreach($projects as $project)
{
if(!$this->project->checkPriv($project)) continue;
if(!isset($overview[$project->status])) $overview[$project->status] = 0;
$overview[$project->status]++;
$total++;
}
$overviewPercent = array();
foreach($this->lang->project->statusList as $statusKey => $statusName)
{
if(!isset($overview[$statusKey])) $overview[$statusKey] = 0;
$overviewPercent[$statusKey] = round($overview[$statusKey] / $total, 2) * 100 . '%';
}
$this->view->total = $total;
$this->view->overview = $overview;
$this->view->overviewPercent = $overviewPercent;
}
/**
* Print project block.
*
+23 -9
View File
@@ -83,21 +83,33 @@ $lang->block->default['product']['4']['params']['num'] = 15;
$lang->block->default['product']['4']['params']['orderBy'] = 'id_desc';
$lang->block->default['product']['4']['params']['type'] = 'assignedTo';
$lang->block->default['project']['1']['title'] = 'Active ' . $lang->projectCommon . 's';
$lang->block->default['project']['1']['block'] = 'list';
$lang->block->default['project']['1']['title'] = $lang->projectCommon . 'statistic';
$lang->block->default['project']['1']['block'] = 'statistic';
$lang->block->default['project']['1']['grid'] = 8;
$lang->block->default['project']['1']['params']['num'] = 15;
$lang->block->default['project']['1']['params']['orderBy'] = 'id_desc';
$lang->block->default['project']['1']['params']['type'] = 'undone';
$lang->block->default['project']['1']['params']['type'] = 'noclosed';
$lang->block->default['project']['1']['params']['num'] = 5;
$lang->block->default['project']['2']['title'] = 'My Tasks';
$lang->block->default['project']['2']['block'] = 'task';
$lang->block->default['project']['2']['title'] = $lang->projectCommon . 'overview';
$lang->block->default['project']['2']['block'] = 'overview';
$lang->block->default['project']['2']['grid'] = 4;
$lang->block->default['project']['2']['params']['num'] = 15;
$lang->block->default['project']['2']['params']['orderBy'] = 'id_desc';
$lang->block->default['project']['2']['params']['type'] = 'assignedTo';
$lang->block->default['project']['3']['title'] = 'Active ' . $lang->projectCommon . 's';
$lang->block->default['project']['3']['block'] = 'list';
$lang->block->default['project']['3']['grid'] = 8;
$lang->block->default['project']['3']['params']['num'] = 15;
$lang->block->default['project']['3']['params']['orderBy'] = 'id_desc';
$lang->block->default['project']['3']['params']['type'] = 'undone';
$lang->block->default['project']['4']['title'] = 'My Tasks';
$lang->block->default['project']['4']['block'] = 'task';
$lang->block->default['project']['4']['grid'] = 4;
$lang->block->default['project']['4']['params']['num'] = 15;
$lang->block->default['project']['4']['params']['orderBy'] = 'id_desc';
$lang->block->default['project']['4']['params']['type'] = 'assignedTo';
$lang->block->default['qa']['1']['title'] = 'My Bugs';
$lang->block->default['qa']['1']['block'] = 'bug';
@@ -232,6 +244,8 @@ $lang->block->modules['product']->availableBlocks->plan = 'Plans';
$lang->block->modules['product']->availableBlocks->release = 'Releases';
$lang->block->modules['project'] = new stdclass();
$lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->statistic = $lang->projectCommon . 'statistic';
$lang->block->modules['project']->availableBlocks->overview = $lang->projectCommon . 'overview';
$lang->block->modules['project']->availableBlocks->list = $lang->projectCommon . 'List';
$lang->block->modules['project']->availableBlocks->task = 'Tasks';
$lang->block->modules['project']->availableBlocks->build = 'Builds';
+26 -12
View File
@@ -83,21 +83,33 @@ $lang->block->default['product']['4']['params']['num'] = 15;
$lang->block->default['product']['4']['params']['orderBy'] = 'id_desc';
$lang->block->default['product']['4']['params']['type'] = 'assignedTo';
$lang->block->default['project']['1']['title'] = '进行中的' . $lang->projectCommon;
$lang->block->default['project']['1']['block'] = 'list';
$lang->block->default['project']['1']['title'] = $lang->projectCommon . '统计';
$lang->block->default['project']['1']['block'] = 'statistic';
$lang->block->default['project']['1']['grid'] = 8;
$lang->block->default['project']['1']['params']['num'] = 15;
$lang->block->default['project']['1']['params']['orderBy'] = 'id_desc';
$lang->block->default['project']['1']['params']['type'] = 'undone';
$lang->block->default['project']['1']['params']['type'] = 'noclosed';
$lang->block->default['project']['1']['params']['num'] = 5;
$lang->block->default['project']['2']['title'] = '指派给我的任务';
$lang->block->default['project']['2']['block'] = 'task';
$lang->block->default['project']['2']['title'] = $lang->projectCommon . '总览';
$lang->block->default['project']['2']['block'] = 'overview';
$lang->block->default['project']['2']['grid'] = 4;
$lang->block->default['project']['2']['params']['num'] = 15;
$lang->block->default['project']['2']['params']['orderBy'] = 'id_desc';
$lang->block->default['project']['2']['params']['type'] = 'assignedTo';
$lang->block->default['project']['3']['title'] = '进行中的' . $lang->projectCommon;
$lang->block->default['project']['3']['block'] = 'list';
$lang->block->default['project']['3']['grid'] = 8;
$lang->block->default['project']['3']['params']['num'] = 15;
$lang->block->default['project']['3']['params']['orderBy'] = 'id_desc';
$lang->block->default['project']['3']['params']['type'] = 'undone';
$lang->block->default['project']['4']['title'] = '指派给我的任务';
$lang->block->default['project']['4']['block'] = 'task';
$lang->block->default['project']['4']['grid'] = 4;
$lang->block->default['project']['4']['params']['num'] = 15;
$lang->block->default['project']['4']['params']['orderBy'] = 'id_desc';
$lang->block->default['project']['4']['params']['type'] = 'assignedTo';
$lang->block->default['qa']['1']['title'] = '指派给我的Bug';
$lang->block->default['qa']['1']['block'] = 'bug';
@@ -232,9 +244,11 @@ $lang->block->modules['product']->availableBlocks->plan = '计划列表';
$lang->block->modules['product']->availableBlocks->release = '发布列表';
$lang->block->modules['project'] = new stdclass();
$lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->list = $lang->projectCommon . '列表';
$lang->block->modules['project']->availableBlocks->task = '任务列表';
$lang->block->modules['project']->availableBlocks->build = '版本列表';
$lang->block->modules['project']->availableBlocks->statistic = $lang->projectCommon . '统计';
$lang->block->modules['project']->availableBlocks->overview = $lang->projectCommon . '总览';
$lang->block->modules['project']->availableBlocks->list = $lang->projectCommon . '列表';
$lang->block->modules['project']->availableBlocks->task = '任务列表';
$lang->block->modules['project']->availableBlocks->build = '版本列表';
$lang->block->modules['qa'] = new stdclass();
$lang->block->modules['qa']->availableBlocks = new stdclass();
$lang->block->modules['qa']->availableBlocks->bug = 'Bug列表';
+2 -27
View File
@@ -5,34 +5,9 @@
* @copyright Copyright 2009-2018 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Gang Liu <liugang@cnezsoft.com>
* @package block
* @package block
* @version $Id$
* @link http://www.zentao.net
*/
?>
<style>
.block-overview .status-list li + li {margin-top: 5px;}
.block-overview .status-list li > strong {font-size: 16px;}
.block-overview .panel-body {padding: 25px 0;}
.progress-pie {position: relative;}
.progress-pie .progress-info {position: absolute; width: 100%; height: 100%; left: 0; top: 0; text-align: center; padding-top: 25px;}
.progress-pie .progress-info > small {display: block; color: #A6AAB8; line-height: 14px;}
.progress-pie .progress-info > strong {display: block; font-size: 36px; line-height: 40px;}
</style>
<div class="panel-body table-row">
<div class="col-6 text-middle text-center">
<div class="progress-pie inline-block" data-value="72" data-doughnut-size="80">
<canvas width="100" height="100" style="width: 100px; height: 100px;"></canvas>
<div class="progress-info">
<small><?php echo $lang->product->all;?></small>
<strong><?php echo $total;?></strong>
</div>
</div>
</div>
<div class="col-6 text-middle">
<ul class="list-unstyled status-list">
<li><span class="status-unclosed"><span class="label label-dot"></span> <?php echo $lang->product->statusList['normal'];?></span> &nbsp; <strong><?php echo $normal;?></strong></li>
<li><span class="status-closed"><span class="label label-dot"></span> <?php echo $lang->product->statusList['closed'];?></span> &nbsp; <strong><?php echo $closed;?></strong></li>
</ul>
</div>
</div>
<?php include "./{$module}overviewblock.html.php";?>
@@ -0,0 +1,38 @@
<?php
/**
* The overview block view file of block module of RanZhi.
*
* @copyright Copyright 2009-2018 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Gang Liu <liugang@cnezsoft.com>
* @package block
* @version $Id$
* @link http://www.zentao.net
*/
?>
<style>
.block-overview .status-list li + li {margin-top: 5px;}
.block-overview .status-list li > strong {font-size: 16px;}
.block-overview .panel-body {padding: 25px 0;}
.progress-pie {position: relative;}
.progress-pie .progress-info {position: absolute; width: 100%; height: 100%; left: 0; top: 0; text-align: center; padding-top: 25px;}
.progress-pie .progress-info > small {display: block; color: #A6AAB8; line-height: 14px;}
.progress-pie .progress-info > strong {display: block; font-size: 36px; line-height: 40px;}
</style>
<div class="panel-body table-row">
<div class="col-6 text-middle text-center">
<div class="progress-pie inline-block" data-value="72" data-doughnut-size="80">
<canvas width="100" height="100" style="width: 100px; height: 100px;"></canvas>
<div class="progress-info">
<small><?php echo $lang->product->all;?></small>
<strong><?php echo $total;?></strong>
</div>
</div>
</div>
<div class="col-6 text-middle">
<ul class="list-unstyled status-list">
<li><span class="status-unclosed"><span class="label label-dot"></span> <?php echo $lang->product->statusList['normal'];?></span> &nbsp; <strong><?php echo $normal;?></strong></li>
<li><span class="status-closed"><span class="label label-dot"></span> <?php echo $lang->product->statusList['closed'];?></span> &nbsp; <strong><?php echo $closed;?></strong></li>
</ul>
</div>
</div>
@@ -0,0 +1,38 @@
<?php
/**
* The project overview block view file of block module of RanZhi.
*
* @copyright Copyright 2009-2018 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Tingting Dai <daitingting@xirangit.com>
* @package block
* @version $Id$
* @link http://www.zentao.net
*/
?>
<div class="panel-body table-row">
<div class="col-6 text-middle text-center">
<div class="tile">
<div class="tile-title"><?php echo $lang->project->allProject;?></div>
<div class="tile-amount"><?php echo $total;?></div>
<a class="btn btn-primary btn-circle btn-icon-right btn-sm" href="<?php echo $this->createLink('project', 'all');?>"><?php echo $lang->project->viewAll;?> <span class="label label-badge label-icon"><i class="icon icon-arrow-right"></i></span></a>
</div>
</div>
<div class="col-6 text-middle">
<ul class="status-bars">
<?php foreach($lang->project->statusList as $statusKey => $statusName):?>
<li>
<span class="value"><?php echo $overview[$statusKey];?></span>
<span class="bar" style="height: <?php echo $overviewPercent[$statusKey];?>"></span>
<span class="title"><?php echo $statusName;?></span>
</li>
<?php endforeach;?>
</ul>
</div>
</div>
<style>
.block-overview .tile-amount {font-size: 48px; margin-bottom: 10px;}
.nav > li > a.btn{color: #3c4353;}
.nav > li > a.btn-sm{padding: 2px 8px; font-size: 12px; line-height: 1.5; border-radius: 4px;}
</style>
+2 -2
View File
@@ -14,7 +14,7 @@
<table class='table table-borderless table-hover table-fixed-head block-tasks <?php if(!$longBlock) echo 'block-sm';?>'>
<thead>
<tr>
<th class='c-id'><?php echo $lang->idAB?></th>
<th class='c-id'><?php echo $lang->idAB;?></th>
<th class='c-pri'><?php echo $lang->priAB?></th>
<th class='c-name'> <?php echo $lang->task->name;?></th>
<?php if($longBlock):?>
@@ -36,7 +36,7 @@
<td class='c-name' style='color: <?php echo $task->color?>' title='<?php echo $task->name?>'><?php echo $task->name?></td>
<?php if($longBlock):?>
<td class='c-estimate'><?php echo $task->estimate?></td>
<td class='c-status'><?php if(substr($task->deadline, 0, 4) > 0) echo $task->deadline;?></td>
<td class='c-deadline'><?php if(substr($task->deadline, 0, 4) > 0) echo $task->deadline;?></td>
<?php endif;?>
<td class='c-status' title='<?php echo zget($lang->task->statusList, $task->status)?>'>
<span class="task-status-<?php echo $task->status?>">
+1
View File
@@ -146,6 +146,7 @@ $lang->project->storySort = 'Sort Story';
$lang->project->importPlanStory = 'Create ' . $lang->projectCommon . ' success!\nImport the stories with the plan?';
$lang->project->iteration = 'Iteration';
$lang->project->iterationInfo = 'Iteration %s times';
$lang->project->viewAll = 'View All';
/* 分组浏览。*/
$lang->project->allTasks = 'All';
+1
View File
@@ -147,6 +147,7 @@ $lang->project->storySort = '需求排序';
$lang->project->importPlanStory = '创建' . $lang->projectCommon . '成功!\n是否导入计划关联的相关需求?';
$lang->project->iteration = '版本迭代';
$lang->project->iterationInfo = '迭代%s次';
$lang->project->viewAll = '查看所有';
/* 分组浏览。*/
$lang->project->allTasks = '所有';