diff options
author | Jedidiah Barber <contact@jedbarber.id.au> | 2021-07-14 11:49:10 +1200 |
---|---|---|
committer | Jedidiah Barber <contact@jedbarber.id.au> | 2021-07-14 11:49:10 +1200 |
commit | d24f813f3f2a05c112e803e4256b53535895fc98 (patch) | |
tree | 601e6ae9a1cd44bcfdcf91739a5ca36aedd827c9 /src/charts/TimeChart.h |
Diffstat (limited to 'src/charts/TimeChart.h')
-rw-r--r-- | src/charts/TimeChart.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/charts/TimeChart.h b/src/charts/TimeChart.h new file mode 100644 index 0000000..1d9f92d --- /dev/null +++ b/src/charts/TimeChart.h @@ -0,0 +1,54 @@ +#ifndef TIME_CHART_H +#define TIME_CHART_H + +#include <QtCore> + +#include "Chart.h" + +class TimeChart: public Chart +{ +enum TimeUnit +{ + Day = 0, + Week, + Month, + Quarter, + HalfYear, + TimeUnitsNum +}; + +public: + TimeChart(); + void setDates(const QList<QDateTime>& dates, int period, + int dataDirection = 1); + +private: + static TimeUnit findTimeUnit(int period); + static QDate getIntervalStart(const QDate& date, TimeUnit timeUnit); + static QDate getInterval(const QDate& start, TimeUnit timeUnit, + int num); + static QDate getIntervalEnd(const QDate& start, TimeUnit timeUnit); + static QString getDateLabel(const QDate& date, TimeUnit timeUnit); + static QString getIntervalFormat(TimeUnit timeUnit); + static QString getIntervalLabel(const QDate& startDate, + const QDate& endDate, TimeUnit timeUnit); + static QDate getQuarterStart(const QDate& date); + static QDate getHalfYearStart(const QDate& date); + static int getDataPointsNum(int period, TimeUnit timeUnit); + static int getTicksInterval(int pointsNum); + +private: + DataPoint createDataPoint(const QDate& thisIntervalStart, TimeUnit timeUnit, + int intervalIndex); + int getCardsNumForDate(const QDate& startDate, const QDate& endDate); + +private: + static const QList<int> TimeUnits; + static const int MaxDataPoints = 28; + static const int MaxXTicks = 12; + +private: + QList<QDateTime> dates; +}; + +#endif |