Don't count vertices toward many deletions warnings

Lower threshold for triggering many deletions warnings
This commit is contained in:
Quincy Morgan
2019-02-05 09:12:43 -05:00
parent a23954d886
commit 0934db48dd
3 changed files with 42 additions and 14 deletions
+32 -12
View File
@@ -5,30 +5,50 @@ import {
export function validationManyDeletions() {
var threshold = 100;
var totalOtherGeomThreshold = 50;
// relations are less common so use a lower threshold
var relationThreshold = 10;
var type = 'many_deletions';
var validation = function(changes, context) {
var issues = [];
var nodes = 0, ways = 0, areas = 0, relations = 0;
var graph = context.graph();
changes.deleted.forEach(function(c) {
if (c.type === 'node') { nodes++; }
else if (c.type === 'way' && c.geometry(graph) === 'line') { ways++; }
else if (c.type === 'way' && c.geometry(graph) === 'area') { areas++; }
else if (c.type === 'relation') { relations++; }
var points = 0, lines = 0, areas = 0, relations = 0;
var base = context.history().base();
var geometry;
changes.deleted.forEach(function(entity) {
if (entity.type === 'node' && entity.geometry(base) === 'point') {
points++;
} else if (entity.type === 'way') {
geometry = entity.geometry(base);
if (geometry === 'line') {
lines++;
} else if (geometry === 'area') {
areas++;
}
} else if (entity.type === 'relation') {
relations++;
}
});
if (changes.deleted.length > threshold) {
if (points + lines + areas >= totalOtherGeomThreshold ||
relations >= relationThreshold) {
var totalFeatures = points + lines + areas + relations;
var messageType = 'points-lines-areas';
if (relations > 0) {
messageType += '-relations';
}
issues.push(new validationIssue({
type: type,
severity: 'warning',
message: t(
'issues.many_deletions.message',
{ n: changes.deleted.length, p: nodes, l: ways, a:areas, r: relations }
'issues.many_deletions.'+messageType+'.message',
{ n: totalFeatures, p: points, l: lines, a:areas, r: relations }
),
tooltip: t('issues.many_deletions.tip'),
hash: [nodes, ways, areas, relations].join()
hash: [points, lines, areas, relations].join()
}));
}