local p = {}
local ModuloWikidata = require('Módulo:Wikidata')
local ModuloFormatos = require('Módulo:Wikidata/Formatos')
local ModuloPaginas = require('Módulo:Páginas')
local ModuloArgs = require('Módulo:Argumentos')
local infobox = require('Módulo:Ficha').infobox
local elementoTabla = require('Módulo:Tablas').elemento
local obtenerIdioma = require('Módulo:Obtener idioma').obtenerIdioma
local enlazar = require('Módulo:Formato_texto').enlazar2
local propiedad = ModuloWikidata.propiedad
local argumentos = ModuloArgs.obtenerValorDeArgumentos
local formatoNumero = ModuloFormatos.formatoNumero2
local numeroUnidad = ModuloFormatos.formatoUnidad2
-- :: Estilos por defecto
local ClaseTitulo = 'deporte'
local ColorTitulo = '#ccf'
local EstiloEtiqueta = 'background: #ddf;width:30%;'
function p.ficha(frame)
ModuloWikidata:setFrame(frame)
ModuloArgs.obtenerTablaDeArgumentos(frame)
local Participaciones, DatosCOI
local Entidad = mw.wikibase.getEntity(argumentos{'id'}) or {}
local PaisID = elementoTabla(Entidad, 'claims', 'P17', 1, 'mainsnak', 'datavalue', 'value', 'id')
local InstanciaDeId = elementoTabla(Entidad, 'claims', 'P31', 1, 'mainsnak', 'datavalue', 'value', 'id')
local Juegos = argumentos{'juegos', {elementoTabla, Entidad, 'claims', 'P17', 1, 'mainsnak', 'datavalue', 'value', 'id'}}
if InstanciaDeId == 'Q3327913' or InstanciaDeId == 'Q3317976' or InstanciaDeId == 'Q46195901' then
-- DatosCOI = mw.loadData('Módulo:Ficha de país en los Juegos Paralímpicos/datos')
Participaciones = mw.loadData('Módulo:Ficha de país en los Juegos Olímpicos/Juegos Olímpicos/participaciones')
else
-- DatosCOI = mw.loadData('Módulo:Ficha de país en los Juegos Olímpicos/datos')
Participaciones = mw.loadData('Módulo:Ficha de país en los Juegos Olímpicos/Juegos Olímpicos/participaciones')
end
local ClaseEvento = (function()
if InstanciaDeId == 'Q46195901' then return {'Juegos Paralímpicos', 'historia paralímpica', '[[Anexo:Códigos_del_COI|Código CPI]]', '[[Comité_Paralímpico_Nacional|CPN]]'} end
return {'Juegos Olímpicos', 'historia olímpica', '[[Anexo:Códigos_del_COI|Código COI]]', '[[Comité_olímpico_nacional|CON]]'}
end)()
local COI = (function()
local COI = argumentos{'COI', 'CNO', 'CPN'}
if PaisID then return propiedad(mw.wikibase.getEntity(PaisID), 'P984', {['uno'] = 'sí'}) end
end)()
local Pais = (function()
-- if DatosCOI[COI] then
-- if DatosCOI[COI][Juegos] then
-- return DatosCOI[COI][Juegos][1]
-- end
-- end
return mw.wikibase.sitelink(PaisID) or mw.wikibase.label(PaisID)
end)()
local PaisTitulo = mw.ustring.gsub(Pais, '%s%(.*%)', '') .. ' en los ' .. ClaseEvento[1];
local PaisEnlace = enlazar(Pais, mw.ustring.gsub(Pais, '%s%(.*%)', ''))
local Comite = (function()
-- if DatosCOI[COI] then
-- if DatosCOI[COI][Juegos] then
-- return DatosCOI[COI][Juegos][2]
-- end
-- end
-- Propiedad propuesta en Wikidata
return argumentos{'nombreCOI', {propiedad, Entidad, 'PXXX', {['uno'] = 'sí'}}}
end)()
local Bandera = (function()
-- if DatosCOI[COI] then
-- if DatosCOI[COI][Juegos] then
-- return DatosCOI[COI][Juegos][3]
-- end
-- end
return ModuloWikidata.obtenerImagenWikidata(Entidad, 'P41') or ModuloWikidata.obtenerImagenWikidata(mw.wikibase.getEntity(PaisID), 'P41')
end)()
local Pie = enlazar('Bandera de ' .. mw.ustring.gsub(Pais, '%s%(.*%)', ''))
local Evento = propiedad(Entidad, 'P1344', {['enlace'] = 'no', {['uno'] = 'sí'}})
local DeportistasEtiqueta = ''
if Pais then DeportistasEtiqueta = enlazar('Categoría:Deportistas olímpicos de ' .. mw.ustring.gsub(Pais, '%s%(.*%)', ''), {['namespace'] = 14, ['etiqueta'] = 'Deportistas', ['solotexto'] = true}) end
local Atletas = argumentos{'atletas'}
if Atletas and argumentos{'deportes'} then Atletas = Atletas .. ' en ' .. argumentos{'deportes'} .. ' deportes' end
local Abanderado = argumentos{'portador bandera', 'portador_bandera', {propiedad, 'P3022'}}
local MedallasEtiq = 'Medallas'
local Puesto = argumentos{'puesto', 'rank', {'propiedad', 'P1352'}}
if Evento then MedallasEtiq = enlazar('Anexo:Medallero de los ' .. Evento, 'Medallero') end
if Puesto then MedallasEtiq = MedallasEtiq .. '<br>Puesto: ' .. Puesto end
local tablaMedallas = {}
local Medallas = {}
local Obj = elementoTabla(Entidad, 'claims', 'P166')
if Obj then
for k, v in pairs(Obj) do
Premio = elementoTabla(v, 'mainsnak', 'datavalue', 'value', 'id')
Cantidad = tonumber(elementoTabla(v, 'qualifiers', 'P1114', 1, 'datavalue', 'value', 'amount')) or 0
if Cantidad then Medallas[Premio] = Cantidad end
end
end
local Oro = tonumber(Medallas['Q15243387']) or tonumber(Medallas['Q15243424']) or tonumber(argumentos{'oro'}) or 0
local Plata = tonumber(Medallas['Q15889641']) or tonumber(Medallas['Q15243447']) or tonumber(argumentos{'plata'}) or 0
local Bronce= tonumber(Medallas['Q15889643']) or tonumber(Medallas['Q15243454']) or tonumber(argumentos{'bronce'}) or 0
table.insert(tablaMedallas, '<table>')
table.insert(tablaMedallas, '<td style="background:gold; width:4em; text-align:center;">[[Archivo:Gold medal.svg|20px|link=|Oro]]<br><span style="font-size:125%;">' .. Oro .. '</span></td>')
table.insert(tablaMedallas, '<td style="background:silver; width:4em; text-align:center;">[[Archivo:Silver medal.svg|20px|link=|Plata]]<br><span style="font-size:125%;">' .. Plata .. '</span></td>')
table.insert(tablaMedallas, '<td style="background:#cc9966; width:4em; text-align:center;">[[Archivo:Bronze medal.svg|20px|link=|Bronce]]<br><span style="font-size:125%;">' .. Bronce .. '</span></td>')
table.insert(tablaMedallas, '<td style="width:4em; text-align:center; border-top:1px solid #aaa">[[Archivo:GoldSilverBronze medals.svg|link=|40px|Total]]<br><span style="font-size:125%;">' .. Oro + Plata + Bronce .. '</span></td>')
table.insert(tablaMedallas, '</table>')
tablaMedallas = table.concat(tablaMedallas)
local JuegosVerano, JuegosInvierno
if PaisID then
local JuegosVeranoDatos = Participaciones[PaisID][0]
JuegosVerano_ = {}
JuegosVerano = {}
-- Generar una nueva tabla a partir de la tabla de solo lectura
for k, v in pairs(JuegosVeranoDatos) do
JuegosVerano_[k] = v
end
-- Ordenar la tabla intermedia y llenar la tabla final
for k, v in orderedPairs(JuegosVerano_) do
table.insert(JuegosVerano, v)
end
local JuegosInviernoDatos = Participaciones[PaisID][1]
JuegosInvierno_ = {}
JuegosInvierno = {}
-- Generar una nueva tabla a partir de la tabla de solo lectura
for k, v in pairs(JuegosInviernoDatos) do
JuegosInvierno_[k] = v
end
-- Ordenar la tabla intermedia y llenar la tabla final
for k, v in orderedPairs(JuegosInvierno_) do
table.insert(JuegosInvierno, v)
end
local OtrasApariciones = (function()
if COI then
if InstanciaDeId == 'Q3327913' or InstanciaDeId == 'Q3317976' or InstanciaDeId == 'Q46195901' then
return frame:preprocess('{{Ficha de país en los Juegos Paralímpicos/otras|{{{' .. COI .. '|}}}}}')
else
return frame:preprocess('{{Ficha de país en los Juegos Olímpicos/otras|{{{' .. COI .. '|}}}}}')
end
end
end)()
JuegosVerano = table.concat(JuegosVerano, ' • ')
JuegosInvierno = table.concat(JuegosInvierno, ' • ')
--OtrasApariciones= table.concat(OtrasApariciones, ' • ')
end
local TablaFicha = {
titulo = PaisTitulo,
clasetitulo = ClaseTitulo,
colorfondotitulo = ColorTitulo,
estiloetiqueta = EstiloEtiqueta,
estiloseccion = EstiloEtiqueta,
imagen = Bandera,
["tamañoimagen"] = TamanoImagen,
pie = Pie,
estilopie = "font-size:88%",
-- :: General
{tipo="sección",
estilodatos = 'font-size:120%; font-weight:bold',
{ClaseEvento[3], COI},
},
{tipo="sección",
{ClaseEvento[4], Comite},
},
{tipo = 'sección',
titulo = enlazar(Evento),
{DeportistasEtiqueta, Atletas},
{MedallasEtiq, tablaMedallas}
},
{tipo='sección',
titulo = enlazar(PaisTitulo, ClaseEvento[2]),
{enlazar('Juegos_Olímpicos_de_Verano', 'Juegos de verano'), JuegosVerano},
{enlazar('Juegos_Olímpicos_de_Invierno', 'Juegos de invierno'), JuegosInvierno},
{'Otras apaciciones', OtrasApariciones},
}
}
return require('Módulo:Ficha').infobox(TablaFicha)
end
return p