From 700e863b6c0c1f6815a09d0dc66d560a74a2103e Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Thu, 26 Jun 2014 01:13:57 -0700 Subject: [PATCH 1/2] Use the more common tagging for a tailor shop=tailor outnumbers craft=tailor by about 2:1, so should be preferred --- data/presets.yaml | 3 +++ data/presets/presets.json | 24 +++++++++++++++++++++++- data/presets/presets/craft/tailor.json | 3 ++- data/presets/presets/shop/tailor.json | 21 +++++++++++++++++++++ dist/locales/en.json | 4 ++++ 5 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 data/presets/presets/shop/tailor.json diff --git a/data/presets.yaml b/data/presets.yaml index 714cc94d7..1ddc62be1 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -1748,6 +1748,9 @@ en: shop/supermarket: name: Supermarket terms: "" + shop/tailor: + name: Tailor + terms: "" shop/toys: name: Toy Store terms: "" diff --git a/data/presets/presets.json b/data/presets/presets.json index a1e91e4d5..31f32bc81 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -3351,7 +3351,8 @@ "address", "operator", "opening_hours" - ] + ], + "searchable": false }, "craft/tiler": { "name": "Tiler", @@ -7590,6 +7591,27 @@ }, "name": "Supermarket" }, + "shop/tailor": { + "name": "Tailor", + "geometry": [ + "point", + "area" + ], + "terms": [ + "tailor", + "clothes" + ], + "tags": { + "shop": "tailor" + }, + "icon": "clothing-store", + "fields": [ + "building_area", + "address", + "operator", + "opening_hours" + ] + }, "shop/toys": { "icon": "shop", "fields": [ diff --git a/data/presets/presets/craft/tailor.json b/data/presets/presets/craft/tailor.json index 7fb43924a..cf70706b2 100644 --- a/data/presets/presets/craft/tailor.json +++ b/data/presets/presets/craft/tailor.json @@ -17,5 +17,6 @@ "address", "operator", "opening_hours" - ] + ], + "searchable": false } diff --git a/data/presets/presets/shop/tailor.json b/data/presets/presets/shop/tailor.json new file mode 100644 index 000000000..690df475f --- /dev/null +++ b/data/presets/presets/shop/tailor.json @@ -0,0 +1,21 @@ +{ + "name": "Tailor", + "geometry": [ + "point", + "area" + ], + "terms": [ + "tailor", + "clothes" + ], + "tags": { + "shop": "tailor" + }, + "icon": "clothing-store", + "fields": [ + "building_area", + "address", + "operator", + "opening_hours" + ] +} diff --git a/dist/locales/en.json b/dist/locales/en.json index 92bc651b1..b2a050b07 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -2783,6 +2783,10 @@ "name": "Supermarket", "terms": "bazaar,boutique,chain,co-op,cut-rate store,discount store,five-and-dime,flea market,galleria,grocery store,mall,mart,outlet,outlet store,shop,shopping center,shopping centre,shopping plaza,stand,store,supermarket,thrift shop" }, + "shop/tailor": { + "name": "Tailor", + "terms": "tailor,clothes" + }, "shop/toys": { "name": "Toy Store", "terms": "" From eb55e36c3c24f8b7a417239b00ef5464b5b08eb0 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Thu, 26 Jun 2014 09:54:34 -0700 Subject: [PATCH 2/2] Delete relations that become empty (#2270) --- js/id/actions/delete_member.js | 10 +++++++++- js/id/ui/raw_member_editor.js | 4 ++++ test/spec/actions/delete_member.js | 19 ++++++++++++++----- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/js/id/actions/delete_member.js b/js/id/actions/delete_member.js index 50b331e14..ffed567ca 100644 --- a/js/id/actions/delete_member.js +++ b/js/id/actions/delete_member.js @@ -1,5 +1,13 @@ iD.actions.DeleteMember = function(relationId, memberIndex) { return function(graph) { - return graph.replace(graph.entity(relationId).removeMember(memberIndex)); + var relation = graph.entity(relationId) + .removeMember(memberIndex); + + graph = graph.replace(relation); + + if (relation.isDegenerate()) + graph = iD.actions.DeleteRelation(relation.id)(graph); + + return graph; }; }; diff --git a/js/id/ui/raw_member_editor.js b/js/id/ui/raw_member_editor.js index dbc34c678..20a0ca0b6 100644 --- a/js/id/ui/raw_member_editor.js +++ b/js/id/ui/raw_member_editor.js @@ -17,6 +17,10 @@ iD.ui.RawMemberEditor = function(context) { context.perform( iD.actions.DeleteMember(d.relation.id, d.index), t('operations.delete_member.annotation')); + + if (!context.hasEntity(d.relation.id)) { + context.enter(iD.modes.Browse(context)); + } } function rawMemberEditor(selection) { diff --git a/test/spec/actions/delete_member.js b/test/spec/actions/delete_member.js index f23cdb700..187f2c20c 100644 --- a/test/spec/actions/delete_member.js +++ b/test/spec/actions/delete_member.js @@ -1,9 +1,18 @@ describe("iD.actions.DeleteMember", function () { it("removes the member at the specified index", function () { - var node = iD.Node(), - relation = iD.Relation({members: [{id: node.id}]}), - action = iD.actions.DeleteMember(relation.id, 0), - graph = action(iD.Graph([node, relation])); - expect(graph.entity(relation.id).members).to.eql([]); + var a = iD.Node({id: 'a'}), + b = iD.Node({id: 'b'}), + r = iD.Relation({members: [{id: 'a'}, {id: 'b'}]}), + action = iD.actions.DeleteMember(r.id, 0), + graph = action(iD.Graph([a, b, r])); + expect(graph.entity(r.id).members).to.eql([{id: 'b'}]); + }); + + it("deletes relations that become degenerate", function () { + var a = iD.Node({id: 'a'}), + r = iD.Relation({id: 'r', members: [{id: 'a'}]}), + action = iD.actions.DeleteMember(r.id, 0), + graph = action(iD.Graph([a, r])); + expect(graph.hasEntity('r')).to.be.undefined; }); });