diff --git a/ApplicationLibCode/ProjectDataModel/RimStatisticsContourMap.cpp b/ApplicationLibCode/ProjectDataModel/RimStatisticsContourMap.cpp index 202b56ae96..17b3f1dda3 100644 --- a/ApplicationLibCode/ProjectDataModel/RimStatisticsContourMap.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimStatisticsContourMap.cpp @@ -34,6 +34,7 @@ #include "RimEclipseContourMapProjection.h" #include "RimEclipseResultDefinition.h" #include "RimProject.h" +#include "RimTools.h" #include "cafPdmUiDoubleSliderEditor.h" #include "cafPdmUiPushButtonEditor.h" @@ -53,6 +54,10 @@ RimStatisticsContourMap::RimStatisticsContourMap() CAF_PDM_InitField( &m_relativeSampleSpacing, "SampleSpacing", 0.9, "Sample Spacing Factor" ); m_relativeSampleSpacing.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + CAF_PDM_InitFieldNoDefault( &m_resultAggregation, "ResultAggregation", "Result Aggregation" ); + + CAF_PDM_InitField( &m_timeStep, "TimeStep", 0, "Time Step" ); + CAF_PDM_InitFieldNoDefault( &m_resultDefinition, "ResultDefinition", "" ); m_resultDefinition.uiCapability()->setUiTreeChildrenHidden( true ); m_resultDefinition = new RimEclipseResultDefinition; @@ -71,6 +76,8 @@ RimStatisticsContourMap::RimStatisticsContourMap() void RimStatisticsContourMap::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) { uiOrdering.add( &m_relativeSampleSpacing ); + uiOrdering.add( &m_resultAggregation ); + uiOrdering.add( &m_timeStep ); caf::PdmUiGroup* resultDefinitionGroup = uiOrdering.addNewGroup( "Result Definition" ); m_resultDefinition->uiOrdering( uiConfigName, *resultDefinitionGroup ); @@ -98,6 +105,26 @@ void RimStatisticsContourMap::fieldChangedByUi( const caf::PdmFieldHandle* chang } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QList RimStatisticsContourMap::calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) +{ + QList options; + + if ( fieldNeedingOptions == &m_timeStep ) + { + auto ensemble = firstAncestorOrThisOfType(); + if ( ensemble && !ensemble->cases().empty() ) + { + RimEclipseCase* firstEclipseCase = ensemble->cases().front(); + RimTools::timeStepsForCase( firstEclipseCase, &options ); + } + } + + return options; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -150,8 +177,7 @@ void RimStatisticsContourMap::computeStatistics() RimEclipseCase* firstEclipseCase = ensemble->cases().front(); firstEclipseCase->ensureReservoirCaseIsOpen(); - int timeStep = 0; - RigContourMapCalculator::ResultAggregationType resultAggregation = RigContourMapCalculator::ResultAggregationType::MEAN; + RigContourMapCalculator::ResultAggregationType resultAggregation = m_resultAggregation(); cvf::BoundingBox gridBoundingBox = firstEclipseCase->activeCellsBoundingBox(); @@ -186,7 +212,7 @@ void RimStatisticsContourMap::computeStatistics() contourMapProjection.generateGridMapping( resultAggregation, {} ); std::vector result = - contourMapProjection.generateResults( m_resultDefinition()->eclipseResultAddress(), resultAggregation, timeStep ); + contourMapProjection.generateResults( m_resultDefinition()->eclipseResultAddress(), resultAggregation, m_timeStep() ); results.push_back( result ); } } diff --git a/ApplicationLibCode/ProjectDataModel/RimStatisticsContourMap.h b/ApplicationLibCode/ProjectDataModel/RimStatisticsContourMap.h index 325c7d9fd7..ae4100e801 100644 --- a/ApplicationLibCode/ProjectDataModel/RimStatisticsContourMap.h +++ b/ApplicationLibCode/ProjectDataModel/RimStatisticsContourMap.h @@ -21,6 +21,8 @@ #include "cafPdmField.h" #include "cafPdmObject.h" +#include "RimContourMapProjection.h" + class RimEclipseCase; class RimEclipseResultDefinition; @@ -43,11 +45,14 @@ protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void initAfterRead() override; + QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; private: void computeStatistics(); - caf::PdmField m_relativeSampleSpacing; + caf::PdmField m_relativeSampleSpacing; + caf::PdmField m_resultAggregation; + caf::PdmField m_timeStep; caf::PdmChildField m_resultDefinition; caf::PdmField m_computeStatisticsButton;