#2690 Update all summary curves, not just visible when changing the vector for the whole collection

* Also make sure the curve names take into account all curves in the project tree and in the legend text.
* Make sure plot name is updated when a curve is deleted.
This commit is contained in:
Gaute Lindkvist 2018-05-15 08:43:36 +02:00
parent e2dc1486e7
commit 77dd3cbc43
12 changed files with 57 additions and 112 deletions

View File

@ -262,6 +262,7 @@ void RicDeleteItemExec::redo()
parentObj->firstAncestorOrThisOfType(summaryPlotCollection);
if (summaryPlotCollection)
{
summaryPlotCollection->updateSummaryNameHasChanged();
RiuPlotMainWindow* mainPlotWindow = RiaApplication::instance()->mainPlotWindow();
mainPlotWindow->updateSummaryPlotToolBar();
}

View File

@ -812,7 +812,7 @@ void RicSummaryCurveCreator::createNewPlot()
QString candidatePlotName;
if (m_previewPlot)
{
candidatePlotName = m_previewPlot->generatedPlotTitleFromVisibleCurves();
candidatePlotName = m_previewPlot->generatedPlotTitleFromAllCurves();
}
{

View File

@ -272,24 +272,6 @@ std::vector<RimSummaryCurve*> RimEnsembleCurveSet::curves() const
return m_curves.childObjects();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimSummaryCurve*> RimEnsembleCurveSet::visibleCurves() const
{
std::vector<RimSummaryCurve*> visible;
for (const auto& c : m_curves)
{
if (c->isCurveVisible())
{
visible.push_back(c);
}
}
return visible;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -988,7 +970,7 @@ QString RimEnsembleCurveSet::createAutoName() const
RimSummaryPlot* plot = nullptr;
firstAncestorOrThisOfTypeAsserted(plot);
QString curveSetName = m_summaryAddressNameTools->curveNameY(m_yValuesCurveVariable->address(), plot->activePlotTitleHelper());
QString curveSetName = m_summaryAddressNameTools->curveNameY(m_yValuesCurveVariable->address(), plot->activePlotTitleHelperAllCurves());
if (curveSetName.isEmpty())
{
curveSetName = m_summaryAddressNameTools->curveNameY(m_yValuesCurveVariable->address(), nullptr);

View File

@ -75,7 +75,6 @@ public:
void setSummaryAddress(RifEclipseSummaryAddress address);
RifEclipseSummaryAddress summaryAddress() const;
std::vector<RimSummaryCurve*> curves() const;
std::vector<RimSummaryCurve*> visibleCurves() const;
void deleteAllCurves();

View File

@ -355,7 +355,8 @@ QString RimSummaryCurve::createCurveAutoName()
RimSummaryPlot* plot = nullptr;
firstAncestorOrThisOfTypeAsserted(plot);
QString curveName = m_curveNameConfig->curveNameY(m_yValuesCurveVariable->address(), plot->activePlotTitleHelper());
const RimSummaryPlotNameHelper* nameHelper = plot->activePlotTitleHelperAllCurves();
QString curveName = m_curveNameConfig->curveNameY(m_yValuesCurveVariable->address(), nameHelper);
if (curveName.isEmpty())
{
curveName = m_curveNameConfig->curveNameY(m_yValuesCurveVariable->address(), nullptr);
@ -363,7 +364,7 @@ QString RimSummaryCurve::createCurveAutoName()
if (isCrossPlotCurve())
{
QString curveNameX = m_curveNameConfig->curveNameX(m_xValuesCurveVariable->address(), plot->activePlotTitleHelper());
QString curveNameX = m_curveNameConfig->curveNameX(m_xValuesCurveVariable->address(), nameHelper);
if (curveNameX.isEmpty())
{
curveNameX = m_curveNameConfig->curveNameX(m_xValuesCurveVariable->address(), nullptr);

View File

@ -76,7 +76,6 @@ public:
protected:
// RimPlotCurve overrides
virtual QString createCurveAutoName() override;
virtual void updateZoomInParentPlot() override;
virtual void onLoadDataAndUpdate(bool updateParentPlot) override;

View File

@ -175,6 +175,7 @@ void RimSummaryCurveCollection::deleteCurve(RimSummaryCurve* curve)
{
m_curves.removeChildObject(curve);
delete curve;
updateCaseNameHasChanged();
}
}
@ -186,24 +187,6 @@ std::vector<RimSummaryCurve*> RimSummaryCurveCollection::curves() const
return m_curves.childObjects();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimSummaryCurve*> RimSummaryCurveCollection::visibleCurves() const
{
std::vector<RimSummaryCurve*> visible;
for (auto c : m_curves)
{
if (c->isCurveVisible())
{
visible.push_back(c);
}
}
return visible;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -250,6 +233,8 @@ void RimSummaryCurveCollection::updateCaseNameHasChanged()
RimSummaryPlot* parentPlot;
firstAncestorOrThisOfTypeAsserted(parentPlot);
parentPlot->updatePlotTitle();
if (parentPlot->qwtPlot()) parentPlot->qwtPlot()->updateLegend();
}

View File

@ -55,7 +55,6 @@ public:
void deleteCurve(RimSummaryCurve* curve);
std::vector<RimSummaryCurve*> curves() const;
std::vector<RimSummaryCurve*> visibleCurves() const;
void deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase);
void deleteAllCurves();

View File

@ -126,7 +126,7 @@ RimSummaryPlot::RimSummaryPlot()
m_isCrossPlot = false;
m_nameHelper.reset(new RimSummaryPlotNameHelper);
m_nameHelperAllCurves.reset(new RimSummaryPlotNameHelper);
}
//--------------------------------------------------------------------------------------------------
@ -521,24 +521,25 @@ RiuSummaryQwtPlot* RimSummaryPlot::qwtPlot() const
//--------------------------------------------------------------------------------------------------
void RimSummaryPlot::updatePlotTitle()
{
updateNameHelperWithCurveData(m_nameHelperAllCurves.get());
if (m_useAutoPlotTitle)
{
m_userDefinedPlotTitle = generatePlotTitle(m_nameHelper.get());
m_userDefinedPlotTitle = m_nameHelperAllCurves->plotTitle();
}
updateCurveNames();
updateMdiWindowTitle();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const RimSummaryPlotNameHelper* RimSummaryPlot::activePlotTitleHelper() const
const RimSummaryPlotNameHelper* RimSummaryPlot::activePlotTitleHelperAllCurves() const
{
if (m_useAutoPlotTitle())
{
return m_nameHelper.get();
return m_nameHelperAllCurves.get();
}
return nullptr;
@ -547,11 +548,11 @@ const RimSummaryPlotNameHelper* RimSummaryPlot::activePlotTitleHelper() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimSummaryPlot::generatedPlotTitleFromVisibleCurves() const
QString RimSummaryPlot::generatedPlotTitleFromAllCurves() const
{
RimSummaryPlotNameHelper nameHelper;
return generatePlotTitle(&nameHelper);
updateNameHelperWithCurveData(&nameHelper);
return nameHelper.plotTitle();
}
//--------------------------------------------------------------------------------------------------
@ -1527,10 +1528,11 @@ void RimSummaryPlot::updateMdiWindowTitle()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimSummaryPlot::generatePlotTitle(RimSummaryPlotNameHelper* nameHelper) const
void RimSummaryPlot::updateNameHelperWithCurveData(RimSummaryPlotNameHelper* nameHelper) const
{
if (!nameHelper) return "";
if (!nameHelper) return;
nameHelper->clear();
std::vector<RifEclipseSummaryAddress> addresses;
std::vector<RimSummaryCase*> sumCases;
std::vector<RimSummaryCaseCollection*> ensembleCases;
@ -1539,19 +1541,16 @@ QString RimSummaryPlot::generatePlotTitle(RimSummaryPlotNameHelper* nameHelper)
{
for (RimSummaryCurve* curve : m_summaryCurveCollection->curves())
{
if (curve->isCurveVisible())
addresses.push_back(curve->summaryAddressY());
sumCases.push_back(curve->summaryCaseY());
if (curve->summaryCaseX())
{
addresses.push_back(curve->summaryAddressY());
sumCases.push_back(curve->summaryCaseY());
sumCases.push_back(curve->summaryCaseX());
if (curve->summaryCaseX())
if (curve->summaryAddressX().category() != RifEclipseSummaryAddress::SUMMARY_INVALID)
{
sumCases.push_back(curve->summaryCaseX());
if (curve->summaryAddressX().category() != RifEclipseSummaryAddress::SUMMARY_INVALID)
{
addresses.push_back(curve->summaryAddressX());
}
addresses.push_back(curve->summaryAddressX());
}
}
}
@ -1570,8 +1569,6 @@ QString RimSummaryPlot::generatePlotTitle(RimSummaryPlotNameHelper* nameHelper)
nameHelper->appendAddresses(addresses);
nameHelper->appendSummaryCases(sumCases);
nameHelper->appendEnsembleCases(ensembleCases);
return nameHelper->plotTitle();
}
//--------------------------------------------------------------------------------------------------
@ -1583,10 +1580,7 @@ void RimSummaryPlot::updateCurveNames()
{
for (auto c : summaryCurves())
{
if (c->isCurveVisible())
{
c->updateCurveNameNoLegendUpdate();
}
c->updateCurveNameNoLegendUpdate();
}
}

View File

@ -112,9 +112,9 @@ public:
void updatePlotTitle();
const RimSummaryPlotNameHelper* activePlotTitleHelper() const;
const RimSummaryPlotNameHelper* activePlotTitleHelperAllCurves() const;
void updateCurveNames();
QString generatedPlotTitleFromVisibleCurves() const;
QString generatedPlotTitleFromAllCurves() const;
void copyAxisPropertiesFromOther(const RimSummaryPlot& sourceSummaryPlot);
@ -126,7 +126,7 @@ public:
private:
void updateMdiWindowTitle() override;
QString generatePlotTitle(RimSummaryPlotNameHelper* nameHelper) const;
void updateNameHelperWithCurveData(RimSummaryPlotNameHelper* nameHelper) const;
protected:
// Overridden PDM methods
@ -168,7 +168,7 @@ private:
caf::PdmField<QString> m_userDefinedPlotTitle;
caf::PdmChildArrayField<RimGridTimeHistoryCurve*> m_gridTimeHistoryCurves;
caf::PdmChildField<RimSummaryCurveCollection*> m_summaryCurveCollection;
caf::PdmChildField<RimSummaryCurveCollection*> m_summaryCurveCollection;
caf::PdmChildField<RimEnsembleCurveSetCollection*> m_ensembleCurveSetCollection;
caf::PdmChildArrayField<RimAsciiDataCurve*> m_asciiDataCurves;
@ -184,7 +184,7 @@ private:
bool m_isCrossPlot;
std::unique_ptr<RimSummaryPlotNameHelper> m_nameHelper;
std::unique_ptr<RimSummaryPlotNameHelper> m_nameHelperAllCurves;
// Obsolete fields
caf::PdmChildArrayField<RimSummaryCurve*> m_summaryCurves_OBSOLETE;

View File

@ -229,7 +229,7 @@ QList<caf::PdmOptionItemInfo> RimSummaryPlotSourceStepping::calculateValueOption
std::vector<QString> identifierTexts;
RifSummaryReaderInterface* reader = firstSummaryReaderForVisibleCurves();
RifSummaryReaderInterface* reader = firstSummaryReaderForCurves();
if (reader)
{
RiaSummaryCurveAnalyzer* analyzer = analyzerForReader(reader);
@ -253,9 +253,9 @@ QList<caf::PdmOptionItemInfo> RimSummaryPlotSourceStepping::calculateValueOption
RifEclipseSummaryAddress::SummaryVarCategory category = RifEclipseSummaryAddress::SUMMARY_FIELD;
if (curveCollection->visibleCurves().size() > 0)
if (curveCollection->curves().size() > 0)
{
category = curveCollection->visibleCurves()[0]->summaryAddressY().category();
category = curveCollection->curves()[0]->summaryAddressY().category();
}
RiaSummaryCurveAnalyzer quantityAnalyzer;
@ -301,7 +301,7 @@ void RimSummaryPlotSourceStepping::fieldChangedByUi(const caf::PdmFieldHandle* c
{
if (m_summaryCase())
{
for (auto curve : curveCollection->visibleCurves())
for (auto curve : curveCollection->curves())
{
if (isYAxisStepping())
{
@ -324,7 +324,7 @@ void RimSummaryPlotSourceStepping::fieldChangedByUi(const caf::PdmFieldHandle* c
}
else if (changedField == &m_wellName)
{
for (auto curve : curveCollection->visibleCurves())
for (auto curve : curveCollection->curves())
{
if (isYAxisStepping())
{
@ -353,7 +353,7 @@ void RimSummaryPlotSourceStepping::fieldChangedByUi(const caf::PdmFieldHandle* c
}
else if (changedField == &m_region)
{
for (auto curve : curveCollection->visibleCurves())
for (auto curve : curveCollection->curves())
{
if (isYAxisStepping())
{
@ -382,7 +382,7 @@ void RimSummaryPlotSourceStepping::fieldChangedByUi(const caf::PdmFieldHandle* c
}
else if (changedField == &m_quantity)
{
for (auto curve : curveCollection->visibleCurves())
for (auto curve : curveCollection->curves())
{
if (isYAxisStepping())
{
@ -405,7 +405,7 @@ void RimSummaryPlotSourceStepping::fieldChangedByUi(const caf::PdmFieldHandle* c
}
else if (changedField == &m_wellGroupName)
{
for (auto curve : curveCollection->visibleCurves())
for (auto curve : curveCollection->curves())
{
if (isYAxisStepping())
{
@ -457,35 +457,21 @@ void RimSummaryPlotSourceStepping::fieldChangedByUi(const caf::PdmFieldHandle* c
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifSummaryReaderInterface* RimSummaryPlotSourceStepping::firstSummaryReaderForVisibleCurves() const
{
RimSummaryCase* sumCase = firstSummaryCaseForVisibleCurves();
if (sumCase)
{
return sumCase->summaryReader();
}
return nullptr;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimSummaryCase* RimSummaryPlotSourceStepping::firstSummaryCaseForVisibleCurves() const
RifSummaryReaderInterface* RimSummaryPlotSourceStepping::firstSummaryReaderForCurves() const
{
RimSummaryCurveCollection* curveCollection = nullptr;
this->firstAncestorOrThisOfTypeAsserted(curveCollection);
for (auto curve : curveCollection->visibleCurves())
for (auto curve : curveCollection->curves())
{
if (isYAxisStepping() && curve->summaryCaseY())
{
return curve->summaryCaseY();
return curve->summaryCaseY()->summaryReader();
}
if (isXAxisStepping() && curve->summaryCaseX())
{
return curve->summaryCaseX();
return curve->summaryCaseX()->summaryReader();
}
}
@ -498,7 +484,7 @@ RimSummaryCase* RimSummaryPlotSourceStepping::firstSummaryCaseForVisibleCurves()
caf::PdmValueField* RimSummaryPlotSourceStepping::fieldToModify()
{
RiaSummaryCurveAnalyzer analyzer;
analyzer.appendAdresses(visibleAddressesCurveCollection());
analyzer.appendAdresses(addressesCurveCollection());
if (analyzer.wellNames().size() == 1)
{
@ -521,7 +507,7 @@ caf::PdmValueField* RimSummaryPlotSourceStepping::fieldToModify()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::set<RifEclipseSummaryAddress> RimSummaryPlotSourceStepping::visibleAddressesCurveCollection() const
std::set<RifEclipseSummaryAddress> RimSummaryPlotSourceStepping::addressesCurveCollection() const
{
std::set<RifEclipseSummaryAddress> addresses;
@ -530,7 +516,7 @@ std::set<RifEclipseSummaryAddress> RimSummaryPlotSourceStepping::visibleAddresse
if (!curveCollection) return addresses;
auto curves = curveCollection->visibleCurves();
auto curves = curveCollection->curves();
for (auto c : curves)
{
if (isYAxisStepping())
@ -550,7 +536,7 @@ std::set<RifEclipseSummaryAddress> RimSummaryPlotSourceStepping::visibleAddresse
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::set<RimSummaryCase*> RimSummaryPlotSourceStepping::visibleSummaryCasesCurveCollection() const
std::set<RimSummaryCase*> RimSummaryPlotSourceStepping::summaryCasesCurveCollection() const
{
std::set<RimSummaryCase*> sumCases;
@ -559,7 +545,7 @@ std::set<RimSummaryCase*> RimSummaryPlotSourceStepping::visibleSummaryCasesCurve
if (!curveCollection) return sumCases;
auto curves = curveCollection->visibleCurves();
auto curves = curveCollection->curves();
for (auto c : curves)
{
if (isYAxisStepping())
@ -589,7 +575,7 @@ std::vector<caf::PdmFieldHandle*> RimSummaryPlotSourceStepping::computeVisibleFi
std::vector<caf::PdmFieldHandle*> fields;
auto sumCases = visibleSummaryCasesCurveCollection();
auto sumCases = summaryCasesCurveCollection();
if (sumCases.size() == 1)
{
RimProject* proj = RiaApplication::instance()->project();
@ -604,7 +590,7 @@ std::vector<caf::PdmFieldHandle*> RimSummaryPlotSourceStepping::computeVisibleFi
}
RiaSummaryCurveAnalyzer analyzer;
analyzer.appendAdresses(visibleAddressesCurveCollection());
analyzer.appendAdresses(addressesCurveCollection());
RifEclipseSummaryAddress::SummaryVarCategory category = RifEclipseSummaryAddress::SUMMARY_INVALID;
{

View File

@ -77,12 +77,11 @@ private:
caf::PdmUiEditorAttribute* attribute) override;
private:
RifSummaryReaderInterface* firstSummaryReaderForVisibleCurves() const;
RimSummaryCase* firstSummaryCaseForVisibleCurves() const;
RifSummaryReaderInterface* firstSummaryReaderForCurves() const;
caf::PdmValueField* fieldToModify();
std::set<RifEclipseSummaryAddress> visibleAddressesCurveCollection() const;
std::set<RimSummaryCase*> visibleSummaryCasesCurveCollection() const;
std::set<RifEclipseSummaryAddress> addressesCurveCollection() const;
std::set<RimSummaryCase*> summaryCasesCurveCollection() const;
std::vector<caf::PdmFieldHandle*> computeVisibleFieldsAndSetFieldVisibility();
bool isXAxisStepping() const;