#6959 Calculated curve : Make sure relevant calculations are recalculated

This commit is contained in:
Magne Sjaastad 2020-11-10 13:44:34 +01:00
parent e3ef1b436a
commit 0e2d021148
3 changed files with 33 additions and 9 deletions

View File

@ -20,6 +20,7 @@
#include "RiaLogging.h"
#include "RiaSummaryTools.h"
#include "RicReplaceSummaryCaseFeature.h"
#include "RimMainPlotCollection.h"
#include "RimObservedDataCollection.h"
@ -61,6 +62,8 @@ void RicReloadSummaryCaseFeature::onActionTriggered( bool isChecked )
summaryCase->createSummaryReaderInterface();
summaryCase->createRftReaderInterface();
RicReplaceSummaryCaseFeature::updateRequredCalculatedCurves( summaryCase );
RiaLogging::info( QString( "Reloaded data for %1" ).arg( summaryCase->summaryHeaderFilename() ) );
}

View File

@ -46,6 +46,26 @@
CAF_CMD_SOURCE_INIT( RicReplaceSummaryCaseFeature, "RicReplaceSummaryCaseFeature" );
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicReplaceSummaryCaseFeature::updateRequredCalculatedCurves( RimSummaryCase* sourceSummaryCase )
{
RimSummaryCalculationCollection* calcColl = RimProject::current()->calculationCollection();
for ( RimSummaryCalculation* summaryCalculation : calcColl->calculations() )
{
bool needsUpdate =
RicReplaceSummaryCaseFeature::checkIfCalculationNeedsUpdate( summaryCalculation, sourceSummaryCase );
if ( needsUpdate )
{
summaryCalculation->parseExpression();
summaryCalculation->calculate();
summaryCalculation->updateDependentCurvesAndPlots();
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -74,19 +94,17 @@ void RicReplaceSummaryCaseFeature::onActionTriggered( bool isChecked )
summaryCase->createRftReaderInterface();
RiaLogging::info( QString( "Replaced summary data for %1" ).arg( oldSummaryHeaderFilename ) );
RimSummaryCalculationCollection* calcColl = RimProject::current()->calculationCollection();
RicReplaceSummaryCaseFeature::updateRequredCalculatedCurves( summaryCase );
// Find and update all changed calculations
std::set<int> ids;
std::set<int> ids;
RimSummaryCalculationCollection* calcColl = RimProject::current()->calculationCollection();
for ( RimSummaryCalculation* summaryCalculation : calcColl->calculations() )
{
bool needsUpdate = checkIfCalculationNeedsUpdate( summaryCalculation, summaryCase );
if ( needsUpdate )
{
ids.insert( summaryCalculation->id() );
summaryCalculation->parseExpression();
summaryCalculation->calculate();
summaryCalculation->updateDependentCurvesAndPlots();
}
}
@ -174,7 +192,7 @@ void RicReplaceSummaryCaseFeature::setupActionLook( QAction* actionToSetup )
///
//--------------------------------------------------------------------------------------------------
bool RicReplaceSummaryCaseFeature::checkIfCalculationNeedsUpdate( const RimSummaryCalculation* summaryCalculation,
const RimFileSummaryCase* summaryCase )
const RimSummaryCase* summaryCase )
{
std::vector<RimSummaryCalculationVariable*> variables = summaryCalculation->allVariables();
for ( RimSummaryCalculationVariable* variable : variables )

View File

@ -21,17 +21,20 @@
#include "cafCmdFeature.h"
class RimSummaryCalculation;
class RimFileSummaryCase;
class RimSummaryCase;
class RicReplaceSummaryCaseFeature : public caf::CmdFeature
{
CAF_CMD_HEADER_INIT;
public:
static void updateRequredCalculatedCurves( RimSummaryCase* sourceSummaryCase );
protected:
bool isCommandEnabled() override;
void onActionTriggered( bool isChecked ) override;
void setupActionLook( QAction* actionToSetup ) override;
bool checkIfCalculationNeedsUpdate( const RimSummaryCalculation* summaryCalculation,
const RimFileSummaryCase* summaryCase );
static bool checkIfCalculationNeedsUpdate( const RimSummaryCalculation* summaryCalculation,
const RimSummaryCase* summaryCase );
};