diff --git a/ApplicationCode/Application/RiaApplication.cpp b/ApplicationCode/Application/RiaApplication.cpp index f9302bf28c..6278ddb2c4 100644 --- a/ApplicationCode/Application/RiaApplication.cpp +++ b/ApplicationCode/Application/RiaApplication.cpp @@ -71,7 +71,6 @@ #include "RimSummaryCaseMainCollection.h" #include "RimSummaryCrossPlotCollection.h" #include "RimSummaryPlot.h" -#include "RimSummaryPlotCollection.h" #include "RimTextAnnotation.h" #include "RimTextAnnotationInView.h" #include "RimViewLinker.h" @@ -499,6 +498,12 @@ bool RiaApplication::loadProject( const QString& projectFileName, } } + { + RimMainPlotCollection* mainPlotColl = m_project->mainPlotCollection(); + + mainPlotColl->ensureCalculationIdsAreAssigned(); + } + for ( RimOilField* oilField : m_project->oilFields ) { if ( oilField == nullptr ) continue; diff --git a/ApplicationCode/ProjectDataModel/RimMainPlotCollection.cpp b/ApplicationCode/ProjectDataModel/RimMainPlotCollection.cpp index 5037295d71..619ffcae10 100644 --- a/ApplicationCode/ProjectDataModel/RimMainPlotCollection.cpp +++ b/ApplicationCode/ProjectDataModel/RimMainPlotCollection.cpp @@ -28,6 +28,7 @@ #include "RimProject.h" #include "RimRftPlotCollection.h" #include "RimSaturationPressurePlotCollection.h" +#include "RimSummaryAddress.h" #include "RimSummaryCrossPlotCollection.h" #include "RimSummaryPlotCollection.h" #include "RimViewWindow.h" @@ -307,3 +308,17 @@ void RimMainPlotCollection::ensureDefaultFlowPlotsAreCreated() { m_flowPlotCollection()->ensureDefaultFlowPlotsAreCreated(); } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimMainPlotCollection::ensureCalculationIdsAreAssigned() +{ + std::vector allAddresses; + this->descendantsIncludingThisOfType( allAddresses ); + + for ( RimSummaryAddress* adr : allAddresses ) + { + adr->ensureIdIsAssigned(); + } +} diff --git a/ApplicationCode/ProjectDataModel/RimMainPlotCollection.h b/ApplicationCode/ProjectDataModel/RimMainPlotCollection.h index 3e9a03fa07..9fc47cfce6 100644 --- a/ApplicationCode/ProjectDataModel/RimMainPlotCollection.h +++ b/ApplicationCode/ProjectDataModel/RimMainPlotCollection.h @@ -67,6 +67,7 @@ public: void updatePlotsWithCompletions(); void deleteAllCachedData(); void ensureDefaultFlowPlotsAreCreated(); + void ensureCalculationIdsAreAssigned(); private: // Overridden PDM methods diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryAddress.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryAddress.cpp index 53e85fe058..acc0853aa7 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryAddress.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryAddress.cpp @@ -18,6 +18,12 @@ #include "RimSummaryAddress.h" +#include "RiaApplication.h" + +#include "RimProject.h" +#include "RimSummaryCalculation.h" +#include "RimSummaryCalculationCollection.h" + namespace caf { template <> @@ -126,3 +132,24 @@ RifEclipseSummaryAddress RimSummaryAddress::address() m_isErrorResult, m_calculationId ); } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryAddress::ensureIdIsAssigned() +{ + if ( m_category == RifEclipseSummaryAddress::SUMMARY_CALCULATED && m_calculationId == -1 ) + { + RimSummaryCalculationCollection* calcColl = RiaApplication::instance()->project()->calculationCollection(); + + for ( const RimSummaryCalculation* c : calcColl->calculations() ) + { + QString description = c->description(); + + if ( description == m_quantityName ) + { + m_calculationId = c->id(); + } + } + } +} diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryAddress.h b/ApplicationCode/ProjectDataModel/Summary/RimSummaryAddress.h index 549e8dd40f..d889c637f6 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryAddress.h +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryAddress.h @@ -42,12 +42,13 @@ class RimSummaryAddress : public caf::PdmObject public: RimSummaryAddress(); - ; ~RimSummaryAddress() override; void setAddress( const RifEclipseSummaryAddress& addr ); RifEclipseSummaryAddress address(); + void ensureIdIsAssigned(); + private: caf::PdmField> m_category; caf::PdmField m_quantityName;