mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#756 WIP: Added class stubs for the CurveFilter
This commit is contained in:
parent
2687a794fd
commit
3167f97394
@ -80,6 +80,7 @@ ${CEE_CURRENT_LIST_DIR}RimGridCollection.h
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryPlotCollection.h
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryPlot.h
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurve.h
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurveFilter.h
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCase.h
|
||||
${CEE_CURRENT_LIST_DIR}RimGridSummaryCase.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimFileSummaryCase.cpp
|
||||
@ -164,6 +165,7 @@ ${CEE_CURRENT_LIST_DIR}RimGridCollection.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryPlotCollection.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryPlot.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurve.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurveFilter.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCase.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimGridSummaryCase.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimFileSummaryCase.cpp
|
||||
|
308
ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.cpp
Normal file
308
ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.cpp
Normal file
@ -0,0 +1,308 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2016 Statoil ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "RimSummaryCurveFilter.h"
|
||||
|
||||
#include "RiaApplication.h"
|
||||
#include "RifReaderEclipseSummary.h"
|
||||
#include "RimDefines.h"
|
||||
#include "RimEclipseResultCase.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimSummaryPlot.h"
|
||||
#include "RimSummaryPlotCollection.h"
|
||||
#include "RiuSummaryQwtPlot.h"
|
||||
|
||||
#include "cafPdmUiComboBoxEditor.h"
|
||||
#include "cafPdmUiListEditor.h"
|
||||
#include "cafPdmUiTreeOrdering.h"
|
||||
#include "RiuLineSegmentQwtPlotCurve.h"
|
||||
#include "qwt_date.h"
|
||||
#include "RimSummaryCase.h"
|
||||
#include "RigSummaryCaseData.h"
|
||||
#include "RimSummaryCurve.h"
|
||||
|
||||
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimSummaryCurveFilter, "SummaryCurveFilter");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCurveFilter::RimSummaryCurveFilter()
|
||||
{
|
||||
CAF_PDM_InitObject("Curve Filter", ":/WellLogCurve16x16.png", "", "");
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_selectedSummaryCase, "SummaryCases", "Cases", "", "", "");
|
||||
m_selectedSummaryCase.uiCapability()->setUiChildrenHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_selectedVariableDisplayField, "SelectedVariableDisplayVar", "Variables", "", "", "");
|
||||
m_selectedVariableDisplayField.xmlCapability()->setIOWritable(false);
|
||||
m_selectedVariableDisplayField.xmlCapability()->setIOReadable(false);
|
||||
m_selectedVariableDisplayField.uiCapability()->setUiReadOnly(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_filterType,"SummaryFilterType","Filter Type","","","");
|
||||
m_filterType.xmlCapability()->setIOWritable(false);
|
||||
m_filterType.xmlCapability()->setIOReadable(false);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_completeVarStringFilter, "SummaryCompleteVarStringFilter", "Filter", "", "", "");
|
||||
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()->setIOReadable(false);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_regionNumberFilter ,"SummaryRegionNumberFilter","Region","","","");
|
||||
m_regionNumberFilter.xmlCapability()->setIOWritable(false);
|
||||
m_regionNumberFilter.xmlCapability()->setIOReadable(false);
|
||||
CAF_PDM_InitFieldNoDefault(&m_regionNumber2Filter ,"SummaryRegionNumber2Filter","Region 2","","","");
|
||||
m_regionNumber2Filter.xmlCapability()->setIOWritable(false);
|
||||
m_regionNumber2Filter.xmlCapability()->setIOReadable(false);
|
||||
CAF_PDM_InitFieldNoDefault(&m_wellGroupNameFilter, "SummaryWellGroupNameFilter", "Well Group", "", "", "");
|
||||
m_wellGroupNameFilter.xmlCapability()->setIOWritable(false);
|
||||
m_wellGroupNameFilter.xmlCapability()->setIOReadable(false);
|
||||
CAF_PDM_InitFieldNoDefault(&m_wellNameFilter ,"SummaryWellNameFilter","Well","","","");
|
||||
m_wellNameFilter.xmlCapability()->setIOWritable(false);
|
||||
m_wellNameFilter.xmlCapability()->setIOReadable(false);
|
||||
CAF_PDM_InitFieldNoDefault(&m_wellSegmentNumberFilter ,"SummaryWellSegmentNumberFilter","Segment","","","");
|
||||
m_wellSegmentNumberFilter.xmlCapability()->setIOWritable(false);
|
||||
m_wellSegmentNumberFilter.xmlCapability()->setIOReadable(false);
|
||||
CAF_PDM_InitFieldNoDefault(&m_lgrNameFilter ,"SummaryLgrNameFilter","Lgr","","","");
|
||||
m_lgrNameFilter.xmlCapability()->setIOWritable(false);
|
||||
m_lgrNameFilter.xmlCapability()->setIOReadable(false);
|
||||
CAF_PDM_InitFieldNoDefault(&m_cellIJKFilter ,"SummaryCellIJKFilter","I, J, K","","","");
|
||||
m_cellIJKFilter.xmlCapability()->setIOWritable(false);
|
||||
m_cellIJKFilter.xmlCapability()->setIOReadable(false);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_uiFilterResultMultiSelection, "FilterResultSelection", "Filter Result", "", "", "");
|
||||
m_cellIJKFilter.xmlCapability()->setIOWritable(false);
|
||||
m_cellIJKFilter.xmlCapability()->setIOReadable(false);
|
||||
m_uiFilterResultMultiSelection.uiCapability()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName());
|
||||
m_uiFilterResultMultiSelection.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||
m_uiFilterResultMultiSelection.uiCapability()->setAutoAddingOptionFromValue(false);
|
||||
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_curves, "FilteredCurves", "Filtered Curves", "", "", "");
|
||||
m_curves.uiCapability()->setUiHidden(true);
|
||||
m_curves.uiCapability()->setUiChildrenHidden(true);
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCurveFilter::~RimSummaryCurveFilter()
|
||||
{
|
||||
m_curves.deleteAllChildObjects();
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QList<caf::PdmOptionItemInfo> RimSummaryCurveFilter::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly)
|
||||
{
|
||||
QList<caf::PdmOptionItemInfo> optionList;
|
||||
|
||||
if (fieldNeedingOptions == &m_selectedSummaryCase)
|
||||
{
|
||||
RimProject* proj = RiaApplication::instance()->project();
|
||||
std::vector<RimSummaryCase*> cases;
|
||||
|
||||
proj->allSummaryCases(cases);
|
||||
|
||||
for (size_t i = 0; i < cases.size(); i++)
|
||||
{
|
||||
RimSummaryCase* rimCase = cases[i];
|
||||
|
||||
optionList.push_back(caf::PdmOptionItemInfo(rimCase->caseName(), QVariant::fromValue(caf::PdmPointer<caf::PdmObjectHandle>(rimCase))));
|
||||
}
|
||||
|
||||
if (optionList.size() > 0)
|
||||
{
|
||||
optionList.push_front(caf::PdmOptionItemInfo("None", QVariant::fromValue(caf::PdmPointer<caf::PdmObjectHandle>(NULL))));
|
||||
}
|
||||
}
|
||||
else if(fieldNeedingOptions == &m_uiFilterResultMultiSelection)
|
||||
{
|
||||
if(m_selectedSummaryCase)
|
||||
{
|
||||
RifReaderEclipseSummary* reader = summaryReader();
|
||||
int addressCount = 0;
|
||||
if(reader)
|
||||
{
|
||||
const std::vector<RifEclipseSummaryAddress> allAddresses = reader->allResultAddresses();
|
||||
addressCount = static_cast<int>(allAddresses.size());
|
||||
std::map<RifEclipseSummaryAddress, int> addrToIdxMap;
|
||||
for(int i = 0; i <addressCount; i++)
|
||||
{
|
||||
if (false) continue;
|
||||
addrToIdxMap[allAddresses[i]] = i;
|
||||
}
|
||||
|
||||
for (const auto& addrIntPair: addrToIdxMap)
|
||||
{
|
||||
std::string name = addrIntPair.first.uiText();
|
||||
QString s = QString::fromStdString(name);
|
||||
optionList.push_back(caf::PdmOptionItemInfo(s, addrIntPair.second));
|
||||
}
|
||||
}
|
||||
|
||||
optionList.push_front(caf::PdmOptionItemInfo(RimDefines::undefinedResultName(), addressCount));
|
||||
|
||||
if(useOptionsOnly) *useOptionsOnly = true;
|
||||
}
|
||||
}
|
||||
return optionList;
|
||||
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurveFilter::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||
{
|
||||
caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroup("Summary Variable");
|
||||
curveDataGroup->add(&m_selectedSummaryCase);
|
||||
curveDataGroup->add(&m_selectedVariableDisplayField);
|
||||
|
||||
caf::PdmUiGroup* curveVarSelectionGroup = curveDataGroup->addNewGroup("Variable Selection");
|
||||
curveVarSelectionGroup->add(&m_filterType);
|
||||
|
||||
caf::PdmUiGroup* curveVarFilterGroup = nullptr;
|
||||
|
||||
if (m_filterType() == RimSummaryCurve::SUM_FILTER_VAR_STRING)
|
||||
{
|
||||
curveVarSelectionGroup->add(&m_completeVarStringFilter);
|
||||
}
|
||||
else
|
||||
{
|
||||
caf::PdmUiGroup* curveVarFilterGroup = curveVarSelectionGroup->addNewGroup("Filter Settings");
|
||||
|
||||
curveVarFilterGroup->add(&m_filterQuantityName);
|
||||
|
||||
switch (m_filterType())
|
||||
{
|
||||
case RimSummaryCurve::SUM_FILTER_ANY:
|
||||
{
|
||||
curveVarFilterGroup->add(&m_wellNameFilter);
|
||||
curveVarFilterGroup->add(&m_wellGroupNameFilter);
|
||||
curveVarFilterGroup->add(&m_regionNumberFilter);
|
||||
curveVarFilterGroup->add(&m_regionNumber2Filter);
|
||||
curveVarFilterGroup->add(&m_wellSegmentNumberFilter);
|
||||
curveVarFilterGroup->add(&m_lgrNameFilter);
|
||||
curveVarFilterGroup->add(&m_cellIJKFilter);
|
||||
}
|
||||
break;
|
||||
case RimSummaryCurve::SUM_FILTER_REGION:
|
||||
{
|
||||
curveVarFilterGroup->add(&m_regionNumberFilter);
|
||||
}
|
||||
break;
|
||||
case RimSummaryCurve::SUM_FILTER_REGION_2_REGION:
|
||||
{
|
||||
curveVarFilterGroup->add(&m_regionNumberFilter);
|
||||
curveVarFilterGroup->add(&m_regionNumber2Filter);
|
||||
|
||||
}
|
||||
break;
|
||||
case RimSummaryCurve::SUM_FILTER_WELL_GROUP:
|
||||
{
|
||||
curveVarFilterGroup->add(&m_wellGroupNameFilter);
|
||||
|
||||
}
|
||||
break;
|
||||
case RimSummaryCurve::SUM_FILTER_WELL:
|
||||
{
|
||||
curveVarFilterGroup->add(&m_wellNameFilter);
|
||||
|
||||
}
|
||||
break;
|
||||
case RimSummaryCurve::SUM_FILTER_WELL_COMPLETION:
|
||||
{
|
||||
curveVarFilterGroup->add(&m_wellNameFilter);
|
||||
curveVarFilterGroup->add(&m_cellIJKFilter);
|
||||
|
||||
}
|
||||
break;
|
||||
case RimSummaryCurve::SUM_FILTER_WELL_LGR:
|
||||
{
|
||||
curveVarFilterGroup->add(&m_wellNameFilter);
|
||||
curveVarFilterGroup->add(&m_lgrNameFilter);
|
||||
}
|
||||
break;
|
||||
case RimSummaryCurve::SUM_FILTER_WELL_COMPLETION_LGR:
|
||||
{
|
||||
curveVarFilterGroup->add(&m_wellNameFilter);
|
||||
curveVarFilterGroup->add(&m_lgrNameFilter);
|
||||
curveVarFilterGroup->add(&m_cellIJKFilter);
|
||||
}
|
||||
break;
|
||||
case RimSummaryCurve::SUM_FILTER_WELL_SEGMENT:
|
||||
{
|
||||
curveVarFilterGroup->add(&m_wellNameFilter);
|
||||
curveVarFilterGroup->add(&m_wellSegmentNumberFilter);
|
||||
}
|
||||
break;
|
||||
case RimSummaryCurve::SUM_FILTER_BLOCK:
|
||||
{
|
||||
curveVarFilterGroup->add(&m_cellIJKFilter);
|
||||
}
|
||||
break;
|
||||
case RimSummaryCurve::SUM_FILTER_BLOCK_LGR:
|
||||
{
|
||||
curveVarFilterGroup->add(&m_lgrNameFilter);
|
||||
curveVarFilterGroup->add(&m_cellIJKFilter);
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
curveVarSelectionGroup->add(&m_uiFilterResultMultiSelection);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurveFilter::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
|
||||
{
|
||||
|
||||
if(changedField = &m_uiFilterResultMultiSelection)
|
||||
{
|
||||
|
||||
|
||||
this->loadDataAndUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifReaderEclipseSummary* RimSummaryCurveFilter::summaryReader()
|
||||
{
|
||||
if(!m_selectedSummaryCase()) return nullptr;
|
||||
|
||||
if(!m_selectedSummaryCase->caseData()) return nullptr;
|
||||
|
||||
return m_selectedSummaryCase()->caseData()->summaryReader();
|
||||
}
|
||||
|
83
ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.h
Normal file
83
ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.h
Normal file
@ -0,0 +1,83 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2016 Statoil ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "cafPdmField.h"
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmPointer.h"
|
||||
#include "cafPdmPtrField.h"
|
||||
#include "cafPdmChildField.h"
|
||||
#include "cafPdmChildArrayField.h"
|
||||
|
||||
#include "RimPlotCurve.h"
|
||||
#include "RifEclipseSummaryAddress.h"
|
||||
#include "cafAppEnum.h"
|
||||
|
||||
#include "RimSummaryCurve.h"
|
||||
|
||||
class RimSummaryCase;
|
||||
class RifReaderEclipseSummary;
|
||||
class RiuLineSegmentQwtPlotCurve;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
class RimSummaryCurveFilter : public caf::PdmObject
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
public:
|
||||
RimSummaryCurveFilter();
|
||||
virtual ~RimSummaryCurveFilter();
|
||||
|
||||
void loadDataAndUpdate() {}
|
||||
|
||||
private:
|
||||
RifReaderEclipseSummary* summaryReader();
|
||||
|
||||
// Overridden PDM methods
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly);
|
||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
||||
|
||||
// Fields
|
||||
caf::PdmPtrField<RimSummaryCase*> m_selectedSummaryCase;
|
||||
caf::PdmChildArrayField<RimSummaryCurve*> m_curves;
|
||||
|
||||
caf::PdmField<QString> m_selectedVariableDisplayField;
|
||||
|
||||
// Filter fields
|
||||
|
||||
caf::PdmField<caf::AppEnum<RimSummaryCurve::SummaryFilterType> >
|
||||
m_filterType;
|
||||
caf::PdmField<QString> m_completeVarStringFilter;
|
||||
|
||||
caf::PdmField<QString> m_filterQuantityName;
|
||||
caf::PdmField<QString> m_regionNumberFilter;
|
||||
caf::PdmField<QString> m_regionNumber2Filter;
|
||||
caf::PdmField<QString> m_wellGroupNameFilter;
|
||||
caf::PdmField<QString> m_wellNameFilter;
|
||||
caf::PdmField<QString> m_wellSegmentNumberFilter;
|
||||
caf::PdmField<QString> m_lgrNameFilter;
|
||||
caf::PdmField<QString> m_cellIJKFilter;
|
||||
|
||||
caf::PdmField<std::vector<int> > m_uiFilterResultMultiSelection;
|
||||
|
||||
};
|
Loading…
Reference in New Issue
Block a user