From b7f285f2b866366cff49d49ccfb49a40c62cb0e3 Mon Sep 17 00:00:00 2001 From: hmj6502 Date: Thu, 18 Dec 2025 21:54:49 +0000 Subject: add basic rendering display each day as a seperate svg; each a bar chart of tags of that day --- display.py | 24 ++++++++++++++++++++++++ formatting.py | 22 ++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 display.py diff --git a/display.py b/display.py new file mode 100644 index 0000000..e5b9bda --- /dev/null +++ b/display.py @@ -0,0 +1,24 @@ +# displays stats as graph. assumes csv is in chronological order, with no +# overlapping sessions. as initial test: make a bar chart for time spent per +# tag, for every day +import pygal +import csv +import argparse +from collections import OrderedDict +import formatting as f + +parser = argparse.ArgumentParser() +parser.add_argument("logfile", help="log file to display chart of", + type=argparse.FileType('r')) +args = parser.parse_args() + +day_times = f.per_tag_per_day(args.logfile) +print(day_times) + +for day in day_times: + chart = pygal.Bar() + for key, value in day.items(): + if key == "date": + continue + chart.add(key, value) + chart.render_to_file(str(day["date"]+".svg")) diff --git a/formatting.py b/formatting.py index a7c7ed7..5002ee9 100644 --- a/formatting.py +++ b/formatting.py @@ -22,3 +22,25 @@ def sess_to_log(session, filename): if logmode == 'w': writer.writeheader() writer.writerow(session) + +def per_tag_per_day(file): + """returns list of dicts, each has date, tag and time spent per tag""" + reader = csv.DictReader(file) + + rows = [] # need to make into list to transverse backwards + for row in reader: + rows.append(row) + +# list of dicts; each dict is tag: time_spent + day_times = [] + cur = -1 + for i in range(len(rows)): + date = rows[i]['date'] + tag = rows[i]['tag'] + if i > 0 and date == rows[i-1]['date']: + day_times[cur][tag] = day_times[cur].get(tag, 0) + int(rows[i]['elapsed']) + else: + cur += 1 + day_times.append({"date": date, tag: int(rows[i]['elapsed'])}) + + return day_times -- cgit v1.2.3