Files
iD/modules/validations/many_deletions.js
T
Quincy Morgan 0934db48dd Don't count vertices toward many deletions warnings
Lower threshold for triggering many deletions warnings
2019-02-05 09:12:43 -05:00

63 lines
1.9 KiB
JavaScript

import { t } from '../util/locale';
import {
validationIssue
} from '../core/validator';
export function validationManyDeletions() {
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 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 (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.'+messageType+'.message',
{ n: totalFeatures, p: points, l: lines, a:areas, r: relations }
),
tooltip: t('issues.many_deletions.tip'),
hash: [points, lines, areas, relations].join()
}));
}
return issues;
};
validation.type = type;
validation.inputType = 'changes';
return validation;
}