diff options
author | pezholio <pezholio@gmail.com> | 2017-05-24 11:27:19 +0100 |
---|---|---|
committer | Matthew Somerville <matthew-github@dracos.co.uk> | 2017-06-20 17:58:59 +0100 |
commit | bdd1e1627a1be6d9253ecc4e6904e68948227914 (patch) | |
tree | 8acbe51dd2419778eeacd7c8512b1b515da5a2a3 /web | |
parent | 6c4f3f78bfada011441411f308967298984e7ba5 (diff) |
Populate defect types dropdown on category change
Diffstat (limited to 'web')
-rw-r--r-- | web/cobrands/fixmystreet/staff.js | 23 | ||||
-rw-r--r-- | web/cobrands/oxfordshire/js.js | 7 |
2 files changed, 29 insertions, 1 deletions
diff --git a/web/cobrands/fixmystreet/staff.js b/web/cobrands/fixmystreet/staff.js index b1bd9ee54..ac665b591 100644 --- a/web/cobrands/fixmystreet/staff.js +++ b/web/cobrands/fixmystreet/staff.js @@ -195,7 +195,19 @@ $.extend(fixmystreet.set_up, { // in the DOM, we just need to hide/show them as appropriate. $('form#report_inspect_form [name=category]').change(function() { var category = $(this).val(), - selector = "[data-category='" + category + "']"; + selector = "[data-category='" + category + "']", + $defect_types = $('#defect_type'), + defect_types_data = $("form#report_inspect_form " + selector).data('defect-types') || []; + + function populateSelect($select, data, label_formatter) { + $select.find('option:gt(0)').remove(); + $.each(data, function(k,v) { + label = window.fixmystreet.utils[label_formatter](v); + $select.append($('<option></option>') + .attr('value', v.id).text(label)); + }); + } + $("form#report_inspect_form [data-category]:not(" + selector + ")").addClass("hidden"); $("form#report_inspect_form " + selector).removeClass("hidden"); // And update the associated priority list @@ -211,6 +223,7 @@ $.extend(fixmystreet.set_up, { $select.append($('<option>', { value: kv[0], text: decodeURIComponent(kv[1]) })); }); $select.val(curr_pri); + populateSelect($defect_types, defect_types_data, 'defect_type_format'); }); // The inspect form submit button can change depending on the selected state @@ -447,3 +460,11 @@ $.extend(fixmystreet.maps, { } } }); + +fixmystreet.utils = fixmystreet.utils || {}; + +$.extend(fixmystreet.utils, { + defect_type_format: function(data) { + return data.name; + } +}); diff --git a/web/cobrands/oxfordshire/js.js b/web/cobrands/oxfordshire/js.js new file mode 100644 index 000000000..17cb0dd8f --- /dev/null +++ b/web/cobrands/oxfordshire/js.js @@ -0,0 +1,7 @@ +fixmystreet.utils = fixmystreet.utils || {}; + +$.extend(fixmystreet.utils, { + defect_type_format: function(data) { + return data.extra.defect_code + ' - ' + data.extra.activity_code + ' (' + data.name + ')'; + } +}); |