diff --git a/data/core.yaml b/data/core.yaml index b0b05c196..734a38195 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -1166,10 +1166,12 @@ en: title: Issues description: Issues key: I - errors: Errors - warnings: Warnings - error_tooltip: error - warning_tooltip: warning + errors: + list_title: "Errors ({count})" + icon_tooltip: error + warnings: + list_title: "Warnings ({count})" + icon_tooltip: warning options: title: Options features_to_validate: diff --git a/dist/locales/en.json b/dist/locales/en.json index 300183fcb..7fa692a4c 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -1413,10 +1413,14 @@ "title": "Issues", "description": "Issues", "key": "I", - "errors": "Errors", - "warnings": "Warnings", - "error_tooltip": "error", - "warning_tooltip": "warning", + "errors": { + "list_title": "Errors ({count})", + "icon_tooltip": "error" + }, + "warnings": { + "list_title": "Warnings ({count})", + "icon_tooltip": "warning" + }, "options": { "title": "Options" }, diff --git a/modules/ui/entity_issues.js b/modules/ui/entity_issues.js index 400d4d364..6ac0e57c2 100644 --- a/modules/ui/entity_issues.js +++ b/modules/ui/entity_issues.js @@ -79,7 +79,7 @@ export function uiEntityIssues(context) { var iconSuffix = d.severity === 'warning' ? 'alert' : 'error'; d3_select(this) .append('div') - .attr('title', t('issues.'+d.severity+'_tooltip')) + .attr('title', t('issues.'+d.severity+'s.icon_tooltip')) .style('display', 'inline') .call(svgIcon('#iD-icon-' + iconSuffix, 'pre-text')); }); diff --git a/modules/ui/issues.js b/modules/ui/issues.js index 7c5b7c83b..7dd2358ca 100644 --- a/modules/ui/issues.js +++ b/modules/ui/issues.js @@ -165,7 +165,7 @@ export function uiIssues(context) { var iconSuffix = d.severity === 'warning' ? 'alert' : 'error'; d3_select(this) .append('div') - .attr('title', t('issues.'+d.severity+'_tooltip')) + .attr('title', t('issues.'+d.severity+'s.icon_tooltip')) .style('display', 'inline') .call(svgIcon('#iD-icon-' + iconSuffix, 'pre-text')); }); @@ -219,15 +219,30 @@ export function uiIssues(context) { } function update() { + + var errors = context.validator().getErrors(); + pane.select('.issues-errors').classed('hide', errors.length === 0); + if (errors.length > 0) { + pane.select('.hide-toggle-issues_errors .hide-toggle-text') + .text(t('issues.errors.list_title', { count: errors.length })) + if (!pane.select('.disclosure-wrap-issues_errors').classed('hide')) { + updateErrorsList(); + } + } + + var warnings = context.validator().getWarnings(); + pane.select('.issues-warnings').classed('hide', warnings.length === 0); + if (warnings.length > 0) { + pane.select('.hide-toggle-issues_warnings .hide-toggle-text') + .text(t('issues.warnings.list_title', { count: warnings.length })) + if (!pane.select('.disclosure-wrap-issues_warnings').classed('hide')) { + updateWarningsList(); + } + } + if (!pane.select('.disclosure-wrap-issues_options').classed('hide')) { updateFeatureApplicabilityList(); } - if (!pane.select('.disclosure-wrap-issues_errors').classed('hide')) { - updateErrorsList(); - } - if (!pane.select('.disclosure-wrap-issues_warnings').classed('hide')) { - updateWarningsList(); - } } function issues(selection) { @@ -311,7 +326,6 @@ export function uiIssues(context) { .append('div') .attr('class', 'issues-errors') .call(uiDisclosure(context, 'issues_errors', true) - .title(t('issues.errors')) .content(renderErrorsList) ); @@ -320,7 +334,6 @@ export function uiIssues(context) { .append('div') .attr('class', 'issues-warnings') .call(uiDisclosure(context, 'issues_warnings', true) - .title(t('issues.warnings')) .content(renderWarningsList) );