aboutsummaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2019-03-25 14:42:49 +0000
committerMatthew Somerville <matthew-github@dracos.co.uk>2019-03-27 09:57:01 +0000
commit26f8e67e8f08e77587dfc736a3e0634708a2bfd7 (patch)
treefcdb462f5a61336a0c8ee191c92dd73a8e608d42 /web
parent36ece378eb70da1666671b32ab99d8b0b242d807 (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.js28
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')) {