Exemple #1
0
 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);
            }
        }