mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2026 Curve Calculator : Update calculated curves and plots
This commit is contained in:
@@ -27,6 +27,7 @@
|
|||||||
#include "cafPdmUiListEditor.h"
|
#include "cafPdmUiListEditor.h"
|
||||||
#include "cafPdmUiPushButtonEditor.h"
|
#include "cafPdmUiPushButtonEditor.h"
|
||||||
#include "cafPdmUiTreeSelectionEditor.h"
|
#include "cafPdmUiTreeSelectionEditor.h"
|
||||||
|
#include "RiaSummaryTools.h"
|
||||||
|
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT(RicSummaryCurveCalculator, "RicSummaryCurveCalculator");
|
CAF_PDM_SOURCE_INIT(RicSummaryCurveCalculator, "RicSummaryCurveCalculator");
|
||||||
@@ -77,14 +78,26 @@ RimCalculation* RicSummaryCurveCalculator::currentCalculation() const
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RicSummaryCurveCalculator::parseExpression()
|
bool RicSummaryCurveCalculator::parseExpression() const
|
||||||
{
|
{
|
||||||
if (m_currentCalculation())
|
if (m_currentCalculation())
|
||||||
{
|
{
|
||||||
m_currentCalculation()->parseExpression();
|
QString previousCurveName = m_currentCalculation->description();
|
||||||
|
if (!m_currentCalculation()->parseExpression())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
this->updateConnectedEditors();
|
QString currentCurveName = m_currentCalculation->description();
|
||||||
|
if (previousCurveName != currentCurveName)
|
||||||
|
{
|
||||||
|
RiaSummaryTools::notifyCalculatedCurveNameHasChanged(previousCurveName, currentCurveName);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_currentCalculation()->updateDependentCurvesAndPlots();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -202,12 +215,31 @@ void RicSummaryCurveCalculator::assignPushButtonEditorText(caf::PdmUiEditorAttri
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RicSummaryCurveCalculator::calculate() const
|
bool RicSummaryCurveCalculator::calculate() const
|
||||||
{
|
{
|
||||||
if (m_currentCalculation())
|
if (m_currentCalculation())
|
||||||
{
|
{
|
||||||
m_currentCalculation()->calculate();
|
QString previousCurveName = m_currentCalculation->description();
|
||||||
|
if (!m_currentCalculation()->parseExpression())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString currentCurveName = m_currentCalculation->description();
|
||||||
|
if (previousCurveName != currentCurveName)
|
||||||
|
{
|
||||||
|
RiaSummaryTools::notifyCalculatedCurveNameHasChanged(previousCurveName, currentCurveName);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!m_currentCalculation()->calculate())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_currentCalculation()->updateDependentCurvesAndPlots();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -41,8 +41,8 @@ public:
|
|||||||
|
|
||||||
RimCalculation* currentCalculation() const;
|
RimCalculation* currentCalculation() const;
|
||||||
|
|
||||||
void parseExpression();
|
bool parseExpression() const;
|
||||||
void calculate() const;
|
bool calculate() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||||
|
|||||||
@@ -186,6 +186,8 @@ QMinimizePanel* RicSummaryCurveCalculatorEditor::updateGroupBoxWithContent(caf::
|
|||||||
void RicSummaryCurveCalculatorEditor::slotCalculate()
|
void RicSummaryCurveCalculatorEditor::slotCalculate()
|
||||||
{
|
{
|
||||||
m_calculator->calculate();
|
m_calculator->calculate();
|
||||||
|
|
||||||
|
m_calculator->updateConnectedEditors();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -194,5 +196,7 @@ void RicSummaryCurveCalculatorEditor::slotCalculate()
|
|||||||
void RicSummaryCurveCalculatorEditor::slotParseExpression()
|
void RicSummaryCurveCalculatorEditor::slotParseExpression()
|
||||||
{
|
{
|
||||||
m_calculator->parseExpression();
|
m_calculator->parseExpression();
|
||||||
|
|
||||||
|
m_calculator->updateConnectedEditors();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,14 +22,18 @@
|
|||||||
|
|
||||||
#include "RiaLogging.h"
|
#include "RiaLogging.h"
|
||||||
#include "RiaSummaryCurveDefinition.h"
|
#include "RiaSummaryCurveDefinition.h"
|
||||||
|
#include "RiaSummaryTools.h"
|
||||||
|
|
||||||
|
#include "RimCalculationCollection.h"
|
||||||
#include "RimCalculationVariable.h"
|
#include "RimCalculationVariable.h"
|
||||||
|
#include "RimProject.h"
|
||||||
#include "RimSummaryCurve.h"
|
#include "RimSummaryCurve.h"
|
||||||
|
#include "RimSummaryPlot.h"
|
||||||
|
#include "RimSummaryPlotCollection.h"
|
||||||
|
|
||||||
#include "cafPdmUiTextEditor.h"
|
#include "cafPdmUiTextEditor.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <numeric>
|
|
||||||
|
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT(RimCalculation, "RimCalculation");
|
CAF_PDM_SOURCE_INIT(RimCalculation, "RimCalculation");
|
||||||
@@ -166,7 +170,7 @@ bool RimCalculation::parseExpression()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this->updateConnectedEditors();
|
m_description = buildCalculationName();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -176,8 +180,6 @@ bool RimCalculation::parseExpression()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool RimCalculation::calculate()
|
bool RimCalculation::calculate()
|
||||||
{
|
{
|
||||||
if (!parseExpression()) return false;
|
|
||||||
|
|
||||||
QString leftHandSideVariableName = RimCalculation::findLeftHandSide(m_expression);
|
QString leftHandSideVariableName = RimCalculation::findLeftHandSide(m_expression);
|
||||||
|
|
||||||
ExpressionParser parser;
|
ExpressionParser parser;
|
||||||
@@ -333,13 +335,35 @@ QString RimCalculation::buildCalculationName() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
return name;
|
return name;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimCalculation::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
void RimCalculation::updateDependentCurvesAndPlots()
|
||||||
{
|
{
|
||||||
m_description = buildCalculationName();
|
RimCalculationCollection* calcColl = nullptr;
|
||||||
|
this->firstAncestorOrThisOfTypeAsserted(calcColl);
|
||||||
|
calcColl->rebuildCaseMetaData();
|
||||||
|
|
||||||
|
RimSummaryPlotCollection* summaryPlotCollection = RiaSummaryTools::summaryPlotCollection();
|
||||||
|
for (RimSummaryPlot* sumPlot : summaryPlotCollection->summaryPlots())
|
||||||
|
{
|
||||||
|
bool plotContainsCalculatedCurves = false;
|
||||||
|
|
||||||
|
for (RimSummaryCurve* sumCurve : sumPlot->summaryCurves())
|
||||||
|
{
|
||||||
|
if (sumCurve->summaryAddress().category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED)
|
||||||
|
{
|
||||||
|
sumCurve->updateConnectedEditors();
|
||||||
|
|
||||||
|
plotContainsCalculatedCurves = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (plotContainsCalculatedCurves)
|
||||||
|
{
|
||||||
|
sumPlot->loadDataAndUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ public:
|
|||||||
|
|
||||||
bool parseExpression();
|
bool parseExpression();
|
||||||
bool calculate();
|
bool calculate();
|
||||||
|
void updateDependentCurvesAndPlots();
|
||||||
|
|
||||||
virtual caf::PdmFieldHandle* userDescriptionField() override;
|
virtual caf::PdmFieldHandle* userDescriptionField() override;
|
||||||
|
|
||||||
@@ -56,8 +57,6 @@ private:
|
|||||||
|
|
||||||
QString buildCalculationName() const;
|
QString buildCalculationName() const;
|
||||||
|
|
||||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmField<QString> m_description;
|
caf::PdmField<QString> m_description;
|
||||||
caf::PdmField<QString> m_expression;
|
caf::PdmField<QString> m_expression;
|
||||||
|
|||||||
Reference in New Issue
Block a user