#755 Curve Gui adjusted according to input from CFB. Now working as intended.

This commit is contained in:
Jacob Støren 2016-06-10 12:30:20 +02:00
parent 7419ad5089
commit 80d7ae7262
4 changed files with 206 additions and 77 deletions

View File

@ -41,65 +41,65 @@ std::string RifEclipseSummaryAddress::uiText() const
{ {
case RifEclipseSummaryAddress::SUMMARY_REGION: case RifEclipseSummaryAddress::SUMMARY_REGION:
{ {
text += ", R: " + std::to_string(this->regionNumber()); text += ":" + std::to_string(this->regionNumber());
} }
break; break;
case RifEclipseSummaryAddress::SUMMARY_REGION_2_REGION: case RifEclipseSummaryAddress::SUMMARY_REGION_2_REGION:
{ {
text += ", R1: " + std::to_string(this->regionNumber()); text += ":" + std::to_string(this->regionNumber());
text += ", R2: " + std::to_string(this->regionNumber2()); text += ":" + std::to_string(this->regionNumber2());
} }
break; break;
case RifEclipseSummaryAddress::SUMMARY_WELL_GROUP: case RifEclipseSummaryAddress::SUMMARY_WELL_GROUP:
{ {
text += ", G:" + this->wellGroupName(); text += ":" + this->wellGroupName();
} }
break; break;
case RifEclipseSummaryAddress::SUMMARY_WELL: case RifEclipseSummaryAddress::SUMMARY_WELL:
{ {
text += ", W:" + this->wellName(); text += ":" + this->wellName();
} }
break; break;
case RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION: case RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION:
{ {
text += ", W:" + this->wellName(); text += ":" + this->wellName();
text += ", IJK: " + std::to_string(this->cellI()) + ", " text += ":" + std::to_string(this->cellI()) + ", "
+ std::to_string(this->cellJ()) + ", " + std::to_string(this->cellJ()) + ", "
+ std::to_string(this->cellK()); + std::to_string(this->cellK());
} }
break; break;
case RifEclipseSummaryAddress::SUMMARY_WELL_LGR: case RifEclipseSummaryAddress::SUMMARY_WELL_LGR:
{ {
text += ", W:" + this->wellName(); text += ":" + this->wellName();
text += ", LGR:" + this->lgrName(); text += ":" + this->lgrName();
} }
break; break;
case RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION_LGR: case RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION_LGR:
{ {
text += ", W:" + this->wellName(); text += ":" + this->wellName();
text += ", LGR:" + this->lgrName(); text += ":" + this->lgrName();
text += ", IJK: " + std::to_string(this->cellI()) + ", " text += ":" + std::to_string(this->cellI()) + ", "
+ std::to_string(this->cellJ()) + ", " + std::to_string(this->cellJ()) + ", "
+ std::to_string(this->cellK()); + std::to_string(this->cellK());
} }
break; break;
case RifEclipseSummaryAddress::SUMMARY_WELL_SEGMENT: case RifEclipseSummaryAddress::SUMMARY_WELL_SEGMENT:
{ {
text += ", W:" + this->wellName(); text += ":" + this->wellName();
text += ", S: " + std::to_string(this->wellSegmentNumber()); text += ":" + std::to_string(this->wellSegmentNumber());
} }
break; break;
case RifEclipseSummaryAddress::SUMMARY_BLOCK: case RifEclipseSummaryAddress::SUMMARY_BLOCK:
{ {
text += ", IJK: " + std::to_string(this->cellI()) + ", " text += ":" + std::to_string(this->cellI()) + ", "
+ std::to_string(this->cellJ()) + ", " + std::to_string(this->cellJ()) + ", "
+ std::to_string(this->cellK()); + std::to_string(this->cellK());
} }
break; break;
case RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR: case RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR:
{ {
text += ", LGR:" + this->lgrName(); text += ":" + this->lgrName();
text += ", IJK: " + std::to_string(this->cellI()) + ", " text += ":" + std::to_string(this->cellI()) + ", "
+ std::to_string(this->cellJ()) + ", " + std::to_string(this->cellJ()) + ", "
+ std::to_string(this->cellK()); + std::to_string(this->cellK());
} }

View File

@ -252,7 +252,7 @@ bool RifReaderEclipseSummary::values(const RifEclipseSummaryAddress& resultAddre
values->push_back(value); values->push_back(value);
} }
return false; return true;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -132,23 +132,23 @@ namespace caf
template<> template<>
void caf::AppEnum<RimSummaryCurve::SummaryFilterType>::setUp() void caf::AppEnum<RimSummaryCurve::SummaryFilterType>::setUp()
{ {
addItem(RimSummaryCurve::SUM_FILTER_ANY, "SUM_FILTER_ANY", "Any"); addItem(RimSummaryCurve::SUM_FILTER_VAR_STRING, "SUM_FILTER_VAR_STRING", "Concatenated Variable Text");
addItem(RimSummaryCurve::SUM_FILTER_FIELD, "SUM_FILTER_FIELD", "Field"); addItem(RimSummaryCurve::SUM_FILTER_FIELD, "SUM_FILTER_FIELD", "Field");
addItem(RimSummaryCurve::SUM_FILTER_AQUIFER, "SUM_FILTER_AQUIFER", "Aquifer"); addItem(RimSummaryCurve::SUM_FILTER_WELL, "SUM_FILTER_WELL", "Well");
addItem(RimSummaryCurve::SUM_FILTER_NETWORK, "SUM_FILTER_NETWORK", "Network"); addItem(RimSummaryCurve::SUM_FILTER_WELL_GROUP, "SUM_FILTER_WELL_GROUP", "Group");
addItem(RimSummaryCurve::SUM_FILTER_MISC, "SUM_FILTER_MISC", "Misc"); addItem(RimSummaryCurve::SUM_FILTER_WELL_COMPLETION, "SUM_FILTER_WELL_COMPLETION", "Completion");
addItem(RimSummaryCurve::SUM_FILTER_WELL_SEGMENT, "SUM_FILTER_SEGMENT", "Segment");
addItem(RimSummaryCurve::SUM_FILTER_BLOCK, "SUM_FILTER_BLOCK", "Block");
addItem(RimSummaryCurve::SUM_FILTER_REGION, "SUM_FILTER_REGION", "Region"); addItem(RimSummaryCurve::SUM_FILTER_REGION, "SUM_FILTER_REGION", "Region");
addItem(RimSummaryCurve::SUM_FILTER_REGION_2_REGION, "SUM_FILTER_REGION_2_REGION", "Region-Region"); addItem(RimSummaryCurve::SUM_FILTER_REGION_2_REGION, "SUM_FILTER_REGION_2_REGION", "Region-Region");
addItem(RimSummaryCurve::SUM_FILTER_WELL_GROUP, "SUM_FILTER_WELL_GROUP", "Group");
addItem(RimSummaryCurve::SUM_FILTER_WELL, "SUM_FILTER_WELL", "Well");
addItem(RimSummaryCurve::SUM_FILTER_WELL_COMPLETION, "SUM_FILTER_WELL_COMPLETION", "Completion");
addItem(RimSummaryCurve::SUM_FILTER_WELL_COMPLETION_LGR, "SUM_FILTER_WELL_COMPLETION_LGR", "Lgr-Completion");
addItem(RimSummaryCurve::SUM_FILTER_WELL_LGR, "SUM_FILTER_WELL_LGR", "Lgr-Well"); addItem(RimSummaryCurve::SUM_FILTER_WELL_LGR, "SUM_FILTER_WELL_LGR", "Lgr-Well");
addItem(RimSummaryCurve::SUM_FILTER_WELL_SEGMENT, "SUM_FILTER_SEGMENT", "Segment"); addItem(RimSummaryCurve::SUM_FILTER_WELL_COMPLETION_LGR, "SUM_FILTER_WELL_COMPLETION_LGR", "Lgr-Completion");
addItem(RimSummaryCurve::SUM_FILTER_WELL_SEGMENT_RIVER, "SUM_FILTER_SEGMENT_RIVER", "Segment River");
addItem(RimSummaryCurve::SUM_FILTER_BLOCK, "SUM_FILTER_BLOCK", "Block");
addItem(RimSummaryCurve::SUM_FILTER_BLOCK_LGR, "SUM_FILTER_BLOCK_LGR", "Lgr-Block"); addItem(RimSummaryCurve::SUM_FILTER_BLOCK_LGR, "SUM_FILTER_BLOCK_LGR", "Lgr-Block");
setDefault(RimSummaryCurve::SUM_FILTER_FIELD); addItem(RimSummaryCurve::SUM_FILTER_MISC, "SUM_FILTER_MISC", "Misc");
addItem(RimSummaryCurve::SUM_FILTER_AQUIFER, "SUM_FILTER_AQUIFER", "Aquifer");
addItem(RimSummaryCurve::SUM_FILTER_NETWORK, "SUM_FILTER_NETWORK", "Network");
addItem(RimSummaryCurve::SUM_FILTER_ANY, "SUM_FILTER_ANY", "Any");
setDefault(RimSummaryCurve::SUM_FILTER_VAR_STRING);
} }
} }
@ -162,49 +162,55 @@ RimSummaryCurve::RimSummaryCurve()
{ {
CAF_PDM_InitObject("Summary Curve", ":/WellLogCurve16x16.png", "", ""); CAF_PDM_InitObject("Summary Curve", ":/WellLogCurve16x16.png", "", "");
CAF_PDM_InitFieldNoDefault(&m_summaryCase, "SummaryCase", "Summary Case", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_summaryCase, "SummaryCase", "Case", "", "", "");
m_summaryCase.uiCapability()->setUiChildrenHidden(true); m_summaryCase.uiCapability()->setUiChildrenHidden(true);
// TODO: Implement setUiTreeHidden CAF_PDM_InitFieldNoDefault(&m_selectedVariableDisplayField, "SelectedVariableDisplayVar", "Variable", "", "", "");
//m_eclipseCase.uiCapability()->setUiHidden(true); m_selectedVariableDisplayField.xmlCapability()->setIOWritable(false);
m_selectedVariableDisplayField.xmlCapability()->setIOReadable(false);
m_selectedVariableDisplayField.uiCapability()->setUiReadOnly(true);
CAF_PDM_InitFieldNoDefault(&m_filterType,"SummaryVarCategory","Category","","",""); CAF_PDM_InitFieldNoDefault(&m_filterType,"SummaryFilterType","Filter Type","","","");
m_filterType.xmlCapability()->setIOWritable(false); m_filterType.xmlCapability()->setIOWritable(false);
m_filterType.xmlCapability()->setIOReadable(false); m_filterType.xmlCapability()->setIOReadable(false);
CAF_PDM_InitFieldNoDefault(&m_completeVarStringFilter, "SummaryCompleteVarStringFilter", "Filter", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_filterQuantityName,"SummaryVarQuantity","Quantity","","",""); m_completeVarStringFilter.xmlCapability()->setIOWritable(false);
m_completeVarStringFilter.xmlCapability()->setIOReadable(false);
CAF_PDM_InitFieldNoDefault(&m_filterQuantityName,"SummaryVarQuantityFilter","Quantity","","","");
m_filterQuantityName.xmlCapability()->setIOWritable(false); m_filterQuantityName.xmlCapability()->setIOWritable(false);
m_filterQuantityName.xmlCapability()->setIOReadable(false); m_filterQuantityName.xmlCapability()->setIOReadable(false);
CAF_PDM_InitFieldNoDefault(&m_regionNumberFilter ,"SummaryRegionNumber","Region","","",""); CAF_PDM_InitFieldNoDefault(&m_regionNumberFilter ,"SummaryRegionNumberFilter","Region","","","");
m_regionNumberFilter.xmlCapability()->setIOWritable(false); m_regionNumberFilter.xmlCapability()->setIOWritable(false);
m_regionNumberFilter.xmlCapability()->setIOReadable(false); m_regionNumberFilter.xmlCapability()->setIOReadable(false);
CAF_PDM_InitFieldNoDefault(&m_regionNumber2Filter ,"SummaryRegionNumber2","Region 2","","",""); CAF_PDM_InitFieldNoDefault(&m_regionNumber2Filter ,"SummaryRegionNumber2Filter","Region 2","","","");
m_regionNumber2Filter.xmlCapability()->setIOWritable(false); m_regionNumber2Filter.xmlCapability()->setIOWritable(false);
m_regionNumber2Filter.xmlCapability()->setIOReadable(false); m_regionNumber2Filter.xmlCapability()->setIOReadable(false);
CAF_PDM_InitFieldNoDefault(&m_wellGroupNameFilter, "SummaryWellGroupName", "Well Group", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_wellGroupNameFilter, "SummaryWellGroupNameFilter", "Well Group", "", "", "");
m_wellGroupNameFilter.xmlCapability()->setIOWritable(false); m_wellGroupNameFilter.xmlCapability()->setIOWritable(false);
m_wellGroupNameFilter.xmlCapability()->setIOReadable(false); m_wellGroupNameFilter.xmlCapability()->setIOReadable(false);
CAF_PDM_InitFieldNoDefault(&m_wellNameFilter ,"SummaryWellName","Well","","",""); CAF_PDM_InitFieldNoDefault(&m_wellNameFilter ,"SummaryWellNameFilter","Well","","","");
m_wellNameFilter.xmlCapability()->setIOWritable(false); m_wellNameFilter.xmlCapability()->setIOWritable(false);
m_wellNameFilter.xmlCapability()->setIOReadable(false); m_wellNameFilter.xmlCapability()->setIOReadable(false);
CAF_PDM_InitFieldNoDefault(&m_wellSegmentNumberFilter ,"SummaryWellSegmentNumber","Segment","","",""); CAF_PDM_InitFieldNoDefault(&m_wellSegmentNumberFilter ,"SummaryWellSegmentNumberFilter","Segment","","","");
m_wellSegmentNumberFilter.xmlCapability()->setIOWritable(false); m_wellSegmentNumberFilter.xmlCapability()->setIOWritable(false);
m_wellSegmentNumberFilter.xmlCapability()->setIOReadable(false); m_wellSegmentNumberFilter.xmlCapability()->setIOReadable(false);
CAF_PDM_InitFieldNoDefault(&m_lgrNameFilter ,"SummaryLgrName","Lgr","","",""); CAF_PDM_InitFieldNoDefault(&m_lgrNameFilter ,"SummaryLgrNameFilter","Lgr","","","");
m_lgrNameFilter.xmlCapability()->setIOWritable(false); m_lgrNameFilter.xmlCapability()->setIOWritable(false);
m_lgrNameFilter.xmlCapability()->setIOReadable(false); m_lgrNameFilter.xmlCapability()->setIOReadable(false);
CAF_PDM_InitFieldNoDefault(&m_cellIJKFilter ,"SummaryCellIJK","I, J, K","","",""); CAF_PDM_InitFieldNoDefault(&m_cellIJKFilter ,"SummaryCellIJKFilter","I, J, K","","","");
m_cellIJKFilter.xmlCapability()->setIOWritable(false); m_cellIJKFilter.xmlCapability()->setIOWritable(false);
m_cellIJKFilter.xmlCapability()->setIOReadable(false); m_cellIJKFilter.xmlCapability()->setIOReadable(false);
CAF_PDM_InitFieldNoDefault(&m_uiFilterResultSelection, "FilterResultSelection", "Vectors", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_uiFilterResultSelection, "FilterResultSelection", "Filter Result", "", "", "");
m_cellIJKFilter.xmlCapability()->setIOWritable(false); m_cellIJKFilter.xmlCapability()->setIOWritable(false);
m_cellIJKFilter.xmlCapability()->setIOReadable(false); m_cellIJKFilter.xmlCapability()->setIOReadable(false);
m_uiFilterResultSelection.uiCapability()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName()); m_uiFilterResultSelection.uiCapability()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName());
m_uiFilterResultSelection.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::TOP); m_uiFilterResultSelection.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
m_uiFilterResultSelection.uiCapability()->setAutoAddingOptionFromValue(false); m_uiFilterResultSelection.uiCapability()->setAutoAddingOptionFromValue(false);
CAF_PDM_InitFieldNoDefault(&m_curveVariable, "SummaryAddress", "SummaryAddress", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_curveVariable, "SummaryAddress", "SummaryAddress", "", "", "");
m_curveVariable.uiCapability()->setUiHidden(true); m_curveVariable.uiCapability()->setUiHidden(true);
@ -325,14 +331,21 @@ void RimSummaryCurve::onLoadDataAndUpdate()
{ {
this->RimPlotCurve::updateCurvePresentation(); this->RimPlotCurve::updateCurvePresentation();
m_selectedVariableDisplayField = QString::fromStdString(m_curveVariable->address().uiText());
if (isCurveVisible()) if (isCurveVisible())
{ {
std::vector<QDateTime> dateTimes; std::vector<QDateTime> dateTimes;
std::vector<double> values; std::vector<double> values;
this->curveData(&dateTimes, &values); if(this->curveData(&dateTimes, &values))
{
m_qwtPlotCurve->setSamplesFromDateAndValues(dateTimes, values); m_qwtPlotCurve->setSamplesFromDateAndValues(dateTimes, values);
}
else
{
m_qwtPlotCurve->setSamplesFromDateAndValues(std::vector<QDateTime>(), std::vector<double>());
}
zoomAllParentPlot(); zoomAllParentPlot();
@ -345,21 +358,33 @@ void RimSummaryCurve::onLoadDataAndUpdate()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimSummaryCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) void RimSummaryCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{ {
caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroup("Curve Data"); caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroup("Summary Variable");
curveDataGroup->add(&m_summaryCase); curveDataGroup->add(&m_summaryCase);
//curveDataGroup->add(&m_variableName); curveDataGroup->add(&m_selectedVariableDisplayField);
caf::PdmUiGroup* curveVarFilterGroup = curveDataGroup->addNewGroup("Filter");
curveVarFilterGroup->add(&m_filterType); caf::PdmUiGroup* curveVarSelectionGroup = curveDataGroup->addNewGroup("Variable Selection");
curveVarFilterGroup->add(&m_filterQuantityName); curveVarSelectionGroup->add(&m_filterType);
caf::PdmUiGroup* curveVarFilterGroup = nullptr;
if (m_filterType() == SUM_FILTER_VAR_STRING)
{
curveVarSelectionGroup->add(&m_completeVarStringFilter);
}
else
{
caf::PdmUiGroup* curveVarFilterGroup = curveVarSelectionGroup->addNewGroup("Filter Settings");
curveVarFilterGroup->add(&m_filterQuantityName);
switch (m_filterType()) switch (m_filterType())
{ {
case SUM_FILTER_ANY: case SUM_FILTER_ANY:
{ {
curveVarFilterGroup->add(&m_wellNameFilter);
curveVarFilterGroup->add(&m_wellGroupNameFilter);
curveVarFilterGroup->add(&m_regionNumberFilter); curveVarFilterGroup->add(&m_regionNumberFilter);
curveVarFilterGroup->add(&m_regionNumber2Filter); curveVarFilterGroup->add(&m_regionNumber2Filter);
curveVarFilterGroup->add(&m_wellGroupNameFilter);
curveVarFilterGroup->add(&m_wellNameFilter);
curveVarFilterGroup->add(&m_wellSegmentNumberFilter); curveVarFilterGroup->add(&m_wellSegmentNumberFilter);
curveVarFilterGroup->add(&m_lgrNameFilter); curveVarFilterGroup->add(&m_lgrNameFilter);
curveVarFilterGroup->add(&m_cellIJKFilter); curveVarFilterGroup->add(&m_cellIJKFilter);
@ -428,7 +453,8 @@ void RimSummaryCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering&
break; break;
} }
curveDataGroup->add(&m_uiFilterResultSelection); }
curveVarSelectionGroup->add(&m_uiFilterResultSelection);
caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroup("Appearance"); caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroup("Appearance");
appearanceGroup->add(&m_curveColor); appearanceGroup->add(&m_curveColor);
@ -441,18 +467,120 @@ void RimSummaryCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering&
uiOrdering.setForgetRemainingFields(true); // For now. uiOrdering.setForgetRemainingFields(true); // For now.
} }
bool isNumberMatch(QString numericalFilterString, int number)
{
if(numericalFilterString.isEmpty()) return true;
// Todo: Ranges, and lists
int filterNumber = numericalFilterString.toInt();
return number == filterNumber;
}
bool isStringMatch(QString filterString, std::string value)
{
if(filterString.isEmpty()) return true;
QRegExp searcher(filterString, Qt::CaseInsensitive, QRegExp::WildcardUnix);
QString qstrValue = QString::fromStdString(value);
return searcher.exactMatch(qstrValue);
}
bool isIJKMatch(QString filterString, int cellI, int cellJ, int cellK)
{
if(filterString.isEmpty()) return true;
// Todo: Ranges, and lists
int filterNumber = filterString.toInt();
return cellI == filterNumber;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RimSummaryCurve::isIncludedByFilter(const RifEclipseSummaryAddress& addr) bool RimSummaryCurve::isIncludedByFilter(const RifEclipseSummaryAddress& addr)
{ {
if (!isSumVarTypeMatchingFilterType(m_filterType(), addr.category())) return false; if (!isSumVarTypeMatchingFilterType(m_filterType(), addr.category())) return false;
if (!m_filterQuantityName().isEmpty())
{ if(m_filterType() == SUM_FILTER_VAR_STRING)
QRegExp searcher(m_filterQuantityName(), Qt::CaseInsensitive, QRegExp::WildcardUnix); {
QString addrQuant = QString::fromStdString(addr.quantityName()); return isStringMatch(m_completeVarStringFilter(), addr.uiText());
if (!searcher.exactMatch(addrQuant)) return false ;
} }
if (!isStringMatch(m_filterQuantityName(), addr.quantityName())) return false;
if(m_filterType() == SUM_FILTER_ANY)
{
return (isNumberMatch(m_regionNumberFilter(), addr.regionNumber())
&& isNumberMatch(m_regionNumber2Filter(), addr.regionNumber2())
&& isStringMatch(m_wellGroupNameFilter(), addr.wellGroupName())
&& isStringMatch(m_wellNameFilter(), addr.wellName())
&& isStringMatch(m_lgrNameFilter(), addr.lgrName())
&& isNumberMatch(m_wellSegmentNumberFilter(), addr.wellSegmentNumber())
&& isIJKMatch(m_cellIJKFilter(), addr.cellI(), addr.cellJ(), addr.cellK()));
}
switch (addr.category())
{
case RifEclipseSummaryAddress::SUMMARY_REGION:
{
return isNumberMatch(m_regionNumberFilter(), addr.regionNumber());
}
break;
case RifEclipseSummaryAddress::SUMMARY_REGION_2_REGION:
{
return isNumberMatch(m_regionNumberFilter(), addr.regionNumber())
&& isNumberMatch(m_regionNumber2Filter(), addr.regionNumber2());
}
break;
case RifEclipseSummaryAddress::SUMMARY_WELL_GROUP:
{
return isStringMatch(m_wellGroupNameFilter(), addr.wellGroupName());
}
break;
case RifEclipseSummaryAddress::SUMMARY_WELL:
{
return isStringMatch(m_wellNameFilter(), addr.wellName());
}
break;
case RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION:
{
return isStringMatch(m_wellNameFilter(), addr.wellName())
&& isIJKMatch(m_cellIJKFilter(), addr.cellI(), addr.cellJ(), addr.cellK());
}
break;
case RifEclipseSummaryAddress::SUMMARY_WELL_LGR:
{
return isStringMatch(m_wellNameFilter(), addr.wellName())
&& isStringMatch(m_lgrNameFilter(), addr.lgrName());
}
break;
case RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION_LGR:
{
return isStringMatch(m_wellNameFilter(), addr.wellName())
&& isStringMatch(m_lgrNameFilter(), addr.lgrName())
&& isIJKMatch(m_cellIJKFilter(), addr.cellI(), addr.cellJ(), addr.cellK());
}
break;
case RifEclipseSummaryAddress::SUMMARY_WELL_SEGMENT:
{
return isStringMatch(m_wellNameFilter(), addr.wellName())
&& isNumberMatch(m_wellSegmentNumberFilter(), addr.wellSegmentNumber());
}
break;
case RifEclipseSummaryAddress::SUMMARY_BLOCK:
{
return isIJKMatch(m_cellIJKFilter(), addr.cellI(), addr.cellJ(), addr.cellK());
}
break;
case RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR:
{
return isStringMatch(m_lgrNameFilter(), addr.lgrName())
&& isIJKMatch(m_cellIJKFilter(), addr.cellI(), addr.cellJ(),addr.cellK());
}
break;
}
return true; return true;
} }
@ -462,7 +590,7 @@ bool RimSummaryCurve::isIncludedByFilter(const RifEclipseSummaryAddress& addr)
bool RimSummaryCurve::isSumVarTypeMatchingFilterType(SummaryFilterType sumFilterType, RifEclipseSummaryAddress::SummaryVarCategory sumVarType) bool RimSummaryCurve::isSumVarTypeMatchingFilterType(SummaryFilterType sumFilterType, RifEclipseSummaryAddress::SummaryVarCategory sumVarType)
{ {
if (sumVarType == RifEclipseSummaryAddress::SUMMARY_INVALID) return false; if (sumVarType == RifEclipseSummaryAddress::SUMMARY_INVALID) return false;
if (sumFilterType == SUM_FILTER_ANY) return true; if (sumFilterType == SUM_FILTER_ANY || sumFilterType == SUM_FILTER_VAR_STRING) return true;
switch(sumVarType) switch(sumVarType)
{ {
@ -531,22 +659,19 @@ void RimSummaryCurve::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrderin
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimSummaryCurve::curveData(std::vector<QDateTime>* timeSteps, std::vector<double>* values) bool RimSummaryCurve::curveData(std::vector<QDateTime>* timeSteps, std::vector<double>* values)
{ {
CVF_ASSERT(timeSteps && values);
RifReaderEclipseSummary* reader = summaryReader(); RifReaderEclipseSummary* reader = summaryReader();
if (!reader) return; if (!reader) return false;
if (timeSteps) std::vector<time_t> times = reader->timeSteps();
{ *timeSteps = RifReaderEclipseSummary::fromTimeT(times);
std::vector<time_t> times = reader->timeSteps();
*timeSteps = RifReaderEclipseSummary::fromTimeT(times);
}
if (values) if (!times.size()) return false;
{
RifEclipseSummaryAddress addr = m_curveVariable()->address();
reader->values(addr, values);
}
RifEclipseSummaryAddress addr = m_curveVariable()->address();
return reader->values(addr, values);
} }

View File

@ -46,7 +46,7 @@ public:
private: private:
caf::PdmField<caf::AppEnum<RifEclipseSummaryAddress::SummaryVarCategory> > caf::PdmField<caf::AppEnum<RifEclipseSummaryAddress::SummaryVarCategory> >
m_category; m_category;
caf::PdmField<QString> m_quantityName; caf::PdmField<QString> m_quantityName;
caf::PdmField<int> m_regionNumber; caf::PdmField<int> m_regionNumber;
caf::PdmField<int> m_regionNumber2; caf::PdmField<int> m_regionNumber2;
@ -76,6 +76,7 @@ public:
enum SummaryFilterType enum SummaryFilterType
{ {
SUM_FILTER_VAR_STRING,
SUM_FILTER_ANY, SUM_FILTER_ANY,
SUM_FILTER_FIELD, SUM_FILTER_FIELD,
SUM_FILTER_AQUIFER, SUM_FILTER_AQUIFER,
@ -89,7 +90,6 @@ public:
SUM_FILTER_WELL_COMPLETION_LGR, SUM_FILTER_WELL_COMPLETION_LGR,
SUM_FILTER_WELL_LGR, SUM_FILTER_WELL_LGR,
SUM_FILTER_WELL_SEGMENT, SUM_FILTER_WELL_SEGMENT,
SUM_FILTER_WELL_SEGMENT_RIVER,
SUM_FILTER_BLOCK, SUM_FILTER_BLOCK,
SUM_FILTER_BLOCK_LGR, SUM_FILTER_BLOCK_LGR,
}; };
@ -103,7 +103,7 @@ protected:
private: private:
RifReaderEclipseSummary* summaryReader(); RifReaderEclipseSummary* summaryReader();
void curveData(std::vector<QDateTime>* timeSteps, std::vector<double>* values); bool curveData(std::vector<QDateTime>* timeSteps, std::vector<double>* values);
// Overridden PDM methods // Overridden PDM methods
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue); virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
@ -114,6 +114,7 @@ private:
// Fields // Fields
caf::PdmPtrField<RimSummaryCase*> m_summaryCase; caf::PdmPtrField<RimSummaryCase*> m_summaryCase;
caf::PdmChildField<RimSummaryAddress*> m_curveVariable; caf::PdmChildField<RimSummaryAddress*> m_curveVariable;
caf::PdmField<QString> m_selectedVariableDisplayField;
// Filter fields // Filter fields
bool isIncludedByFilter(const RifEclipseSummaryAddress& addr); bool isIncludedByFilter(const RifEclipseSummaryAddress& addr);
@ -121,6 +122,8 @@ private:
caf::PdmField<caf::AppEnum<SummaryFilterType> > caf::PdmField<caf::AppEnum<SummaryFilterType> >
m_filterType; m_filterType;
caf::PdmField<QString> m_completeVarStringFilter;
caf::PdmField<QString> m_filterQuantityName; caf::PdmField<QString> m_filterQuantityName;
caf::PdmField<QString> m_regionNumberFilter; caf::PdmField<QString> m_regionNumberFilter;
caf::PdmField<QString> m_regionNumber2Filter; caf::PdmField<QString> m_regionNumber2Filter;
@ -131,4 +134,5 @@ private:
caf::PdmField<QString> m_cellIJKFilter; caf::PdmField<QString> m_cellIJKFilter;
caf::PdmField<int> m_uiFilterResultSelection; caf::PdmField<int> m_uiFilterResultSelection;
}; };