#2912 Ensemble curves. Fixes regarding summary curve definitions

This commit is contained in:
Bjørn Erik Jensen 2018-05-15 10:11:49 +02:00
parent 77dd3cbc43
commit 6edd240c4c
6 changed files with 36 additions and 9 deletions

View File

@ -146,9 +146,12 @@ bool RiaSummaryCurveDefinition::operator<(const RiaSummaryCurveDefinition& other
{
if (m_curveDefinition.first == other.summaryCase())
{
if (m_curveDefinition.second == other.summaryAddress())
{
return m_ensemble < other.m_ensemble;
}
return (m_curveDefinition.second < other.summaryAddress());
}
return (m_curveDefinition.first < other.summaryCase());
}

View File

@ -337,7 +337,8 @@ void RicSummaryCurveCreator::syncPreviewCurvesFromUiSelection()
for (const auto& curve : currentCurvesInPreviewPlot)
{
currentCurveDefs.insert(RiaSummaryCurveDefinition(curve->summaryCaseY(), curve->summaryAddressY()));
RimSummaryCase* sumCase = curve->summaryCaseY();
currentCurveDefs.insert(RiaSummaryCurveDefinition(sumCase, curve->summaryAddressY(), sumCase ? sumCase->ensemble() : nullptr));
}
if (allCurveDefinitions.size() < currentCurvesInPreviewPlot.size())
@ -352,7 +353,8 @@ void RicSummaryCurveCreator::syncPreviewCurvesFromUiSelection()
for (const auto& curve : currentCurvesInPreviewPlot)
{
RiaSummaryCurveDefinition curveDef = RiaSummaryCurveDefinition(curve->summaryCaseY(), curve->summaryAddressY());
RimSummaryCase* sumCase = curve->summaryCaseY();
RiaSummaryCurveDefinition curveDef = RiaSummaryCurveDefinition(sumCase, curve->summaryAddressY(), sumCase ? sumCase->ensemble() : nullptr);
if (deleteCurveDefs.count(curveDef) > 0) curvesToDelete.insert(curve);
}
}
@ -592,9 +594,6 @@ void RicSummaryCurveCreator::populateCurveCreator(const RimSummaryPlot& sourceSu
for (const auto& curve : curveSet->curves())
{
curveDefs.push_back(RiaSummaryCurveDefinition(curve->summaryCaseY(), curve->summaryAddressY(), ensemble));
// Copy curve object to the preview plot
copyEnsembleCurveAndAddToCurveSet(curve, newCurveSet, true);
}
}

View File

@ -859,6 +859,12 @@ RimEnsembleCurveSet* RimEnsembleCurveSet::clone() const
{
RimEnsembleCurveSet* copy = dynamic_cast<RimEnsembleCurveSet*>(this->xmlCapability()->copyByXmlSerialization(caf::PdmDefaultObjectFactory::instance()));
copy->m_yValuesSummaryGroup = m_yValuesSummaryGroup();
// Update summary case references
for (int i = 0; i < m_curves.size(); i++)
{
copy->m_curves[i]->setSummaryCaseY(m_curves[i]->summaryCaseY());
}
return copy;
}

View File

@ -25,6 +25,7 @@
#include "RimProject.h"
#include "RimSummaryCaseMainCollection.h"
#include "RimSummaryPlotCollection.h"
#include "RimSummaryCaseCollection.h"
#include "cvfAssert.h"
@ -107,6 +108,24 @@ bool RimSummaryCase::hasCaseRealizationParameters() const
return m_crlParameters != nullptr;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimSummaryCaseCollection* RimSummaryCase::ensemble() const
{
RimSummaryCaseCollection* e;
firstAncestorOrThisOfType(e);
return e;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimSummaryCase::isEnsembleCase() const
{
return ensemble() != nullptr;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -25,6 +25,7 @@
#include <memory>
class RifSummaryReaderInterface;
class RimSummaryCaseCollection;
//==================================================================================================
//
@ -59,6 +60,8 @@ public:
void setCaseRealizationParameters(const std::shared_ptr<RigCaseRealizationParameters>& crlParameters);
std::shared_ptr<RigCaseRealizationParameters> caseRealizationParameters() const;
bool hasCaseRealizationParameters() const;
RimSummaryCaseCollection* ensemble() const;
bool isEnsembleCase() const;
protected:
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);

View File

@ -1077,9 +1077,6 @@ std::vector<SummarySource*> RiuSummaryCurveDefSelection::selectedSummarySources(
for (const auto& source : m_selectedSources)
{
RimSummaryCase* c = dynamic_cast<RimSummaryCase*>(source.p());
RimSummaryCaseCollection* cc = dynamic_cast<RimSummaryCaseCollection*>(source.p());
sources.push_back(source);
}