aboutsummaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/cobrands/bexley/js.js39
-rw-r--r--web/cobrands/bristol/js.js24
-rw-r--r--web/cobrands/fixmystreet-uk-councils/roadworks.js49
-rw-r--r--web/cobrands/fixmystreet/assets.js93
-rw-r--r--web/cobrands/westminster/assets.js3
5 files changed, 145 insertions, 63 deletions
diff --git a/web/cobrands/bexley/js.js b/web/cobrands/bexley/js.js
index d0f2e8963..e0d87d66d 100644
--- a/web/cobrands/bexley/js.js
+++ b/web/cobrands/bexley/js.js
@@ -62,20 +62,23 @@ var labeled_defaults = $.extend(true, {}, defaults, {
}
});
-fixmystreet.assets.add(defaults, {
+var road_defaults = $.extend(true, {}, defaults, {
+ stylemap: fixmystreet.assets.stylemap_invisible,
+ always_visible: true,
+ non_interactive: true
+});
+
+fixmystreet.assets.add(road_defaults, {
http_options: {
params: {
TYPENAME: "Streets",
}
},
- always_visible: true,
- non_interactive: true,
nearest_radius: 100,
usrn: {
attribute: 'NSG_REF',
field: 'NSGRef'
- },
- stylemap: fixmystreet.assets.stylemap_invisible
+ }
});
fixmystreet.assets.add(labeled_defaults, {
@@ -111,5 +114,31 @@ fixmystreet.assets.add(defaults, {
asset_item: 'public toilet'
});
+fixmystreet.assets.add(road_defaults, {
+ http_options: {
+ url: "https://tilma.mysociety.org/mapserver/tfl",
+ params: {
+ TYPENAME: "RedRoutes"
+ }
+ },
+ road: true,
+ all_categories: true,
+ actions: {
+ found: function(layer, feature) {
+ var category = $('select#form_category').val(),
+ relevant = (category !== 'Street cleaning');
+ if (!fixmystreet.assets.selectedFeature() && relevant) {
+ fixmystreet.body_overrides.only_send('TfL');
+ $('#category_meta').empty();
+ } else {
+ fixmystreet.body_overrides.remove_only_send();
+ }
+ },
+ not_found: function(layer) {
+ fixmystreet.body_overrides.remove_only_send();
+ }
+ }
+});
+
})();
diff --git a/web/cobrands/bristol/js.js b/web/cobrands/bristol/js.js
new file mode 100644
index 000000000..c2431607f
--- /dev/null
+++ b/web/cobrands/bristol/js.js
@@ -0,0 +1,24 @@
+(function(){
+
+if (!fixmystreet.maps) {
+ return;
+}
+
+var org_id = '1015';
+var body = "Bristol City Council";
+fixmystreet.assets.add(fixmystreet.roadworks.layer_future, {
+ http_options: { params: { organisation_id: org_id } },
+ body: body
+});
+fixmystreet.assets.add(fixmystreet.roadworks.layer_planned, {
+ http_options: { params: { organisation_id: org_id } },
+ body: body
+});
+
+fixmystreet.roadworks.config = {
+ summary_heading_text: 'Location',
+ extra_dates_text: '<small>Please note that dates are updated by the contractor carrying out the works and the finish date may be incorrect in cases of unauthorised or overrunning works</small>',
+ skip_delays: true
+};
+
+})();
diff --git a/web/cobrands/fixmystreet-uk-councils/roadworks.js b/web/cobrands/fixmystreet-uk-councils/roadworks.js
index 083f669c8..f4da4c310 100644
--- a/web/cobrands/fixmystreet-uk-councils/roadworks.js
+++ b/web/cobrands/fixmystreet-uk-councils/roadworks.js
@@ -186,33 +186,38 @@ fixmystreet.roadworks.display_message = function(feature) {
desc = attr.works_desc.replace(/\\n/g, '\n');
var config = this.config,
+ summary_heading_text = config.summary_heading_text || 'Summary',
tag_top = config.tag_top || 'p',
colon = config.colon ? ':' : '';
- var $msg = $('<div class="js-roadworks-message js-roadworks-message-' + feature.layer.id + ' box-warning"><' + tag_top + '>Roadworks are scheduled near this location, so you may not need to report your issue.</' + tag_top + '></div>');
- var $dl = $("<dl></dl>").appendTo($msg);
- $dl.append("<dt>Dates" + colon + "</dt>");
- $dl.append($("<dd></dd>").text(start + " until " + end));
- $dl.append("<dt>Summary" + colon + "</dt>");
- var $summary = $("<dd></dd>").appendTo($dl);
- tooltip.split("\n").forEach(function(para) {
- if (para.match(/^(\d{2}\s+\w{3}\s+(\d{2}:\d{2}\s+)?\d{4}( - )?){2}/)) {
- // skip showing the date again
- return;
- }
- if (config.skip_delays && para.match(/^delays/)) {
- // skip showing traffic delay information
- return;
- }
- $summary.append(para).append("<br />");
- });
- if (desc) {
- $dl.append("<dt>Description" + colon + "</dt>");
- $dl.append($("<dd></dd>").text(desc));
+ var $msg = $('<div class="js-roadworks-message js-roadworks-message-' + feature.layer.id + ' box-warning"><' + tag_top + '>Roadworks are scheduled near this location, so you may not need to report your issue.</' + tag_top + '></div>');
+ var $dl = $("<dl></dl>").appendTo($msg);
+ $dl.append("<dt>Dates" + colon + "</dt>");
+ var $dates = $("<dd></dd>").appendTo($dl);
+ $dates.text(start + " until " + end);
+ if (config.extra_dates_text) {
+ $dates.append('<br>' + config.extra_dates_text);
+ }
+ $dl.append("<dt>" + summary_heading_text + colon + "</dt>");
+ var $summary = $("<dd></dd>").appendTo($dl);
+ tooltip.split("\n").forEach(function(para) {
+ if (para.match(/^(\d{2}\s+\w{3}\s+(\d{2}:\d{2}\s+)?\d{4}( - )?){2}/)) {
+ // skip showing the date again
+ return;
}
- if (config.text_after) {
- $dl.append(config.text_after);
+ if (config.skip_delays && para.match(/^delays/)) {
+ // skip showing traffic delay information
+ return;
}
+ $summary.append(para).append("<br />");
+ });
+ if (desc) {
+ $dl.append("<dt>Description" + colon + "</dt>");
+ $dl.append($("<dd></dd>").text(desc));
+ }
+ if (config.text_after) {
+ $dl.append(config.text_after);
+ }
$msg.prependTo('#js-post-category-messages');
};
diff --git a/web/cobrands/fixmystreet/assets.js b/web/cobrands/fixmystreet/assets.js
index 5a25cc128..c30fa2b5e 100644
--- a/web/cobrands/fixmystreet/assets.js
+++ b/web/cobrands/fixmystreet/assets.js
@@ -275,8 +275,9 @@ function init_asset_layer(layer, pins_layer) {
layer.fixmystreet.fault_layer.setZIndex(layer.getZIndex()-1);
}
- if (fixmystreet.page == 'new' && (layer.fixmystreet.usrn || layer.fixmystreet.road)) {
- // If the user visits /report/new directly and doesn't change the pin
+ if (layer.fixmystreet.usrn || layer.fixmystreet.road) {
+ // If an asset layer only loads once a category is selected, or if the
+ // user visits /report/new directly and doesn't change the pin
// location, then the assets:selected/maps:update_pin events are never
// fired and USRN's checkFeature is never called. This results in a
// report whose location was never looked up against the USRN layer,
@@ -866,6 +867,19 @@ $(function() {
fixmystreet.assets.init();
});
+OpenLayers.Geometry.MultiPolygon.prototype.containsPoint = function(point) {
+ var numPolygons = this.components.length;
+ var contained = false;
+ for(var i=0; i<numPolygons; ++i) {
+ polygon = this.components[i].containsPoint(point);
+ if (polygon) {
+ contained = polygon;
+ break;
+ }
+ }
+ return contained;
+};
+
OpenLayers.Layer.Vector.prototype.getFeatureAtPoint = function(point) {
for (var i = 0; i < this.features.length; i++) {
var feature = this.features[i];
@@ -1088,18 +1102,34 @@ fixmystreet.message_controller = (function() {
return false;
}
- // make sure we fire the code to check if an asset is selected if
- // we change options in the Highways England message
- $(fixmystreet).on('report_new:highways_change', function() {
- if (fixmystreet.body_overrides.get_only_send() === 'Highways England') {
- $('#' + stopperId).remove(); // Get rid of any stopper message
- responsibility_off(); // Will also reenable form
+ function is_matching_stopper(stopper, i) {
+ var only_send = fixmystreet.body_overrides.get_only_send();
+ var body = $('#form_category').data('body');
+
+ if (OpenLayers.Util.indexOf(ignored_bodies, body) > -1) {
+ return false;
+ }
+
+ var category = $('#form_category').val();
+ if (category != stopper.category) {
+ return false;
+ }
+ if (only_send == 'TfL') {
+ return false;
+ }
+
+ if (stopper.answers) {
+ var answer = $('#form_' + stopper.code).val();
+ if (OpenLayers.Util.indexOf(stopper.answers, answer) > -1) {
+ return true;
+ }
+ return false;
} else {
- $(fixmystreet).trigger('report_new:category_change');
+ return true;
}
- });
+ }
- $(fixmystreet).on('report_new:category_change', function() {
+ function check_for_stopper() {
var only_send = fixmystreet.body_overrides.get_only_send();
if (only_send == 'Highways England') {
// If we're sending to Highways England, this message doesn't matter
@@ -1107,31 +1137,7 @@ fixmystreet.message_controller = (function() {
}
var $id = $('#' + stopperId);
- var body = $('#form_category').data('body');
- var matching = $.grep(stoppers, function(stopper, i) {
- if (OpenLayers.Util.indexOf(ignored_bodies, body) > -1) {
- return false;
- }
-
- var category = $('#form_category').val();
- if (category != stopper.category) {
- return false;
- }
- if (only_send == 'TfL') {
- return false;
- }
-
- if (stopper.answers) {
- var answer = $('#form_' + stopper.code).val();
- if (OpenLayers.Util.indexOf(stopper.answers, answer) > -1) {
- return true;
- }
- return false;
- } else {
- return true;
- }
- });
-
+ var matching = $.grep(stoppers, is_matching_stopper);
if (!matching.length) {
$id.remove();
if ( !$('#js-roads-responsibility').is(':visible') && !$('#js-duplicate-reports').is(':visible') ) {
@@ -1157,8 +1163,21 @@ fixmystreet.message_controller = (function() {
$msg.insertBefore('#js-post-category-messages');
}
disable_report_form(stopper.keep_category_extras);
+ }
+
+ // make sure we fire the code to check if an asset is selected if
+ // we change options in the Highways England message
+ $(fixmystreet).on('report_new:highways_change', function() {
+ if (fixmystreet.body_overrides.get_only_send() === 'Highways England') {
+ $('#' + stopperId).remove(); // Get rid of any stopper message
+ responsibility_off(); // Will also reenable form
+ } else {
+ $(fixmystreet).trigger('report_new:category_change');
+ }
});
+ $(fixmystreet).on('report_new:category_change', check_for_stopper);
+
return {
asset_found: function() {
responsibility_off();
@@ -1212,6 +1231,8 @@ fixmystreet.message_controller = (function() {
stoppers = [];
},
+ check_for_stopper: check_for_stopper,
+
add_ignored_body: function(body) {
ignored_bodies.push(body);
}
diff --git a/web/cobrands/westminster/assets.js b/web/cobrands/westminster/assets.js
index e015f35a1..1c0358301 100644
--- a/web/cobrands/westminster/assets.js
+++ b/web/cobrands/westminster/assets.js
@@ -101,12 +101,15 @@ fixmystreet.assets.add(defaults, {
found: function(layer, feature) {
if (!fixmystreet.assets.selectedFeature()) {
fixmystreet.body_overrides.only_send('TfL');
+ $('#category_meta').empty();
} else {
fixmystreet.body_overrides.remove_only_send();
}
+ fixmystreet.message_controller.check_for_stopper();
},
not_found: function(layer) {
fixmystreet.body_overrides.remove_only_send();
+ fixmystreet.message_controller.check_for_stopper();
}
}
});