Display info about hidden issues in the "no issues" UI

This commit is contained in:
Quincy Morgan
2019-05-01 14:50:56 -07:00
parent 1c15338bd5
commit eeaad79cb1
4 changed files with 107 additions and 12 deletions
+11 -2
View File
@@ -1294,12 +1294,21 @@ en:
other_features:
single: "1 issue with other features"
multiple: "{count} issues with other features"
other_features_elsewhere:
single: "1 issue with other features elsewhere"
multiple: "{count} issues with other features elsewhere"
disabled_rules:
single: "1 issue from disabled rules"
multiple: "{count} issues from disabled rules"
single: "1 issue with disabled rules"
multiple: "{count} issues with disabled rules"
disabled_rules_elsewhere:
single: "1 issue with disabled rules elsewhere"
multiple: "{count} issues with disabled rules elsewhere"
ignored_issues:
single: "1 ignored issue"
multiple: "{count} ignored issues"
ignored_issues_elsewhere:
single: "1 ignored issue elsewhere"
multiple: "{count} ignored issues elsewhere"
options:
what:
title: "Check:"
+14 -2
View File
@@ -1587,13 +1587,25 @@
"single": "1 issue with other features",
"multiple": "{count} issues with other features"
},
"other_features_elsewhere": {
"single": "1 issue with other features elsewhere",
"multiple": "{count} issues with other features elsewhere"
},
"disabled_rules": {
"single": "1 issue from disabled rules",
"multiple": "{count} issues from disabled rules"
"single": "1 issue with disabled rules",
"multiple": "{count} issues with disabled rules"
},
"disabled_rules_elsewhere": {
"single": "1 issue with disabled rules elsewhere",
"multiple": "{count} issues with disabled rules elsewhere"
},
"ignored_issues": {
"single": "1 ignored issue",
"multiple": "{count} ignored issues"
},
"ignored_issues_elsewhere": {
"single": "1 ignored issue elsewhere",
"multiple": "{count} ignored issues elsewhere"
}
}
},
+7 -6
View File
@@ -67,15 +67,20 @@ export function coreValidator(context) {
// what: 'all', // 'all' or 'edited'
// where: 'all', // 'all' or 'visible'
// includeIgnored: false // true, false, or 'only'
// includeDisabledRules: false // true, false, or 'only'
// };
validator.getIssues = function(options) {
var opts = Object.assign({ what: 'all', where: 'all', includeIgnored: false }, options);
var opts = Object.assign({ what: 'all', where: 'all', includeIgnored: false, includeDisabledRules: false }, options);
var issues = Object.values(_issuesByIssueID);
var changes = context.history().difference().changes();
var view = context.map().extent();
return issues.filter(function(issue) {
if (_disabledRules[issue.type]) return false;
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;
// Sanity check: This issue may be for an entity that not longer exists.
// If we detect this, uncache and return false so it is not incluced..
@@ -89,10 +94,6 @@ export function coreValidator(context) {
}
}
if (opts.includeIgnored === 'only' && !_ignoredIssueIDs[issue.id]) return false;
if (!opts.includeIgnored && _ignoredIssueIDs[issue.id]) return false;
if (opts.what === 'edited') {
var isEdited = entityIds.some(function(entityId) { return changes[entityId]; });
if (entityIds.length && !isEdited) return false;
+75 -2
View File
@@ -289,14 +289,14 @@ export function uiIssues(context) {
noIssuesMessage
.append('strong')
.text(t('issues.no_issues.message.everything'));
.attr('class', 'message');
noIssuesMessage
.append('br');
noIssuesMessage
.append('span')
.text(t('issues.no_issues.hidden_issues.none'));
.attr('class', 'details');
}
function renderIgnoredIssuesReset(selection) {
@@ -395,6 +395,78 @@ export function uiIssues(context) {
context.validator().toggleRule(d);
}
function setNoIssuesText() {
function checkForHiddenIssues(cases) {
for (var type in cases) {
var opts = cases[type];
var hiddenIssues = context.validator().getIssues(opts);
if (hiddenIssues.length) {
var quantity = hiddenIssues.length === 1 ? 'single' : 'multiple';
_pane.select('.issues-none .details')
.text(t(
'issues.no_issues.hidden_issues.' + type + '.' + quantity,
{ count: hiddenIssues.length.toString() }
));
return;
}
}
_pane.select('.issues-none .details')
.text(t('issues.no_issues.hidden_issues.none'));
}
var messageType;
if (_options.what === 'edited' && _options.where === 'visible') {
messageType = 'edits_in_view';
checkForHiddenIssues({
elsewhere: { what: 'edited', where: 'all' },
other_features: { what: 'all', where: 'visible' },
disabled_rules: { what: 'edited', where: 'visible', includeDisabledRules: 'only' },
other_features_elsewhere: { what: 'all', where: 'all' },
disabled_rules_elsewhere: { what: 'edited', where: 'all', includeDisabledRules: 'only' },
ignored_issues: { what: 'edited', where: 'visible', includeIgnored: 'only' },
ignored_issues_elsewhere: { what: 'edited', where: 'all', includeIgnored: 'only' }
});
} else if (_options.what === 'edited' && _options.where === 'all') {
messageType = 'edits';
checkForHiddenIssues({
other_features: { what: 'all', where: 'all' },
disabled_rules: { what: 'edited', where: 'all', includeDisabledRules: 'only' },
ignored_issues: { what: 'edited', where: 'all', includeIgnored: 'only' }
});
} else if (_options.what === 'all' && _options.where === 'visible') {
messageType = 'everything_in_view';
checkForHiddenIssues({
elsewhere: { what: 'all', where: 'all' },
disabled_rules: { what: 'all', where: 'visible', includeDisabledRules: 'only' },
disabled_rules_elsewhere: { what: 'all', where: 'all', includeDisabledRules: 'only' },
ignored_issues: { what: 'all', where: 'visible', includeIgnored: 'only' },
ignored_issues_elsewhere: { what: 'all', where: 'all', includeIgnored: 'only' }
});
} else if (_options.what === 'all' && _options.where === 'all') {
messageType = 'everything';
checkForHiddenIssues({
disabled_rules: { what: 'all', where: 'all', includeDisabledRules: 'only' },
ignored_issues: { what: 'all', where: 'all', includeIgnored: 'only' }
});
}
_pane.select('.issues-none .message')
.text(t('issues.no_issues.message.' + messageType));
}
function update() {
var issuesBySeverity = context.validator().getIssuesBySeverity(_options);
@@ -448,6 +520,7 @@ export function uiIssues(context) {
issuesNone.classed('hide', hasIssues);
if (!hasIssues) {
renderIgnoredIssuesReset(issuesNone);
setNoIssuesText();
}
if (!_pane.select('.disclosure-wrap-issues_rules').classed('hide')) {