Skip to content

Commit eb6777e

Browse files
committed
Big update for 2023 elections: remove/comment code relevant only to the previous elections (gemeenteraadsverkiezingen 2022); apply changes for Stembureau Open Data Standaard v1.4 (adds fields "Type stembureau", "Toegankelijke ov-halte", "Extra toegankelijkheidsinformatie" and splits "Openingstijden" into "Openingstijd" and "Sluitingstijd" + textual/info changes); change elections from 2022GR to 2023PS/WS/ER/KC; update gemeenten; some fixes
1 parent 8ce79ef commit eb6777e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1960
-826
lines changed

app/assets/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"@fortawesome/free-solid-svg-icons": "^6.0.0",
2020
"bootstrap-filestyle": "1.2.1",
2121
"bootstrap-sass": "3.3.6",
22-
"bootstrap-select": "^1.13.5",
22+
"bootstrap-select": "1.13.5",
2323
"bootstrap-table": "1.19.1",
2424
"cross-env": "^5.2.1",
2525
"fuse.js": "^6.5.3",

app/assets/scripts/main.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Import external dependencies
22
import 'jquery';
33
import 'bootstrap-sass';
4+
import 'bootstrap-select';
45
import 'bootstrap-table';
56
import '../node_modules/bootstrap-table/dist/locale/bootstrap-table-nl-NL.min.js';
67
import '../node_modules/bootstrap-table/dist/extensions/cookie/bootstrap-table-cookie.min.js';

app/assets/scripts/routes/map.js

+39-64
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,6 @@ export default {
5252
else if (matches[i]['item']['gemeente_naam'] == 'Zuidwest-Friesland') {
5353
gemeente_uri = "Súdwest-Fryslân"
5454
}
55-
// TODO: only needed during 2022GR because of herindeling with Amsterdam, remove for next election
56-
else if (matches[i]['item']['gemeente_naam'] == 'Weesp') {
57-
gemeente_uri = "Amsterdam"
58-
}
5955

6056
var target = StembureausApp.links_external ? ' target="_blank" rel="noopener"' : '';
6157
$('#results-search-gemeenten').append($(
@@ -77,17 +73,17 @@ export default {
7773
matches.sort(function (a,b) {return (a['Nummer stembureau'] > b['Nummer stembureau']) ? 1 : ((b['Nummer stembureau'] > a['Nummer stembureau']) ? -1 : 0)});
7874

7975
for (var i=0; i < matches.length; i++) {
80-
var opinfo = matches[i]['Openingstijden 16-03-2022'].split(' tot ');
8176

8277
var extra_adresaanduiding = '';
8378
var orange_icon = '';
8479
if (matches[i]['Extra adresaanduiding'].trim()) {
85-
if (matches[i]['Extra adresaanduiding'].toLowerCase().includes('niet open voor algemeen publiek')) {
86-
extra_adresaanduiding = '<p style="color: #D63E2A"><b>NB: ' + matches[i]['Extra adresaanduiding'] + ' <span style="color: dimgrey"><i class="fa fa-question-circle" data-toggle="popover" data-placement="auto" data-html="true" data-trigger="click" title="<b>Stembureau met beperkte toegang</b>" data-content="Vanwege de risico\'s van de Covid-19 pandemie heeft dit stembureau beperkte toegang. Dat kan bijvoorbeeld handig zijn voor stemlokalen op plaatsen waar extra bescherming gewenst is, bijvoorbeeld in verzorgingshuizen. Hier kan dan alleen worden gestemd door de kiezers die rechtmatig op die locatie mogen verblijven. Omdat het voor andere kiezers dan niet mogelijk is om op de gang van zaken toe te zien, is er in deze stembureaus een onafhankelijke waarnemer aanwezig. Zie Tijdelijke wet verkiezingen COVID-19 art. 4."></i></span></b></p>';
87-
orange_icon = '-orange';
88-
} else {
80+
// CODE BELOW WAS ONLY NEEDED IN 2021/2022 DUE TO COVID, UNCOMMENT IF IT IS NEEDED AGAIN
81+
//if (matches[i]['Extra adresaanduiding'].toLowerCase().includes('niet open voor algemeen publiek')) {
82+
// extra_adresaanduiding = '<p style="color: #D63E2A"><b>NB: ' + matches[i]['Extra adresaanduiding'] + ' <span style="color: dimgrey"><i class="fa fa-question-circle" data-toggle="popover" data-placement="auto" data-html="true" data-trigger="click" title="<b>Stembureau met beperkte toegang</b>" data-content="Vanwege de risico\'s van de Covid-19 pandemie heeft dit stembureau beperkte toegang. Dat kan bijvoorbeeld handig zijn voor stemlokalen op plaatsen waar extra bescherming gewenst is, bijvoorbeeld in verzorgingshuizen. Hier kan dan alleen worden gestemd door de kiezers die rechtmatig op die locatie mogen verblijven. Omdat het voor andere kiezers dan niet mogelijk is om op de gang van zaken toe te zien, is er in deze stembureaus een onafhankelijke waarnemer aanwezig. Zie Tijdelijke wet verkiezingen COVID-19 art. 4."></i></span></b></p>';
83+
// orange_icon = '-orange';
84+
//} else {
8985
extra_adresaanduiding = '<p>' + matches[i]['Extra adresaanduiding'] + '</p>';
90-
}
86+
//}
9187
}
9288

9389
var adres = '';
@@ -234,19 +230,11 @@ export default {
234230
};
235231

236232
// Creates a list of openingstijden
237-
var create_opinfo = function(datums, loc) {
233+
var create_opinfo = function(loc) {
238234
var opinfo_output = '<dl class="dl-horizontal">';
239235

240-
datums.forEach(function(datum) {
241-
var dag = datum.split(' ')[1];
242-
var opinfo = loc['Openingstijden ' + dag + '-03-2022'].split(' tot ');
243-
opinfo_output += '<dt style="text-align: left;">' + datum + '</dt>'
244-
if (opinfo[0].trim()) {
245-
opinfo_output += '<dd style="color: green">' + opinfo[0].split('T')[1].slice(0, 5) + ' &dash; ' + opinfo[1].split('T')[1].slice(0, 5) + '</dd>';
246-
} else {
247-
opinfo_output += '<dd>gesloten</dd>'
248-
}
249-
});
236+
opinfo_output += '<dt style="text-align: left;">woensdag 15 maart</dt>'
237+
opinfo_output += '<dd style="color: green">' + loc['Openingstijd'].split('T')[1].slice(0, 5) + ' &dash; ' + loc['Sluitingstijd'].split('T')[1].slice(0, 5) + '</dd>';
250238

251239
opinfo_output += '</dl>';
252240
return opinfo_output;
@@ -277,7 +265,7 @@ export default {
277265
)
278266
};
279267

280-
var dag;
268+
//var dag;
281269

282270
// Apply filters to the map
283271
StembureausApp.filter_map = function (filters) {
@@ -317,49 +305,37 @@ export default {
317305
StembureausApp.filter_locations = function (filters) {
318306
StembureausApp.filtered_locations = [];
319307

320-
// Filter: dag
308+
// Might be used again if elections last multiple days
309+
//// Filter: dag
321310
StembureausApp.stembureaus.forEach(function (loc) {
322-
var dag = filters['dag'];
323-
if (dag) {
324-
if (dag === '') {
325-
StembureausApp.filtered_locations.push(loc);
326-
} else if (loc['Openingstijden ' + dag + '-03-2022'].split(' tot ')[0].trim()) {
327-
StembureausApp.filtered_locations.push(loc);
328-
}
329-
} else {
311+
// var dag = filters['dag'];
312+
// if (dag) {
313+
// if (dag === '') {
314+
// StembureausApp.filtered_locations.push(loc);
315+
// } else if (loc['Openingstijden ' + dag + '-03-2022'].split(' tot ')[0].trim()) {
316+
// StembureausApp.filtered_locations.push(loc);
317+
// }
318+
// } else {
330319
// When you only view a single location, there is no dag filter as
331320
// all the information is shown on the page
332321
StembureausApp.filtered_locations.push(loc);
333-
}
322+
// }
334323
});
335324

336325
// Filter: openingstijden
337326
var temp_filtered_locations = [];
338327
StembureausApp.filtered_locations.forEach(function (loc) {
339328
var openingstijden = filters['openingstijden'];
340-
var dag = filters['dag'];
341329
if (openingstijden) {
342330
if (openingstijden === '') {
343331
temp_filtered_locations.push(loc);
344332
} else if (openingstijden === 'regulier') {
345-
if (dag) {
346-
if (loc['Openingstijden ' + dag + '-03-2022'] === '2022-03-' + dag + 'T07:30:00 tot 2022-03-' + dag + 'T21:00:00') {
347-
temp_filtered_locations.push(loc);
348-
}
349-
} else {
350-
if (loc['Openingstijden 14-03-2022'] !== '' && loc['Openingstijden 14-03-2022'] === '2022-03-14T07:30:00 tot 2022-03-14T21:00:00' || loc['Openingstijden 15-03-2022'] !== '' && loc['Openingstijden 15-03-2022'] === '2022-03-15T07:30:00 tot 2022-03-15T21:00:00' || loc['Openingstijden 16-03-2022'] !== '' && loc['Openingstijden 16-03-2022'] === '2022-03-16T07:30:00 tot 2022-03-16T21:00:00') {
351-
temp_filtered_locations.push(loc);
352-
}
333+
if (loc['Openingstijd'] === '2023-03-15T07:30:00' && loc['Sluitingstijd'] === '2023-03-15T21:00:00') {
334+
temp_filtered_locations.push(loc);
353335
}
354336
} else if (openingstijden === 'afwijkend') {
355-
if (dag) {
356-
if (loc['Openingstijden ' + dag + '-03-2022'] !== '2022-03-' + dag + 'T07:30:00 tot 2022-03-' + dag + 'T21:00:00') {
357-
temp_filtered_locations.push(loc);
358-
}
359-
} else {
360-
if (loc['Openingstijden 14-03-2022'] !== '' && loc['Openingstijden 14-03-2022'] !== '2022-03-14T07:30:00 tot 2022-03-14T21:00:00' || loc['Openingstijden 15-03-2022'] !== '' && loc['Openingstijden 15-03-2022'] !== '2022-03-15T07:30:00 tot 2022-03-15T21:00:00' || loc['Openingstijden 16-03-2022'] !== '' && loc['Openingstijden 16-03-2022'] !== '2022-03-16T07:30:00 tot 2022-03-16T21:00:00') {
361-
temp_filtered_locations.push(loc);
362-
}
337+
if (loc['Openingstijd'] !== '2023-03-15T07:30:00' || loc['Sluitingstijd'] !== '2023-03-15T21:00:00') {
338+
temp_filtered_locations.push(loc);
363339
}
364340
}
365341
} else {
@@ -449,17 +425,11 @@ export default {
449425
StembureausApp.filtered_locations = temp_filtered_locations;
450426
};
451427

452-
var datums = [
453-
'maandag 14 maart:',
454-
'dinsdag 15 maart:',
455-
'woensdag 16 maart:'
456-
]
457-
458428
// Create the popup which you see when you click on a marker
459429
StembureausApp.getPopup = function(loc, orange_icon) {
460430
// First create the openingstijden HTML
461431
var opinfo_output = '</p><i>Openingstijden</i>';
462-
opinfo_output += create_opinfo(datums, loc);
432+
opinfo_output += create_opinfo(loc);
463433
opinfo_output += '<br><br>';
464434

465435
// Create the final HTML output
@@ -508,13 +478,14 @@ export default {
508478

509479
output += '<br><a href="https://geohack.toolforge.org/geohack.php?language=en&params=' + loc['Latitude'] + '_N_' + loc['Longitude'] + '_E_type:landmark&pagename=Stembureau ' + loc['Naam stembureau'] + '" target="_blank" rel="noopener">route (via externe dienst)</a>';
510480

511-
if (loc['Gemeente'] == 'Amsterdam') {
512-
output += '<br><br><button class="btn btn-default btn-xs" type="button" data-toggle="collapse" data-target="#collapseFilter-' + loc['UUID'] + '" aria-expanded="false" aria-controls="collapseFilter-' + loc['UUID'] + '">Info over commissieverkiezingen</button><div class="collapse" id="collapseFilter-' + loc['UUID'] + '">NB: tijdens de gemeenteraadsverkiezingen zijn er in Amsterdam ook commissieverkiezingen, daarvoor moet u stemmen in een stembureau in het stadsdeel of stadsgebied dat op uw stempas staat.<br></div>'
513-
}
481+
// ONLY RELEVANT FOR GEMEENTERAADSVERKIEZINGEN
482+
//if (loc['Gemeente'] == 'Amsterdam') {
483+
// output += '<br><br><button class="btn btn-default btn-xs" type="button" data-toggle="collapse" data-target="#collapseFilter-' + loc['UUID'] + '" aria-expanded="false" aria-controls="collapseFilter-' + loc['UUID'] + '">Info over commissieverkiezingen</button><div class="collapse" id="collapseFilter-' + loc['UUID'] + '">NB: tijdens de gemeenteraadsverkiezingen zijn er in Amsterdam ook commissieverkiezingen, daarvoor moet u stemmen in een stembureau in het stadsdeel of stadsgebied dat op uw stempas staat.<br></div>'
484+
//}
514485

515-
if (loc['Gemeente'] == 'Rotterdam') {
516-
output += '<br><br><button class="btn btn-default btn-xs" type="button" data-toggle="collapse" data-target="#collapseFilter-' + loc['UUID'] + '" aria-expanded="false" aria-controls="collapseFilter-' + loc['UUID'] + '">Info over wijkraadverkiezingen</button><div class="collapse" id="collapseFilter-' + loc['UUID'] + '">NB: tijdens de gemeenteraadsverkiezingen zijn er in Rotterdam ook wijkraadverkiezingen, daarvoor moet u stemmen in een stembureau in de wijkraad die op uw stempas staat.<br></div>'
517-
}
486+
//if (loc['Gemeente'] == 'Rotterdam') {
487+
// output += '<br><br><button class="btn btn-default btn-xs" type="button" data-toggle="collapse" data-target="#collapseFilter-' + loc['UUID'] + '" aria-expanded="false" aria-controls="collapseFilter-' + loc['UUID'] + '">Info over wijkraadverkiezingen</button><div class="collapse" id="collapseFilter-' + loc['UUID'] + '">NB: tijdens de gemeenteraadsverkiezingen zijn er in Rotterdam ook wijkraadverkiezingen, daarvoor moet u stemmen in een stembureau in de wijkraad die op uw stempas staat.<br></div>'
488+
//}
518489

519490
output += opinfo_output;
520491

@@ -597,8 +568,10 @@ export default {
597568
if (zoom >= 7 && center.lat > 50 && center.lat < 54 && center.lng > 3 && center.lng < 8) {
598569
StembureausApp.map.addLayer(brt);
599570
chooseLayers.addTo(StembureausApp.map);
571+
StembureausApp.map.setMaxZoom(19);
600572
} else {
601573
StembureausApp.map.addLayer(osm);
574+
StembureausApp.map.setMaxZoom(18);
602575
}
603576

604577
// Show BRT only when zoomed in on European Netherlands, use OSM for
@@ -610,17 +583,19 @@ export default {
610583
StembureausApp.map.removeLayer(osm);
611584
StembureausApp.map.addLayer(brt);
612585
chooseLayers.addTo(StembureausApp.map);
586+
StembureausApp.map.setMaxZoom(19);
613587
} else {
614588
chooseLayers.remove(StembureausApp.map);
615589
StembureausApp.map.removeLayer(brt);
616590
StembureausApp.map.removeLayer(hwh);
617591
StembureausApp.map.addLayer(osm);
592+
StembureausApp.map.setMaxZoom(18);
618593
}
619594
});
620595

621596
// Initialize the filters
622597
var filters = {
623-
'dag': $('#dag-filter').val(),
598+
//'dag': $('#dag-filter').val(),
624599
'openingstijden': $('#openingstijden-filter').val(),
625600
'toegankelijk': $('.toegankelijk-filter').val(),
626601
'visuele-hulpmiddelen': $('.visuele-hulpmiddelen-filter').val(),
@@ -654,7 +629,7 @@ export default {
654629

655630
// Apply updates to the map if a filter is clicked
656631
$('.filter').change(function() {
657-
filters['dag'] = $('#dag-filter').val();
632+
//filters['dag'] = $('#dag-filter').val();
658633
filters['openingstijden'] = $('#openingstijden-filter').val();
659634
filters['toegankelijk'] = $('.toegankelijk-filter').val();
660635
filters['visuele-hulpmiddelen'] = $('.visuele-hulpmiddelen-filter').val();

app/assets/styles/common/_global.scss

+12-2
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,22 @@ dl {
112112
}
113113

114114
dt {
115-
width: 150px !important;
115+
width: 180px !important;
116116
}
117117

118118
dd {
119119
width: 120px;
120-
margin-left: 150px !important;
120+
margin-left: 180px !important;
121+
}
122+
123+
.leaflet-popup-content {
124+
dt {
125+
width: 120px !important;
126+
}
127+
128+
dd {
129+
margin-left: 120px !important;
130+
}
121131
}
122132

123133
.awesome-marker {

app/assets/styles/main.scss

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
*/
99
// @import "~some-node-module";
1010
@import "~bootstrap-sass/assets/stylesheets/_bootstrap.scss";
11+
@import "~bootstrap-select/dist/css/bootstrap-select.min.css";
1112
@import "~bootstrap-table/dist/bootstrap-table.min.css";
1213
@import "~bootstrap-table/dist/extensions/sticky-header/bootstrap-table-sticky-header.min.css";
1314
@import "leaflet";

app/assets/yarn.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -1715,10 +1715,10 @@ [email protected]:
17151715
resolved "https://registry.yarnpkg.com/bootstrap-sass/-/bootstrap-sass-3.3.6.tgz#363b0d300e868d3e70134c1a742bb17288444fd1"
17161716
integrity sha1-NjsNMA6GjT5wE0wadCuxcohET9E=
17171717

1718-
bootstrap-select@^1.13.5:
1719-
version "1.13.18"
1720-
resolved "https://registry.yarnpkg.com/bootstrap-select/-/bootstrap-select-1.13.18.tgz#4557119d58dc1159189977161c803962220e4dda"
1721-
integrity sha512-V1IzK4rxBq5FrJtkzSH6RmFLFBsjx50byFbfAf8jYyXROWs7ZpprGjdHeoyq2HSsHyjJhMMwjsQhRoYAfxCGow==
1718+
1719+
version "1.13.5"
1720+
resolved "https://registry.yarnpkg.com/bootstrap-select/-/bootstrap-select-1.13.5.tgz#12f000b25a95ed642fe371ae9e311d3afbb8c53f"
1721+
integrity sha512-1uYsYLB4FvGdwM6qzIfTxp6sP5gDqjPgWNHJztBfYUTIo1GUYG5zzmMVWiJvdxJlsvBXZ9AObmeZdzi0eg2jaA==
17221722

17231723
17241724
version "1.19.1"

app/cli.py

+23-13
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,10 @@ def add_new_datastore(resource_id):
137137
"id": "Naam stembureau",
138138
"type": "text"
139139
},
140+
{
141+
"id": "Type stembureau",
142+
"type": "text"
143+
},
140144
{
141145
"id": "Gebruiksdoel van het gebouw",
142146
"type": "text"
@@ -210,19 +214,19 @@ def add_new_datastore(resource_id):
210214
"type": "float"
211215
},
212216
{
213-
"id": "Openingstijden 14-03-2022",
214-
"type": "text"
217+
"id": "Openingstijd",
218+
"type": "timestamp"
215219
},
216220
{
217-
"id": "Openingstijden 15-03-2022",
218-
"type": "text"
221+
"id": "Sluitingstijd",
222+
"type": "timestamp"
219223
},
220224
{
221-
"id": "Openingstijden 16-03-2022",
225+
"id": "Toegankelijk voor mensen met een lichamelijke beperking",
222226
"type": "text"
223227
},
224228
{
225-
"id": "Toegankelijk voor mensen met een lichamelijke beperking",
229+
"id": "Toegankelijke ov-halte",
226230
"type": "text"
227231
},
228232
{
@@ -241,6 +245,10 @@ def add_new_datastore(resource_id):
241245
"id": "Gehandicaptentoilet",
242246
"type": "text"
243247
},
248+
{
249+
"id": "Extra toegankelijkheidsinformatie",
250+
"type": "text"
251+
},
244252
{
245253
"id": "Kieskring ID",
246254
"type": "text"
@@ -664,6 +672,7 @@ def test_datastore_upsert(resource_id):
664672
"CBS gemeentecode": "GM0518",
665673
"Nummer stembureau": "517",
666674
"Naam stembureau": "Stadhuis",
675+
"Type stembureau": "regulier",
667676
"Gebruiksdoel van het gebouw": "kantoor",
668677
"Website locatie": (
669678
"https://www.denhaag.nl/nl/bestuur-en-organisatie/contact-met-"
@@ -685,21 +694,22 @@ def test_datastore_upsert(resource_id):
685694
"Y": 454909,
686695
"Latitude": 52.0775912,
687696
"Longitude": 4.3166395,
688-
"Openingstijden 14-03-2022": "2022-03-14T07:30:00 tot 2022-03-14T21:00:00",
689-
"Openingstijden 15-03-2022": "2022-03-15T07:30:00 tot 2022-03-15T21:00:00",
690-
"Openingstijden 16-03-2022": "2022-03-16T07:30:00 tot 2022-03-16T21:00:00",
697+
"Openingstijd": "2023-03-15T07:30:00",
698+
"Sluitingstijd": "2023-03-15T21:00:00",
691699
"Toegankelijk voor mensen met een lichamelijke beperking": "ja",
700+
"Toegankelijke ov-halte": "binnen 100 meter, rolstoeltoegankelijk, geleidelijnen",
692701
"Akoestiek": "ja",
693-
"Auditieve hulpmiddelen": "gebarentolk",
694-
"Visuele hulpmiddelen": "stemmal, vrijwilliger/host aanwezig",
702+
"Auditieve hulpmiddelen": "gebarentolk, schrijftolk",
703+
"Visuele hulpmiddelen": "stemmal, soundbox, vrijwilliger/host aanwezig, geleidelijnen",
695704
"Gehandicaptentoilet": "nee",
705+
"Extra toegankelijkheidsinformatie": "prikkelarm stembureau, stembureau is volledig toegankelijk voor mensen met een lichamelijke beperking er is echter geen gehandicaptenparkeerplaats",
696706
"Kieskring ID": "'s-Gravenhage",
697707
"Hoofdstembureau": "Nederland",
698708
"Tellocatie": "ja",
699709
"Contactgegevens gemeente": "Unit Verkiezingen, [email protected] 070-3534488 Gemeente Den Haag Publiekszaken/Unit Verkiezingen Postbus 84008 2508 AA Den Haag",
700710
"Verkiezingswebsite gemeente": "https://www.stembureausindenhaag.nl/",
701-
#"Verkiezingen": "",
702-
"ID": "NLODSGM0518stembureaus20220316009",
711+
"Verkiezingen": "waterschapsverkiezingen voor Delfland",
712+
"ID": "NLODSGM0518stembureaus20230315010",
703713
"UUID": uuid.uuid4().hex
704714
}
705715
ckan.save_records(

0 commit comments

Comments
 (0)