#837 Formation Names: Show layer names in property filter (Eclipse)

This commit is contained in:
Magne Sjaastad 2016-09-12 15:14:37 +02:00
parent cdfec7a04f
commit 384a8cc8e7
4 changed files with 80 additions and 17 deletions

View File

@ -112,3 +112,25 @@ caf::PdmFieldHandle* RimCellFilter::objectToggleField()
{
return &isActive;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimCellFilter::setCategoryValues(const std::vector<int>& categoryValues)
{
m_categoryValues = categoryValues;
m_categoryNames.clear();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimCellFilter::setCategoryNames(const std::vector<QString>& categoryNames)
{
m_categoryNames = categoryNames;
for (size_t i = 0; i < m_categoryNames.size(); i++)
{
m_categoryValues.push_back(static_cast<int>(i));
}
}

View File

@ -50,4 +50,11 @@ public:
protected:
virtual caf::PdmFieldHandle* userDescriptionField();
virtual caf::PdmFieldHandle* objectToggleField();
void setCategoryValues(const std::vector<int>& categoryValues);
void setCategoryNames(const std::vector<QString>& categoryNames);
protected:
std::vector<int> m_categoryValues;
std::vector<QString> m_categoryNames;
};

View File

@ -21,7 +21,10 @@
#include "RimEclipsePropertyFilter.h"
#include "RigCaseCellResultsData.h"
#include "RigCaseData.h"
#include "RigFormationNames.h"
#include "RimEclipseCase.h"
#include "RimEclipsePropertyFilterCollection.h"
#include "RimEclipseResultDefinition.h"
#include "RimEclipseView.h"
@ -170,7 +173,7 @@ void RimEclipsePropertyFilter::setToDefaultValues()
m_lowerBound = m_minimumResultValue;
m_upperBound = m_maximumResultValue;
m_selectedValues = m_uniqueCellValues;
m_selectedValues = m_categoryValues;
m_valueSelection = true;
updateFieldVisibility();
@ -226,10 +229,23 @@ QList<caf::PdmOptionItemInfo> RimEclipsePropertyFilter::calculateValueOptions(co
{
if (useOptionsOnly) *useOptionsOnly = true;
for (auto it : m_uniqueCellValues)
if (m_categoryValues.size() == m_categoryNames.size())
{
QString str = QString::number(it);
optionList.push_back(caf::PdmOptionItemInfo(str, it));
for (size_t i = 0; i < m_categoryValues.size(); i++)
{
int categoryValue = m_categoryValues[i];
QString categoryName = m_categoryNames[i];
optionList.push_back(caf::PdmOptionItemInfo(categoryName, categoryValue));
}
}
else
{
for (auto it : m_categoryValues)
{
QString str = QString::number(it);
optionList.push_back(caf::PdmOptionItemInfo(str, it));
}
}
}
@ -349,7 +365,8 @@ void RimEclipsePropertyFilter::computeResultValueRange()
double min = 0.0;
double max = 0.0;
m_uniqueCellValues.clear();
m_categoryValues.clear();
m_categoryNames.clear();
size_t scalarIndex = resultDefinition->scalarResultIndex();
if (scalarIndex != cvf::UNDEFINED_SIZE_T)
@ -361,7 +378,18 @@ void RimEclipsePropertyFilter::computeResultValueRange()
if (resultDefinition->hasCategoryResult())
{
m_uniqueCellValues = results->cellResults()->uniqueCellScalarValues(scalarIndex);
if (resultDefinition->resultType() != RimDefines::FORMATION_NAMES)
{
setCategoryValues(results->cellResults()->uniqueCellScalarValues(scalarIndex));
}
else
{
CVF_ASSERT(parentContainer()->reservoirView()->eclipseCase()->reservoirData());
CVF_ASSERT(parentContainer()->reservoirView()->eclipseCase()->reservoirData()->activeFormationNames());
const std::vector<QString>& fnVector = parentContainer()->reservoirView()->eclipseCase()->reservoirData()->activeFormationNames()->formationNames();
setCategoryNames(fnVector);
}
}
}
}
@ -382,22 +410,29 @@ void RimEclipsePropertyFilter::updateFilterName()
if (isValueSelectionActive())
{
if (m_selectedValues().size() == m_uniqueCellValues.size())
if (m_categoryNames.size() > 0)
{
newFiltername += QString::number(m_selectedValues()[0]);
newFiltername += "..";
newFiltername += QString::number(m_selectedValues()[m_selectedValues().size() - 1]);
newFiltername += "...";
}
else
{
for (size_t i = 0; i < m_selectedValues().size(); i++)
if (m_selectedValues().size() == m_categoryValues.size())
{
int val = m_selectedValues()[i];
newFiltername += QString::number(val);
if (i < m_selectedValues().size() - 1)
newFiltername += QString::number(m_selectedValues()[0]);
newFiltername += "..";
newFiltername += QString::number(m_selectedValues()[m_selectedValues().size() - 1]);
}
else
{
for (size_t i = 0; i < m_selectedValues().size(); i++)
{
newFiltername += ", ";
int val = m_selectedValues()[i];
newFiltername += QString::number(val);
if (i < m_selectedValues().size() - 1)
{
newFiltername += ", ";
}
}
}
}

View File

@ -93,6 +93,5 @@ public:
};
private:
caf::PdmField< caf::AppEnum< EvaluationRegionType > > obsoleteField_evaluationRegion;
std::vector<int> m_uniqueCellValues;
};