/***
USAGE:
DeveloperOpenIssuesByRelease(developer)
show list of open issues by MindTouch release for a given developer
***/
var developer = $0 ?? $developer ?? "";
var default_days_left = 0.5;
var default_release_name = '(unassigned)';
var exclude = [ 'future', default_release_name ];
var issues = bugs.recordlist(
"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,
work_status.value AS work_status
FROM mantis_bug_table
LEFT JOIN mantis_user_table ON handler_id = mantis_user_table.id
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_custom_field_string_table AS work_status ON mantis_bug_table.id = work_status.bug_id AND work_status.field_id = 16
WHERE mantis_bug_table.status < 80 AND username='$developer'" % { developer: string.sqlescape(developer), defaultdaysleft: default_days_left }
);
var work_items = list.groupby(issues, '$work_status ?? "none"');
var items = work_items["Blocked"];
if(#items) {
<h4 style="color: red"> "Blocked ("; #items; " issues, "; list.sum([ bug.days_left ?? default_days_left foreach var bug in items]); " days left)"; </h4>
<ul>
foreach(var bug in list.sort(items, 'id')) {
<li>
MantisIssue(bug);
</li>
}
</ul>
}
let items = work_items["In Progress"];
if(#items) {
<h4> "In Progress ("; #items; " issues, "; list.sum([ bug.days_left ?? default_days_left foreach var bug in items]); " days left)" </h4>
<ul>
foreach(var bug in list.sort(items, 'id')) {
<li>
MantisIssue(bug);
</li>
}
</ul>
}
let items = [ item foreach var item in work_items["none"] where (item.release_name ?? default_release_name) not in exclude ];
if(#items) {
var releases = list.groupby(items, '$release_name ?? "' .. string.escape(default_release_name) .. '"');
var groups = list.sort([ { release: group, bugs: values } foreach var group : values in releases ], 'release');
web.toggle(
<html>
<body>
foreach(var item in groups) {
<h5> item.release; " ("; #item.bugs; " issues, "; list.sum([ bug.days_left ?? default_days_left foreach var bug in item.bugs ]); " days left)" </h5>
<ul>
foreach(var bug in list.sort(item.bugs, 'id')) {
<li>
MantisIssue(bug);
</li>
}
</ul>
}
</body>
</html>,
"Bugs (" .. #items .. " issues, " .. list.sum([ bug.days_left ?? default_days_left foreach var bug in items]) .. " days left)",
4,
_,
false
);
}
let items = work_items["Not Started"];
if(#items) {
web.toggle(
<html>
<body>
<ul>
foreach(var bug in list.sort(items, 'id')) {
<li>
MantisIssue(bug);
</li>
}
</ul>
</body>
</html>,
"Not Started (" .. #items .. " issues, " .. list.sum([ bug.days_left ?? default_days_left foreach var bug in items]) .. " days left)",
4
);
}
let items = [ item foreach var item in work_items["none"] where (item.release_name ?? default_release_name) in exclude ];
if(#items) {
var releases = list.groupby(items, '$release_name ?? "' .. string.escape(default_release_name) .. '"');
var groups = list.sort([ { release: group, bugs: values } foreach var group : values in releases ], 'release');
web.toggle(
<html>
<body>
foreach(var item in groups) {
<h5> item.release; " ("; #item.bugs; " issues, "; list.sum([ bug.days_left ?? default_days_left foreach var bug in item.bugs ]); " days left)" </h5>
<ul>
foreach(var bug in list.sort(item.bugs, 'id')) {
<li>
MantisIssue(bug);
</li>
}
</ul>
}
</body>
</html>,
"Future/Unassigned Bugs (" .. #items .. " issues)",
4
);
}
| Images 0 | ||
|---|---|---|
| No images to display in the gallery. |
Copyright © 2011 MindTouch, Inc. Powered by