Remaster (#38)
* setup new 'statistiques' module * added 'graphos' package and created first test graph * put graphos in requirements, deleted local folder * added "load_csv" management command ! * added update of premiere_rencontre field in 'load_csv' management command * added missing urls.py file * added 'merge' action and view * added 'info_completed' ratio * linked sujets:merge views inside suivi:details * added link to maraudes:details in notes table headers, if any * Major reorganisation, moved 'suivi' and 'sujets' to 'notes', cleanup in 'maraudes', dropping 'website' mixins (mostly useless) * small cleanup * worked on Maraude and Sujet lists * corrected missing line in notes.__init__ * restored 'details' view for maraudes and sujets insie 'notes' module * worked on 'notes': added navigation between maraude's compte-rendu, right content in details, header to list tables * changed queryset for CompteRenduDetailsView to all notes of same date, minor layout changes * added right content to 'details-sujet', created 'statistiques' view and update templates * restored 'statistiques' ajax view in 'details-sujet', fixed 'merge_two' util function * added auto-creation of FicheStatistique (plus some tests), pagination for notes in 'details-sujet' * added error-prone cases in paginator * fixed non-working modals, added titles * added UpdateStatistiques capacity in CompteRenduCreate view * fixed missing AjaxTemplateMixin for CreateSujetView, worked on compte-rendu creation scripts * fixed MaraudeManager.all_of() for common Maraudeurs, added color hints in planning * re-instated statistiques module link and first test page * added FinalizeView to send a mail before finalizing compte-rendu * Added PieChart view for FicheStatistique fields * small style updates, added 'age' and 'genre' fields from sujets in statistiques.PieChartView * worked on statistiques, fixed small issues in 'notes' list views * small theme change * removed some dead code * fixed notes.tests, fixed statistiques.info_completed display, added filter in SujetLisView * added some tests * added customised admin templates * added authenticate in CustomAuthenticatationBackend, more verbose login thanks to messages * added django-nose for test coverage * Corrected raising exception on first migration On first migration, qs.exists() would previously be called and raising an Exception, sot he migrations would fail. * Better try block * cleaned up custom settings.py, added some overrides of django base_settings * corrected bad dictionnary key
This commit is contained in:
20
statistiques/templates/statistiques/base.html
Normal file
20
statistiques/templates/statistiques/base.html
Normal file
@@ -0,0 +1,20 @@
|
||||
{% extends "base.html" %}
|
||||
{% load static %}
|
||||
|
||||
{% block extrahead %}
|
||||
<script type="text/javascript" src="{% static "scripts/jquery.flot.min.js" %}"></script>
|
||||
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
|
||||
<script type="text/javascript">
|
||||
google.load("visualization", "1", {packages:["corechart"]});
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Statistiques >{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}
|
||||
<li><a href="{% url "statistiques:index" %}">Statistiques</a></li>
|
||||
{% endblock %}
|
||||
|
||||
{% block sidebar %}
|
||||
{% include "statistiques/menu.html" %}
|
||||
{% endblock %}
|
||||
42
statistiques/templates/statistiques/fiche_stats_details.html
Normal file
42
statistiques/templates/statistiques/fiche_stats_details.html
Normal file
@@ -0,0 +1,42 @@
|
||||
{% load boolean_icons bootstrap3 %}
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th colspan="4" class="active">Problématiques</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Psychiatrique</th>
|
||||
<td>{{ object.prob_psychiatrie|as_icon }}</td>
|
||||
<th>Addiction</th>
|
||||
<td>{{ object.prob_addiction|as_icon }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Administratif</th>
|
||||
<td>{{ object.prob_administratif|as_icon }}</td>
|
||||
<th>Somatique</th>
|
||||
<td>{{ object.prob_somatique|as_icon }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="4" class="active">Habitation</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<td>{{ object.habitation }}</td>
|
||||
<th>Connu du SIAO</th>
|
||||
<td>{{ object.connu_siao|as_icon }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="4" class="active">Ressources</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">{{ object.ressources }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="4" class="active">Parcours de vie</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{{ object.parcours_de_vie }}</td>
|
||||
<th>Lien familial</th>
|
||||
<td>{{ object.lien_familial|as_icon }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
44
statistiques/templates/statistiques/fiche_stats_update.html
Normal file
44
statistiques/templates/statistiques/fiche_stats_update.html
Normal file
@@ -0,0 +1,44 @@
|
||||
{% load bootstrap3 %}
|
||||
<form action="{% url "statistiques:update" form.instance.pk %}" method="post" id="update-stats-form">{% csrf_token%}
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th colspan="4" class="active">Problématiques</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Psychiatrique</th>
|
||||
<td>{% bootstrap_field form.prob_psychiatrie show_label=False size="small" %}</td>
|
||||
<th>Addiction</th>
|
||||
<td>{% bootstrap_field form.prob_addiction show_label=False size="small" %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Administratif</th>
|
||||
<td>{% bootstrap_field form.prob_administratif show_label=False size="small" %}</td>
|
||||
<th>Somatique</th>
|
||||
<td>{% bootstrap_field form.prob_somatique show_label=False size="small" %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="4" class="active">Habitation</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<td>{% bootstrap_field form.habitation show_label=False size="small" %}</td>
|
||||
<th>Connu du SIAO</th>
|
||||
<td>{% bootstrap_field form.connu_siao show_label=False size="small" %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="4" class="active">Ressources</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">{% bootstrap_field form.ressources show_label=False size="small" %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="4" class="active">Parcours de vie</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{% bootstrap_field form.parcours_de_vie show_label=False size="small" %}</td>
|
||||
<th>Lien familial</th>
|
||||
<td>{% bootstrap_field form.lien_familial show_label=False size="small" %}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<input type="submit" id="submit-form" class="hidden"></input>
|
||||
</form>
|
||||
7
statistiques/templates/statistiques/filter_form.html
Normal file
7
statistiques/templates/statistiques/filter_form.html
Normal file
@@ -0,0 +1,7 @@
|
||||
{% load bootstrap3 %}
|
||||
|
||||
<h4>Période</h4>
|
||||
<form action="" method="get">
|
||||
{% bootstrap_form form layout="inline" %}
|
||||
{% bootstrap_button "Ok" button_type="submit" %}
|
||||
</form>
|
||||
5
statistiques/templates/statistiques/gchart/html.html
Normal file
5
statistiques/templates/statistiques/gchart/html.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<div class="row text-center" id="wrapper-{{ chart.get_html_id}}">
|
||||
<div id="{{ chart.get_html_id }}" style="width: {{ chart.width }}px; height: {{ chart.height }}px;"></div>
|
||||
<a class="btn btn-sm btn-default" href="#" id="image-{{ chart.get_html_id }}"><span class="glyphicon glyphicon-save-file"></span> Télécharger l'image</a>
|
||||
</div>
|
||||
|
||||
13
statistiques/templates/statistiques/gchart/pie_chart.html
Normal file
13
statistiques/templates/statistiques/gchart/pie_chart.html
Normal file
@@ -0,0 +1,13 @@
|
||||
{% extends "graphos/gchart/base.html" %}
|
||||
|
||||
{% block create_chart %}
|
||||
var chart_data = data
|
||||
var chart_div = document.getElementById('{{ chart.get_html_id }}');
|
||||
var chart = new google.visualization.PieChart(chart_div);
|
||||
|
||||
// Wait for the chart to finish drawing before calling the getImageURI() method.
|
||||
google.visualization.events.addListener(chart, 'ready', function () {
|
||||
$("#image-{{ chart.get_html_id }}").attr("href", chart.getImageURI());
|
||||
$("#wrapper-{{ chart.get_html_id}}").hide();
|
||||
});
|
||||
{% endblock %}
|
||||
60
statistiques/templates/statistiques/index.html
Normal file
60
statistiques/templates/statistiques/index.html
Normal file
@@ -0,0 +1,60 @@
|
||||
{% extends "statistiques/base.html" %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %}{{ block.super }} Maraudes{% endblock %}
|
||||
|
||||
|
||||
{% block sidebar %}
|
||||
{{ block.super }}
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-body text-right">
|
||||
{% include "statistiques/filter_form.html" %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}
|
||||
{{ block.super }}
|
||||
<li>Maraudes</li>
|
||||
{% endblock %}
|
||||
|
||||
{% block page_content %}
|
||||
|
||||
<div class="alert alert-info alert-dismissible">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<p>Voici les données permettant une analyse statistiques des maraudes.</p>
|
||||
<p>Vous pouvez sélectionner une période particulière ou l'ensemble des données</p>
|
||||
<p>Les données sont réparties en trois catégories, accessibles par le menu sur la gauche</p>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<h3 class="page-header">Données générales</h3>
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item list-group-item-danger">
|
||||
<span class="badge">{{ nbr_maraudes }}</span>
|
||||
Nombre de maraudes
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span class="badge">{{ nbr_maraudes_jour }}</span>
|
||||
dont, Maraudes de journée
|
||||
</li>
|
||||
<li class="list-group-item list-group-item-danger">
|
||||
<span class="badge">{{ nbr_rencontres }}</span>
|
||||
Nombre total de rencontres
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span class="badge">{{ moy_rencontres }}</span>
|
||||
soit, en <strong>moyenne</strong> par maraude
|
||||
</li>
|
||||
<li class="list-group-item list-group-item-danger">
|
||||
<span class="badge">{{ nbr_sujets_rencontres }}</span>
|
||||
Nombre de sujets rencontrés
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{% if rencontres_par_mois %}
|
||||
<div class="col-lg-8">
|
||||
<h3 class="page-header">Rencontres par mois</h3>
|
||||
{{ rencontres_par_mois.as_html }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
14
statistiques/templates/statistiques/menu.html
Normal file
14
statistiques/templates/statistiques/menu.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{% load navbar %}
|
||||
<ul class="nav nav-pills nav-stacked text-right">
|
||||
<li role="presentation" {% active namespace="statistiques" viewname="index" %}>
|
||||
<a href="{% url "statistiques:index" %}?year={{year|default:0}}{% if month %}&month={{month}}{% endif %}">Maraudes
|
||||
<span class="glyphicon glyphicon-road"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li role="presentation" {% active namespace="statistiques" viewname="pies" %}>
|
||||
<a href="{% url "statistiques:pies" %}?year={{year|default:0}}{% if month %}&month={{month}}{% endif %}">Typologie du public
|
||||
<span class="glyphicon glyphicon-adjust"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr />
|
||||
46
statistiques/templates/statistiques/typologie.html
Normal file
46
statistiques/templates/statistiques/typologie.html
Normal file
@@ -0,0 +1,46 @@
|
||||
{% extends "statistiques/base.html" %}
|
||||
|
||||
{% block title %}{{block.super}} Typologie{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{block.super}}<li>Typologie</li>{% endblock %}
|
||||
|
||||
{% block sidebar %}
|
||||
{{ block.super }}
|
||||
<hr />
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-body text-right">
|
||||
{% include "statistiques/filter_form.html" %}
|
||||
<hr />
|
||||
<p>Échantillon : {{ queryset.count }} sujets</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block page_content %}
|
||||
<script type="text/javascript">
|
||||
function hideAll() {
|
||||
{% for _, graph in graphs %}{% with graph.get_html_id as id %}
|
||||
$("#tab-{{id}}").attr("class", "");
|
||||
$("#wrapper-{{id}}").hide();
|
||||
{% endwith %}{% endfor %}
|
||||
}
|
||||
|
||||
function showGraph(id) {
|
||||
hideAll();
|
||||
$("#tab-" + id).attr("class", "active");
|
||||
$("#wrapper-" + id).show();
|
||||
}
|
||||
|
||||
/*$( function() {
|
||||
hideAll();
|
||||
});*/
|
||||
</script>
|
||||
<ul class="nav nav-tabs">
|
||||
{% for title, graph in graphs %}<li role="presentation" id="tab-{{graph.get_html_id}}"><a href="#" onclick="showGraph('{{graph.get_html_id}}');">{{ title }}</a></li>{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% for title, graph in graphs %}
|
||||
{{ graph.as_html }}
|
||||
{% endfor %}
|
||||
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user