Fields now have an optional geometry type

field defaults aren't geometry specific
the geometry type determines whether
that field (and default value) apply
to an entity
This commit is contained in:
Ansis Brammanis
2013-03-14 16:48:09 -04:00
parent 51a217caa2
commit 547f12f822
7 changed files with 23 additions and 17 deletions
+1 -1
View File
@@ -1 +1 @@
{"access":{"key":"access","type":"combo"},"address":{"type":"address","keys":["addr:housename","addr:housenumber","addr:street","addr:city"],"icon":"address","universal":true},"aeroway":{"key":"aeroway","type":"combo"},"amenity":{"key":"amenity","type":"combo"},"atm":{"key":"atm","type":"check"},"bicycle_parking":{"key":"bicycle_parking","type":"combo"},"building":{"key":"building","type":"combo"},"building_area":{"key":"building","type":"check","default":{"area":"yes"}},"building_yes":{"key":"building","type":"combo","default":{"area":"yes"}},"capacity":{"key":"capacity","type":"text"},"collection_times":{"key":"collection_times","type":"text"},"construction":{"key":"construction","type":"combo"},"crossing":{"key":"crossing","type":"combo"},"cuisine":{"key":"cuisine","type":"combo","indexed":true},"denomination":{"key":"denomination","type":"combo"},"denotation":{"key":"denotation","type":"combo"},"elevation":{"key":"ele","type":"number","icon":"elevation","universal":true},"emergency":{"key":"emergency","type":"check"},"fax":{"key":"fax","type":"tel"},"fee":{"key":"fee","type":"check"},"highway":{"key":"highway","type":"combo"},"historic":{"key":"historic","type":"combo"},"internet_access":{"key":"internet_access","type":"combo","options":["yes","no","wlan","wired","terminal"]},"landuse":{"key":"landuse","type":"combo"},"layer":{"key":"layer","type":"combo"},"leisure":{"key":"leisure","type":"combo"},"levels":{"key":"building:levels","type":"number"},"man_made":{"key":"man_made","type":"combo"},"maxspeed":{"key":"maxspeed","type":"combo"},"natural":{"key":"natural","type":"combo"},"network":{"key":"network","type":"text"},"note":{"key":"note","type":"textarea","universal":true},"office":{"key":"office","type":"combo"},"oneway":{"key":"oneway","type":"check"},"opening_hours":{"key":"opening_hours","type":"text"},"operator":{"key":"operator","type":"text"},"phone":{"key":"phone","type":"tel"},"place":{"key":"place","type":"combo"},"railway":{"key":"railway","type":"combo"},"religion":{"key":"religion","type":"combo","options":["christian","muslim","buddhist","jewish","hindu","shinto","taoist"]},"roadtype":{"type":"radio","options":["bridge","tunnel","embankment","cutting"]},"service":{"key":"service","type":"combo","options":["parking_aisle","driveway","alley","drive-through","emergency_access"]},"shelter":{"key":"shelter","type":"check"},"shop":{"key":"shop","type":"combo"},"source":{"key":"source","type":"text","icon":"source","universal":true},"sport":{"key":"sport","type":"combo"},"surface":{"key":"surface","type":"combo"},"telephone":{"key":"phone","type":"tel","icon":"telephone","universal":true},"tourism":{"key":"tourism","type":"combo"},"water":{"key":"water","type":"combo"},"waterway":{"key":"waterway","type":"combo"},"website":{"key":"website","type":"url","icon":"website","universal":true},"wetland":{"key":"wetland","type":"combo"},"wikipedia":{"key":"wikipedia","type":"text","icon":"wikipedia","universal":true},"wood":{"key":"wood","type":"combo"}}
{"access":{"key":"access","type":"combo"},"address":{"type":"address","keys":["addr:housename","addr:housenumber","addr:street","addr:city"],"icon":"address","universal":true},"aeroway":{"key":"aeroway","type":"combo"},"amenity":{"key":"amenity","type":"combo"},"atm":{"key":"atm","type":"check"},"bicycle_parking":{"key":"bicycle_parking","type":"combo"},"building":{"key":"building","type":"combo"},"building_area":{"key":"building","type":"check","default":"yes","geometry":"area"},"building_yes":{"key":"building","type":"combo","default":"yes"},"capacity":{"key":"capacity","type":"text"},"collection_times":{"key":"collection_times","type":"text"},"construction":{"key":"construction","type":"combo"},"crossing":{"key":"crossing","type":"combo"},"cuisine":{"key":"cuisine","type":"combo","indexed":true},"denomination":{"key":"denomination","type":"combo"},"denotation":{"key":"denotation","type":"combo"},"elevation":{"key":"ele","type":"number","icon":"elevation","universal":true},"emergency":{"key":"emergency","type":"check"},"fax":{"key":"fax","type":"tel"},"fee":{"key":"fee","type":"check"},"highway":{"key":"highway","type":"combo"},"historic":{"key":"historic","type":"combo"},"internet_access":{"key":"internet_access","type":"combo","options":["yes","no","wlan","wired","terminal"]},"landuse":{"key":"landuse","type":"combo"},"layer":{"key":"layer","type":"combo"},"leisure":{"key":"leisure","type":"combo"},"levels":{"key":"building:levels","type":"number"},"man_made":{"key":"man_made","type":"combo"},"maxspeed":{"key":"maxspeed","type":"combo"},"natural":{"key":"natural","type":"combo"},"network":{"key":"network","type":"text"},"note":{"key":"note","type":"textarea","universal":true},"office":{"key":"office","type":"combo"},"oneway":{"key":"oneway","type":"check"},"opening_hours":{"key":"opening_hours","type":"text"},"operator":{"key":"operator","type":"text"},"phone":{"key":"phone","type":"tel"},"place":{"key":"place","type":"combo"},"railway":{"key":"railway","type":"combo"},"religion":{"key":"religion","type":"combo","options":["christian","muslim","buddhist","jewish","hindu","shinto","taoist"]},"roadtype":{"type":"radio","options":["bridge","tunnel","embankment","cutting"]},"service":{"key":"service","type":"combo","options":["parking_aisle","driveway","alley","drive-through","emergency_access"]},"shelter":{"key":"shelter","type":"check"},"shop":{"key":"shop","type":"combo"},"source":{"key":"source","type":"text","icon":"source","universal":true},"sport":{"key":"sport","type":"combo"},"surface":{"key":"surface","type":"combo"},"telephone":{"key":"phone","type":"tel","icon":"telephone","universal":true},"tourism":{"key":"tourism","type":"combo"},"water":{"key":"water","type":"combo"},"waterway":{"key":"waterway","type":"combo"},"website":{"key":"website","type":"url","icon":"website","universal":true},"wetland":{"key":"wetland","type":"combo"},"wikipedia":{"key":"wikipedia","type":"text","icon":"wikipedia","universal":true},"wood":{"key":"wood","type":"combo"}}
+3 -4
View File
@@ -1,7 +1,6 @@
{
"key": "building",
"type": "check",
"default": {
"area": "yes"
}
}
"default": "yes",
"geometry": "area"
}
+2 -4
View File
@@ -1,7 +1,5 @@
{
"key": "building",
"type": "combo",
"default": {
"area": "yes"
}
}
"default": "yes"
}
+5 -1
View File
@@ -1,12 +1,16 @@
iD.presets.Field = function(field, id) {
field = _.clone(field);
field.matchGeometry = function(geometry) {
return !field.geometry || field.geometry.indexOf(geometry) >= 0;
};
field.t = function(scope, options) {
return t('presets.fields.' + id + '.' + scope, options);
};
field.label = function() {
return field.t('label', {default: field.key});
return field.t('label', { 'default': field.key});
};
return field;
+3 -3
View File
@@ -32,7 +32,7 @@ iD.presets.Preset = function(preset, fields) {
for (var i in preset.fields) {
var field = preset.fields[i];
if (field['default'] && field['default'][geometry] == tags[field.key]) {
if (field.matchGeometry(geometry) && field['default'] === tags[field.key]) {
delete tags[field.key];
}
}
@@ -47,8 +47,8 @@ iD.presets.Preset = function(preset, fields) {
for (var f in preset.fields) {
f = preset.fields[f];
if (f.key && !tags[f.key] && f['default'] && f['default'][geometry]) {
tags[f.key] = f['default'][geometry];
if (f.matchGeometry(geometry) && f.key && !tags[f.key]) {
tags[f.key] = f['default'];
}
}
return tags;
+5 -1
View File
@@ -29,7 +29,11 @@ iD.ui.preset = function(context) {
keys = [];
formwrap = selection.append('div');
draw(formwrap, preset.fields);
var geometry = entity.geometry(context.graph());
draw(formwrap, preset.fields.filter(function(f) {
return f.matchGeometry(geometry);
}));
var wrap = selection.append('div')
.attr('class', 'col12 more-buttons inspector-inner');
+4 -3
View File
@@ -1,11 +1,12 @@
describe('iD.presets.Preset', function() {
var fields = {
"building_area": {
"building_area": iD.presets.Field({
"key": "building",
"type": "check",
"default": { "area": "yes" }
}
"geometry": ["area"],
"default": "yes"
})
};
var p = {