mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-09 10:29:49 -04:00
Add map in details to broadcast view
Avoided using `closest` as not supported by IE8-11 https://caniuse.com/#search=closest Used `parentElement` supported by IE9+ https://caniuse.com/#search=parentElement Used `className` as supported by IE9+ https://caniuse.com/#search=className Also rearranged the javascript for maps such that figuring out the polygon array is done first and then the time when we need to have the details component open before closing it again is kept to minimum
This commit is contained in:
@@ -1,19 +1,7 @@
|
||||
<script src="{{ asset_url('javascripts/leaflet.js') }}"></script>
|
||||
<script>
|
||||
var mapElement = document.getElementById('map');
|
||||
mapElement.style.height = Math.max(320, window.innerHeight - mapElement.offsetTop - 100) + 'px';
|
||||
var mymap = L.map(
|
||||
'map',
|
||||
{
|
||||
scrollWheelZoom: false
|
||||
}
|
||||
)
|
||||
var polygons = []
|
||||
|
||||
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
||||
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
|
||||
}).addTo(mymap);
|
||||
|
||||
{% for polygon in broadcast_message.simple_polygons.bleed.as_coordinate_pairs_lat_long %}
|
||||
polygons.push(
|
||||
L.polygon({{polygon}}, {
|
||||
@@ -48,10 +36,39 @@
|
||||
);
|
||||
{% endfor %}
|
||||
|
||||
|
||||
var mapElement = document.getElementById('map');
|
||||
|
||||
// if element is inside a details element then to make the map render correctly we open the details element
|
||||
// and set up the map before closing the details map after
|
||||
grandparent = mapElement.parentElement.parentElement;
|
||||
if (grandparent.className.split(/\s+/).indexOf('govuk-details') > -1) {
|
||||
details = grandparent;
|
||||
details.open = true;
|
||||
}
|
||||
|
||||
mapElement.style.height = Math.max(320, window.innerHeight - mapElement.offsetTop - 100) + 'px';
|
||||
|
||||
var mymap = L.map(
|
||||
'map',
|
||||
{
|
||||
scrollWheelZoom: false
|
||||
}
|
||||
)
|
||||
|
||||
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
||||
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
|
||||
}).addTo(mymap);
|
||||
|
||||
var polygonGroup = L.featureGroup(polygons).addTo(mymap);
|
||||
mymap.fitBounds(
|
||||
polygonGroup.getBounds(),
|
||||
{padding: [1, 1]}
|
||||
);
|
||||
|
||||
// if element is inside a details element then close the details element
|
||||
if (details) {
|
||||
details.open = false;
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user