#1841 Curve creator. Improved case selection. Case grouping

This commit is contained in:
Bjørn Erik Jensen
2017-09-18 14:49:31 +02:00
parent 3c3c8fe44b
commit 6892273188
6 changed files with 92 additions and 10 deletions

View File

@@ -44,6 +44,9 @@
#include <algorithm>
#include <sstream>
#include <stack>
#include "RimSummaryCaseMainCollection.h"
#include "RimOilField.h"
#include "RimSummaryCaseCollection.h"
CAF_PDM_SOURCE_INIT(RicSummaryCurveCreator, "RicSummaryCurveCreator");
@@ -339,13 +342,50 @@ QList<caf::PdmOptionItemInfo> RicSummaryCurveCreator::calculateValueOptions(cons
if (fieldNeedingOptions == &m_selectedCases)
{
RimProject* proj = RiaApplication::instance()->project();
std::vector<RimSummaryCase*> cases;
std::vector<RimSummaryCase*> topLevelCases;
std::vector<RimOilField*> oilFields;
proj->allSummaryCases(cases);
for (RimSummaryCase* rimCase : cases)
proj->allOilFields(oilFields);
for (RimOilField* oilField : oilFields)
{
options.push_back(caf::PdmOptionItemInfo(rimCase->caseName(), rimCase));
RimSummaryCaseMainCollection* sumCaseMainColl = oilField->summaryCaseMainCollection();
if (sumCaseMainColl)
{
// Top level cases
for (const auto& sumCase : sumCaseMainColl->topLevelSummaryCases())
{
options.push_back(caf::PdmOptionItemInfo(sumCase->caseName(), sumCase));
}
// Grouped cases
for (const auto& sumCaseColl : sumCaseMainColl->summaryCaseCollections())
{
options.push_back(caf::PdmOptionItemInfo::createHeader(sumCaseColl->name(), true));
for (const auto& sumCase : sumCaseColl->allSummaryCases())
{
auto optionItem = caf::PdmOptionItemInfo(sumCase->caseName(), sumCase);
optionItem.setLevel(1);
options.push_back(optionItem);
}
}
// Observed cases
// Under construction...
//auto observedCases = sumCaseMainColl->topLevelSummaryCases/*observedCases*/();
//if (observedCases.size() > 0)
//{
// options.push_back(caf::PdmOptionItemInfo::createHeader("Observed Summary Cases", true));
// for (const auto& sumCase : observedCases)
// {
// auto optionItem = caf::PdmOptionItemInfo(sumCase->caseName(), sumCase);
// optionItem.setLevel(1);
// options.push_back(optionItem);
// }
//}
}
}
}
else if (fieldNeedingOptions == &m_targetPlot)

View File

@@ -630,6 +630,18 @@ void RimProject::createDisplayModelAndRedrawAllViews()
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimProject::allOilFields(std::vector<RimOilField*>& oilFields)
{
oilFields.clear();
for (const auto& oilField : this->oilFields)
{
oilFields.push_back(oilField);
}
}
//--------------------------------------------------------------------------------------------------
/// Currently there will be only one oil field in Resinsight, so return hardcoded first oil field
/// from the RimOilField collection.

View File

@@ -101,8 +101,9 @@ public:
void computeUtmAreaOfInterest();
RimOilField* activeOilField();
const RimOilField* activeOilField() const;
void allOilFields(std::vector<RimOilField*>& oilFields);
RimOilField* activeOilField();
const RimOilField* activeOilField() const;
void actionsBasedOnSelection(QMenu& contextMenu);

View File

@@ -35,7 +35,8 @@ public:
void removeCase(RimSummaryCase* summaryCase);
void addCase(RimSummaryCase* summaryCase);
std::vector<RimSummaryCase*> allSummaryCases();
std::vector<RimSummaryCase*> allSummaryCases();
QString name() const { return m_name; }
private:
virtual caf::PdmFieldHandle* userDescriptionField() override;

View File

@@ -225,6 +225,32 @@ std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::allSummaryCases()
return cases;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::topLevelSummaryCases() const
{
std::vector<RimSummaryCase*> cases;
for (const auto& sumCase : m_cases)
{
cases.push_back(sumCase);
}
return cases;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimSummaryCaseCollection*> RimSummaryCaseMainCollection::summaryCaseCollections() const
{
std::vector<RimSummaryCaseCollection*> summaryCaseCollections;
for (const auto& caseColl : m_caseCollections)
{
summaryCaseCollections.push_back(caseColl);
}
return summaryCaseCollections;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -39,8 +39,10 @@ public:
RimSummaryCase* summaryCase(size_t idx);
size_t summaryCaseCount() const;
std::vector<RimSummaryCase*> allSummaryCases();
std::vector<RimSummaryCase*> allSummaryCases();
std::vector<RimSummaryCase*> topLevelSummaryCases() const;
std::vector<RimSummaryCaseCollection*> summaryCaseCollections() const;
void createSummaryCasesFromRelevantEclipseResultCases();
RimSummaryCase* createAndAddSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase);
RimSummaryCase* createAndAddSummaryCaseFromFileName(const QString& fileName);