Add filter tag

This commit is contained in:
Florent Guiotte 2022-09-29 15:36:19 +02:00
parent e2ed91c217
commit 64b7916a1b

View File

@ -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}))