Fix areaKeys logic to better handle presets that can be area or line

This commit is contained in:
Bryan Housel
2017-03-12 15:20:41 -04:00
parent d95ed2aa44
commit de44a73e05
2 changed files with 11 additions and 11 deletions
+5 -5
View File
@@ -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;
}
});
+6 -6
View File
@@ -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() {