mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-13 21:02:25 +02:00
Display info about hidden issues in the "no issues" UI
This commit is contained in:
+11
-2
@@ -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:"
|
||||
|
||||
Vendored
+14
-2
@@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -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
@@ -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')) {
|
||||
|
||||
Reference in New Issue
Block a user