mirror of
https://github.com/FoggedLens/iD.git
synced 2026-04-29 15:16:07 +02:00
Extend protection to multipolygon outer ways
This commit is contained in:
committed by
John Firebaugh
parent
0953475f04
commit
c9162ea65e
@@ -33,12 +33,15 @@ iD.actions.DeleteWay = function(wayId) {
|
||||
|
||||
action.disabled = function(graph) {
|
||||
var way = graph.entity(wayId);
|
||||
var reltypes = ['route','boundary'];
|
||||
var reltypes = ['route','boundary','multipolygon'];
|
||||
var required_roles = { 'multipolygon': 'outer' };
|
||||
var disabled = false;
|
||||
graph.parentRelations(way)
|
||||
.forEach(function(parent) {
|
||||
if (reltypes.indexOf(parent.tags.type)>-1) {
|
||||
disabled = 'part_of_relation';
|
||||
if (!required_roles[parent.tags.type] || parent.containsEntityInRole(way,required_roles[parent.tags.type])) {
|
||||
disabled = 'part_of_relation';
|
||||
}
|
||||
}
|
||||
});
|
||||
return disabled;
|
||||
|
||||
@@ -115,6 +115,16 @@ _.extend(iD.Relation.prototype, {
|
||||
}
|
||||
},
|
||||
|
||||
// Test whether the relation contains an entity in the given role.
|
||||
containsEntityInRole: function(entity, role) {
|
||||
for (var i = 0; i < this.members.length; i++) {
|
||||
if (this.members[i].id === entity.id && this.members[i].type === entity.type && this.members[i].role === role) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
addMember: function(member, index) {
|
||||
var members = this.members.slice();
|
||||
members.splice(index === undefined ? members.length : index, 0, member);
|
||||
|
||||
Reference in New Issue
Block a user