mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2660 Ensemble filtering. Fix sliders and labels
This commit is contained in:
parent
8d0149b4e9
commit
14cf6470f0
@ -28,15 +28,16 @@
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimEnsembleCurveFilter, "RimEnsembleCurveFilter");
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimEnsembleCurveFilter::RimEnsembleCurveFilter()
|
||||
RimEnsembleCurveFilter::RimEnsembleCurveFilter() : m_lowerLimit(0), m_upperLimit(0)
|
||||
{
|
||||
CAF_PDM_InitObject("Ensemble Curve Filter", ":/EnsembleCurveSet16x16.png", "", "");
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_active, "Active", "Active", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_ensembleParameter, "EnsembleParameter", "Ensemble Parameter", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_ensembleParameterName, "EnsembleParameter", "Ensemble Parameter", "", "", "");
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_minValue, "MinValue", "Min", "", "", "");
|
||||
m_minValue.uiCapability()->setUiEditorTypeName(caf::PdmUiDoubleSliderEditor::uiEditorTypeName());
|
||||
@ -74,7 +75,7 @@ QList<caf::PdmOptionItemInfo> RimEnsembleCurveFilter::calculateValueOptions(cons
|
||||
{
|
||||
QList<caf::PdmOptionItemInfo> options;
|
||||
|
||||
if (fieldNeedingOptions == &m_ensembleParameter)
|
||||
if (fieldNeedingOptions == &m_ensembleParameterName)
|
||||
{
|
||||
auto curveSet = parentCurveSet();
|
||||
if (curveSet)
|
||||
@ -90,7 +91,7 @@ QList<caf::PdmOptionItemInfo> RimEnsembleCurveFilter::calculateValueOptions(cons
|
||||
{
|
||||
auto curveSet = parentCurveSet();
|
||||
auto ensemble = curveSet ? curveSet->summaryCaseCollection() : nullptr;
|
||||
auto eParam = ensemble ? ensemble->ensembleParameter(m_ensembleParameter) : EnsembleParameter();
|
||||
auto eParam = ensemble ? ensemble->ensembleParameter(m_ensembleParameterName) : EnsembleParameter();
|
||||
|
||||
if (eParam.isText())
|
||||
{
|
||||
@ -111,15 +112,12 @@ void RimEnsembleCurveFilter::fieldChangedByUi(const caf::PdmFieldHandle* changed
|
||||
{
|
||||
auto curveSet = parentCurveSet();
|
||||
|
||||
if (changedField == &m_ensembleParameter)
|
||||
if (changedField == &m_ensembleParameterName)
|
||||
{
|
||||
auto ensemble = curveSet ? curveSet->summaryCaseCollection() : nullptr;
|
||||
auto eParam = ensemble ? ensemble->ensembleParameter(m_ensembleParameter) : EnsembleParameter();
|
||||
|
||||
auto eParam = selectedEnsembleParameter();
|
||||
if (eParam.isNumeric())
|
||||
{
|
||||
m_minValue = eParam.minValue;
|
||||
m_maxValue = eParam.maxValue;
|
||||
setDefaultValues();
|
||||
}
|
||||
else if (eParam.isText())
|
||||
{
|
||||
@ -145,11 +143,9 @@ void RimEnsembleCurveFilter::fieldChangedByUi(const caf::PdmFieldHandle* changed
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEnsembleCurveFilter::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||
{
|
||||
auto curveSet = parentCurveSet();
|
||||
auto ensemble = curveSet ? curveSet->summaryCaseCollection() : nullptr;
|
||||
auto eParam = ensemble ? ensemble->ensembleParameter(m_ensembleParameter) : EnsembleParameter();
|
||||
auto eParam = selectedEnsembleParameter();
|
||||
|
||||
uiOrdering.add(&m_ensembleParameter);
|
||||
uiOrdering.add(&m_ensembleParameterName);
|
||||
|
||||
if (eParam.isNumeric())
|
||||
{
|
||||
@ -164,6 +160,24 @@ void RimEnsembleCurveFilter::defineUiOrdering(QString uiConfigName, caf::PdmUiOr
|
||||
uiOrdering.skipRemainingFields(true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEnsembleCurveFilter::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute)
|
||||
{
|
||||
if (field == &m_minValue || field == &m_maxValue)
|
||||
{
|
||||
caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast<caf::PdmUiDoubleSliderEditorAttribute*>(attribute);
|
||||
if (!myAttr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
myAttr->m_minimum = m_lowerLimit;
|
||||
myAttr->m_maximum = m_upperLimit;
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -176,11 +190,11 @@ std::vector<RimSummaryCase*> RimEnsembleCurveFilter::applyFilter(const std::vect
|
||||
std::set<RimSummaryCase*> casesToRemove;
|
||||
for (const auto& sumCase : allSumCases)
|
||||
{
|
||||
auto eParam = ensemble->ensembleParameter(m_ensembleParameter());
|
||||
auto eParam = ensemble->ensembleParameter(m_ensembleParameterName());
|
||||
if (!eParam.isValid()) continue;
|
||||
if (!sumCase->caseRealizationParameters()) continue;
|
||||
|
||||
auto crpValue = sumCase->caseRealizationParameters()->parameterValue(m_ensembleParameter());
|
||||
auto crpValue = sumCase->caseRealizationParameters()->parameterValue(m_ensembleParameterName());
|
||||
|
||||
if (eParam.isNumeric())
|
||||
{
|
||||
@ -210,6 +224,14 @@ std::vector<RimSummaryCase*> RimEnsembleCurveFilter::applyFilter(const std::vect
|
||||
return filteredCases;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEnsembleCurveFilter::loadDataAndUpdate()
|
||||
{
|
||||
setDefaultValues();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -227,3 +249,29 @@ RimEnsembleCurveSet * RimEnsembleCurveFilter::parentCurveSet() const
|
||||
firstAncestorOrThisOfType(curveSet);
|
||||
return curveSet;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEnsembleCurveFilter::setDefaultValues()
|
||||
{
|
||||
auto eParam = selectedEnsembleParameter();
|
||||
if (eParam.isValid() && eParam.isNumeric())
|
||||
{
|
||||
m_lowerLimit = m_minValue = eParam.minValue;
|
||||
m_upperLimit = m_maxValue = eParam.maxValue;
|
||||
|
||||
m_minValue.uiCapability()->setUiName(QString("Min (%1)").arg(m_lowerLimit));
|
||||
m_maxValue.uiCapability()->setUiName(QString("Max (%1)").arg(m_upperLimit));
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
EnsembleParameter RimEnsembleCurveFilter::selectedEnsembleParameter() const
|
||||
{
|
||||
auto curveSet = parentCurveSet();
|
||||
auto ensemble = curveSet ? curveSet->summaryCaseCollection() : nullptr;
|
||||
return ensemble ? ensemble->ensembleParameter(m_ensembleParameterName) : EnsembleParameter();
|
||||
}
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "cafPdmField.h"
|
||||
#include "cafPdmObject.h"
|
||||
|
||||
class EnsembleParameter;
|
||||
class RimEnsembleCurveSet;
|
||||
class RimSummaryCase;
|
||||
|
||||
@ -39,22 +40,30 @@ public:
|
||||
std::set<QString> categories() const;
|
||||
|
||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) override;
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
||||
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute);
|
||||
|
||||
std::vector<RimSummaryCase*> applyFilter(const std::vector<RimSummaryCase*>& allSumCases);
|
||||
std::vector<RimSummaryCase*> applyFilter(const std::vector<RimSummaryCase*>& allSumCases);
|
||||
|
||||
void loadDataAndUpdate();
|
||||
|
||||
protected:
|
||||
virtual caf::PdmFieldHandle* objectToggleField();
|
||||
|
||||
private:
|
||||
RimEnsembleCurveSet * parentCurveSet() const;
|
||||
void setDefaultValues();
|
||||
EnsembleParameter selectedEnsembleParameter() const;
|
||||
|
||||
private:
|
||||
caf::PdmField<bool> m_active;
|
||||
caf::PdmField<QString> m_ensembleParameter;
|
||||
caf::PdmField<QString> m_ensembleParameterName;
|
||||
caf::PdmField<double> m_minValue;
|
||||
caf::PdmField<double> m_maxValue;
|
||||
caf::PdmField<std::vector<QString>> m_categories;
|
||||
|
||||
double m_lowerLimit;
|
||||
double m_upperLimit;
|
||||
};
|
||||
|
||||
|
@ -76,6 +76,16 @@ bool RimEnsembleCurveFilterCollection::isActive() const
|
||||
return m_active;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QList<caf::PdmOptionItemInfo> RimEnsembleCurveFilterCollection::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly)
|
||||
{
|
||||
QList<caf::PdmOptionItemInfo> options;
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -89,6 +99,22 @@ void RimEnsembleCurveFilterCollection::fieldChangedByUi(const caf::PdmFieldHandl
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEnsembleCurveFilterCollection::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEnsembleCurveFilterCollection::loadDataAndUpdate()
|
||||
{
|
||||
for (auto& filter : m_filters) filter->loadDataAndUpdate();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -42,7 +42,11 @@ public:
|
||||
|
||||
bool isActive() const;
|
||||
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) override;
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
||||
|
||||
void loadDataAndUpdate();
|
||||
|
||||
protected:
|
||||
virtual caf::PdmFieldHandle* objectToggleField();
|
||||
|
@ -221,6 +221,8 @@ void RimEnsembleCurveSet::loadDataAndUpdate(bool updateParentPlot)
|
||||
firstAncestorOrThisOfTypeAsserted(parentPlot);
|
||||
parentPlot->updateAll();
|
||||
}
|
||||
|
||||
m_curveFilters->loadDataAndUpdate();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user