Skip to content
Snippets Groups Projects
Commit aaca63e7 authored by Nico Vermaas's avatar Nico Vermaas
Browse files

add status plots (experimental)

parent 245ae90e
No related branches found
No related tags found
1 merge request!347status plots functionality
{% extends 'taskdatabase/base.html' %}
{% load static %}
{% block myBlock %}
<div class="hiking-container container-fluid">
<div class="card">
<div class="card-body">
<img src="/atdb/static/status_graph.png" alt="Status Graph">
</div>
</div>
</div>
{% endblock %}
\ No newline at end of file
{% extends 'taskdatabase/base.html' %}
{% load static %}
{% block myBlock %}
<div class="hiking-container container-fluid">
<div class="card">
<div class="card-body">
<form action="{% url 'create_status_graph' %}" method="post">
{% csrf_token %}
<label for="status">Which (end) status to plot?:</label>
<input type="text" id="status" name="status" value="finished"><br><br>
<label for="days">Last X days:</label>
<input type="number" id="days" name="days" value="30"><br><br>
<label for="bin_size">Bin Size:</label>
<select id="bin_size" name="bin_size" value="day">
<option value="day">Day</option>
<option value="hour">Hour</option>
</select><br><br>
<button type="submit">Generate Graph</button>
</form>
</div>
</div>
</div>
{% endblock %}
\ No newline at end of file
import logging
import json
from datetime import datetime, timedelta
import matplotlib.pyplot as plt
try:
import matplotlib.pyplot as plt
except:
# enable debugging, but without matplotlib
pass
import psycopg2
from . import config
......@@ -1804,14 +1809,15 @@ def CreateStatusGraph(request):
# Calculate the date x days ago
start_date = datetime.now() - timedelta(days=days_to_check)
database = settings.DATABASES['default']
dbname = database['NAME']
# Connect to your PostgreSQL database
conn = psycopg2.connect(
dbname=config.DATABASES['default']['name'],
user=config.DATABASES['default']['user'],
password=config.DATABASES['default']['password'],
host=config.DATABASES['default']['host'],
port=config.DATABASES['default']['port'],
dbname=database['NAME'],
user=database['USER'],
password=database['PASSWORD'],
host=database['HOST'],
port=database['PORT'],
)
# Execute the SQL query
......@@ -1841,9 +1847,9 @@ def CreateStatusGraph(request):
plt.xticks(rotation=45)
plt.grid(True)
plt.tight_layout()
plt.savefig('records_per_{}_{}_last_{}days.png'.format(bin_size, status, days_to_check))
plt.savefig('taskdatabase/static/status_graph.png')
# Render the template with the graph
return render(request, 'taskdatabase/graphs/status_graph.html')
return render(request, 'taskdatabase/graphs/status_graph_input_form.html')
\ No newline at end of file
return render(request, 'taskdatabase/graphs/status_graph_input_form.html', {'image_path': 'status_graph.png'})
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment