#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.first == other.summaryCase())
{ {
if (m_curveDefinition.second == other.summaryAddress())
{
return m_ensemble < other.m_ensemble;
}
return (m_curveDefinition.second < other.summaryAddress()); return (m_curveDefinition.second < other.summaryAddress());
} }
return (m_curveDefinition.first < other.summaryCase()); return (m_curveDefinition.first < other.summaryCase());
} }

View File

@ -337,7 +337,8 @@ void RicSummaryCurveCreator::syncPreviewCurvesFromUiSelection()
for (const auto& curve : currentCurvesInPreviewPlot) 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()) if (allCurveDefinitions.size() < currentCurvesInPreviewPlot.size())
@ -352,7 +353,8 @@ void RicSummaryCurveCreator::syncPreviewCurvesFromUiSelection()
for (const auto& curve : currentCurvesInPreviewPlot) 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); if (deleteCurveDefs.count(curveDef) > 0) curvesToDelete.insert(curve);
} }
} }
@ -592,9 +594,6 @@ void RicSummaryCurveCreator::populateCurveCreator(const RimSummaryPlot& sourceSu
for (const auto& curve : curveSet->curves()) for (const auto& curve : curveSet->curves())
{ {
curveDefs.push_back(RiaSummaryCurveDefinition(curve->summaryCaseY(), curve->summaryAddressY(), ensemble)); 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())); RimEnsembleCurveSet* copy = dynamic_cast<RimEnsembleCurveSet*>(this->xmlCapability()->copyByXmlSerialization(caf::PdmDefaultObjectFactory::instance()));
copy->m_yValuesSummaryGroup = m_yValuesSummaryGroup(); 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; return copy;
} }

View File

@ -25,6 +25,7 @@
#include "RimProject.h" #include "RimProject.h"
#include "RimSummaryCaseMainCollection.h" #include "RimSummaryCaseMainCollection.h"
#include "RimSummaryPlotCollection.h" #include "RimSummaryPlotCollection.h"
#include "RimSummaryCaseCollection.h"
#include "cvfAssert.h" #include "cvfAssert.h"
@ -107,6 +108,24 @@ bool RimSummaryCase::hasCaseRealizationParameters() const
return m_crlParameters != nullptr; 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> #include <memory>
class RifSummaryReaderInterface; class RifSummaryReaderInterface;
class RimSummaryCaseCollection;
//================================================================================================== //==================================================================================================
// //
@ -59,6 +60,8 @@ public:
void setCaseRealizationParameters(const std::shared_ptr<RigCaseRealizationParameters>& crlParameters); void setCaseRealizationParameters(const std::shared_ptr<RigCaseRealizationParameters>& crlParameters);
std::shared_ptr<RigCaseRealizationParameters> caseRealizationParameters() const; std::shared_ptr<RigCaseRealizationParameters> caseRealizationParameters() const;
bool hasCaseRealizationParameters() const; bool hasCaseRealizationParameters() const;
RimSummaryCaseCollection* ensemble() const;
bool isEnsembleCase() const;
protected: protected:
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue); 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) for (const auto& source : m_selectedSources)
{ {
RimSummaryCase* c = dynamic_cast<RimSummaryCase*>(source.p());
RimSummaryCaseCollection* cc = dynamic_cast<RimSummaryCaseCollection*>(source.p());
sources.push_back(source); sources.push_back(source);
} }