#6240 Improve the way dates are handled in Correlation Plots

This commit is contained in:
Gaute Lindkvist 2020-07-29 08:28:41 +02:00
parent bfd4719d10
commit fde92ad931
7 changed files with 56 additions and 9 deletions

View File

@ -1,6 +1,7 @@
#include "RimAbstractCorrelationPlot.h"
#include "RiaPreferences.h"
#include "RiaQDateTimeTools.h"
#include "RiaSummaryCurveDefinition.h"
#include "RifSummaryReaderInterface.h"
@ -184,11 +185,33 @@ QList<caf::PdmOptionItemInfo>
if ( fieldNeedingOptions == &m_timeStep )
{
std::set<time_t> allTimeSteps = allAvailableTimeSteps();
std::map<QDate, std::vector<QTime>> timeStepsDateMap;
for ( time_t timeStep : allTimeSteps )
{
QDateTime dateTime = QDateTime::fromTime_t( timeStep );
QString timestepString = dateTime.toString( Qt::ISODate );
options.push_back( caf::PdmOptionItemInfo( timestepString, dateTime ) );
timeStepsDateMap[dateTime.date()].push_back( dateTime.time() );
}
QString dateFormatString = RiaQDateTimeTools::dateFormatString( RiaPreferences::current()->dateFormat(),
RiaQDateTimeTools::DATE_FORMAT_YEAR_MONTH_DAY );
QString timeFormatString =
RiaQDateTimeTools::timeFormatString( RiaPreferences::current()->timeFormat(),
RiaQDateTimeTools::TimeFormatComponents::TIME_FORMAT_HOUR_MINUTE );
for ( auto dateTimePair : timeStepsDateMap )
{
QDate date = dateTimePair.first;
bool multipleTimes = dateTimePair.second.size() > 1u;
for ( auto time : dateTimePair.second )
{
QString timestepString = date.toString( dateFormatString );
if ( multipleTimes )
{
timestepString += QString( " %1" ).arg( time.toString( timeFormatString ) );
}
options.push_back( caf::PdmOptionItemInfo( timestepString, QDateTime( date, time ) ) );
}
}
}
else if ( fieldNeedingOptions == &m_labelFontSize || fieldNeedingOptions == &m_axisTitleFontSize ||
@ -403,6 +426,20 @@ QDateTime RimAbstractCorrelationPlot::timeStep() const
return m_timeStep();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimAbstractCorrelationPlot::timeStepString() const
{
QString dateFormatString = RiaQDateTimeTools::dateFormatString( RiaPreferences::current()->dateFormat(),
RiaQDateTimeTools::DATE_FORMAT_YEAR_MONTH_DAY );
QString timeFormatString =
RiaQDateTimeTools::timeFormatString( RiaPreferences::current()->timeFormat(),
RiaQDateTimeTools::TimeFormatComponents::TIME_FORMAT_HOUR_MINUTE );
return timeStep().toString( dateFormatString ) + " " + timeStep().toString( timeFormatString );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -50,6 +50,7 @@ public:
RiuQwtPlotWidget* viewer() override;
void detachAllCurves() override;
QDateTime timeStep() const;
QString timeStepString() const;
int labelFontSize() const;
int axisTitleFontSize() const;

View File

@ -20,6 +20,7 @@
#include "RiaColorTools.h"
#include "RiaPreferences.h"
#include "RiaQDateTimeTools.h"
#include "RiaStatisticsTools.h"
#include "RiuPlotMainWindowTools.h"
#include "RiuQwtLinearScaleEngine.h"
@ -629,7 +630,9 @@ void RimCorrelationMatrixPlot::updatePlotTitle()
{
if ( m_useAutoPlotTitle )
{
m_description = QString( "%1 Matrix for Parameters vs Result Vectors" ).arg( m_correlationFactor().uiText() );
m_description = QString( "%1 Matrix for Parameters vs Result Vectors at %2" )
.arg( m_correlationFactor().uiText() )
.arg( timeStepString() );
}
if ( m_plotWidget )

View File

@ -19,6 +19,7 @@
#include "RimCorrelationPlot.h"
#include "RiaPreferences.h"
#include "RiaQDateTimeTools.h"
#include "RiaStatisticsTools.h"
#include "RiuGroupedBarChartBuilder.h"
#include "RiuPlotMainWindowTools.h"
@ -329,7 +330,8 @@ void RimCorrelationPlot::updatePlotTitle()
{
if ( m_useAutoPlotTitle )
{
m_description = QString( "%1 for %2" ).arg( m_correlationFactor().uiText() ).arg( m_selectedVarsUiField );
m_description =
QString( "%1 for %2 at %3" ).arg( m_correlationFactor().uiText() ).arg( m_selectedVarsUiField ).arg( timeStepString() );
}
m_plotWidget->setPlotTitle( m_description );
m_plotWidget->setPlotTitleEnabled( m_showPlotTitle && isMdiWindow() );

View File

@ -18,6 +18,7 @@
#include "RimCorrelationReportPlot.h"
#include "RiaPreferences.h"
#include "RiaQDateTimeTools.h"
#include "RiaSummaryCurveDefinition.h"
#include "RimCorrelationMatrixPlot.h"
@ -219,12 +220,12 @@ QString RimCorrelationReportPlot::createPlotWindowTitle() const
{
if ( entry.ensemble() )
{
ensembles.push_back( entry.ensemble()->uiName() );
ensembles.push_back( entry.ensemble()->name() );
}
}
ensembles.removeDuplicates();
QString ensembleNames = ensembles.join( ", " );
QString timeStep = m_correlationMatrixPlot->timeStep().toString( Qt::ISODate );
QString timeStep = m_correlationMatrixPlot->timeStepString();
return QString( "Correlation Report for %1 at %2" ).arg( ensembleNames ).arg( timeStep );
}

View File

@ -20,6 +20,7 @@
#include "RiaColorTables.h"
#include "RiaPreferences.h"
#include "RiaQDateTimeTools.h"
#include "RiaStatisticsTools.h"
#include "RiuPlotMainWindowTools.h"
#include "RiuSummaryQwtPlot.h"
@ -300,7 +301,10 @@ void RimParameterResultCrossPlot::updatePlotTitle()
{
if ( m_useAutoPlotTitle )
{
m_description = QString( "Cross Plot %1 x %2" ).arg( m_ensembleParameter ).arg( m_selectedVarsUiField );
m_description = QString( "Cross Plot %1 x %2 at %3" )
.arg( m_ensembleParameter )
.arg( m_selectedVarsUiField )
.arg( timeStepString() );
}
m_plotWidget->setPlotTitle( m_description );
m_plotWidget->setPlotTitleEnabled( m_showPlotTitle && isMdiWindow() );

View File

@ -65,7 +65,6 @@
#include "qwt_scale_div.h"
#include "qwt_scale_draw.h"
#include "qwt_scale_engine.h"
#include <QEvent>
#include <QMenu>
#include <QMouseEvent>