Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamProjectData.cs =================================================================== diff -u -r6896 -r6964 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamProjectData.cs (.../DamProjectData.cs) (revision 6896) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamProjectData.cs (.../DamProjectData.cs) (revision 6964) @@ -47,6 +47,7 @@ private DamProjectType damProjectType = DamProjectType.Design; private string damDataSourceFileName = ""; private List designCalculations; + private DamProjectCalculationSpecification damProjectCalculationSpecification; /// /// Constructor @@ -56,9 +57,15 @@ VersionInfo = new VersionInfo(); dike = new Dike(); dikeJob = null; + DamProjectCalculationSpecifications = new List(); DamProjectCalculationSpecification = new DamProjectCalculationSpecification(); + DataEventPublisher.OnAfterChange += DataEventPublisher_OnAfterChange; } + [ReadOnly(true)] //For now make read only as only 1 spec is allowed at this moment + [XmlIgnore] + public List DamProjectCalculationSpecifications { get; } + /// Gets the version information. /// The version information. public VersionInfo VersionInfo { get; set; } @@ -124,7 +131,24 @@ /// /// Composite relationship [Validate] - public DamProjectCalculationSpecification DamProjectCalculationSpecification { get; set; } + public DamProjectCalculationSpecification DamProjectCalculationSpecification + { + get => damProjectCalculationSpecification; + set + { + DataEventPublisher.BeforeChange(this, "DamProjectCalculationSpecification"); + damProjectCalculationSpecification = value; + if (DamProjectCalculationSpecifications.Count == 0) + { + DamProjectCalculationSpecifications.Add(damProjectCalculationSpecification); + } + else + { + DamProjectCalculationSpecifications[0] = damProjectCalculationSpecification; + } + DataEventPublisher.AfterChange(this, "DamProjectCalculationSpecification"); + } + } [Child] public virtual DamJob DikeJob @@ -184,7 +208,7 @@ damProjectType = value; Location.DamProjectType = value; - DamFailureMechanismeCalculationSpecification.DamProjectType = value; + DamProjectCalculationSpecification.DamProjectType = value; if (modified) { @@ -364,7 +388,7 @@ TimeSerie timeSerie = OutputTimeSerieCollection.Series.FirstOrDefault(serie => serie.LocationId == locationJob.Location.Name); if (timeSerie != null) { - if (DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismSystemType == FailureMechanismSystemType.Piping) + if (DamProjectCalculationSpecification.FailureMechanismSystemType == FailureMechanismSystemType.Piping) { locationJob.LocationResult.PipingTimeSerie = timeSerie; } @@ -467,13 +491,13 @@ validationResults.AddRange(Validator.ValidateProperty(damSoil, "AbovePhreaticLevel", sourceName)); validationResults.AddRange(Validator.ValidateProperty(damSoil, "BelowPhreaticLevel", sourceName)); - if (DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismSystemType == FailureMechanismSystemType.Piping) + if (DamProjectCalculationSpecification.FailureMechanismSystemType == FailureMechanismSystemType.Piping) { validationResults.AddRange(Validator.ValidateProperty(damSoil, "DiameterD70", sourceName)); validationResults.AddRange(Validator.ValidateProperty(damSoil, "PermeabKx", sourceName)); } - if (DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismSystemType is + if (DamProjectCalculationSpecification.FailureMechanismSystemType is FailureMechanismSystemType.StabilityOutside or FailureMechanismSystemType.StabilityInside) { switch (damSoil.ShearStrengthModel) @@ -537,13 +561,17 @@ public override bool IsVisible(string property) { + if (DamProjectCalculationSpecifications.Count <= 0) + { + return false; + } + switch (property) { case "SensorData": return damProjectType == DamProjectType.DamLiveConfiguration; case "DesignCalculations": return HasResults() && DamProjectType == DamProjectType.Design; case "RunColumnVisible": return DamProjectType == DamProjectType.Design; - case "DamProjectCalculationSpecification": - return DamProjectCalculationSpecification.DamCalculationSpecifications.Count > 0; + case "DamProjectCalculationSpecification": return DamProjectCalculationSpecification != null; default: return true; } } @@ -645,14 +673,22 @@ return numberOfCalculatedJobs; } + private void DataEventPublisher_OnAfterChange(object sender, PublishEventArgs e) + { + if (sender == damProjectCalculationSpecification) + { + DataEventPublisher.AfterChange(this); + } + } + /// /// Check if design with geometry adaption is allowed /// /// private bool IsDesignWithGeometryAdaptionAllowed() { bool isAdoption = DamProjectType == DamProjectType.Design && DamProjectCalculationSpecification.SelectedAnalysisType != AnalysisType.NoAdaption; - bool isStabilityOutside = DamProjectCalculationSpecification.DamCalculationSpecifications.Any(specification => specification.FailureMechanismSystemType == FailureMechanismSystemType.StabilityOutside); + bool isStabilityOutside = DamProjectCalculationSpecification.FailureMechanismSystemType == FailureMechanismSystemType.StabilityOutside; return (!isAdoption || !isStabilityOutside); } } \ No newline at end of file