Fisheye: Tag 6853 refers to a dead (removed) revision in file `DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardJobImporterTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/UISupport/ConfigurationManagerTest.cs =================================================================== diff -u -r6850 -r6858 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/UISupport/ConfigurationManagerTest.cs (.../ConfigurationManagerTest.cs) (revision 6850) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/UISupport/ConfigurationManagerTest.cs (.../ConfigurationManagerTest.cs) (revision 6858) @@ -30,6 +30,13 @@ public class ConfigurationManagerTest { [Test] + public void ReturnsCorrectAvailableDamProjectTypes() + { + ICollection projectTypes = ConfigurationManager.Instance.GetAvailableDamProjectTypes(); + Assert.That(projectTypes.Count, Is.EqualTo(2)); + } + + [Test] public void ReturnsCorrectAvailableDeterministicFailuremechanisms() { ICollection failureMechanisms = ConfigurationManager.Instance.GetAvailableFailureMechanisms(DamProjectType.Design); @@ -52,5 +59,16 @@ ICollection stabilityOutsideModels = ConfigurationManager.Instance.GetAvailableMechanismModels(DamProjectType.Design, FailureMechanismSystemType.StabilityOutside); Assert.That(stabilityOutsideModels.Count, Is.EqualTo(1), "DamClassicStability: Incorrect number of models for deterministic stability outside calculation"); } + + [Test] + public void ReturnsCorrectAvailableDeterministicFailuremechanismModelsForDamLiveOption() + { + ICollection pipingModels = ConfigurationManager.Instance.GetAvailableMechanismModels(DamProjectType.DamLiveConfiguration, FailureMechanismSystemType.Piping); + Assert.That(pipingModels.Count, Is.EqualTo(1), "Incorrect number of models for deterministic piping calculation"); + ICollection stabilityInsideModels = ConfigurationManager.Instance.GetAvailableMechanismModels(DamProjectType.DamLiveConfiguration, FailureMechanismSystemType.StabilityInside); + Assert.That(stabilityInsideModels.Count, Is.EqualTo(2), "Incorrect number of models for deterministic stability inside calculation"); + ICollection stabilityOutsideModels = ConfigurationManager.Instance.GetAvailableMechanismModels(DamProjectType.DamLiveConfiguration, FailureMechanismSystemType.StabilityOutside); + Assert.That(stabilityOutsideModels.Count, Is.EqualTo(1), "Incorrect number of models for deterministic stability outside calculation"); + } } } \ No newline at end of file Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/WaterBoard.cs =================================================================== diff -u -r6853 -r6858 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/WaterBoard.cs (.../WaterBoard.cs) (revision 6853) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/WaterBoard.cs (.../WaterBoard.cs) (revision 6858) @@ -39,6 +39,7 @@ private List locations; private IList featureList; private IList segments; + private string waterLevelTimeSeriesFileName; private Dike dike; public WaterBoard() @@ -128,6 +129,21 @@ [XmlIgnore] [Browsable(false)] public IVisibleEnabledProvider VisibleEnabledProvider { get; set; } + [Label("Waterlevel timeseries filename")] + public string WaterLevelTimeSeriesFileName + { + get + { + return waterLevelTimeSeriesFileName; + } + set + { + DataEventPublisher.BeforeChange(this, "WaterLevelTimeSeriesFileName"); + waterLevelTimeSeriesFileName = value; + DataEventPublisher.AfterChange(this, "WaterLevelTimeSeriesFileName"); + } + } + public void FillFeatureList() { foreach (IFeature feature in backgroundRepository.Features) @@ -164,6 +180,7 @@ switch (property) { case "Dike": return VisibleEnabledProvider != null && VisibleEnabledProvider.IsVisible(this, "Dike"); + case "WaterLevelTimeSeriesFileName": return Location.DamProjectType == DamProjectType.DamLiveConfiguration; default: return true; } } Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Translations.xml =================================================================== diff -u -r6853 -r6858 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Translations.xml (.../Translations.xml) (revision 6853) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Translations.xml (.../Translations.xml) (revision 6858) @@ -195,6 +195,8 @@ + Index: DamClients/DamUI/trunk/src/Dam/Forms/DamPlugin.cs =================================================================== diff -u -r6853 -r6858 --- DamClients/DamUI/trunk/src/Dam/Forms/DamPlugin.cs (.../DamPlugin.cs) (revision 6853) +++ DamClients/DamUI/trunk/src/Dam/Forms/DamPlugin.cs (.../DamPlugin.cs) (revision 6858) @@ -31,6 +31,7 @@ using Deltares.Dam.Data; using Deltares.Dam.Data.DamEngineIo; using Deltares.Dam.Data.DataPlugins.Configuration; +using Deltares.Dam.Data.IO; using Deltares.Dam.Data.License; using Deltares.Dam.Data.Sensors; using Deltares.Dam.Data.UISupport; @@ -49,6 +50,7 @@ using Deltares.Standard.Forms; using Deltares.Standard.Forms.DExpress; using Deltares.Standard.Forms.Maps; +using Deltares.Standard.IO.Xml; using Deltares.Standard.Language; using Deltares.Standard.Logging; using Deltares.Standard.Specifications; @@ -85,6 +87,13 @@ HideUnusedColumns = true }; + private readonly GridViewControl calculationsControl = new GridViewControl + { + Name = "Calculations", + ShowToolbar = true, + HideUnusedColumns = true + }; + private readonly GridViewControl designCalculationsControl = new GridViewControl { Name = "DesignCalculations", @@ -261,6 +270,8 @@ lastDesignResult = null; + // Read the Waterlevel Timeseries + damProject.ImportWaterLevelTimeSeries(); // Find the view|Image menu option BarItemLink imagesItem = mainForm.ViewMenu.ItemLinks.First(bi => bi.Item.Name.Equals("ImageMenu")); if (projectData.DamProjectType == DamProjectType.DamLiveConfiguration) @@ -716,10 +727,7 @@ mainForm.Invoke(new PublisherDelegate(DataEventPublisher.DataListModified), LogManager.Messages, null); } - if (damProject.DamProjectData.DamProjectType == DamProjectType.Design) - { - SetProperControlsAfterDesignCalculation(); - } + SetProperControlsAfterDesignCalculation(); } private void SetProperControlsAfterDesignCalculation() @@ -838,6 +846,18 @@ } } } + else if (sender == damProject.DamProjectData.WaterBoard) + { + try + { + damProject.ImportWaterLevelTimeSeries(); + //locationJobSymbol.Update(damProject.DamProjectData.LocationJobs); + } + catch (TimeSerieSchemaValidationException exception) + { + LocalizedMessageBox.ShowError(this, exception.Message); + } + } else if (sender == currentLocationJob && sender != null) { DataEventPublisher.AfterChange(this, "CurrentLocationJob"); Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/LocationJob.cs =================================================================== diff -u -r6852 -r6858 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/LocationJob.cs (.../LocationJob.cs) (revision 6852) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/LocationJob.cs (.../LocationJob.cs) (revision 6858) @@ -198,6 +198,8 @@ [XmlIgnore] [Browsable(false)] public static string CurrentCalculation { get; set; } = ""; + [XmlIgnore] [Browsable(false)] public static DateTime CurrentTime { get; set; } = DateTime.Today; + [XmlIgnore] [Browsable(false)] public static DamProjectType DamProjectType { get; set; } = DamProjectType.Design; [XmlIgnore] Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardImporterTests.cs =================================================================== diff -u -r6843 -r6858 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardImporterTests.cs (.../WaterBoardImporterTests.cs) (revision 6843) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardImporterTests.cs (.../WaterBoardImporterTests.cs) (revision 6858) @@ -40,20 +40,18 @@ private DataSourceContainer dataSourceContainer; [Test] - [TestCase(DamProjectType.Design)] - [TestCase(DamProjectType.DamLiveConfiguration)] - public void ImportWaterBoardOnlyCsvFiles1D(DamProjectType damProjectType) + public void ImportWaterBoardOnlyCsvFiles1D() { const double cTolerance = 0.0001; const string definitionFilename = @".\TestData\CSVData\Full1DProject\Import.defx"; dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); string damImportFolder = Path.GetDirectoryName(definitionFilename); string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, - damProjectType, out _); + DamProjectType.DamLiveConfiguration, out _); using WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, dikeId, - damProjectType, null, + DamProjectType.DamLiveConfiguration, null, out List _); // Check Dike @@ -156,10 +154,10 @@ string damImportFolder = Path.GetDirectoryName(definitionFilename); List logMessages; string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, - DamProjectType.Design, out _); + DamProjectType.DamLiveConfiguration, out _); using WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, dikeId, - DamProjectType.Design, null, + DamProjectType.DamLiveConfiguration, null, out logMessages); Assert.That(logMessages, Has.Count.GreaterThan(0)); @@ -183,10 +181,10 @@ string damImportFolder = Path.GetDirectoryName(definitionFilename); List logMessages; string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, - DamProjectType.Design, out _); + DamProjectType.DamLiveConfiguration, out _); using WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, dikeId, - DamProjectType.Design, null, + DamProjectType.DamLiveConfiguration, null, out logMessages); Assert.That(logMessages, Has.Count.GreaterThan(0)); @@ -211,10 +209,10 @@ string damImportFolder = Path.GetDirectoryName(definitionFilename); List logMessages; string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, - DamProjectType.Design, out _); + DamProjectType.DamLiveConfiguration, out _); using WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, dikeId, - DamProjectType.Design, null, + DamProjectType.DamLiveConfiguration, null, out logMessages); Assert.That(logMessages, Has.Count.GreaterThan(0)); @@ -238,10 +236,10 @@ string damImportFolder = Path.GetDirectoryName(definitionFilename); List logMessages; string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, - DamProjectType.Design, out _); + DamProjectType.DamLiveConfiguration, out _); using WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, dikeId, - DamProjectType.Design, null, + DamProjectType.DamLiveConfiguration, null, out logMessages); Assert.That(logMessages, Has.Count.GreaterThan(0)); @@ -258,9 +256,7 @@ } [Test] - [TestCase(DamProjectType.Design)] - [TestCase(DamProjectType.DamLiveConfiguration)] - public void ImportWaterBoardOnlyCsvFiles2D(DamProjectType damProjectType) + public void ImportWaterBoardOnlyCsvFiles2D() { const string definitionFilename = @".\TestData\CSVData\Full2DProject\Import.defx"; const string projectFilename = @".\TestData\TestWithGeometries2D.damx"; @@ -269,10 +265,10 @@ dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); string damImportFolder = Path.GetDirectoryName(definitionFilename); string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, - damProjectType, out _); + DamProjectType.DamLiveConfiguration, out _); damProject.DamProjectData.WaterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, - dikeId, damProjectType, null, out List _); + dikeId, DamProjectType.DamLiveConfiguration, null, out List _); damProject.AssignGeometry2DMapnameIfNotAssigned(Path.Combine(damImportFolder, dataSourceContainer.MapSoilProfile2D)); // Save the data @@ -301,10 +297,10 @@ dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); string damImportFolder = Path.GetDirectoryName(definitionFilename); string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, - DamProjectType.Design, out _); + DamProjectType.DamLiveConfiguration, out _); using WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, dikeId, - DamProjectType.Design, null, out List _); + DamProjectType.DamLiveConfiguration, null, out List _); // Check Dike Assert.That(waterBoard.Dike, Is.Not.Null); @@ -322,12 +318,12 @@ dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); string damImportFolder = Path.GetDirectoryName(definitionFilename); - string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.Design, out _); + string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.DamLiveConfiguration, out _); using (WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, - dikeId, DamProjectType.Design, null, out List _)) + dikeId, DamProjectType.DamLiveConfiguration, null, out List _)) using (WaterBoard referenceWaterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, - dikeId, DamProjectType.Design, null, out List _)) + dikeId, DamProjectType.DamLiveConfiguration, null, out List _)) { // If profiles are defined as relative profiles, new absolute profiles will be generated for each location if (dataSourceContainer.IsImportAsRelativeProfiles) @@ -407,7 +403,7 @@ try { LocalizationManager.CurrentLanguage = LanguageType.English; - Assert.That(() => WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.Design, out _), + Assert.That(() => WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.DamLiveConfiguration, out _), Throws.InstanceOf().With.Message.EqualTo("DataLocation is empty. Perhaps the data source type is not supported.")); } finally @@ -425,10 +421,10 @@ dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); string damImportFolder = Path.GetDirectoryName(definitionFilename); string dikeList = - WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.Design, + WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.DamLiveConfiguration, out _); using (WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, - dikeList, DamProjectType.Design, null, out List _)) + dikeList, DamProjectType.DamLiveConfiguration, null, out List _)) { // Check Dike Assert.That(waterBoard.Dike, Is.Not.Null); Index: DamClients/DamUI/trunk/src/Dam/Forms/LocationJobSymbol.cs =================================================================== diff -u -r6846 -r6858 --- DamClients/DamUI/trunk/src/Dam/Forms/LocationJobSymbol.cs (.../LocationJobSymbol.cs) (revision 6846) +++ DamClients/DamUI/trunk/src/Dam/Forms/LocationJobSymbol.cs (.../LocationJobSymbol.cs) (revision 6858) @@ -19,6 +19,9 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; +using System.Collections.Generic; +using System.Drawing; using System.Xml.Serialization; using Deltares.Dam.Data; using Deltares.Standard; @@ -41,6 +44,8 @@ DataEventPublisher.OnAfterChange += DataEventPublisher_OnAfterChange; } + public LocationJob CurrentLocationJob { get; private set; } + [XmlIgnore] public string CurrentProfileName { Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamProject.cs =================================================================== diff -u -r6853 -r6858 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamProject.cs (.../DamProject.cs) (revision 6853) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamProject.cs (.../DamProject.cs) (revision 6858) @@ -391,6 +391,36 @@ } } + /// + /// Imports the water level time series. + /// + public void ImportWaterLevelTimeSeries() + { + if (DamProjectData.DamProjectCalculationSpecification == null) + { + return; + } + + string file = DamProjectData.WaterBoard.WaterLevelTimeSeriesFileName; + + // check if file exists + if (!file.HasValidStringValue()) + { + return; + } + + if (!File.Exists(file)) + { + return; + } + + // load file + TimeSerieCollection fewsInputTimeSerieCollection = TimeSerieCollection.LoadFromFile(file); + var waterBoardJob = DamProjectData.WaterBoardJob as WaterBoardJob; + WaterBoardJobImporter.ImportWaterlevels(waterBoardJob, fewsInputTimeSerieCollection); + DamProjectData.InputTimeSerieCollection = fewsInputTimeSerieCollection; + } + public void DeleteResults() { DeleteResultData(); Fisheye: Tag 6853 refers to a dead (removed) revision in file `DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/WaterBoardJobImporter.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/UISupport/ConfigurationManager.cs =================================================================== diff -u -r6849 -r6858 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/UISupport/ConfigurationManager.cs (.../ConfigurationManager.cs) (revision 6849) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/UISupport/ConfigurationManager.cs (.../ConfigurationManager.cs) (revision 6858) @@ -61,6 +61,19 @@ [field: ThreadStatic] public static ConfigurationManager Instance { get; } = new ConfigurationManager(); /// + /// Gets the available dam project types. + /// + /// + public ICollection GetAvailableDamProjectTypes() + { + return new[] + { + DamProjectType.DamLiveConfiguration, + DamProjectType.Design + }; + } + + /// /// Gets the available failure mechanisms. /// /// Type of the dam project. @@ -151,5 +164,10 @@ this[DamProjectType.Design, FailureMechanismSystemType.StabilityOutside, (int) StabilityModelType.Bishop] = ConfigurationStatus.Available; this[DamProjectType.Design, FailureMechanismSystemType.Piping, (int) PipingModelType.Bligh] = ConfigurationStatus.Available; this[DamProjectType.Design, FailureMechanismSystemType.Piping, (int) PipingModelType.Wti2017] = ConfigurationStatus.Available; + + this[DamProjectType.DamLiveConfiguration, FailureMechanismSystemType.StabilityInside, (int) StabilityModelType.Bishop] = ConfigurationStatus.Available; + this[DamProjectType.DamLiveConfiguration, FailureMechanismSystemType.StabilityInside, (int) StabilityModelType.UpliftVan] = ConfigurationStatus.Available; + this[DamProjectType.DamLiveConfiguration, FailureMechanismSystemType.StabilityOutside, (int) StabilityModelType.Bishop] = ConfigurationStatus.Available; + this[DamProjectType.DamLiveConfiguration, FailureMechanismSystemType.Piping, (int) PipingModelType.Wti2017] = ConfigurationStatus.Available; } } \ No newline at end of file