Commit edd9de77 authored by Nicolas Joyard's avatar Nicolas Joyard

Ajout histo de suivi

parent 4f2ae5a9
......@@ -14,14 +14,14 @@ def etat_courriers():
Renvoie les données pour constituer un histogramme des états des courriers.
"""
_etats = [
'Inconnu',
'Pris en charge',
'En cours de traitement',
'En attente de seconde présentation',
'Pli présenté',
'Attend d\'être retiré au guichet',
'Distribué',
_categories = [
{'etats': [''], 'label': 'Inconnu'},
{'etats': ['Pris en charge', 'En cours de traitement'],
'label': 'Pris en charge'},
{'etats': ['Pli présenté', 'En attente de seconde présentation'],
'label': 'Présenté'},
{'etats': ['Attend d\'être retiré au guichet'], 'label': 'Au guichet'},
{'etats': ['Distribué'], 'label': 'Distribué'}
]
# Extrait "Distribué" de "1X23456: Distribué (01/02/2017)"
......@@ -31,14 +31,15 @@ def etat_courriers():
' (', 1
)
data = {item.etat if len(item.etat) else 'Inconnu': item.nb
data = {item.etat: item.nb
for item in db.session.query(expr.label('etat'),
func.count(1).label('nb'))
.filter(Action.etape == ETAPE_ENVOYE)
.group_by(expr)
.all()}
return [(etat, data.get(etat, 0)) for etat in _etats]
return [(c['label'], sum([data.get(e, 0) for e in c['etats']]))
for c in _categories]
def par_departement():
......
......@@ -3,13 +3,16 @@
from flask import render_template
from ..models.constants import ETAPES_BY_ORDRE
from ..models.queries import par_etape, par_departement, random_parl
from ..models.queries import (etat_courriers, par_etape, par_departement,
random_parl)
def setup_routes(app):
@app.route('/', endpoint='home')
def home():
# Données camembert
etapes_qs = par_etape()
def each_etape(getter):
......@@ -24,7 +27,17 @@ def setup_routes(app):
'data': each_etape(lambda e: e.nb),
'backgroundColor': key_each_etape('couleur'),
'hoverBackgroundColor': key_each_etape('couleur'),
'borderWidth': each_etape(lambda e: 0)
'borderWidth': 0
}]
}
# Données histogramme
etats = etat_courriers()
histo_data = {
'labels': [etat for etat, nb in etats],
'datasets': [{
'data': [nb for etat, nb in etats]
}]
}
......@@ -32,5 +45,6 @@ def setup_routes(app):
'index.html.j2',
parlementaire=random_parl(),
etapes_data=etapes_data,
histo_data=histo_data,
departements=par_departement()
)
......@@ -50,7 +50,7 @@
</header>
<article class="panel-body" id="pie-container">
<div id="pie">
<canvas id="pie-canvas" height="240" width="400"></canvas>
<canvas id="pie-canvas" height="210" width="350"></canvas>
</div>
<div id="pie-legend">
{% for etape in etapes %}
......@@ -62,6 +62,9 @@
{% endfor %}
</div>
</article>
<article class="panel-body" id="bar-container">
<canvas id="bar-canvas" height="150" width="400"></canvas>
</article>
</section>
<section class="panel panel-default">
......@@ -122,7 +125,7 @@
/* Camembert */
var circleRatio = 0.52;
var chart = new Chart($('#pie-canvas'), {
new Chart($('#pie-canvas'), {
type: 'pie',
data: {{ etapes_data|tojson }},
options: {
......@@ -140,6 +143,37 @@
}
});
/* Histo de suivi des courriers */
new Chart($('#bar-canvas'), {
type: 'horizontalBar',
data: {{ histo_data|tojson }},
options: {
animation: {
duration: 0
},
legend: {
display: false
},
title: {
display: true,
text: 'Suivi des courriers envoyés'
},
scales: {
xAxes: [{
ticks: {
min: 0
}
}],
yAxes: [{
ticks: {
fontSize: 10
}
}]
}
}
});
/* Carte */
var modesCarte = ['prisencharge', 'envoye'];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment