mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Use AppEnum for DateTimePeriod
This commit is contained in:
committed by
Gaute Lindkvist
parent
54206a42f6
commit
d895f342e2
@@ -41,14 +41,6 @@ const DateTimeSpan RiaQDateTimeTools::TIMESPAN_HALFYEAR = DateTimeSpan( 0, 6, 0
|
||||
const DateTimeSpan RiaQDateTimeTools::TIMESPAN_YEAR = DateTimeSpan( 1, 0, 0 );
|
||||
const DateTimeSpan RiaQDateTimeTools::TIMESPAN_DECADE = DateTimeSpan( 10, 0, 0 );
|
||||
|
||||
const QString RiaQDateTimeTools::TIMESPAN_DAY_NAME = "Day";
|
||||
const QString RiaQDateTimeTools::TIMESPAN_WEEK_NAME = "Week";
|
||||
const QString RiaQDateTimeTools::TIMESPAN_MONTH_NAME = "Month";
|
||||
const QString RiaQDateTimeTools::TIMESPAN_QUARTER_NAME = "Quarter";
|
||||
const QString RiaQDateTimeTools::TIMESPAN_HALFYEAR_NAME = "Half Year";
|
||||
const QString RiaQDateTimeTools::TIMESPAN_YEAR_NAME = "Year";
|
||||
const QString RiaQDateTimeTools::TIMESPAN_DECADE_NAME = "Decade";
|
||||
|
||||
namespace caf
|
||||
{
|
||||
template <>
|
||||
@@ -70,6 +62,21 @@ void caf::AppEnum<RiaQDateTimeTools::TimeFormatComponents>::setUp()
|
||||
addItem( RiaQDateTimeTools::TIME_FORMAT_HOUR_MINUTE_SECOND, "HOUR_MINUTE_SECONDS", "Hour, Minutes and Seconds" );
|
||||
setDefault( RiaQDateTimeTools::TIME_FORMAT_NONE );
|
||||
}
|
||||
|
||||
template <>
|
||||
void caf::AppEnum<RiaQDateTimeTools::DateTimePeriod>::setUp()
|
||||
{
|
||||
addItem( RiaQDateTimeTools::DateTimePeriod::NONE, "NONE", "None" );
|
||||
addItem( RiaQDateTimeTools::DateTimePeriod::DAY, "DAY", "Day" );
|
||||
addItem( RiaQDateTimeTools::DateTimePeriod::WEEK, "WEEK", "Week" );
|
||||
addItem( RiaQDateTimeTools::DateTimePeriod::MONTH, "MONTH", "Month" );
|
||||
addItem( RiaQDateTimeTools::DateTimePeriod::QUARTER, "QUARTER", "Quarter," );
|
||||
addItem( RiaQDateTimeTools::DateTimePeriod::HALFYEAR, "HALFYEAR", "Half Year" );
|
||||
addItem( RiaQDateTimeTools::DateTimePeriod::YEAR, "YEAR,", "Year," );
|
||||
addItem( RiaQDateTimeTools::DateTimePeriod::DECADE, "DECADE", "Decade" );
|
||||
setDefault( RiaQDateTimeTools::DateTimePeriod::NONE );
|
||||
}
|
||||
|
||||
} // namespace caf
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -188,7 +195,7 @@ QDateTime RiaQDateTimeTools::subtractSpan( const QDateTime& dt, DateTimeSpan spa
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QDateTime RiaQDateTimeTools::addPeriod( const QDateTime& dt, DateTimePeriod period )
|
||||
QDateTime RiaQDateTimeTools::addPeriod( const QDateTime& dt, RiaQDateTimeTools::DateTimePeriod period )
|
||||
{
|
||||
return addSpan( dt, timeSpan( period ) );
|
||||
}
|
||||
@@ -196,7 +203,7 @@ QDateTime RiaQDateTimeTools::addPeriod( const QDateTime& dt, DateTimePeriod peri
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QDateTime RiaQDateTimeTools::subtractPeriod( const QDateTime& dt, DateTimePeriod period )
|
||||
QDateTime RiaQDateTimeTools::subtractPeriod( const QDateTime& dt, RiaQDateTimeTools::DateTimePeriod period )
|
||||
{
|
||||
return subtractSpan( dt, timeSpan( period ) );
|
||||
}
|
||||
@@ -266,23 +273,23 @@ bool RiaQDateTimeTools::lessThan( const QDateTime& dt1, const QDateTime& dt2 )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const DateTimeSpan RiaQDateTimeTools::timeSpan( DateTimePeriod period )
|
||||
const DateTimeSpan RiaQDateTimeTools::timeSpan( RiaQDateTimeTools::DateTimePeriod period )
|
||||
{
|
||||
switch ( period )
|
||||
{
|
||||
case DateTimePeriod::DAY:
|
||||
case RiaQDateTimeTools::DateTimePeriod::DAY:
|
||||
return TIMESPAN_DAY;
|
||||
case DateTimePeriod::WEEK:
|
||||
case RiaQDateTimeTools::DateTimePeriod::WEEK:
|
||||
return TIMESPAN_WEEK;
|
||||
case DateTimePeriod::MONTH:
|
||||
case RiaQDateTimeTools::DateTimePeriod::MONTH:
|
||||
return TIMESPAN_MONTH;
|
||||
case DateTimePeriod::QUARTER:
|
||||
case RiaQDateTimeTools::DateTimePeriod::QUARTER:
|
||||
return TIMESPAN_QUARTER;
|
||||
case DateTimePeriod::HALFYEAR:
|
||||
case RiaQDateTimeTools::DateTimePeriod::HALFYEAR:
|
||||
return TIMESPAN_HALFYEAR;
|
||||
case DateTimePeriod::YEAR:
|
||||
case RiaQDateTimeTools::DateTimePeriod::YEAR:
|
||||
return TIMESPAN_YEAR;
|
||||
case DateTimePeriod::DECADE:
|
||||
case RiaQDateTimeTools::DateTimePeriod::DECADE:
|
||||
return TIMESPAN_DECADE;
|
||||
}
|
||||
CVF_ASSERT( false );
|
||||
@@ -292,7 +299,7 @@ const DateTimeSpan RiaQDateTimeTools::timeSpan( DateTimePeriod period )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QDateTime RiaQDateTimeTools::truncateTime( const QDateTime& dt, DateTimePeriod period )
|
||||
QDateTime RiaQDateTimeTools::truncateTime( const QDateTime& dt, RiaQDateTimeTools::DateTimePeriod period )
|
||||
{
|
||||
int y = dt.date().year();
|
||||
int m = dt.date().month();
|
||||
@@ -301,19 +308,19 @@ QDateTime RiaQDateTimeTools::truncateTime( const QDateTime& dt, DateTimePeriod p
|
||||
|
||||
switch ( period )
|
||||
{
|
||||
case DateTimePeriod::DAY:
|
||||
case RiaQDateTimeTools::DateTimePeriod::DAY:
|
||||
return createUtcDateTime( QDate( y, m, d ) );
|
||||
case DateTimePeriod::WEEK:
|
||||
case RiaQDateTimeTools::DateTimePeriod::WEEK:
|
||||
return createUtcDateTime( QDate( y, m, d ).addDays( -dow + 1 ) );
|
||||
case DateTimePeriod::MONTH:
|
||||
case RiaQDateTimeTools::DateTimePeriod::MONTH:
|
||||
return createUtcDateTime( QDate( y, m, 1 ) );
|
||||
case DateTimePeriod::QUARTER:
|
||||
case RiaQDateTimeTools::DateTimePeriod::QUARTER:
|
||||
return createUtcDateTime( QDate( y, ( ( m - 1 ) / 3 ) * 3 + 1, 1 ) );
|
||||
case DateTimePeriod::HALFYEAR:
|
||||
case RiaQDateTimeTools::DateTimePeriod::HALFYEAR:
|
||||
return createUtcDateTime( QDate( y, ( ( m - 1 ) / 6 ) * 6 + 1, 1 ) );
|
||||
case DateTimePeriod::YEAR:
|
||||
case RiaQDateTimeTools::DateTimePeriod::YEAR:
|
||||
return createUtcDateTime( QDate( y, 1, 1 ) );
|
||||
case DateTimePeriod::DECADE:
|
||||
case RiaQDateTimeTools::DateTimePeriod::DECADE:
|
||||
return createUtcDateTime( QDate( ( y / 10 ) * 10, 1, 1 ) );
|
||||
}
|
||||
CVF_ASSERT( false );
|
||||
@@ -323,44 +330,24 @@ QDateTime RiaQDateTimeTools::truncateTime( const QDateTime& dt, DateTimePeriod p
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<DateTimePeriod> RiaQDateTimeTools::dateTimePeriods()
|
||||
std::vector<RiaQDateTimeTools::DateTimePeriod> RiaQDateTimeTools::dateTimePeriods()
|
||||
{
|
||||
return std::vector<DateTimePeriod>( {
|
||||
DateTimePeriod::NONE,
|
||||
DateTimePeriod::DAY,
|
||||
DateTimePeriod::WEEK,
|
||||
DateTimePeriod::MONTH,
|
||||
DateTimePeriod::QUARTER,
|
||||
DateTimePeriod::HALFYEAR,
|
||||
DateTimePeriod::YEAR,
|
||||
DateTimePeriod::DECADE,
|
||||
} );
|
||||
std::vector<DateTimePeriod> allPeriods;
|
||||
|
||||
for ( size_t i = 0; i < DateTimePeriodEnum::size(); i++ )
|
||||
{
|
||||
allPeriods.push_back( DateTimePeriodEnum::fromIndex( i ) );
|
||||
}
|
||||
|
||||
return allPeriods;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RiaQDateTimeTools::dateTimePeriodName( DateTimePeriod period )
|
||||
QString RiaQDateTimeTools::dateTimePeriodName( RiaQDateTimeTools::DateTimePeriod period )
|
||||
{
|
||||
switch ( period )
|
||||
{
|
||||
case DateTimePeriod::DAY:
|
||||
return TIMESPAN_DAY_NAME;
|
||||
case DateTimePeriod::WEEK:
|
||||
return TIMESPAN_WEEK_NAME;
|
||||
case DateTimePeriod::MONTH:
|
||||
return TIMESPAN_MONTH_NAME;
|
||||
case DateTimePeriod::QUARTER:
|
||||
return TIMESPAN_QUARTER_NAME;
|
||||
case DateTimePeriod::HALFYEAR:
|
||||
return TIMESPAN_HALFYEAR_NAME;
|
||||
case DateTimePeriod::YEAR:
|
||||
return TIMESPAN_YEAR_NAME;
|
||||
case DateTimePeriod::DECADE:
|
||||
return TIMESPAN_DECADE_NAME;
|
||||
default:
|
||||
return "None";
|
||||
}
|
||||
return DateTimePeriodEnum::uiText( period );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "cafAppEnum.h"
|
||||
|
||||
#include <qglobal.h>
|
||||
#include <qnamespace.h>
|
||||
|
||||
@@ -40,21 +42,6 @@ namespace caf
|
||||
class PdmOptionItemInfo;
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
//
|
||||
//==================================================================================================
|
||||
enum class DateTimePeriod
|
||||
{
|
||||
NONE = -1,
|
||||
DAY,
|
||||
WEEK,
|
||||
MONTH,
|
||||
QUARTER,
|
||||
HALFYEAR,
|
||||
YEAR,
|
||||
DECADE
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
//
|
||||
//==================================================================================================
|
||||
@@ -90,13 +77,18 @@ public:
|
||||
TIME_FORMAT_SIZE
|
||||
};
|
||||
|
||||
static const QString TIMESPAN_DAY_NAME;
|
||||
static const QString TIMESPAN_WEEK_NAME;
|
||||
static const QString TIMESPAN_MONTH_NAME;
|
||||
static const QString TIMESPAN_QUARTER_NAME;
|
||||
static const QString TIMESPAN_HALFYEAR_NAME;
|
||||
static const QString TIMESPAN_YEAR_NAME;
|
||||
static const QString TIMESPAN_DECADE_NAME;
|
||||
enum class DateTimePeriod
|
||||
{
|
||||
NONE = -1,
|
||||
DAY,
|
||||
WEEK,
|
||||
MONTH,
|
||||
QUARTER,
|
||||
HALFYEAR,
|
||||
YEAR,
|
||||
DECADE
|
||||
};
|
||||
using DateTimePeriodEnum = caf::AppEnum<DateTimePeriod>;
|
||||
|
||||
static Qt::TimeSpec currentTimeSpec();
|
||||
|
||||
@@ -109,8 +101,8 @@ public:
|
||||
static QDateTime addYears( const QDateTime& dt, double years );
|
||||
static QDateTime addSpan( const QDateTime& dt, DateTimeSpan span );
|
||||
static QDateTime subtractSpan( const QDateTime& dt, DateTimeSpan span );
|
||||
static QDateTime addPeriod( const QDateTime& dt, DateTimePeriod period );
|
||||
static QDateTime subtractPeriod( const QDateTime& dt, DateTimePeriod period );
|
||||
static QDateTime addPeriod( const QDateTime& dt, RiaQDateTimeTools::DateTimePeriod period );
|
||||
static QDateTime subtractPeriod( const QDateTime& dt, RiaQDateTimeTools::DateTimePeriod period );
|
||||
|
||||
static QDateTime epoch();
|
||||
|
||||
@@ -121,11 +113,11 @@ public:
|
||||
|
||||
static bool lessThan( const QDateTime& dt1, const QDateTime& dt2 );
|
||||
|
||||
static const DateTimeSpan timeSpan( DateTimePeriod period );
|
||||
static QDateTime truncateTime( const QDateTime& dt, DateTimePeriod period );
|
||||
static const DateTimeSpan timeSpan( RiaQDateTimeTools::DateTimePeriod period );
|
||||
static QDateTime truncateTime( const QDateTime& dt, RiaQDateTimeTools::DateTimePeriod period );
|
||||
|
||||
static std::vector<DateTimePeriod> dateTimePeriods();
|
||||
static QString dateTimePeriodName( DateTimePeriod period );
|
||||
static std::vector<RiaQDateTimeTools::DateTimePeriod> dateTimePeriods();
|
||||
static QString dateTimePeriodName( RiaQDateTimeTools::DateTimePeriod period );
|
||||
|
||||
// This function uses C locale to make sure the text representation of a date is stable, independent of the locale
|
||||
// settings on local machine. Required for stable regression testing.
|
||||
|
||||
@@ -67,7 +67,7 @@ void RiaTimeHistoryCurveResampler::setCurveData( const std::vector<double>& valu
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiaTimeHistoryCurveResampler::resampleAndComputePeriodEndValues( DateTimePeriod period )
|
||||
void RiaTimeHistoryCurveResampler::resampleAndComputePeriodEndValues( RiaQDateTimeTools::DateTimePeriod period )
|
||||
{
|
||||
computePeriodEndValues( period );
|
||||
}
|
||||
@@ -75,7 +75,7 @@ void RiaTimeHistoryCurveResampler::resampleAndComputePeriodEndValues( DateTimePe
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiaTimeHistoryCurveResampler::resampleAndComputeWeightedMeanValues( DateTimePeriod period )
|
||||
void RiaTimeHistoryCurveResampler::resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod period )
|
||||
{
|
||||
computeWeightedMeanValues( period );
|
||||
}
|
||||
@@ -99,8 +99,9 @@ const std::vector<double>& RiaTimeHistoryCurveResampler::resampledValues() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<time_t>
|
||||
RiaTimeHistoryCurveResampler::timeStepsFromTimeRange( DateTimePeriod period, time_t minTime, time_t maxTime )
|
||||
std::vector<time_t> RiaTimeHistoryCurveResampler::timeStepsFromTimeRange( RiaQDateTimeTools::DateTimePeriod period,
|
||||
time_t minTime,
|
||||
time_t maxTime )
|
||||
{
|
||||
if ( minTime > maxTime ) return std::vector<time_t>();
|
||||
|
||||
@@ -123,7 +124,7 @@ std::vector<time_t>
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiaTimeHistoryCurveResampler::computeWeightedMeanValues( DateTimePeriod period )
|
||||
void RiaTimeHistoryCurveResampler::computeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod period )
|
||||
{
|
||||
size_t origDataSize = m_originalValues.second.size();
|
||||
size_t oi = 0;
|
||||
@@ -196,7 +197,7 @@ void RiaTimeHistoryCurveResampler::computeWeightedMeanValues( DateTimePeriod per
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiaTimeHistoryCurveResampler::computePeriodEndValues( DateTimePeriod period )
|
||||
void RiaTimeHistoryCurveResampler::computePeriodEndValues( RiaQDateTimeTools::DateTimePeriod period )
|
||||
{
|
||||
size_t origDataSize = m_originalValues.second.size();
|
||||
size_t oi = 0;
|
||||
@@ -245,9 +246,9 @@ void RiaTimeHistoryCurveResampler::clearData()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiaTimeHistoryCurveResampler::computeResampledTimeSteps( DateTimePeriod period )
|
||||
void RiaTimeHistoryCurveResampler::computeResampledTimeSteps( RiaQDateTimeTools::DateTimePeriod period )
|
||||
{
|
||||
CVF_ASSERT( period != DateTimePeriod::NONE && m_originalValues.second.size() > 0 );
|
||||
CVF_ASSERT( period != RiaQDateTimeTools::DateTimePeriod::NONE && m_originalValues.second.size() > 0 );
|
||||
|
||||
auto firstOriginalTimeStep = QDT::fromTime_t( m_originalValues.second.front() );
|
||||
auto lastOriginalTimeStep = QDT::fromTime_t( m_originalValues.second.back() );
|
||||
@@ -268,7 +269,8 @@ void RiaTimeHistoryCurveResampler::computeResampledTimeSteps( DateTimePeriod per
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QDateTime RiaTimeHistoryCurveResampler::firstResampledTimeStep( const QDateTime& firstTimeStep, DateTimePeriod period )
|
||||
QDateTime RiaTimeHistoryCurveResampler::firstResampledTimeStep( const QDateTime& firstTimeStep,
|
||||
RiaQDateTimeTools::DateTimePeriod period )
|
||||
{
|
||||
QDateTime truncatedTime = QDT::truncateTime( firstTimeStep, period );
|
||||
|
||||
|
||||
@@ -35,21 +35,22 @@ public:
|
||||
|
||||
void setCurveData( const std::vector<double>& values, const std::vector<time_t>& timeSteps );
|
||||
|
||||
void resampleAndComputePeriodEndValues( DateTimePeriod period );
|
||||
void resampleAndComputeWeightedMeanValues( DateTimePeriod period );
|
||||
void resampleAndComputePeriodEndValues( RiaQDateTimeTools::DateTimePeriod period );
|
||||
void resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod period );
|
||||
|
||||
const std::vector<time_t>& resampledTimeSteps() const;
|
||||
const std::vector<double>& resampledValues() const;
|
||||
|
||||
static std::vector<time_t> timeStepsFromTimeRange( DateTimePeriod period, time_t minTime, time_t maxTime );
|
||||
static std::vector<time_t>
|
||||
timeStepsFromTimeRange( RiaQDateTimeTools::DateTimePeriod period, time_t minTime, time_t maxTime );
|
||||
|
||||
private:
|
||||
void computeWeightedMeanValues( DateTimePeriod period );
|
||||
void computePeriodEndValues( DateTimePeriod period );
|
||||
void computeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod period );
|
||||
void computePeriodEndValues( RiaQDateTimeTools::DateTimePeriod period );
|
||||
|
||||
void clearData();
|
||||
void computeResampledTimeSteps( DateTimePeriod period );
|
||||
static QDateTime firstResampledTimeStep( const QDateTime& firstTimestep, DateTimePeriod period );
|
||||
void computeResampledTimeSteps( RiaQDateTimeTools::DateTimePeriod period );
|
||||
static QDateTime firstResampledTimeStep( const QDateTime& firstTimestep, RiaQDateTimeTools::DateTimePeriod period );
|
||||
inline double interpolatedValue( time_t t, time_t t1, double v1, time_t t2, double v2 );
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user