19 #include <QStringList> 
   22 #include <QVariantList> 
   32   : mStatistics( stats )
 
   51   const auto constValues = values;
 
   52   for ( 
const QVariant &variant : constValues )
 
   62   if ( value.type() == QVariant::DateTime )
 
   64     testDateTime( value.toDateTime(), value.isNull() );
 
   66   else if ( value.type() == QVariant::Date )
 
   68     const QDate date = value.toDate();
 
   69     testDateTime( date.isValid() ? QDateTime( date, QTime( 0, 0, 0 ) )
 
   70                   : QDateTime(), value.isNull() );
 
   72   else if ( value.type() == QVariant::Time )
 
   75     const QTime time = value.toTime();
 
   76     testDateTime( time.isValid() ? QDateTime( QDate::fromJulianDay( 0 ), time )
 
   77                   : QDateTime(), value.isNull() );
 
   94 void QgsDateTimeStatisticalSummary::testDateTime( 
const QDateTime &dateTime, 
bool isNull )
 
   98   if ( !dateTime.isValid() || isNull )
 
  105   if ( mStatistics & 
Min || mStatistics & 
Range )
 
  107     if ( mMin.isValid() && dateTime.isValid() )
 
  109       mMin = std::min( mMin, dateTime );
 
  111     else if ( !mMin.isValid() && dateTime.isValid() )
 
  116   if ( mStatistics & 
Max || mStatistics & 
Range )
 
  118     if ( mMax.isValid() && dateTime.isValid() )
 
  120       mMax = std::max( mMax, dateTime );
 
  122     else if ( !mMax.isValid() && dateTime.isValid() )
 
  136       return mValues.count();
 
  138       return mCountMissing;
 
  140       return mIsTimes ? QVariant( mMin.time() ) : QVariant( mMin );
 
  142       return mIsTimes ? QVariant( mMax.time() ) : QVariant( mMax );
 
  144       return mIsTimes ? QVariant::fromValue( mMax.time() - mMin.time() ) : QVariant::fromValue( mMax - mMin );
 
  156       return QObject::tr( 
"Count" );
 
  158       return QObject::tr( 
"Count (distinct)" );
 
  160       return QObject::tr( 
"Count (missing)" );
 
  162       return QObject::tr( 
"Minimum (earliest)" );
 
  164       return QObject::tr( 
"Maximum (latest)" );
 
  166       return QObject::tr( 
"Range (interval)" );
 
void calculate(const QVariantList &values)
Calculates summary statistics for a list of variants.
QgsDateTimeStatisticalSummary(QgsDateTimeStatisticalSummary::Statistics stats=All)
Constructor for QgsDateTimeStatisticalSummary.
void addValue(const QVariant &value)
Adds a single datetime to the statistics calculation.
QVariant statistic(QgsDateTimeStatisticalSummary::Statistic stat) const
Returns the value of a specified statistic.
void finalize()
Must be called after adding all datetimes with addValue() and before retrieving any calculated dateti...
void reset()
Resets the calculated values.
Statistic
Enumeration of flags that specify statistics to be calculated.
@ Min
Minimum (earliest) datetime value.
@ Max
Maximum (latest) datetime value.
@ CountDistinct
Number of distinct datetime values.
@ Range
Interval between earliest and latest datetime value.
@ CountMissing
Number of missing (null) values.
static QString displayName(QgsDateTimeStatisticalSummary::Statistic statistic)
Returns the friendly display name for a statistic.