private static void ReportTableRow( StreamWriter file, string prefix, TableReport.Row row, bool shouldHyperLink, bool useRepositoriesFromIssues = true, bool makeCountBold = true) { ReportTableRow(file, " ", $"<b title=\"{row.Query.ToString()}\">{row.Name}</b>" + (row.Team == null ? "" : $" - <small>{row.Team.Name}</small>"), row.Columns.SelectMany(filteredIssues => { string count = HtmlQueryCountLink.Create( filteredIssues.Query, filteredIssues.End, shouldHyperLink, useRepositoriesFromIssues); return(new string[] { makeCountBold ? $"<b>{count}</b>" : count, $"<i>{(filteredIssues.End.Count() - filteredIssues.Begin.Count()).ToString("+#;-#;0")}</i>", $"<i>+{filteredIssues.EndOrMiddleOnly.Count()}</i>", $"<i>-{filteredIssues.BeginOrMiddleOnly.Count()}</i>" }); })); }
public void Write(string outputHtmlFile, string outputJsonFile) { using (StreamWriter file = new StreamWriter(outputHtmlFile)) { file.WriteLine( @"<html> <head> <style> table { /* border-collapse: collapse; */ border: 1px solid black; } table td { border: 1px solid black; } table th { border: 1px solid black; } div.labels { color: #808080; font-style: italic; margin-left: 1cm; } tr.stable { /* no color change - should be white */ } tr.new { background-color: #f0fff0; /* light green */ } tr.gone { background-color: #fff0f0; /* light red */ } </style> </head> <body>"); file.WriteLine($"Report created on {DateTime.Now}<br/>"); if (_beginFiles != null) { file.WriteLine("/begin"); file.WriteLine("<ul>"); foreach (string fileName in _beginFiles) { file.WriteLine($" <li>{fileName}</li>"); } file.WriteLine("</ul>"); } file.WriteLine("/end"); file.WriteLine("<ul>"); foreach (string fileName in _endFiles) { file.WriteLine($" <li>{fileName}</li>"); } file.WriteLine("</ul>"); foreach (NamedQuery query in _config.Queries) { IEnumerable <DataModelIssue> queryBeginIssues = query.Query.Evaluate(_beginIssues).ToArray(); IEnumerable <DataModelIssue> queryEndIssues = query.Query.Evaluate(_endIssues).ToArray(); file.WriteLine($"<h2>Query: {query.Name}</h2>"); file.WriteLine($"<p>Query: <code>{query.Query}</code></p>"); file.WriteLine("Count: " + HtmlQueryCountLink.Create( query.Query, queryEndIssues, shouldHyperLink: true, useRepositoriesFromIssues: true) + "<br/>"); file.WriteLine(FormatIssueTable(queryBeginIssues, queryEndIssues)); } file.WriteLine("</body></html>"); } if (outputJsonFile != null) { Repository.SerializeToFile(outputJsonFile, _endIssues); } }