aboutsummaryrefslogtreecommitdiffstats
path: root/web/cobrands/bromley/js.js
diff options
context:
space:
mode:
Diffstat (limited to 'web/cobrands/bromley/js.js')
-rw-r--r--web/cobrands/bromley/js.js75
1 files changed, 75 insertions, 0 deletions
diff --git a/web/cobrands/bromley/js.js b/web/cobrands/bromley/js.js
new file mode 100644
index 000000000..8ff314189
--- /dev/null
+++ b/web/cobrands/bromley/js.js
@@ -0,0 +1,75 @@
+if (window.Heatmap) {
+ // We do want heatmap page to run on load... Bit cheeky
+ OpenLayers.Strategy.FixMyStreetNoLoad = OpenLayers.Strategy.FixMyStreet;
+ OpenLayers.Strategy.FixMyStreetHeatmap = OpenLayers.Class(OpenLayers.Strategy.FixMyStreet, {
+ // Same as update, but doesn't check layer visibility (as running when markers invisible)
+ update: function(options) {
+ var mapBounds = this.getMapBounds();
+ if (mapBounds !== null && ((options && options.force) ||
+ (this.layer.calculateInRange() && this.invalidBounds(mapBounds)))) {
+ this.calculateBounds(mapBounds);
+ this.resolution = this.layer.map.getResolution();
+ this.triggerRead(options);
+ }
+ },
+ CLASS_NAME: 'OpenLayers.Strategy.FixMyStreetHeatmap'
+ });
+}
+
+fixmystreet.protocol_params.wards = 'wards';
+fixmystreet.protocol_params.start_date = 'start_date';
+fixmystreet.protocol_params.end_date = 'end_date';
+
+$(function(){
+ if (!window.Heatmap) {
+ return;
+ }
+
+ var heat_layer = new Heatmap.Layer("Heatmap");
+ heat_layer.setOpacity(0.7);
+ heat_layer.setVisibility(false);
+
+ var s = new OpenLayers.Strategy.FixMyStreetHeatmap();
+ s.setLayer(heat_layer);
+ s.activate();
+ // Now it's listening on heat layer, set it to update markers layer
+ s.layer = fixmystreet.markers;
+
+ function create_heat_layer() {
+ heat_layer.points = [];
+ for (var i = 0; i < fixmystreet.markers.features.length; i++) {
+ var m = fixmystreet.markers.features[i];
+ var ll = new OpenLayers.LonLat(m.geometry.x, m.geometry.y);
+ heat_layer.addSource(new Heatmap.Source(ll));
+ }
+ heat_layer.redraw();
+ }
+
+ fixmystreet.markers.events.register('loadend', null, create_heat_layer);
+ create_heat_layer();
+ fixmystreet.map.addLayer(heat_layer);
+
+ $('#heatmap_yes').on('click', function() {
+ fixmystreet.markers.setVisibility(false);
+ heat_layer.setVisibility(true);
+ });
+
+ $('#heatmap_no').on('click', function() {
+ heat_layer.setVisibility(false);
+ fixmystreet.markers.setVisibility(true);
+ });
+
+ $('#sort').closest('.report-list-filters').hide();
+
+ $("#wards, #start_date, #end_date").on("change.filters", function() {
+ // If the category or status has changed we need to re-fetch map markers
+ fixmystreet.markers.events.triggerEvent("refresh", {force: true});
+ });
+ $("#filter_categories, #statuses").on("change.filters", function() {
+ if (!fixmystreet.markers.getVisibility()) {
+ // If not visible, still want to trigger change for heatmap
+ fixmystreet.markers.events.triggerEvent("refresh", {force: true});
+ }
+ });
+
+});