From 637d87eb4da0a926babe9ba53e82c8952f324048 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 22 Jul 2026 11:16:26 +1000 Subject: [PATCH 1/4] Store comparision field in table --- APSIM.POStats.Shared/Collector.cs | 1 + APSIM.POStats.Shared/Models/Table.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/APSIM.POStats.Shared/Collector.cs b/APSIM.POStats.Shared/Collector.cs index 6ab42bd..e7a7308 100644 --- a/APSIM.POStats.Shared/Collector.cs +++ b/APSIM.POStats.Shared/Collector.cs @@ -164,6 +164,7 @@ private static List GetTablesFromFile(string apsimxFileName) if (reader.HasRows) { reader.Read(); + newTable.Comparision = reader["Comparision"].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..e76ef6d 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 Comparision { get; set; } public virtual List Variables { get; set; } [JsonIgnore] From b67843d87cb87597b18794a40a86f0a848cedd72 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 22 Jul 2026 11:50:39 +1000 Subject: [PATCH 2/4] Add comparision table --- APSIM.POStats.Portal/Pages/Index.cshtml | 57 +++++++++++++++++++- APSIM.POStats.Shared/PullRequestFunctions.cs | 30 ++++++++++- APSIM.POStats.Tests/ComparisonTests.cs | 14 ++--- 3 files changed, 91 insertions(+), 10 deletions(-) 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/PullRequestFunctions.cs b/APSIM.POStats.Shared/PullRequestFunctions.cs index 2d45f6b..822e870 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 comparisionFiles = new List(); + foreach (Table table in file.Tables) + { + if (!string.IsNullOrEmpty(table.Comparision)) + { + if (comparisionFiles.Contains(table.Comparision)) + comparisionFiles.Add(table.Comparision); + } + } + foreach (string comparisionFile in comparisionFiles) + { + ApsimFile otherFile = pullRequest.Files.Find(f => f.Name == comparisionFile); + 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)); From 5230f7028115bf7f9f3b84e35e8ec51f7a6bdc61 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 22 Jul 2026 14:15:07 +1000 Subject: [PATCH 3/4] Fix for unit test --- APSIM.POStats.Shared/Collector.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/APSIM.POStats.Shared/Collector.cs b/APSIM.POStats.Shared/Collector.cs index e7a7308..ed86c24 100644 --- a/APSIM.POStats.Shared/Collector.cs +++ b/APSIM.POStats.Shared/Collector.cs @@ -164,7 +164,15 @@ private static List GetTablesFromFile(string apsimxFileName) if (reader.HasRows) { reader.Read(); - newTable.Comparision = reader["Comparision"].ToString(); + + bool hasComparisionColumn = false; + foreach (DataRow row in reader.GetSchemaTable().Rows) + if (row["ColumnName"].ToString() == "Comparision") + hasComparisionColumn = true; + + if (hasComparisionColumn) + newTable.Comparision = reader["Comparision"].ToString(); + foreach(string field in fields) { string match = reader[field].ToString(); From 4c8a603b2a5998bf9d8b34d4a94fcb747e58fb21 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 22 Jul 2026 14:33:25 +1000 Subject: [PATCH 4/4] Fix spelling of comparison --- APSIM.POStats.Shared/Collector.cs | 10 +++++----- APSIM.POStats.Shared/Models/Table.cs | 2 +- APSIM.POStats.Shared/PullRequestFunctions.cs | 12 ++++++------ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/APSIM.POStats.Shared/Collector.cs b/APSIM.POStats.Shared/Collector.cs index ed86c24..7cc5985 100644 --- a/APSIM.POStats.Shared/Collector.cs +++ b/APSIM.POStats.Shared/Collector.cs @@ -165,13 +165,13 @@ private static List
GetTablesFromFile(string apsimxFileName) { reader.Read(); - bool hasComparisionColumn = false; + bool hasComparisonColumn = false; foreach (DataRow row in reader.GetSchemaTable().Rows) - if (row["ColumnName"].ToString() == "Comparision") - hasComparisionColumn = true; + if (row["ColumnName"].ToString() == "comparison") + hasComparisonColumn = true; - if (hasComparisionColumn) - newTable.Comparision = reader["Comparision"].ToString(); + if (hasComparisonColumn) + newTable.Comparison = reader["comparison"].ToString(); foreach(string field in fields) { diff --git a/APSIM.POStats.Shared/Models/Table.cs b/APSIM.POStats.Shared/Models/Table.cs index e76ef6d..cc3822d 100644 --- a/APSIM.POStats.Shared/Models/Table.cs +++ b/APSIM.POStats.Shared/Models/Table.cs @@ -7,7 +7,7 @@ public class Table { public int Id { get; set; } public string Name { get; set; } - public string Comparision { 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 822e870..1a925d2 100644 --- a/APSIM.POStats.Shared/PullRequestFunctions.cs +++ b/APSIM.POStats.Shared/PullRequestFunctions.cs @@ -68,18 +68,18 @@ public static List GetFileComparisons(PullRequestDetails pu List files = new List(); foreach (ApsimFile file in pullRequest.Files) { - List comparisionFiles = new List(); + List comparisonFiles = new List(); foreach (Table table in file.Tables) { - if (!string.IsNullOrEmpty(table.Comparision)) + if (!string.IsNullOrEmpty(table.Comparison)) { - if (comparisionFiles.Contains(table.Comparision)) - comparisionFiles.Add(table.Comparision); + if (comparisonFiles.Contains(table.Comparison)) + comparisonFiles.Add(table.Comparison); } } - foreach (string comparisionFile in comparisionFiles) + foreach (string comparisonFile in comparisonFiles) { - ApsimFile otherFile = pullRequest.Files.Find(f => f.Name == comparisionFile); + ApsimFile otherFile = pullRequest.Files.Find(f => f.Name == comparisonFile); files.Add(new ApsimFileComparison(file, otherFile)); } }