Fix the special case of a empty issue tracker, for the issue summary.
This commit is contained in:
parent
69ae1c08ef
commit
ef5b93e3f7
@ -84,25 +84,35 @@ class IDF_Views_Issue
|
|||||||
public $summary_precond = array('IDF_Precondition::accessIssues');
|
public $summary_precond = array('IDF_Precondition::accessIssues');
|
||||||
public function summary($request, $match)
|
public function summary($request, $match)
|
||||||
{
|
{
|
||||||
|
$tagStatistics = array();
|
||||||
|
$ownerStatistics = array();
|
||||||
|
$status = array();
|
||||||
|
$isTrackerEmpty = false;
|
||||||
|
|
||||||
$prj = $request->project;
|
$prj = $request->project;
|
||||||
$opened = $prj->getIssueCountByStatus('open');
|
$opened = $prj->getIssueCountByStatus('open');
|
||||||
$closed = $prj->getIssueCountByStatus('closed');
|
$closed = $prj->getIssueCountByStatus('closed');
|
||||||
$otags = implode(',', $prj->getTagIdsByStatus('open'));
|
|
||||||
|
|
||||||
|
// Check if the tracker is empty
|
||||||
|
if ($opened === 0 && $closed === 0) {
|
||||||
|
$isTrackerEmpty = true;
|
||||||
|
} else {
|
||||||
|
if ($opened > 0 || $closed > 0) {
|
||||||
// Issue status statistics
|
// Issue status statistics
|
||||||
$status = array();
|
|
||||||
$status['Open'] = array($opened, (int)(100 * $opened / ($opened + $closed)));
|
$status['Open'] = array($opened, (int)(100 * $opened / ($opened + $closed)));
|
||||||
$status['Closed'] = array($closed, (int)(100 * $closed / ($opened + $closed)));
|
$status['Closed'] = array($closed, (int)(100 * $closed / ($opened + $closed)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($opened > 0) {
|
||||||
// Issue owner statistics
|
// Issue owner statistics
|
||||||
$sqlIssueTable = Pluf::factory('IDF_Issue')->getSqlTable();
|
$sqlIssueTable = Pluf::factory('IDF_Issue')->getSqlTable();
|
||||||
$sqlUsersTable = Pluf::factory('Pluf_User')->getSqlTable();
|
$sqlUsersTable = Pluf::factory('Pluf_User')->getSqlTable();
|
||||||
|
$otags = implode(',', $prj->getTagIdsByStatus('open'));
|
||||||
$query = <<<"QUERY"
|
$query = <<<"QUERY"
|
||||||
SELECT CONCAT(first_name, " ", last_name) as name, nb FROM (SELECT uid as id,count(uid) as nb FROM (SELECT ifnull(owner, -1) as uid FROM $sqlIssueTable WHERE status IN ($otags)) as ff group by uid) AS ff LEFT JOIN $sqlUsersTable using(id)
|
SELECT CONCAT(first_name, " ", last_name) as name, nb FROM (SELECT uid as id,count(uid) as nb FROM (SELECT ifnull(owner, -1) as uid FROM $sqlIssueTable WHERE status IN ($otags)) as ff group by uid) AS ff LEFT JOIN $sqlUsersTable using(id)
|
||||||
QUERY;
|
QUERY;
|
||||||
$db = Pluf::db();
|
$db = Pluf::db();
|
||||||
$dbData = $db->select($query);
|
$dbData = $db->select($query);
|
||||||
$ownerStatistics = array();
|
|
||||||
foreach ($dbData as $k => $v) {
|
foreach ($dbData as $k => $v) {
|
||||||
$key = ($v['name'] === null) ? __('Not assigned') : $v['name'];
|
$key = ($v['name'] === null) ? __('Not assigned') : $v['name'];
|
||||||
$ownerStatistics[$key] = array($v['nb'], (int)(100 * $v['nb'] / $opened));
|
$ownerStatistics[$key] = array($v['nb'], (int)(100 * $v['nb'] / $opened));
|
||||||
@ -110,7 +120,6 @@ QUERY;
|
|||||||
|
|
||||||
// Issue class tag statistics
|
// Issue class tag statistics
|
||||||
$tags = $prj->getTagCloud();
|
$tags = $prj->getTagCloud();
|
||||||
$tagStatistics = array();
|
|
||||||
foreach ($tags as $t) {
|
foreach ($tags as $t) {
|
||||||
$tagStatistics[$t->class][$t->name] = array($t->nb_use, $t->id);
|
$tagStatistics[$t->class][$t->name] = array($t->nb_use, $t->id);
|
||||||
}
|
}
|
||||||
@ -127,10 +136,14 @@ QUERY;
|
|||||||
// Sort
|
// Sort
|
||||||
krsort($tagStatistics);
|
krsort($tagStatistics);
|
||||||
arsort($ownerStatistics);
|
arsort($ownerStatistics);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$title = sprintf(__('Summary of tracked issues in %s.'), (string) $prj);
|
$title = sprintf(__('Summary of tracked issues in %s.'), (string) $prj);
|
||||||
|
|
||||||
return Pluf_Shortcuts_RenderToResponse('idf/issues/summary.html',
|
return Pluf_Shortcuts_RenderToResponse('idf/issues/summary.html',
|
||||||
array('page_title' => $title,
|
array('page_title' => $title,
|
||||||
|
'trackerEmpty' => $isTrackerEmpty,
|
||||||
'project' => $prj,
|
'project' => $prj,
|
||||||
'tagStatistics' => $tagStatistics,
|
'tagStatistics' => $tagStatistics,
|
||||||
'ownerStatistics' => $ownerStatistics,
|
'ownerStatistics' => $ownerStatistics,
|
||||||
|
@ -3,6 +3,10 @@
|
|||||||
{block docclass}yui-t2{assign $inSummaryIssues=true}{/block}
|
{block docclass}yui-t2{assign $inSummaryIssues=true}{/block}
|
||||||
|
|
||||||
{block body}
|
{block body}
|
||||||
|
{if $trackerEmpty}
|
||||||
|
{aurl 'create_url', 'IDF_Views_Issue::create', array($project.shortname)}
|
||||||
|
<p>{blocktrans}The issue tracker is empty<br />You can create your first issue <a href="{$create_url}">here</a>.{/blocktrans}</p>
|
||||||
|
{else}
|
||||||
<div class='issue-summary'>
|
<div class='issue-summary'>
|
||||||
{foreach $tagStatistics as $key => $class}
|
{foreach $tagStatistics as $key => $class}
|
||||||
<div>
|
<div>
|
||||||
@ -33,7 +37,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class='issue-summary'>
|
<div class='issue-summary'>
|
||||||
|
{if $status}
|
||||||
<div>
|
<div>
|
||||||
<h2>Status Summary</h2>
|
<h2>Status Summary</h2>
|
||||||
<table class='issue-summary'>
|
<table class='issue-summary'>
|
||||||
@ -58,7 +62,9 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
{if $ownerStatistics}
|
||||||
<div>
|
<div>
|
||||||
<h2>Unresolved: By Assignee</h2>
|
<h2>Unresolved: By Assignee</h2>
|
||||||
<table class='issue-summary'>
|
<table class='issue-summary'>
|
||||||
@ -83,7 +89,7 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
{/if}
|
||||||
{/block}
|
{/block}
|
||||||
|
@ -1128,7 +1128,7 @@ table.issue-summary {
|
|||||||
|
|
||||||
table.issue-summary tr td {
|
table.issue-summary tr td {
|
||||||
border: 0;
|
border: 0;
|
||||||
padding: .1em;
|
padding: .1em .005em;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.issue-summary td.graph {
|
table.issue-summary td.graph {
|
||||||
|
Loading…
Reference in New Issue
Block a user