Files
iD/js/id/util/relevant_changes.js
T
2013-10-18 17:11:52 -04:00

36 lines
1.1 KiB
JavaScript

// filters out verticies where the parent entity is already present
// for simpler changeset listing
iD.util.relevantChanges = function(graph, changes, base) {
var relevant = {};
function addEntity(entity, changeType) {
relevant[entity.id] = {
entity: entity,
changeType: changeType
};
}
function addParents(entity) {
var parents = graph.parentWays(entity);
for (var j = parents.length - 1; j >= 0; j--) {
var parent = parents[j];
if (!(parent.id in relevant)) addEntity(parent, 'modified');
}
}
_.each(changes, function(entities, change) {
_.each(entities, function(entity) {
if (entity.geometry(change === 'deleted' ? base : graph) === 'vertex') {
addParents(entity);
if (change === 'modified' && (entity.tags !== base.entity(entity.id).tags)) {
addEntity(entity, change);
}
} else {
addEntity(entity, change);
}
});
});
return d3.values(relevant);
};