mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#6359 Improve context menu creation of correlation plots
This commit is contained in:
@@ -85,7 +85,7 @@ void RicNewAnalysisPlotFeature::onActionTriggered( bool isChecked )
|
|||||||
|
|
||||||
EnsemblePlotParams params = userData.value<EnsemblePlotParams>();
|
EnsemblePlotParams params = userData.value<EnsemblePlotParams>();
|
||||||
ensemble = params.ensemble;
|
ensemble = params.ensemble;
|
||||||
quantityName = params.quantityName;
|
quantityName = params.mainQuantityName;
|
||||||
timeStep = params.timeStep;
|
timeStep = params.timeStep;
|
||||||
|
|
||||||
newPlot = analysisPlotColl->createAnalysisPlot( ensemble, quantityName, timeStep );
|
newPlot = analysisPlotColl->createAnalysisPlot( ensemble, quantityName, timeStep );
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ void RicNewCorrelationMatrixPlotFeature::onActionTriggered( bool isChecked )
|
|||||||
}
|
}
|
||||||
|
|
||||||
RimSummaryCaseCollection* ensemble = nullptr;
|
RimSummaryCaseCollection* ensemble = nullptr;
|
||||||
|
std::vector<QString> includedQuantityNames;
|
||||||
std::time_t timeStep = 0;
|
std::time_t timeStep = 0;
|
||||||
|
|
||||||
RimCorrelationMatrixPlot* newPlot = nullptr;
|
RimCorrelationMatrixPlot* newPlot = nullptr;
|
||||||
@@ -84,10 +85,13 @@ void RicNewCorrelationMatrixPlotFeature::onActionTriggered( bool isChecked )
|
|||||||
correlationPlotColl = correlationPlotCollections.front();
|
correlationPlotColl = correlationPlotCollections.front();
|
||||||
|
|
||||||
EnsemblePlotParams params = userData.value<EnsemblePlotParams>();
|
EnsemblePlotParams params = userData.value<EnsemblePlotParams>();
|
||||||
ensemble = params.ensemble;
|
|
||||||
timeStep = params.timeStep;
|
|
||||||
|
|
||||||
newPlot = correlationPlotColl->createCorrelationMatrixPlot( ensemble, timeStep );
|
includedQuantityNames =
|
||||||
|
std::vector<QString>( params.includedQuantityNames.begin(), params.includedQuantityNames.end() );
|
||||||
|
ensemble = params.ensemble;
|
||||||
|
timeStep = params.timeStep;
|
||||||
|
|
||||||
|
newPlot = correlationPlotColl->createCorrelationMatrixPlot( ensemble, includedQuantityNames, timeStep );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ void RicNewCorrelationPlotFeature::onActionTriggered( bool isChecked )
|
|||||||
|
|
||||||
EnsemblePlotParams params = userData.value<EnsemblePlotParams>();
|
EnsemblePlotParams params = userData.value<EnsemblePlotParams>();
|
||||||
ensemble = params.ensemble;
|
ensemble = params.ensemble;
|
||||||
quantityName = params.quantityName;
|
quantityName = params.mainQuantityName;
|
||||||
timeStep = params.timeStep;
|
timeStep = params.timeStep;
|
||||||
|
|
||||||
newPlot = correlationPlotColl->createCorrelationPlot( ensemble, quantityName, timeStep );
|
newPlot = correlationPlotColl->createCorrelationPlot( ensemble, quantityName, timeStep );
|
||||||
@@ -116,7 +116,7 @@ void RicNewCorrelationPlotFeature::setupActionLook( QAction* actionToSetup )
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
EnsemblePlotParams::EnsemblePlotParams()
|
EnsemblePlotParams::EnsemblePlotParams()
|
||||||
: ensemble( nullptr )
|
: ensemble( nullptr )
|
||||||
, quantityName( "" )
|
, mainQuantityName( "" )
|
||||||
, ensembleParameter( "" )
|
, ensembleParameter( "" )
|
||||||
, timeStep( 0 )
|
, timeStep( 0 )
|
||||||
{
|
{
|
||||||
@@ -126,10 +126,12 @@ EnsemblePlotParams::EnsemblePlotParams()
|
|||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
EnsemblePlotParams::EnsemblePlotParams( RimSummaryCaseCollection* ensemble,
|
EnsemblePlotParams::EnsemblePlotParams( RimSummaryCaseCollection* ensemble,
|
||||||
const QString& quantityName,
|
const QStringList& includedQuantityNames,
|
||||||
|
const QString& mainQuantityName,
|
||||||
const std::time_t& timeStep )
|
const std::time_t& timeStep )
|
||||||
: ensemble( ensemble )
|
: ensemble( ensemble )
|
||||||
, quantityName( quantityName )
|
, includedQuantityNames( includedQuantityNames )
|
||||||
|
, mainQuantityName( mainQuantityName )
|
||||||
, ensembleParameter( "" )
|
, ensembleParameter( "" )
|
||||||
, timeStep( timeStep )
|
, timeStep( timeStep )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -28,14 +28,18 @@ class EnsemblePlotParams
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RimSummaryCaseCollection* ensemble;
|
RimSummaryCaseCollection* ensemble;
|
||||||
QString quantityName;
|
QStringList includedQuantityNames;
|
||||||
|
QString mainQuantityName;
|
||||||
QString ensembleParameter;
|
QString ensembleParameter;
|
||||||
std::time_t timeStep;
|
std::time_t timeStep;
|
||||||
|
|
||||||
EnsemblePlotParams();
|
EnsemblePlotParams();
|
||||||
EnsemblePlotParams( const EnsemblePlotParams& rhs ) = default;
|
EnsemblePlotParams( const EnsemblePlotParams& rhs ) = default;
|
||||||
|
|
||||||
EnsemblePlotParams( RimSummaryCaseCollection* ensemble, const QString& quantityName, const std::time_t& timeStep );
|
EnsemblePlotParams( RimSummaryCaseCollection* ensemble,
|
||||||
|
const QStringList& includedQuantityNames,
|
||||||
|
const QString& mainQuantityName,
|
||||||
|
const std::time_t& timeStep );
|
||||||
~EnsemblePlotParams() = default;
|
~EnsemblePlotParams() = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,8 @@ void RicNewCorrelationReportPlotFeature::onActionTriggered( bool isChecked )
|
|||||||
}
|
}
|
||||||
|
|
||||||
RimSummaryCaseCollection* ensemble = nullptr;
|
RimSummaryCaseCollection* ensemble = nullptr;
|
||||||
QString quantityName;
|
std::vector<QString> includedQuantityNames;
|
||||||
|
QString mainQuantityName;
|
||||||
std::time_t timeStep = 0;
|
std::time_t timeStep = 0;
|
||||||
|
|
||||||
RimCorrelationReportPlot* newPlot = nullptr;
|
RimCorrelationReportPlot* newPlot = nullptr;
|
||||||
@@ -84,10 +85,16 @@ void RicNewCorrelationReportPlotFeature::onActionTriggered( bool isChecked )
|
|||||||
|
|
||||||
EnsemblePlotParams params = userData.value<EnsemblePlotParams>();
|
EnsemblePlotParams params = userData.value<EnsemblePlotParams>();
|
||||||
ensemble = params.ensemble;
|
ensemble = params.ensemble;
|
||||||
quantityName = params.quantityName;
|
includedQuantityNames =
|
||||||
timeStep = params.timeStep;
|
std::vector<QString>( params.includedQuantityNames.begin(), params.includedQuantityNames.end() );
|
||||||
|
|
||||||
newPlot = correlationPlotColl->createCorrelationReportPlot( ensemble, quantityName, timeStep );
|
mainQuantityName = params.mainQuantityName;
|
||||||
|
timeStep = params.timeStep;
|
||||||
|
|
||||||
|
newPlot = correlationPlotColl->createCorrelationReportPlot( ensemble,
|
||||||
|
includedQuantityNames,
|
||||||
|
mainQuantityName,
|
||||||
|
timeStep );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ void RicNewParameterResultCrossPlotFeature::onActionTriggered( bool isChecked )
|
|||||||
|
|
||||||
EnsemblePlotParams params = userData.value<EnsemblePlotParams>();
|
EnsemblePlotParams params = userData.value<EnsemblePlotParams>();
|
||||||
ensemble = params.ensemble;
|
ensemble = params.ensemble;
|
||||||
quantityName = params.quantityName;
|
quantityName = params.mainQuantityName;
|
||||||
ensembleParameter = params.ensembleParameter;
|
ensembleParameter = params.ensembleParameter;
|
||||||
|
|
||||||
timeStep = params.timeStep;
|
timeStep = params.timeStep;
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ RimCorrelationPlot* RimCorrelationPlotCollection::createCorrelationPlot( bool de
|
|||||||
RimCorrelationPlot* plot = new RimCorrelationPlot();
|
RimCorrelationPlot* plot = new RimCorrelationPlot();
|
||||||
plot->setAsPlotMdiWindow();
|
plot->setAsPlotMdiWindow();
|
||||||
|
|
||||||
if ( defaultToFirstEnsembleFopt ) applyFirstEnsembleFieldAddressesToPlot( plot, "FOPT" );
|
if ( defaultToFirstEnsembleFopt ) applyFirstEnsembleFieldAddressesToPlot( plot, {"FOPT"} );
|
||||||
plot->selectAllParameters();
|
plot->selectAllParameters();
|
||||||
|
|
||||||
m_correlationPlots.push_back( plot );
|
m_correlationPlots.push_back( plot );
|
||||||
@@ -74,7 +74,7 @@ RimCorrelationPlot* RimCorrelationPlotCollection::createCorrelationPlot( RimSumm
|
|||||||
RimCorrelationPlot* plot = new RimCorrelationPlot();
|
RimCorrelationPlot* plot = new RimCorrelationPlot();
|
||||||
plot->setAsPlotMdiWindow();
|
plot->setAsPlotMdiWindow();
|
||||||
|
|
||||||
applyEnsembleFieldAndTimeStepToPlot( plot, ensemble, quantityName.toStdString(), timeStep );
|
applyEnsembleFieldAndTimeStepToPlot( plot, ensemble, {quantityName}, timeStep );
|
||||||
plot->selectAllParameters();
|
plot->selectAllParameters();
|
||||||
|
|
||||||
m_correlationPlots.push_back( plot );
|
m_correlationPlots.push_back( plot );
|
||||||
@@ -101,11 +101,12 @@ RimCorrelationMatrixPlot* RimCorrelationPlotCollection::createCorrelationMatrixP
|
|||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RimCorrelationMatrixPlot* RimCorrelationPlotCollection::createCorrelationMatrixPlot( RimSummaryCaseCollection* ensemble,
|
RimCorrelationMatrixPlot* RimCorrelationPlotCollection::createCorrelationMatrixPlot( RimSummaryCaseCollection* ensemble,
|
||||||
|
const std::vector<QString>& quantityNames,
|
||||||
std::time_t timeStep )
|
std::time_t timeStep )
|
||||||
{
|
{
|
||||||
RimCorrelationMatrixPlot* plot = new RimCorrelationMatrixPlot();
|
RimCorrelationMatrixPlot* plot = new RimCorrelationMatrixPlot();
|
||||||
plot->setAsPlotMdiWindow();
|
plot->setAsPlotMdiWindow();
|
||||||
applyEnsembleFieldAndTimeStepToPlot( plot, ensemble, "", timeStep );
|
applyEnsembleFieldAndTimeStepToPlot( plot, ensemble, quantityNames, timeStep );
|
||||||
plot->selectAllParameters();
|
plot->selectAllParameters();
|
||||||
|
|
||||||
m_correlationPlots.push_back( plot );
|
m_correlationPlots.push_back( plot );
|
||||||
@@ -120,7 +121,7 @@ RimParameterResultCrossPlot* RimCorrelationPlotCollection::createParameterResult
|
|||||||
{
|
{
|
||||||
RimParameterResultCrossPlot* plot = new RimParameterResultCrossPlot;
|
RimParameterResultCrossPlot* plot = new RimParameterResultCrossPlot;
|
||||||
plot->setAsPlotMdiWindow();
|
plot->setAsPlotMdiWindow();
|
||||||
if ( defaultToFirstEnsembleFopt ) applyFirstEnsembleFieldAddressesToPlot( plot, "FOPT" );
|
if ( defaultToFirstEnsembleFopt ) applyFirstEnsembleFieldAddressesToPlot( plot, {"FOPT"} );
|
||||||
|
|
||||||
m_correlationPlots.push_back( plot );
|
m_correlationPlots.push_back( plot );
|
||||||
return plot;
|
return plot;
|
||||||
@@ -136,7 +137,7 @@ RimParameterResultCrossPlot* RimCorrelationPlotCollection::createParameterResult
|
|||||||
{
|
{
|
||||||
RimParameterResultCrossPlot* plot = new RimParameterResultCrossPlot;
|
RimParameterResultCrossPlot* plot = new RimParameterResultCrossPlot;
|
||||||
plot->setAsPlotMdiWindow();
|
plot->setAsPlotMdiWindow();
|
||||||
applyEnsembleFieldAndTimeStepToPlot( plot, ensemble, quantityName.toStdString(), timeStep );
|
applyEnsembleFieldAndTimeStepToPlot( plot, ensemble, {quantityName}, timeStep );
|
||||||
plot->setEnsembleParameter( paramName );
|
plot->setEnsembleParameter( paramName );
|
||||||
|
|
||||||
m_correlationPlots.push_back( plot );
|
m_correlationPlots.push_back( plot );
|
||||||
@@ -151,7 +152,7 @@ RimCorrelationReportPlot*
|
|||||||
{
|
{
|
||||||
RimCorrelationReportPlot* report = new RimCorrelationReportPlot;
|
RimCorrelationReportPlot* report = new RimCorrelationReportPlot;
|
||||||
report->setAsPlotMdiWindow();
|
report->setAsPlotMdiWindow();
|
||||||
if ( defaultToFirstEnsembleFopt ) applyFirstEnsembleFieldAddressesToReport( report, "FOPT" );
|
if ( defaultToFirstEnsembleFopt ) applyFirstEnsembleFieldAddressesToReport( report, {"FOPT"}, "FOPT" );
|
||||||
report->matrixPlot()->selectAllParameters();
|
report->matrixPlot()->selectAllParameters();
|
||||||
report->correlationPlot()->selectAllParameters();
|
report->correlationPlot()->selectAllParameters();
|
||||||
m_correlationReports.push_back( report );
|
m_correlationReports.push_back( report );
|
||||||
@@ -161,13 +162,15 @@ RimCorrelationReportPlot*
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RimCorrelationReportPlot* RimCorrelationPlotCollection::createCorrelationReportPlot( RimSummaryCaseCollection* ensemble,
|
RimCorrelationReportPlot*
|
||||||
const QString& quantityName,
|
RimCorrelationPlotCollection::createCorrelationReportPlot( RimSummaryCaseCollection* ensemble,
|
||||||
std::time_t timeStep )
|
const std::vector<QString>& matrixQuantityNames,
|
||||||
|
const QString& tornadoAndCrossPlotQuantityName,
|
||||||
|
std::time_t timeStep )
|
||||||
{
|
{
|
||||||
RimCorrelationReportPlot* report = new RimCorrelationReportPlot;
|
RimCorrelationReportPlot* report = new RimCorrelationReportPlot;
|
||||||
report->setAsPlotMdiWindow();
|
report->setAsPlotMdiWindow();
|
||||||
applyEnsembleFieldAndTimeStepToReport( report, ensemble, quantityName.toStdString(), timeStep );
|
applyEnsembleFieldAndTimeStepToReport( report, ensemble, matrixQuantityNames, tornadoAndCrossPlotQuantityName, timeStep );
|
||||||
report->matrixPlot()->selectAllParameters();
|
report->matrixPlot()->selectAllParameters();
|
||||||
report->correlationPlot()->selectAllParameters();
|
report->correlationPlot()->selectAllParameters();
|
||||||
m_correlationReports.push_back( report );
|
m_correlationReports.push_back( report );
|
||||||
@@ -211,7 +214,7 @@ void RimCorrelationPlotCollection::deleteAllChildObjects()
|
|||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimCorrelationPlotCollection::applyFirstEnsembleFieldAddressesToPlot( RimAbstractCorrelationPlot* plot,
|
void RimCorrelationPlotCollection::applyFirstEnsembleFieldAddressesToPlot( RimAbstractCorrelationPlot* plot,
|
||||||
const std::string& quantityName /*= "FOPT" */ )
|
const std::vector<QString>& quantityNames /*= {} */ )
|
||||||
{
|
{
|
||||||
std::vector<RimSummaryCaseCollection*> ensembles;
|
std::vector<RimSummaryCaseCollection*> ensembles;
|
||||||
RimProject::current()->descendantsIncludingThisOfType( ensembles );
|
RimProject::current()->descendantsIncludingThisOfType( ensembles );
|
||||||
@@ -221,12 +224,10 @@ void RimCorrelationPlotCollection::applyFirstEnsembleFieldAddressesToPlot( RimAb
|
|||||||
std::vector<RiaSummaryCurveDefinition> curveDefs;
|
std::vector<RiaSummaryCurveDefinition> curveDefs;
|
||||||
for ( auto address : allAddresses )
|
for ( auto address : allAddresses )
|
||||||
{
|
{
|
||||||
if ( address.category() == RifEclipseSummaryAddress::SUMMARY_FIELD )
|
auto it = std::find( quantityNames.begin(), quantityNames.end(), QString::fromStdString( address.uiText() ) );
|
||||||
|
if ( it != quantityNames.end() || quantityNames.empty() )
|
||||||
{
|
{
|
||||||
if ( quantityName.empty() || quantityName == address.quantityName() )
|
curveDefs.push_back( RiaSummaryCurveDefinition( nullptr, address, ensembles.front() ) );
|
||||||
{
|
|
||||||
curveDefs.push_back( RiaSummaryCurveDefinition( nullptr, address, ensembles.front() ) );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
plot->setCurveDefinitions( curveDefs );
|
plot->setCurveDefinitions( curveDefs );
|
||||||
@@ -244,7 +245,7 @@ void RimCorrelationPlotCollection::applyFirstEnsembleFieldAddressesToPlot( RimAb
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimCorrelationPlotCollection::applyEnsembleFieldAndTimeStepToPlot( RimAbstractCorrelationPlot* plot,
|
void RimCorrelationPlotCollection::applyEnsembleFieldAndTimeStepToPlot( RimAbstractCorrelationPlot* plot,
|
||||||
RimSummaryCaseCollection* ensemble,
|
RimSummaryCaseCollection* ensemble,
|
||||||
const std::string& quantityName,
|
const std::vector<QString>& quantityNames,
|
||||||
std::time_t timeStep )
|
std::time_t timeStep )
|
||||||
{
|
{
|
||||||
if ( ensemble )
|
if ( ensemble )
|
||||||
@@ -253,12 +254,10 @@ void RimCorrelationPlotCollection::applyEnsembleFieldAndTimeStepToPlot( RimAbstr
|
|||||||
std::vector<RiaSummaryCurveDefinition> curveDefs;
|
std::vector<RiaSummaryCurveDefinition> curveDefs;
|
||||||
for ( auto address : allAddresses )
|
for ( auto address : allAddresses )
|
||||||
{
|
{
|
||||||
if ( address.category() == RifEclipseSummaryAddress::SUMMARY_FIELD )
|
auto it = std::find( quantityNames.begin(), quantityNames.end(), QString::fromStdString( address.uiText() ) );
|
||||||
|
if ( it != quantityNames.end() || quantityNames.empty() )
|
||||||
{
|
{
|
||||||
if ( quantityName.empty() || quantityName == address.quantityName() )
|
curveDefs.push_back( RiaSummaryCurveDefinition( nullptr, address, ensemble ) );
|
||||||
{
|
|
||||||
curveDefs.push_back( RiaSummaryCurveDefinition( nullptr, address, ensemble ) );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
plot->setCurveDefinitions( curveDefs );
|
plot->setCurveDefinitions( curveDefs );
|
||||||
@@ -270,7 +269,8 @@ void RimCorrelationPlotCollection::applyEnsembleFieldAndTimeStepToPlot( RimAbstr
|
|||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimCorrelationPlotCollection::applyFirstEnsembleFieldAddressesToReport( RimCorrelationReportPlot* plot,
|
void RimCorrelationPlotCollection::applyFirstEnsembleFieldAddressesToReport( RimCorrelationReportPlot* plot,
|
||||||
const std::string& quantityName /*= "" */ )
|
const std::vector<QString>& matrixQuantityNames,
|
||||||
|
const QString& tornadoAndCrossPlotQuantityName )
|
||||||
{
|
{
|
||||||
std::vector<RimSummaryCaseCollection*> ensembles;
|
std::vector<RimSummaryCaseCollection*> ensembles;
|
||||||
RimProject::current()->descendantsIncludingThisOfType( ensembles );
|
RimProject::current()->descendantsIncludingThisOfType( ensembles );
|
||||||
@@ -281,16 +281,21 @@ void RimCorrelationPlotCollection::applyFirstEnsembleFieldAddressesToReport( Rim
|
|||||||
std::vector<RiaSummaryCurveDefinition> curveDefsTornadoAndCrossPlot;
|
std::vector<RiaSummaryCurveDefinition> curveDefsTornadoAndCrossPlot;
|
||||||
for ( auto address : allAddresses )
|
for ( auto address : allAddresses )
|
||||||
{
|
{
|
||||||
if ( address.category() == RifEclipseSummaryAddress::SUMMARY_FIELD )
|
auto it = std::find( matrixQuantityNames.begin(),
|
||||||
|
matrixQuantityNames.end(),
|
||||||
|
QString::fromStdString( address.uiText() ) );
|
||||||
|
if ( it != matrixQuantityNames.end() || matrixQuantityNames.empty() )
|
||||||
{
|
{
|
||||||
curveDefsMatrix.push_back( RiaSummaryCurveDefinition( nullptr, address, ensembles.front() ) );
|
curveDefsMatrix.push_back( RiaSummaryCurveDefinition( nullptr, address, ensembles.front() ) );
|
||||||
if ( quantityName.empty() || quantityName == address.quantityName() )
|
}
|
||||||
{
|
|
||||||
curveDefsTornadoAndCrossPlot.push_back(
|
if ( tornadoAndCrossPlotQuantityName.isEmpty() ||
|
||||||
RiaSummaryCurveDefinition( nullptr, address, ensembles.front() ) );
|
tornadoAndCrossPlotQuantityName == QString::fromStdString( address.uiText() ) )
|
||||||
}
|
{
|
||||||
|
curveDefsTornadoAndCrossPlot.push_back( RiaSummaryCurveDefinition( nullptr, address, ensembles.front() ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
plot->matrixPlot()->setCurveDefinitions( curveDefsMatrix );
|
plot->matrixPlot()->setCurveDefinitions( curveDefsMatrix );
|
||||||
plot->correlationPlot()->setCurveDefinitions( curveDefsTornadoAndCrossPlot );
|
plot->correlationPlot()->setCurveDefinitions( curveDefsTornadoAndCrossPlot );
|
||||||
plot->crossPlot()->setCurveDefinitions( curveDefsTornadoAndCrossPlot );
|
plot->crossPlot()->setCurveDefinitions( curveDefsTornadoAndCrossPlot );
|
||||||
@@ -301,10 +306,11 @@ void RimCorrelationPlotCollection::applyFirstEnsembleFieldAddressesToReport( Rim
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimCorrelationPlotCollection::applyEnsembleFieldAndTimeStepToReport( RimCorrelationReportPlot* plot,
|
void RimCorrelationPlotCollection::applyEnsembleFieldAndTimeStepToReport( RimCorrelationReportPlot* plot,
|
||||||
RimSummaryCaseCollection* ensemble,
|
RimSummaryCaseCollection* ensemble,
|
||||||
const std::string& quantityName,
|
const std::vector<QString>& matrixQuantityNames,
|
||||||
std::time_t timeStep )
|
const QString& tornadoAndCrossPlotQuantityName,
|
||||||
|
std::time_t timeStep )
|
||||||
{
|
{
|
||||||
if ( ensemble )
|
if ( ensemble )
|
||||||
{
|
{
|
||||||
@@ -313,13 +319,18 @@ void RimCorrelationPlotCollection::applyEnsembleFieldAndTimeStepToReport( RimCor
|
|||||||
std::vector<RiaSummaryCurveDefinition> curveDefsTornadoAndCrossPlot;
|
std::vector<RiaSummaryCurveDefinition> curveDefsTornadoAndCrossPlot;
|
||||||
for ( auto address : allAddresses )
|
for ( auto address : allAddresses )
|
||||||
{
|
{
|
||||||
if ( address.category() == RifEclipseSummaryAddress::SUMMARY_FIELD )
|
auto it = std::find( matrixQuantityNames.begin(),
|
||||||
|
matrixQuantityNames.end(),
|
||||||
|
QString::fromStdString( address.uiText() ) );
|
||||||
|
if ( it != matrixQuantityNames.end() || matrixQuantityNames.empty() )
|
||||||
{
|
{
|
||||||
curveDefsMatrix.push_back( RiaSummaryCurveDefinition( nullptr, address, ensemble ) );
|
curveDefsMatrix.push_back( RiaSummaryCurveDefinition( nullptr, address, ensemble ) );
|
||||||
if ( quantityName.empty() || quantityName == address.quantityName() )
|
}
|
||||||
{
|
|
||||||
curveDefsTornadoAndCrossPlot.push_back( RiaSummaryCurveDefinition( nullptr, address, ensemble ) );
|
if ( tornadoAndCrossPlotQuantityName.isEmpty() ||
|
||||||
}
|
tornadoAndCrossPlotQuantityName == QString::fromStdString( address.uiText() ) )
|
||||||
|
{
|
||||||
|
curveDefsTornadoAndCrossPlot.push_back( RiaSummaryCurveDefinition( nullptr, address, ensemble ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
plot->matrixPlot()->setCurveDefinitions( curveDefsMatrix );
|
plot->matrixPlot()->setCurveDefinitions( curveDefsMatrix );
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
#include "cafPdmObject.h"
|
#include "cafPdmObject.h"
|
||||||
|
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
class RimAbstractCorrelationPlot;
|
class RimAbstractCorrelationPlot;
|
||||||
class RimCorrelationPlot;
|
class RimCorrelationPlot;
|
||||||
@@ -47,7 +48,9 @@ public:
|
|||||||
createCorrelationPlot( RimSummaryCaseCollection* ensemble, const QString& quantityName, std::time_t timeStep );
|
createCorrelationPlot( RimSummaryCaseCollection* ensemble, const QString& quantityName, std::time_t timeStep );
|
||||||
|
|
||||||
RimCorrelationMatrixPlot* createCorrelationMatrixPlot( bool defaultToFirstEnsembleField = true );
|
RimCorrelationMatrixPlot* createCorrelationMatrixPlot( bool defaultToFirstEnsembleField = true );
|
||||||
RimCorrelationMatrixPlot* createCorrelationMatrixPlot( RimSummaryCaseCollection* ensemble, std::time_t timeStep );
|
RimCorrelationMatrixPlot* createCorrelationMatrixPlot( RimSummaryCaseCollection* ensemble,
|
||||||
|
const std::vector<QString>& quantityNames,
|
||||||
|
std::time_t timeStep );
|
||||||
|
|
||||||
RimParameterResultCrossPlot* createParameterResultCrossPlot( bool defaultToFirstEnsembleFopt = true );
|
RimParameterResultCrossPlot* createParameterResultCrossPlot( bool defaultToFirstEnsembleFopt = true );
|
||||||
RimParameterResultCrossPlot* createParameterResultCrossPlot( RimSummaryCaseCollection* ensemble,
|
RimParameterResultCrossPlot* createParameterResultCrossPlot( RimSummaryCaseCollection* ensemble,
|
||||||
@@ -56,9 +59,10 @@ public:
|
|||||||
std::time_t timeStep );
|
std::time_t timeStep );
|
||||||
|
|
||||||
RimCorrelationReportPlot* createCorrelationReportPlot( bool defaultToFirstEnsembleFopt = true );
|
RimCorrelationReportPlot* createCorrelationReportPlot( bool defaultToFirstEnsembleFopt = true );
|
||||||
RimCorrelationReportPlot* createCorrelationReportPlot( RimSummaryCaseCollection* ensemble,
|
RimCorrelationReportPlot* createCorrelationReportPlot( RimSummaryCaseCollection* ensemble,
|
||||||
const QString& quantityName,
|
const std::vector<QString>& matrixQuantityNames,
|
||||||
std::time_t timeStep );
|
const QString& tornadoAndCrossPlotQuantityName,
|
||||||
|
std::time_t timeStep );
|
||||||
|
|
||||||
void removePlot( RimAbstractCorrelationPlot* correlationPlot );
|
void removePlot( RimAbstractCorrelationPlot* correlationPlot );
|
||||||
void removeReport( RimCorrelationReportPlot* correlationReport );
|
void removeReport( RimCorrelationReportPlot* correlationReport );
|
||||||
@@ -69,16 +73,20 @@ public:
|
|||||||
void deleteAllChildObjects();
|
void deleteAllChildObjects();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void applyFirstEnsembleFieldAddressesToPlot( RimAbstractCorrelationPlot* plot, const std::string& quantityName = "" );
|
void applyFirstEnsembleFieldAddressesToPlot( RimAbstractCorrelationPlot* plot,
|
||||||
|
const std::vector<QString>& quantityNames = {} );
|
||||||
void applyEnsembleFieldAndTimeStepToPlot( RimAbstractCorrelationPlot* plot,
|
void applyEnsembleFieldAndTimeStepToPlot( RimAbstractCorrelationPlot* plot,
|
||||||
RimSummaryCaseCollection* ensemble,
|
RimSummaryCaseCollection* ensemble,
|
||||||
const std::string& quantityName,
|
const std::vector<QString>& quantityNames,
|
||||||
std::time_t timeStep );
|
std::time_t timeStep );
|
||||||
void applyFirstEnsembleFieldAddressesToReport( RimCorrelationReportPlot* plot, const std::string& quantityName = "" );
|
void applyFirstEnsembleFieldAddressesToReport( RimCorrelationReportPlot* plot,
|
||||||
void applyEnsembleFieldAndTimeStepToReport( RimCorrelationReportPlot* plot,
|
const std::vector<QString>& matrixQuantityNames,
|
||||||
RimSummaryCaseCollection* ensemble,
|
const QString& tornadoAndCrossPlotQuantityName );
|
||||||
const std::string& quantityName,
|
void applyEnsembleFieldAndTimeStepToReport( RimCorrelationReportPlot* plot,
|
||||||
std::time_t timeStep );
|
RimSummaryCaseCollection* ensemble,
|
||||||
|
const std::vector<QString>& matrixQuantityNames,
|
||||||
|
const QString& tornadoAndCrossPlotQuantityName,
|
||||||
|
std::time_t timeStep );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmChildArrayField<RimAbstractCorrelationPlot*> m_correlationPlots;
|
caf::PdmChildArrayField<RimAbstractCorrelationPlot*> m_correlationPlots;
|
||||||
|
|||||||
@@ -961,7 +961,7 @@ void RimWellPltPlot::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimWellPltPlot::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName )
|
void RimWellPltPlot::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName )
|
||||||
{
|
{
|
||||||
uiTreeOrdering.skipRemainingChildren( true );
|
// uiTreeOrdering.skipRemainingChildren( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -199,18 +199,42 @@ void RiuSummaryQwtPlot::contextMenuEvent( QContextMenuEvent* event )
|
|||||||
{
|
{
|
||||||
std::time_t timeStep = summaryCurve->timeStepsY()[closestCurvePoint];
|
std::time_t timeStep = summaryCurve->timeStepsY()[closestCurvePoint];
|
||||||
|
|
||||||
RimEnsembleCurveSet* ensembleCurveSet = nullptr;
|
RimSummaryCaseCollection* ensemble = nullptr;
|
||||||
summaryCurve->firstAncestorOrThisOfType( ensembleCurveSet );
|
QString clickedQuantityName;
|
||||||
|
QStringList allQuantityNamesInPlot;
|
||||||
|
|
||||||
if ( ensembleCurveSet )
|
RimEnsembleCurveSet* clickedEnsembleCurveSet = nullptr;
|
||||||
|
summaryCurve->firstAncestorOrThisOfType( clickedEnsembleCurveSet );
|
||||||
|
|
||||||
|
if ( clickedEnsembleCurveSet )
|
||||||
{
|
{
|
||||||
RimSummaryCaseCollection* ensemble = ensembleCurveSet->summaryCaseCollection();
|
ensemble = clickedEnsembleCurveSet->summaryCaseCollection();
|
||||||
if ( ensemble && ensemble->isEnsemble() )
|
if ( ensemble && ensemble->isEnsemble() )
|
||||||
{
|
{
|
||||||
EnsemblePlotParams params( ensemble,
|
clickedQuantityName = QString::fromStdString( clickedEnsembleCurveSet->summaryAddress().uiText() );
|
||||||
QString::fromStdString(
|
}
|
||||||
ensembleCurveSet->summaryAddress().quantityName() ),
|
}
|
||||||
timeStep );
|
|
||||||
|
if ( distanceFromClick > 20 )
|
||||||
|
{
|
||||||
|
RimSummaryPlot* summaryPlot = static_cast<RimSummaryPlot*>( plotDefinition() );
|
||||||
|
std::vector<RimEnsembleCurveSet*> allCurveSetsInPlot;
|
||||||
|
summaryPlot->descendantsOfType( allCurveSetsInPlot );
|
||||||
|
for ( auto curveSet : allCurveSetsInPlot )
|
||||||
|
{
|
||||||
|
allQuantityNamesInPlot.push_back( QString::fromStdString( curveSet->summaryAddress().uiText() ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
allQuantityNamesInPlot.push_back( clickedQuantityName );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !clickedQuantityName.isEmpty() || !allQuantityNamesInPlot.isEmpty() )
|
||||||
|
{
|
||||||
|
if ( ensemble && ensemble->isEnsemble() )
|
||||||
|
{
|
||||||
|
EnsemblePlotParams params( ensemble, allQuantityNamesInPlot, clickedQuantityName, timeStep );
|
||||||
QVariant variant = QVariant::fromValue( params );
|
QVariant variant = QVariant::fromValue( params );
|
||||||
|
|
||||||
menuBuilder.addCmdFeatureWithUserData( "RicNewAnalysisPlotFeature", "New Analysis Plot", variant );
|
menuBuilder.addCmdFeatureWithUserData( "RicNewAnalysisPlotFeature", "New Analysis Plot", variant );
|
||||||
@@ -218,32 +242,38 @@ void RiuSummaryQwtPlot::contextMenuEvent( QContextMenuEvent* event )
|
|||||||
menuBuilder.subMenuStart( "Create Correlation Plot From Curve Point",
|
menuBuilder.subMenuStart( "Create Correlation Plot From Curve Point",
|
||||||
*caf::IconProvider( ":/CorrelationPlots16x16.png" ).icon() );
|
*caf::IconProvider( ":/CorrelationPlots16x16.png" ).icon() );
|
||||||
{
|
{
|
||||||
menuBuilder.addCmdFeatureWithUserData( "RicNewCorrelationPlotFeature",
|
if ( !clickedQuantityName.isEmpty() )
|
||||||
"New Tornado Plot",
|
{
|
||||||
variant );
|
menuBuilder.addCmdFeatureWithUserData( "RicNewCorrelationPlotFeature",
|
||||||
|
"New Tornado Plot",
|
||||||
|
variant );
|
||||||
|
}
|
||||||
menuBuilder.addCmdFeatureWithUserData( "RicNewCorrelationMatrixPlotFeature",
|
menuBuilder.addCmdFeatureWithUserData( "RicNewCorrelationMatrixPlotFeature",
|
||||||
"New Matrix Plot",
|
"New Matrix Plot",
|
||||||
variant );
|
variant );
|
||||||
menuBuilder.addCmdFeatureWithUserData( "RicNewCorrelationReportPlotFeature",
|
menuBuilder.addCmdFeatureWithUserData( "RicNewCorrelationReportPlotFeature",
|
||||||
"New Report Plot",
|
"New Report Plot",
|
||||||
variant );
|
variant );
|
||||||
menuBuilder.subMenuStart( "Cross Plots",
|
if ( !clickedQuantityName.isEmpty() )
|
||||||
*caf::IconProvider( ":/CorrelationCrossPlot16x16.png" ).icon() );
|
|
||||||
std::vector<EnsembleParameter> ensembleParameters =
|
|
||||||
ensemble->variationSortedEnsembleParameters();
|
|
||||||
for ( const EnsembleParameter& param : ensembleParameters )
|
|
||||||
{
|
{
|
||||||
if ( param.variationBin >= (int)EnsembleParameter::LOW_VARIATION )
|
menuBuilder.subMenuStart( "Cross Plots",
|
||||||
|
*caf::IconProvider( ":/CorrelationCrossPlot16x16.png" ).icon() );
|
||||||
|
std::vector<EnsembleParameter> ensembleParameters =
|
||||||
|
ensemble->variationSortedEnsembleParameters();
|
||||||
|
for ( const EnsembleParameter& param : ensembleParameters )
|
||||||
{
|
{
|
||||||
params.ensembleParameter = param.name;
|
if ( param.variationBin >= (int)EnsembleParameter::LOW_VARIATION )
|
||||||
variant = QVariant::fromValue( params );
|
{
|
||||||
menuBuilder.addCmdFeatureWithUserData( "RicNewParameterResultCrossPlotFeature",
|
params.ensembleParameter = param.name;
|
||||||
QString( "New Cross Plot Against %1" )
|
variant = QVariant::fromValue( params );
|
||||||
.arg( param.uiName() ),
|
menuBuilder.addCmdFeatureWithUserData( "RicNewParameterResultCrossPlotFeature",
|
||||||
variant );
|
QString( "New Cross Plot Against %1" )
|
||||||
|
.arg( param.uiName() ),
|
||||||
|
variant );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
menuBuilder.subMenuEnd();
|
||||||
}
|
}
|
||||||
menuBuilder.subMenuEnd();
|
|
||||||
}
|
}
|
||||||
menuBuilder.subMenuEnd();
|
menuBuilder.subMenuEnd();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user