Módulo:Ficha Wikidata
De Bahaipedia
--[[
*****************************************************************
* Nombre: Módulo:Ficha Wikidata
* Descripción: Este módulo genera una ficha solo con los valores
* de todas las propiedades de Wikidata
* Estado: En creación
*****************************************************************
]]
local p = {}
local ficha = require('Módulo:Ficha')
local Wikidata = require( 'Módulo:Ficha/Wikidata')
local elemento = mw.wikibase.getEntityObject() --Tabla con todos los datos de Wikidata
local es = mw.language.new('es') -- Configuración de idioma español
local marco
local cd = true
local pais, web, mapa, unidad = '';
--[[
====================================================================
Eliminar propiedades irrelevantes
====================================================================
]]
function filtrarPropiedades(propComprobar)
-- == Popiedades que no aparecerán en ninguna ficha ==
local propIrrelevantes = {'P107','P646','P373','P214','P227','P244','P213','P1025', 'P268','P345','P269','P948','P402','P910','P968','P998','P982','P349', 'P865', 'P434', 'P906', 'P865', 'P935', 'P691','P1036','P1273','P1566', 'P1465', 'P1792','P1464','P2498','P2581','P1296','P6665'}
-- == Comprobamos coincidencia ==
for k,v in pairs(propIrrelevantes) do -- Se comprueba si coincide propiedad con propComprobar
if propComprobar == v then return false end -- Si hay coincidencia devuelve false
end
return true -- Si no hay coincidencia devuelve true
end
--[[
====================================================================
Seleccionamos configuración
====================================================================
]]
function configuracion(tablaValor,propiedades)
--[[
local formato = include('Módulo:Ficha Wikidata/Formatos')
if formato.getTablaParametros(tablaValor, propiedades) ~= nil then
return formato.getTablaParametros(tablaValor,propiedades)
end
]]
local tablaParametros = {}
local valorID = tablaValor[1]['mainsnak']['datavalue']['value']['numeric-id']
local valor = mw.wikibase.label('q'.. valorID)
if valor == 'ser humano' then
tablaParametros['tipocabecera'] = 'humano fn'
tablaParametros['clase'] = 'biography vcard'
tablaParametros['colorfondo'] = '#8DB1C3'
tablaParametros['colortexto'] = '#fff'
elseif valor == 'ciudad' or valor == 'localidad' or valor == 'villa' or valor == 'pueblo' or valor == 'municipio' or valor == 'comuna' or valor == 'barrio' or valor == 'concejo' or valor == 'capital' then
local coor = {}
local pais
tablaParametros['tipocabecera'] = 'mapa fn org'
tablaParametros['clase'] = 'geography vcar'
tablaParametros['colorfondo'] = 'transparet'
--tablaParametros['estilosubtitulo1'] = 'line-height: 2.4em; padding:3px; font-size:100%; font-weight:bold; background-color:#cddeff'
--tablaParametros['estiloetiqueta'] = 'line-height: 1.4em; padding:1px 7px'
-- tablaParametros['estilodatos'] = 'line-height: 1.4em; padding:1px 7px 1px 1px'
tablaParametros['estiloetiqueta'] = 'padding:2px 7px;'
tablaParametros['estilodatos'] = 'padding:2px 7px 1px 1px'
for k, v in pairs(propiedades) do
mw.log('propiedades esp '.. v.propiedad)
if v.propiedad == 'P625' then -- Coordenadas
tablaParametros['estiloetiqueta1'] = 'font-size:100;padding:0px 7px'
tablaParametros['etiqueta1'] = '[[Coordenadas geográficas|Coordenadas]]'
tablaParametros['estilodatos1'] = 'white-space:nowrap;padding:0px 1px 1px 1px'
tablaParametros['datos1'] = Wikidata.getDeclaracion(v.valor, v.propiedad, nil, nil, nil, nil)
coor['latitud'] = Wikidata.getDeclaracion(v.valor, 'latitud', nil, nil, nil, nil)
coor['longitud'] = Wikidata.getDeclaracion(v.valor, 'longitud', nil, nil, nil, nil)
table.remove (propiedades, k)
cd = false
elseif v.propiedad == 'P12' and pais then
tablaParametros['etiqueta2'] = tostring('[[Entidad subnacional|Unidad]]')
unidad = Wikidata.getDeclaracion(v.valor, v.propiedad, nil, nil, nil, nil)
tablaParametros['datos2'] = unidad
tablaParametros['subtitulo1'] = unidad .. ' de ' .. pais
elseif v.propiedad == 'P37' then
tablaParametros['estiloetiqueta3'] = 'border:0;font-weight:100; padding:0px 7px'
tablaParametros['estilodatos3'] = 'border:0;font-weight:100;padding:0px 1px 0px 1px'
tablaParametros['etiqueta3'] = tostring('• [[Anexo:Países|País]]')
tablaParametros['datos3'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', 'Wikidata/Formatos', 'formatBandera2', nil, nil)
mapa = Wikidata.getDeclaracion(v.valor, v.propiedad, nil, nil, nil, nil,'no')
pais = Wikidata.getDeclaracion(v.valor, v.propiedad, nil, nil, nil, nil)
elseif v.propiedad == 'P131' then
tablaParametros['estiloetiqueta4'] = 'border:0;font-weight:100; padding:0px 7px'
tablaParametros['estilodatos4'] = 'border:0;font-weight:100;padding:0px 1px 1px 1px'
cd = false
tablaParametros['etiqueta4'] = ''
--local entidad = Wikidata.getDeclaracion(v,k , '<br>• ','Wikidata/Formatos' ,'formatId' , nil, nil, nil,'P12')
--local entidadComparar = Wikidata.getDeclaracion(v.valor, v.propiedad,'', 'Wikidata/Formatos','formatId' , 'no', nil, nil,'P12')
mw.log(entidadComparar)
-- if entidad and entidad ~= '' then
-- tablaParametros['etiqueta4'] = '• ' .. entidad
-- else
-- tablaParametros['etiqueta4'] = '• Entidades superiores'
-- end
--tablaParametros['datos4'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', 'Wikidata/Formatos', 'formatBandera2', nil,nil, entidadComparar)
tablaParametros['datos4'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', 'Wikidata/Formatos', 'formatFicha')
end
local nombre = Wikidata.getEtiqueta()
if mapa and nombre and coor then
tablaParametros['estiloimagen'] = 'padding:0.8em 0.7em 0em 0.7em; text-align:center'
tablaParametros['imagenflotante'] = 'si'
tablaParametros['imagen'] = require('Módulo:Ficha Wikidata/Mapa').mapaLoc(mapa, nombre, coor, marco)
tablaParametros['estilopie'] = 'font-size:smaller; font-weight:bold'
tablaParametros['pie'] ='Ubicación de ' .. nombre.. ' en ' .. mapa
end
end
elseif valor == 'provincia' or valor =='estado' or valor =='región' or valor =='comunidad autónoma'or valor == 'departamento' or valor =='comarca' or valor =='merindad' or valor =='partido judicial' then
tablaParametros['colorfondo'] = 'transparet'
tablaParametros['tipocabecera'] = 'mapa fn org'
tablaParametros['clase'] = 'geography vcar'
elseif valor == 'pais' or valor == 'estado soberano' then
tablaParametros['tipocabecera'] = 'mapa fn org'
tablaParametros['clase'] = 'geography vcar'
elseif valor == 'monte' or valor == 'montaña' or valor == 'volcán'then
tablaParametros['tipocabecera'] = 'mapa fn org'
tablaParametros['colorfondotitulo'] = '#e7dcc3'
--tablaParametros['colortexto'] = '#fff'
tablaParametros['estiloetiqueta'] = 'background-color:#e7dcc3;'
elseif valor == 'rio' or valor == 'océano' or valor == 'canal' or valor == 'Pólder' or valor == 'isla artificial' or valor == 'isla fluvial' or valor == 'mar' or valor =='lago' or valor == 'fiordo' or valor == 'golfo' or valor == 'estrecho' then
tablaParametros['tipocabecera'] = 'mapa fn org'
tablaParametros['colorfondotitulo'] = '#7793E0'
tablaParametros['colortexto'] = '#fff'
tablaParametros['estiloetiqueta'] = 'background:#ddf'
--tablaParametros['clase'] = 'geography vcar'
elseif valor == 'revista' then
tablaParametros['tipocabecera'] = 'revista'
tablaParametros['colorfondotitulo'] = '#D2691E'
tablaParametros['colortexto'] = '#fff'
tablaParametros['estiloetiqueta'] = 'background-color:#D2691E; color:#fff;'
elseif valor == 'libro' then
tablaParametros['tipocabecera'] = libro
tablaParametros['colorfondotitulo'] = '#ddf'
tablaParametros['estiloetiqueta'] = 'padding:1px 8px'
elseif valor == 'Arboreto' or valor == 'parque' then
tablaParametros['tipocabecera'] = libro
tablaParametros['colorfondotitulo'] = '#d0f0c0'
elseif valor == 'museo' or valor == 'museo de artes' then
tablaParametros['tipocabecera'] = 'conflicto'
tablaParametros['estilotitulo'] = 'color:white'
tablaParametros['colorfondotitulo'] = '#996633'
tablaParametros['colortexto'] = '#fff'
else
tablaParametros['colorfondotitulo'] = '#ddf'
tablaParametros['estiloetiqueta'] = 'padding:1px 8px'
end
return tablaParametros
end
function ordenarPropiedades(propiedades)
local propiedadesOrdenadas = {}
local num=1
for k,v in pairs(propiedades) do
if string.find(k,'P%d+') and v ~= '' then -- Comprobamos que son propiedades
--local num = tostring(k):match('^P([1-9]%d*)$')
--[[if k == 'P12' then
propiedadesOrdenadas[1] = {propiedad = k, valor = v }
elseif k == 'P37' then
propiedadesOrdenadas[2] = {propiedad = k, valor = v }
else
num = mw.ustring.gsub(k,'P','')
mw.log(num)
num = tonumber(num)
propiedadesOrdenadas[num] = {propiedad = k, valor = v }
end]]
propiedadesOrdenadas[num] = {propiedad = k, valor = v }
num = num+1
end
end
table.sort(propiedadesOrdenadas,function(a1,a2) return a1.propiedad < a2.propiedad end)
return propiedadesOrdenadas
end
local function getPropiedadNums(num)
return tonumber(mw.ustring.gsub(num,'P',''))
end
--[[
====================================================================
Pasamos las datos de Wikidata a una tabla
====================================================================
]]
function leerEtiquetas()
local propiedades = {}
local annadirFila = {}
local nuevasFilas = {}
local etiquetaFicha ={}
local num = 8
if Wikidata.getDeclaraciones() ~= '' then
propiedades = Wikidata.getDeclaraciones()
if propiedades == nil then return nil end
propiedades = ordenarPropiedades(propiedades)
for k,v in pairs(propiedades) do
mw.log('clave '.. v.propiedad )
--if string.find(k,'P%d+') then -- Comprobamos que son propiedades
if v.propiedad == 'P35' then -- Imagen
annadirFila['imagensuperior'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '', nil, nil, nil)
elseif v.propiedad == 'P12' then -- instancia de
nuevasFilas = configuracion(v.valor,propiedades)
elseif v.propiedad == 'P154' then -- Imagen Logo
annadirFila['imagenderecha'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '', nil, nil, nil)
elseif v.propiedad == 'P041' then -- Imagen de la bandera
annadirFila['imagenizquierda'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '', nil, nil, nil)
annadirFila['estilopieizquierdo'] = 'font-size:smaller; font-weight:bold'
annadirFila['pieizquierdo'] = 'Bandera'
elseif v.propiedad == 'P94' then -- Imagen del Escudo
annadirFila['imagenderecha'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '', nil, nil, nil)
annadirFila['estilopiederecho'] = 'font-size:smaller; font-weight:bold'
annadirFila['piederecho'] = 'Escudo'
elseif v.propiedad == 'P368' then -- prueba commons archivo multimedia
annadirFila['imagen'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '', nil, nil, nil)
elseif v.propiedad == 'P163' then -- Artículo de la bandera
annadirFila['pieizquierdo'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '', nil, nil, nil)
elseif v.propiedad == 'P237' then -- Artículo del escudo
annadirFila['piederecho'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '', nil, nil, nil)
elseif v.propiedad == 'P242' then -- mapa de localización
annadirFila['imagen']= '[[Archivo:'.. Wikidata.getDeclaracion(v.valor, v.propiedad, '|245px]]<br>[[Archivo:', nil, nil, nil)..'|245px]]'
elseif v.propiedad == 'P856' then -- mapa de localización
web = Wikidata.getDeclaracion(v.valor, v.propiedad,nil, nil, nil, nil)
elseif v.propiedad == 'P37' then --
annadirFila['etiqueta2'] = '[[País]]'
pais = Wikidata.getDeclaracion(v.valor, v.propiedad, nil, nil,nil, nil)
annadirFila['datos2'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', 'Wikidata/Formatos', 'formatBandera2', nil)
elseif v.propiedad == 'P131' then
annadirFila['etiqueta3'] = '[[d:Property:' .. k .. '|Situado en unidad administrativa]]'
annadirFila['datos3'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', 'Wikidata/Formatos', 'formatBandera2', nil)
elseif v.propiedad == 'P625' and cd then -- Coordenadas
annadirFila['etiqueta4'] = '[[Coordenadas geográficas|Coordenadas]]'
annadirFila['datos4'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', nil, nil, nil)
elseif v.propiedad == 'P06' then -- Jefe de gobierno
local cadenaEtiqueta, cadenaDatos
local mandatario = Wikidata.getDeclaracion(v.valor, v.propiedad,'<br>')
local cargo = Wikidata.getDeclaracion(v.valor, v.propiedad,'', 'Wikidata/Formatos','formatId' , nil, nil, nil,'P039')
local partido = Wikidata.getDeclaracion(v.valor, v.propiedad,'', 'Wikidata/Formatos','formatId' ,nil, nil, nil,'P102')
local mandato = ''
if cargo and cargo ~= '' and mandato and mandato ~= '' then
cadenaEtiqueta = cargo .. ' (' .. mandato .. ')'
elseif cargo and cargo ~= '' then
cadenaEtiqueta = cargo
else
cadenaEtiqueta = '[[d:Property:P6|Jefe de gobierno]]'
end
if partido and partido ~= '' then
cadenaDatos = mandatario .. ' (' .. partido .. ')'
else
cadenaDatos = mandatario
end
annadirFila['etiqueta6'] = cadenaEtiqueta
annadirFila['datos6'] = cadenaDatos
elseif v.propiedad == 'P1082' then -- Población
local censo = Wikidata.getDeclaracion(v.valor, v.propiedad, nil, nil, nil,'P585')
annadirFila['estiloetiqueta8'] = 'border:0;font-weight:100'
annadirFila['estilodatos8'] = 'border:0;font-weight:100'
if censo and censo ~= '' then
annadirFila['etiqueta7'] = '[[Población]] ('.. censo ..')'
else
annadirFila['etiqueta7'] = '[[Población]]'
end
annadirFila['datos7'] = ' '
annadirFila['etiqueta8'] = '• Total'
annadirFila['datos8'] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', nil, nil, nil) .. ' hab.'
elseif filtrarPropiedades(v.propiedad) then
num = num + 1
if mw.wikibase.label(v.propiedad) ~= nil and mw.wikibase.label(v.propiedad) ~= '' then
etiquetaFicha = es:ucfirst( mw.wikibase.label(v.propiedad))
else
etiquetaFicha = k
end
annadirFila['etiqueta' .. num] = '[[d:Property:' .. v.propiedad .. '|'.. etiquetaFicha .. ']]'
annadirFila['datos' .. num] = Wikidata.getDeclaracion(v.valor, v.propiedad, '<br>', nil, nil, nil)
end
end
end
annadirFila['titulo'] = Wikidata.getEtiqueta()
annadirFila['estilotitulo'] = 'padding:0'
annadirFila['estilosubtitulo1'] = 'font-size:100%; font-weight:bold; background-color:#cddeff'
annadirFila['estilodatos'] = 'padding:1px 8px 1px 1px'
annadirFila['tamañoimagenizquierda'] = '100x78px'
annadirFila['tamañoimagenderecha'] = '88x88px'
annadirFila['tamañoimagensuperior'] = '245px'
annadirFila['tamañoimagen'] = '245px'
annadirFila['tamañoimagen1'] = '245px'
annadirFila['tamañoimageninferior'] = '245px'
if web ~= '' and web ~= nil then
annadirFila['datos' .. num+1] = '['.. web .. ' Sitio web oficial]'
end
for k,v in pairs(nuevasFilas) do
annadirFila[k] = v -- Cargamos las filas según la configuración en la tabla
end
return annadirFila
--else
-- return nil
-- end
end
--[[
====================================================================
Función principal
====================================================================
]]
function _principal()
local parametros = leerEtiquetas()
if parametros ~= nil then
return ficha.infobox(parametros)
else
return '<span class="error">Página sin enlace a Wikidata</span>'
end
end
function p.principal(frame)
marco = frame
Wikidata:setFrame(marco)
return _principal()
end
return p