80 lines
2.3 KiB
JavaScript
80 lines
2.3 KiB
JavaScript
var WarningsRenderer = {};
|
|
|
|
// renders a Wikibase entity into a link
|
|
WarningsRenderer._renderEntity = function(entity) {
|
|
if (!entity.id && entity.value) {
|
|
entity.id = entity.value.id;
|
|
}
|
|
var id = entity.id;
|
|
var is_new = entity.siteIri == "http://localhost/entity/";
|
|
if (is_new) {
|
|
id = $.i18n('wikidata-preview/new-id');
|
|
}
|
|
var fullLabel = id;
|
|
if (entity.label) {
|
|
fullLabel = entity.label + ' (' + id + ')';
|
|
}
|
|
|
|
var url = entity.iri;
|
|
if (!url && entity.value) {
|
|
url = 'http://www.wikidata.org/entity/'+entity.value.id;
|
|
}
|
|
|
|
if (is_new) {
|
|
return '<span class="wb-preview-new-entity">'+fullLabel+'</span>';
|
|
} else {
|
|
return '<a href="'+url+'" class="wb-preview-entity" target="_blank">'+fullLabel+'</a>';
|
|
}
|
|
}
|
|
|
|
// replaces the issue properties in localization template
|
|
WarningsRenderer._replaceIssueProperties = function(template, properties) {
|
|
if (!properties) {
|
|
return template;
|
|
}
|
|
var expanded = template;
|
|
for (var key in properties) {
|
|
if (properties.hasOwnProperty(key)) {
|
|
var rendered = properties[key];
|
|
if (key.endsWith('_entity')) {
|
|
rendered = WarningsRenderer._renderEntity(properties[key]);
|
|
}
|
|
expanded = expanded.replace(new RegExp('{'+key+'}', 'g'), rendered);
|
|
}
|
|
}
|
|
return expanded;
|
|
}
|
|
|
|
WarningsRenderer._renderWarning = function(warning) {
|
|
var localized = $.i18n('warnings-messages')[warning.type];
|
|
var title = warning.type;
|
|
var body = "";
|
|
if (localized) {
|
|
title = WarningsRenderer._replaceIssueProperties(localized.title, warning.properties);
|
|
body = WarningsRenderer._replaceIssueProperties(localized.body, warning.properties);
|
|
}
|
|
var tr = $('<tr></tr>').addClass('wb-warning');
|
|
var severityTd = $('<td></td>')
|
|
.addClass('wb-warning-severity')
|
|
.addClass('wb-warning-severity-'+warning.severity)
|
|
.appendTo(tr);
|
|
var bodyTd = $('<td></td>')
|
|
.addClass('wb-warning-body')
|
|
.appendTo(tr);
|
|
var h1 = $('<h1></h1>')
|
|
.html(title)
|
|
.appendTo(bodyTd);
|
|
var p = $('<p></p>')
|
|
.html(body)
|
|
.appendTo(bodyTd);
|
|
var countTd = $('<td></td>')
|
|
.addClass('wb-warning-count')
|
|
.appendTo(tr);
|
|
var countSpan = $('<span></span>')
|
|
.text(warning.count)
|
|
.appendTo(countTd);
|
|
return tr;
|
|
}
|
|
|
|
|