aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md1
-rw-r--r--web/cobrands/fixmystreet/assets.js20
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()],