mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Merge branch 'dev' of https://github.com/OPM/ResInsight.git
This commit is contained in:
commit
1326912b7c
@ -333,6 +333,7 @@ void RicSummaryCurveCreator::fieldChangedByUi(const caf::PdmFieldHandle* changed
|
|||||||
// Lookup item type input field
|
// Lookup item type input field
|
||||||
auto identifierAndField = lookupIdentifierAndFieldFromFieldHandle(changedField);
|
auto identifierAndField = lookupIdentifierAndFieldFromFieldHandle(changedField);
|
||||||
if (changedField == &m_selectedCases ||
|
if (changedField == &m_selectedCases ||
|
||||||
|
changedField == &m_selectedSummaryCategories ||
|
||||||
identifierAndField != nullptr)
|
identifierAndField != nullptr)
|
||||||
{
|
{
|
||||||
loadDataAndUpdatePlot();
|
loadDataAndUpdatePlot();
|
||||||
@ -418,19 +419,41 @@ QList<caf::PdmOptionItemInfo> RicSummaryCurveCreator::calculateValueOptions(cons
|
|||||||
auto identifierAndField = lookupIdentifierAndFieldFromFieldHandle(fieldNeedingOptions);
|
auto identifierAndField = lookupIdentifierAndFieldFromFieldHandle(fieldNeedingOptions);
|
||||||
if (identifierAndField != nullptr)
|
if (identifierAndField != nullptr)
|
||||||
{
|
{
|
||||||
|
enum {SUM_CASES, OBS_DATA};
|
||||||
|
bool includeObservedData = identifierAndField->summaryIdentifier() == RifEclipseSummaryAddress::INPUT_VECTOR_NAME;
|
||||||
|
std::set<RifEclipseSummaryAddress> addrUnion[2];
|
||||||
|
addrUnion[SUM_CASES] = findPossibleSummaryAddressesFromSelectedCases(identifierAndField);
|
||||||
|
addrUnion[OBS_DATA] = includeObservedData ?
|
||||||
|
findPossibleSummaryAddressesFromSelectedObservedData(identifierAndField) : std::set<RifEclipseSummaryAddress>();
|
||||||
|
|
||||||
auto pdmField = identifierAndField->pdmField();
|
auto pdmField = identifierAndField->pdmField();
|
||||||
std::set<RifEclipseSummaryAddress> addrUnion = findPossibleSummaryAddresses(identifierAndField);
|
|
||||||
std::set<QString> itemNames;
|
std::set<QString> itemNames;
|
||||||
|
|
||||||
for (const auto& address : addrUnion)
|
for(int i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
auto name = QString::fromStdString(address.uiText(identifierAndField->summaryIdentifier()));
|
for (const auto& address : addrUnion[i])
|
||||||
if (!name.isEmpty())
|
{
|
||||||
itemNames.insert(name);
|
auto name = QString::fromStdString(address.uiText(identifierAndField->summaryIdentifier()));
|
||||||
}
|
if (!name.isEmpty())
|
||||||
for (const auto& iName : itemNames)
|
itemNames.insert(name);
|
||||||
{
|
}
|
||||||
options.push_back(caf::PdmOptionItemInfo(iName, iName));
|
|
||||||
|
// Create headers only when observed data is selected
|
||||||
|
bool createHeaders = addrUnion[OBS_DATA].size() > 0;
|
||||||
|
if (createHeaders)
|
||||||
|
{
|
||||||
|
auto headerText = i == SUM_CASES ? QString("Simulated Data") : QString("Observed Data");
|
||||||
|
options.push_back(caf::PdmOptionItemInfo::createHeader(headerText, true));
|
||||||
|
}
|
||||||
|
for (const auto& iName : itemNames)
|
||||||
|
{
|
||||||
|
auto optionItem = caf::PdmOptionItemInfo(iName, iName);
|
||||||
|
if (createHeaders)
|
||||||
|
optionItem.setLevel(1);
|
||||||
|
options.push_back(optionItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!includeObservedData) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -601,10 +624,35 @@ void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOr
|
|||||||
uiOrdering.skipRemainingFields(true);
|
uiOrdering.skipRemainingFields(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::set<RifEclipseSummaryAddress> RicSummaryCurveCreator::findPossibleSummaryAddressesFromSelectedCases(const SummaryIdentifierAndField *identifierAndField)
|
||||||
|
{
|
||||||
|
std::vector<RimSummaryCase*> cases;
|
||||||
|
for (const auto& sumCase: m_selectedCases)
|
||||||
|
{
|
||||||
|
if(typeid(sumCase) == typeid(RimObservedData)) continue;
|
||||||
|
cases.push_back(sumCase);
|
||||||
|
}
|
||||||
|
return findPossibleSummaryAddresses(cases, identifierAndField);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::set<RifEclipseSummaryAddress> RicSummaryCurveCreator::findPossibleSummaryAddressesFromSelectedObservedData(const SummaryIdentifierAndField *identifierAndField)
|
||||||
|
{
|
||||||
|
std::vector<RimSummaryCase*> obsData;
|
||||||
|
for (const auto& sumCase : m_selectedCases)
|
||||||
|
{
|
||||||
|
if (typeid(sumCase) == typeid(RimObservedData))
|
||||||
|
{
|
||||||
|
obsData.push_back(sumCase);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return findPossibleSummaryAddresses(obsData, identifierAndField);
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
/// Returns the summary addresses that match the selected item type and input selections made in GUI
|
/// Returns the summary addresses that match the selected item type and input selections made in GUI
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
std::set<RifEclipseSummaryAddress> RicSummaryCurveCreator::findPossibleSummaryAddresses(const SummaryIdentifierAndField *identifierAndField)
|
std::set<RifEclipseSummaryAddress> RicSummaryCurveCreator::findPossibleSummaryAddresses(const std::vector<RimSummaryCase*> &selectedCases,
|
||||||
|
const SummaryIdentifierAndField *identifierAndField)
|
||||||
{
|
{
|
||||||
std::set<RifEclipseSummaryAddress> addrUnion;
|
std::set<RifEclipseSummaryAddress> addrUnion;
|
||||||
|
|
||||||
@ -615,7 +663,7 @@ std::set<RifEclipseSummaryAddress> RicSummaryCurveCreator::findPossibleSummaryAd
|
|||||||
return addrUnion;
|
return addrUnion;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (RimSummaryCase* currCase : m_selectedCases)
|
for (RimSummaryCase* currCase : selectedCases)
|
||||||
{
|
{
|
||||||
RifReaderEclipseSummary* reader = nullptr;
|
RifReaderEclipseSummary* reader = nullptr;
|
||||||
if (currCase && currCase->caseData()) reader = currCase->caseData()->summaryReader();
|
if (currCase && currCase->caseData()) reader = currCase->caseData()->summaryReader();
|
||||||
@ -738,10 +786,11 @@ bool RicSummaryCurveCreator::isAddressCompatibleWithControllingFieldSelection(co
|
|||||||
std::set<RifEclipseSummaryAddress> RicSummaryCurveCreator::buildAddressListFromSelections()
|
std::set<RifEclipseSummaryAddress> RicSummaryCurveCreator::buildAddressListFromSelections()
|
||||||
{
|
{
|
||||||
std::set<RifEclipseSummaryAddress> addressSet;
|
std::set<RifEclipseSummaryAddress> addressSet;
|
||||||
for (const auto& identifierAndFieldList : m_identifierFieldsMap)
|
for (const auto& category : m_selectedSummaryCategories())
|
||||||
{
|
{
|
||||||
|
auto identifierAndFieldList = m_identifierFieldsMap[category];
|
||||||
std::vector<std::pair<RifEclipseSummaryAddress::SummaryIdentifierType, QString>> selectionStack;
|
std::vector<std::pair<RifEclipseSummaryAddress::SummaryIdentifierType, QString>> selectionStack;
|
||||||
buildAddressListForCategoryRecursively(identifierAndFieldList.first, identifierAndFieldList.second.begin(), addressSet, selectionStack);
|
buildAddressListForCategoryRecursively(category, identifierAndFieldList.begin(), addressSet, selectionStack);
|
||||||
}
|
}
|
||||||
return addressSet;
|
return addressSet;
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,11 @@ private:
|
|||||||
caf::PdmUiEditorAttribute* attribute) override;
|
caf::PdmUiEditorAttribute* attribute) override;
|
||||||
|
|
||||||
|
|
||||||
std::set<RifEclipseSummaryAddress> findPossibleSummaryAddresses(const SummaryIdentifierAndField *identifierAndField);
|
std::set<RifEclipseSummaryAddress> findPossibleSummaryAddresses(const std::vector<RimSummaryCase*> &selectedCases,
|
||||||
|
const SummaryIdentifierAndField *identifierAndField);
|
||||||
|
std::set<RifEclipseSummaryAddress> findPossibleSummaryAddressesFromSelectedCases(const SummaryIdentifierAndField *identifierAndField);
|
||||||
|
std::set<RifEclipseSummaryAddress> findPossibleSummaryAddressesFromSelectedObservedData(const SummaryIdentifierAndField *identifierAndField);
|
||||||
|
|
||||||
std::vector<SummaryIdentifierAndField*> buildControllingFieldList(const SummaryIdentifierAndField *identifierAndField);
|
std::vector<SummaryIdentifierAndField*> buildControllingFieldList(const SummaryIdentifierAndField *identifierAndField);
|
||||||
SummaryIdentifierAndField* lookupIdentifierAndFieldFromFieldHandle(const caf::PdmFieldHandle* pdmFieldHandle);
|
SummaryIdentifierAndField* lookupIdentifierAndFieldFromFieldHandle(const caf::PdmFieldHandle* pdmFieldHandle);
|
||||||
SummaryIdentifierAndField* lookupControllingField(const SummaryIdentifierAndField *dependentField);
|
SummaryIdentifierAndField* lookupControllingField(const SummaryIdentifierAndField *dependentField);
|
||||||
|
Loading…
Reference in New Issue
Block a user