diff --git a/modules/ui/commit_warnings.js b/modules/ui/commit_warnings.js index d7ac748a2..568953b7c 100644 --- a/modules/ui/commit_warnings.js +++ b/modules/ui/commit_warnings.js @@ -1,39 +1,25 @@ -import _map from 'lodash-es/map'; - import { t } from '../util/locale'; import { modeSelect } from '../modes'; import { svgIcon } from '../svg'; import { tooltip } from '../util/tooltip'; import { utilEntityOrMemberSelector } from '../util'; -import _reduce from 'lodash-es/reduce'; -import _forEach from 'lodash-es/forEach'; -import _uniqBy from 'lodash-es/uniqBy'; export function uiCommitWarnings(context) { function commitWarnings(selection) { - var issues = context.validator().getIssues(); + var issuesBySeverity = { + warning: context.validator().getWarnings(), + error: context.validator().getErrors() + }; - issues = _reduce(issues, function(issues, val) { - var severity = val.severity; - if (issues.hasOwnProperty(severity)) { - issues[severity].push(val); - } else { - issues[severity] = [val]; - } - return issues; - }, {}); - - _forEach(issues, function(instances, severity) { - instances = _uniqBy(instances, function(val) { - return val.entity || (val.id + '_' + val.message.replace(/\s+/g,'')); - }); + for (var severity in issuesBySeverity) { + var issues = issuesBySeverity[severity]; var section = severity + '-section'; - var instanceItem = severity + '-item'; + var issueItem = severity + '-item'; var container = selection.selectAll('.' + section) - .data(instances.length ? [0] : []); + .data(issues.length ? [0] : []); container.exit() .remove(); @@ -55,14 +41,14 @@ export function uiCommitWarnings(context) { var items = container.select('ul').selectAll('li') - .data(instances); + .data(issues, function(d) { return d.id(); }); items.exit() .remove(); var itemsEnter = items.enter() .append('li') - .attr('class', instanceItem); + .attr('class', issueItem); itemsEnter .call(svgIcon('#iD-icon-alert', 'pre-text')); @@ -82,36 +68,30 @@ export function uiCommitWarnings(context) { items - .on('mouseover', mouseover) - .on('mouseout', mouseout) - .on('click', warningClick); - - function mouseover(d) { - if (d.entities) { - context.surface().selectAll( - utilEntityOrMemberSelector( - _map(d.entities, function(e) { return e.id; }), - context.graph() - ) - ).classed('hover', true); - } - } - - function mouseout() { - context.surface().selectAll('.hover') - .classed('hover', false); - } - - function warningClick(d) { - if (d.entities && d.entities.length > 0) { - context.map().zoomTo(d.entities[0]); - context.enter(modeSelect( - context, - _map(d.entities, function(e) { return e.id; }) - )); - } - } - }); + .on('mouseover', function(d) { + if (d.entities) { + context.surface().selectAll( + utilEntityOrMemberSelector( + d.entities.map(function(e) { return e.id; }), + context.graph() + ) + ).classed('hover', true); + } + }) + .on('mouseout', function() { + context.surface().selectAll('.hover') + .classed('hover', false); + }) + .on('click', function(d) { + if (d.entities && d.entities.length > 0) { + context.map().zoomTo(d.entities[0]); + context.enter(modeSelect( + context, + d.entities.map(function(e) { return e.id; }) + )); + } + }); + } }