MantisReleaseOpenIssuesGroupBy

    Table of contents
    No headers
    /***
        USAGE:
    
        MantisReleaseOpenIssuesGroupBy(release, groupby, maxstatus)
            show list of open issues by category for a given MindTouch release
    ***/
    
    var release = $0 ?? $release ?? "";
    var groupby = $1 ?? $groupby ?? "username";
    var maxstatus = $2 ?? $maxstatus ?? 80;
    
    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.sort([ { name: group, bugs: values } foreach var group : values in list.groupby(issues, '$' .. groupby .. ' ?? "(unassigned)"') ], 'name');
    foreach(var item in groups) {
        <h5> item.name; " "; "("; #item.bugs; " issues, "; list.sum([ (#bug.days_left > 0) ? 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>
    }
    Tag page
    You must login to post a comment.

    Copyright © 2011 MindTouch, Inc. Powered by