diff options
Diffstat (limited to 'web')
-rw-r--r-- | web/cobrands/fixmystreet/assets.js | 80 | ||||
-rw-r--r-- | web/cobrands/westminster/assets.js | 3 |
2 files changed, 47 insertions, 36 deletions
diff --git a/web/cobrands/fixmystreet/assets.js b/web/cobrands/fixmystreet/assets.js index 5a25cc128..1de595c53 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, @@ -1088,18 +1089,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 +1124,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 +1150,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 +1218,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(); } } }); |