From 64b7916a1b0fa6b490c28c4f562939a082d6b70c Mon Sep 17 00:00:00 2001 From: Florent Guiotte Date: Thu, 29 Sep 2022 15:36:19 +0200 Subject: [PATCH] Add filter tag --- csv_report.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/csv_report.py b/csv_report.py index 73885e5..a9de17a 100755 --- a/csv_report.py +++ b/csv_report.py @@ -12,6 +12,11 @@ doc. import sys from timewreport.parser import TimeWarriorParser import pandas as pd +import json +from pathlib import Path + +FILTER_FILE = '~/.timewarrior/tag_filter.json' +# ["tag1", "tag2"] def filter_tag(df, tag): @@ -28,8 +33,8 @@ def get_tag_summary(df, tags): return summary -def get_top_tag_summary(tag_summary): - tags_top = set([t.split()[0] for t in tag_summary.tag]) +def get_top_tag_summary(tag_summary, tags=None): + tags_top = tags if tags else set([t.split()[0] for t in tag_summary.tag]) top_data = [] for tag in tags_top: @@ -54,6 +59,7 @@ def get_timew_df(): if __name__ == '__main__': + print(sys.stdin) df = get_timew_df() tags = set([t for tl in df.tags for t in tl]) @@ -61,7 +67,15 @@ if __name__ == '__main__': summary = get_tag_summary(df, tags) top_summary = get_top_tag_summary(summary) - for k, s in (('Detailed summary', summary), ('Top level summary', top_summary)): + with Path(FILTER_FILE).expanduser().open() as ff: + tag_filter = json.load(ff) + + filtered_summary = get_top_tag_summary(summary, tag_filter) + + + for k, s in (('Detailed summary', summary), + ('Top level summary', top_summary), + ('Filtered summary', filtered_summary)): print() print(f'--- {k} ---') - print(s.to_string(formatters={'ratio': '{:,.2%}'.format})) + print(s.sort_values(by=['ratio']).to_string(formatters={'ratio': '{:,.2%}'.format}))