#1305 Update filter UI fields when address is set on filter

This commit is contained in:
Magne Sjaastad 2017-03-09 08:04:02 +01:00
parent deb62d8198
commit 1309c25058
3 changed files with 119 additions and 14 deletions

View File

@ -212,7 +212,7 @@ RimSummaryCase* RimSummaryCurve::summaryCase()
//--------------------------------------------------------------------------------------------------
void RimSummaryCurve::setVariable(QString varName)
{
m_curveVariable->setAddress(RifEclipseSummaryAddress::fieldVarAddress(varName.toStdString()));
setSummaryAddress(RifEclipseSummaryAddress::fieldVarAddress(varName.toStdString()));
}
//--------------------------------------------------------------------------------------------------
@ -229,6 +229,8 @@ RifEclipseSummaryAddress RimSummaryCurve::summaryAddress()
void RimSummaryCurve::setSummaryAddress(const RifEclipseSummaryAddress& address)
{
m_curveVariable->setAddress(address);
m_summaryFilter->updateFromAddress(address);
}
//--------------------------------------------------------------------------------------------------

View File

@ -78,8 +78,112 @@ RimSummaryFilter::~RimSummaryFilter()
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString cellIJKString(int cellI, int cellJ, int cellK)
{
QString ijkString;
if (cellI >= 0 && cellJ >= 0 && cellK >= 0)
{
ijkString = QString::number(cellI) + ", " + QString::number(cellJ) + ", " + QString::number(cellK);
}
return ijkString;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryFilter::updateFromAddress(const RifEclipseSummaryAddress& address)
{
RifEclipseSummaryAddress::SummaryVarCategory category = address.category();
m_filterQuantityName = QString::fromStdString(address.quantityName());
switch (category)
{
case RifEclipseSummaryAddress::SUMMARY_INVALID:
m_filterType = SUM_FILTER_VAR_STRING;
break;
case RifEclipseSummaryAddress::SUMMARY_FIELD:
m_filterType = SUM_FILTER_FIELD;
break;
case RifEclipseSummaryAddress::SUMMARY_AQUIFER:
m_filterType = SUM_FILTER_AQUIFER;
break;
case RifEclipseSummaryAddress::SUMMARY_NETWORK:
m_filterType = SUM_FILTER_NETWORK;
break;
case RifEclipseSummaryAddress::SUMMARY_MISC:
m_filterType = SUM_FILTER_MISC;
break;
case RifEclipseSummaryAddress::SUMMARY_REGION:
m_filterType = SUM_FILTER_REGION;
m_regionNumberFilter= QString("%1").arg(address.regionNumber());
break;
case RifEclipseSummaryAddress::SUMMARY_REGION_2_REGION:
m_filterType = SUM_FILTER_REGION_2_REGION;
m_regionNumberFilter = QString("%1").arg(address.regionNumber());
m_regionNumber2Filter = QString("%1").arg(address.regionNumber2());
break;
case RifEclipseSummaryAddress::SUMMARY_WELL_GROUP:
m_filterType = SUM_FILTER_WELL_GROUP;
m_wellGroupNameFilter = QString::fromStdString(address.wellGroupName());
break;
case RifEclipseSummaryAddress::SUMMARY_WELL:
m_filterType = SUM_FILTER_WELL;
m_wellNameFilter = QString::fromStdString(address.wellName());
break;
case RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION:
m_filterType = SUM_FILTER_WELL_COMPLETION;
m_wellNameFilter = QString::fromStdString(address.wellName());
m_cellIJKFilter = cellIJKString(address.cellI(), address.cellJ(), address.cellK());
break;
case RifEclipseSummaryAddress::SUMMARY_WELL_LGR:
m_filterType = SUM_FILTER_WELL_LGR;
m_wellNameFilter= QString::fromStdString(address.wellName());
m_lgrNameFilter = QString::fromStdString(address.lgrName());
break;
case RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION_LGR:
m_filterType = SUM_FILTER_WELL_COMPLETION_LGR;
m_wellNameFilter = QString::fromStdString(address.wellName());
m_lgrNameFilter = QString::fromStdString(address.lgrName());
m_cellIJKFilter = cellIJKString(address.cellI(), address.cellJ(), address.cellK());
break;
case RifEclipseSummaryAddress::SUMMARY_WELL_SEGMENT:
m_filterType = SUM_FILTER_WELL_SEGMENT;
m_wellNameFilter = QString::fromStdString(address.wellName());
m_wellSegmentNumberFilter = QString("%1").arg(address.wellSegmentNumber());
break;
case RifEclipseSummaryAddress::SUMMARY_BLOCK:
m_filterType = SUM_FILTER_BLOCK;
m_cellIJKFilter = cellIJKString(address.cellI(), address.cellJ(), address.cellK());
break;
case RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR:
m_filterType = SUM_FILTER_BLOCK_LGR;
m_lgrNameFilter = QString::fromStdString(address.lgrName());
m_cellIJKFilter = cellIJKString(address.cellI(), address.cellJ(), address.cellK());
break;
default:
break;
}
}
bool isNumberMatch(QString numericalFilterString, int number)
{
@ -119,11 +223,7 @@ bool isIJKMatch(QString filterString, int cellI, int cellJ, int cellK)
else return false;
}
QString ijkString;
if(cellI >= 0 && cellJ >= 0 && cellK >= 0)
{
ijkString = QString::number(cellI) + ", " + QString::number(cellJ) + ", " + QString::number(cellK);
}
QString ijkString = cellIJKString(cellI, cellJ, cellK);
// Todo: Ranges, and lists
QRegExp searcher(filterString, Qt::CaseInsensitive, QRegExp::WildcardUnix);

View File

@ -17,9 +17,11 @@
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "RifEclipseSummaryAddress.h"
#include "cafPdmField.h"
#include "cafPdmObject.h"
#include "RifEclipseSummaryAddress.h"
class RimSummaryFilter: public caf::PdmObject
{
@ -49,18 +51,22 @@ public:
RimSummaryFilter();
virtual ~RimSummaryFilter();
bool isIncludedByFilter(const RifEclipseSummaryAddress& addr) const;
void updateFromAddress(const RifEclipseSummaryAddress& address);
void setCompleteVarStringFilter(const QString& stringFilter);
void setCompleteVarStringFilter(const QString& stringFilter);
bool isIncludedByFilter(const RifEclipseSummaryAddress& addr) const;
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
private:
friend class RimSummaryCurve;
friend class RimSummaryCurveFilter;
static bool isSumVarTypeMatchingFilterType(SummaryFilterType sumFilterType, RifEclipseSummaryAddress::SummaryVarCategory sumVarType);
static bool isSumVarTypeMatchingFilterType(SummaryFilterType sumFilterType, RifEclipseSummaryAddress::SummaryVarCategory sumVarType);
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
private:
caf::PdmField<caf::AppEnum<SummaryFilterType> >
m_filterType;
caf::PdmField<QString> m_completeVarStringFilter;
@ -73,7 +79,4 @@ private:
caf::PdmField<QString> m_wellSegmentNumberFilter;
caf::PdmField<QString> m_lgrNameFilter;
caf::PdmField<QString> m_cellIJKFilter;
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
};