mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#864 Added SummaryCurveAutoName
This commit is contained in:
parent
b38c1986aa
commit
1bd070a8f5
@ -11,6 +11,7 @@ ${CEE_CURRENT_LIST_DIR}RimSummaryCase.h
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCaseCollection.h
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurve.h
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurveAppearanceCalculator.h
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurveAutoName.h
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurveFilter.h
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurvesCalculator.h
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryFilter.h
|
||||
@ -27,6 +28,7 @@ ${CEE_CURRENT_LIST_DIR}RimSummaryCase.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCaseCollection.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurve.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurveAppearanceCalculator.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurveAutoName.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurveFilter.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryCurvesCalculator.cpp
|
||||
${CEE_CURRENT_LIST_DIR}RimSummaryFilter.cpp
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "RimEclipseResultCase.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimSummaryCase.h"
|
||||
#include "RimSummaryCurveAutoName.h"
|
||||
#include "RimSummaryCurveFilter.h"
|
||||
#include "RimSummaryFilter.h"
|
||||
#include "RimSummaryPlot.h"
|
||||
@ -156,7 +157,8 @@ RimSummaryCurve::RimSummaryCurve()
|
||||
m_summaryFilter.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
m_summaryFilter.uiCapability()->setUiHidden(true);
|
||||
|
||||
m_summaryFilter = new RimSummaryFilter();
|
||||
m_summaryFilterObject = std::unique_ptr<RimSummaryFilter>(new RimSummaryFilter);
|
||||
m_summaryFilter = m_summaryFilterObject.get();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_uiFilterResultSelection, "FilterResultSelection", "Filter Result", "", "", "");
|
||||
m_uiFilterResultSelection.xmlCapability()->setIOWritable(false);
|
||||
@ -165,17 +167,21 @@ RimSummaryCurve::RimSummaryCurve()
|
||||
m_uiFilterResultSelection.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||
m_uiFilterResultSelection.uiCapability()->setAutoAddingOptionFromValue(false);
|
||||
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_curveVariable, "SummaryAddress", "SummaryAddress", "", "", "");
|
||||
m_curveVariable.uiCapability()->setUiHidden(true);
|
||||
m_curveVariable.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
|
||||
m_curveVariableObject = std::unique_ptr<RimSummaryAddress>(new RimSummaryAddress);
|
||||
m_curveVariable = m_curveVariableObject.get();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_plotAxis, "PlotAxis", "Axis", "", "", "");
|
||||
|
||||
m_curveVariable = new RimSummaryAddress;
|
||||
CAF_PDM_InitFieldNoDefault(&m_curveNameConfig, "SummaryCurveNameConfig", "SummaryCurveNameConfig", "", "", "");
|
||||
m_curveNameConfig.uiCapability()->setUiHidden(true);
|
||||
m_curveNameConfig.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
|
||||
// Add some space before name to indicate these belong to the Auto Name field
|
||||
CAF_PDM_InitField(&m_addCaseNameToCurveName, "AddCaseNameToCurveName", true, " Case Name", "", "", "");
|
||||
m_curveNameConfigObject = std::unique_ptr<RimSummaryCurveAutoName>(new RimSummaryCurveAutoName);
|
||||
m_curveNameConfig = m_curveNameConfigObject.get();
|
||||
|
||||
m_symbolSkipPixelDistance = 10.0f;
|
||||
m_curveThickness = 2;
|
||||
@ -187,8 +193,6 @@ RimSummaryCurve::RimSummaryCurve()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCurve::~RimSummaryCurve()
|
||||
{
|
||||
delete m_curveVariable();
|
||||
delete m_summaryFilter();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -337,19 +341,7 @@ QList<caf::PdmOptionItemInfo> RimSummaryCurve::calculateValueOptions(const caf::
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimSummaryCurve::createCurveAutoName()
|
||||
{
|
||||
QString generatedCurveName = QString::fromStdString( m_curveVariable->address().uiText()) + "["+ this->unitName().c_str() + "]";
|
||||
|
||||
if (m_addCaseNameToCurveName && m_summaryCase())
|
||||
{
|
||||
if (!generatedCurveName.isEmpty())
|
||||
{
|
||||
generatedCurveName += ", ";
|
||||
}
|
||||
|
||||
generatedCurveName += m_summaryCase->shortName();
|
||||
}
|
||||
|
||||
return generatedCurveName;
|
||||
return m_curveNameConfig->curveName(m_curveVariable->address());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -420,9 +412,11 @@ void RimSummaryCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering&
|
||||
appearanceGroup->add(&m_lineStyle);
|
||||
appearanceGroup->add(&m_curveName);
|
||||
appearanceGroup->add(&m_isUsingAutoName);
|
||||
|
||||
if (m_isUsingAutoName)
|
||||
{
|
||||
appearanceGroup->add(&m_addCaseNameToCurveName);
|
||||
caf::PdmUiGroup* autoNameGroup = appearanceGroup->addNewGroup("Auto Name Config");
|
||||
m_curveNameConfig->defineUiOrdering(uiConfigName, *autoNameGroup);
|
||||
}
|
||||
|
||||
uiOrdering.add(&m_plotAxis);
|
||||
@ -478,11 +472,6 @@ void RimSummaryCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||
{
|
||||
plot->updateAxes();
|
||||
}
|
||||
else if (changedField == &m_addCaseNameToCurveName)
|
||||
{
|
||||
this->uiCapability()->updateConnectedEditors();
|
||||
updateCurveName();
|
||||
}
|
||||
else if (changedField == &m_plotAxis)
|
||||
{
|
||||
updateQwtPlotAxis();
|
||||
|
@ -31,10 +31,13 @@
|
||||
|
||||
#include "cafAppEnum.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
class RifReaderEclipseSummary;
|
||||
class RimSummaryCase;
|
||||
class RimSummaryFilter;
|
||||
class RiuLineSegmentQwtPlotCurve;
|
||||
class RimSummaryCurveAutoName;
|
||||
|
||||
class RimSummaryAddress: public caf::PdmObject
|
||||
{
|
||||
@ -93,7 +96,7 @@ protected:
|
||||
// RimPlotCurve overrides
|
||||
|
||||
virtual QString createCurveAutoName() override;
|
||||
virtual void updateZoomInParentPlot() override;
|
||||
virtual void updateZoomInParentPlot() override;
|
||||
virtual void onLoadDataAndUpdate() override;
|
||||
|
||||
private:
|
||||
@ -111,11 +114,17 @@ private:
|
||||
caf::PdmPtrField<RimSummaryCase*> m_summaryCase;
|
||||
caf::PdmChildField<RimSummaryAddress*> m_curveVariable;
|
||||
caf::PdmField<QString> m_selectedVariableDisplayField;
|
||||
caf::PdmField<bool> m_addCaseNameToCurveName;
|
||||
|
||||
caf::PdmChildField<RimSummaryCurveAutoName*> m_curveNameConfig;
|
||||
|
||||
caf::PdmField< caf::AppEnum< RimDefines::PlotAxis > > m_plotAxis;
|
||||
|
||||
// Filter fields
|
||||
caf::PdmChildField<RimSummaryFilter*> m_summaryFilter;
|
||||
caf::PdmField<int> m_uiFilterResultSelection;
|
||||
|
||||
// Internal objects managed by unique_ptr
|
||||
std::unique_ptr<RimSummaryAddress> m_curveVariableObject;
|
||||
std::unique_ptr<RimSummaryFilter> m_summaryFilterObject;
|
||||
std::unique_ptr<RimSummaryCurveAutoName> m_curveNameConfigObject;
|
||||
};
|
||||
|
@ -0,0 +1,243 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 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 "RimSummaryCurveAutoName.h"
|
||||
|
||||
#include "RifEclipseSummaryAddress.h"
|
||||
|
||||
#include "RimSummaryCurve.h"
|
||||
#include "RimSummaryCase.h"
|
||||
|
||||
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimSummaryCurveAutoName, "SummaryCurveAutoName");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCurveAutoName::RimSummaryCurveAutoName()
|
||||
{
|
||||
CAF_PDM_InitObject("RimSummaryCurveAutoName", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&m_quantity, "Quantity", true, "Quantity", "", "", "");
|
||||
CAF_PDM_InitField(&m_unit, "Unit", true, "Unit", "", "", "");
|
||||
CAF_PDM_InitField(&m_regionNumber, "RegionNumber", true, "RegionNumber", "", "", "");
|
||||
CAF_PDM_InitField(&m_wellGroupName, "WellGroupName", true, "WellGroupName", "", "", "");
|
||||
CAF_PDM_InitField(&m_wellName, "WellName", true, "WellName", "", "", "");
|
||||
CAF_PDM_InitField(&m_wellSegmentNumber, "WellSegmentNumber", true, "WellSegmentNumber", "", "", "");
|
||||
CAF_PDM_InitField(&m_lgrName, "LgrName", true, "LgrName", "", "", "");
|
||||
CAF_PDM_InitField(&m_completion, "Completion", true, "Completion", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&m_caseName, "CaseName", true, "CaseName", "", "", "");
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimSummaryCurveAutoName::curveName(const RifEclipseSummaryAddress& summaryAddress) const
|
||||
{
|
||||
std::string text;
|
||||
|
||||
RimSummaryCurve* summaryCurve = nullptr;
|
||||
this->firstAncestorOrThisOfType(summaryCurve);
|
||||
|
||||
if (m_quantity)
|
||||
{
|
||||
text += summaryAddress.quantityName();
|
||||
|
||||
if (m_unit && summaryCurve)
|
||||
{
|
||||
text += "[" + summaryCurve->unitName() + "]";
|
||||
}
|
||||
}
|
||||
|
||||
switch (summaryAddress.category())
|
||||
{
|
||||
case RifEclipseSummaryAddress::SUMMARY_REGION:
|
||||
{
|
||||
if (m_regionNumber)
|
||||
{
|
||||
if (text.size() > 0) text +=":";
|
||||
text += std::to_string(summaryAddress.regionNumber());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RifEclipseSummaryAddress::SUMMARY_REGION_2_REGION:
|
||||
{
|
||||
if (m_regionNumber)
|
||||
{
|
||||
if (text.size() > 0) text += ":";
|
||||
text += std::to_string(summaryAddress.regionNumber());
|
||||
text += "-" + std::to_string(summaryAddress.regionNumber2());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RifEclipseSummaryAddress::SUMMARY_WELL_GROUP:
|
||||
{
|
||||
if (m_wellGroupName)
|
||||
{
|
||||
if (text.size() > 0) text += ":";
|
||||
text += summaryAddress.wellGroupName();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RifEclipseSummaryAddress::SUMMARY_WELL:
|
||||
{
|
||||
appendWellName(text, summaryAddress);
|
||||
}
|
||||
break;
|
||||
case RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION:
|
||||
{
|
||||
appendWellName(text, summaryAddress);
|
||||
|
||||
if (m_completion)
|
||||
{
|
||||
if (text.size() > 0) text += ":";
|
||||
text += std::to_string(summaryAddress.cellI()) + ", "
|
||||
+ std::to_string(summaryAddress.cellJ()) + ", "
|
||||
+ std::to_string(summaryAddress.cellK());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RifEclipseSummaryAddress::SUMMARY_WELL_LGR:
|
||||
{
|
||||
appendLgrName(text, summaryAddress);
|
||||
appendWellName(text, summaryAddress);
|
||||
}
|
||||
break;
|
||||
case RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION_LGR:
|
||||
{
|
||||
appendLgrName(text, summaryAddress);
|
||||
appendWellName(text, summaryAddress);
|
||||
|
||||
if (m_completion)
|
||||
{
|
||||
if (text.size() > 0) text += ":";
|
||||
text += std::to_string(summaryAddress.cellI()) + ", "
|
||||
+ std::to_string(summaryAddress.cellJ()) + ", "
|
||||
+ std::to_string(summaryAddress.cellK());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RifEclipseSummaryAddress::SUMMARY_WELL_SEGMENT:
|
||||
{
|
||||
appendWellName(text, summaryAddress);
|
||||
|
||||
if (m_wellSegmentNumber)
|
||||
{
|
||||
if (text.size() > 0) text += ":";
|
||||
text += ":" + summaryAddress.wellSegmentNumber();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RifEclipseSummaryAddress::SUMMARY_BLOCK:
|
||||
{
|
||||
if (m_completion)
|
||||
{
|
||||
if (text.size() > 0) text += ":";
|
||||
text += std::to_string(summaryAddress.cellI()) + ", "
|
||||
+ std::to_string(summaryAddress.cellJ()) + ", "
|
||||
+ std::to_string(summaryAddress.cellK());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR:
|
||||
{
|
||||
appendLgrName(text, summaryAddress);
|
||||
|
||||
if (m_completion)
|
||||
{
|
||||
if (text.size() > 0) text += ":";
|
||||
text += std::to_string(summaryAddress.cellI()) + ", "
|
||||
+ std::to_string(summaryAddress.cellJ()) + ", "
|
||||
+ std::to_string(summaryAddress.cellK());
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (summaryCurve)
|
||||
{
|
||||
if (m_caseName)
|
||||
{
|
||||
if (summaryCurve && summaryCurve->summaryCase())
|
||||
{
|
||||
if (text.size() > 0) text += ", ";
|
||||
text += summaryCurve->summaryCase()->caseName().toStdString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return QString::fromStdString(text);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurveAutoName::appendWellName(std::string& text, const RifEclipseSummaryAddress& summaryAddress) const
|
||||
{
|
||||
if (m_wellName)
|
||||
{
|
||||
if (text.size() > 0) text += ":";
|
||||
text += summaryAddress.wellName();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurveAutoName::appendLgrName(std::string& text, const RifEclipseSummaryAddress& summaryAddress) const
|
||||
{
|
||||
if (m_lgrName)
|
||||
{
|
||||
if (text.size() > 0) text += ":";
|
||||
text += ":" + summaryAddress.lgrName();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurveAutoName::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
|
||||
{
|
||||
RimSummaryCurve* summaryCurve = nullptr;
|
||||
this->firstAncestorOrThisOfType(summaryCurve);
|
||||
if (summaryCurve)
|
||||
{
|
||||
summaryCurve->updateCurveName();
|
||||
summaryCurve->updateConnectedEditors();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurveAutoName::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||
{
|
||||
uiOrdering.add(&m_caseName);
|
||||
uiOrdering.add(&m_quantity);
|
||||
uiOrdering.add(&m_unit);
|
||||
uiOrdering.add(&m_regionNumber);
|
||||
uiOrdering.add(&m_wellGroupName);
|
||||
uiOrdering.add(&m_wellName);
|
||||
uiOrdering.add(&m_wellSegmentNumber);
|
||||
uiOrdering.add(&m_lgrName);
|
||||
uiOrdering.add(&m_completion);
|
||||
}
|
||||
|
@ -0,0 +1,59 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 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"
|
||||
|
||||
|
||||
class RifEclipseSummaryAddress;
|
||||
|
||||
class RimSummaryCurveAutoName : public caf::PdmObject
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
public:
|
||||
RimSummaryCurveAutoName();;
|
||||
|
||||
QString curveName(const RifEclipseSummaryAddress& summaryAddress) const;
|
||||
|
||||
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||
|
||||
protected:
|
||||
friend RimSummaryCurve;
|
||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
||||
|
||||
private:
|
||||
void appendWellName(std::string& text, const RifEclipseSummaryAddress& summaryAddress) const;
|
||||
void appendLgrName(std::string& text, const RifEclipseSummaryAddress& summaryAddress) const;
|
||||
|
||||
private:
|
||||
caf::PdmField<bool> m_quantity;
|
||||
caf::PdmField<bool> m_unit;
|
||||
caf::PdmField<bool> m_regionNumber;
|
||||
caf::PdmField<bool> m_wellGroupName;
|
||||
caf::PdmField<bool> m_wellName;
|
||||
caf::PdmField<bool> m_wellSegmentNumber;
|
||||
caf::PdmField<bool> m_lgrName;
|
||||
caf::PdmField<bool> m_completion;
|
||||
|
||||
caf::PdmField<bool> m_caseName;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user