X-Git-Url: https://www.flypig.org.uk/git/?p=harbour-pedalo.git;a=blobdiff_plain;f=src%2Fstatsweekdayave.cpp;fp=src%2Fstatsweekdayave.cpp;h=63e595e185da02327943a2dbf45b3ba8589801e6;hp=0000000000000000000000000000000000000000;hb=dc14479d561196e19417c4ecf78e847ec4b43b7c;hpb=76b5f460f9a5052571d730918b2ee778753f4c59 diff --git a/src/statsweekdayave.cpp b/src/statsweekdayave.cpp new file mode 100644 index 0000000..63e595e --- /dev/null +++ b/src/statsweekdayave.cpp @@ -0,0 +1,52 @@ +#include + +#include "statsweekdayave.h" + +StatsWeekdayAve::StatsWeekdayAve(JourneyModel * journeys) : + journeys(journeys) +{ + title = "Average journey time (mins)"; + units = ""; + labels = QStringList{"M", "T", "W", "Th", "F", "S", "Su"}; +} + +void StatsWeekdayAve::update() { + double duration[7]; + unsigned int count[7]; + int pos; + + qDebug() << "Calculating values"; + values.clear(); + + for (pos = 0; pos < 7; pos++) { + duration[pos] = 0.0; + count[pos] = 0u; + } + + foreach (Journey const &journey, journeys->getData()) { + QDate date = journey.getStartDate(); + int dayofweek = date.dayOfWeek() - 1; + if (dayofweek >= 0) { + duration[dayofweek] += journey.getDuration(); + count[dayofweek]++; + } + } + + maxval = 0.0; + for (pos = 0; pos < 7; pos++) { + float result = 0.0f; + if (count[pos] > 0) { + result = ((duration[pos] / 60.0) / (double)count[pos]); + } + if (result > maxval) { + maxval = result; + } + values << result; + } + + step = qRound(maxval / 5.0); + + qDebug() << "Calculated values"; +} + +