local p = {}
local ModuloArgumentos = require('Módulo:Argumentos')
local ModuloFicha = require('Módulo:Ficha')
local ModuloWikidata = require('Module:Wikidata')
local ModuloPaginas = require('Módulo:Páginas')
local elementoTabla = require('Módulo:Tablas').elemento
local argumentos
local Entidad
function p.Ficha(frame)
argumentos = ModuloArgumentos.obtenerArgumentosConValor(frame)
Entidad = mw.wikibase.getEntity(argumentos.id) or {}
local colorPrimario
local colorSecundario
local Titulo = argumentos['título'] or obtenerEtiquetaWikidata() or ModuloPaginas.nombrePagina({desambiguar='sí'})
-- Obtener colores de fichas
local catCod = string.sub(Titulo, -3,-3)
if catCod == "1" then
colorPrimario = "#b0c4de"
colorSecundario = "#d8e2ee"
elseif catCod == "2" then
colorPrimario = "#8fbc8f"
colorSecundario = "#afdeaf"
elseif catCod == "3" then
colorPrimario = "#ffdead"
colorSecundario = "#fbe7c9"
elseif catCod == "4" then
colorPrimario = "#ffa07a"
colorSecundario = "#f9d9cd"
elseif catCod == "5" then
colorPrimario = "#ff5050"
colorSecundario = "#f99999"
else
colorPrimario = "#ccccff"
colorSecundario = "#ddddff"
end
-- Propiedades
local Imagen = argumentos['captura']
local Pie
if Imagen then
Pie = argumentos['pie']
else
Imagen, Pie = obtenerImagenWikidata()
end
local Tamano = argumentos['tamaño'] or "250px"
local Codigo = argumentos['código'] or string.sub(Titulo, -3) or ''
local Texto = argumentos['texto'] or propiedad('P1451') or ''
local RFC = argumentos['rfc'] or propiedad('P892') or ''
local Creador = argumentos['creador'] or propiedad('P170', {['enlace']='sí', ['linkback']='sí'}) or ''
local Uso = argumentos['uso'] or propiedad('P366') or ''
local FichaCodigo = {
entidad = argumentos.id,
titulo = Titulo,
clasetitulo = 'comunicación',
estilotitulo = 'background-color:' .. colorPrimario .. '; color:#000;',
estiloseccion = 'background-color:' .. colorPrimario .. '; color:#000;',
estiloetiqueta = 'background-color:' .. colorSecundario .. '; width:35%',
estilodatos = 'width:65%',
imagen = Imagen,
['tamañoimagen'] = Tamano,
pie = Pie,
estilopie = 'font-size:88%',
{tipo='sección',
titulo = "Información",
{'Código de estado', Codigo},
{'Texto asociado', Texto},
{'[[Request For Comments|RFC]]', 'RFC ' .. RFC},
{'Creador', Creador},
{'Uso', Uso},
}
}
return ModuloFicha.infobox(FichaCodigo)
end
function obtenerEtiquetaWikidata()
if Entidad and Entidad.labels and Entidad.labels.es then
return Entidad.labels.es.value
end
end
function obtenerImagenWikidata()
local imagen, valorImagen, piesDeImagen, k, pieDeImagen
if not Entidad then
return
end
-- Obtener la primera imagen en Wikidata de la persona
local imagen = elementoTabla(Entidad, 'claims','P18',1)
if not imagen then
return
end
valorImagen = elementoTabla(imagen, 'mainsnak','datavalue','value')
piesDeImagen = elementoTabla(imagen, 'qualifiers','P2096')
-- Encontrar el pie en español
if piesDeImagen then
for k,pieDeImagen in pairs(piesDeImagen) do
if pieDeImagen.datavalue.value.language == 'es' then
return valorImagen, pieDeImagen.datavalue.value.text
end
end
end
-- Si no hay pie de imagen en español comprueba si hay fecha especificada para la imagen
piesDeImagen = elementoTabla(imagen, 'qualifiers', 'P585')
if piesDeImagen and piesDeImagen[1] then
return valorImagen, nombre .. ' en ' .. require('Módulo:Wikidata/Fecha').FormateaFechaHora(piesDeImagen[1].datavalue.value, {['formatoFecha']='año',['enlace']='no'})
end
-- Sin pie de imagen en español
return valorImagen
end
function propiedad(idPropiedad,opciones)
if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then
if not opciones then
opciones = {['linkback']='sí'}
end
opciones.entityId = Entidad.id
opciones.propiedad = idPropiedad
valorPropiedad = ModuloWikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])
return valorPropiedad
end
end
return p