From 547f12f822ac7d3c99b2c0a59d9d192fe7586804 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Thu, 14 Mar 2013 16:48:09 -0400 Subject: [PATCH] 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 --- data/presets/fields.json | 2 +- data/presets/fields/building_area.json | 7 +++---- data/presets/fields/building_yes.json | 6 ++---- js/id/presets/field.js | 6 +++++- js/id/presets/preset.js | 6 +++--- js/id/ui/preset.js | 6 +++++- test/spec/presets/preset.js | 7 ++++--- 7 files changed, 23 insertions(+), 17 deletions(-) diff --git a/data/presets/fields.json b/data/presets/fields.json index 9c7871938..5adb71f0a 100644 --- a/data/presets/fields.json +++ b/data/presets/fields.json @@ -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"}} \ No newline at end of file +{"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"}} \ No newline at end of file diff --git a/data/presets/fields/building_area.json b/data/presets/fields/building_area.json index 7c77541b4..b720dd89d 100644 --- a/data/presets/fields/building_area.json +++ b/data/presets/fields/building_area.json @@ -1,7 +1,6 @@ { "key": "building", "type": "check", - "default": { - "area": "yes" - } -} \ No newline at end of file + "default": "yes", + "geometry": "area" +} diff --git a/data/presets/fields/building_yes.json b/data/presets/fields/building_yes.json index f0f028e13..ac496a7ff 100644 --- a/data/presets/fields/building_yes.json +++ b/data/presets/fields/building_yes.json @@ -1,7 +1,5 @@ { "key": "building", "type": "combo", - "default": { - "area": "yes" - } -} \ No newline at end of file + "default": "yes" +} diff --git a/js/id/presets/field.js b/js/id/presets/field.js index 993c2ad38..83ada8080 100644 --- a/js/id/presets/field.js +++ b/js/id/presets/field.js @@ -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; diff --git a/js/id/presets/preset.js b/js/id/presets/preset.js index cb55e53ad..fb556bec7 100644 --- a/js/id/presets/preset.js +++ b/js/id/presets/preset.js @@ -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; diff --git a/js/id/ui/preset.js b/js/id/ui/preset.js index ab353654f..93f4de679 100644 --- a/js/id/ui/preset.js +++ b/js/id/ui/preset.js @@ -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'); diff --git a/test/spec/presets/preset.js b/test/spec/presets/preset.js index db2367742..13d1a4c90 100644 --- a/test/spec/presets/preset.js +++ b/test/spec/presets/preset.js @@ -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 = {