#12457 Move management of time axis annotations

Use RimTimeAxisAnnotationUpdater for management of annotation objects.
This commit is contained in:
Magne Sjaastad committed 2025-05-08 07:27:42 +02:00
1 parent 975bd32bac
commit ad83985e62
14 files changed
+284 -166

No files matched your search

@@ -53,6 +53,7 @@
#include "RimSummaryEnsemble.h"
#include "RimSummaryMultiPlot.h"
#include "RimSummaryPlot.h"
#include "RimTimeAxisAnnotation.h"
#include "RimTimeStepFilter.h"
#include "RiuAbstractLegendFrame.h"
@@ -522,6 +523,57 @@ std::pair<time_t, time_t> RimEnsembleCurveSet::selectedTimeStepRange() const
return { selectedMin, selectedMax };
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimTimeAxisAnnotation*> RimEnsembleCurveSet::createTimeAnnotations() const
{
if ( !m_showCurves() ) return {};
bool showTimeRange = false;
bool showSelectedTimeSteps = false;
if ( ( m_colorMode() == ColorMode::BY_OBJECTIVE_FUNCTION &&
m_objectiveFunction()->functionType() == RimObjectiveFunction::FunctionType::F1 ) ||
( m_colorMode() == ColorMode::BY_CUSTOM_OBJECTIVE_FUNCTION && m_customObjectiveFunction() &&
m_customObjectiveFunction()->weightContainsFunctionType( RimObjectiveFunction::FunctionType::F1 ) ) )
{
showTimeRange = true;
}
if ( ( m_colorMode() == ColorMode::BY_OBJECTIVE_FUNCTION &&
m_objectiveFunction()->functionType() == RimObjectiveFunction::FunctionType::F2 ) ||
( m_colorMode() == ColorMode::BY_CUSTOM_OBJECTIVE_FUNCTION && m_customObjectiveFunction() &&
m_customObjectiveFunction()->weightContainsFunctionType( RimObjectiveFunction::FunctionType::F2 ) ) )
{
showSelectedTimeSteps = true;
}
for ( auto filter : m_curveFilters->filters() )
{
if ( filter->isActive() && filter->filterMode() == RimEnsembleCurveFilter::FilterMode::SUMMARY_VALUE ) showTimeRange = true;
}
std::vector<RimTimeAxisAnnotation*> timeAnnotations;
if ( showTimeRange )
{
auto [minTimeStep, maxTimeStep] = selectedTimeStepRange();
timeAnnotations.push_back( RimTimeAxisAnnotation::createTimeRangeAnnotation( minTimeStep, maxTimeStep, m_colorForRealizations ) );
}
if ( showSelectedTimeSteps )
{
for ( QDateTime timeStep : m_selectedTimeSteps() )
{
timeAnnotations.push_back(
RimTimeAxisAnnotation::createTimeAnnotation( RiaTimeTTools::fromQDateTime( timeStep ), m_colorForRealizations ) );
}
}
return timeAnnotations;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -2067,48 +2119,10 @@ void RimEnsembleCurveSet::updateCurveColors()
//--------------------------------------------------------------------------------------------------
void RimEnsembleCurveSet::updateTimeAnnotations()
{
auto plot = firstAncestorOrThisOfTypeAsserted<RimSummaryPlot>();
plot->removeAllTimeAnnotations();
bool showTimeRange = false;
bool showSelectedTimeSteps = false;
if ( ( m_colorMode() == ColorMode::BY_OBJECTIVE_FUNCTION &&
m_objectiveFunction()->functionType() == RimObjectiveFunction::FunctionType::F1 ) ||
( m_colorMode() == ColorMode::BY_CUSTOM_OBJECTIVE_FUNCTION && m_customObjectiveFunction() &&
m_customObjectiveFunction()->weightContainsFunctionType( RimObjectiveFunction::FunctionType::F1 ) ) )
if ( auto plot = firstAncestorOrThisOfType<RimSummaryPlot>() )
{
showTimeRange = true;
plot->updateAndRedrawTimeAnnotations();
}
if ( ( m_colorMode() == ColorMode::BY_OBJECTIVE_FUNCTION &&
m_objectiveFunction()->functionType() == RimObjectiveFunction::FunctionType::F2 ) ||
( m_colorMode() == ColorMode::BY_CUSTOM_OBJECTIVE_FUNCTION && m_customObjectiveFunction() &&
m_customObjectiveFunction()->weightContainsFunctionType( RimObjectiveFunction::FunctionType::F2 ) ) )
{
showSelectedTimeSteps = true;
}
for ( auto filter : m_curveFilters->filters() )
{
if ( filter->isActive() && filter->filterMode() == RimEnsembleCurveFilter::FilterMode::SUMMARY_VALUE ) showTimeRange = true;
}
if ( showTimeRange )
{
auto [minTimeStep, maxTimeStep] = selectedTimeStepRange();
plot->addTimeRangeAnnotation( minTimeStep, maxTimeStep );
}
if ( showSelectedTimeSteps )
{
for ( QDateTime timeStep : m_selectedTimeSteps() )
{
plot->addTimeAnnotation( RiaTimeTTools::fromQDateTime( timeStep ) );
}
}
plot->updateAxes();
}
//--------------------------------------------------------------------------------------------------