mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-09 23:16:00 -06:00
#3901 Summary Stepping : Improve source case stepping
This commit is contained in:
parent
07f8221676
commit
a442ddff04
@ -196,7 +196,7 @@ std::vector<RimSummaryCurve*> RimSummaryCurveCollection::curves() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RimSummaryCurve*> RimSummaryCurveCollection::curvesForSourceStepping() const
|
||||
std::vector<RimSummaryCurve*> RimSummaryCurveCollection::curvesForSourceStepping(RimSummaryPlotSourceStepping::SourceSteppingType steppingType) const
|
||||
{
|
||||
std::vector<RimSummaryCurve*> stepCurves;
|
||||
|
||||
@ -209,7 +209,16 @@ std::vector<RimSummaryCurve*> RimSummaryCurveCollection::curvesForSourceStepping
|
||||
|
||||
const std::string historyIdentifier = "H";
|
||||
|
||||
std::string quantity = m_curveForSourceStepping->summaryAddressY().quantityName();
|
||||
std::string quantity;
|
||||
|
||||
if (steppingType == RimSummaryPlotSourceStepping::X_AXIS)
|
||||
{
|
||||
quantity = m_curveForSourceStepping->summaryAddressX().quantityName();
|
||||
}
|
||||
else if (steppingType == RimSummaryPlotSourceStepping::Y_AXIS)
|
||||
{
|
||||
quantity = m_curveForSourceStepping->summaryAddressY().quantityName();
|
||||
}
|
||||
|
||||
std::string candidateName;
|
||||
if (RiaStdStringTools::endsWith(quantity, historyIdentifier))
|
||||
@ -223,9 +232,21 @@ std::vector<RimSummaryCurve*> RimSummaryCurveCollection::curvesForSourceStepping
|
||||
|
||||
for (const auto& c : curves())
|
||||
{
|
||||
if (c->summaryAddressY().quantityName() == candidateName)
|
||||
if (steppingType == RimSummaryPlotSourceStepping::X_AXIS)
|
||||
{
|
||||
stepCurves.push_back(c);
|
||||
if (c->summaryCaseX() == m_curveForSourceStepping->summaryCaseX() &&
|
||||
c->summaryAddressX().quantityName() == candidateName)
|
||||
{
|
||||
stepCurves.push_back(c);
|
||||
}
|
||||
}
|
||||
else if (steppingType == RimSummaryPlotSourceStepping::Y_AXIS)
|
||||
{
|
||||
if (c->summaryCaseY() == m_curveForSourceStepping->summaryCaseY() &&
|
||||
c->summaryAddressY().quantityName() == candidateName)
|
||||
{
|
||||
stepCurves.push_back(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "RimSummaryPlotSourceStepping.h"
|
||||
|
||||
#include "cafPdmChildArrayField.h"
|
||||
#include "cafPdmChildField.h"
|
||||
#include "cafPdmField.h"
|
||||
@ -29,7 +31,6 @@ class QwtPlot;
|
||||
class QwtPlotCurve;
|
||||
class RimSummaryCase;
|
||||
class RimSummaryCurve;
|
||||
class RimSummaryPlotSourceStepping;
|
||||
class QKeyEvent;
|
||||
|
||||
//==================================================================================================
|
||||
@ -56,7 +57,7 @@ public:
|
||||
void deleteCurve(RimSummaryCurve* curve);
|
||||
|
||||
std::vector<RimSummaryCurve*> curves() const;
|
||||
std::vector<RimSummaryCurve*> curvesForSourceStepping() const;
|
||||
std::vector<RimSummaryCurve*> curvesForSourceStepping(RimSummaryPlotSourceStepping::SourceSteppingType steppingType) const;
|
||||
|
||||
void deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase);
|
||||
void deleteAllCurves();
|
||||
|
@ -368,18 +368,27 @@ void RimSummaryPlotSourceStepping::fieldChangedByUi(const caf::PdmFieldHandle* c
|
||||
{
|
||||
if (m_summaryCase())
|
||||
{
|
||||
caf::PdmPointer<caf::PdmObjectHandle> variantHandle = oldValue.value<caf::PdmPointer<caf::PdmObjectHandle>>();
|
||||
RimSummaryCase* previousCase = dynamic_cast<RimSummaryCase*>(variantHandle.p());
|
||||
|
||||
for (auto curve : curves)
|
||||
{
|
||||
if (isYAxisStepping())
|
||||
{
|
||||
bool doSetAppearance = curve->summaryCaseY()->isObservedData() != m_summaryCase->isObservedData();
|
||||
curve->setSummaryCaseY(m_summaryCase);
|
||||
if (doSetAppearance) curve->forceUpdateCurveAppearanceFromCaseType();
|
||||
if (previousCase == curve->summaryCaseY())
|
||||
{
|
||||
bool doSetAppearance = curve->summaryCaseY()->isObservedData() != m_summaryCase->isObservedData();
|
||||
curve->setSummaryCaseY(m_summaryCase);
|
||||
if (doSetAppearance) curve->forceUpdateCurveAppearanceFromCaseType();
|
||||
}
|
||||
}
|
||||
|
||||
if (isXAxisStepping())
|
||||
{
|
||||
curve->setSummaryCaseX(m_summaryCase);
|
||||
if (previousCase == curve->summaryCaseX())
|
||||
{
|
||||
curve->setSummaryCaseX(m_summaryCase);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -395,9 +404,15 @@ void RimSummaryPlotSourceStepping::fieldChangedByUi(const caf::PdmFieldHandle* c
|
||||
{
|
||||
if (m_ensemble() && ensembleCurveColl)
|
||||
{
|
||||
for (auto curve : ensembleCurveColl->curveSets())
|
||||
caf::PdmPointer<caf::PdmObjectHandle> variantHandle = oldValue.value<caf::PdmPointer<caf::PdmObjectHandle>>();
|
||||
RimSummaryCaseCollection* previousCollection = dynamic_cast<RimSummaryCaseCollection*>(variantHandle.p());
|
||||
|
||||
for (auto curveSet : ensembleCurveColl->curveSets())
|
||||
{
|
||||
curve->setSummaryCaseCollection(m_ensemble);
|
||||
if (curveSet->summaryCaseCollection() == previousCollection)
|
||||
{
|
||||
curveSet->setSummaryCaseCollection(m_ensemble);
|
||||
}
|
||||
}
|
||||
|
||||
triggerLoadDataAndUpdate = true;
|
||||
@ -674,7 +689,7 @@ std::set<RifEclipseSummaryAddress> RimSummaryPlotSourceStepping::addressesCurveC
|
||||
|
||||
if (curveCollection)
|
||||
{
|
||||
auto curves = curveCollection->curvesForSourceStepping();
|
||||
auto curves = curveCollection->curvesForSourceStepping(m_sourceSteppingType);
|
||||
for (auto c : curves)
|
||||
{
|
||||
if (isYAxisStepping())
|
||||
@ -715,7 +730,7 @@ std::set<RimSummaryCase*> RimSummaryPlotSourceStepping::summaryCasesCurveCollect
|
||||
|
||||
if (!curveCollection) return sumCases;
|
||||
|
||||
auto curves = curveCollection->curves();
|
||||
auto curves = curveCollection->curvesForSourceStepping(m_sourceSteppingType);
|
||||
for (auto c : curves)
|
||||
{
|
||||
if (isYAxisStepping())
|
||||
|
Loading…
Reference in New Issue
Block a user