Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingScenariosView.cs =================================================================== diff -u -r0c79c91c69927a7bd0988c4b132f3f29b7c43b74 -r5c19bcc5dc3ca81e171e5561d56c4abdd8c31263 --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingScenariosView.cs (.../PipingScenariosView.cs) (revision 0c79c91c69927a7bd0988c4b132f3f29b7c43b74) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingScenariosView.cs (.../PipingScenariosView.cs) (revision 5c19bcc5dc3ca81e171e5561d56c4abdd8c31263) @@ -32,6 +32,7 @@ using Riskeer.Common.Data.Calculation; using Riskeer.Common.Data.FailureMechanism; using Riskeer.Piping.Data; +using Riskeer.Piping.Data.Probabilistic; using Riskeer.Piping.Data.SemiProbabilistic; using Riskeer.Piping.Forms.Properties; using RiskeerCommonFormsResources = Riskeer.Common.Forms.Properties.Resources; @@ -43,6 +44,10 @@ /// public partial class PipingScenariosView : UserControl, IView { + private const int failureProbabilityUpliftColumnIndex = 3; + private const int failureProbabilityHeaveColumnIndex = 4; + private const int failureProbabilitySellmeijerColumnIndex = 5; + private readonly PipingFailureMechanism failureMechanism; private readonly IAssessmentSection assessmentSection; private CalculationGroup calculationGroup; @@ -52,7 +57,7 @@ private RecursiveObserver calculationObserver; private RecursiveObserver calculationInputObserver; - private IEnumerable scenarioRows; + private IEnumerable scenarioRows; private bool selectConfigurationTypeComboBoxUpdating; /// @@ -96,7 +101,7 @@ InitializeDataGridView(); UpdateSectionsListBox(); - UpdateDataGridViewDataSource(); + UpdateDataGridView(); } public object Data @@ -172,39 +177,48 @@ private void InitializeDataGridView() { dataGridViewControl.AddCheckBoxColumn( - nameof(PipingScenarioRow.IsRelevant), + nameof(PipingScenarioRow>.IsRelevant), RiskeerCommonFormsResources.ScenarioView_InitializeDataGridView_In_final_rating ); dataGridViewControl.AddTextBoxColumn( - nameof(PipingScenarioRow.Contribution), + nameof(PipingScenarioRow>.Contribution), RiskeerCommonFormsResources.ScenarioView_InitializeDataGridView_Contribution ); dataGridViewControl.AddTextBoxColumn( - nameof(PipingScenarioRow.Name), + nameof(PipingScenarioRow>.Name), RiskeerCommonFormsResources.ScenarioView_Name_DisplayName ); dataGridViewControl.AddTextBoxColumn( - nameof(PipingScenarioRow.FailureProbabilityUplift), + nameof(SemiProbabilisticPipingScenarioRow.FailureProbabilityUplift), Resources.PipingScenarioView_PipingScenarioRow_FailureProbabilityUplift ); dataGridViewControl.AddTextBoxColumn( - nameof(PipingScenarioRow.FailureProbabilityHeave), + nameof(SemiProbabilisticPipingScenarioRow.FailureProbabilityHeave), Resources.PipingScenarioView_PipingScenarioRow_FailureProbabilityHeave ); dataGridViewControl.AddTextBoxColumn( - nameof(PipingScenarioRow.FailureProbabilitySellmeijer), + nameof(SemiProbabilisticPipingScenarioRow.FailureProbabilitySellmeijer), Resources.PipingScenarioView_PipingScenarioRow_FailureProbabilitySellmeijer ); dataGridViewControl.AddTextBoxColumn( - nameof(PipingScenarioRow.FailureProbability), + nameof(PipingScenarioRow>.FailureProbability), RiskeerCommonFormsResources.ScenarioView_ProfileFailureProbability_DisplayName ); dataGridViewControl.AddTextBoxColumn( - nameof(PipingScenarioRow.SectionFailureProbability), + nameof(IPipingScenarioRow.SectionFailureProbability), RiskeerCommonFormsResources.ScenarioView_SectionFailureProbability_DisplayName ); } + private void UpdateDataGridView() + { + dataGridViewControl.GetColumnFromIndex(failureProbabilityUpliftColumnIndex).Visible = failureMechanism.ScenarioConfigurationType == PipingScenarioConfigurationType.SemiProbabilistic; + dataGridViewControl.GetColumnFromIndex(failureProbabilityHeaveColumnIndex).Visible = failureMechanism.ScenarioConfigurationType == PipingScenarioConfigurationType.SemiProbabilistic; + dataGridViewControl.GetColumnFromIndex(failureProbabilitySellmeijerColumnIndex).Visible = failureMechanism.ScenarioConfigurationType == PipingScenarioConfigurationType.SemiProbabilistic; + + UpdateDataGridViewDataSource(); + } + private void UpdateDataGridViewDataSource() { if (!(listBox.SelectedItem is FailureMechanismSection failureMechanismSection)) @@ -239,17 +253,37 @@ dataGridViewControl.RefreshDataGridView(); } - private IEnumerable GetScenarioRows(FailureMechanismSection failureMechanismSection) + private IEnumerable GetScenarioRows(FailureMechanismSection failureMechanismSection) { IEnumerable lineSegments = Math2D.ConvertPointsToLineSegments(failureMechanismSection.Points); - IEnumerable pipingCalculations = calculationGroup - .GetCalculations() - .OfType() - .Where(pc => pc.IsSurfaceLineIntersectionWithReferenceLineInSection(lineSegments)); - return pipingCalculations.Select(pc => new PipingScenarioRow(pc, failureMechanism, failureMechanismSection, assessmentSection)).ToList(); + return failureMechanism.ScenarioConfigurationType == PipingScenarioConfigurationType.SemiProbabilistic + ? GetSemiProbabilisticPipingScenarioRows(failureMechanismSection, lineSegments) + : GetProbabilisticPipingScenarioRows(lineSegments); } + private IEnumerable GetSemiProbabilisticPipingScenarioRows(FailureMechanismSection failureMechanismSection, IEnumerable lineSegments) + { + return GetScenarios(lineSegments) + .Select(pc => new SemiProbabilisticPipingScenarioRow(pc, failureMechanism, failureMechanismSection, assessmentSection)) + .ToList(); + } + + private IEnumerable GetProbabilisticPipingScenarioRows(IEnumerable lineSegments) + { + return GetScenarios(lineSegments) + .Select(pc => new ProbabilisticPipingScenarioRow(pc)) + .ToList(); + } + + private IEnumerable GetScenarios(IEnumerable lineSegments) + where T : IPipingCalculationScenario + { + return calculationGroup.GetCalculations() + .OfType() + .Where(pc => pc.IsSurfaceLineIntersectionWithReferenceLineInSection(lineSegments)); + } + private void SelectConfigurationTypeComboBox_OnSelectedIndexChanged(object sender, EventArgs e) { if (selectConfigurationTypeComboBoxUpdating || selectConfigurationTypeComboBox.SelectedIndex == -1) @@ -258,6 +292,7 @@ } failureMechanism.ScenarioConfigurationType = (PipingScenarioConfigurationType) selectConfigurationTypeComboBox.SelectedValue; + UpdateDataGridView(); } } } \ No newline at end of file