From 2085ff21da10a32fe3062940a5c2cb605ab75d48 Mon Sep 17 00:00:00 2001 From: Peter Stockings Date: Mon, 23 Jan 2023 21:51:24 +1100 Subject: [PATCH] Move graph generation logic into seperate file --- app.py | 22 +++------------------- graph.py | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 19 deletions(-) create mode 100644 graph.py diff --git a/app.py b/app.py index 9dd48de..b44827c 100644 --- a/app.py +++ b/app.py @@ -9,11 +9,9 @@ from flask_htmx import HTMX import minify_html from urllib.parse import urlparse from flask_socketio import SocketIO -import pygal -from pygal.style import Style - from db import DataBase +from graph import generate_graph app = Flask(__name__) # TODO CHANGE SECRET KEY TO ENVIRONMENT VARIABLE @@ -57,22 +55,8 @@ def overview(): cadences = db.get_all_cadences() last_cadence = cadences[-1]['rpm'] - custom_style = Style( - background='transparent', - plot_background='transparent', - foreground='#53E89B', - foreground_strong='#53A0E8', - foreground_subtle='#630C0D', - opacity='.6', - opacity_hover='.9', - transition='400ms ease-in', - colors=('#E853A0', '#E8537A', '#E95355', '#E87653', '#E89B53')) - - graph = pygal.Line(show_y_guides=False, - show_legend=False, style=custom_style) - graph.x_labels = [c['logged_at'] for c in cadences[::2]] - graph.add('RPM', [c['rpm'] for c in cadences[::2]]) - graph_data = graph.render_data_uri() + graph_data = generate_graph([c['logged_at'] for c in cadences[::2]], [ + ("RPM", [c['rpm'] for c in cadences[::2]])]) return render_template('overview.html', last_cadence=last_cadence, cadences=cadences[-15:], graph_data=graph_data) diff --git a/graph.py b/graph.py new file mode 100644 index 0000000..5d54430 --- /dev/null +++ b/graph.py @@ -0,0 +1,24 @@ +import pygal +from pygal.style import Style + +custom_style = Style( + background='transparent', + plot_background='transparent', + foreground='#53E89B', + foreground_strong='#53A0E8', + foreground_subtle='#630C0D', + opacity='.6', + opacity_hover='.9', + transition='400ms ease-in', + colors=('#E853A0', '#E8537A', '#E95355', '#E87653', '#E89B53')) + + +def generate_graph(x_labels, data, style=custom_style): + graph = pygal.Line(show_y_guides=False, + show_legend=False, style=style) + graph.x_labels = x_labels + + for title, values in data: + graph.add(title, values) + graph_data = graph.render_data_uri() + return graph_data