diff --git a/APSIM.POStats.Portal/Pages/Index.cshtml b/APSIM.POStats.Portal/Pages/Index.cshtml index 30b2ab4..2e13d48 100644 --- a/APSIM.POStats.Portal/Pages/Index.cshtml +++ b/APSIM.POStats.Portal/Pages/Index.cshtml @@ -144,7 +144,7 @@ { @{ - List files = PullRequestFunctions.GetFileComparisons(Model.PullRequest); + List files = PullRequestFunctions.GetFileStats(Model.PullRequest); if (Model.OnlyShowChangedStats) PullRequestFunctions.RemoveSame(files); } @@ -211,6 +211,61 @@ } }
+ + @foreach (var file in PullRequestFunctions.GetFileComparisons(Model.PullRequest)) + { + + + + + @foreach (var table in file.Tables) + { + + + + + + + + + + + + + + @foreach (var variable in table.VariableComparisons) + { + + + + + + + + + + + + + + + + + + + + + + + + + + } + } + } +
+ @Html.Raw(IndexModel.EmitFileName(file)) +
     @Html.Raw(IndexModel.EmitTableName(@table))  n  RMSE  NSE  RSR
          @Html.Raw(IndexModel.EmitVariableName(@variable))   @Html.Raw(IndexModel.EmitNumber(@variable.CurrentN, isAccepted: false)) @Html.Raw(IndexModel.EmitNumber(@variable.AcceptedN, isAccepted: true))@Html.Raw(IndexModel.EmitTickCross(variable.NStatus))   @Html.Raw(IndexModel.EmitNumber(variable.CurrentRMSE, 0, 6, isAccepted: false)) @Html.Raw(IndexModel.EmitNumber(variable.AcceptedRMSE, 0, 6, isAccepted: true))@Html.Raw(IndexModel.EmitTickCross(variable.RMSEStatus))   @Html.Raw(IndexModel.EmitNumber(@variable.CurrentNSE, 3, 0, isAccepted: false)) @Html.Raw(IndexModel.EmitNumber(@variable.AcceptedNSE, 3, 0, isAccepted: true))@Html.Raw(IndexModel.EmitTickCross(variable.NSEStatus))@VariableFunctions.NSERating(variable.CurrentNSE)   @Html.Raw(IndexModel.EmitNumber(@variable.CurrentRSR, 3, 0, isAccepted: false)) @Html.Raw(IndexModel.EmitNumber(@variable.AcceptedRSR, 3, 0, isAccepted: true))@Html.Raw(IndexModel.EmitTickCross(variable.RSRStatus))@VariableFunctions.RSRRating(variable.CurrentRSR)
} else { diff --git a/APSIM.POStats.Shared/Collector.cs b/APSIM.POStats.Shared/Collector.cs index 6ab42bd..7cc5985 100644 --- a/APSIM.POStats.Shared/Collector.cs +++ b/APSIM.POStats.Shared/Collector.cs @@ -164,6 +164,15 @@ private static List GetTablesFromFile(string apsimxFileName) if (reader.HasRows) { reader.Read(); + + bool hasComparisonColumn = false; + foreach (DataRow row in reader.GetSchemaTable().Rows) + if (row["ColumnName"].ToString() == "comparison") + hasComparisonColumn = true; + + if (hasComparisonColumn) + newTable.Comparison = reader["comparison"].ToString(); + foreach(string field in fields) { string match = reader[field].ToString(); diff --git a/APSIM.POStats.Shared/Models/Table.cs b/APSIM.POStats.Shared/Models/Table.cs index 118d0a2..cc3822d 100644 --- a/APSIM.POStats.Shared/Models/Table.cs +++ b/APSIM.POStats.Shared/Models/Table.cs @@ -7,6 +7,7 @@ public class Table { public int Id { get; set; } public string Name { get; set; } + public string Comparison { get; set; } public virtual List Variables { get; set; } [JsonIgnore] diff --git a/APSIM.POStats.Shared/PullRequestFunctions.cs b/APSIM.POStats.Shared/PullRequestFunctions.cs index 2d45f6b..1a925d2 100644 --- a/APSIM.POStats.Shared/PullRequestFunctions.cs +++ b/APSIM.POStats.Shared/PullRequestFunctions.cs @@ -17,7 +17,7 @@ public static VariableComparison.Status GetStatus(PullRequestDetails pullRequest { bool allBetterOrSame = true; bool allSame = true; - foreach (var file in GetFileComparisons(pullRequest)) + foreach (var file in GetFileStats(pullRequest)) { if (file.Status != ApsimFileComparison.StatusType.NoChange) return VariableComparison.Status.Different; @@ -41,7 +41,7 @@ public static VariableComparison.Status GetStatus(PullRequestDetails pullRequest /// Get a list of all files for a pull request. /// The pull request. - public static List GetFileComparisons(PullRequestDetails pullRequest) + public static List GetFileStats(PullRequestDetails pullRequest) { var files = new List(); foreach (ApsimFile currentFile in pullRequest.Files) @@ -61,6 +61,32 @@ public static List GetFileComparisons(PullRequestDetails pu return files.OrderBy(f => f.Name).ToList(); } + /// Get a list of all files for a pull request. + /// The pull request. + public static List GetFileComparisons(PullRequestDetails pullRequest) + { + List files = new List(); + foreach (ApsimFile file in pullRequest.Files) + { + List comparisonFiles = new List(); + foreach (Table table in file.Tables) + { + if (!string.IsNullOrEmpty(table.Comparison)) + { + if (comparisonFiles.Contains(table.Comparison)) + comparisonFiles.Add(table.Comparison); + } + } + foreach (string comparisonFile in comparisonFiles) + { + ApsimFile otherFile = pullRequest.Files.Find(f => f.Name == comparisonFile); + files.Add(new ApsimFileComparison(file, otherFile)); + } + } + + return files.OrderBy(f => f.Name).ToList(); + } + /// /// Remove all files, tables and variables that are the same as the accepted ones. /// diff --git a/APSIM.POStats.Tests/ComparisonTests.cs b/APSIM.POStats.Tests/ComparisonTests.cs index 03c1f1e..f549ff0 100644 --- a/APSIM.POStats.Tests/ComparisonTests.cs +++ b/APSIM.POStats.Tests/ComparisonTests.cs @@ -31,7 +31,7 @@ public void FileStatusWorks() AcceptedPullRequest = acceptedPullRequest }; - var files = PullRequestFunctions.GetFileComparisons(currentPullRequest); + var files = PullRequestFunctions.GetFileStats(currentPullRequest); Assert.That(files.Count(), Is.EqualTo(3)); Assert.That(files.First(f => f.Name == "file1").Status, Is.EqualTo(ApsimFileComparison.StatusType.Missing)); @@ -75,7 +75,7 @@ public void TableStatusWorks() AcceptedPullRequest = acceptedPullRequest }; - var files = PullRequestFunctions.GetFileComparisons(currentPullRequest); + var files = PullRequestFunctions.GetFileStats(currentPullRequest); var tables = files.First().Tables; Assert.That(tables.Count(), Is.EqualTo(3)); @@ -104,7 +104,7 @@ public void TableStatusWorksWithNoAccepted() }, }; - var files = PullRequestFunctions.GetFileComparisons(currentPullRequest); + var files = PullRequestFunctions.GetFileStats(currentPullRequest); var tables = files.First().Tables; Assert.That(tables.Count(), Is.EqualTo(2)); @@ -190,7 +190,7 @@ public void VariableStatusWork() AcceptedPullRequest = acceptedPullRequest }; - var fileComparisons = PullRequestFunctions.GetFileComparisons(currentPullRequest); + var fileComparisons = PullRequestFunctions.GetFileStats(currentPullRequest); var table = fileComparisons.First().Tables.First(); var variables = table.VariableComparisons; @@ -251,7 +251,7 @@ public void VariableStatusWorksWithNoAccepted() }, }; - var file = PullRequestFunctions.GetFileComparisons(currentPullRequest); + var file = PullRequestFunctions.GetFileStats(currentPullRequest); var table = file.First().Tables.First(); var variables = table.VariableComparisons; @@ -457,7 +457,7 @@ public void EnsureOnlyShowChangedStatsWorks() AcceptedPullRequest = acceptedPullRequest }; - var file = PullRequestFunctions.GetFileComparisons(currentPullRequest); + var file = PullRequestFunctions.GetFileStats(currentPullRequest); var table = file.First().Tables.First(); var variables = table.VariableComparisons; @@ -556,7 +556,7 @@ public void MissingTableDetected() AcceptedPullRequest = acceptedPullRequest }; - var files = PullRequestFunctions.GetFileComparisons(currentPullRequest); + var files = PullRequestFunctions.GetFileStats(currentPullRequest); var tables = files.First().Tables; Assert.That(tables.Count(), Is.EqualTo(2));