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:
parent
261ccd33e5
commit
c5d4519eb1
@ -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();
|
||||
}
|
||||
|
||||
|
@ -49,6 +49,7 @@ public:
|
||||
caf::PdmField<double> lowerBound;
|
||||
caf::PdmField<double> upperBound;
|
||||
|
||||
|
||||
RimEclipsePropertyFilterCollection* parentContainer();
|
||||
void setToDefaultValues();
|
||||
void updateFilterName();
|
||||
@ -57,20 +58,27 @@ public:
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
||||
virtual void initAfterRead();
|
||||
|
||||
void updateActiveState();
|
||||
|
||||
protected:
|
||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering);
|
||||
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName);
|
||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly);
|
||||
|
||||
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute);
|
||||
|
||||
private:
|
||||
friend RimEclipsePropertyFilterCollection;
|
||||
|
||||
void updateActiveState();
|
||||
void updateFieldVisibility();
|
||||
void updateReadOnlyStateOfAllFields();
|
||||
bool isPropertyFilterControlled();
|
||||
|
||||
private:
|
||||
double m_minimumResultValue;
|
||||
caf::PdmField< std::vector<int> > selectedCategoryValues;
|
||||
caf::PdmField<bool> useRangeInsteadOfCategories;
|
||||
|
||||
double m_minimumResultValue;
|
||||
double m_maximumResultValue;
|
||||
|
||||
public:
|
||||
@ -82,6 +90,6 @@ public:
|
||||
};
|
||||
private:
|
||||
caf::PdmField< caf::AppEnum< EvaluationRegionType > > obsoleteField_evaluationRegion;
|
||||
|
||||
std::vector<int> m_uniqueCellValues;
|
||||
};
|
||||
|
||||
|
@ -424,6 +424,16 @@ bool RimEclipseResultDefinition::isTernarySaturationSelected() const
|
||||
return isTernary;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimEclipseResultDefinition::hasCategoryResult() const
|
||||
{
|
||||
if (!this->hasStaticResult()) return false;
|
||||
|
||||
return this->resultVariable().contains("NUM", Qt::CaseInsensitive);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -58,6 +58,7 @@ public:
|
||||
bool hasDynamicResult() const;
|
||||
bool hasResult() const;
|
||||
bool isTernarySaturationSelected() const;
|
||||
bool hasCategoryResult() const;
|
||||
|
||||
RimReservoirCellResultsStorage* currentGridCellResults() const;
|
||||
|
||||
|
@ -94,7 +94,9 @@ bool PdmUiOrdering::contains(const PdmUiItem* item)
|
||||
void PdmUiOrdering::add(const PdmFieldHandle* field)
|
||||
{
|
||||
PdmUiFieldHandle* uiItem = const_cast<PdmFieldHandle*>(field)->uiCapability();
|
||||
assert(uiItem);
|
||||
assert(uiItem);
|
||||
assert(!this->contains(uiItem));
|
||||
|
||||
m_ordering.push_back(uiItem);
|
||||
}
|
||||
|
||||
@ -105,6 +107,8 @@ void PdmUiOrdering::add(const PdmObjectHandle* obj)
|
||||
{
|
||||
PdmUiObjectHandle* uiItem = uiObj(const_cast<PdmObjectHandle*>(obj));
|
||||
assert(uiItem);
|
||||
assert(!this->contains(uiItem));
|
||||
|
||||
m_ordering.push_back(uiItem);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user