1 #include "statshourjourneys.h"
4 #define HIGHESTHOUR (21)
6 StatsHourJourneys::StatsHourJourneys(JourneyModel
* journeys
) :
9 title
= "Journey proportion per hour (%)";
13 for (int hour
= LOWESTHOUR
; hour
<= HIGHESTHOUR
; hour
++) {
14 labels
<< QString::number(hour
);
18 void StatsHourJourneys::update() {
19 unsigned int minsperhour
[24];
25 for (pos
= 0; pos
< 24; pos
++) {
26 minsperhour
[pos
] = 0u;
30 foreach (Journey
const &journey
, journeys
->getData()) {
31 QTime time
= journey
.getStartTime();
32 int hour
= time
.hour();
33 int startmin
= time
.minute();
34 int remaining
= (journey
.getDuration() / 60);
35 totalmins
+= remaining
;
37 while (remaining
> 0) {
38 // toadd is always greater than 0, so the loop is guaranteed to exit
39 unsigned int toadd
= (startmin
+ remaining
) < 60 ? remaining
: 60 - startmin
;
40 minsperhour
[hour
] += toadd
;
44 hour
= (hour
+ 1) % 24;
48 for (pos
= LOWESTHOUR
; pos
<= HIGHESTHOUR
; pos
++) {
51 result
= ((double)minsperhour
[pos
] / (double)totalmins
);