Skip to content

Commit

Permalink
Big update for 2023 elections: remove/comment code relevant only to t…
Browse files Browse the repository at this point in the history
…he 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
  • Loading branch information
siccovansas committed Jan 31, 2023
1 parent 8ce79ef commit eb6777e
Show file tree
Hide file tree
Showing 41 changed files with 1,960 additions and 826 deletions.
2 changes: 1 addition & 1 deletion app/assets/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
"@fortawesome/free-solid-svg-icons": "^6.0.0",
"bootstrap-filestyle": "1.2.1",
"bootstrap-sass": "3.3.6",
"bootstrap-select": "^1.13.5",
"bootstrap-select": "1.13.5",
"bootstrap-table": "1.19.1",
"cross-env": "^5.2.1",
"fuse.js": "^6.5.3",
Expand Down
1 change: 1 addition & 0 deletions app/assets/scripts/main.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Import external dependencies
import 'jquery';
import 'bootstrap-sass';
import 'bootstrap-select';
import 'bootstrap-table';
import '../node_modules/bootstrap-table/dist/locale/bootstrap-table-nl-NL.min.js';
import '../node_modules/bootstrap-table/dist/extensions/cookie/bootstrap-table-cookie.min.js';
Expand Down
103 changes: 39 additions & 64 deletions app/assets/scripts/routes/map.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,6 @@ export default {
else if (matches[i]['item']['gemeente_naam'] == 'Zuidwest-Friesland') {
gemeente_uri = "Súdwest-Fryslân"
}
// TODO: only needed during 2022GR because of herindeling with Amsterdam, remove for next election
else if (matches[i]['item']['gemeente_naam'] == 'Weesp') {
gemeente_uri = "Amsterdam"
}

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

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

var extra_adresaanduiding = '';
var orange_icon = '';
if (matches[i]['Extra adresaanduiding'].trim()) {
if (matches[i]['Extra adresaanduiding'].toLowerCase().includes('niet open voor algemeen publiek')) {
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>';
orange_icon = '-orange';
} else {
// CODE BELOW WAS ONLY NEEDED IN 2021/2022 DUE TO COVID, UNCOMMENT IF IT IS NEEDED AGAIN
//if (matches[i]['Extra adresaanduiding'].toLowerCase().includes('niet open voor algemeen publiek')) {
// 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>';
// orange_icon = '-orange';
//} else {
extra_adresaanduiding = '<p>' + matches[i]['Extra adresaanduiding'] + '</p>';
}
//}
}

var adres = '';
Expand Down Expand Up @@ -234,19 +230,11 @@ export default {
};

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

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

opinfo_output += '</dl>';
return opinfo_output;
Expand Down Expand Up @@ -277,7 +265,7 @@ export default {
)
};

var dag;
//var dag;

// Apply filters to the map
StembureausApp.filter_map = function (filters) {
Expand Down Expand Up @@ -317,49 +305,37 @@ export default {
StembureausApp.filter_locations = function (filters) {
StembureausApp.filtered_locations = [];

// Filter: dag
// Might be used again if elections last multiple days
//// Filter: dag
StembureausApp.stembureaus.forEach(function (loc) {
var dag = filters['dag'];
if (dag) {
if (dag === '') {
StembureausApp.filtered_locations.push(loc);
} else if (loc['Openingstijden ' + dag + '-03-2022'].split(' tot ')[0].trim()) {
StembureausApp.filtered_locations.push(loc);
}
} else {
// var dag = filters['dag'];
// if (dag) {
// if (dag === '') {
// StembureausApp.filtered_locations.push(loc);
// } else if (loc['Openingstijden ' + dag + '-03-2022'].split(' tot ')[0].trim()) {
// StembureausApp.filtered_locations.push(loc);
// }
// } else {
// When you only view a single location, there is no dag filter as
// all the information is shown on the page
StembureausApp.filtered_locations.push(loc);
}
// }
});

// Filter: openingstijden
var temp_filtered_locations = [];
StembureausApp.filtered_locations.forEach(function (loc) {
var openingstijden = filters['openingstijden'];
var dag = filters['dag'];
if (openingstijden) {
if (openingstijden === '') {
temp_filtered_locations.push(loc);
} else if (openingstijden === 'regulier') {
if (dag) {
if (loc['Openingstijden ' + dag + '-03-2022'] === '2022-03-' + dag + 'T07:30:00 tot 2022-03-' + dag + 'T21:00:00') {
temp_filtered_locations.push(loc);
}
} else {
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') {
temp_filtered_locations.push(loc);
}
if (loc['Openingstijd'] === '2023-03-15T07:30:00' && loc['Sluitingstijd'] === '2023-03-15T21:00:00') {
temp_filtered_locations.push(loc);
}
} else if (openingstijden === 'afwijkend') {
if (dag) {
if (loc['Openingstijden ' + dag + '-03-2022'] !== '2022-03-' + dag + 'T07:30:00 tot 2022-03-' + dag + 'T21:00:00') {
temp_filtered_locations.push(loc);
}
} else {
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') {
temp_filtered_locations.push(loc);
}
if (loc['Openingstijd'] !== '2023-03-15T07:30:00' || loc['Sluitingstijd'] !== '2023-03-15T21:00:00') {
temp_filtered_locations.push(loc);
}
}
} else {
Expand Down Expand Up @@ -449,17 +425,11 @@ export default {
StembureausApp.filtered_locations = temp_filtered_locations;
};

var datums = [
'maandag 14 maart:',
'dinsdag 15 maart:',
'woensdag 16 maart:'
]

// Create the popup which you see when you click on a marker
StembureausApp.getPopup = function(loc, orange_icon) {
// First create the openingstijden HTML
var opinfo_output = '</p><i>Openingstijden</i>';
opinfo_output += create_opinfo(datums, loc);
opinfo_output += create_opinfo(loc);
opinfo_output += '<br><br>';

// Create the final HTML output
Expand Down Expand Up @@ -508,13 +478,14 @@ export default {

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>';

if (loc['Gemeente'] == 'Amsterdam') {
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>'
}
// ONLY RELEVANT FOR GEMEENTERAADSVERKIEZINGEN
//if (loc['Gemeente'] == 'Amsterdam') {
// 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>'
//}

if (loc['Gemeente'] == 'Rotterdam') {
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>'
}
//if (loc['Gemeente'] == 'Rotterdam') {
// 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>'
//}

output += opinfo_output;

Expand Down Expand Up @@ -597,8 +568,10 @@ export default {
if (zoom >= 7 && center.lat > 50 && center.lat < 54 && center.lng > 3 && center.lng < 8) {
StembureausApp.map.addLayer(brt);
chooseLayers.addTo(StembureausApp.map);
StembureausApp.map.setMaxZoom(19);
} else {
StembureausApp.map.addLayer(osm);
StembureausApp.map.setMaxZoom(18);
}

// Show BRT only when zoomed in on European Netherlands, use OSM for
Expand All @@ -610,17 +583,19 @@ export default {
StembureausApp.map.removeLayer(osm);
StembureausApp.map.addLayer(brt);
chooseLayers.addTo(StembureausApp.map);
StembureausApp.map.setMaxZoom(19);
} else {
chooseLayers.remove(StembureausApp.map);
StembureausApp.map.removeLayer(brt);
StembureausApp.map.removeLayer(hwh);
StembureausApp.map.addLayer(osm);
StembureausApp.map.setMaxZoom(18);
}
});

// Initialize the filters
var filters = {
'dag': $('#dag-filter').val(),
//'dag': $('#dag-filter').val(),
'openingstijden': $('#openingstijden-filter').val(),
'toegankelijk': $('.toegankelijk-filter').val(),
'visuele-hulpmiddelen': $('.visuele-hulpmiddelen-filter').val(),
Expand Down Expand Up @@ -654,7 +629,7 @@ export default {

// Apply updates to the map if a filter is clicked
$('.filter').change(function() {
filters['dag'] = $('#dag-filter').val();
//filters['dag'] = $('#dag-filter').val();
filters['openingstijden'] = $('#openingstijden-filter').val();
filters['toegankelijk'] = $('.toegankelijk-filter').val();
filters['visuele-hulpmiddelen'] = $('.visuele-hulpmiddelen-filter').val();
Expand Down
14 changes: 12 additions & 2 deletions app/assets/styles/common/_global.scss
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,22 @@ dl {
}

dt {
width: 150px !important;
width: 180px !important;
}

dd {
width: 120px;
margin-left: 150px !important;
margin-left: 180px !important;
}

.leaflet-popup-content {
dt {
width: 120px !important;
}

dd {
margin-left: 120px !important;
}
}

.awesome-marker {
Expand Down
1 change: 1 addition & 0 deletions app/assets/styles/main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
*/
// @import "~some-node-module";
@import "~bootstrap-sass/assets/stylesheets/_bootstrap.scss";
@import "~bootstrap-select/dist/css/bootstrap-select.min.css";
@import "~bootstrap-table/dist/bootstrap-table.min.css";
@import "~bootstrap-table/dist/extensions/sticky-header/bootstrap-table-sticky-header.min.css";
@import "leaflet";
Expand Down
8 changes: 4 additions & 4 deletions app/assets/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1715,10 +1715,10 @@ [email protected]:
resolved "https://registry.yarnpkg.com/bootstrap-sass/-/bootstrap-sass-3.3.6.tgz#363b0d300e868d3e70134c1a742bb17288444fd1"
integrity sha1-NjsNMA6GjT5wE0wadCuxcohET9E=

bootstrap-select@^1.13.5:
version "1.13.18"
resolved "https://registry.yarnpkg.com/bootstrap-select/-/bootstrap-select-1.13.18.tgz#4557119d58dc1159189977161c803962220e4dda"
integrity sha512-V1IzK4rxBq5FrJtkzSH6RmFLFBsjx50byFbfAf8jYyXROWs7ZpprGjdHeoyq2HSsHyjJhMMwjsQhRoYAfxCGow==
[email protected]:
version "1.13.5"
resolved "https://registry.yarnpkg.com/bootstrap-select/-/bootstrap-select-1.13.5.tgz#12f000b25a95ed642fe371ae9e311d3afbb8c53f"
integrity sha512-1uYsYLB4FvGdwM6qzIfTxp6sP5gDqjPgWNHJztBfYUTIo1GUYG5zzmMVWiJvdxJlsvBXZ9AObmeZdzi0eg2jaA==

[email protected]:
version "1.19.1"
Expand Down
36 changes: 23 additions & 13 deletions app/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,10 @@ def add_new_datastore(resource_id):
"id": "Naam stembureau",
"type": "text"
},
{
"id": "Type stembureau",
"type": "text"
},
{
"id": "Gebruiksdoel van het gebouw",
"type": "text"
Expand Down Expand Up @@ -210,19 +214,19 @@ def add_new_datastore(resource_id):
"type": "float"
},
{
"id": "Openingstijden 14-03-2022",
"type": "text"
"id": "Openingstijd",
"type": "timestamp"
},
{
"id": "Openingstijden 15-03-2022",
"type": "text"
"id": "Sluitingstijd",
"type": "timestamp"
},
{
"id": "Openingstijden 16-03-2022",
"id": "Toegankelijk voor mensen met een lichamelijke beperking",
"type": "text"
},
{
"id": "Toegankelijk voor mensen met een lichamelijke beperking",
"id": "Toegankelijke ov-halte",
"type": "text"
},
{
Expand All @@ -241,6 +245,10 @@ def add_new_datastore(resource_id):
"id": "Gehandicaptentoilet",
"type": "text"
},
{
"id": "Extra toegankelijkheidsinformatie",
"type": "text"
},
{
"id": "Kieskring ID",
"type": "text"
Expand Down Expand Up @@ -664,6 +672,7 @@ def test_datastore_upsert(resource_id):
"CBS gemeentecode": "GM0518",
"Nummer stembureau": "517",
"Naam stembureau": "Stadhuis",
"Type stembureau": "regulier",
"Gebruiksdoel van het gebouw": "kantoor",
"Website locatie": (
"https://www.denhaag.nl/nl/bestuur-en-organisatie/contact-met-"
Expand All @@ -685,21 +694,22 @@ def test_datastore_upsert(resource_id):
"Y": 454909,
"Latitude": 52.0775912,
"Longitude": 4.3166395,
"Openingstijden 14-03-2022": "2022-03-14T07:30:00 tot 2022-03-14T21:00:00",
"Openingstijden 15-03-2022": "2022-03-15T07:30:00 tot 2022-03-15T21:00:00",
"Openingstijden 16-03-2022": "2022-03-16T07:30:00 tot 2022-03-16T21:00:00",
"Openingstijd": "2023-03-15T07:30:00",
"Sluitingstijd": "2023-03-15T21:00:00",
"Toegankelijk voor mensen met een lichamelijke beperking": "ja",
"Toegankelijke ov-halte": "binnen 100 meter, rolstoeltoegankelijk, geleidelijnen",
"Akoestiek": "ja",
"Auditieve hulpmiddelen": "gebarentolk",
"Visuele hulpmiddelen": "stemmal, vrijwilliger/host aanwezig",
"Auditieve hulpmiddelen": "gebarentolk, schrijftolk",
"Visuele hulpmiddelen": "stemmal, soundbox, vrijwilliger/host aanwezig, geleidelijnen",
"Gehandicaptentoilet": "nee",
"Extra toegankelijkheidsinformatie": "prikkelarm stembureau, stembureau is volledig toegankelijk voor mensen met een lichamelijke beperking er is echter geen gehandicaptenparkeerplaats",
"Kieskring ID": "'s-Gravenhage",
"Hoofdstembureau": "Nederland",
"Tellocatie": "ja",
"Contactgegevens gemeente": "Unit Verkiezingen, [email protected] 070-3534488 Gemeente Den Haag Publiekszaken/Unit Verkiezingen Postbus 84008 2508 AA Den Haag",
"Verkiezingswebsite gemeente": "https://www.stembureausindenhaag.nl/",
#"Verkiezingen": "",
"ID": "NLODSGM0518stembureaus20220316009",
"Verkiezingen": "waterschapsverkiezingen voor Delfland",
"ID": "NLODSGM0518stembureaus20230315010",
"UUID": uuid.uuid4().hex
}
ckan.save_records(
Expand Down
Loading

0 comments on commit eb6777e

Please sign in to comment.