예제 #1
0
        private static void ReportTableRow(
            StreamWriter file,
            string prefix,
            ContributionsReport.Interval interval,
            ContributionsReport.Report report,
            IEnumerable <DataModelIssue> issues)
        {
            IEnumerable <DataModelIssue> defaultGroupIssues = issues
                                                              .Where(issue => report.Groups.Where(group => group.ContainsAuthor(issue)).None()).ToList();

            ReportTableRow(file,
                           "  ",
                           $"<b>{interval.GetLabel(report.Unit != ContributionsReport.Report.UnitKind.Month)}</b>",
                           issues.NonPullRequests().Count().ToString(),
                           issues.PullRequests().Count().ToString(),
                           report.Groups.SelectMany(group =>
            {
                IEnumerable <DataModelIssue> filteredIssues = issues.Where(issue => group.ContainsAuthor(issue)).ToList();
                return(new string[]
                {
                    filteredIssues.NonPullRequests().Count().ToString(),
                    filteredIssues.PullRequests().Count().ToString()
                });
            }),
                           defaultGroupIssues.NonPullRequests().Count().ToString(),
                           defaultGroupIssues.PullRequests().Count().ToString());
        }
예제 #2
0
        private void Report(
            StreamWriter file,
            ContributionsReport.Report report)
        {
            file.WriteLine("<table border=\"1\">");

            // Heading
            ReportTableRow(file,
                           "  ",
                           "<b>Date</b>",
                           "<b>Total</b>",
                           "&nbsp;",
                           report.Groups.SelectMany(group => new string[]
            {
                $"<b>{group.Name}</b>",
                "&nbsp;"
            }),
                           $"<b>{report.DefaultGroupName}</b>",
                           "&nbsp;");
            ReportTableRow(file,
                           "  ",
                           "&nbsp;",
                           "<b>Issues</b>",
                           "<b>PRs</b>",
                           report.Groups.SelectMany(group => new string[]
            {
                "<b>Issues</b>",
                "<b>PRs</b>"
            }),
                           "<b>Issues</b>",
                           "<b>PRs</b>");

            // All intervals
            foreach (ContributionsReport.Interval interval in report.EnumerateIntervals())
            {
                IEnumerable <DataModelIssue> issues = _report.Issues
                                                      .Where(issue => interval.Contains(issue.CreatedAt.Value)).ToArray();
                ReportTableRow(file, "  ", interval, report, issues);
            }

            file.WriteLine("</table>");

            file.WriteLine($"<h3>Users</h3>");

            file.WriteLine("<table border=\"1\">");

            // Heading
            ReportTableRow(file,
                           "  ",
                           report.Groups.Select(group => $"<b>{group.Name}</b>"),
                           $"<b>{report.DefaultGroupName}</b>");

            // Users breakdown
            ReportTableRow_Users(file, "  ", report, _report.Issues);

            file.WriteLine("</table>");
        }
예제 #3
0
        private static void ReportTableRow_Users(
            StreamWriter file,
            string prefix,
            ContributionsReport.Report report,
            IEnumerable <DataModelIssue> allIssues)
        {
            ContributionsReport.Interval reprotInterval = report.FullInterval;
            IEnumerable <DataModelIssue> issues         = allIssues.Where(issue => reprotInterval.Contains(issue.CreatedAt.Value));

            IEnumerable <DataModelIssue> defaultGroupIssues = issues
                                                              .Where(issue => report.Groups.Where(group => group.ContainsAuthor(issue)).None()).ToList();

            ReportTableRow(file,
                           "  ",
                           report.Groups.Select(group => GetUserBreakdown(issues.Where(issue => group.ContainsAuthor(issue)).ToList())),
                           GetUserBreakdown(defaultGroupIssues));
        }