territories-dashboard-lib 0.1.0__py3-none-any.whl → 0.1.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of territories-dashboard-lib might be problematic. Click here for more details.
- territories_dashboard_lib/commons/__init__.py +0 -0
- territories_dashboard_lib/commons/decorators.py +36 -0
- territories_dashboard_lib/commons/models.py +9 -0
- territories_dashboard_lib/geo_lib/__init__.py +0 -0
- territories_dashboard_lib/geo_lib/admin.py +64 -0
- territories_dashboard_lib/geo_lib/enums.py +7 -0
- territories_dashboard_lib/geo_lib/migrations/0001_initial.py +51 -0
- territories_dashboard_lib/geo_lib/migrations/__init__.py +0 -0
- territories_dashboard_lib/geo_lib/models.py +58 -0
- territories_dashboard_lib/geo_lib/urls.py +27 -0
- territories_dashboard_lib/geo_lib/views.py +239 -0
- territories_dashboard_lib/indicators_lib/__init__.py +0 -0
- territories_dashboard_lib/indicators_lib/admin.py +140 -0
- territories_dashboard_lib/indicators_lib/enums.py +59 -0
- territories_dashboard_lib/indicators_lib/export.py +29 -0
- territories_dashboard_lib/indicators_lib/format.py +34 -0
- territories_dashboard_lib/indicators_lib/methodo_pdf.py +99 -0
- territories_dashboard_lib/indicators_lib/migrations/0001_initial.py +138 -0
- territories_dashboard_lib/indicators_lib/migrations/__init__.py +0 -0
- territories_dashboard_lib/indicators_lib/models.py +230 -0
- territories_dashboard_lib/indicators_lib/payloads.py +54 -0
- territories_dashboard_lib/indicators_lib/query/commons.py +223 -0
- territories_dashboard_lib/indicators_lib/query/comparison.py +70 -0
- territories_dashboard_lib/indicators_lib/query/details.py +64 -0
- territories_dashboard_lib/indicators_lib/query/histogram.py +82 -0
- territories_dashboard_lib/indicators_lib/query/indicator_card.py +102 -0
- territories_dashboard_lib/indicators_lib/query/top_10.py +100 -0
- territories_dashboard_lib/indicators_lib/query/utils.py +20 -0
- territories_dashboard_lib/indicators_lib/refresh_filters.py +17 -0
- territories_dashboard_lib/indicators_lib/table.py +154 -0
- territories_dashboard_lib/indicators_lib/urls.py +97 -0
- territories_dashboard_lib/indicators_lib/views.py +490 -0
- territories_dashboard_lib/superset_lib/__init__.py +0 -0
- territories_dashboard_lib/superset_lib/admin.py +22 -0
- territories_dashboard_lib/superset_lib/guest_token.py +64 -0
- territories_dashboard_lib/superset_lib/logic.py +67 -0
- territories_dashboard_lib/superset_lib/migrations/0001_initial.py +45 -0
- territories_dashboard_lib/superset_lib/migrations/__init__.py +0 -0
- territories_dashboard_lib/superset_lib/models.py +52 -0
- territories_dashboard_lib/superset_lib/serializers.py +10 -0
- territories_dashboard_lib/superset_lib/urls.py +10 -0
- territories_dashboard_lib/superset_lib/views.py +19 -0
- territories_dashboard_lib/tracking_lib/__init__.py +0 -0
- territories_dashboard_lib/tracking_lib/enums.py +7 -0
- territories_dashboard_lib/tracking_lib/logic.py +78 -0
- territories_dashboard_lib/tracking_lib/migrations/0001_initial.py +45 -0
- territories_dashboard_lib/tracking_lib/migrations/__init__.py +0 -0
- territories_dashboard_lib/tracking_lib/models.py +79 -0
- territories_dashboard_lib/website_lib/__init__.py +0 -0
- territories_dashboard_lib/website_lib/admin.py +40 -0
- territories_dashboard_lib/website_lib/context_processors.py +27 -0
- territories_dashboard_lib/website_lib/forms.py +47 -0
- territories_dashboard_lib/website_lib/migrations/0001_initial.py +91 -0
- territories_dashboard_lib/website_lib/migrations/__init__.py +0 -0
- territories_dashboard_lib/website_lib/models.py +148 -0
- territories_dashboard_lib/website_lib/navigation.py +124 -0
- territories_dashboard_lib/website_lib/params.py +268 -0
- territories_dashboard_lib/website_lib/serializers.py +105 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/css/website.css +956 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/chart.js +13 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/chartjs-plugin-datalabels.js +1 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/html2canvas.js +20 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/comparaison/data.mjs +62 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/comparaison/history.mjs +98 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/comparaison/main-values.mjs +30 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/comparaison/page.mjs +105 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/comparaison/territory-chart.mjs +141 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/data.mjs +59 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/histogram.mjs +130 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/map.mjs +25 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/page.mjs +96 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/proportions.mjs +77 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/sankey.mjs +27 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/table.mjs +229 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/top10.mjs +76 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/utils.mjs +8 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/dom.mjs +92 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/enums.mjs +104 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/export-graph.mjs +15 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/export.mjs +20 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/filters.mjs +159 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/format.mjs +54 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/side_panel.mjs +103 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/theme/history.mjs +89 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/theme/main-value.mjs +22 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/theme/page.mjs +162 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/theme/statistics.mjs +42 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/utils.mjs +93 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/static/page.mjs +35 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/patternomaly.js +1452 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/react18.js +31 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/reactdom18.js +267 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/supersetEmbed.js +355 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/react/indicatorMap.bundle.js +2 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/react/sankeyGraph.bundle.js +2 -0
- territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/react/vendors-node_modules_mapbox-gl_dist_mapbox-gl_js.bundle.js +2 -0
- territories_dashboard_lib/website_lib/static_content.py +20 -0
- territories_dashboard_lib/website_lib/templates/admin/indicators_lib/indicator/change_form.html +8 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/404.html +10 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/500.html +10 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/layout/base.html +42 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/layout/base.js +47 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/layout/footer.html +96 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/layout/header.html +101 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/layout/header.js +102 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/comparaison/[theme]/components/indicateur-card.html +48 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/comparaison/[theme]/page.html +52 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/chart-buttons.html +29 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/geo_params.html +71 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/indicator-card.html +52 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/loader.html +28 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel.html +27 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel_geo.html +80 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel_geo.js +85 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel_methodo.html +45 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel_methodo.js +19 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/themes-list.html +9 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/themes-nav.html +33 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/title.html +28 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/filters-reminder.html +19 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/table.html +123 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/page.html +166 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/themes/components/extremum.html +15 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/themes/components/indicateur-card.html +76 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/themes/page.html +66 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/lexique/page.html +17 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/page.html +14 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/sitemap/page.html +71 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/static/page.html +16 -0
- territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/superset/page.html +55 -0
- territories_dashboard_lib/website_lib/templatetags/htmlparams.py +75 -0
- territories_dashboard_lib/website_lib/templatetags/other_filters.py +30 -0
- territories_dashboard_lib/website_lib/views.py +212 -0
- {territories_dashboard_lib-0.1.0.dist-info → territories_dashboard_lib-0.1.2.dist-info}/METADATA +1 -1
- territories_dashboard_lib-0.1.2.dist-info/RECORD +138 -0
- territories_dashboard_lib-0.1.0.dist-info/RECORD +0 -5
- {territories_dashboard_lib-0.1.0.dist-info → territories_dashboard_lib-0.1.2.dist-info}/WHEEL +0 -0
- {territories_dashboard_lib-0.1.0.dist-info → territories_dashboard_lib-0.1.2.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
{% extends "territories_dashboard_lib/website/layout/base.html" %}
|
|
2
|
+
|
|
3
|
+
{% load static %}
|
|
4
|
+
{% load other_filters %}
|
|
5
|
+
|
|
6
|
+
{% block page_title %}{{indicator.title}}{% endblock %}
|
|
7
|
+
|
|
8
|
+
{% block extra_head%}
|
|
9
|
+
<script defer src="{% static 'territories_dashboard_lib/website/js/react18.js' %}"></script>
|
|
10
|
+
<script defer src="{% static 'territories_dashboard_lib/website/js/reactdom18.js' %}"></script>
|
|
11
|
+
<script defer src="{% static 'territories_dashboard_lib/website/js/html2canvas.js' %}"></script>
|
|
12
|
+
<script defer src="{% static 'territories_dashboard_lib/website/js/chart.js' %}"></script>
|
|
13
|
+
<script defer src="{% static 'territories_dashboard_lib/website/js/chartjs-plugin-datalabels.js' %}"></script>
|
|
14
|
+
<script defer src="{% static 'territories_dashboard_lib/website/js/patternomaly.js' %}"></script>
|
|
15
|
+
{{ params|json_script:"params-js" }}
|
|
16
|
+
{{ indicator|json_script:"indicator-js" }}
|
|
17
|
+
{% with indicator.id|stringformat:"i"|add:"-api-urls" as script_name %}
|
|
18
|
+
{{ indicator|indicator_api_urls|json_script:script_name }}
|
|
19
|
+
{% endwith %}
|
|
20
|
+
<script defer src="{% static 'territories_dashboard_lib/website/react/indicatorMap.bundle.js' %}"></script>
|
|
21
|
+
<script defer src="{% static 'territories_dashboard_lib/website/react/sankeyGraph.bundle.js' %}"></script>
|
|
22
|
+
<script defer type="module" src="{% static 'territories_dashboard_lib/website/js/pages/indicators/details/page.mjs' %}"></script>
|
|
23
|
+
{% endblock %}
|
|
24
|
+
|
|
25
|
+
{% block main %}
|
|
26
|
+
<div class="tdbmd-thematics">
|
|
27
|
+
<div class="fr-grid-row">
|
|
28
|
+
<aside id="left-menu" class="fr-col-md-3 fr-col-12 fr-pt-md-5w fr-pt-0">
|
|
29
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/themes-nav.html" %}
|
|
30
|
+
</aside>
|
|
31
|
+
<main role="main" class="tdbmd-thematics__content tdbmd-content fr-col-12 fr-col-md-9" id="contenu" tabindex="-1">
|
|
32
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/geo_params.html" %}
|
|
33
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/themes-list.html" %}
|
|
34
|
+
<div class="fr-mt-8w">
|
|
35
|
+
<div class="fr-px-md-4w fr-px-2w fr-mb-6w">
|
|
36
|
+
<nav role="navigation" class="fr-breadcrumb" aria-label="vous êtes ici :">
|
|
37
|
+
<button class="fr-breadcrumb__button" aria-expanded="false" aria-controls="breadcrumb-1">Voir le fil d’Ariane</button>
|
|
38
|
+
<div class="fr-collapse" id="breadcrumb-1">
|
|
39
|
+
<ol class="fr-breadcrumb__list">
|
|
40
|
+
<li>
|
|
41
|
+
<a class="fr-breadcrumb__link" href="/">Accueil</a>
|
|
42
|
+
</li>
|
|
43
|
+
<li>
|
|
44
|
+
<a class="fr-breadcrumb__link" href="{% url 'website:theme' theme_name=theme.name %}">{{theme.title}}</a>
|
|
45
|
+
</li>
|
|
46
|
+
<li>
|
|
47
|
+
<a class="fr-breadcrumb__link" href="{% url 'website:theme' theme_name=theme.name %}#{{subtheme.name}}">{{subtheme.title}}</a>
|
|
48
|
+
</li>
|
|
49
|
+
<li>
|
|
50
|
+
<a class="fr-breadcrumb__link" aria-current="page">{{indicator.title}}</a>
|
|
51
|
+
</li>
|
|
52
|
+
</ol>
|
|
53
|
+
</div>
|
|
54
|
+
</nav>
|
|
55
|
+
<h1>{{ indicator.title }}</h1>
|
|
56
|
+
{% if indicator.source %}
|
|
57
|
+
<p class="tdbmd-indicator-source">
|
|
58
|
+
<span class="tdbmd-indicator-source__title">Source</span>
|
|
59
|
+
<span>:</span>
|
|
60
|
+
{{indicator.source}}
|
|
61
|
+
</p>
|
|
62
|
+
{% endif %}
|
|
63
|
+
<button
|
|
64
|
+
class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-file-line fr-btn--icon-right"
|
|
65
|
+
aria-label="Afficher la fiche méthodologique dans la barre latérale"
|
|
66
|
+
aria-controls="slide-panel-methodo"
|
|
67
|
+
>
|
|
68
|
+
Fiche méthodologique
|
|
69
|
+
</button>
|
|
70
|
+
</div>
|
|
71
|
+
<div class="fr-px-md-4w fr-px-2w">
|
|
72
|
+
<div id="filtres" class="fr-tag-list fr-mt-4w" role="group" aria-label="Filtres disponibles">
|
|
73
|
+
{% for dimension_filters in filters %}
|
|
74
|
+
<div class="filters-dimension" data-dimension="{{ dimension_filters.0.db_name }}" data-breakdown="{{ dimension_filters.0.is_breakdown|yesno:'true,false' }}">
|
|
75
|
+
{% if filters|length > 1 %}
|
|
76
|
+
<label>{{ dimension_filters.0.title }}</label>
|
|
77
|
+
{% endif %}
|
|
78
|
+
<div >
|
|
79
|
+
{% for filter in dimension_filters.1 %}
|
|
80
|
+
<button
|
|
81
|
+
class="fr-tag filter-tag"
|
|
82
|
+
data-indicator="{{ indicator.id }}"
|
|
83
|
+
data-dimension="{{ dimension_filters.0.db_name }}"
|
|
84
|
+
data-default="{{ filter.default|yesno:'true,false' }}"
|
|
85
|
+
data-setfromurl="{{ filter.set_from_url|yesno:'true,false' }}"
|
|
86
|
+
aria-pressed="{% if filter.current %}true{% endif %}"
|
|
87
|
+
>
|
|
88
|
+
{{filter.db_name}}
|
|
89
|
+
</button>
|
|
90
|
+
{% endfor %}
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
{% endfor %}
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
96
|
+
<div class="subtheme fr-px-md-4w fr-p-2w">
|
|
97
|
+
<div id="indicator-map"></div>
|
|
98
|
+
</div>
|
|
99
|
+
{% if indicator.flows_db_table_prefix %}
|
|
100
|
+
<div class="subtheme">
|
|
101
|
+
<div class="fr-px-md-4w fr-px-2w fr-py-2w">
|
|
102
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/title.html" with title="Top 10 des flux par origine-destination (diagramme de Sankey)" key="sankey" text="Survolez les flux sur le graphique pour afficher les valeurs. Vous pouvez filtrer selon le mode de déplacement en sélectionnant les filtres disponibles sous le titre du graphique. Précisions : Seuls les flux entre les 10 territoires qui génèrent le plus de flux depuis/vers le territoire sélectionné sont affichés." %}
|
|
103
|
+
<div style="width:100%; height: auto;">
|
|
104
|
+
<div id="sankey-graph"></div>
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
<button
|
|
108
|
+
data-title="Sankey"
|
|
109
|
+
class="fr-btn fr-btn--secondary fr-btn--sm fr-icon-line-chart-line fr-btn--icon-right fr-mx-4w fr-mt-4w fr-mb-4w btn-download">
|
|
110
|
+
<span>Exporter le graphique</span>
|
|
111
|
+
</button>
|
|
112
|
+
</div>
|
|
113
|
+
{% endif %}
|
|
114
|
+
{% if indicator.filters %}
|
|
115
|
+
<div class="subtheme">
|
|
116
|
+
<div class="fr-px-md-4w fr-px-2w fr-py-2w">
|
|
117
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/title.html" with title="Répartition des valeurs de l'indicateur selon ses modalités" key="proportions" text="Survolez le graphique pour afficher les valeurs de l'indicateur pour chaque modalité. Cliquez sur les catégories de la légende pour afficher/masquer des modalités." %}
|
|
118
|
+
<div style="width:100%; height: auto;">
|
|
119
|
+
<canvas id="proportionsChart" aria-describedby="proportions-export-csv"></canvas>
|
|
120
|
+
</div>
|
|
121
|
+
{% include "./components/filters-reminder.html" %}
|
|
122
|
+
</div>
|
|
123
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/chart-buttons.html" with name="Répartition par dimensions" route="proportions" pattern="show" one_indicator=True %}
|
|
124
|
+
</div>
|
|
125
|
+
{% endif %}
|
|
126
|
+
<div class="subtheme">
|
|
127
|
+
<div class="fr-px-md-4w fr-px-2w fr-py-2w">
|
|
128
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/title.html" with title="Top 10 des territoires" key="top10" text="Survolez les graphiques pour afficher les valeurs de l'indicateur pour chaque modalité. Cliquez sur les catégories de la légende pour afficher/masquer des modalités. Précisions : Ce graphique varie selon la maille sélectionnée." %}
|
|
129
|
+
<div style="width:100%; height: auto;">
|
|
130
|
+
<canvas id="top10Chart" aria-describedby="top-10-export-csv"></canvas>
|
|
131
|
+
</div>
|
|
132
|
+
{% include "./components/filters-reminder.html" %}
|
|
133
|
+
</div>
|
|
134
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/chart-buttons.html" with name="Top 10" route="top-10" pattern="show" one_indicator=True %}
|
|
135
|
+
</div>
|
|
136
|
+
<div id="histogramContainer" class="subtheme">
|
|
137
|
+
<div class="fr-px-md-4w fr-px-2w fr-py-2w">
|
|
138
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/title.html" with title="Répartition des territoires selon les valeurs de l'indicateur" key="repartition" text="Le nom des territoires s'affiche au survol ds'il y a moins de 6 territoires. Précisions : Ce graphique varie selon la maille sélectionnée." %}
|
|
139
|
+
<div style="width:100%; height: 400px;">
|
|
140
|
+
<canvas id="histogramChart" aria-describedby="histogram-export-csv"></canvas>
|
|
141
|
+
</div>
|
|
142
|
+
{% include "./components/filters-reminder.html" %}
|
|
143
|
+
</div>
|
|
144
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/chart-buttons.html" with name="Répartition par valeurs" route="histogram" one_indicator=True %}
|
|
145
|
+
</div>
|
|
146
|
+
<div class="subtheme" id="values-table-section">
|
|
147
|
+
<div class="fr-px-md-4w fr-px-2w fr-py-2w">
|
|
148
|
+
<h3 class="fr-mt-4w">Tableau des valeurs de l'indicateur</h3>
|
|
149
|
+
<div class="data-table" data-source="indicator"></div>
|
|
150
|
+
</div>
|
|
151
|
+
</div>
|
|
152
|
+
{% if indicator.flows_db_table_prefix %}
|
|
153
|
+
<div class="subtheme">
|
|
154
|
+
<div class="fr-px-md-4w fr-px-2w fr-py-2w">
|
|
155
|
+
<h3 class="fr-mt-4w">Tableau des flux</h3>
|
|
156
|
+
<div class="data-table" data-source="flows"></div>
|
|
157
|
+
</div>
|
|
158
|
+
</div>
|
|
159
|
+
{% endif %}
|
|
160
|
+
</div>
|
|
161
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/side_panel_geo.html" %}
|
|
162
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/side_panel_methodo.html" %}
|
|
163
|
+
</div>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
{% endblock %}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<div class="fr-col-4 tdbmd-indicator-card__comparisons-col">
|
|
2
|
+
<div class="tdbmd-indicator-card__comparisons-card fr-p-1w">
|
|
3
|
+
<h5 class="tdbmd-indicator-card__comparisons-card-title">{{ title }}</h5>
|
|
4
|
+
<p class="tdbmd-indicator-card__comparisons-card-number delay-spinner">
|
|
5
|
+
<strong class="{{ prefix }}-value">
|
|
6
|
+
<span>{% include "territories_dashboard_lib/website/pages/indicators/components/loader.html" with width=28 %}</span>
|
|
7
|
+
<span class="unite" aria-label="{{indicator.unite_nom_accessible}}">{{indicator.unite}}</span>
|
|
8
|
+
</strong>
|
|
9
|
+
</p>
|
|
10
|
+
<p class="tdbmd-indicator-card__comparisons-card-info" style="margin">
|
|
11
|
+
<span class="{{ prefix }}-name"></span>
|
|
12
|
+
<span class="{{ prefix }}-count"></span>
|
|
13
|
+
</p>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{% load htmlparams %}
|
|
2
|
+
|
|
3
|
+
{% htmlparams %}
|
|
4
|
+
{% htmlparam body %}
|
|
5
|
+
<div class="tdbmd-indicator-card__data fr-mt-5w fr-mb-3w">
|
|
6
|
+
<div class="fr-grid-row fr-grid-row--middle">
|
|
7
|
+
<div class="fr-col-12 fr-grid-row tdbmd-indicator-card__data-container fr-grid-row--middle">
|
|
8
|
+
<p class="main-value tdbmd-indicator-card__data-number delay-spinner">
|
|
9
|
+
<span>{% include "territories_dashboard_lib/website/pages/indicators/components/loader.html" with width=32 %}</span>
|
|
10
|
+
<span class="unite" aria-label="{{indicator.unite_nom_accessible}}">{{indicator.unite}}</span>
|
|
11
|
+
</p>
|
|
12
|
+
</div>
|
|
13
|
+
<div class="fr-col-12">
|
|
14
|
+
<div class="fr-toggle">
|
|
15
|
+
{% if indicator.unite_alternative and indicator.show_alternative %}
|
|
16
|
+
<input
|
|
17
|
+
type="checkbox"
|
|
18
|
+
class="fr-toggle__input toggle-unite"
|
|
19
|
+
aria-label="Modifier l'unité - {{ indicator.title }}"
|
|
20
|
+
aria-describedby="{{indicator.id}}-toggle-unit-messages"
|
|
21
|
+
id="{{indicator.id}}-toggle-unit"
|
|
22
|
+
>
|
|
23
|
+
<label aria-label="{{indicator.unite_alternative_nom_accessible}}" class="fr-toggle__label" for="{{indicator.id}}-toggle-unit">
|
|
24
|
+
{{ indicator.unite_alternative }}
|
|
25
|
+
</label>
|
|
26
|
+
<div
|
|
27
|
+
class="fr-messages-group fr-sr-only"
|
|
28
|
+
id="{{indicator.id}}-toggle-unit-messages"
|
|
29
|
+
aria-live="polite"
|
|
30
|
+
></div>
|
|
31
|
+
{% endif %}
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
<section class="tdbmd-indicator-card__comparisons fr-grid-row fr-grid-row--gutters">
|
|
37
|
+
<h4 class="fr-sr-only">Statistiques</h4>
|
|
38
|
+
{% include "./extremum.html" with title="Minimum" prefix="min" %}
|
|
39
|
+
{% include "./extremum.html" with title="Mediane" prefix="med" %}
|
|
40
|
+
{% include "./extremum.html" with title="Maximum" prefix="max" %}
|
|
41
|
+
</section>
|
|
42
|
+
{% endhtmlparam %}
|
|
43
|
+
|
|
44
|
+
{% htmlparam footer %}
|
|
45
|
+
<section class="fr-accordion tdbmd-indicator-accordion">
|
|
46
|
+
<h4 class="fr-accordion__title">
|
|
47
|
+
<button
|
|
48
|
+
class="fr-accordion__btn"
|
|
49
|
+
aria-expanded="false"
|
|
50
|
+
aria-controls="accordion-{{indicator.id}}"
|
|
51
|
+
aria-label="Historique - {{ indicator.title }}"
|
|
52
|
+
>
|
|
53
|
+
Historique
|
|
54
|
+
</button>
|
|
55
|
+
</h4>
|
|
56
|
+
<div
|
|
57
|
+
class="fr-collapse"
|
|
58
|
+
id="accordion-{{indicator.id}}"
|
|
59
|
+
>
|
|
60
|
+
<div style="height: 300px;">
|
|
61
|
+
<canvas class="history-chart" aria-describedby="{{indicator.id}}values-export-csv"></canvas>
|
|
62
|
+
</div>
|
|
63
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/chart-buttons.html" with name="Historique" route="values" indicator=indicator no_pb=True %}
|
|
64
|
+
</div>
|
|
65
|
+
</section>
|
|
66
|
+
<a
|
|
67
|
+
class="fr-btn fr-btn--tertiary fr-icon-external-link-fill fr-btn--icon-right tdbmd-indicator-btn"
|
|
68
|
+
href="/indicateurs/details/{{indicator.name}}/"
|
|
69
|
+
aria-label="Voir les graphiques avancés - {{ indicator.title }}"
|
|
70
|
+
>
|
|
71
|
+
Voir les graphiques avancés
|
|
72
|
+
</a>
|
|
73
|
+
{% endhtmlparam %}
|
|
74
|
+
|
|
75
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/indicator-card.html" with indicator=indicator %}
|
|
76
|
+
{% endhtmlparams %}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{% extends "territories_dashboard_lib/website/layout/base.html" %}
|
|
2
|
+
|
|
3
|
+
{% load static %}
|
|
4
|
+
{% load other_filters %}
|
|
5
|
+
|
|
6
|
+
{% block page_title %}{{theme.title}}{% endblock %}
|
|
7
|
+
|
|
8
|
+
{% block extra_head %}
|
|
9
|
+
<script defer src="{% static 'territories_dashboard_lib/website/js/chart.js' %}"></script>
|
|
10
|
+
<script defer src="{% static 'territories_dashboard_lib/website/js/chartjs-plugin-datalabels.js' %}"></script>
|
|
11
|
+
<script defer src="{% static 'territories_dashboard_lib/website/js/html2canvas.js' %}"></script>
|
|
12
|
+
{{ params|json_script:"params-js" }}
|
|
13
|
+
{{ sub_themes|json_script:"sub-themes-js" }}
|
|
14
|
+
<script defer type="module" src="{% static 'territories_dashboard_lib/website/js/pages/indicators/theme/page.mjs' %}"></script>
|
|
15
|
+
{% endblock %}
|
|
16
|
+
|
|
17
|
+
{% block main %}
|
|
18
|
+
|
|
19
|
+
<div class="tdbmd-thematics">
|
|
20
|
+
<div class="fr-grid-row">
|
|
21
|
+
<aside class="fr-col-md-3 fr-col-12 fr-pt-md-5w fr-pt-0">
|
|
22
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/themes-nav.html" %}
|
|
23
|
+
</aside>
|
|
24
|
+
<main role="main" class="tdbmd-thematics__content tdbmd-content fr-col-12 fr-col-md-9" id="contenu" tabindex="-1">
|
|
25
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/geo_params.html" %}
|
|
26
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/themes-list.html" %}
|
|
27
|
+
<div>
|
|
28
|
+
<div class="fr-pr-md-4w fr-pl-md-4w fr-pr-2w fr-pl-2w fr-mt-4w">
|
|
29
|
+
<h1>{{ theme.title }}</h1>
|
|
30
|
+
<div class="fr-grid-row">
|
|
31
|
+
<div class="fr-col-12 fr-col-md-6">
|
|
32
|
+
<p class="fr-text--sm fr-mb-0">
|
|
33
|
+
<strong>Objectif</strong>
|
|
34
|
+
</p>
|
|
35
|
+
<p class="fr-text--sm">{{ theme.objectif_theme }}</p>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="fr-col-12 fr-col-md-6">
|
|
38
|
+
<p class="fr-text--sm fr-mb-0">
|
|
39
|
+
<strong>Action(s) visée(s)</strong>
|
|
40
|
+
</p>
|
|
41
|
+
<p class="fr-text--sm">{{ theme.action_theme }}</p>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
{% for sub_theme in sub_themes %}
|
|
46
|
+
<section
|
|
47
|
+
id="{{sub_theme.name}}"
|
|
48
|
+
class="subtheme fr-pr-md-4w fr-pl-md-4w fr-pr-2w fr-pl-2w fr-pt-5w fr-pb-5w"
|
|
49
|
+
>
|
|
50
|
+
<h2>{{ sub_theme.title }}</h2>
|
|
51
|
+
{% for indicator in sub_theme.indicators %}
|
|
52
|
+
{% with indicator.id|stringformat:"i"|add:"-api-urls" as script_name %}
|
|
53
|
+
{{ indicator|indicator_api_urls|json_script:script_name }}
|
|
54
|
+
{% endwith %}
|
|
55
|
+
{% include "./components/indicateur-card.html" with indicator=indicator %}
|
|
56
|
+
{% endfor %}
|
|
57
|
+
</section>
|
|
58
|
+
{% endfor %}
|
|
59
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/side_panel_geo.html" %}
|
|
60
|
+
{% include "territories_dashboard_lib/website/pages/indicators/components/side_panel_methodo.html" %}
|
|
61
|
+
</div>
|
|
62
|
+
</main>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
{% endblock %}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{% extends "territories_dashboard_lib/website/layout/base.html" %}
|
|
2
|
+
{% load static %}
|
|
3
|
+
{% block page_title %}Lexique{% endblock %}
|
|
4
|
+
|
|
5
|
+
{% block main %}
|
|
6
|
+
<main role="main" class="fr-container glossary staticPage fr-pt-md-8w fr-pb-md-10w fr-pt-4w fr-pb-6w" id="contenu" tabindex="-1">
|
|
7
|
+
<h2>Lexique</h2>
|
|
8
|
+
<dl class="definitions">
|
|
9
|
+
{% for item in lexique %}
|
|
10
|
+
<div>
|
|
11
|
+
<dt><strong>{{ item.word }}</strong></dt>
|
|
12
|
+
<dd>{{ item.definition }}</dd>
|
|
13
|
+
</div>
|
|
14
|
+
{% endfor %}
|
|
15
|
+
</dl>
|
|
16
|
+
</main>
|
|
17
|
+
{% endblock %}
|
territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/page.html
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{% extends "territories_dashboard_lib/website/layout/base.html" %}
|
|
2
|
+
|
|
3
|
+
{% load static %}
|
|
4
|
+
|
|
5
|
+
{% block page_title %}Accueil - {{ main_conf.title }}{% endblock %}
|
|
6
|
+
|
|
7
|
+
{% block main %}
|
|
8
|
+
|
|
9
|
+
<main role="main" id="contenu" tabindex="-1" class="fr-container fr-pt-10w fr-pb-10w">
|
|
10
|
+
<h1>{{ landing_page.title }}</h1>
|
|
11
|
+
{{ landing_page.body_html|safe }}
|
|
12
|
+
<a class="fr-btn" href="{{ landing_page.button.href }}">{{ landing_page.button.title }}</a>
|
|
13
|
+
</main>
|
|
14
|
+
{% endblock %}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{% extends "territories_dashboard_lib/website/layout/base.html" %}
|
|
2
|
+
|
|
3
|
+
{% load static %}
|
|
4
|
+
|
|
5
|
+
{% block page_title %}Plan du site{% endblock %}
|
|
6
|
+
|
|
7
|
+
{% block main %}
|
|
8
|
+
<main role="main" class="fr-container fr-pt-md-8w fr-pb-md-10w fr-pt-4w fr-pb-6w" id="contenu" tabindex="-1">
|
|
9
|
+
<h2>Plan du site</h2>
|
|
10
|
+
<ul>
|
|
11
|
+
<li>
|
|
12
|
+
<a href="{% url 'website:landing-page' %}">Accueil</a>
|
|
13
|
+
</li>
|
|
14
|
+
</ul>
|
|
15
|
+
<br/>
|
|
16
|
+
<h3>Thématiques</h3>
|
|
17
|
+
<ul>
|
|
18
|
+
{% for theme in themes %}
|
|
19
|
+
<li>
|
|
20
|
+
<a href="{% url 'website:theme' theme_name=theme.name %}">{{theme.title}}</a>
|
|
21
|
+
</li>
|
|
22
|
+
{% endfor %}
|
|
23
|
+
</ul>
|
|
24
|
+
<br/>
|
|
25
|
+
<h3>Comparaison par thématiques</h3>
|
|
26
|
+
<ul>
|
|
27
|
+
{% for theme in themes %}
|
|
28
|
+
<li>
|
|
29
|
+
<a href="{% url 'website:comparison' theme_name=theme.name %}">{{theme.title}}</a>
|
|
30
|
+
</li>
|
|
31
|
+
{% endfor %}
|
|
32
|
+
</ul>
|
|
33
|
+
<br/>
|
|
34
|
+
<h3>Détails des indicateurs</h3>
|
|
35
|
+
<ul>
|
|
36
|
+
{% for indicator in indicators %}
|
|
37
|
+
<li>
|
|
38
|
+
<a href="{% url 'website:indicator-details' indicator_name=indicator.name %}">{{indicator.title}}</a>
|
|
39
|
+
</li>
|
|
40
|
+
{% endfor %}
|
|
41
|
+
</ul>
|
|
42
|
+
<br/>
|
|
43
|
+
{% if ENABLE_SUPERSET and dashboards %}
|
|
44
|
+
<h3>Portraits de territoires</h3>
|
|
45
|
+
<ul>
|
|
46
|
+
{% for dashboard in dashboards %}
|
|
47
|
+
<li>
|
|
48
|
+
<a href="{% url 'website:superset' dashboard_name=dashboard.short_name %}">{{dashboard.label}}</a>
|
|
49
|
+
</li>
|
|
50
|
+
{% endfor %}
|
|
51
|
+
</ul>
|
|
52
|
+
<br/>
|
|
53
|
+
{% endif %}
|
|
54
|
+
<h3>Autres pages</h3>
|
|
55
|
+
<ul>
|
|
56
|
+
{% for static_page in static_pages %}
|
|
57
|
+
<li>
|
|
58
|
+
<a href="{{ static_page.url }}">{{ static_page.title }}</a>
|
|
59
|
+
</li>
|
|
60
|
+
{% endfor %}
|
|
61
|
+
{% if lexique %}
|
|
62
|
+
<li>
|
|
63
|
+
<a href="{% url 'website:lexique' %}">Lexique</a>
|
|
64
|
+
</li>
|
|
65
|
+
{% endif %}
|
|
66
|
+
<li>
|
|
67
|
+
<a href="{% url 'website:sitemap' %}">Plan du site</a>
|
|
68
|
+
</li>
|
|
69
|
+
</ul>
|
|
70
|
+
</main>
|
|
71
|
+
{% endblock %}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{% extends "territories_dashboard_lib/website/layout/base.html" %}
|
|
2
|
+
|
|
3
|
+
{% load static %}
|
|
4
|
+
|
|
5
|
+
{% block page_title %}{{ static_page.name }}{% endblock %}
|
|
6
|
+
|
|
7
|
+
{% block extra_head%}
|
|
8
|
+
<script defer type="module" src="{% static 'territories_dashboard_lib/website/js/pages/static/page.mjs' %}"></script>
|
|
9
|
+
{% endblock %}
|
|
10
|
+
|
|
11
|
+
{% block main %}
|
|
12
|
+
|
|
13
|
+
<main role="main" id="contenu" tabindex="-1" class="staticPage fr-container fr-pt-10w fr-pb-10w">
|
|
14
|
+
{{ static_page.body_html|safe }}
|
|
15
|
+
</main>
|
|
16
|
+
{% endblock %}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{% extends "territories_dashboard_lib/website/layout/base.html" %}
|
|
2
|
+
|
|
3
|
+
{% load static %}
|
|
4
|
+
|
|
5
|
+
{% block page_title %}{{dashboard.label}}{% endblock %}
|
|
6
|
+
|
|
7
|
+
{% block extra_head%}
|
|
8
|
+
<script src="{% static 'territories_dashboard_lib/website/js/supersetEmbed.js' %}"></script>
|
|
9
|
+
<script>
|
|
10
|
+
const dashboardID = "{{ dashboard.superset_id }}";
|
|
11
|
+
async function fetchGuestToken() {
|
|
12
|
+
const response = await fetch(
|
|
13
|
+
`/api/superset/guest-token/?dashboard=${dashboardID}`,
|
|
14
|
+
);
|
|
15
|
+
if (response.ok) {
|
|
16
|
+
const guestToken = await response.text();
|
|
17
|
+
return guestToken;
|
|
18
|
+
} else {
|
|
19
|
+
throw Error("could not fetch guest token");
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const dashboardUiConfig = {
|
|
24
|
+
hideTitle: false,
|
|
25
|
+
filters: {
|
|
26
|
+
expanded: true,
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
{% if dashboard_filter %}
|
|
31
|
+
{% autoescape off %}
|
|
32
|
+
dashboardUiConfig["urlParams"] = { native_filters: `{{dashboard_filter}}` };
|
|
33
|
+
{% endautoescape %}
|
|
34
|
+
{% endif %}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
document.addEventListener("DOMContentLoaded", () => {
|
|
38
|
+
supersetEmbeddedSdk.embedDashboard({
|
|
39
|
+
id: dashboardID,
|
|
40
|
+
supersetDomain:
|
|
41
|
+
"https://mobilite-durable-tdb.dataviz.din.developpement-durable.gouv.fr",
|
|
42
|
+
mountPoint: document.getElementById("superset-container"),
|
|
43
|
+
fetchGuestToken,
|
|
44
|
+
dashboardUiConfig,
|
|
45
|
+
iframeSandboxExtras: ['allow-top-navigation', 'allow-popups-to-escape-sandbox']
|
|
46
|
+
});
|
|
47
|
+
})
|
|
48
|
+
</script>
|
|
49
|
+
{% endblock %}
|
|
50
|
+
|
|
51
|
+
{% block main %}
|
|
52
|
+
<main role="main" id="contenu" tabindex="-1">
|
|
53
|
+
<div id="superset-container"></div>
|
|
54
|
+
</main>
|
|
55
|
+
{% endblock %}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from django import template
|
|
2
|
+
|
|
3
|
+
register = template.Library()
|
|
4
|
+
|
|
5
|
+
"""
|
|
6
|
+
This tag is used to give some html as argument to an {% include %} tag.
|
|
7
|
+
|
|
8
|
+
For instance:
|
|
9
|
+
|
|
10
|
+
{% htmlparams %}
|
|
11
|
+
{% htmlparam content %}
|
|
12
|
+
<span>click me</span>
|
|
13
|
+
{% endhtmlparam %}
|
|
14
|
+
{% include "website/components/button.html"%}
|
|
15
|
+
{% endhtmlparams %}
|
|
16
|
+
|
|
17
|
+
you have to wrap {% include %} within {% htmlparams %} then you can add {% htmlparam VARIABLE_NAME %} with some html within and use the variable within the component.
|
|
18
|
+
|
|
19
|
+
Included button:
|
|
20
|
+
|
|
21
|
+
<button>
|
|
22
|
+
{{ content }}
|
|
23
|
+
</button>
|
|
24
|
+
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class HtmlParamNode(template.Node):
|
|
29
|
+
def __init__(self, var_name, nodelist):
|
|
30
|
+
self.var_name = var_name
|
|
31
|
+
self.nodelist = nodelist
|
|
32
|
+
|
|
33
|
+
def render(self, context):
|
|
34
|
+
# do not render anything but stores the output in the context
|
|
35
|
+
output = self.nodelist.render(context)
|
|
36
|
+
context[self.var_name] = output
|
|
37
|
+
return ""
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class HtmlParamsNode(template.Node):
|
|
41
|
+
def __init__(self, nodelist):
|
|
42
|
+
self.nodelist = template.NodeList()
|
|
43
|
+
self.paramnodelist = template.NodeList()
|
|
44
|
+
for node in nodelist:
|
|
45
|
+
if isinstance(node, HtmlParamNode):
|
|
46
|
+
self.paramnodelist.append(node)
|
|
47
|
+
else:
|
|
48
|
+
self.nodelist.append(node)
|
|
49
|
+
|
|
50
|
+
def render(self, context):
|
|
51
|
+
with context.push():
|
|
52
|
+
## Render the htmlparam nodes to update the context
|
|
53
|
+
self.paramnodelist.render(context)
|
|
54
|
+
output = self.nodelist.render(context)
|
|
55
|
+
return output
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@register.tag(name="htmlparam")
|
|
59
|
+
def do_htmlparam(parser, token):
|
|
60
|
+
try:
|
|
61
|
+
tag_name, var_name = token.split_contents()
|
|
62
|
+
except ValueError:
|
|
63
|
+
raise template.TemplateSyntaxError(
|
|
64
|
+
"%r tag requires a single argument" % token.contents.split()[0]
|
|
65
|
+
)
|
|
66
|
+
nodelist = parser.parse(("endhtmlparam",))
|
|
67
|
+
parser.delete_first_token()
|
|
68
|
+
return HtmlParamNode(var_name, nodelist)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
@register.tag(name="htmlparams")
|
|
72
|
+
def do_htmlparams(parser, token):
|
|
73
|
+
nodelist = parser.parse(("endhtmlparams",))
|
|
74
|
+
parser.delete_first_token()
|
|
75
|
+
return HtmlParamsNode(nodelist)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from django import template
|
|
2
|
+
from django.urls import reverse
|
|
3
|
+
|
|
4
|
+
register = template.Library()
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@register.filter
|
|
8
|
+
def get_item(dictionary, key):
|
|
9
|
+
return dictionary.get(key)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@register.filter
|
|
13
|
+
def indicator_api_urls(indicator_dict):
|
|
14
|
+
view_names = [
|
|
15
|
+
"download-indicator-methodo",
|
|
16
|
+
"statistics",
|
|
17
|
+
"values",
|
|
18
|
+
"histogram",
|
|
19
|
+
"top-10",
|
|
20
|
+
"details-table",
|
|
21
|
+
"details-table-export",
|
|
22
|
+
"comparison-histogram",
|
|
23
|
+
"proportions",
|
|
24
|
+
]
|
|
25
|
+
return {
|
|
26
|
+
view_name: reverse(
|
|
27
|
+
f"indicators-api:{view_name}", kwargs={"name": indicator_dict["name"]}
|
|
28
|
+
)
|
|
29
|
+
for view_name in view_names
|
|
30
|
+
}
|