From de44a73e054266d1859a707a68e243f2d9d863c1 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sun, 12 Mar 2017 15:20:41 -0400 Subject: [PATCH] Fix areaKeys logic to better handle presets that can be area or line --- modules/presets/index.js | 10 +++++----- test/spec/presets/index.js | 12 ++++++------ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/presets/index.js b/modules/presets/index.js index 43fe473d6..beb1eadab 100644 --- a/modules/presets/index.js +++ b/modules/presets/index.js @@ -72,7 +72,7 @@ export function presetIndex() { // and the subkeys form the blacklist. all.areaKeys = function() { var areaKeys = {}, - ignore = ['barrier', 'highway', 'footway', 'railway', 'type'], + ignore = ['barrier', 'highway', 'footway', 'railway', 'type'], // probably a line.. presets = _.reject(all.collection, 'suggestion'); // whitelist @@ -81,7 +81,7 @@ export function presetIndex() { if (!key) return; if (ignore.indexOf(key) !== -1) return; - if (d.geometry.indexOf('area') !== -1) { + if (d.geometry.indexOf('area') !== -1) { // probably an area.. areaKeys[key] = areaKeys[key] || {}; } }); @@ -93,9 +93,9 @@ export function presetIndex() { if (ignore.indexOf(key) !== -1) return; var value = d.tags[key]; - if (d.geometry.indexOf('area') === -1 && - d.geometry.indexOf('line') !== -1 && - key in areaKeys && value !== '*') { + if (key in areaKeys && // probably an area... + d.geometry.indexOf('line') !== -1 && // but sometimes a line + value !== '*') { areaKeys[key][value] = true; } }); diff --git a/test/spec/presets/index.js b/test/spec/presets/index.js index 163dd9a2d..fbe9ceb8d 100644 --- a/test/spec/presets/index.js +++ b/test/spec/presets/index.js @@ -85,14 +85,14 @@ describe('iD.presetIndex', function() { geometry: ['point','area'], suggestion: true }, - 'golf/water_hazard': { - tags: { 'golf': 'water_hazard' }, - geometry: ['line', 'area'] - }, 'highway/foo': { tags: { 'highway': 'foo' }, geometry: ['area'] }, + 'leisure/track': { + tags: { 'leisure': 'track' }, + geometry: ['line', 'area'] + }, 'natural': { tags: { 'natural': '*' }, geometry: ['point', 'vertex', 'area'] @@ -125,10 +125,10 @@ describe('iD.presetIndex', function() { expect(presets.areaKeys().natural.tree_row).to.be.true; }); - it('does not blacklist key-values for presets with both area and line geometry', function() { + it('blacklists key-values for presets with both area and line geometry', function() { iD.data.presets = testPresets; var presets = iD.Context().presets(); - expect(presets.areaKeys().golf).not.to.include.keys('water_hazard'); + expect(presets.areaKeys().leisure).to.include.keys('track'); }); it('does not blacklist key-values for presets with neither area nor line geometry', function() {