Add filter tag
This commit is contained in:
parent
e2ed91c217
commit
64b7916a1b
@ -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}))
|
||||||
|
Loading…
Reference in New Issue
Block a user