mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2692 Ensemble curves. Add ensemble selection support to curve editor
This commit is contained in:
@@ -24,9 +24,12 @@
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RiaSummaryCurveDefinition::RiaSummaryCurveDefinition(RimSummaryCase* summaryCase, const RifEclipseSummaryAddress& summaryAddress)
|
RiaSummaryCurveDefinition::RiaSummaryCurveDefinition(RimSummaryCase* summaryCase,
|
||||||
|
const RifEclipseSummaryAddress& summaryAddress,
|
||||||
|
RimSummaryCaseCollection* ensemble)
|
||||||
{
|
{
|
||||||
m_curveDefinition = std::make_pair(summaryCase, summaryAddress);
|
m_curveDefinition = std::make_pair(summaryCase, summaryAddress);
|
||||||
|
m_ensemble = ensemble;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -37,6 +40,14 @@ RimSummaryCase* RiaSummaryCurveDefinition::summaryCase() const
|
|||||||
return m_curveDefinition.first;
|
return m_curveDefinition.first;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RimSummaryCaseCollection* RiaSummaryCurveDefinition::ensemble() const
|
||||||
|
{
|
||||||
|
return m_ensemble;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -45,6 +56,14 @@ const RifEclipseSummaryAddress& RiaSummaryCurveDefinition::summaryAddress() cons
|
|||||||
return m_curveDefinition.second;
|
return m_curveDefinition.second;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
bool RiaSummaryCurveDefinition::isEnsembleCurve() const
|
||||||
|
{
|
||||||
|
return m_ensemble != nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
class RimSummaryCase;
|
class RimSummaryCase;
|
||||||
|
class RimSummaryCaseCollection;
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
///
|
///
|
||||||
@@ -33,10 +34,14 @@ class RimSummaryCase;
|
|||||||
class RiaSummaryCurveDefinition
|
class RiaSummaryCurveDefinition
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit RiaSummaryCurveDefinition(RimSummaryCase* summaryCase, const RifEclipseSummaryAddress& summaryAddress);
|
explicit RiaSummaryCurveDefinition(RimSummaryCase* summaryCase,
|
||||||
|
const RifEclipseSummaryAddress& summaryAddress,
|
||||||
|
RimSummaryCaseCollection* emsemble = nullptr);
|
||||||
|
|
||||||
RimSummaryCase* summaryCase() const;
|
RimSummaryCase* summaryCase() const;
|
||||||
const RifEclipseSummaryAddress& summaryAddress() const;
|
const RifEclipseSummaryAddress& summaryAddress() const;
|
||||||
|
RimSummaryCaseCollection* ensemble() const;
|
||||||
|
bool isEnsembleCurve() const;
|
||||||
|
|
||||||
bool operator < (const RiaSummaryCurveDefinition& other) const;
|
bool operator < (const RiaSummaryCurveDefinition& other) const;
|
||||||
|
|
||||||
@@ -52,4 +57,5 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::pair<RimSummaryCase*, RifEclipseSummaryAddress> m_curveDefinition;
|
std::pair<RimSummaryCase*, RifEclipseSummaryAddress> m_curveDefinition;
|
||||||
|
RimSummaryCaseCollection* m_ensemble;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ void RicNewSummaryEnsembleCurveSetFeature::onActionTriggered(bool isChecked)
|
|||||||
curveSet->setSummaryCaseCollection(project->summaryGroups().back());
|
curveSet->setSummaryCaseCollection(project->summaryGroups().back());
|
||||||
}
|
}
|
||||||
|
|
||||||
plot->ensembleCurveSets()->addCurveSet(curveSet);
|
plot->ensembleCurveSetCollection()->addCurveSet(curveSet);
|
||||||
plot->updateConnectedEditors();
|
plot->updateConnectedEditors();
|
||||||
|
|
||||||
RiaApplication::instance()->getOrCreateAndShowMainPlotWindow()->selectAsCurrentItem(curveSet);
|
RiaApplication::instance()->getOrCreateAndShowMainPlotWindow()->selectAsCurrentItem(curveSet);
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ RimEnsembleCurveSet* RicPasteEnsembleCurveSetFeature::copyCurveSetAndAddToCollec
|
|||||||
RimEnsembleCurveSet* newCurveSet = dynamic_cast<RimEnsembleCurveSet*>(sourceCurveSet->xmlCapability()->copyByXmlSerialization(caf::PdmDefaultObjectFactory::instance()));
|
RimEnsembleCurveSet* newCurveSet = dynamic_cast<RimEnsembleCurveSet*>(sourceCurveSet->xmlCapability()->copyByXmlSerialization(caf::PdmDefaultObjectFactory::instance()));
|
||||||
CVF_ASSERT(newCurveSet);
|
CVF_ASSERT(newCurveSet);
|
||||||
|
|
||||||
if (!coll) coll = plot->ensembleCurveSets();
|
if (!coll) coll = plot->ensembleCurveSetCollection();
|
||||||
|
|
||||||
coll->addCurveSet(newCurveSet);
|
coll->addCurveSet(newCurveSet);
|
||||||
|
|
||||||
|
|||||||
@@ -309,7 +309,7 @@ void RicSummaryCurveCreator::syncPreviewCurvesFromUiSelection()
|
|||||||
std::vector<RiaSummaryCurveDefinition> allCurveDefinitionsVector = m_summaryCurveSelectionEditor->summaryAddressSelection()->selectedCurveDefinitions();
|
std::vector<RiaSummaryCurveDefinition> allCurveDefinitionsVector = m_summaryCurveSelectionEditor->summaryAddressSelection()->selectedCurveDefinitions();
|
||||||
std::set<RiaSummaryCurveDefinition> allCurveDefinitions = std::set<RiaSummaryCurveDefinition>(allCurveDefinitionsVector.begin(), allCurveDefinitionsVector.end());
|
std::set<RiaSummaryCurveDefinition> allCurveDefinitions = std::set<RiaSummaryCurveDefinition>(allCurveDefinitionsVector.begin(), allCurveDefinitionsVector.end());
|
||||||
|
|
||||||
std::vector<RimSummaryCurve*> currentCurvesInPreviewPlot = m_previewPlot->summaryCurves();
|
std::vector<RimSummaryCurve*> currentCurvesInPreviewPlot = m_previewPlot->summaryAndEnsembleCurves();
|
||||||
if (allCurveDefinitions.size() != currentCurvesInPreviewPlot.size())
|
if (allCurveDefinitions.size() != currentCurvesInPreviewPlot.size())
|
||||||
{
|
{
|
||||||
std::set<RiaSummaryCurveDefinition> currentCurveDefs;
|
std::set<RiaSummaryCurveDefinition> currentCurveDefs;
|
||||||
@@ -374,9 +374,34 @@ void RicSummaryCurveCreator::updatePreviewCurvesFromCurveDefinitions(const std::
|
|||||||
curve->setSummaryCaseY(currentCase);
|
curve->setSummaryCaseY(currentCase);
|
||||||
curve->setSummaryAddressY(curveDef.summaryAddress());
|
curve->setSummaryAddressY(curveDef.summaryAddress());
|
||||||
curve->applyCurveAutoNameSettings(*m_curveNameConfig());
|
curve->applyCurveAutoNameSettings(*m_curveNameConfig());
|
||||||
|
|
||||||
|
if (curveDef.isEnsembleCurve())
|
||||||
|
{
|
||||||
|
// Find curveSet
|
||||||
|
RimEnsembleCurveSet* curveSet = nullptr;
|
||||||
|
for (const auto& cs : m_previewPlot->ensembleCurveSetCollection()->curveSets())
|
||||||
|
{
|
||||||
|
if (cs->summaryCaseCollection() == curveDef.ensemble() && cs->summaryAddress() == curveDef.summaryAddress())
|
||||||
|
{
|
||||||
|
curveSet = cs;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!curveSet)
|
||||||
|
{
|
||||||
|
curveSet = new RimEnsembleCurveSet();
|
||||||
|
curveSet->setSummaryCaseCollection(curveDef.ensemble());
|
||||||
|
curveSet->setSummaryAddress(curveDef.summaryAddress());
|
||||||
|
m_previewPlot->ensembleCurveSetCollection()->addCurveSet(curveSet);
|
||||||
|
}
|
||||||
|
curveSet->addCurve(curve);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
m_previewPlot->addCurveNoUpdate(curve);
|
m_previewPlot->addCurveNoUpdate(curve);
|
||||||
curveLookCalc.setupCurveLook(curve);
|
curveLookCalc.setupCurveLook(curve);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_previewPlot->loadDataAndUpdate();
|
m_previewPlot->loadDataAndUpdate();
|
||||||
m_previewPlot->zoomAll();
|
m_previewPlot->zoomAll();
|
||||||
@@ -489,24 +514,40 @@ void RicSummaryCurveCreator::populateCurveCreator(const RimSummaryPlot& sourceSu
|
|||||||
std::vector<RiaSummaryCurveDefinition> curveDefs;
|
std::vector<RiaSummaryCurveDefinition> curveDefs;
|
||||||
|
|
||||||
m_previewPlot->deleteAllSummaryCurves();
|
m_previewPlot->deleteAllSummaryCurves();
|
||||||
|
m_previewPlot->ensembleCurveSetCollection()->deleteAllCurveSets();
|
||||||
|
|
||||||
for (const auto& curve : sourceSummaryPlot.summaryCurves())
|
for (const auto& curve : sourceSummaryPlot.summaryCurves())
|
||||||
{
|
{
|
||||||
bool isObservedDataCase = isObservedData(curve->summaryCaseY());
|
|
||||||
|
|
||||||
curveDefs.push_back(RiaSummaryCurveDefinition(curve->summaryCaseY(), curve->summaryAddressY()));
|
curveDefs.push_back(RiaSummaryCurveDefinition(curve->summaryCaseY(), curve->summaryAddressY()));
|
||||||
|
|
||||||
// Copy curve object to the preview plot
|
// Copy curve object to the preview plot
|
||||||
copyCurveAndAddToPlot(curve, m_previewPlot.get(), true);
|
copyCurveAndAddToPlot(curve, m_previewPlot.get(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RimEnsembleCurveSetCollection* previewCurveSetColl = m_previewPlot->ensembleCurveSetCollection();
|
||||||
|
for (const auto& curveSet : sourceSummaryPlot.ensembleCurveSetCollection()->curveSets())
|
||||||
|
{
|
||||||
|
RimEnsembleCurveSet* newCurveSet = curveSet->clone();
|
||||||
|
previewCurveSetColl->addCurveSet(newCurveSet);
|
||||||
|
|
||||||
|
RimSummaryCaseCollection* ensemble = curveSet->summaryCaseCollection();
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Set visibility for imported curves which were not checked in source plot
|
// Set visibility for imported curves which were not checked in source plot
|
||||||
std::set <std::pair<RimSummaryCase*, RifEclipseSummaryAddress>> sourceCurveDefs;
|
std::set <std::pair<RimSummaryCase*, RifEclipseSummaryAddress>> sourceCurveDefs;
|
||||||
for (const auto& curve : sourceSummaryPlot.summaryCurves())
|
for (const auto& curve : sourceSummaryPlot.summaryAndEnsembleCurves())
|
||||||
{
|
{
|
||||||
sourceCurveDefs.insert(std::make_pair(curve->summaryCaseY(), curve->summaryAddressY()));
|
sourceCurveDefs.insert(std::make_pair(curve->summaryCaseY(), curve->summaryAddressY()));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const auto& curve : m_previewPlot->summaryCurves())
|
for (const auto& curve : m_previewPlot->summaryAndEnsembleCurves())
|
||||||
{
|
{
|
||||||
auto curveDef = std::make_pair(curve->summaryCaseY(), curve->summaryAddressY());
|
auto curveDef = std::make_pair(curve->summaryCaseY(), curve->summaryAddressY());
|
||||||
if (sourceCurveDefs.count(curveDef) == 0)
|
if (sourceCurveDefs.count(curveDef) == 0)
|
||||||
@@ -531,6 +572,7 @@ void RicSummaryCurveCreator::updateTargetPlot()
|
|||||||
if (m_targetPlot == nullptr) m_targetPlot = new RimSummaryPlot();
|
if (m_targetPlot == nullptr) m_targetPlot = new RimSummaryPlot();
|
||||||
|
|
||||||
m_targetPlot->deleteAllSummaryCurves();
|
m_targetPlot->deleteAllSummaryCurves();
|
||||||
|
m_targetPlot->ensembleCurveSetCollection()->deleteAllCurveSets();
|
||||||
|
|
||||||
// Add edited curves to target plot
|
// Add edited curves to target plot
|
||||||
for (const auto& editedCurve : m_previewPlot->summaryCurves())
|
for (const auto& editedCurve : m_previewPlot->summaryCurves())
|
||||||
@@ -542,22 +584,20 @@ void RicSummaryCurveCreator::updateTargetPlot()
|
|||||||
copyCurveAndAddToPlot(editedCurve, m_targetPlot);
|
copyCurveAndAddToPlot(editedCurve, m_targetPlot);
|
||||||
}
|
}
|
||||||
|
|
||||||
// DEBUG
|
for (const auto& editedCurveSet : m_previewPlot->ensembleCurveSetCollection()->curveSets())
|
||||||
//{
|
{
|
||||||
// m_targetPlot->ensembleCurveSets()->deleteAllCurveSets();
|
if (!editedCurveSet->isCurvesVisible())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// RimEnsembleCurveSet* curveSet = new RimEnsembleCurveSet();
|
RimEnsembleCurveSet* newCurveSet = editedCurveSet->clone();
|
||||||
// m_targetPlot->ensembleCurveSets()->addCurveSet(curveSet);
|
m_targetPlot->ensembleCurveSetCollection()->addCurveSet(newCurveSet);
|
||||||
|
for (const auto& editedCurve : newCurveSet->curves())
|
||||||
// for (const auto& editedCurve : m_previewPlot->summaryCurves())
|
{
|
||||||
// {
|
copyEnsembleCurveAndAddToCurveSet(editedCurve, editedCurveSet);
|
||||||
// if (!editedCurve->isCurveVisible())
|
}
|
||||||
// {
|
}
|
||||||
// continue;
|
|
||||||
// }
|
|
||||||
// copyEnsembleCurveAndAddToPlot(editedCurve, curveSet);
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
m_targetPlot->enableAutoPlotTitle(m_useAutoPlotTitleProxy());
|
m_targetPlot->enableAutoPlotTitle(m_useAutoPlotTitleProxy());
|
||||||
|
|
||||||
@@ -580,9 +620,6 @@ void RicSummaryCurveCreator::copyCurveAndAddToPlot(const RimSummaryCurve *curve,
|
|||||||
|
|
||||||
plot->addCurveNoUpdate(curveCopy);
|
plot->addCurveNoUpdate(curveCopy);
|
||||||
|
|
||||||
// Resolve references after object has been inserted into the project data model
|
|
||||||
curveCopy->resolveReferencesRecursively();
|
|
||||||
|
|
||||||
// The curve creator is not a descendant of the project, and need to be set manually
|
// The curve creator is not a descendant of the project, and need to be set manually
|
||||||
curveCopy->setSummaryCaseY(curve->summaryCaseY());
|
curveCopy->setSummaryCaseY(curve->summaryCaseY());
|
||||||
curveCopy->initAfterReadRecursively();
|
curveCopy->initAfterReadRecursively();
|
||||||
@@ -592,7 +629,7 @@ void RicSummaryCurveCreator::copyCurveAndAddToPlot(const RimSummaryCurve *curve,
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RicSummaryCurveCreator::copyEnsembleCurveAndAddToPlot(const RimSummaryCurve *curve, RimEnsembleCurveSet *curveSet, bool forceVisible)
|
void RicSummaryCurveCreator::copyEnsembleCurveAndAddToCurveSet(const RimSummaryCurve *curve, RimEnsembleCurveSet* curveSet, bool forceVisible)
|
||||||
{
|
{
|
||||||
RimSummaryCurve* curveCopy = dynamic_cast<RimSummaryCurve*>(curve->xmlCapability()->copyByXmlSerialization(caf::PdmDefaultObjectFactory::instance()));
|
RimSummaryCurve* curveCopy = dynamic_cast<RimSummaryCurve*>(curve->xmlCapability()->copyByXmlSerialization(caf::PdmDefaultObjectFactory::instance()));
|
||||||
CVF_ASSERT(curveCopy);
|
CVF_ASSERT(curveCopy);
|
||||||
@@ -604,9 +641,6 @@ void RicSummaryCurveCreator::copyEnsembleCurveAndAddToPlot(const RimSummaryCurve
|
|||||||
|
|
||||||
curveSet->addCurve(curveCopy);
|
curveSet->addCurve(curveCopy);
|
||||||
|
|
||||||
// Resolve references after object has been inserted into the project data model
|
|
||||||
curveCopy->resolveReferencesRecursively();
|
|
||||||
|
|
||||||
// The curve creator is not a descendant of the project, and need to be set manually
|
// The curve creator is not a descendant of the project, and need to be set manually
|
||||||
curveCopy->setSummaryCaseY(curve->summaryCaseY());
|
curveCopy->setSummaryCaseY(curve->summaryCaseY());
|
||||||
curveCopy->initAfterReadRecursively();
|
curveCopy->initAfterReadRecursively();
|
||||||
@@ -703,7 +737,7 @@ std::set<RiaSummaryCurveDefinition> RicSummaryCurveCreator::allPreviewCurveDefs(
|
|||||||
{
|
{
|
||||||
std::set<RiaSummaryCurveDefinition> allCurveDefs;
|
std::set<RiaSummaryCurveDefinition> allCurveDefs;
|
||||||
|
|
||||||
for (const auto& curve : m_previewPlot->summaryCurves())
|
for (const auto& curve : m_previewPlot->summaryAndEnsembleCurves())
|
||||||
{
|
{
|
||||||
allCurveDefs.insert(RiaSummaryCurveDefinition(curve->summaryCaseY(), curve->summaryAddressY()));
|
allCurveDefs.insert(RiaSummaryCurveDefinition(curve->summaryCaseY(), curve->summaryAddressY()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ private:
|
|||||||
void populateCurveCreator(const RimSummaryPlot& sourceSummaryPlot);
|
void populateCurveCreator(const RimSummaryPlot& sourceSummaryPlot);
|
||||||
void updateTargetPlot();
|
void updateTargetPlot();
|
||||||
static void copyCurveAndAddToPlot(const RimSummaryCurve *curve, RimSummaryPlot *plot, bool forceVisible = false);
|
static void copyCurveAndAddToPlot(const RimSummaryCurve *curve, RimSummaryPlot *plot, bool forceVisible = false);
|
||||||
static void copyEnsembleCurveAndAddToPlot(const RimSummaryCurve *curve, RimEnsembleCurveSet* curveSet, bool forceVisible = false);
|
static void copyEnsembleCurveAndAddToCurveSet(const RimSummaryCurve *curve, RimEnsembleCurveSet* curveSet, bool forceVisible = false);
|
||||||
void setDefaultCurveSelection(const std::vector<RimSummaryCase*>& defaultCases);
|
void setDefaultCurveSelection(const std::vector<RimSummaryCase*>& defaultCases);
|
||||||
|
|
||||||
void resetAllFields();
|
void resetAllFields();
|
||||||
|
|||||||
@@ -596,7 +596,7 @@ void RimPlotCurve::updateLegendEntryVisibilityNoPlotUpdate()
|
|||||||
{
|
{
|
||||||
bool showLegendInQwt = m_showLegend();
|
bool showLegendInQwt = m_showLegend();
|
||||||
|
|
||||||
if (summaryPlot->ensembleCurveSets()->visibleCurveSets().empty() && summaryPlot->curveCount() == 1)
|
if (summaryPlot->ensembleCurveSetCollection()->visibleCurveSets().empty() && summaryPlot->curveCount() == 1)
|
||||||
{
|
{
|
||||||
// Disable display of legend if the summary plot has only one single curve
|
// Disable display of legend if the summary plot has only one single curve
|
||||||
showLegendInQwt = false;
|
showLegendInQwt = false;
|
||||||
|
|||||||
@@ -244,6 +244,14 @@ void RimEnsembleCurveSet::deleteCurve(RimSummaryCurve* curve)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimEnsembleCurveSet::setSummaryAddress(RifEclipseSummaryAddress address)
|
||||||
|
{
|
||||||
|
m_yValuesCurveVariable->setAddress(address);
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -816,6 +824,16 @@ void RimEnsembleCurveSet::updateAllCurves()
|
|||||||
updateCurveColors();
|
updateCurveColors();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RimEnsembleCurveSet* RimEnsembleCurveSet::clone() const
|
||||||
|
{
|
||||||
|
RimEnsembleCurveSet* copy = dynamic_cast<RimEnsembleCurveSet*>(this->xmlCapability()->copyByXmlSerialization(caf::PdmDefaultObjectFactory::instance()));
|
||||||
|
copy->m_yValuesSummaryGroup = m_yValuesSummaryGroup();
|
||||||
|
return copy;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ public:
|
|||||||
void addCurve(RimSummaryCurve* curve);
|
void addCurve(RimSummaryCurve* curve);
|
||||||
void deleteCurve(RimSummaryCurve* curve);
|
void deleteCurve(RimSummaryCurve* curve);
|
||||||
|
|
||||||
|
void setSummaryAddress(RifEclipseSummaryAddress address);
|
||||||
RifEclipseSummaryAddress summaryAddress() const;
|
RifEclipseSummaryAddress summaryAddress() const;
|
||||||
std::vector<RimSummaryCurve*> curves() const;
|
std::vector<RimSummaryCurve*> curves() const;
|
||||||
std::vector<RimSummaryCurve*> visibleCurves() const;
|
std::vector<RimSummaryCurve*> visibleCurves() const;
|
||||||
@@ -89,6 +90,7 @@ public:
|
|||||||
EnsembleParameterType currentEnsembleParameterType() const;
|
EnsembleParameterType currentEnsembleParameterType() const;
|
||||||
|
|
||||||
void updateAllCurves();
|
void updateAllCurves();
|
||||||
|
RimEnsembleCurveSet* clone() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmFieldHandle* userDescriptionField() override;
|
caf::PdmFieldHandle* userDescriptionField() override;
|
||||||
|
|||||||
@@ -23,6 +23,8 @@
|
|||||||
#include "RimProject.h"
|
#include "RimProject.h"
|
||||||
#include "RimSummaryCase.h"
|
#include "RimSummaryCase.h"
|
||||||
|
|
||||||
|
#include "RifSummaryReaderInterface.h"
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT(RimSummaryCaseCollection, "SummaryCaseSubCollection");
|
CAF_PDM_SOURCE_INIT(RimSummaryCaseCollection, "SummaryCaseSubCollection");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -18,6 +18,8 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "RifEclipseSummaryAddress.h"
|
||||||
|
|
||||||
#include "cafPdmChildArrayField.h"
|
#include "cafPdmChildArrayField.h"
|
||||||
#include "cafPdmField.h"
|
#include "cafPdmField.h"
|
||||||
#include "cafPdmObject.h"
|
#include "cafPdmObject.h"
|
||||||
|
|||||||
@@ -466,6 +466,23 @@ QString RimSummaryPlot::asciiDataForPlotExport() const
|
|||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
std::vector<RimSummaryCurve*> RimSummaryPlot::summaryAndEnsembleCurves() const
|
||||||
|
{
|
||||||
|
std::vector<RimSummaryCurve*> curves = summaryCurves();
|
||||||
|
|
||||||
|
for (const auto& curveSet : ensembleCurveSetCollection()->curveSets())
|
||||||
|
{
|
||||||
|
for (const auto& curve : curveSet->curves())
|
||||||
|
{
|
||||||
|
curves.push_back(curve);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return curves;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -966,8 +983,33 @@ void RimSummaryPlot::deleteCurve(RimSummaryCurve* curve)
|
|||||||
if (curve)
|
if (curve)
|
||||||
{
|
{
|
||||||
if (m_summaryCurveCollection)
|
if (m_summaryCurveCollection)
|
||||||
|
{
|
||||||
|
for (auto& c : m_summaryCurveCollection->curves())
|
||||||
|
{
|
||||||
|
if (c == curve)
|
||||||
{
|
{
|
||||||
m_summaryCurveCollection->deleteCurve(curve);
|
m_summaryCurveCollection->deleteCurve(curve);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (m_ensembleCurveSetCollection)
|
||||||
|
{
|
||||||
|
for (auto& curveSet : m_ensembleCurveSetCollection->curveSets())
|
||||||
|
{
|
||||||
|
for (auto& c : curveSet->curves())
|
||||||
|
{
|
||||||
|
if (c == curve)
|
||||||
|
{
|
||||||
|
curveSet->deleteCurve(curve);
|
||||||
|
if (curveSet->curves().empty())
|
||||||
|
{
|
||||||
|
m_ensembleCurveSetCollection->deleteCurveSet(curveSet);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -986,7 +1028,7 @@ void RimSummaryPlot::deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase)
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RimEnsembleCurveSetCollection* RimSummaryPlot::ensembleCurveSets() const
|
RimEnsembleCurveSetCollection* RimSummaryPlot::ensembleCurveSetCollection() const
|
||||||
{
|
{
|
||||||
return m_ensembleCurveSetCollection;
|
return m_ensembleCurveSetCollection;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ public:
|
|||||||
void setCurveCollection(RimSummaryCurveCollection* curveCollection);
|
void setCurveCollection(RimSummaryCurveCollection* curveCollection);
|
||||||
void deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase);
|
void deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase);
|
||||||
|
|
||||||
RimEnsembleCurveSetCollection* ensembleCurveSets() const;
|
RimEnsembleCurveSetCollection* ensembleCurveSetCollection() const;
|
||||||
|
|
||||||
void addGridTimeHistoryCurve(RimGridTimeHistoryCurve* curve);
|
void addGridTimeHistoryCurve(RimGridTimeHistoryCurve* curve);
|
||||||
|
|
||||||
@@ -108,6 +108,7 @@ public:
|
|||||||
|
|
||||||
QString asciiDataForPlotExport() const;
|
QString asciiDataForPlotExport() const;
|
||||||
|
|
||||||
|
std::vector<RimSummaryCurve*> summaryAndEnsembleCurves() const;
|
||||||
std::vector<RimSummaryCurve*> summaryCurves() const;
|
std::vector<RimSummaryCurve*> summaryCurves() const;
|
||||||
void deleteAllSummaryCurves();
|
void deleteAllSummaryCurves();
|
||||||
RimSummaryCurveCollection* summaryCurveCollection() const;
|
RimSummaryCurveCollection* summaryCurveCollection() const;
|
||||||
|
|||||||
@@ -39,6 +39,8 @@
|
|||||||
#include "RiuSummaryVectorDescriptionMap.h"
|
#include "RiuSummaryVectorDescriptionMap.h"
|
||||||
|
|
||||||
#include "cafPdmUiTreeSelectionEditor.h"
|
#include "cafPdmUiTreeSelectionEditor.h"
|
||||||
|
//#include "cafPdmObject.h"
|
||||||
|
#include "cafPdmPointer.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
@@ -147,8 +149,8 @@ RiuSummaryCurveDefSelection::RiuSummaryCurveDefSelection() : m_identifierFieldsM
|
|||||||
} },
|
} },
|
||||||
})
|
})
|
||||||
{
|
{
|
||||||
CAF_PDM_InitFieldNoDefault(&m_selectedCases, "SummaryCases", "Cases", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_selectedSources, "SummaryCases", "Cases", "", "", "");
|
||||||
m_selectedCases.uiCapability()->setAutoAddingOptionFromValue(false);
|
m_selectedSources.uiCapability()->setAutoAddingOptionFromValue(false);
|
||||||
|
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(&m_currentSummaryCategory, "CurrentSummaryCategory", "Current Summary Category", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_currentSummaryCategory, "CurrentSummaryCategory", "Current Summary Category", "", "", "");
|
||||||
@@ -217,9 +219,9 @@ RiuSummaryCurveDefSelection::RiuSummaryCurveDefSelection() : m_identifierFieldsM
|
|||||||
itemTypes.second.back()->pdmField()->uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
itemTypes.second.back()->pdmField()->uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_selectedCases.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
m_selectedSources.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||||
m_selectedCases.uiCapability()->setUiEditorTypeName(caf::PdmUiTreeSelectionEditor::uiEditorTypeName());
|
m_selectedSources.uiCapability()->setUiEditorTypeName(caf::PdmUiTreeSelectionEditor::uiEditorTypeName());
|
||||||
m_selectedCases.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
m_selectedSources.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||||
|
|
||||||
m_selectedSummaryCategories.uiCapability()->setUiEditorTypeName(caf::PdmUiTreeSelectionEditor::uiEditorTypeName());
|
m_selectedSummaryCategories.uiCapability()->setUiEditorTypeName(caf::PdmUiTreeSelectionEditor::uiEditorTypeName());
|
||||||
m_selectedSummaryCategories.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
m_selectedSummaryCategories.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||||
@@ -247,14 +249,34 @@ RiuSummaryCurveDefSelection::~RiuSummaryCurveDefSelection()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
std::vector<RiaSummaryCurveDefinition> RiuSummaryCurveDefSelection::selectedCurveDefinitions() const
|
std::vector<RiaSummaryCurveDefinition> RiuSummaryCurveDefSelection::selectedCurveDefinitions() const
|
||||||
{
|
{
|
||||||
std::vector<RiaSummaryCurveDefinition> caseAndAddressVector;
|
std::vector<RiaSummaryCurveDefinition> curveDefVector;
|
||||||
|
|
||||||
{
|
{
|
||||||
std::set<RiaSummaryCurveDefinition> caseAndAddressPairs;
|
std::set<RiaSummaryCurveDefinition> caseAndAddressPairs;
|
||||||
|
|
||||||
std::set<RifEclipseSummaryAddress> selectedAddressesFromUi = buildAddressListFromSelections();
|
std::set<RifEclipseSummaryAddress> selectedAddressesFromUi = buildAddressListFromSelections();
|
||||||
|
|
||||||
for (RimSummaryCase* currCase : selectedSummaryCases())
|
for (SummarySource* currSource : selectedSummarySources())
|
||||||
|
{
|
||||||
|
std::vector<RimSummaryCase*> sourceCases;
|
||||||
|
RimSummaryCaseCollection* ensemble = dynamic_cast<RimSummaryCaseCollection*>(currSource);
|
||||||
|
|
||||||
|
// Build case list
|
||||||
|
if (ensemble)
|
||||||
|
{
|
||||||
|
auto sumCases = ensemble->allSummaryCases();
|
||||||
|
sourceCases.insert(sourceCases.end(), sumCases.begin(), sumCases.end());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
RimSummaryCase* sourceCase = dynamic_cast<RimSummaryCase*>(currSource);
|
||||||
|
if (sourceCase)
|
||||||
|
{
|
||||||
|
sourceCases.push_back(sourceCase);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const auto& currCase : sourceCases)
|
||||||
{
|
{
|
||||||
if (currCase && currCase->summaryReader())
|
if (currCase && currCase->summaryReader())
|
||||||
{
|
{
|
||||||
@@ -265,16 +287,17 @@ std::vector<RiaSummaryCurveDefinition> RiuSummaryCurveDefSelection::selectedCurv
|
|||||||
{
|
{
|
||||||
if (selectedAddressesFromUi.count(readerAddress) > 0)
|
if (selectedAddressesFromUi.count(readerAddress) > 0)
|
||||||
{
|
{
|
||||||
caseAndAddressPairs.insert(RiaSummaryCurveDefinition(currCase, readerAddress));
|
caseAndAddressPairs.insert(RiaSummaryCurveDefinition(currCase, readerAddress, ensemble));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::copy(caseAndAddressPairs.begin(), caseAndAddressPairs.end(), std::back_inserter(caseAndAddressVector));
|
std::copy(caseAndAddressPairs.begin(), caseAndAddressPairs.end(), std::back_inserter(curveDefVector));
|
||||||
}
|
}
|
||||||
|
|
||||||
return caseAndAddressVector;
|
return curveDefVector;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -325,15 +348,15 @@ void RiuSummaryCurveDefSelection::setSelectedCurveDefinitions(const std::vector<
|
|||||||
{
|
{
|
||||||
resetAllFields();
|
resetAllFields();
|
||||||
|
|
||||||
for (const auto& caseAddressPair : curveDefinitions)
|
for (const auto& curveDef : curveDefinitions)
|
||||||
{
|
{
|
||||||
RimSummaryCase* summaryCase = caseAddressPair.summaryCase();
|
RimSummaryCase* summaryCase = curveDef.summaryCase();
|
||||||
if (!summaryCase) continue;
|
if (!summaryCase) continue;
|
||||||
|
|
||||||
RifEclipseSummaryAddress summaryAddress = caseAddressPair.summaryAddress();
|
RifEclipseSummaryAddress summaryAddress = curveDef.summaryAddress();
|
||||||
if (summaryAddress.category() == RifEclipseSummaryAddress::SUMMARY_INVALID)
|
if (summaryAddress.category() == RifEclipseSummaryAddress::SUMMARY_INVALID)
|
||||||
{
|
{
|
||||||
// If we have an invalid address, set the default adress to Field
|
// If we have an invalid address, set the default address to Field
|
||||||
summaryAddress = RifEclipseSummaryAddress::fieldVarAddress(summaryAddress.quantityName());
|
summaryAddress = RifEclipseSummaryAddress::fieldVarAddress(summaryAddress.quantityName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -352,11 +375,13 @@ void RiuSummaryCurveDefSelection::setSelectedCurveDefinitions(const std::vector<
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Select case if not already selected
|
// Select case if not already selected
|
||||||
if (std::find(m_selectedCases.begin(), m_selectedCases.end(), summaryCase) == m_selectedCases.end())
|
if (std::find(m_selectedSources.begin(), m_selectedSources.end(),
|
||||||
|
curveDef.isEnsembleCurve() ? (SummarySource*)curveDef.ensemble() : summaryCase) == m_selectedSources.end())
|
||||||
{
|
{
|
||||||
if (summaryCase != calculatedSummaryCase())
|
if (summaryCase != calculatedSummaryCase())
|
||||||
{
|
{
|
||||||
m_selectedCases.push_back(summaryCase);
|
|
||||||
|
m_selectedSources.push_back(curveDef.isEnsembleCurve() ? (SummarySource*)curveDef.ensemble() : summaryCase);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -421,7 +446,7 @@ QList<caf::PdmOptionItemInfo> RiuSummaryCurveDefSelection::calculateValueOptions
|
|||||||
{
|
{
|
||||||
QList<caf::PdmOptionItemInfo> options;
|
QList<caf::PdmOptionItemInfo> options;
|
||||||
|
|
||||||
if (fieldNeedingOptions == &m_selectedCases)
|
if (fieldNeedingOptions == &m_selectedSources)
|
||||||
{
|
{
|
||||||
RimProject* proj = RiaApplication::instance()->project();
|
RimProject* proj = RiaApplication::instance()->project();
|
||||||
std::vector<RimSummaryCase*> topLevelCases;
|
std::vector<RimSummaryCase*> topLevelCases;
|
||||||
@@ -439,9 +464,28 @@ QList<caf::PdmOptionItemInfo> RiuSummaryCurveDefSelection::calculateValueOptions
|
|||||||
options.push_back(caf::PdmOptionItemInfo(sumCase->caseName(), sumCase));
|
options.push_back(caf::PdmOptionItemInfo(sumCase->caseName(), sumCase));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensembles
|
||||||
|
bool ensembleHeaderCreated = false;
|
||||||
|
for (const auto& sumCaseColl : sumCaseMainColl->summaryCaseCollections())
|
||||||
|
{
|
||||||
|
if (!sumCaseColl->isEnsemble()) continue;
|
||||||
|
|
||||||
|
if (!ensembleHeaderCreated)
|
||||||
|
{
|
||||||
|
options.push_back(caf::PdmOptionItemInfo::createHeader("Ensembles", true));
|
||||||
|
ensembleHeaderCreated = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto optionItem = caf::PdmOptionItemInfo(sumCaseColl->name(), sumCaseColl);
|
||||||
|
optionItem.setLevel(1);
|
||||||
|
options.push_back(optionItem);
|
||||||
|
}
|
||||||
|
|
||||||
// Grouped cases
|
// Grouped cases
|
||||||
for (const auto& sumCaseColl : sumCaseMainColl->summaryCaseCollections())
|
for (const auto& sumCaseColl : sumCaseMainColl->summaryCaseCollections())
|
||||||
{
|
{
|
||||||
|
if (sumCaseColl->isEnsemble()) continue;
|
||||||
|
|
||||||
options.push_back(caf::PdmOptionItemInfo::createHeader(sumCaseColl->name(), true));
|
options.push_back(caf::PdmOptionItemInfo::createHeader(sumCaseColl->name(), true));
|
||||||
|
|
||||||
for (const auto& sumCase : sumCaseColl->allSummaryCases())
|
for (const auto& sumCase : sumCaseColl->allSummaryCases())
|
||||||
@@ -575,7 +619,7 @@ QList<caf::PdmOptionItemInfo> RiuSummaryCurveDefSelection::calculateValueOptions
|
|||||||
void RiuSummaryCurveDefSelection::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
void RiuSummaryCurveDefSelection::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||||
{
|
{
|
||||||
caf::PdmUiGroup* sourcesGroup = uiOrdering.addNewGroupWithKeyword("Sources", RiuSummaryCurveDefinitionKeywords::sources());
|
caf::PdmUiGroup* sourcesGroup = uiOrdering.addNewGroupWithKeyword("Sources", RiuSummaryCurveDefinitionKeywords::sources());
|
||||||
sourcesGroup->add(&m_selectedCases);
|
sourcesGroup->add(&m_selectedSources);
|
||||||
|
|
||||||
caf::PdmUiGroup* itemTypesGroup = uiOrdering.addNewGroupWithKeyword("Summary Types", RiuSummaryCurveDefinitionKeywords::summaryTypes());
|
caf::PdmUiGroup* itemTypesGroup = uiOrdering.addNewGroupWithKeyword("Summary Types", RiuSummaryCurveDefinitionKeywords::summaryTypes());
|
||||||
itemTypesGroup->add(&m_selectedSummaryCategories);
|
itemTypesGroup->add(&m_selectedSummaryCategories);
|
||||||
@@ -729,9 +773,11 @@ void RiuSummaryCurveDefSelection::defineUiOrdering(QString uiConfigName, caf::Pd
|
|||||||
std::set<RifEclipseSummaryAddress> RiuSummaryCurveDefSelection::findPossibleSummaryAddressesFromSelectedCases(const SummaryIdentifierAndField *identifierAndField)
|
std::set<RifEclipseSummaryAddress> RiuSummaryCurveDefSelection::findPossibleSummaryAddressesFromSelectedCases(const SummaryIdentifierAndField *identifierAndField)
|
||||||
{
|
{
|
||||||
std::vector<RimSummaryCase*> cases;
|
std::vector<RimSummaryCase*> cases;
|
||||||
for (const auto& sumCase : m_selectedCases())
|
for (const auto& source : m_selectedSources())
|
||||||
{
|
{
|
||||||
if(isObservedData(sumCase)) continue;
|
RimSummaryCase* sumCase = dynamic_cast<RimSummaryCase*>(source.p());
|
||||||
|
|
||||||
|
if(!sumCase || isObservedData(sumCase)) continue;
|
||||||
cases.push_back(sumCase);
|
cases.push_back(sumCase);
|
||||||
}
|
}
|
||||||
return findPossibleSummaryAddresses(cases, identifierAndField);
|
return findPossibleSummaryAddresses(cases, identifierAndField);
|
||||||
@@ -743,9 +789,11 @@ std::set<RifEclipseSummaryAddress> RiuSummaryCurveDefSelection::findPossibleSumm
|
|||||||
std::set<RifEclipseSummaryAddress> RiuSummaryCurveDefSelection::findPossibleSummaryAddressesFromSelectedObservedData(const SummaryIdentifierAndField *identifierAndField)
|
std::set<RifEclipseSummaryAddress> RiuSummaryCurveDefSelection::findPossibleSummaryAddressesFromSelectedObservedData(const SummaryIdentifierAndField *identifierAndField)
|
||||||
{
|
{
|
||||||
std::vector<RimSummaryCase*> obsData;
|
std::vector<RimSummaryCase*> obsData;
|
||||||
for (const auto& sumCase : m_selectedCases())
|
for (const auto& source : m_selectedSources())
|
||||||
{
|
{
|
||||||
if (isObservedData(sumCase))
|
RimSummaryCase* sumCase = dynamic_cast<RimSummaryCase*>(source.p());
|
||||||
|
|
||||||
|
if (sumCase && isObservedData(sumCase))
|
||||||
{
|
{
|
||||||
obsData.push_back(sumCase);
|
obsData.push_back(sumCase);
|
||||||
}
|
}
|
||||||
@@ -964,7 +1012,7 @@ void RiuSummaryCurveDefSelection::defineEditorAttribute(const caf::PdmFieldHandl
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RiuSummaryCurveDefSelection::resetAllFields()
|
void RiuSummaryCurveDefSelection::resetAllFields()
|
||||||
{
|
{
|
||||||
m_selectedCases.clear();
|
m_selectedSources.clear();
|
||||||
m_selectedSummaryCategories = std::vector<caf::AppEnum<RifEclipseSummaryAddress::SummaryVarCategory>>();
|
m_selectedSummaryCategories = std::vector<caf::AppEnum<RifEclipseSummaryAddress::SummaryVarCategory>>();
|
||||||
|
|
||||||
// clear all state in fields
|
// clear all state in fields
|
||||||
@@ -980,27 +1028,30 @@ void RiuSummaryCurveDefSelection::resetAllFields()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool RiuSummaryCurveDefSelection::isObservedData(RimSummaryCase *sumCase) const
|
bool RiuSummaryCurveDefSelection::isObservedData(const RimSummaryCase *sumCase) const
|
||||||
{
|
{
|
||||||
return dynamic_cast<RimObservedData*>(sumCase) != nullptr;
|
return dynamic_cast<const RimObservedData*>(sumCase) != nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
std::vector<RimSummaryCase*> RiuSummaryCurveDefSelection::selectedSummaryCases() const
|
std::vector<SummarySource*> RiuSummaryCurveDefSelection::selectedSummarySources() const
|
||||||
{
|
{
|
||||||
std::vector<RimSummaryCase*> cases;
|
std::vector<SummarySource*> sources;
|
||||||
|
|
||||||
for (RimSummaryCase* currCase : m_selectedCases)
|
for (const auto& source : m_selectedSources)
|
||||||
{
|
{
|
||||||
cases.push_back(currCase);
|
RimSummaryCase* c = dynamic_cast<RimSummaryCase*>(source.p());
|
||||||
|
RimSummaryCaseCollection* cc = dynamic_cast<RimSummaryCaseCollection*>(source.p());
|
||||||
|
|
||||||
|
sources.push_back(source);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Always add the summary case for calculated curves as this case is not displayed in UI
|
// Always add the summary case for calculated curves as this case is not displayed in UI
|
||||||
cases.push_back(RiuSummaryCurveDefSelection::calculatedSummaryCase());
|
sources.push_back(RiuSummaryCurveDefSelection::calculatedSummaryCase());
|
||||||
|
|
||||||
return cases;
|
return sources;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -33,11 +33,16 @@
|
|||||||
#define OBSERVED_DATA_AVALUE_POSTFIX "_OBSDATA"
|
#define OBSERVED_DATA_AVALUE_POSTFIX "_OBSDATA"
|
||||||
|
|
||||||
class RimSummaryCase;
|
class RimSummaryCase;
|
||||||
|
class RimSummaryCaseCollection;
|
||||||
class RimSummaryCurveAutoName;
|
class RimSummaryCurveAutoName;
|
||||||
class RimSummaryPlot;
|
class RimSummaryPlot;
|
||||||
class RiaSummaryCurveDefinition;
|
class RiaSummaryCurveDefinition;
|
||||||
class SummaryIdentifierAndField;
|
class SummaryIdentifierAndField;
|
||||||
|
|
||||||
|
|
||||||
|
using SummarySource = caf::PdmObject;
|
||||||
|
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
///
|
///
|
||||||
///
|
///
|
||||||
@@ -86,13 +91,13 @@ private:
|
|||||||
std::set<RifEclipseSummaryAddress>& addressSet) const;
|
std::set<RifEclipseSummaryAddress>& addressSet) const;
|
||||||
|
|
||||||
void resetAllFields();
|
void resetAllFields();
|
||||||
bool isObservedData(RimSummaryCase *sumCase) const;
|
bool isObservedData(const RimSummaryCase *sumCase) const;
|
||||||
|
|
||||||
std::vector<RimSummaryCase*> selectedSummaryCases() const;
|
std::vector<SummarySource*> selectedSummarySources() const;
|
||||||
static RimSummaryCase* calculatedSummaryCase();
|
static RimSummaryCase* calculatedSummaryCase();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmPtrArrayField<RimSummaryCase*> m_selectedCases;
|
caf::PdmPtrArrayField<SummarySource*> m_selectedSources;
|
||||||
|
|
||||||
caf::PdmField<std::vector<caf::AppEnum<RifEclipseSummaryAddress::SummaryVarCategory>>> m_selectedSummaryCategories;
|
caf::PdmField<std::vector<caf::AppEnum<RifEclipseSummaryAddress::SummaryVarCategory>>> m_selectedSummaryCategories;
|
||||||
caf::PdmField<caf::AppEnum<RifEclipseSummaryAddress::SummaryVarCategory>> m_currentSummaryCategory;
|
caf::PdmField<caf::AppEnum<RifEclipseSummaryAddress::SummaryVarCategory>> m_currentSummaryCategory;
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ public:
|
|||||||
for (auto const plot : project->mainPlotCollection->summaryPlotCollection()->summaryPlots())
|
for (auto const plot : project->mainPlotCollection->summaryPlotCollection()->summaryPlots())
|
||||||
{
|
{
|
||||||
RimSummaryPlot* sumPlot = plot->qwtPlot()->ownerPlotDefinition();
|
RimSummaryPlot* sumPlot = plot->qwtPlot()->ownerPlotDefinition();
|
||||||
for (auto const curveSet : sumPlot->ensembleCurveSets()->curveSets())
|
for (auto const curveSet : sumPlot->ensembleCurveSetCollection()->curveSets())
|
||||||
{
|
{
|
||||||
for (auto const currSumCurve : curveSet->curves())
|
for (auto const currSumCurve : curveSet->curves())
|
||||||
{
|
{
|
||||||
@@ -219,9 +219,9 @@ void RiuSummaryQwtPlot::updateEnsembleLegendLayout()
|
|||||||
int ypos = startMarginY;
|
int ypos = startMarginY;
|
||||||
int maxColumnWidth = 0;
|
int maxColumnWidth = 0;
|
||||||
|
|
||||||
if (!ownerPlotDefinition() || !ownerPlotDefinition()->ensembleCurveSets()) return;
|
if (!ownerPlotDefinition() || !ownerPlotDefinition()->ensembleCurveSetCollection()) return;
|
||||||
|
|
||||||
for (RimEnsembleCurveSet * curveSet : ownerPlotDefinition()->ensembleCurveSets()->curveSets())
|
for (RimEnsembleCurveSet * curveSet : ownerPlotDefinition()->ensembleCurveSetCollection()->curveSets())
|
||||||
{
|
{
|
||||||
auto pairIt = m_ensembleLegendWidgets.find(curveSet);
|
auto pairIt = m_ensembleLegendWidgets.find(curveSet);
|
||||||
if (pairIt != m_ensembleLegendWidgets.end())
|
if (pairIt != m_ensembleLegendWidgets.end())
|
||||||
|
|||||||
Reference in New Issue
Block a user