#2248 Source Stepping : Compute visible fields once based on visible curves

This commit is contained in:
Magne Sjaastad
2017-12-15 10:13:53 +01:00
parent e35a448dae
commit 530b4d4073
4 changed files with 131 additions and 154 deletions

View File

@@ -184,6 +184,24 @@ std::vector<RimSummaryCurve*> RimSummaryCurveCollection::curves() const
return m_curves.childObjects(); 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;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

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

View File

@@ -78,8 +78,7 @@ void RimSummaryPlotSourceStepping::applyNextCase()
RimProject* proj = RiaApplication::instance()->project(); RimProject* proj = RiaApplication::instance()->project();
auto summaryCases = proj->allSummaryCases(); auto summaryCases = proj->allSummaryCases();
if (summaryCases.size() < 1) if (summaryCases.size() < 1) return;
return;
auto currentCase = std::find(summaryCases.begin(), summaryCases.end(), m_summaryCase()); auto currentCase = std::find(summaryCases.begin(), summaryCases.end(), m_summaryCase());
@@ -113,8 +112,7 @@ void RimSummaryPlotSourceStepping::applyPrevCase()
RimProject* proj = RiaApplication::instance()->project(); RimProject* proj = RiaApplication::instance()->project();
auto summaryCases = proj->allSummaryCases(); auto summaryCases = proj->allSummaryCases();
if (summaryCases.size() < 1) if (summaryCases.size() < 1) return;
return;
auto currentCase = std::find(summaryCases.begin(), summaryCases.end(), m_summaryCase()); auto currentCase = std::find(summaryCases.begin(), summaryCases.end(), m_summaryCase());
@@ -165,8 +163,7 @@ void RimSummaryPlotSourceStepping::applyPrevQuantity()
void RimSummaryPlotSourceStepping::applyNextOtherIdentifier() void RimSummaryPlotSourceStepping::applyNextOtherIdentifier()
{ {
caf::PdmValueField* valueField = fieldToModify(); caf::PdmValueField* valueField = fieldToModify();
if (!valueField) if (!valueField) return;
return;
modifyCurrentIndex(valueField, 1); modifyCurrentIndex(valueField, 1);
} }
@@ -177,8 +174,7 @@ void RimSummaryPlotSourceStepping::applyNextOtherIdentifier()
void RimSummaryPlotSourceStepping::applyPrevOtherIdentifier() void RimSummaryPlotSourceStepping::applyPrevOtherIdentifier()
{ {
caf::PdmValueField* valueField = fieldToModify(); caf::PdmValueField* valueField = fieldToModify();
if (!valueField) if (!valueField) return;
return;
modifyCurrentIndex(valueField, -1); modifyCurrentIndex(valueField, -1);
} }
@@ -188,42 +184,7 @@ void RimSummaryPlotSourceStepping::applyPrevOtherIdentifier()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::vector<caf::PdmFieldHandle*> RimSummaryPlotSourceStepping::fieldsToShowInToolbar() std::vector<caf::PdmFieldHandle*> RimSummaryPlotSourceStepping::fieldsToShowInToolbar()
{ {
std::vector<caf::PdmFieldHandle*> fields; return computeVisibleFieldsAndSetFieldVisibility();
auto sumCases = allSummaryCasesUsedInCurveCollection();
if (sumCases.size() == 1)
{
RimProject* proj = RiaApplication::instance()->project();
if (proj->allSummaryCases().size() > 1)
{
fields.push_back(&m_summaryCase);
}
}
RiaSummaryCurveAnalyzer analyzer;
analyzer.appendAdresses(allAddressesUsedInCurveCollection());
if (analyzer.wellNames().size() == 1)
{
fields.push_back(&m_wellName);
}
if (analyzer.wellGroupNames().size() == 1)
{
fields.push_back(&m_wellGroupName);
}
if (analyzer.regionNumbers().size() == 1)
{
fields.push_back(&m_region);
}
if (analyzer.quantities().size() == 1)
{
fields.push_back(&m_quantity);
}
return fields;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -231,7 +192,15 @@ std::vector<caf::PdmFieldHandle*> RimSummaryPlotSourceStepping::fieldsToShowInTo
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimSummaryPlotSourceStepping::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) void RimSummaryPlotSourceStepping::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{ {
updateUiFromCurves(); auto visible = computeVisibleFieldsAndSetFieldVisibility();
if (visible.size() == 0)
{
m_placeholderForLabel.uiCapability()->setUiHidden(false);
}
else
{
m_placeholderForLabel.uiCapability()->setUiHidden(true);
}
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -332,7 +301,7 @@ void RimSummaryPlotSourceStepping::fieldChangedByUi(const caf::PdmFieldHandle* c
{ {
if (m_summaryCase()) if (m_summaryCase())
{ {
for (auto curve : curveCollection->curves()) for (auto curve : curveCollection->visibleCurves())
{ {
if (isYAxisStepping()) if (isYAxisStepping())
{ {
@@ -350,7 +319,7 @@ void RimSummaryPlotSourceStepping::fieldChangedByUi(const caf::PdmFieldHandle* c
} }
else if (changedField == &m_wellName) else if (changedField == &m_wellName)
{ {
for (auto curve : curveCollection->curves()) for (auto curve : curveCollection->visibleCurves())
{ {
if (isYAxisStepping()) if (isYAxisStepping())
{ {
@@ -379,7 +348,7 @@ void RimSummaryPlotSourceStepping::fieldChangedByUi(const caf::PdmFieldHandle* c
} }
else if (changedField == &m_region) else if (changedField == &m_region)
{ {
for (auto curve : curveCollection->curves()) for (auto curve : curveCollection->visibleCurves())
{ {
if (isYAxisStepping()) if (isYAxisStepping())
{ {
@@ -408,7 +377,7 @@ void RimSummaryPlotSourceStepping::fieldChangedByUi(const caf::PdmFieldHandle* c
} }
else if (changedField == &m_quantity) else if (changedField == &m_quantity)
{ {
for (auto curve : curveCollection->curves()) for (auto curve : curveCollection->visibleCurves())
{ {
if (isYAxisStepping()) if (isYAxisStepping())
{ {
@@ -431,7 +400,7 @@ void RimSummaryPlotSourceStepping::fieldChangedByUi(const caf::PdmFieldHandle* c
} }
else if (changedField == &m_wellGroupName) else if (changedField == &m_wellGroupName)
{ {
for (auto curve : curveCollection->curves()) for (auto curve : curveCollection->visibleCurves())
{ {
if (isYAxisStepping()) if (isYAxisStepping())
{ {
@@ -524,99 +493,13 @@ RimSummaryCase* RimSummaryPlotSourceStepping::singleSummaryCase() const
return nullptr; return nullptr;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryPlotSourceStepping::updateUiFromCurves()
{
m_summaryCase.uiCapability()->setUiHidden(true);
m_wellName.uiCapability()->setUiHidden(true);
m_wellGroupName.uiCapability()->setUiHidden(true);
m_region.uiCapability()->setUiHidden(true);
m_quantity.uiCapability()->setUiHidden(true);
m_placeholderForLabel.uiCapability()->setUiHidden(true);
bool commonIdentifierFound = false;
auto sumCases = allSummaryCasesUsedInCurveCollection();
if (sumCases.size() == 1)
{
if (sumCases.find(m_summaryCase) == sumCases.end())
{
m_summaryCase = *(sumCases.begin());
}
RimProject* proj = RiaApplication::instance()->project();
if (proj->allSummaryCases().size() > 1)
{
m_summaryCase.uiCapability()->setUiHidden(false);
commonIdentifierFound = true;
}
}
RiaSummaryCurveAnalyzer analyzer;
analyzer.appendAdresses(allAddressesUsedInCurveCollection());
RifEclipseSummaryAddress::SummaryVarCategory category = RifEclipseSummaryAddress::SUMMARY_INVALID;
{
if (analyzer.categories().size() == 1)
{
category = *(analyzer.categories().begin());
}
}
if (category != RifEclipseSummaryAddress::SUMMARY_INVALID)
{
if (analyzer.wellNames().size() == 1)
{
QString txt = QString::fromStdString(*(analyzer.wellNames().begin()));
m_wellName = txt;
m_wellName.uiCapability()->setUiHidden(false);
commonIdentifierFound = true;
}
if (analyzer.wellGroupNames().size() == 1)
{
QString txt = QString::fromStdString(*(analyzer.wellGroupNames().begin()));
m_wellGroupName = txt;
m_wellGroupName.uiCapability()->setUiHidden(false);
commonIdentifierFound = true;
}
if (analyzer.regionNumbers().size() == 1)
{
m_region = *(analyzer.regionNumbers().begin());
m_region.uiCapability()->setUiHidden(false);
commonIdentifierFound = true;
}
if (analyzer.quantities().size() == 1)
{
QString txt = QString::fromStdString(*(analyzer.quantities().begin()));
m_quantity = txt;
m_quantity.uiCapability()->setUiHidden(false);
commonIdentifierFound = true;
}
}
if (!commonIdentifierFound)
{
m_placeholderForLabel.uiCapability()->setUiHidden(false);
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
caf::PdmValueField* RimSummaryPlotSourceStepping::fieldToModify() caf::PdmValueField* RimSummaryPlotSourceStepping::fieldToModify()
{ {
RiaSummaryCurveAnalyzer analyzer; RiaSummaryCurveAnalyzer analyzer;
analyzer.appendAdresses(allAddressesUsedInCurveCollection()); analyzer.appendAdresses(visibleAddressesCurveCollection());
if (analyzer.wellNames().size() == 1) if (analyzer.wellNames().size() == 1)
{ {
@@ -639,14 +522,14 @@ caf::PdmValueField* RimSummaryPlotSourceStepping::fieldToModify()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::set<RifEclipseSummaryAddress> RimSummaryPlotSourceStepping::allAddressesUsedInCurveCollection() const std::set<RifEclipseSummaryAddress> RimSummaryPlotSourceStepping::visibleAddressesCurveCollection() const
{ {
std::set<RifEclipseSummaryAddress> addresses; std::set<RifEclipseSummaryAddress> addresses;
RimSummaryCurveCollection* curveCollection = nullptr; RimSummaryCurveCollection* curveCollection = nullptr;
this->firstAncestorOrThisOfTypeAsserted(curveCollection); this->firstAncestorOrThisOfTypeAsserted(curveCollection);
auto curves = curveCollection->curves(); auto curves = curveCollection->visibleCurves();
for (auto c : curves) for (auto c : curves)
{ {
if (isYAxisStepping()) if (isYAxisStepping())
@@ -666,14 +549,14 @@ std::set<RifEclipseSummaryAddress> RimSummaryPlotSourceStepping::allAddressesUse
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::set<RimSummaryCase*> RimSummaryPlotSourceStepping::allSummaryCasesUsedInCurveCollection() const std::set<RimSummaryCase*> RimSummaryPlotSourceStepping::visibleSummaryCasesCurveCollection() const
{ {
std::set<RimSummaryCase*> sumCases; std::set<RimSummaryCase*> sumCases;
RimSummaryCurveCollection* curveCollection = nullptr; RimSummaryCurveCollection* curveCollection = nullptr;
this->firstAncestorOrThisOfTypeAsserted(curveCollection); this->firstAncestorOrThisOfTypeAsserted(curveCollection);
auto curves = curveCollection->curves(); auto curves = curveCollection->visibleCurves();
for (auto c : curves) for (auto c : curves)
{ {
if (isYAxisStepping()) if (isYAxisStepping())
@@ -690,16 +573,93 @@ std::set<RimSummaryCase*> RimSummaryPlotSourceStepping::allSummaryCasesUsedInCur
return sumCases; return sumCases;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<caf::PdmFieldHandle*> RimSummaryPlotSourceStepping::computeVisibleFieldsAndSetFieldVisibility()
{
m_summaryCase.uiCapability()->setUiHidden(true);
m_wellName.uiCapability()->setUiHidden(true);
m_wellGroupName.uiCapability()->setUiHidden(true);
m_region.uiCapability()->setUiHidden(true);
m_quantity.uiCapability()->setUiHidden(true);
std::vector<caf::PdmFieldHandle*> fields;
auto sumCases = visibleSummaryCasesCurveCollection();
if (sumCases.size() == 1)
{
RimProject* proj = RiaApplication::instance()->project();
if (proj->allSummaryCases().size() > 1)
{
m_summaryCase = *(sumCases.begin());
m_summaryCase.uiCapability()->setUiHidden(false);
fields.push_back(&m_summaryCase);
}
}
RiaSummaryCurveAnalyzer analyzer;
analyzer.appendAdresses(visibleAddressesCurveCollection());
RifEclipseSummaryAddress::SummaryVarCategory category = RifEclipseSummaryAddress::SUMMARY_INVALID;
{
if (analyzer.categories().size() == 1)
{
category = *(analyzer.categories().begin());
}
}
if (category != RifEclipseSummaryAddress::SUMMARY_INVALID)
{
if (analyzer.wellNames().size() == 1)
{
QString txt = QString::fromStdString(*(analyzer.wellNames().begin()));
m_wellName = txt;
m_wellName.uiCapability()->setUiHidden(false);
fields.push_back(&m_wellName);
}
if (analyzer.wellGroupNames().size() == 1)
{
QString txt = QString::fromStdString(*(analyzer.wellGroupNames().begin()));
m_wellGroupName = txt;
m_wellGroupName.uiCapability()->setUiHidden(false);
fields.push_back(&m_wellGroupName);
}
if (analyzer.regionNumbers().size() == 1)
{
m_region = *(analyzer.regionNumbers().begin());
m_region.uiCapability()->setUiHidden(false);
fields.push_back(&m_region);
}
if (analyzer.quantities().size() == 1)
{
QString txt = QString::fromStdString(*(analyzer.quantities().begin()));
m_quantity = txt;
m_quantity.uiCapability()->setUiHidden(false);
fields.push_back(&m_quantity);
}
}
return fields;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RimSummaryPlotSourceStepping::isXAxisStepping() const bool RimSummaryPlotSourceStepping::isXAxisStepping() const
{ {
if (m_sourceSteppingType == UNION_X_Y_AXIS) if (m_sourceSteppingType == UNION_X_Y_AXIS) return true;
return true;
if (m_sourceSteppingType == X_AXIS) if (m_sourceSteppingType == X_AXIS) return true;
return true;
return false; return false;
} }
@@ -709,11 +669,9 @@ bool RimSummaryPlotSourceStepping::isXAxisStepping() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RimSummaryPlotSourceStepping::isYAxisStepping() const bool RimSummaryPlotSourceStepping::isYAxisStepping() const
{ {
if (m_sourceSteppingType == UNION_X_Y_AXIS) if (m_sourceSteppingType == UNION_X_Y_AXIS) return true;
return true;
if (m_sourceSteppingType == Y_AXIS) if (m_sourceSteppingType == Y_AXIS) return true;
return true;
return false; return false;
} }
@@ -723,8 +681,7 @@ bool RimSummaryPlotSourceStepping::isYAxisStepping() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RiaSummaryCurveAnalyzer* RimSummaryPlotSourceStepping::analyzerForReader(RifSummaryReaderInterface* reader) RiaSummaryCurveAnalyzer* RimSummaryPlotSourceStepping::analyzerForReader(RifSummaryReaderInterface* reader)
{ {
if (!reader) if (!reader) return nullptr;
return nullptr;
if (m_curveAnalyzerForReader.first != reader) if (m_curveAnalyzerForReader.first != reader)
{ {

View File

@@ -79,11 +79,11 @@ private:
private: private:
RifSummaryReaderInterface* summaryReader() const; RifSummaryReaderInterface* summaryReader() const;
RimSummaryCase* singleSummaryCase() const; RimSummaryCase* singleSummaryCase() const;
void updateUiFromCurves();
caf::PdmValueField* fieldToModify(); caf::PdmValueField* fieldToModify();
std::set<RifEclipseSummaryAddress> allAddressesUsedInCurveCollection() const; std::set<RifEclipseSummaryAddress> visibleAddressesCurveCollection() const;
std::set<RimSummaryCase*> allSummaryCasesUsedInCurveCollection() const; std::set<RimSummaryCase*> visibleSummaryCasesCurveCollection() const;
std::vector<caf::PdmFieldHandle*> computeVisibleFieldsAndSetFieldVisibility();
bool isXAxisStepping() const; bool isXAxisStepping() const;
bool isYAxisStepping() const; bool isYAxisStepping() const;