Keep source step dimension when saving/loading multiplots, including templates

This commit is contained in:
jonjenssen 2022-06-03 15:54:00 +02:00 committed by jonjenssen
parent 6931d46b75
commit ed392e6300
9 changed files with 121 additions and 84 deletions

View File

@ -430,9 +430,9 @@ RimSummaryMultiPlot*
RimProject* project = RimProject::current();
auto* plotCollection = project->mainPlotCollection()->summaryMultiPlotCollection();
auto* plotWindow = new RimSummaryMultiPlot();
plotWindow->setAsPlotMdiWindow();
plotCollection->addSummaryMultiPlot( plotWindow );
auto* summaryMultiPlot = new RimSummaryMultiPlot();
summaryMultiPlot->setAsPlotMdiWindow();
plotCollection->addSummaryMultiPlot( summaryMultiPlot );
RimSummaryPlot* plot = new RimSummaryPlot();
plot->setAsPlotMdiWindow();
@ -453,15 +453,17 @@ RimSummaryMultiPlot*
plotCollection->updateConnectedEditors();
appendPlotsToSummaryMultiPlot( plotWindow, { plot } );
appendPlotsToSummaryMultiPlot( summaryMultiPlot, { plot } );
summaryMultiPlot->setDefaultRangeAggregationSteppingDimension();
plotCollection->updateAllRequiredEditors();
plotWindow->loadDataAndUpdate();
plotWindow->updateAllRequiredEditors();
summaryMultiPlot->loadDataAndUpdate();
summaryMultiPlot->updateAllRequiredEditors();
RiuPlotMainWindowTools::selectAsCurrentItem( plot );
return plotWindow;
return summaryMultiPlot;
}
//--------------------------------------------------------------------------------------------------
@ -505,21 +507,23 @@ RimSummaryMultiPlot* RicSummaryPlotBuilder::createAndAppendSingleSummaryMultiPlo
RimProject* project = RimProject::current();
auto* plotCollection = project->mainPlotCollection()->summaryMultiPlotCollection();
auto* plotWindow = new RimSummaryMultiPlot();
plotWindow->setColumnCount( RiaDefines::ColumnCount::COLUMNS_1 );
plotWindow->setRowCount( RiaDefines::RowCount::ROWS_1 );
plotWindow->setAsPlotMdiWindow();
plotCollection->addSummaryMultiPlot( plotWindow );
auto* summaryMultiPlot = new RimSummaryMultiPlot();
summaryMultiPlot->setColumnCount( RiaDefines::ColumnCount::COLUMNS_1 );
summaryMultiPlot->setRowCount( RiaDefines::RowCount::ROWS_1 );
summaryMultiPlot->setAsPlotMdiWindow();
plotCollection->addSummaryMultiPlot( summaryMultiPlot );
appendPlotsToSummaryMultiPlot( plotWindow, { plot } );
appendPlotsToSummaryMultiPlot( summaryMultiPlot, { plot } );
summaryMultiPlot->setDefaultRangeAggregationSteppingDimension();
plotCollection->updateAllRequiredEditors();
plotWindow->loadDataAndUpdate();
plotWindow->updateAllRequiredEditors();
summaryMultiPlot->loadDataAndUpdate();
summaryMultiPlot->updateAllRequiredEditors();
RiuPlotMainWindowTools::selectAsCurrentItem( plot );
return plotWindow;
return summaryMultiPlot;
}
//--------------------------------------------------------------------------------------------------

View File

@ -92,6 +92,8 @@ void RicSaveMultiPlotTemplateFeature::onActionTriggered( bool isChecked )
auto plot = selectedSummaryPlot();
if ( !plot ) return;
plot->storeStepDimensionFromToolbar();
QString ext = ".rpt";
if ( selectedSummaryPlot()->curveSets().size() > 0 ) ext = ".erpt";

View File

@ -170,6 +170,7 @@ RimSummaryMultiPlot* RicSummaryPlotTemplateTools::create( const QString& fileNam
regions );
newSummaryPlot->initAfterReadRecursively();
newSummaryPlot->loadDataAndUpdate();
collections->updateConnectedEditors();
return newSummaryPlot;

View File

@ -17,3 +17,22 @@
/////////////////////////////////////////////////////////////////////////////////
#include "RimSummaryDataSourceStepping.h"
#include "cafAppEnum.h"
namespace caf
{
template <>
void AppEnum<RimSummaryDataSourceStepping::SourceSteppingDimension>::setUp()
{
addItem( RimSummaryDataSourceStepping::SourceSteppingDimension::VECTOR, "VECTOR", "Vector" );
addItem( RimSummaryDataSourceStepping::SourceSteppingDimension::WELL, "WELL", "Well" );
addItem( RimSummaryDataSourceStepping::SourceSteppingDimension::SUMMARY_CASE, "SUMMARY_CASE", "Summary Case" );
addItem( RimSummaryDataSourceStepping::SourceSteppingDimension::ENSEMBLE, "ENSEMBLE", "Ensemble" );
addItem( RimSummaryDataSourceStepping::SourceSteppingDimension::GROUP, "GROUP", "Group" );
addItem( RimSummaryDataSourceStepping::SourceSteppingDimension::REGION, "REGION", "Region" );
addItem( RimSummaryDataSourceStepping::SourceSteppingDimension::BLOCK, "BLOCK", "Block" );
addItem( RimSummaryDataSourceStepping::SourceSteppingDimension::AQUIFER, "AQUIFER", "Aquifer" );
setDefault( RimSummaryDataSourceStepping::SourceSteppingDimension::VECTOR );
}
} // namespace caf

View File

@ -33,6 +33,18 @@ public:
UNION_X_Y_AXIS
};
enum class SourceSteppingDimension
{
SUMMARY_CASE,
ENSEMBLE,
WELL,
GROUP,
REGION,
VECTOR,
BLOCK,
AQUIFER
};
public:
virtual std::vector<RimSummaryDataSourceStepping::Axis> availableAxes() const = 0;
virtual std::vector<RimSummaryCurve*> curvesForStepping( RimSummaryDataSourceStepping::Axis axis ) const = 0;

View File

@ -162,6 +162,10 @@ RimSummaryMultiPlot::RimSummaryMultiPlot()
m_sourceStepping.uiCapability()->setUiTreeChildrenHidden( true );
m_sourceStepping.xmlCapability()->disableIO();
CAF_PDM_InitFieldNoDefault( &m_defaultStepDimension, "DefaultStepDimension", "Default Step Dimension" );
m_defaultStepDimension = RimSummaryDataSourceStepping::SourceSteppingDimension::VECTOR;
m_defaultStepDimension.uiCapability()->setUiHidden( true );
m_nameHelper = std::make_unique<RimSummaryPlotNameHelper>();
}
@ -689,6 +693,7 @@ void RimSummaryMultiPlot::initAfterRead()
plot->axisChanged.connect( this, &RimSummaryMultiPlot::onSubPlotAxisChanged );
plot->curvesChanged.connect( this, &RimSummaryMultiPlot::onSubPlotChanged );
}
updateStepDimensionFromDefault();
}
//--------------------------------------------------------------------------------------------------
@ -749,26 +754,26 @@ void RimSummaryMultiPlot::setDefaultRangeAggregationSteppingDimension()
rangeAggregation = AxisRangeAggregation::SUB_PLOTS;
}
auto stepDimension = RimSummaryPlotSourceStepping::SourceSteppingDimension::VECTOR;
auto stepDimension = RimSummaryDataSourceStepping::SourceSteppingDimension::VECTOR;
if ( analyzer.wellNames().size() == 1 )
{
stepDimension = RimSummaryPlotSourceStepping::SourceSteppingDimension::WELL;
stepDimension = RimSummaryDataSourceStepping::SourceSteppingDimension::WELL;
}
else if ( analyzer.groupNames().size() == 1 )
{
stepDimension = RimSummaryPlotSourceStepping::SourceSteppingDimension::GROUP;
stepDimension = RimSummaryDataSourceStepping::SourceSteppingDimension::GROUP;
}
else if ( analyzer.regionNumbers().size() == 1 )
{
stepDimension = RimSummaryPlotSourceStepping::SourceSteppingDimension::REGION;
stepDimension = RimSummaryDataSourceStepping::SourceSteppingDimension::REGION;
}
else if ( analyzer.aquifers().size() == 1 )
{
stepDimension = RimSummaryPlotSourceStepping::SourceSteppingDimension::AQUIFER;
stepDimension = RimSummaryDataSourceStepping::SourceSteppingDimension::AQUIFER;
}
else if ( analyzer.blocks().size() == 1 )
{
stepDimension = RimSummaryPlotSourceStepping::SourceSteppingDimension::BLOCK;
stepDimension = RimSummaryDataSourceStepping::SourceSteppingDimension::BLOCK;
}
m_axisRangeAggregation = rangeAggregation;
@ -1254,7 +1259,7 @@ void RimSummaryMultiPlot::appendSubPlotByStepping( int direction )
RimSummaryPlot* newPlot = dynamic_cast<RimSummaryPlot*>( newPlots[0] );
if ( newPlot == nullptr ) return;
if ( m_sourceStepping()->stepDimension() == RimSummaryPlotSourceStepping::SourceSteppingDimension::SUMMARY_CASE )
if ( m_sourceStepping()->stepDimension() == RimSummaryDataSourceStepping::SourceSteppingDimension::SUMMARY_CASE )
{
newPlot->resolveReferencesRecursively();
@ -1265,7 +1270,7 @@ void RimSummaryMultiPlot::appendSubPlotByStepping( int direction )
curve->setSummaryCaseY( newCase );
}
}
else if ( m_sourceStepping()->stepDimension() == RimSummaryPlotSourceStepping::SourceSteppingDimension::ENSEMBLE )
else if ( m_sourceStepping()->stepDimension() == RimSummaryDataSourceStepping::SourceSteppingDimension::ENSEMBLE )
{
newPlot->resolveReferencesRecursively();
@ -1313,7 +1318,7 @@ void RimSummaryMultiPlot::appendCurveByStepping( int direction )
auto address = curve->summaryAddressY();
auto sumCase = curve->summaryCaseY();
int sumCaseId = sumCase->caseId();
if ( m_sourceStepping()->stepDimension() == RimSummaryPlotSourceStepping::SourceSteppingDimension::SUMMARY_CASE )
if ( m_sourceStepping()->stepDimension() == RimSummaryDataSourceStepping::SourceSteppingDimension::SUMMARY_CASE )
{
auto nextSumCase = m_sourceStepping->stepCase( direction );
if ( nextSumCase ) sumCaseId = nextSumCase->caseId();
@ -1330,7 +1335,7 @@ void RimSummaryMultiPlot::appendCurveByStepping( int direction )
auto address = curveSet->summaryAddress();
auto sumEns = curveSet->summaryCaseCollection();
int sumEnsId = sumEns->ensembleId();
if ( m_sourceStepping()->stepDimension() == RimSummaryPlotSourceStepping::SourceSteppingDimension::ENSEMBLE )
if ( m_sourceStepping()->stepDimension() == RimSummaryDataSourceStepping::SourceSteppingDimension::ENSEMBLE )
{
auto nextEns = m_sourceStepping->stepEnsemble( direction );
if ( nextEns ) sumEnsId = nextEns->ensembleId();
@ -1379,3 +1384,19 @@ void RimSummaryMultiPlot::keepVisiblePageAfterUpdate( bool keepPage )
if ( keepPage ) m_viewer->keepCurrentPageAfterUpdate();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryMultiPlot::storeStepDimensionFromToolbar()
{
m_defaultStepDimension = m_sourceStepping->stepDimension();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryMultiPlot::updateStepDimensionFromDefault()
{
m_sourceStepping->setStepDimension( m_defaultStepDimension() );
}

View File

@ -106,6 +106,9 @@ public:
void keepVisiblePageAfterUpdate( bool keepPage );
void storeStepDimensionFromToolbar();
void updateStepDimensionFromDefault();
protected:
bool handleGlobalKeyEvent( QKeyEvent* keyEvent ) override;
bool handleGlobalWheelEvent( QWheelEvent* wheelEvent ) override;
@ -158,6 +161,8 @@ private:
caf::PdmField<bool> m_appendNextCurve;
caf::PdmField<bool> m_appendPrevCurve;
caf::PdmField<caf::AppEnum<RimSummaryDataSourceStepping::SourceSteppingDimension>> m_defaultStepDimension;
caf::PdmField<caf::AppEnum<AxisRangeAggregation>> m_axisRangeAggregation;
caf::PdmChildField<RimSummaryPlotSourceStepping*> m_sourceStepping;

View File

@ -51,23 +51,6 @@
#include <algorithm>
#include <vector>
namespace caf
{
template <>
void AppEnum<RimSummaryPlotSourceStepping::SourceSteppingDimension>::setUp()
{
addItem( RimSummaryPlotSourceStepping::SourceSteppingDimension::VECTOR, "VECTOR", "Vector" );
addItem( RimSummaryPlotSourceStepping::SourceSteppingDimension::WELL, "WELL", "Well" );
addItem( RimSummaryPlotSourceStepping::SourceSteppingDimension::SUMMARY_CASE, "SUMMARY_CASE", "Summary Case" );
addItem( RimSummaryPlotSourceStepping::SourceSteppingDimension::ENSEMBLE, "ENSEMBLE", "Ensemble" );
addItem( RimSummaryPlotSourceStepping::SourceSteppingDimension::GROUP, "GROUP", "Group" );
addItem( RimSummaryPlotSourceStepping::SourceSteppingDimension::REGION, "REGION", "Region" );
addItem( RimSummaryPlotSourceStepping::SourceSteppingDimension::BLOCK, "BLOCK", "Block" );
addItem( RimSummaryPlotSourceStepping::SourceSteppingDimension::AQUIFER, "AQUIFER", "Aquifer" );
setDefault( RimSummaryPlotSourceStepping::SourceSteppingDimension::VECTOR );
}
} // namespace caf
CAF_PDM_SOURCE_INIT( RimSummaryPlotSourceStepping, "RimSummaryCurveCollectionModifier" );
//--------------------------------------------------------------------------------------------------
@ -322,6 +305,8 @@ void RimSummaryPlotSourceStepping::fieldChangedByUi( const caf::PdmFieldHandle*
{
RiuPlotMainWindow* mainPlotWindow = RiaGuiApplication::instance()->getOrCreateMainPlotWindow();
mainPlotWindow->updateMultiPlotToolBar();
RimSummaryMultiPlot* plot = dynamic_cast<RimSummaryMultiPlot*>( m_objectForSourceStepping.p() );
if ( plot ) plot->storeStepDimensionFromToolbar();
return;
}
@ -560,29 +545,29 @@ caf::PdmValueField* RimSummaryPlotSourceStepping::fieldToModify()
{
switch ( m_stepDimension() )
{
case SourceSteppingDimension::SUMMARY_CASE:
case RimSummaryDataSourceStepping::SourceSteppingDimension::SUMMARY_CASE:
return &m_summaryCase;
break;
case SourceSteppingDimension::ENSEMBLE:
case RimSummaryDataSourceStepping::SourceSteppingDimension::ENSEMBLE:
return &m_ensemble;
case SourceSteppingDimension::WELL:
case RimSummaryDataSourceStepping::SourceSteppingDimension::WELL:
return &m_wellName;
case SourceSteppingDimension::GROUP:
case RimSummaryDataSourceStepping::SourceSteppingDimension::GROUP:
return &m_groupName;
case SourceSteppingDimension::REGION:
case RimSummaryDataSourceStepping::SourceSteppingDimension::REGION:
return &m_region;
case SourceSteppingDimension::VECTOR:
case RimSummaryDataSourceStepping::SourceSteppingDimension::VECTOR:
return &m_vectorName;
case SourceSteppingDimension::BLOCK:
case RimSummaryDataSourceStepping::SourceSteppingDimension::BLOCK:
return &m_cellBlock;
case SourceSteppingDimension::AQUIFER:
case RimSummaryDataSourceStepping::SourceSteppingDimension::AQUIFER:
return &m_aquifer;
default:
@ -989,7 +974,7 @@ RifEclipseSummaryAddress RimSummaryPlotSourceStepping::stepAddress( RifEclipseSu
switch ( m_stepDimension() )
{
case SourceSteppingDimension::WELL:
case RimSummaryDataSourceStepping::SourceSteppingDimension::WELL:
{
auto ids = analyzer.identifierTexts( RifEclipseSummaryAddress::SUMMARY_WELL, "" );
auto& curName = addr.wellName();
@ -1009,7 +994,7 @@ RifEclipseSummaryAddress RimSummaryPlotSourceStepping::stepAddress( RifEclipseSu
}
break;
case SourceSteppingDimension::GROUP:
case RimSummaryDataSourceStepping::SourceSteppingDimension::GROUP:
{
auto ids = analyzer.identifierTexts( RifEclipseSummaryAddress::SUMMARY_GROUP, "" );
auto& curName = addr.groupName();
@ -1029,7 +1014,7 @@ RifEclipseSummaryAddress RimSummaryPlotSourceStepping::stepAddress( RifEclipseSu
}
break;
case SourceSteppingDimension::REGION:
case RimSummaryDataSourceStepping::SourceSteppingDimension::REGION:
{
auto ids = analyzer.identifierTexts( RifEclipseSummaryAddress::SUMMARY_REGION, "" );
int curRegion = addr.regionNumber();
@ -1049,7 +1034,7 @@ RifEclipseSummaryAddress RimSummaryPlotSourceStepping::stepAddress( RifEclipseSu
}
break;
case SourceSteppingDimension::VECTOR:
case RimSummaryDataSourceStepping::SourceSteppingDimension::VECTOR:
{
auto options = optionsForQuantity( addresses );
@ -1076,7 +1061,7 @@ RifEclipseSummaryAddress RimSummaryPlotSourceStepping::stepAddress( RifEclipseSu
}
break;
case SourceSteppingDimension::BLOCK:
case RimSummaryDataSourceStepping::SourceSteppingDimension::BLOCK:
{
auto ids = analyzer.identifierTexts( RifEclipseSummaryAddress::SUMMARY_BLOCK, "" );
auto curName = addr.blockAsString();
@ -1099,7 +1084,7 @@ RifEclipseSummaryAddress RimSummaryPlotSourceStepping::stepAddress( RifEclipseSu
}
break;
case SourceSteppingDimension::AQUIFER:
case RimSummaryDataSourceStepping::SourceSteppingDimension::AQUIFER:
{
auto ids = analyzer.identifierTexts( RifEclipseSummaryAddress::SUMMARY_AQUIFER, "" );
int curRegion = addr.aquiferNumber();
@ -1132,35 +1117,35 @@ void RimSummaryPlotSourceStepping::syncWithStepper( RimSummaryPlotSourceStepping
{
switch ( m_stepDimension() )
{
case SourceSteppingDimension::SUMMARY_CASE:
case RimSummaryDataSourceStepping::SourceSteppingDimension::SUMMARY_CASE:
m_summaryCase = other->m_summaryCase();
break;
case SourceSteppingDimension::ENSEMBLE:
case RimSummaryDataSourceStepping::SourceSteppingDimension::ENSEMBLE:
m_ensemble = other->m_ensemble();
break;
case SourceSteppingDimension::WELL:
case RimSummaryDataSourceStepping::SourceSteppingDimension::WELL:
m_wellName = other->m_wellName();
break;
case SourceSteppingDimension::GROUP:
case RimSummaryDataSourceStepping::SourceSteppingDimension::GROUP:
m_groupName = other->m_groupName();
break;
case SourceSteppingDimension::REGION:
case RimSummaryDataSourceStepping::SourceSteppingDimension::REGION:
m_region = other->m_region();
break;
case SourceSteppingDimension::VECTOR:
case RimSummaryDataSourceStepping::SourceSteppingDimension::VECTOR:
m_vectorName = other->m_vectorName();
break;
case SourceSteppingDimension::BLOCK:
case RimSummaryDataSourceStepping::SourceSteppingDimension::BLOCK:
m_cellBlock = other->m_cellBlock();
break;
case SourceSteppingDimension::AQUIFER:
case RimSummaryDataSourceStepping::SourceSteppingDimension::AQUIFER:
m_aquifer = other->m_aquifer();
break;
@ -1208,7 +1193,7 @@ std::map<QString, QString> RimSummaryPlotSourceStepping::optionsForQuantity( std
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimSummaryPlotSourceStepping::SourceSteppingDimension RimSummaryPlotSourceStepping::stepDimension() const
RimSummaryDataSourceStepping::SourceSteppingDimension RimSummaryPlotSourceStepping::stepDimension() const
{
return m_stepDimension();
}
@ -1216,7 +1201,7 @@ RimSummaryPlotSourceStepping::SourceSteppingDimension RimSummaryPlotSourceSteppi
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryPlotSourceStepping::setStepDimension( SourceSteppingDimension dimension )
void RimSummaryPlotSourceStepping::setStepDimension( RimSummaryDataSourceStepping::SourceSteppingDimension dimension )
{
m_stepDimension = dimension;
}

View File

@ -43,19 +43,6 @@ class RimSummaryPlotSourceStepping : public caf::PdmObject
{
CAF_PDM_HEADER_INIT;
public:
enum class SourceSteppingDimension
{
SUMMARY_CASE,
ENSEMBLE,
WELL,
GROUP,
REGION,
VECTOR,
BLOCK,
AQUIFER
};
public:
RimSummaryPlotSourceStepping();
@ -73,8 +60,8 @@ public:
void syncWithStepper( RimSummaryPlotSourceStepping* other );
RimSummaryPlotSourceStepping::SourceSteppingDimension stepDimension() const;
void setStepDimension( RimSummaryPlotSourceStepping::SourceSteppingDimension dimension );
RimSummaryDataSourceStepping::SourceSteppingDimension stepDimension() const;
void setStepDimension( RimSummaryDataSourceStepping::SourceSteppingDimension dimension );
void updateStepIndex( int direction );
@ -116,7 +103,8 @@ private:
caf::PdmPointer<caf::PdmObject> m_objectForSourceStepping;
caf::PdmField<QString> m_indexLabel;
caf::PdmField<caf::AppEnum<SourceSteppingDimension>> m_stepDimension;
caf::PdmField<caf::AppEnum<RimSummaryDataSourceStepping::SourceSteppingDimension>> m_stepDimension;
caf::PdmPtrField<RimSummaryCase*> m_summaryCase;
caf::PdmPtrField<RimSummaryCaseCollection*> m_ensemble;