diff --git a/modules/core/validator.js b/modules/core/validator.js index 61515355d..9ea87accf 100644 --- a/modules/core/validator.js +++ b/modules/core/validator.js @@ -117,13 +117,23 @@ export function coreValidator(context) { }; - validator.getEntityIssues = function(entityID) { + validator.getEntityIssues = function(entityID, options) { var issueIDs = _issuesByEntityID[entityID]; if (!issueIDs) return []; + var opts = options || {}; + return Array.from(issueIDs) .map(function(id) { return _issuesByIssueID[id]; }) - .filter(function(issue) { return !_disabledRules[issue.type] && !_ignoredIssueIDs[issue.id]; }); + .filter(function(issue) { + if (opts.includeDisabledRules === 'only' && !_disabledRules[issue.type]) return false; + if (!opts.includeDisabledRules && _disabledRules[issue.type]) return false; + + if (opts.includeIgnored === 'only' && !_ignoredIssueIDs[issue.id]) return false; + if (!opts.includeIgnored && _ignoredIssueIDs[issue.id]) return false; + + return true; + }); }; diff --git a/modules/ui/entity_issues.js b/modules/ui/entity_issues.js index a49b04521..004b4c8a5 100644 --- a/modules/ui/entity_issues.js +++ b/modules/ui/entity_issues.js @@ -31,9 +31,13 @@ export function uiEntityIssues(context) { update(); } + function getIssues() { + return context.validator().getEntityIssues(_entityID, { includeDisabledRules: true }); + } function update() { - var issues = context.validator().getEntityIssues(_entityID); + + var issues = getIssues(); _selection .classed('hide', issues.length === 0); @@ -44,7 +48,7 @@ export function uiEntityIssues(context) { function render(selection) { - var issues = context.validator().getEntityIssues(_entityID); + var issues = getIssues(); _activeIssueID = issues.length > 0 ? issues[0].id : null; diff --git a/modules/validations/almost_junction.js b/modules/validations/almost_junction.js index f05800d72..64e36817c 100644 --- a/modules/validations/almost_junction.js +++ b/modules/validations/almost_junction.js @@ -25,8 +25,10 @@ export function validationAlmostJunction() { osmRoutableHighwayTagValues[entity.tags.highway]; } - function isNoexit(node) { - return node.tags.noexit && node.tags.noexit === 'yes'; + function isTaggedAsNotContinuing(node) { + return node.tags.noexit === 'yes' || + node.tags.amenity === 'parking_entrance' || + (node.tags.entrance && node.tags.entrance !== 'no'); } @@ -127,7 +129,7 @@ export function validationAlmostJunction() { if (osm && !osm.isDataLoaded(node.loc)) { return false; } - if (isNoexit(node) || graph.parentWays(node).length !== 1) { + if (isTaggedAsNotContinuing(node) || graph.parentWays(node).length !== 1) { return false; }