diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.cpp index f7651b97e6..0ec3138221 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.cpp @@ -1096,6 +1096,7 @@ void RimSummaryCurve::fieldChangedByUi( const caf::PdmFieldHandle* changedField, m_yValuesSummaryAddress->setAddress( m_yValuesSummaryAddressUiField() ); calculateCurveInterpolationFromAddress(); + updateSourceSteppingAfterAddressChange(); loadAndUpdate = true; } @@ -1104,6 +1105,7 @@ void RimSummaryCurve::fieldChangedByUi( const caf::PdmFieldHandle* changedField, m_xValuesSummaryAddress->setAddress( m_xValuesSummaryAddressUiField() ); calculateCurveInterpolationFromAddress(); + updateSourceSteppingAfterAddressChange(); loadAndUpdate = true; } @@ -1205,6 +1207,8 @@ void RimSummaryCurve::selectYSummaryAddress() m_yValuesSummaryCase = curveSelection[0].summaryCaseY(); m_yValuesSummaryAddress->setAddress( curveSelection[0].summaryAddressY() ); + updateSourceSteppingAfterAddressChange(); + checkForMatchingCrossPlotTimeSteps(); loadAndUpdateDataAndPlot(); } @@ -1241,6 +1245,8 @@ void RimSummaryCurve::selectXSummaryAddress() m_xValuesSummaryCase = curveSelection[0].summaryCaseY(); m_xValuesSummaryAddress->setAddress( curveSelection[0].summaryAddressY() ); + updateSourceSteppingAfterAddressChange(); + checkForMatchingCrossPlotTimeSteps(); loadAndUpdateDataAndPlot(); } @@ -1324,6 +1330,18 @@ void RimSummaryCurve::loadAndUpdateDataAndPlot() dataChanged.send(); } +//-------------------------------------------------------------------------------------------------- +/// When the summary vector of this curve is changed, make sure the toolbar 'Step By' field stays +/// consistent with the selected vector. +//-------------------------------------------------------------------------------------------------- +void RimSummaryCurve::updateSourceSteppingAfterAddressChange() +{ + if ( auto summaryMultiPlot = firstAncestorOrThisOfType() ) + { + summaryMultiPlot->updateStepDimensionFromCurves(); + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.h index 13ef31016a..1f139ab5a9 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.h @@ -146,6 +146,8 @@ private: void calculateCurveInterpolationFromAddress(); void calculateCurveTypeFromAddress(); + void updateSourceSteppingAfterAddressChange(); + static void appendOptionItemsForSummaryAddresses( QList* options, RimSummaryCase* summaryCase ); private: diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp index 2f617bd345..3aaf07a197 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp @@ -826,7 +826,7 @@ void RimSummaryMultiPlot::updateTimeAxisRangesFromFirstTimePlot() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimSummaryMultiPlot::setDefaultRangeAggregationSteppingDimension() +RimSummaryDataSourceStepping::SourceSteppingDimension RimSummaryMultiPlot::calculateStepDimensionFromCurves() { RiaSummaryAddressAnalyzer analyzer; @@ -879,7 +879,15 @@ void RimSummaryMultiPlot::setDefaultRangeAggregationSteppingDimension() stepDimension = RimSummaryDataSourceStepping::SourceSteppingDimension::BLOCK; } - m_sourceStepping->setStepDimension( stepDimension ); + return stepDimension; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryMultiPlot::setDefaultRangeAggregationSteppingDimension() +{ + m_sourceStepping->setStepDimension( calculateStepDimensionFromCurves() ); // Previously, when the stepping dimension was set to 'well' for range aggregation, it was based on all wells. If one of the wells // had extreme values and was not visible, it would set the y-range to match the extreme value, making some curves invisible. We @@ -1833,6 +1841,20 @@ void RimSummaryMultiPlot::updateStepDimensionFromDefault() m_sourceStepping->setStepDimension( m_defaultStepDimension() ); } +//-------------------------------------------------------------------------------------------------- +/// Recompute the source stepping dimension when a summary vector is selected by manipulation of a curve, +/// so the toolbar 'Step By' field stays consistent with what the curves actually display. +//-------------------------------------------------------------------------------------------------- +void RimSummaryMultiPlot::updateStepDimensionFromCurves() +{ + auto stepDimension = calculateStepDimensionFromCurves(); + + m_sourceStepping->setStepDimension( stepDimension ); + m_defaultStepDimension = stepDimension; + + RiuPlotMainWindowTools::refreshToolbars(); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.h index 003a464ef1..c98600fc30 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.h @@ -106,6 +106,7 @@ public: void storeStepDimensionFromToolbar(); void updateStepDimensionFromDefault(); + void updateStepDimensionFromCurves(); void selectWell( QString wellName ); @@ -135,6 +136,8 @@ private: void computeAggregatedAxisRange(); void updateSourceStepper(); + RimSummaryDataSourceStepping::SourceSteppingDimension calculateStepDimensionFromCurves(); + void updatePlotVisibility(); void setAutoValueStates(); static void setAutoValueStatesForPlot( RimSummaryPlot* summaryPlot, bool isMinMaxOverridden, bool isAppearanceOverridden );