diff --git a/ApplicationLibCode/ProjectDataModel/RimObservedDataCollection.cpp b/ApplicationLibCode/ProjectDataModel/RimObservedDataCollection.cpp index 837e4d916a..2839a6523f 100644 --- a/ApplicationLibCode/ProjectDataModel/RimObservedDataCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimObservedDataCollection.cpp @@ -29,6 +29,7 @@ #include "RimObservedEclipseUserData.h" #include "RimObservedFmuRftData.h" #include "RimObservedSummaryData.h" +#include "RimProject.h" #include "RimSummaryObservedDataFile.h" #include "RiuPlotMainWindow.h" @@ -154,6 +155,7 @@ RimObservedSummaryData* errorText->append( observedData->errorMessagesFromReader() ); } + RimProject::current()->assignCaseIdToSummaryCase( observedData ); updateNewObservedDataCreated( observedData ); this->updateConnectedEditors(); @@ -221,6 +223,7 @@ RimObservedSummaryData* return nullptr; } + RimProject::current()->assignCaseIdToSummaryCase( observedData ); updateNewObservedDataCreated( observedData ); this->updateConnectedEditors(); diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp index 41f405c1e2..d15472414d 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp @@ -2884,16 +2884,45 @@ void RimSummaryPlot::assignPlotAxis( RimSummaryCurve* destinationCurve ) ALL_TO_LEFT, ALL_TO_RIGHT, ALTERNATING, - USE_MATCHING_UNIT + USE_MATCHING_UNIT, + USE_MATCHING_VECTOR }; - RiaDefines::PlotAxis plotAxis = RiaDefines::PlotAxis::PLOT_AXIS_LEFT; - auto strategy = AxisAssignmentStrategy::USE_MATCHING_UNIT; - if ( strategy == AxisAssignmentStrategy::USE_MATCHING_UNIT ) - { - auto destinationUnit = destinationCurve->unitNameY(); + auto destinationUnit = destinationCurve->unitNameY(); + if ( destinationUnit.empty() ) strategy = AxisAssignmentStrategy::USE_MATCHING_VECTOR; + + auto anyCurveWithUnitText = [this, destinationCurve] { + for ( auto c : summaryCurves() ) + { + if ( c == destinationCurve ) continue; + + if ( !c->unitNameY().empty() ) return true; + } + + return false; + }; + + if ( !anyCurveWithUnitText() ) strategy = AxisAssignmentStrategy::USE_MATCHING_VECTOR; + + if ( strategy == AxisAssignmentStrategy::USE_MATCHING_VECTOR ) + { + // Special handling if curve unit is matching. Try to match on summary vector name to avoid creation of new axis + + for ( auto c : summaryCurves() ) + { + if ( c == destinationCurve ) continue; + + if ( c->summaryAddressY().vectorName() == destinationCurve->summaryAddressY().vectorName() ) + { + destinationCurve->setLeftOrRightAxisY( c->axisY() ); + return; + } + } + } + else if ( strategy == AxisAssignmentStrategy::USE_MATCHING_UNIT ) + { bool isLeftUsed = false; bool isRightUsed = false; @@ -2936,6 +2965,8 @@ void RimSummaryPlot::assignPlotAxis( RimSummaryCurve* destinationCurve ) strategy = AxisAssignmentStrategy::ALTERNATING; } + RiaDefines::PlotAxis plotAxisType = RiaDefines::PlotAxis::PLOT_AXIS_LEFT; + if ( strategy == AxisAssignmentStrategy::ALTERNATING ) { size_t axisCountLeft = 0; @@ -2948,15 +2979,15 @@ void RimSummaryPlot::assignPlotAxis( RimSummaryCurve* destinationCurve ) axisCountRight++; } - if ( axisCountLeft > axisCountRight ) plotAxis = RiaDefines::PlotAxis::PLOT_AXIS_RIGHT; + if ( axisCountLeft > axisCountRight ) plotAxisType = RiaDefines::PlotAxis::PLOT_AXIS_RIGHT; } else if ( strategy == AxisAssignmentStrategy::ALL_TO_LEFT ) { - plotAxis = RiaDefines::PlotAxis::PLOT_AXIS_LEFT; + plotAxisType = RiaDefines::PlotAxis::PLOT_AXIS_LEFT; } else if ( strategy == AxisAssignmentStrategy::ALL_TO_RIGHT ) { - plotAxis = RiaDefines::PlotAxis::PLOT_AXIS_RIGHT; + plotAxisType = RiaDefines::PlotAxis::PLOT_AXIS_RIGHT; } RiuPlotAxis newPlotAxis = RiuPlotAxis::defaultLeft(); @@ -2966,7 +2997,7 @@ void RimSummaryPlot::assignPlotAxis( RimSummaryCurve* destinationCurve ) if ( !destinationCurve->summaryAddressY().uiText().empty() ) axisObjectName = QString::fromStdString( destinationCurve->summaryAddressY().uiText() ); - newPlotAxis = plotWidget()->createNextPlotAxis( plotAxis ); + newPlotAxis = plotWidget()->createNextPlotAxis( plotAxisType ); addNewAxisProperties( newPlotAxis, axisObjectName ); }