Files
iD/modules/ui/keepRight_header.js
2018-12-29 17:55:40 -05:00

84 lines
2.3 KiB
JavaScript

import { dataEn } from '../../data';
import { errorTypes } from '../../data/keepRight.json';
import { svgIcon } from '../svg';
import { t } from '../util/locale';
export function uiKeepRightHeader() {
var _error;
function errorTitle(d) {
var unknown = t('inspector.unknown');
if (!d) return unknown;
var errorType = d.error_type;
var template = errorTypes[errorType];
if (!template) return unknown;
// if there is a parent, save its error type e.g.:
// Error 191 = "highway-highway"
// Error 190 = "intersections without junctions" (parent)
var parentErrorType = (Math.floor(errorType / 10) * 10).toString();
var parentTemplate = errorTypes[parentErrorType];
if (!parentTemplate) return unknown;
var et = dataEn.QA.keepRight.errorTypes[errorType];
var pt = dataEn.QA.keepRight.errorTypes[parentErrorType];
if (et && et.title) {
return t('QA.keepRight.errorTypes.' + errorType + '.title');
} else if (pt && pt.title) {
return t('QA.keepRight.errorTypes.' + parentErrorType + '.title');
} else {
return unknown;
}
}
function keepRightHeader(selection) {
var header = selection.selectAll('.kr_error-header')
.data(
(_error ? [_error] : []),
function(d) { return d.status + d.id; }
);
header.exit()
.remove();
var headerEnter = header.enter()
.append('div')
.attr('class', 'kr_error-header');
var iconEnter = headerEnter
.append('div')
.attr('class', 'kr_error-header-icon')
.classed('new', function(d) { return d.id < 0; });
iconEnter
.append('div')
.attr('class', function(d) {
return 'preset-icon-28 kr_error kr_error-' + d.id + ' kr_error_type_' + d.error_type;
})
.call(svgIcon('#iD-icon-bolt', 'kr_error-fill'));
headerEnter
.append('div')
.attr('class', 'kr_error-header-label')
.text(errorTitle);
}
keepRightHeader.error = function(_) {
if (!arguments.length) return _error;
_error = _;
return keepRightHeader;
};
return keepRightHeader;
}