Report an existing tagged vertex that is moved as modified

This commit is contained in:
John Firebaugh
2013-10-23 12:00:07 -07:00
parent e8e9f7a4ff
commit a05b9b1be5
2 changed files with 26 additions and 9 deletions
+13 -7
View File
@@ -6,7 +6,7 @@ iD.util.relevantChanges = function(graph, changes, base) {
function addEntity(entity, changeType) {
relevant[entity.id] = {
entity: entity,
changeType: changeType,
changeType: changeType
};
}
@@ -21,14 +21,20 @@ iD.util.relevantChanges = function(graph, changes, base) {
_.each(changes, function(entities, change) {
_.each(entities, function(entity) {
var relevantGraph = change === 'deleted' ? base : graph;
if (entity.geometry(relevantGraph) === 'vertex') {
addParents(entity, relevantGraph);
if (change === 'modified' && (entity.tags !== base.entity(entity.id).tags)) {
if (entity.geometry(change === 'deleted' ? base : graph) !== 'vertex') {
addEntity(entity, change);
} else if (change === 'modified') {
var moved = entity.loc !== base.entity(entity.id).loc,
retagged = entity.tags !== base.entity(entity.id).tags;
if (moved) {
addParents(entity, graph);
}
if (retagged || (moved && entity.hasInterestingTags())) {
addEntity(entity, change);
}
} else {
addEntity(entity, change);
}
});
});
+13 -2
View File
@@ -1,6 +1,6 @@
describe("iD.util.relevantChanges", function() {
var base = iD.Graph({
'a': iD.Node({id: 'a', loc: [0, 0]}),
'a': iD.Node({id: 'a', loc: [0, 0], tags: {crossing: 'zebra'}}),
'b': iD.Node({id: 'b', loc: [2, 0]}),
'c': iD.Node({id: 'c', loc: [2, 2]}),
'd': iD.Node({id: 'd', loc: [0, 2]}),
@@ -84,7 +84,7 @@ describe("iD.util.relevantChanges", function() {
});
it("reports an existing vertex with added tags as modified", function() {
var vertex = iD.Node({id: 'f', tags: {yes: 'it works'}}),
var vertex = base.entity('a').mergeTags({highway: 'traffic_signals'}),
graph = base.replace(vertex),
changes = { modified: [vertex] },
a = iD.util.relevantChanges(graph, changes, base);
@@ -93,4 +93,15 @@ describe("iD.util.relevantChanges", function() {
entity: vertex
}]);
});
it("reports an existing tagged vertex that is moved as modified", function() {
var vertex = base.entity('a').move([1, 2]),
graph = base.replace(vertex),
changes = { modified: [vertex] },
a = iD.util.relevantChanges(graph, changes, base);
expect(a[1]).to.eql({
changeType: 'modified',
entity: vertex
});
});
});