mirror of
https://github.com/GothenburgBitFactory/timewarrior.git
synced 2025-07-07 20:06:39 +02:00
TI-46: Display error in visual reports (day,week,month)
- Fix calculation of end_mins - Add tests
This commit is contained in:
parent
c7cf7d7b46
commit
58f07d0266
3 changed files with 111 additions and 3 deletions
|
@ -10,6 +10,8 @@
|
||||||
(thanks to Jan Stolarek)
|
(thanks to Jan Stolarek)
|
||||||
- TI-42 refresh holiday script throws an error on nb-NO locale
|
- TI-42 refresh holiday script throws an error on nb-NO locale
|
||||||
(thanks to Jelle van der Waa).
|
(thanks to Jelle van der Waa).
|
||||||
|
- TI-46 Display error in visual reports (day,week,month)
|
||||||
|
(thanks to Michael Meier)
|
||||||
- TI-47 first call successfully creates new database but returns exit status 1
|
- TI-47 first call successfully creates new database but returns exit status 1
|
||||||
(thanks to Georg Sauthoff).
|
(thanks to Georg Sauthoff).
|
||||||
- TI-49 new theme files aren't installed
|
- TI-49 new theme files aren't installed
|
||||||
|
|
|
@ -543,13 +543,14 @@ static void renderInterval (
|
||||||
|
|
||||||
auto start_mins = (clipped.range.start.hour () - first_hour) * 60 + clipped.range.start.minute ();
|
auto start_mins = (clipped.range.start.hour () - first_hour) * 60 + clipped.range.start.minute ();
|
||||||
auto end_mins = (clipped.range.end.hour () - first_hour) * 60 + clipped.range.end.minute ();
|
auto end_mins = (clipped.range.end.hour () - first_hour) * 60 + clipped.range.end.minute ();
|
||||||
if (end_mins == 0)
|
|
||||||
end_mins = (23 * 60) + 59;
|
if (clipped.range.end.hour () == 0)
|
||||||
|
end_mins += (clipped.range.end.day() - clipped.range.start.day()) * 24 * 60;
|
||||||
|
|
||||||
work = clipped.range.total ();
|
work = clipped.range.total ();
|
||||||
|
|
||||||
auto start_block = quantizeToNMinutes (start_mins, cell) / cell;
|
auto start_block = quantizeToNMinutes (start_mins, cell) / cell;
|
||||||
auto end_block = quantizeToNMinutes (end_mins == 0 ? 60 : end_mins, cell) / cell;
|
auto end_block = quantizeToNMinutes (end_mins == start_mins ? start_mins + 60 : end_mins, cell) / cell;
|
||||||
|
|
||||||
int start_offset = start_block + (spacing * (start_mins / 60));
|
int start_offset = start_block + (spacing * (start_mins / 60));
|
||||||
int end_offset = end_block + (spacing * (end_mins / 60));
|
int end_offset = end_block + (spacing * (end_mins / 60));
|
||||||
|
|
105
test/chart.t
105
test/chart.t
|
@ -93,6 +93,111 @@ class TestChart(TestCase):
|
||||||
|
|
||||||
self.assertIn("Invalid value for 'reports.month.cell': 'foobar'", err)
|
self.assertIn("Invalid value for 'reports.month.cell': 'foobar'", err)
|
||||||
|
|
||||||
|
def test_chart_day_with_less_than_one_minute_interval_at_day_start(self):
|
||||||
|
self.t("track 2016-01-15T00:00:00 - 2016-01-15T00:00:40 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO")
|
||||||
|
code, out, err = self.t("day 2016-01-15 - 2016-01-16")
|
||||||
|
|
||||||
|
self.assertIn("""\
|
||||||
|
\nFri 15 XOXO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 \
|
||||||
|
\n XOXO \
|
||||||
|
\n
|
||||||
|
Tracked 0:00:40
|
||||||
|
Available 23:59:20
|
||||||
|
Total 24:00:00
|
||||||
|
|
||||||
|
""", out)
|
||||||
|
|
||||||
|
def test_chart_day_with_less_than_one_minute_interval(self):
|
||||||
|
self.t(
|
||||||
|
"track 2016-01-15T02:00:00 - 2016-01-15T02:00:40 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO")
|
||||||
|
code, out, err = self.t("day 2016-01-15 - 2016-01-16")
|
||||||
|
|
||||||
|
self.assertIn("""\
|
||||||
|
\nFri 15 0 1 XOXO 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 \
|
||||||
|
\n XOXO \
|
||||||
|
\n
|
||||||
|
Tracked 0:00:40
|
||||||
|
Available 23:59:20
|
||||||
|
Total 24:00:00
|
||||||
|
|
||||||
|
""", out)
|
||||||
|
|
||||||
|
def test_chart_day_with_less_than_one_hour_interval_at_day_start(self):
|
||||||
|
self.t(
|
||||||
|
"track 2016-01-15T00:00:00 - 2016-01-15T00:30:00 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO")
|
||||||
|
code, out, err = self.t("day 2016-01-15 - 2016-01-16")
|
||||||
|
|
||||||
|
self.assertIn("""\
|
||||||
|
\nFri 15 XO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 \
|
||||||
|
\n XO \
|
||||||
|
\n
|
||||||
|
Tracked 0:30:00
|
||||||
|
Available 23:30:00
|
||||||
|
Total 24:00:00
|
||||||
|
|
||||||
|
""", out)
|
||||||
|
|
||||||
|
def test_chart_day_with_less_than_one_hour_interval(self):
|
||||||
|
self.t(
|
||||||
|
"track 2016-01-15T02:00:00 - 2016-01-15T02:30:00 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO")
|
||||||
|
code, out, err = self.t("day 2016-01-15 - 2016-01-16")
|
||||||
|
|
||||||
|
self.assertIn("""\
|
||||||
|
\nFri 15 0 1 XO 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 \
|
||||||
|
\n XO \
|
||||||
|
\n
|
||||||
|
Tracked 0:30:00
|
||||||
|
Available 23:30:00
|
||||||
|
Total 24:00:00
|
||||||
|
|
||||||
|
""", out)
|
||||||
|
|
||||||
|
def test_chart_day_with_interval_over_day_border(self):
|
||||||
|
self.t(
|
||||||
|
"track 2016-01-15T23:00:00 - 2016-01-16T01:00:00 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO")
|
||||||
|
|
||||||
|
code, out, err = self.t("day 2016-01-15 - 2016-01-17")
|
||||||
|
self.assertIn("""\
|
||||||
|
\nFri 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 XOXOX\
|
||||||
|
\n OXOXO\
|
||||||
|
\nSat 16 XOXOX1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 \
|
||||||
|
\n OXOXO \
|
||||||
|
\n
|
||||||
|
Tracked 2:00:00
|
||||||
|
Available 46:00:00
|
||||||
|
Total 48:00:00
|
||||||
|
|
||||||
|
""", out)
|
||||||
|
|
||||||
|
def test_chart_day_with_interval_over_day_border(self):
|
||||||
|
self.t("track 2016-01-15T23:00:00 - 2016-01-16T01:00:00 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO")
|
||||||
|
code, out, err = self.t("day 2016-01-15 - 2016-01-17")
|
||||||
|
|
||||||
|
self.assertIn("""\
|
||||||
|
\nFri 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 XOXOX\
|
||||||
|
\n OXOXO\
|
||||||
|
\nSat 16 XOXOX1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 \
|
||||||
|
\n OXOXO \
|
||||||
|
\n
|
||||||
|
Tracked 2:00:00
|
||||||
|
Available 46:00:00
|
||||||
|
Total 48:00:00
|
||||||
|
|
||||||
|
""", out)
|
||||||
|
|
||||||
|
def test_chart_day_with_interval_over_whole_day(self):
|
||||||
|
self.t("track 2016-01-15T00:00:00 - 2016-01-16T00:00:00 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO")
|
||||||
|
code, out, err = self.t("day 2016-01-15 - 2016-01-16")
|
||||||
|
|
||||||
|
self.assertIn("""\
|
||||||
|
\nFri 15 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO\
|
||||||
|
\n XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO\
|
||||||
|
\n
|
||||||
|
Tracked 24:00:00
|
||||||
|
Available 0:00:00
|
||||||
|
Total 24:00:00
|
||||||
|
|
||||||
|
""", out)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
from simpletap import TAPTestRunner
|
from simpletap import TAPTestRunner
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue