Index: Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Plugin/StabilityStoneCoverPlugin.cs =================================================================== diff -u -r1d39fe9482efbe216335028d9bbceb8fc4563ab6 -rae04c23f970bb96e54adbfb8c2fe1aaf95d13326 --- Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Plugin/StabilityStoneCoverPlugin.cs (.../StabilityStoneCoverPlugin.cs) (revision 1d39fe9482efbe216335028d9bbceb8fc4563ab6) +++ Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Plugin/StabilityStoneCoverPlugin.cs (.../StabilityStoneCoverPlugin.cs) (revision ae04c23f970bb96e54adbfb8c2fe1aaf95d13326) @@ -37,6 +37,7 @@ using Ringtoets.Common.Forms.TreeNodeInfos; using Ringtoets.HydraRing.Data; using Ringtoets.HydraRing.IO; +using Ringtoets.Revetment.IO; using Ringtoets.Revetment.Service; using Ringtoets.StabilityStoneCover.Data; using Ringtoets.StabilityStoneCover.Forms; @@ -136,6 +137,42 @@ }; } + public override IEnumerable GetExportInfos() + { + yield return new ExportInfo + { + CreateFileExporter = (context, filePath) => CreateWaveConditionsExporter(context.WrappedData.Children.OfType().Cast(), filePath), + IsEnabled = context => context.WrappedData.Children.OfType().Cast().Any(c => c.HasOutput), + FileFilter = Resources.DataTypeDisplayName_csv_file_filter + }; + + yield return new ExportInfo + { + CreateFileExporter = (context, filePath) => CreateWaveConditionsExporter(new[] { context.WrappedData }, filePath), + IsEnabled = context => context.WrappedData.HasOutput, + FileFilter = Resources.DataTypeDisplayName_csv_file_filter + }; + } + + #region ExportInfos + + private static WaveConditionsExporter CreateWaveConditionsExporter(IEnumerable calculations, string filePath) + { + var exportableWaveConditions = new List(); + + IEnumerable exportableCalculations = calculations.Where(c => c.HasOutput); + + foreach (StabilityStoneCoverWaveConditionsCalculation calculation in exportableCalculations) + { + exportableWaveConditions.AddRange( + ExportableWaveConditionsFactory.CreateExportableWaveConditionsCollection( + calculation.Name, calculation.InputParameters, calculation.Output.ColumnsOutput, calculation.Output.BlocksOutput)); + } + return new WaveConditionsExporter(exportableWaveConditions, filePath); + } + + #endregion + #region ViewInfos #region FailureMechanismSectionResultContext @@ -279,11 +316,12 @@ if (!isNestedGroup) { - builder.AddCustomItem(generateCalculationsItem) - .AddSeparator(); + builder.AddCustomItem(generateCalculationsItem); } - builder.AddCreateCalculationGroupItem(group) + builder.AddExportItem() + .AddSeparator() + .AddCreateCalculationGroupItem(group) .AddCreateCalculationItem(nodeData, AddWaveConditionsCalculation); if (!isNestedGroup) @@ -489,6 +527,7 @@ ValidateAllDataAvailableAndGetErrorMessageForCalculation) .AddPerformCalculationItem(calculation, nodeData, PerformCalculation) .AddClearCalculationOutputItem(calculation) + .AddExportItem() .AddSeparator() .AddRenameItem() .AddDeleteItem()