mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-19 23:14:47 +02:00
680fdb6b54
Some error types don't require unique strings and can share common strings among the category. This makes that possible as well as adding support for some other types of error for demonstrative purposes.
102 lines
2.7 KiB
JavaScript
102 lines
2.7 KiB
JavaScript
import { dataEn } from '../../data';
|
|
import { t } from '../util/locale';
|
|
|
|
|
|
export function uiOsmoseHeader() {
|
|
var _error;
|
|
|
|
|
|
function errorTitle(d) {
|
|
var unknown = t('inspector.unknown');
|
|
|
|
if (!d) return unknown;
|
|
|
|
// Some errors fall back to their category for strings
|
|
var i, et;
|
|
var keys = [d.error_type, d.item];
|
|
for (i = 0; i < 2; i++) {
|
|
et = dataEn.QA.osmose.error_types[keys[i]];
|
|
|
|
if (et && et.title) {
|
|
return t('QA.osmose.error_types.' + keys[i] + '.title');
|
|
}
|
|
}
|
|
|
|
return unknown;
|
|
}
|
|
|
|
|
|
function osmoseHeader(selection) {
|
|
var header = selection.selectAll('.error-header')
|
|
.data(
|
|
(_error ? [_error] : []),
|
|
function(d) { return d.id + '-' + (d.status || 0); }
|
|
);
|
|
|
|
header.exit()
|
|
.remove();
|
|
|
|
var headerEnter = header.enter()
|
|
.append('div')
|
|
.attr('class', 'error-header');
|
|
|
|
var iconEnter = headerEnter
|
|
.append('div')
|
|
.attr('class', 'error-header-icon')
|
|
.classed('new', function(d) { return d.id < 0; });
|
|
|
|
var svgEnter = iconEnter
|
|
.append('svg')
|
|
.attr('width', '20px')
|
|
.attr('height', '30px')
|
|
.attr('viewbox', '0 0 20 30')
|
|
.attr('class', function(d) {
|
|
return [
|
|
'preset-icon-28',
|
|
'qa_error',
|
|
d.service,
|
|
'error_id-' + d.id,
|
|
'error_type-' + d.error_type,
|
|
'category-' + d.item
|
|
].join(' ');
|
|
});
|
|
|
|
svgEnter
|
|
.append('polygon')
|
|
.attr('fill', 'currentColor')
|
|
.attr('class', 'qa_error-fill')
|
|
.attr('points', '16,3 4,3 1,6 1,17 4,20 7,20 10,27 13,20 16,20 19,17.033 19,6');
|
|
|
|
svgEnter
|
|
.append('use')
|
|
.attr('class', 'icon-annotation')
|
|
.attr('width', '11px')
|
|
.attr('height', '11px')
|
|
.attr('transform', 'translate(4.5, 7)')
|
|
.attr('xlink:href', function(d) {
|
|
var picon = d.icon;
|
|
|
|
if (!picon) {
|
|
return '';
|
|
} else {
|
|
var isMaki = /^maki-/.test(picon);
|
|
return '#' + picon + (isMaki ? '-11' : '');
|
|
}
|
|
});
|
|
|
|
headerEnter
|
|
.append('div')
|
|
.attr('class', 'error-header-label')
|
|
.text(errorTitle);
|
|
}
|
|
|
|
|
|
osmoseHeader.error = function(val) {
|
|
if (!arguments.length) return _error;
|
|
_error = val;
|
|
return osmoseHeader;
|
|
};
|
|
|
|
|
|
return osmoseHeader;
|
|
} |