mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2091 Cross Plot : Add fields used to specify address for x-axis
This commit is contained in:
parent
99124759ed
commit
b05a99c763
@ -68,6 +68,8 @@ RimSummaryCurve::RimSummaryCurve()
|
||||
{
|
||||
CAF_PDM_InitObject("Summary Curve", ":/SummaryCurve16x16.png", "", "");
|
||||
|
||||
// Y Values
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_yValuesSummaryCase, "SummaryCase", "Case", "", "", "");
|
||||
m_yValuesSummaryCase.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
m_yValuesSummaryCase.uiCapability()->setAutoAddingOptionFromValue(false);
|
||||
@ -96,6 +98,43 @@ RimSummaryCurve::RimSummaryCurve()
|
||||
|
||||
m_yValuesCurveVariable = new RimSummaryAddress;
|
||||
|
||||
|
||||
// X Values
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_xValuesSummaryCase, "x_SummaryCase", "Case", "", "", "");
|
||||
m_xValuesSummaryCase.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
m_xValuesSummaryCase.uiCapability()->setAutoAddingOptionFromValue(false);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_xValuesSelectedVariableDisplayField, "x_SelectedVariableDisplayVar", "Vector", "", "", "");
|
||||
m_xValuesSelectedVariableDisplayField.xmlCapability()->setIOWritable(false);
|
||||
m_xValuesSelectedVariableDisplayField.xmlCapability()->setIOReadable(false);
|
||||
m_xValuesSelectedVariableDisplayField.uiCapability()->setUiReadOnly(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_xValuesSummaryFilter, "x_VarListFilter", "Filter", "", "", "");
|
||||
m_xValuesSummaryFilter.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
m_xValuesSummaryFilter.uiCapability()->setUiHidden(true);
|
||||
|
||||
m_xValuesSummaryFilter = new RimSummaryFilter;
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_xValuesUiFilterResultSelection, "x_FilterResultSelection", "Filter Result", "", "", "");
|
||||
m_xValuesUiFilterResultSelection.xmlCapability()->setIOWritable(false);
|
||||
m_xValuesUiFilterResultSelection.xmlCapability()->setIOReadable(false);
|
||||
m_xValuesUiFilterResultSelection.uiCapability()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName());
|
||||
m_xValuesUiFilterResultSelection.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||
m_xValuesUiFilterResultSelection.uiCapability()->setAutoAddingOptionFromValue(false);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_xValuesCurveVariable, "x_SummaryAddress", "SummaryAddress", "", "", "");
|
||||
m_xValuesCurveVariable.uiCapability()->setUiHidden(true);
|
||||
m_xValuesCurveVariable.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
|
||||
m_xValuesCurveVariable = new RimSummaryAddress;
|
||||
|
||||
|
||||
// Other members
|
||||
|
||||
CAF_PDM_InitField(&m_isCrossPlot, "IsCrossPlot", false, "Cross Plot Curve", "", "", "");
|
||||
//m_isCrossPlot.uiCapability()->setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_plotAxis, "PlotAxis", "Axis", "", "", "");
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_curveNameConfig, "SummaryCurveNameConfig", "SummaryCurveNameConfig", "", "", "");
|
||||
@ -115,6 +154,14 @@ RimSummaryCurve::~RimSummaryCurve()
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurve::setAsCrossPlotCurve()
|
||||
{
|
||||
m_isCrossPlot = true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -158,6 +205,7 @@ std::string RimSummaryCurve::unitName()
|
||||
{
|
||||
RifSummaryReaderInterface* reader = summaryReader();
|
||||
if (reader) return reader->unitName(this->summaryAddress());
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
@ -189,6 +237,7 @@ const std::vector<time_t>& RimSummaryCurve::timeSteps() const
|
||||
if ( !reader ) return emptyVector;
|
||||
|
||||
RifEclipseSummaryAddress addr = m_yValuesCurveVariable()->address();
|
||||
|
||||
return reader->timeSteps(addr);
|
||||
}
|
||||
|
||||
@ -213,11 +262,11 @@ RiaDefines::PlotAxis RimSummaryCurve::yAxis() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QList<caf::PdmOptionItemInfo> RimSummaryCurve::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly)
|
||||
{
|
||||
QList<caf::PdmOptionItemInfo> options = this->RimPlotCurve::calculateValueOptions(fieldNeedingOptions,useOptionsOnly);
|
||||
QList<caf::PdmOptionItemInfo> options = this->RimPlotCurve::calculateValueOptions(fieldNeedingOptions, useOptionsOnly);
|
||||
if (!options.isEmpty()) return options;
|
||||
|
||||
|
||||
if (fieldNeedingOptions == &m_yValuesSummaryCase)
|
||||
if (fieldNeedingOptions == &m_yValuesSummaryCase ||
|
||||
fieldNeedingOptions == &m_xValuesSummaryCase)
|
||||
{
|
||||
RimProject* proj = RiaApplication::instance()->project();
|
||||
std::vector<RimSummaryCase*> cases;
|
||||
@ -238,30 +287,14 @@ QList<caf::PdmOptionItemInfo> RimSummaryCurve::calculateValueOptions(const caf::
|
||||
}
|
||||
else if(fieldNeedingOptions == &m_yValuesUiFilterResultSelection)
|
||||
{
|
||||
if(m_yValuesSummaryCase)
|
||||
{
|
||||
RifSummaryReaderInterface* reader = summaryReader();
|
||||
if(reader)
|
||||
{
|
||||
const std::vector<RifEclipseSummaryAddress> allAddresses = reader->allResultAddresses();
|
||||
|
||||
for(auto& address : allAddresses)
|
||||
{
|
||||
if (!m_yValuesSummaryFilter->isIncludedByFilter(address )) continue;
|
||||
|
||||
std::string name = address.uiText();
|
||||
QString s = QString::fromStdString(name);
|
||||
options.push_back(caf::PdmOptionItemInfo(s, QVariant::fromValue( address)));
|
||||
}
|
||||
}
|
||||
|
||||
options.push_front(caf::PdmOptionItemInfo(RiaDefines::undefinedResultName(), QVariant::fromValue( RifEclipseSummaryAddress() )));
|
||||
|
||||
if(useOptionsOnly) *useOptionsOnly = true;
|
||||
}
|
||||
appendOptionItemsForSummaryAddresses(&options, m_yValuesSummaryCase(), m_yValuesSummaryFilter());
|
||||
}
|
||||
else if (fieldNeedingOptions == &m_xValuesUiFilterResultSelection)
|
||||
{
|
||||
appendOptionItemsForSummaryAddresses(&options, m_xValuesSummaryCase(), m_xValuesSummaryFilter());
|
||||
}
|
||||
return options;
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -350,14 +383,34 @@ void RimSummaryCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering&
|
||||
{
|
||||
RimPlotCurve::updateOptionSensitivity();
|
||||
|
||||
caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroup("Summary Vector");
|
||||
curveDataGroup->add(&m_yValuesSummaryCase);
|
||||
curveDataGroup->add(&m_yValuesSelectedVariableDisplayField);
|
||||
uiOrdering.add(&m_isCrossPlot);
|
||||
|
||||
caf::PdmUiGroup* curveVarSelectionGroup = curveDataGroup->addNewGroup("Vector Selection");
|
||||
curveVarSelectionGroup->setCollapsedByDefault(true);
|
||||
m_yValuesSummaryFilter->uiOrdering(uiConfigName, *curveVarSelectionGroup);
|
||||
curveVarSelectionGroup->add(&m_yValuesUiFilterResultSelection);
|
||||
{
|
||||
QString curveDataGroupName = "Summary Vector";
|
||||
if (m_isCrossPlot()) curveDataGroupName += " Y";
|
||||
caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroupWithKeyword(curveDataGroupName, "Summary Vector Y");
|
||||
curveDataGroup->add(&m_yValuesSummaryCase);
|
||||
curveDataGroup->add(&m_yValuesSelectedVariableDisplayField);
|
||||
|
||||
QString curveVarSelectionGroupName = "Vector Selection";
|
||||
if (m_isCrossPlot()) curveVarSelectionGroupName += " Y";
|
||||
caf::PdmUiGroup* curveVarSelectionGroup = curveDataGroup->addNewGroupWithKeyword(curveVarSelectionGroupName, "Vector Selection Y");
|
||||
curveVarSelectionGroup->setCollapsedByDefault(true);
|
||||
m_yValuesSummaryFilter->uiOrdering(uiConfigName, *curveVarSelectionGroup);
|
||||
curveVarSelectionGroup->add(&m_yValuesUiFilterResultSelection);
|
||||
}
|
||||
|
||||
if (m_isCrossPlot())
|
||||
{
|
||||
caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroup("Summary Vector X");
|
||||
curveDataGroup->add(&m_xValuesSummaryCase);
|
||||
curveDataGroup->add(&m_xValuesSelectedVariableDisplayField);
|
||||
|
||||
caf::PdmUiGroup* curveVarSelectionGroup = curveDataGroup->addNewGroup("Vector Selection X");
|
||||
curveVarSelectionGroup->setCollapsedByDefault(true);
|
||||
m_xValuesSummaryFilter->uiOrdering(uiConfigName, *curveVarSelectionGroup);
|
||||
curveVarSelectionGroup->add(&m_xValuesUiFilterResultSelection);
|
||||
}
|
||||
|
||||
uiOrdering.add(&m_plotAxis);
|
||||
|
||||
@ -377,6 +430,34 @@ void RimSummaryCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering&
|
||||
uiOrdering.skipRemainingFields(); // For now.
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurve::appendOptionItemsForSummaryAddresses(QList<caf::PdmOptionItemInfo>* options,
|
||||
RimSummaryCase* summaryCase,
|
||||
RimSummaryFilter* summaryFilter)
|
||||
{
|
||||
if (summaryCase)
|
||||
{
|
||||
RifSummaryReaderInterface* reader = summaryCase->summaryReader();
|
||||
if (reader)
|
||||
{
|
||||
const std::vector<RifEclipseSummaryAddress> allAddresses = reader->allResultAddresses();
|
||||
|
||||
for (auto& address : allAddresses)
|
||||
{
|
||||
if (summaryFilter && !summaryFilter->isIncludedByFilter(address)) continue;
|
||||
|
||||
std::string name = address.uiText();
|
||||
QString s = QString::fromStdString(name);
|
||||
options->push_back(caf::PdmOptionItemInfo(s, QVariant::fromValue(address)));
|
||||
}
|
||||
}
|
||||
|
||||
options->push_front(caf::PdmOptionItemInfo(RiaDefines::undefinedResultName(), QVariant::fromValue(RifEclipseSummaryAddress())));
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -423,6 +504,15 @@ void RimSummaryCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||
|
||||
plot->updateAxes();
|
||||
}
|
||||
else if (changedField == &m_xValuesUiFilterResultSelection)
|
||||
{
|
||||
m_xValuesCurveVariable->setAddress(m_xValuesUiFilterResultSelection());
|
||||
|
||||
this->calculateCurveInterpolationFromAddress();
|
||||
this->loadDataAndUpdate(true);
|
||||
|
||||
plot->updateAxes();
|
||||
}
|
||||
else if (&m_showCurve == changedField)
|
||||
{
|
||||
plot->updateAxes();
|
||||
@ -450,14 +540,6 @@ RifSummaryReaderInterface* RimSummaryCurve::summaryReader() const
|
||||
return m_yValuesSummaryCase()->summaryReader();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurve::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName /*= ""*/)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -51,6 +51,8 @@ public:
|
||||
RimSummaryCurve();
|
||||
virtual ~RimSummaryCurve();
|
||||
|
||||
void setAsCrossPlotCurve();
|
||||
|
||||
void setSummaryCase(RimSummaryCase* sumCase);
|
||||
RimSummaryCase* summaryCase() const;
|
||||
|
||||
@ -82,10 +84,13 @@ private:
|
||||
|
||||
// Overridden PDM methods
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
||||
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "");
|
||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly);
|
||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
||||
|
||||
static void appendOptionItemsForSummaryAddresses(QList<caf::PdmOptionItemInfo>* options,
|
||||
RimSummaryCase* summaryCase,
|
||||
RimSummaryFilter* summaryFilter);
|
||||
|
||||
private:
|
||||
// Y values
|
||||
caf::PdmPtrField<RimSummaryCase*> m_yValuesSummaryCase;
|
||||
@ -94,6 +99,15 @@ private:
|
||||
caf::PdmChildField<RimSummaryFilter*> m_yValuesSummaryFilter;
|
||||
caf::PdmField<RifEclipseSummaryAddress> m_yValuesUiFilterResultSelection;
|
||||
|
||||
// X values
|
||||
caf::PdmPtrField<RimSummaryCase*> m_xValuesSummaryCase;
|
||||
caf::PdmChildField<RimSummaryAddress*> m_xValuesCurveVariable;
|
||||
caf::PdmField<QString> m_xValuesSelectedVariableDisplayField;
|
||||
caf::PdmChildField<RimSummaryFilter*> m_xValuesSummaryFilter;
|
||||
caf::PdmField<RifEclipseSummaryAddress> m_xValuesUiFilterResultSelection;
|
||||
|
||||
caf::PdmField<bool> m_isCrossPlot;
|
||||
|
||||
caf::PdmChildField<RimSummaryCurveAutoName*> m_curveNameConfig;
|
||||
caf::PdmField<caf::AppEnum< RiaDefines::PlotAxis>> m_plotAxis;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user