DeveloperOpenIssuesByRelease

    Table of contents
    No headers
    /***
        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
        );
    }
    Tag page
    You must login to post a comment.

    Copyright © 2011 MindTouch, Inc. Powered by