#5131 : Calculated curves : Use find in RimSummaryCalculationCollection

This commit is contained in:
Magne Sjaastad
2019-12-10 15:01:31 +01:00
committed by Kristian Bendiksen
parent 532d5899de
commit 1628f01939
5 changed files with 54 additions and 36 deletions

View File

@@ -102,14 +102,16 @@ void RicReplaceSummaryCaseFeature::onActionTriggered( bool isChecked )
if ( summaryAddressY.category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED &&
ids.find( summaryAddressY.id() ) != ids.end() )
{
RifCalculatedSummaryCurveReader reader( calcColl );
RimSummaryCalculation* calculation = reader.findCalculationByName( summaryAddressY );
QString description = calculation->description();
if ( calcColl )
{
RimSummaryCalculation* calculation = calcColl->findCalculationById( summaryAddressY.id() );
QString description = calculation->description();
RifEclipseSummaryAddress updatedAdr =
RifEclipseSummaryAddress::calculatedAddress( description.toStdString(), calculation->id() );
summaryCurve->setSummaryAddressYAndApplyInterpolation( updatedAdr );
summaryCurve->loadDataAndUpdate( true );
RifEclipseSummaryAddress updatedAdr =
RifEclipseSummaryAddress::calculatedAddress( description.toStdString(), calculation->id() );
summaryCurve->setSummaryAddressYAndApplyInterpolation( updatedAdr );
summaryCurve->loadDataAndUpdate( true );
}
}
}
@@ -127,28 +129,32 @@ void RicReplaceSummaryCaseFeature::onActionTriggered( bool isChecked )
if ( summaryAddressX.category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED &&
ids.find( summaryAddressX.id() ) != ids.end() )
{
RifCalculatedSummaryCurveReader reader( calcColl );
RimSummaryCalculation* calculation = reader.findCalculationByName( summaryAddressX );
QString description = calculation->description();
if ( calcColl )
{
RimSummaryCalculation* calculation = calcColl->findCalculationById( summaryAddressX.id() );
QString description = calculation->description();
RifEclipseSummaryAddress updatedAdr =
RifEclipseSummaryAddress::calculatedAddress( description.toStdString(), calculation->id() );
summaryCurve->setSummaryAddressX( updatedAdr );
summaryCurve->loadDataAndUpdate( true );
RifEclipseSummaryAddress updatedAdr =
RifEclipseSummaryAddress::calculatedAddress( description.toStdString(), calculation->id() );
summaryCurve->setSummaryAddressX( updatedAdr );
summaryCurve->loadDataAndUpdate( true );
}
}
RifEclipseSummaryAddress summaryAddressY = summaryCurve->summaryAddressY();
if ( summaryAddressY.category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED &&
ids.find( summaryAddressY.id() ) != ids.end() )
{
RifCalculatedSummaryCurveReader reader( calcColl );
RimSummaryCalculation* calculation = reader.findCalculationByName( summaryAddressY );
QString description = calculation->description();
if ( calcColl )
{
RimSummaryCalculation* calculation = calcColl->findCalculationById( summaryAddressX.id() );
QString description = calculation->description();
RifEclipseSummaryAddress updatedAdr =
RifEclipseSummaryAddress::calculatedAddress( description.toStdString(), calculation->id() );
summaryCurve->setSummaryAddressYAndApplyInterpolation( updatedAdr );
summaryCurve->loadDataAndUpdate( true );
RifEclipseSummaryAddress updatedAdr =
RifEclipseSummaryAddress::calculatedAddress( description.toStdString(), calculation->id() );
summaryCurve->setSummaryAddressYAndApplyInterpolation( updatedAdr );
summaryCurve->loadDataAndUpdate( true );
}
}
}

View File

@@ -26,7 +26,6 @@
#include "RifEclipseSummaryAddress.h"
#include "RimCalculatedSummaryCurveReader.h"
#include "RimProject.h"
#include "RimSummaryCalculation.h"
#include "RimSummaryCalculationCollection.h"
@@ -64,10 +63,13 @@ void RicEditSummaryCurveCalculationFeature::onActionTriggered( bool isChecked )
{
RifEclipseSummaryAddress selectedAddress = selectedCurves.front()->summaryAddressY();
RimProject* proj = RiaApplication::instance()->project();
RifCalculatedSummaryCurveReader* reader = dynamic_cast<RifCalculatedSummaryCurveReader*>(
proj->calculationCollection->calculationSummaryCase()->summaryReader() );
calculation = reader != nullptr ? reader->findCalculationByName( selectedAddress ) : nullptr;
RimProject* proj = RiaApplication::instance()->project();
RimSummaryCalculationCollection* calculationColl = proj->calculationCollection();
if ( calculationColl )
{
calculation = calculationColl->findCalculationById( selectedAddress.id() );
}
}
RicSummaryCurveCalculatorDialog* dialog = RicShowSummaryCurveCalculatorFeature::curveCalculatorDialog();

View File

@@ -98,14 +98,7 @@ RimSummaryCalculation*
{
if ( m_calculationCollection && resultAddress.category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED )
{
int id = resultAddress.id();
for ( RimSummaryCalculation* calc : m_calculationCollection->calculations() )
{
if ( calc->id() == id )
{
return calc;
}
}
return m_calculationCollection->findCalculationById( resultAddress.id() );
}
return nullptr;

View File

@@ -41,10 +41,11 @@ public:
void buildMetaData();
RimSummaryCalculation* findCalculationByName( const RifEclipseSummaryAddress& resultAddress ) const;
RiaEclipseUnitTools::UnitSystem unitSystem() const override;
private:
RimSummaryCalculation* findCalculationByName( const RifEclipseSummaryAddress& resultAddress ) const;
private:
caf::PdmPointer<RimSummaryCalculationCollection> m_calculationCollection;
};

View File

@@ -18,11 +18,15 @@
#include "RimSummaryCurveAutoName.h"
#include "RiaApplication.h"
#include "RiaStatisticsTools.h"
#include "RifEclipseSummaryAddress.h"
#include "RimEnsembleCurveSet.h"
#include "RimProject.h"
#include "RimSummaryCalculation.h"
#include "RimSummaryCalculationCollection.h"
#include "RimSummaryCase.h"
#include "RimSummaryCaseCollection.h"
#include "RimSummaryCurve.h"
@@ -197,6 +201,18 @@ QString RimSummaryCurveAutoName::buildCurveName( const RifEclipseSummaryAddress&
QString::fromStdString( summaryAddress.quantityName() ) )
.toStdString();
}
else if ( summaryAddress.category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED )
{
// Need to add case name for calculated summary
RimProject* proj = RiaApplication::instance()->project();
RimSummaryCalculationCollection* calcColl = proj->calculationCollection();
RimSummaryCalculation* calculation = calcColl->findCalculationById( summaryAddress.id() );
if ( calculation )
{
text = calculation->description().toStdString();
}
}
if ( m_unit && !unitText.empty() )
{