diff options
Diffstat (limited to 'web')
-rw-r--r-- | web/cobrands/highways/assets.js | 63 |
1 files changed, 45 insertions, 18 deletions
diff --git a/web/cobrands/highways/assets.js b/web/cobrands/highways/assets.js index c8cd274ab..2f00834d2 100644 --- a/web/cobrands/highways/assets.js +++ b/web/cobrands/highways/assets.js @@ -65,7 +65,6 @@ fixmystreet.assets.add(defaults, { } $('#highways').remove(); if ( !fixmystreet.assets.selectedFeature() ) { - fixmystreet.body_overrides.only_send('Highways England'); add_highways_warning(feature.attributes.ROA_NUMBER); $('#category_meta').empty(); } @@ -74,12 +73,54 @@ fixmystreet.assets.add(defaults, { fixmystreet.body_overrides.location = null; if (fixmystreet.body_overrides.get_only_send() === 'Highways England') { fixmystreet.body_overrides.remove_only_send(); + fixmystreet.body_overrides.do_not_send('Highways England'); } $('#highways').remove(); } } }); +function regenerate_category(he_flag) { + if (!fixmystreet.reporting_data) return; + + // Restart the category dropdown from the original data (not all of it as + // we keep subcategories the same) + var select = $(fixmystreet.reporting_data.category).filter('select'); + if (he_flag) { + var select1 = select.find('> option:first-child')[0].outerHTML; + var select2 = select.find('optgroup[label*="Highways England"]').html(); + $('#form_category').html(select1 + select2); + } else { + select.find('optgroup[label*="Highways England"]').remove(); + select = select.html(); + $('#form_category').html(select); + } + + // Recalculate the category groups + var old_category_group = $('#category_group').val() || $('#filter_group').val(); + $('#category_group').remove(); + fixmystreet.set_up.category_groups(old_category_group, true); +} + +function he_selected() { + fixmystreet.body_overrides.location = null; + fixmystreet.body_overrides.only_send('Highways England'); + fixmystreet.body_overrides.allow_send('Highways England'); + regenerate_category(true); + $(fixmystreet).trigger('report_new:highways_change'); +} + +function non_he_selected() { + fixmystreet.body_overrides.location = { + latitude: $('#fixmystreet\\.latitude').val(), + longitude: $('#fixmystreet\\.longitude').val() + }; + fixmystreet.body_overrides.remove_only_send(); + fixmystreet.body_overrides.do_not_send('Highways England'); + $(fixmystreet).trigger('report_new:highways_change'); + regenerate_category(false); +} + function add_highways_warning(road_name) { var $warning = $('<div class="box-warning" id="highways"><p>It looks like you clicked on the <strong>' + road_name + '</strong> which is managed by <strong>Highways England</strong>. ' + 'Does your report concern something on this road, or somewhere else (e.g a road crossing it)?<p></div>'); @@ -90,12 +131,7 @@ function add_highways_warning(road_name) { .attr('name', 'highways-choice') .attr('id', 'js-highways') .prop('checked', true) - .on('click', function() { - fixmystreet.body_overrides.location = null; - fixmystreet.body_overrides.only_send('Highways England'); - $(fixmystreet).trigger('report_new:highways_change'); - $('#category_meta').empty(); - }) + .on('click', he_selected) .appendTo($radios); $('<label>') .attr('for', 'js-highways') @@ -106,14 +142,7 @@ function add_highways_warning(road_name) { .attr('type', 'radio') .attr('name', 'highways-choice') .attr('id', 'js-not-highways') - .on('click', function() { - fixmystreet.body_overrides.location = { - latitude: $('#fixmystreet\\.latitude').val(), - longitude: $('#fixmystreet\\.longitude').val() - }; - fixmystreet.body_overrides.remove_only_send(); - $(fixmystreet).trigger('report_new:highways_change'); - }) + .on('click', non_he_selected) .appendTo($radios); $('<label>') .attr('for', 'js-not-highways') @@ -122,9 +151,7 @@ function add_highways_warning(road_name) { .appendTo($radios); $radios.appendTo($warning); $('.change_location').after($warning); - fixmystreet.body_overrides.location = null; - fixmystreet.body_overrides.only_send('Highways England'); - $(fixmystreet).trigger('report_new:highways_change'); + he_selected(); } })(); |