diff options
author | Matthew Somerville <matthew-github@dracos.co.uk> | 2019-03-25 14:42:49 +0000 |
---|---|---|
committer | Matthew Somerville <matthew-github@dracos.co.uk> | 2019-03-27 09:57:01 +0000 |
commit | 26f8e67e8f08e77587dfc736a3e0634708a2bfd7 (patch) | |
tree | fcdb462f5a61336a0c8ee191c92dd73a8e608d42 /web | |
parent | 36ece378eb70da1666671b32ab99d8b0b242d807 (diff) |
Stop category_change firing more than it should.
Previously, when update_pin was called, category change events were
fired: 1. if category wasn't blank, 2. if category groups were enabled,
and 3. if category groups were enabled, a group was selected, and a
category was not.
Now we sort out everything inside the category_groups setup function,
only triggering a change event once, at the end.
Diffstat (limited to 'web')
-rw-r--r-- | web/cobrands/fixmystreet/fixmystreet.js | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/web/cobrands/fixmystreet/fixmystreet.js b/web/cobrands/fixmystreet/fixmystreet.js index 23de282f2..54ecb3662 100644 --- a/web/cobrands/fixmystreet/fixmystreet.js +++ b/web/cobrands/fixmystreet/fixmystreet.js @@ -446,11 +446,15 @@ $.extend(fixmystreet.set_up, { }); }, - category_groups: function() { - var $category_select = $("select#form_category.js-grouped-select"); - if ($category_select.length === 0) { + category_groups: function(old_group) { + var $category_select = $("select#form_category"); + if (!$category_select.hasClass('js-grouped-select')) { + if ($category_select.val() !== '-- Pick a category --') { + $category_select.change(); + } return; } + var $group_select = $("<select></select>").addClass("form-control validCategory").attr('id', 'category_group'); var $subcategory_label = $("#form_subcategory_label"); var $empty_option = $category_select.find("option").first(); @@ -526,6 +530,10 @@ $.extend(fixmystreet.set_up, { } return a.label > b.label ? 1 : -1; }).appendTo($group_select); + + if (old_group !== '-- Pick a category --' && $category_select.val() == '-- Pick a category --') { + $group_select.val(old_group); + } $group_select.change(); }, @@ -1164,7 +1172,7 @@ fixmystreet.update_pin = function(lonlat, savePushState) { return; } $('#side-form, #site-logo').show(); - var category_group = $('#category_group').val(), + var old_category_group = $('#category_group').val(), old_category = $("#form_category").val(), filter_category = $("#filter_categories").val(); @@ -1182,6 +1190,9 @@ fixmystreet.update_pin = function(lonlat, savePushState) { // if it's a value already present in the drop-down. $("#form_category").val(filter_category); } + + fixmystreet.set_up.category_groups(old_category_group); + if ( data.extra_name_info && !$('#form_fms_extra_title').length ) { // there might be a first name field on some cobrands var lb = $('#form_first_name').prev(); @@ -1194,15 +1205,6 @@ fixmystreet.update_pin = function(lonlat, savePushState) { fixmystreet.body_overrides.clear(); } - var category_select = $("select#form_category"); - if (category_select.val() != '-- Pick a category --') { - category_select.change(); - } - fixmystreet.set_up.category_groups(); - if (category_group !== '-- Pick a category --' && category_select.val() == '-- Pick a category --') { - $('#category_group').val(category_group).change(); - } - if (data.contribute_as) { var $select = $('.js-contribute-as'); if (!$select.data('original')) { |