Read all field (not only first day)
This commit is contained in:
parent
e5a1948f59
commit
7b9936334c
@ -21,10 +21,24 @@ def parse_args():
|
|||||||
return args.stats, args.web
|
return args.stats, args.web
|
||||||
|
|
||||||
|
|
||||||
|
def extract_names(data: list):
|
||||||
|
names = set()
|
||||||
|
for d in data:
|
||||||
|
for field in d:
|
||||||
|
name = name_from_field(field)
|
||||||
|
names.update([name])
|
||||||
|
return names
|
||||||
|
|
||||||
|
|
||||||
def name_from_field(field: str) -> str :
|
def name_from_field(field: str) -> str :
|
||||||
if field.startswith("onlyoffice-"):
|
if field.startswith("onlyoffice-"):
|
||||||
return "onlyoffice"
|
return "onlyoffice"
|
||||||
return field.split("_")[0]
|
name = field.split("_")[0]
|
||||||
|
|
||||||
|
name = name.replace("org-caracals-", "")
|
||||||
|
name = name.replace(".caracals.org", "")
|
||||||
|
return name
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
stats_fn, web_render = parse_args()
|
stats_fn, web_render = parse_args()
|
||||||
@ -37,23 +51,27 @@ def load_data(stats_fn: str):
|
|||||||
with open(stats_fn) as stats_f:
|
with open(stats_fn) as stats_f:
|
||||||
data = json.load(stats_f)
|
data = json.load(stats_f)
|
||||||
|
|
||||||
data_dict = {name_from_field(field): [0]*len(data) for field in data[0]}
|
data_dict = {name_from_field(field): [0]*len(data) for field in extract_names(data)}
|
||||||
print("Found", len(data), "points")
|
|
||||||
|
|
||||||
|
print("Found", len(data), "points")
|
||||||
|
print(" keys:", data_dict.keys())
|
||||||
|
|
||||||
for t_i, stat in enumerate(data):
|
for t_i, stat in enumerate(data):
|
||||||
for field in stat:
|
for field in stat:
|
||||||
if field == "date": # date
|
if field == "date": # date
|
||||||
data_dict[field][t_i] = datetime.strptime(stat[field], "%Y-%m-%dT%H:%M:%S%z")
|
date_ = stat[field].replace("+01:00", "+0000")
|
||||||
|
data_dict[field][t_i] = datetime.strptime(date_, "%Y-%m-%dT%H:%M:%S%z")
|
||||||
else: # float
|
else: # float
|
||||||
value = stat[field].split(" ")[0]
|
value = stat[field].split(" ")[0]
|
||||||
value = value.replace("MiB", "e3")
|
value = value.replace("MiB", "e3")
|
||||||
|
value = value.replace("GiB", "e6")
|
||||||
data_dict[name_from_field(field)][t_i] += float(value) / 1000 # values are in MiB
|
data_dict[name_from_field(field)][t_i] += float(value) / 1000 # values are in MiB
|
||||||
return data_dict
|
return data_dict
|
||||||
|
|
||||||
|
|
||||||
def render(data: dict, web_render:bool=False):
|
def render(data: dict, web_render:bool=False):
|
||||||
bar_chart = pygal.StackedBar(height=400, legend_box_size=5, x_label_rotation=25)
|
style = pygal.style.Style(value_label_font_size=5, value_font_size=5, label_font_size=5, legend_font_size=5)
|
||||||
|
bar_chart = pygal.StackedBar(height=400, x_label_rotation=25, style=style, legend_box_size=5)
|
||||||
labels = [d.strftime("%B %d %H:%M") for d in data["date"]]
|
labels = [d.strftime("%B %d %H:%M") for d in data["date"]]
|
||||||
bar_chart.x_labels = labels
|
bar_chart.x_labels = labels
|
||||||
for k in data:
|
for k in data:
|
||||||
|
Loading…
Reference in New Issue
Block a user