diff options
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | web/cobrands/fixmystreet/assets.js | 20 |
2 files changed, 17 insertions, 4 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a1906974..21c15c77c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ - Clicking the "Click map" instruction banner now begins a new report #2033 - Homepage postcode input is now marked up as a required input #2037 - Improved cursor/display of the new report pin. #2038 + - Asset layers can be attached to more than one category each. #2049 - Bugfixes: - Stop asset layers obscuring marker layer. #1999 - Don't delete hidden field values when inspecting reports. #1999 diff --git a/web/cobrands/fixmystreet/assets.js b/web/cobrands/fixmystreet/assets.js index 14aab2db2..ca98b549d 100644 --- a/web/cobrands/fixmystreet/assets.js +++ b/web/cobrands/fixmystreet/assets.js @@ -74,7 +74,7 @@ function init_asset_layer(layer, pins_layer) { // Show/hide the asset layer when the category is chosen $("#problem_form").on("change.category", "select#form_category", function(){ var category = $(this).val(); - if (category == layer.fixmystreet.asset_category) { + if (layer.fixmystreet.asset_category.indexOf(category) != -1) { layer.setVisibility(true); if (layer.fixmystreet.fault_layer) { layer.fixmystreet.fault_layer.setVisibility(true); @@ -183,10 +183,10 @@ function find_matching_feature(feature, layer, asset_id_field) { function check_zoom_message_visibility() { var category = $("#problem_form select#form_category").val(), - prefix = this.fixmystreet.asset_category.replace(/[^a-z]/gi, ''), + prefix = category.replace(/[^a-z]/gi, ''), id = "category_meta_message_" + prefix, $p = $('#' + id); - if (category == this.fixmystreet.asset_category) { + if (this.fixmystreet.asset_category.indexOf(category) != -1) { if ($p.length === 0) { $p = $("<p>").prop("id", id).prop('class', 'category_meta_message'); $p.insertAfter('#form_category_row'); @@ -199,7 +199,12 @@ function check_zoom_message_visibility() { } } else { - $p.remove(); + this.fixmystreet.asset_category.forEach( function(c) { + var prefix = c.replace(/[^a-z]/gi, ''), + id = "category_meta_message_" + prefix, + $p = $('#' + id); + $p.remove(); + }); } } @@ -366,6 +371,13 @@ fixmystreet.assets = { protocol = new OpenLayers.Protocol.WFS(protocol_options); } var StrategyClass = options.strategy_class || OpenLayers.Strategy.BBOX; + + // Upgrade `asset_category` to an array, in the case that this layer is + // only associated with a single category. + if (options.asset_category && !OpenLayers.Util.isArray(options.asset_category)) { + options.asset_category = [ options.asset_category ]; + } + var layer_options = { fixmystreet: options, strategies: [new StrategyClass()], |