mirror of
https://github.com/FoggedLens/iD.git
synced 2026-03-07 03:41:33 +00:00
Support deleting relations
This commit is contained in:
@@ -77,6 +77,7 @@
|
||||
<script src='js/id/actions/add_vertex.js'></script>
|
||||
<script src='js/id/actions/change_tags.js'></script>
|
||||
<script src='js/id/actions/delete_node.js'></script>
|
||||
<script src="js/id/actions/delete_relation.js"></script>
|
||||
<script src="js/id/actions/delete_way.js"></script>
|
||||
<script src='js/id/actions/move_node.js'></script>
|
||||
<script src='js/id/actions/move_way.js'></script>
|
||||
|
||||
13
js/id/actions/delete_relation.js
Normal file
13
js/id/actions/delete_relation.js
Normal file
@@ -0,0 +1,13 @@
|
||||
// https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/DeleteRelationAction.as
|
||||
iD.actions.DeleteRelation = function(relationId) {
|
||||
return function(graph) {
|
||||
var relation = graph.entity(relationId);
|
||||
|
||||
graph.parentRelations(relation)
|
||||
.forEach(function(parent) {
|
||||
graph = graph.replace(parent.removeMember(relationId));
|
||||
});
|
||||
|
||||
return graph.remove(relation);
|
||||
};
|
||||
};
|
||||
@@ -3,7 +3,11 @@ iD.operations.Delete = function(selection, context) {
|
||||
|
||||
var operation = function() {
|
||||
var entity = context.entity(entityId),
|
||||
action = {way: iD.actions.DeleteWay, node: iD.actions.DeleteNode}[entity.type],
|
||||
action = {
|
||||
way: iD.actions.DeleteWay,
|
||||
node: iD.actions.DeleteNode,
|
||||
relation: iD.actions.DeleteRelation
|
||||
}[entity.type],
|
||||
annotation = t('operations.delete.annotation.' + context.geometry(entityId));
|
||||
|
||||
context.perform(
|
||||
@@ -12,9 +16,7 @@ iD.operations.Delete = function(selection, context) {
|
||||
};
|
||||
|
||||
operation.available = function() {
|
||||
var entity = context.entity(entityId);
|
||||
return selection.length === 1 &&
|
||||
(entity.type === 'way' || entity.type === 'node');
|
||||
return selection.length === 1;
|
||||
};
|
||||
|
||||
operation.enabled = function() {
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
<script src='../js/id/actions/change_tags.js'></script>
|
||||
<script src='../js/id/actions/circularize.js'></script>
|
||||
<script src="../js/id/actions/delete_node.js"></script>
|
||||
<script src="../js/id/actions/delete_relation.js"></script>
|
||||
<script src="../js/id/actions/delete_way.js"></script>
|
||||
<script src='../js/id/actions/move_node.js'></script>
|
||||
<script src='../js/id/actions/move_way.js'></script>
|
||||
@@ -141,6 +142,7 @@
|
||||
<script src="spec/actions/add_entity.js"></script>
|
||||
<script src="spec/actions/change_tags.js"></script>
|
||||
<script src="spec/actions/delete_node.js"></script>
|
||||
<script src="spec/actions/delete_relation.js"></script>
|
||||
<script src="spec/actions/delete_way.js"></script>
|
||||
<script src="spec/actions/move_node.js"></script>
|
||||
<script src="spec/actions/move_way.js"></script>
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
<script src="spec/actions/add_entity.js"></script>
|
||||
<script src="spec/actions/change_tags.js"></script>
|
||||
<script src="spec/actions/delete_node.js"></script>
|
||||
<script src="spec/actions/delete_relation.js"></script>
|
||||
<script src="spec/actions/delete_way.js"></script>
|
||||
<script src="spec/actions/move_node.js"></script>
|
||||
<script src="spec/actions/move_way.js"></script>
|
||||
|
||||
17
test/spec/actions/delete_relation.js
Normal file
17
test/spec/actions/delete_relation.js
Normal file
@@ -0,0 +1,17 @@
|
||||
describe("iD.actions.DeleteRelation", function () {
|
||||
it("removes the relation from the graph", function () {
|
||||
var relation = iD.Relation(),
|
||||
action = iD.actions.DeleteRelation(relation.id),
|
||||
graph = action(iD.Graph([relation]));
|
||||
expect(graph.entity(relation.id)).to.be.undefined;
|
||||
});
|
||||
|
||||
it("removes the relation from parent relations", function () {
|
||||
var a = iD.Relation(),
|
||||
b = iD.Relation(),
|
||||
parent = iD.Relation({members: [{ id: a.id }, { id: b.id }]}),
|
||||
action = iD.actions.DeleteRelation(a.id),
|
||||
graph = action(iD.Graph([a, b, parent]));
|
||||
expect(graph.entity(parent.id).members).to.eql([{ id: b.id }]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user