-
Notifications
You must be signed in to change notification settings - Fork 0
/
procedure.njk
166 lines (158 loc) · 6.55 KB
/
procedure.njk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
---
pagination:
addAllPagesToCollections: true
data: procedures
size: 1
alias: procedure
permalink: "procedure/{{ procedure.reference }}/index.html"
---
{% import "components.njk" as c with context %}
{% extends "parent.njk" %}
{% block title %}{{ procedure.title }}{% endblock %}
{% block head %}
<script defer src="/procedure.js"></script>
{% endblock %}
{% block main %}
<hgroup>
<h2>{{ procedure.title }}</h2>
<subtitle>{{ procedure.status }}</subtitle>
</hgroup>
{% set proc_docs = docs | where('procedure', procedure.reference) %}
{% set doc_refs = proc_docs | map('ref') %}
{% set procedure_votes = votes | where_in('doc', doc_refs) %}
{% set primary_votes = procedure_votes | where_exp('type', 'type != "AMENDMENT"') | where_exp('result', 'result != "LAPSED"') | sort(false, true, 'date') %}
{% set summary = news | where_includes('refs', procedure.reference) | first %}
{% if summary %}
<h3>🎯 Résumé</h3>
<section>
<ul>
{% for fact in summary.facts %}
<li>{{ fact }}</li>
{% endfor %}
</ul>
</section>
{% endif %}
<h3>📌 Votes principaux</h3>
{% for primary in primary_votes %}
{% set final = null %}
<article>
<header>
{{ c.title(primary, procedure) }}
<div style="float: right">{{ c.adopted(primary) }}</div>
</header>
{% if primary.author %}
<i>Proposé par {{ c.authors(primary) }}</i>
<hr>
{% endif %}
{% if primary.votes %}
<p>🇪🇺 Députés européens</p>
<section>{{ c.simplebar(primary.votes) }}</section>
<hr>
<p>🇫🇷 Députés français{% if primary.id %}<a style="float: right" href="/vote/{{ primary.id }}">🗳 Voir le vote</a>{% endif %}</p>
{% if primary.positions %}
{% set final_positions = primary.positions | map_entries('member_id', 'position') %}
{% set final_members = members | current(finals[0].date) %}
<section>{{ c.fullbar(final_positions, final_members) }}</section>
{% elif primary.rcv %}
🔎 Vote introuvable
{% else %}
🤖 Vote électronique
{% endif %}
{% else %}
🖐 Vote à main levée
{% endif %}
<footer>
<span style="float: right">{{ primary.date | date }}</span>
</footer>
</article>
{% endfor %}
<h3>📚 Sources</h3>
<ul>
<li>ℹ️ Procédure <a href="{{ procedure.url | replace('.json', '.do') }}" target="_blank">{{ procedure.reference }}</a></li>
<li>📜 Textes et amendements
<ul>
{% for doc in proc_docs %}
<li><a href="{{ doc.url }}" target="_blank">{{ doc.ref }}</a></li>
{% endfor %}
</ul>
</li>
<li>🗳 Votes
<ul>
{% for vote in procedure_votes | uniq('date') %}
<li><a href="{{ vote.url | replace('.xml', '.html') }}" target="_blank">{{ vote.date | date }}</a></li>
{% endfor %}
</ul>
{% if summary %}<li>🎯 <a href="{{ summary.url }}">Résumé</a>{% endif %}
</ul>
<h3>🗃️ Données</h3>
{% set active_members = members | current(procedure.date) %}
<section class="tabs">
{{ c.tabs(['📓 Amendements', '🧩 Explications', '🗣️ Interventions']) }}
<form>
<fieldset role="group">
<select id="member" onchange="filter(this.value)" aria-label="Filtrer par sujet">
<option selected value="">👥 Filtrer par groupe/parti</option>
{% for group in groups %}
{% set g_members = active_members | where('group', group.code) %}
<optgroup label="{{ group.name }} ({{ group.code }})">
<option value="{{ group.code }},{{ g_members | map('id') | join(',') }}">🇪🇺 Tout le groupe {{ group.name }}</option>
{% for party, p_members in g_members | groupby('party') %}
<option value="{{ group.code }},{{ p_members | map('id') | join(',') }}">🇫🇷 {{ party }}</option>
{% endfor %}
</optgroup>
{% endfor %}
</select>
<input type="reset" onclick="filter('')"/>
</fieldset>
</form>
<section>
{% set amd_votes = procedure_votes | where ('type', 'AMENDMENT') | intsort('amendment') %}
{% for vote in amd_votes %}
{% set amendment = amendments | where('doc', vote.doc) | find('nr', vote.amendment) %}
{% if amendment %}
<article id="{{ vote.amendment }}">
<header>
📝 Amendement n°{{ vote.amendment }}{% if vote.split %} | Partie {{ vote.split }}{% endif %}
<span style="float: right">{{ c.adopted(vote) }}</span>
</header>
{% if vote.split %}
<p>🔜 Vote par division : aperçu bientôt disponible</p>
{% else %}
<div class="hidden">{% if vote.author[0] == 'DEPUTEES' %}{{ amendment.authors }}{% elif vote.author[0] == 'GROUP' %}{{ vote.author[1] }}{% endif %}</div>
{{ c.amendment(amendment) }}
<p><i>Déposé par {{ c.authors(vote, amendment) }}</i></p>
{% endif %}
<p><a href="{{ amendment.url }}">🔗 Voir la source</a></p>
{% if vote.result != 'LAPSED' %}<footer>{{ c.vote(vote) }}</footer>{% endif %}
</article>
{% endif %}
{% endfor %}
<div class="empty">🚫 Aucun amendement</div>
</section>
<section>
{% set proc_exps = explanations | where_in('doc', doc_refs) %}
{% for exp in proc_exps %}
<article>
<div class="hidden">{{ exp.member_id }}</div>
{% set member = active_members | find('id', exp.member_id) %}
<header><b>{{ member.full_name }}</b> | {{ member.party }}</header>
{{ exp.content }}
</article>
{% endfor %}
<div class="empty">🚫 Aucune explication de vote</div>
</section>
<section>
{% set proc_speeches = speeches | where ('procedure', procedure.reference) %}
{% for speech in proc_speeches %}
<article>
<div class="hidden">{{ speech.member_id }}</div>
{% set member = active_members | find('id', speech.member_id) %}
<header><b>{{ member.full_name }}</b> | {{ member.party }}</header>
{% for p in speech.content %}
<p>{{ p }}</p>
{% endfor %}
</article>
{% endfor %}
<div class="empty">🚫 Aucune intervention en plénière</div>
</section>
{% endblock %}