mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#282 Added category list if category values are present
This commit is contained in:
@@ -75,6 +75,11 @@ RimEclipsePropertyFilter::RimEclipsePropertyFilter()
|
||||
CAF_PDM_InitField(&upperBound, "UpperBound", 0.0, "Max", "", "", "");
|
||||
upperBound.uiCapability()->setUiEditorTypeName(caf::PdmUiDoubleSliderEditor::uiEditorTypeName());
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&selectedCategoryValues, "SelectedCategoryValues", "Categories", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&useRangeInsteadOfCategories, "UseRangeInsteadOfCategories", false, "Use Range selection for Categories", "", "", "");
|
||||
upperBound.uiCapability()->setUiEditorTypeName(caf::PdmUiDoubleSliderEditor::uiEditorTypeName());
|
||||
|
||||
updateIconState();
|
||||
|
||||
m_minimumResultValue = cvf::UNDEFINED_DOUBLE;
|
||||
@@ -97,8 +102,7 @@ void RimEclipsePropertyFilter::fieldChangedByUi(const caf::PdmFieldHandle* chang
|
||||
if (&name == changedField)
|
||||
{
|
||||
}
|
||||
|
||||
if ( &lowerBound == changedField
|
||||
else if ( &lowerBound == changedField
|
||||
|| &upperBound == changedField
|
||||
|| &obsoleteField_evaluationRegion == changedField
|
||||
|| &isActive == changedField
|
||||
@@ -110,6 +114,10 @@ void RimEclipsePropertyFilter::fieldChangedByUi(const caf::PdmFieldHandle* chang
|
||||
|
||||
parentContainer()->updateDisplayModelNotifyManagedViews();
|
||||
}
|
||||
else if (&useRangeInsteadOfCategories == changedField)
|
||||
{
|
||||
updateFieldVisibility();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -131,6 +139,11 @@ void RimEclipsePropertyFilter::setToDefaultValues()
|
||||
|
||||
lowerBound = m_minimumResultValue;
|
||||
upperBound = m_maximumResultValue;
|
||||
|
||||
selectedCategoryValues = std::vector<int>();
|
||||
useRangeInsteadOfCategories = false;
|
||||
|
||||
updateFieldVisibility();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -150,11 +163,13 @@ void RimEclipsePropertyFilter::defineUiOrdering(QString uiConfigName, caf::PdmUi
|
||||
// Fields declared in RimCellFilter
|
||||
uiOrdering.add(&isActive);
|
||||
uiOrdering.add(&filterMode);
|
||||
uiOrdering.add(&useRangeInsteadOfCategories);
|
||||
|
||||
// Fields declared in this class (RimCellPropertyFilter)
|
||||
uiOrdering.add(&lowerBound);
|
||||
uiOrdering.add(&upperBound);
|
||||
uiOrdering.add(&filterMode);
|
||||
|
||||
uiOrdering.add(&selectedCategoryValues);
|
||||
|
||||
updateReadOnlyStateOfAllFields();
|
||||
}
|
||||
@@ -169,6 +184,27 @@ void RimEclipsePropertyFilter::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTr
|
||||
updateActiveState();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QList<caf::PdmOptionItemInfo> RimEclipsePropertyFilter::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly)
|
||||
{
|
||||
QList<caf::PdmOptionItemInfo> optionList;
|
||||
|
||||
if (&selectedCategoryValues == fieldNeedingOptions)
|
||||
{
|
||||
if (useOptionsOnly) *useOptionsOnly = true;
|
||||
|
||||
for (auto it : m_uniqueCellValues)
|
||||
{
|
||||
QString str = QString::number(it);
|
||||
optionList.push_back(caf::PdmOptionItemInfo(str, it));
|
||||
}
|
||||
}
|
||||
|
||||
return optionList;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -217,6 +253,38 @@ void RimEclipsePropertyFilter::updateActiveState()
|
||||
isActive.uiCapability()->setUiReadOnly(isPropertyFilterControlled());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEclipsePropertyFilter::updateFieldVisibility()
|
||||
{
|
||||
if (resultDefinition->hasCategoryResult())
|
||||
{
|
||||
useRangeInsteadOfCategories.uiCapability()->setUiHidden(false);
|
||||
|
||||
if (useRangeInsteadOfCategories)
|
||||
{
|
||||
selectedCategoryValues.uiCapability()->setUiHidden(true);
|
||||
lowerBound.uiCapability()->setUiHidden(false);
|
||||
upperBound.uiCapability()->setUiHidden(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
selectedCategoryValues.uiCapability()->setUiHidden(false);
|
||||
lowerBound.uiCapability()->setUiHidden(true);
|
||||
upperBound.uiCapability()->setUiHidden(true);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lowerBound.uiCapability()->setUiHidden(false);
|
||||
upperBound.uiCapability()->setUiHidden(false);
|
||||
|
||||
selectedCategoryValues.uiCapability()->setUiHidden(true);
|
||||
useRangeInsteadOfCategories.uiCapability()->setUiHidden(true);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -250,6 +318,8 @@ void RimEclipsePropertyFilter::computeResultValueRange()
|
||||
double min = 0.0;
|
||||
double max = 0.0;
|
||||
|
||||
m_uniqueCellValues.clear();
|
||||
|
||||
size_t scalarIndex = resultDefinition->scalarResultIndex();
|
||||
if (scalarIndex != cvf::UNDEFINED_SIZE_T)
|
||||
{
|
||||
@@ -257,6 +327,16 @@ void RimEclipsePropertyFilter::computeResultValueRange()
|
||||
if (results)
|
||||
{
|
||||
results->cellResults()->minMaxCellScalarValues(scalarIndex, min, max);
|
||||
|
||||
if (resultDefinition->hasCategoryResult())
|
||||
{
|
||||
std::set<int> vals = results->cellResults()->uniqueCellScalarValues(scalarIndex);
|
||||
|
||||
for (auto val : vals)
|
||||
{
|
||||
m_uniqueCellValues.push_back(val);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -291,5 +371,6 @@ void RimEclipsePropertyFilter::initAfterRead()
|
||||
resultDefinition->loadResult();
|
||||
updateIconState();
|
||||
computeResultValueRange();
|
||||
updateFieldVisibility();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user