/***
USAGE:
ReleaseStatus(release)
show status for a given MindTouch release
***/
var release = $0 ?? $release ?? "";
var maxstatus = $2 ?? $maxstatus ?? 100;
var default_days_left = 0.5;
if(string.startswith(release, 'tag:')) {
let release = string.substr(release, 4);
var query =
"SELECT
mantis_bug_table.id AS id,
mantis_project_table.name AS project,
category,
summary,
priority,
severity,
username,
release_name.value AS release_name,
DATEDIFF(CURDATE(), date_submitted) AS days_open,
IFNULL(days_left.value, $defaultdaysleft) AS days_left,
mantis_bug_table.status AS status
FROM mantis_bug_table
LEFT JOIN mantis_user_table ON handler_id = mantis_user_table.id
LEFT JOIN mantis_project_table ON project_id = mantis_project_table.id
LEFT JOIN mantis_custom_field_string_table AS release_name ON mantis_bug_table.id = release_name.bug_id AND release_name.field_id = 2
LEFT JOIN mantis_custom_field_string_table AS days_left ON mantis_bug_table.id = days_left.bug_id AND days_left.field_id = 18
LEFT JOIN mantis_bug_tag_table AS tagids ON mantis_bug_table.id = tagids.bug_id
LEFT JOIN mantis_tag_table AS tags ON tagids.tag_id = tags.id
WHERE mantis_bug_table.status < $maxstatus AND tags.name = '$release'";
} else {
var query =
"SELECT
mantis_bug_table.id AS id,
mantis_project_table.name AS project,
category,
summary,
priority,
severity,
username,
release_name.value AS release_name,
DATEDIFF(CURDATE(), date_submitted) AS days_open,
IFNULL(days_left.value, $defaultdaysleft) AS days_left,
mantis_bug_table.status AS status
FROM mantis_bug_table
LEFT JOIN mantis_user_table ON handler_id = mantis_user_table.id
LEFT JOIN mantis_project_table ON project_id = mantis_project_table.id
LEFT JOIN mantis_custom_field_string_table AS release_name ON mantis_bug_table.id = release_name.bug_id AND release_name.field_id = 2
LEFT JOIN mantis_custom_field_string_table AS days_left ON mantis_bug_table.id = days_left.bug_id AND days_left.field_id = 18
WHERE mantis_bug_table.status < $maxstatus AND release_name.value='$release'";
}
var issues = bugs.recordlist(query % { release: string.sqlescape(release), defaultdaysleft: default_days_left, maxstatus: maxstatus });
var groups = list.groupby(issues, '($status >= 80) ? 80 : 50');
var active = groups[50];
var closed = groups[80];
var days_left = list.sum([ (#open_issue.days_left > 0) ? open_issue.days_left : default_days_left foreach var open_issue in active ]);
// show status table
<table class="progress" width="600px" border="1">
<tr>
<td class="closed" style=("width: $width; background-color: $color" % { color: "rgb(204, 255, 204)", width: web.size(num.min(0.999, #closed / #issues)) }) >
var info = { count: #closed, total: #issues };
<a rel="bug" href=(site.uri) title=("$count out of $total issues closed" % info) >
"$count out of $total issues closed" % info;
</a>
</td>
<td class="active" style=("width: $width; background-color: $color" % { color: "rgb(255, 255, 255)", width: web.size(num.min(0.999, #active / #issues)) }) >
var info = { count: #active, total: #issues };
<a rel="bug" href=(site.uri) title=("$count out of $total issues active" % { count: #active, total: #issues }) >
"$count out of $total issues active" % info;
</a>
</td>
</tr>
</table>
// show status summary
var sum_bugs_by_dev = [
{
dev: dev,
sum: sum
}
foreach
var dev : bugs in list.groupby(issues, '$username'),
var sum = list.sum([ (#bug.days_left > 0) ? bug.days_left : default_days_left foreach var bug in bugs where bug.status < 80 ]),
if sum > 0
];
let sum_bugs_by_dev = list.sort(sum_bugs_by_dev, "dev");
var eta = list.max([ 0 ] .. [ item.sum foreach var item in sum_bugs_by_dev ]);
<span>
"Active issues: "; #active; ", ";
"Closed issues: "; #closed; ", ";
"Total issues: "; #issues; " ";
<strong> "("; num.format(#closed / #issues * 100, "#0"); "% completed; "; days_left; " man-days left, ETA: "; eta; " days)"; </strong>
</span>
if(#sum_bugs_by_dev > 0) {
<br/>
google.barchart(
300, (#sum_bugs_by_dev + 1) * 27,
[ [ item.sum ] foreach var item in sum_bugs_by_dev ],
[ "bugs" ],
[ "ff9900" ],
false, true, [ 0, eta/2, eta ],
list.reverse([ item.dev foreach var item in sum_bugs_by_dev ])
);
}
| Images 0 | ||
|---|---|---|
| No images to display in the gallery. |
Copyright © 2011 MindTouch, Inc. Powered by