diff options
author | Steven Day <steve@mysociety.org> | 2015-06-23 15:57:51 +0100 |
---|---|---|
committer | Steven Day <steve@mysociety.org> | 2015-06-29 12:43:01 +0100 |
commit | 2ab9918c650631e054c44dd23b73451251280b6c (patch) | |
tree | 25b56f8710425d20f208a49a41c8509e537dfd6a /web | |
parent | 62b217c41107247aeb0a631a79829e6b5dfe3f8b (diff) |
Change map pins with category field
When the category dropdown is changed the map pins are re-requested
from the server with the correct category in the URL.
Diffstat (limited to 'web')
-rw-r--r-- | web/js/map-OpenLayers.js | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js index f459459ec..2995c3bd0 100644 --- a/web/js/map-OpenLayers.js +++ b/web/js/map-OpenLayers.js @@ -109,6 +109,12 @@ function fms_markers_resize() { fixmystreet.markers.redraw(); } +function fms_categories_changed() { + // If the category has changed we need to re-fetch markers that match + // the new value + fixmystreet.markers.refresh({force: true}); +} + function fixmystreet_onload() { if ( fixmystreet.area.length ) { for (var i=0; i<fixmystreet.area.length; i++) { @@ -240,6 +246,12 @@ function fixmystreet_onload() { fixmystreet.map.addControl( fixmystreet.select_feature ); fixmystreet.select_feature.activate(); fixmystreet.map.events.register( 'zoomend', null, fms_markers_resize ); + + // If the category filter dropdown exists on the page set up the + // event handlers to populate it and react to it changing + if ($("select#categories").length) { + $("body").on("change", "#categories", fms_categories_changed); + } } else if (fixmystreet.page == 'new') { fixmystreet_activate_drag(); } @@ -397,6 +409,10 @@ $(function(){ fixmystreet.page = 'around'; }); + // Hide the pin filter submit button. Not needed because we'll use JS + // to refresh the map when the filter inputs are changed. + $(".report-list-filters [type=submit]").hide(); + // Vector layers must be added onload as IE sucks if ($.browser.msie) { $(window).load(fixmystreet_onload); @@ -529,8 +545,7 @@ OpenLayers.Format.FixMyStreet = OpenLayers.Class(OpenLayers.Format.JSON, { if (typeof(obj.current_near) != 'undefined' && (current_near = document.getElementById('current_near'))) { current_near.innerHTML = obj.current_near; } - var markers = fms_markers_list( obj.pins, false ); - return markers; + return fms_markers_list( obj.pins, false ); }, CLASS_NAME: "OpenLayers.Format.FixMyStreet" }); |