diff --git a/COMET.Web.Common.Test/COMET.Web.Common.Test.csproj b/COMET.Web.Common.Test/COMET.Web.Common.Test.csproj index d2ae6fbe..8088b80e 100644 --- a/COMET.Web.Common.Test/COMET.Web.Common.Test.csproj +++ b/COMET.Web.Common.Test/COMET.Web.Common.Test.csproj @@ -28,7 +28,7 @@ - + diff --git a/COMET.Web.Common.Tests/COMET.Web.Common.Tests.csproj b/COMET.Web.Common.Tests/COMET.Web.Common.Tests.csproj index 8c64447d..b616db34 100644 --- a/COMET.Web.Common.Tests/COMET.Web.Common.Tests.csproj +++ b/COMET.Web.Common.Tests/COMET.Web.Common.Tests.csproj @@ -46,7 +46,7 @@ - + diff --git a/COMET.Web.Common/COMET.Web.Common.csproj b/COMET.Web.Common/COMET.Web.Common.csproj index 36303baf..4eb65777 100644 --- a/COMET.Web.Common/COMET.Web.Common.csproj +++ b/COMET.Web.Common/COMET.Web.Common.csproj @@ -31,8 +31,8 @@ - - + + diff --git a/COMETwebapp.Tests/COMETwebapp.Tests.csproj b/COMETwebapp.Tests/COMETwebapp.Tests.csproj index f90bfa7f..2b4f74df 100644 --- a/COMETwebapp.Tests/COMETwebapp.Tests.csproj +++ b/COMETwebapp.Tests/COMETwebapp.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/COMETwebapp.Tests/Pages/ModelDashboard/ModelDashboardTestFixture.cs b/COMETwebapp.Tests/Pages/ModelDashboard/ModelDashboardTestFixture.cs index 64b692c1..283dbab0 100644 --- a/COMETwebapp.Tests/Pages/ModelDashboard/ModelDashboardTestFixture.cs +++ b/COMETwebapp.Tests/Pages/ModelDashboard/ModelDashboardTestFixture.cs @@ -172,27 +172,28 @@ public async Task VerifyIterationSelection() public void VerifyIterationPreselection() { this.openedIterations.AddRange(new List { this.firstIteration }); - - this.context.RenderComponent(parameters => - { - parameters.Add(p => p.IterationId, this.firstIteration.Iid.ToShortGuid()); - }); - var navigation = this.context.Services.GetService(); + var navigationManager = this.context.Services.GetRequiredService(); + var testUri = $"/ModelDashboard?IterationId={this.firstIteration.Iid.ToShortGuid()}"; + + // Act: Navigate to the URI and render the component + navigationManager.NavigateTo(testUri); + this.context.RenderComponent(); Assert.Multiple(() => { Assert.That(this.viewModel.SelectedThing, Is.EqualTo(this.firstIteration)); - Assert.That(navigation.Uri.Contains("server"), Is.True); - Assert.That(navigation.Uri.Contains(this.firstIteration.Iid.ToShortGuid()), Is.True); + Assert.That(navigationManager.Uri.Contains("server"), Is.True); + Assert.That(navigationManager.Uri.Contains(this.firstIteration.Iid.ToShortGuid()), Is.True); }); this.viewModel.SelectedThing = null; - this.context.RenderComponent(parameters => - { - parameters.Add(p => p.IterationId, this.secondIteration.Iid.ToShortGuid()); - }); + testUri = $"/ModelDashboard?IterationId={this.secondIteration.Iid.ToShortGuid()}"; + + // Act: Navigate to the URI and render the component + navigationManager.NavigateTo(testUri); + this.context.RenderComponent(); Assert.That(this.viewModel.SelectedThing, Is.EqualTo(this.firstIteration)); } diff --git a/COMETwebapp.Tests/Pages/ParameterEditor/ParameterEditorTestFixture.cs b/COMETwebapp.Tests/Pages/ParameterEditor/ParameterEditorTestFixture.cs index e01a4656..625085f9 100644 --- a/COMETwebapp.Tests/Pages/ParameterEditor/ParameterEditorTestFixture.cs +++ b/COMETwebapp.Tests/Pages/ParameterEditor/ParameterEditorTestFixture.cs @@ -162,20 +162,27 @@ public void VerifyIterationPreselection() { this.openedIterations.AddRange(new List { this.firstIteration }); - this.context.RenderComponent(parameters => { parameters.Add(p => p.IterationId, this.firstIteration.Iid.ToShortGuid()); }); + var navigationManager = this.context.Services.GetRequiredService(); + var testUri = $"/ParameterEditor?IterationId={this.firstIteration.Iid.ToShortGuid()}"; - var navigation = this.context.Services.GetService(); + // Act: Navigate to the URI and render the component + navigationManager.NavigateTo(testUri); + this.context.RenderComponent(); Assert.Multiple(() => { Assert.That(this.viewModel.SelectedThing, Is.EqualTo(this.firstIteration)); - Assert.That(navigation.Uri.Contains("server"), Is.True); - Assert.That(navigation.Uri.Contains(this.firstIteration.Iid.ToShortGuid()), Is.True); + Assert.That(navigationManager.Uri.Contains("server"), Is.True); + Assert.That(navigationManager.Uri.Contains(this.firstIteration.Iid.ToShortGuid()), Is.True); }); this.viewModel.SelectedThing = null; - this.context.RenderComponent(parameters => { parameters.Add(p => p.IterationId, this.secondIteration.Iid.ToShortGuid()); }); + testUri = $"/ParameterEditor?IterationId={this.secondIteration.Iid.ToShortGuid()}"; + + // Act: Navigate to the URI and render the component + navigationManager.NavigateTo(testUri); + this.context.RenderComponent(); Assert.That(this.viewModel.SelectedThing, Is.EqualTo(this.firstIteration)); } diff --git a/COMETwebapp.Tests/Pages/Viewer/ViewerTestFixture.cs b/COMETwebapp.Tests/Pages/Viewer/ViewerTestFixture.cs index 54fb6dba..b0969c62 100644 --- a/COMETwebapp.Tests/Pages/Viewer/ViewerTestFixture.cs +++ b/COMETwebapp.Tests/Pages/Viewer/ViewerTestFixture.cs @@ -151,20 +151,27 @@ public void VerifyIterationPreselection() { this.openedIterations.AddRange(new List { this.firstIteration }); - this.context.RenderComponent(parameters => { parameters.Add(p => p.IterationId, this.firstIteration.Iid.ToShortGuid()); }); + var navigationManager = this.context.Services.GetRequiredService(); + var testUri = $"/Viewer?IterationId={this.firstIteration.Iid.ToShortGuid()}"; - var navigation = this.context.Services.GetService(); + // Act: Navigate to the URI and render the component + navigationManager.NavigateTo(testUri); + this.context.RenderComponent(); Assert.Multiple(() => { Assert.That(this.viewModel.SelectedThing, Is.EqualTo(this.firstIteration)); - Assert.That(navigation.Uri.Contains("server"), Is.True); - Assert.That(navigation.Uri.Contains(this.firstIteration.Iid.ToShortGuid()), Is.True); + Assert.That(navigationManager.Uri.Contains("server"), Is.True); + Assert.That(navigationManager.Uri.Contains(this.firstIteration.Iid.ToShortGuid()), Is.True); }); this.viewModel.SelectedThing = null; - this.context.RenderComponent(parameters => { parameters.Add(p => p.IterationId, this.secondIteration.Iid.ToShortGuid()); }); + testUri = $"/Viewer?IterationId={this.secondIteration.Iid.ToShortGuid()}"; + + // Act: Navigate to the URI and render the component + navigationManager.NavigateTo(testUri); + this.context.RenderComponent(); Assert.That(this.viewModel.SelectedThing, Is.EqualTo(this.firstIteration)); } diff --git a/COMETwebapp.Tests/ViewModels/Components/ParameterEditor/ParameterTableViewModelTestFixture.cs b/COMETwebapp.Tests/ViewModels/Components/ParameterEditor/ParameterTableViewModelTestFixture.cs index 6e5d12ca..d01f2122 100644 --- a/COMETwebapp.Tests/ViewModels/Components/ParameterEditor/ParameterTableViewModelTestFixture.cs +++ b/COMETwebapp.Tests/ViewModels/Components/ParameterEditor/ParameterTableViewModelTestFixture.cs @@ -50,6 +50,8 @@ public class ParameterTableViewModelTestFixture private Iteration iteration; private Option option; private CDPMessageBus messageBus; + private ParameterGroup parameterGroup; + private ParameterGroup parameterGroup2; [SetUp] public void Setup() @@ -86,12 +88,26 @@ public void Setup() ShortName = "kg" }; + this.parameterGroup = new ParameterGroup() + { + Iid = Guid.NewGuid(), + Name = "ParameterGroup 1" + }; + + this.parameterGroup2 = new ParameterGroup() + { + Iid = Guid.NewGuid(), + Name = "ParameterGroup 2", + ContainingGroup = this.parameterGroup + }; + var parameter1 = new Parameter() { Iid = Guid.NewGuid(), Owner = this.domain, ParameterType = parameterType, Scale = scale, + Group = this.parameterGroup, ValueSet = { new ParameterValueSet() @@ -111,6 +127,7 @@ public void Setup() Owner = this.domain, ParameterType = parameterType, Scale = scale, + Group = this.parameterGroup, ValueSet = { new ParameterValueSet() @@ -130,6 +147,7 @@ public void Setup() ParameterType = parameterType, Scale = scale, Owner = this.domain, + Group = this.parameterGroup2, ValueSet = { new ParameterValueSet() @@ -166,7 +184,8 @@ public void Setup() { Iid = Guid.NewGuid(), Name = "Container", - Parameter = { parameter3 } + Parameter = { parameter3 }, + ParameterGroup = { this.parameterGroup, this.parameterGroup2 } }; var elementDefinition = new ElementDefinition() @@ -228,6 +247,7 @@ public void VerifyParameterRowProperties() Assert.That(parameterRow.ParameterName, Is.EqualTo("mass")); Assert.That(parameterRow.Option, Is.Empty); Assert.That(parameterRow.State, Is.Empty); + Assert.That(parameterRow.ParameterGroupPath, Is.EqualTo($"{this.parameterGroup.Name} => {this.parameterGroup2.Name}")); }); } diff --git a/COMETwebapp/COMETwebapp.csproj b/COMETwebapp/COMETwebapp.csproj index 389eb9ac..2aa81597 100644 --- a/COMETwebapp/COMETwebapp.csproj +++ b/COMETwebapp/COMETwebapp.csproj @@ -38,4 +38,8 @@ + + + + diff --git a/COMETwebapp/Components/ParameterEditor/ParameterTable.razor b/COMETwebapp/Components/ParameterEditor/ParameterTable.razor index a53f0250..57dbf694 100644 --- a/COMETwebapp/Components/ParameterEditor/ParameterTable.razor +++ b/COMETwebapp/Components/ParameterEditor/ParameterTable.razor @@ -109,6 +109,7 @@ + diff --git a/COMETwebapp/ViewModels/Components/ParameterEditor/ParameterBaseRowViewModel.cs b/COMETwebapp/ViewModels/Components/ParameterEditor/ParameterBaseRowViewModel.cs index 52acc332..be572157 100644 --- a/COMETwebapp/ViewModels/Components/ParameterEditor/ParameterBaseRowViewModel.cs +++ b/COMETwebapp/ViewModels/Components/ParameterEditor/ParameterBaseRowViewModel.cs @@ -112,6 +112,33 @@ private void InitializesProperties(bool isReadOnly) this.Option = this.ValueSet.ActualOption is not null ? this.ValueSet.ActualOption?.Name : string.Empty; this.State = this.ValueSet.ActualState is not null ? this.ValueSet.ActualState.Name : string.Empty; this.Switch = this.ValueSet.ValueSwitch; + this.CalculateParameterGroupPath(); + } + + /// + /// Calculate and set the values of parameters + /// + private void CalculateParameterGroupPath() + { + var parameterGroupPath = string.Empty; + + if (this.Parameter.Group != null) + { + var group = this.Parameter.Group; + parameterGroupPath = this.Parameter.Group.Name; + + while (group != null) + { + if (group.ContainingGroup != null) + { + parameterGroupPath = $"{group.ContainingGroup.Name} => {parameterGroupPath}"; + } + + group = group.ContainingGroup; + } + } + + this.ParameterGroupPath = parameterGroupPath; } /// @@ -168,6 +195,11 @@ public bool IsPublishable /// public string OwnerName { get; private set; } + /// + /// Gets the name + /// + public string ParameterGroupPath { get; private set; } + /// /// Gets the switch for the published value ///