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 import sys
from timewreport.parser import TimeWarriorParser from timewreport.parser import TimeWarriorParser
import pandas as pd import pandas as pd
import json
from pathlib import Path
FILTER_FILE = '~/.timewarrior/tag_filter.json'
# ["tag1", "tag2"]
def filter_tag(df, tag): def filter_tag(df, tag):
@ -28,8 +33,8 @@ def get_tag_summary(df, tags):
return summary return summary
def get_top_tag_summary(tag_summary): def get_top_tag_summary(tag_summary, tags=None):
tags_top = set([t.split()[0] for t in tag_summary.tag]) tags_top = tags if tags else set([t.split()[0] for t in tag_summary.tag])
top_data = [] top_data = []
for tag in tags_top: for tag in tags_top:
@ -54,6 +59,7 @@ def get_timew_df():
if __name__ == '__main__': if __name__ == '__main__':
print(sys.stdin)
df = get_timew_df() df = get_timew_df()
tags = set([t for tl in df.tags for t in tl]) 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) summary = get_tag_summary(df, tags)
top_summary = get_top_tag_summary(summary) 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()
print(f'--- {k} ---') print(f'--- {k} ---')
print(s.to_string(formatters={'ratio': '{:,.2%}'.format})) print(s.sort_values(by=['ratio']).to_string(formatters={'ratio': '{:,.2%}'.format}))