From f743394d8b1ef2fe5647da25b940bab48ed172a1 Mon Sep 17 00:00:00 2001 From: Kristian Bendiksen Date: Wed, 2 Jul 2025 14:52:16 +0200 Subject: [PATCH] Histogram: provide more reasonable default for data sources. --- .../Histogram/RicNewHistogramCurveFeature.cpp | 1 + ...imEnsembleParameterHistogramDataSource.cpp | 22 ++++++++++++++++ .../RimEnsembleParameterHistogramDataSource.h | 2 ++ ...sembleSummaryVectorHistogramDataSource.cpp | 22 ++++++++++++++++ ...EnsembleSummaryVectorHistogramDataSource.h | 2 ++ .../RimGridStatisticsHistogramDataSource.cpp | 25 +++++++++++++++++++ .../RimGridStatisticsHistogramDataSource.h | 2 ++ .../Histogram/RimHistogramDataSource.h | 2 ++ 8 files changed, 78 insertions(+) diff --git a/ApplicationLibCode/Commands/Histogram/RicNewHistogramCurveFeature.cpp b/ApplicationLibCode/Commands/Histogram/RicNewHistogramCurveFeature.cpp index 064eaa7ca0..2fe24b7128 100644 --- a/ApplicationLibCode/Commands/Histogram/RicNewHistogramCurveFeature.cpp +++ b/ApplicationLibCode/Commands/Histogram/RicNewHistogramCurveFeature.cpp @@ -66,6 +66,7 @@ void RicNewHistogramCurveFeature::onActionTriggered( bool isChecked ) if ( plot ) { RimHistogramDataSource* dataSource = getDataSourceFromString( userData().toString() ); + dataSource->setDefaults(); RicHistogramPlotTools::createHistogramCurve( plot, dataSource ); } } diff --git a/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleParameterHistogramDataSource.cpp b/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleParameterHistogramDataSource.cpp index 6532de93e0..45f654a4d3 100644 --- a/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleParameterHistogramDataSource.cpp +++ b/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleParameterHistogramDataSource.cpp @@ -203,3 +203,25 @@ void RimEnsembleParameterHistogramDataSource::setEnsemble( RimSummaryEnsemble* e { m_ensemble = ensemble; } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimEnsembleParameterHistogramDataSource::setDefaults() +{ + std::vector ensembles = RimProject::current()->summaryEnsembles(); + if ( !ensembles.empty() ) + { + m_ensemble = ensembles[0]; + auto parameters = m_ensemble->variationSortedEnsembleParameters(); + // Find first valid numeric parameter + for ( const RigEnsembleParameter& p : m_ensemble->variationSortedEnsembleParameters() ) + { + if ( p.isNumeric() && p.isValid() ) + { + m_parameter = p.name; + break; + } + } + } +} diff --git a/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleParameterHistogramDataSource.h b/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleParameterHistogramDataSource.h index 3d418b48ee..0fae4e2a86 100644 --- a/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleParameterHistogramDataSource.h +++ b/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleParameterHistogramDataSource.h @@ -45,6 +45,8 @@ public: HistogramResult compute( RimHistogramPlot::GraphType graphType, RimHistogramPlot::FrequencyType frequencyType ) const override; + void setDefaults() override; + std::string name() const override; protected: diff --git a/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleSummaryVectorHistogramDataSource.cpp b/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleSummaryVectorHistogramDataSource.cpp index d77dfa98aa..1885c5ad74 100644 --- a/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleSummaryVectorHistogramDataSource.cpp +++ b/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleSummaryVectorHistogramDataSource.cpp @@ -303,3 +303,25 @@ QString RimEnsembleSummaryVectorHistogramDataSource::formatDateTime( const QDate RiaDefines::DateFormatComponents::DATE_FORMAT_YEAR_MONTH_DAY ); return RiaQDateTimeTools::toStringUsingApplicationLocale( dateTime, dateFormatString ); } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimEnsembleSummaryVectorHistogramDataSource::setDefaults() +{ + RimProject* proj = RimProject::current(); + + std::vector ensembles = proj->summaryEnsembles(); + if ( !ensembles.empty() ) + { + m_ensemble = ensembles[0]; + auto addr = RifEclipseSummaryAddress::fieldAddress( "FOPT" ); + setSummaryAddress( addr ); + std::set allTimeSteps = m_ensemble->ensembleTimeSteps(); + if ( !allTimeSteps.empty() ) + { + QDateTime dateTime = RiaQDateTimeTools::fromTime_t( *( allTimeSteps.rbegin() ) ); + setTimeStep( dateTime ); + } + } +} diff --git a/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleSummaryVectorHistogramDataSource.h b/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleSummaryVectorHistogramDataSource.h index 47b881cce3..27c9cfef17 100644 --- a/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleSummaryVectorHistogramDataSource.h +++ b/ApplicationLibCode/ProjectDataModel/Histogram/RimEnsembleSummaryVectorHistogramDataSource.h @@ -50,6 +50,8 @@ public: HistogramResult compute( RimHistogramPlot::GraphType graphType, RimHistogramPlot::FrequencyType frequencyType ) const override; + void setDefaults() override; + std::string name() const override; protected: diff --git a/ApplicationLibCode/ProjectDataModel/Histogram/RimGridStatisticsHistogramDataSource.cpp b/ApplicationLibCode/ProjectDataModel/Histogram/RimGridStatisticsHistogramDataSource.cpp index 4fbb55341f..e44ef84ab8 100644 --- a/ApplicationLibCode/ProjectDataModel/Histogram/RimGridStatisticsHistogramDataSource.cpp +++ b/ApplicationLibCode/ProjectDataModel/Histogram/RimGridStatisticsHistogramDataSource.cpp @@ -251,3 +251,28 @@ void RimGridStatisticsHistogramDataSource ::initAfterRead() m_property->setEclipseCase( eclipseCase ); } } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimGridStatisticsHistogramDataSource::setDefaults() +{ + RimProject* project = RimProject::current(); + if ( project ) + { + if ( !project->eclipseCases().empty() ) + { + RimEclipseCase* eclipseCase = project->eclipseCases().front(); + m_case = eclipseCase; + m_property->setEclipseCase( eclipseCase ); + + m_property->setResultType( RiaDefines::ResultCatType::STATIC_NATIVE ); + m_property->setResultVariable( "PORO" ); + + if ( eclipseCase && !eclipseCase->reservoirViews().empty() ) + { + m_cellFilterView.setValue( eclipseCase->reservoirViews().front() ); + } + } + } +} diff --git a/ApplicationLibCode/ProjectDataModel/Histogram/RimGridStatisticsHistogramDataSource.h b/ApplicationLibCode/ProjectDataModel/Histogram/RimGridStatisticsHistogramDataSource.h index 43a44ec0c9..1996297445 100644 --- a/ApplicationLibCode/ProjectDataModel/Histogram/RimGridStatisticsHistogramDataSource.h +++ b/ApplicationLibCode/ProjectDataModel/Histogram/RimGridStatisticsHistogramDataSource.h @@ -48,6 +48,8 @@ public: std::string name() const override; + void setDefaults() override; + protected: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; diff --git a/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramDataSource.h b/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramDataSource.h index b40771c3ca..78cb67b01e 100644 --- a/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramDataSource.h +++ b/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramDataSource.h @@ -59,6 +59,8 @@ public: virtual HistogramResult compute( RimHistogramPlot::GraphType graphType, RimHistogramPlot::FrequencyType frequencyType ) const = 0; + virtual void setDefaults() = 0; + virtual std::string name() const = 0; static std::vector computeHistogramBins( double min, double max, int numBins, RimHistogramPlot::GraphType graphType );