Don't run other validators if feature is missing tags

Don't run disconnected highway check if there is an almost junction issue already
Only run way validators on ways
This commit is contained in:
Quincy Morgan
2019-01-30 17:59:23 -05:00
parent 09bc2a6e6c
commit 957eb28242
11 changed files with 44 additions and 15 deletions
+1
View File
@@ -359,6 +359,7 @@ export function validationHighwayCrossingOtherWays() {
return issues;
};
validation.type = ValidationIssueType.crossing_ways;
return validation;
}
+1
View File
@@ -82,6 +82,7 @@ export function validationDeprecatedTag() {
return issues;
};
validation.type = ValidationIssueType.deprecated_tags;
return validation;
}
@@ -81,6 +81,7 @@ export function validationDisconnectedHighway() {
return issues;
};
validation.type = ValidationIssueType.disconnected_highway;
return validation;
}
+5 -1
View File
@@ -44,7 +44,7 @@ export function validationGenericName(context) {
}
return function validation(entity) {
var validation = function(entity) {
var issues = [];
var generic = isGenericName(entity);
if (generic) {
@@ -74,4 +74,8 @@ export function validationGenericName(context) {
return issues;
};
validation.type = ValidationIssueType.generic_name;
return validation;
}
@@ -166,6 +166,7 @@ export function validationHighwayAlmostJunction() {
return issues;
};
validation.type = ValidationIssueType.highway_almost_junction;
return validation;
}
+22 -12
View File
@@ -54,25 +54,35 @@ export function IssueManager(context) {
return issuesByEntityId[entityID];
};
var entityValidations = [
var genericEntityValidations = [
validations.validationDeprecatedTag(),
validations.validationDisconnectedHighway(),
validations.validationGenericName(),
validations.validationHighwayCrossingOtherWays(),
validations.validationHighwayAlmostJunction(),
validations.validationMapCSSChecks(),
validations.validationMissingTag(),
validations.validationOldMultipolygon(),
validations.validationTagSuggestsArea()
validations.validationOldMultipolygon()
];
function validateEntity(entity) {
return _flatten(_map(
entityValidations,
function(fn) {
return fn(entity, context);
var issues = [];
// runs validation and appends resulting issues, returning true if validation passed
function runValidation(fn) {
var typeIssues = fn(entity, context);
issues = issues.concat(typeIssues);
return typeIssues.length === 0;
}
// other validations require feature to be tagged
if (!runValidation(validations.validationMissingTag())) return issues;
if (entity.type === 'way') {
if (runValidation(validations.validationHighwayAlmostJunction())) {
// only check for disconnected highway if no almost junctions
runValidation(validations.validationDisconnectedHighway());
}
));
runValidation(validations.validationHighwayCrossingOtherWays());
runValidation(validations.validationTagSuggestsArea());
}
genericEntityValidations.forEach(function(fn) {
runValidation(fn);
})
return issues;
}
self.validate = function() {
+2
View File
@@ -6,6 +6,7 @@ import {
} from './validation_issue';
export function validationManyDeletions() {
var threshold = 100;
var validation = function(changes, context) {
@@ -34,6 +35,7 @@ export function validationManyDeletions() {
return issues;
};
validation.type = ValidationIssueType.map_rule_issue;
return validation;
}
+4 -1
View File
@@ -1,5 +1,7 @@
import { services } from '../services';
import {
ValidationIssueType
} from './validation_issue';
export function validationMapCSSChecks() {
var validation = function(entity, context) {
if (!services.maprules) return [];
@@ -17,6 +19,7 @@ export function validationMapCSSChecks() {
return issues;
};
validation.type = ValidationIssueType.map_rule_issue;
return validation;
}
+1
View File
@@ -58,6 +58,7 @@ export function validationMissingTag() {
return issues;
};
validation.type = ValidationIssueType.missing_tag;
return validation;
}
+5 -1
View File
@@ -13,7 +13,7 @@ import {
export function validationOldMultipolygon() {
return function validation(entity, context) {
var validation = function(entity, context) {
var issues = [];
var graph = context.graph();
var mistaggedMultipolygon = osmIsSimpleMultipolygonOuterMember(entity, graph);
@@ -47,4 +47,8 @@ export function validationOldMultipolygon() {
}
return issues;
};
validation.type = ValidationIssueType.old_multipolygon;
return validation;
}
+1
View File
@@ -76,6 +76,7 @@ export function validationTagSuggestsArea() {
return issues;
};
validation.type = ValidationIssueType.tag_suggests_area;
return validation;
}