Diferencia entre revisiones de «Módulo:Ficha de aeropuerto»
Apariencia
Contenido eliminado Contenido añadido
++ |
Para que los títulos de las secciones también se vean en blanco |
||
Línea 70: | Línea 70: | ||
subtitulo = Subtitulo, |
subtitulo = Subtitulo, |
||
estilosubtitulo = 'background-color:#5FA5EB; color:white; font-size: 90%; font-weight: bold;', |
estilosubtitulo = 'background-color:#5FA5EB; color:white; font-size: 90%; font-weight: bold;', |
||
estiloseccion = "background-color:#5FA5EB; width:33%", |
estiloseccion = "background-color:#5FA5EB; color: white; width:33%", |
||
{'',codigos}, |
{'',codigos}, |
||
imagen = Logo, |
imagen = Logo, |
Revisión del 09:58 12 jul 2023
Este módulo no tiene página de documentación[crear]
local p = {}
local ModuloArgumentos = require('Módulo:Argumentos')
local ModuloWikidata = require('Módulo:Wikidata')
local ModuloPaginas = require('Módulo:Páginas')
local ModuloTabla = require('Módulo:Tablas')
local ModuloFicha = require('Módulo:Ficha')
local argumentos = {}
local idWikidata
function p.Ficha(frame)
argumentos = ModuloArgumentos.obtenerArgumentosConValor(frame)
idWikidata = mw.wikibase.getEntityIdForCurrentPage() or argumentos['id']
local Titulo = argumentos['nombre'] or ModuloWikidata.obtenerEtiquetaWikidata() or ModuloPaginas.nombrePagina({desambiguar='sí'})
local Subtitulo = argumentos['nombre_nativo'] or propiedad('P1705','subtitulo') or ''
local IATA = argumentos['IATA'] or propiedad('P238','valor') or ''
if IATA ~= '' then
IATA = "'''"..IATA.."'''"
end
local OACI = argumentos['ICAO'] or propiedad('P239','valor') or ''
if OACI ~= '' then
OACI = "'''"..OACI.."'''"
end
local FAA = argumentos['FAA'] or propiedad('P240','valor') or ''
if FAA ~= '' then
FAA = "'''"..FAA.."'''"
end
local DGCACMX = argumentos['DGCAC_MX'] or ''
if DGCACMX ~= '' then
DGCACMX = ' [[Designador de aeródromos de DGAC (México)|DGAC]]: '..DGCACMX
end
local textoaux ='{{Ficha/Columnas'..
'| [[Código de aeropuertos de IATA|IATA]]: '..IATA..
'| [[Código de aeropuertos de OACI|OACI]]: '..OACI..
'| [[Identificador de ubicación de la Administración Federal de Aviación|FAA]]: '..FAA..
'|'..DGCACMX..'}}'
local codigos = frame:preprocess(textoaux)
local Logo = argumentos['logo'] or propiedad('P154','valor')
local Imagen = argumentos['imagen'] or propiedad('P18','valor')
local Pais = propiedad('P17','itemQ','enlazar')
local Ubicacion = argumentos['ubicación'] or (propiedad('P131','itemQ','enlazar') or '')..(Pais and ', '..Pais or '')
local Elevacion = argumentos['elevación_m'] or propiedad('P2044','medida')
local Elevacionaux = Elevacion
if type(Elevacion) == "table" then
if Elevacion[2] ~= nil then
if string.find(Elevacion[2],'Q3710') ~= nil then
Elevacionaux = frame:preprocess("{{convertir|"..Elevacion[1].."|pie|m|lk=on|disp=2}}")
end
if string.find(Elevacion[2],'Q11573') ~=nil then
Elevacion[1]=string.gsub(Elevacion[1],"+","")
Elevacionaux = Elevacion[1]..' [[Metro|m]]'
end
end
end
local ciudadsirve=argumentos['ciudad_sirve'] or propiedad('P931','itemQ','enlazar') or ''
local Tipo = argumentos['tipo'] or ''
local Propietario = argumentos['propietario'] or propiedad('P127','itemQ') or ''
local Operador = argumentos['operador'] or propiedad('P137','itemQ') or ''
local notas = ''
if argumentos['notas'] then
notas = '<hr>'..argumentos['notas']
end
local fichahija=''
if argumentos['ficha hija'] then
fichahija = frame:preprocess( argumentos['ficha hija'] )
end
local Estadisticas = obtenerEstadisticas(argumentos)
local Pistas = obtenerPistas(argumentos, frame)
local TablaFicha = {
titulo = Titulo,
subtitulo = Subtitulo,
estilosubtitulo = 'background-color:#5FA5EB; color:white; font-size: 90%; font-weight: bold;',
estiloseccion = "background-color:#5FA5EB; color: white; width:33%",
{'',codigos},
imagen = Logo,
imagen2 = Imagen,
{tipo = 'sección',
titulo = 'Localización',
{'Ubicación',Ubicacion},
{'Elevación',Elevacionaux},
{'Sirve a',ciudadsirve}
},
{tipo = 'sección',
titulo = 'Detalles del aeropuerto',
{'Tipo', Tipo},
{'Propietario',Propietario},
{'Operador',Operador},
{'Construido', argumentos['construido']},
{'Fundado', argumentos['fundado']},
{'Terminales',argumentos['terminales']},
{'Clausurado', argumentos['clausurado']},
},
{tipo = 'sección',
titulo = 'Servicios y conexiones',
{'Número de destinos', argumentos['num_destino']},
{'Aerolíneas', argumentos['aerolíneas']},
{'[[Centro de conexión|Hub]] para',argumentos['hub']},
{'Base para', argumentos['base']},
{'Servicios',argumentos['servicios']},
{'Transporte público', argumentos['transporte']},
},
Estadisticas,
Pistas,
{tipo = 'sección',
titulo = 'Mapa',
{'',obtenerMapa(frame,IATA,OACI)},
},
{tipo = 'sección',
titulo = 'Sitio web',
{'', argumentos['sitio_web'] or propiedad('P856','valor')},
{'',fichahija},
{'',notas},
}
}
return ModuloFicha.infobox(TablaFicha)
end
function obtenerMapa(frame,IATA,OACI)
if argumentos['id'] or argumentos['mapa_loc'] == nil then
return ''
end
local sizemapa = argumentos['tam_mapa_loc'] or '275px'
local mapaalt = argumentos['mapa_alternativo'] or ''
local codwikidata
if IATA and OACI then
codwikidata = IATA..' / '..OACI
elseif IATA then
codwikidata = IATA
elseif OACI then
codwikidata = OACI
else
codwikidata = ''
end
local etiquetamapa = argumentos['etiqueta_mapa_loc'] or codwikidata
local piemapa = argumentos['pie_mapa_loc'] or ''
local aux = '{{Mapa de localización|'..(argumentos['mapa_loc'] or '')..'|mapa_alternativo='..mapaalt..'|ancho='..sizemapa..'|alineación = center |marca=Airplane_silhouette.svg |borde=none |tamaño_marca =8 |etiqueta='..etiquetamapa..'|pie='..piemapa..'}}'
return frame:preprocess(aux)
end
function obtenerEstadisticas(argumentos)
local section = {
tipo = 'sección',
titulo = 'Estadísticas',
}
for i = 1,8 do
local aux1 = argumentos['datos_estadística'..i] or ''
local aux = {'Estadísticas'..i,aux1}
table.insert(section,aux)
end
return section
end
function obtenerPistasWikidata(nropista)
local pistas = propiedad('P529','tabla')
local numpista = ModuloTabla.elemento(pistas,nropista,'mainsnak','datavalue','value')
local unidadlargo = ModuloTabla.elemento(pistas,nropista,'qualifiers','P2043',1,'datavalue','value','unit')
local largo = ModuloTabla.elemento(pistas,nropista,'qualifiers','P2043',1,'datavalue','value','amount')
largo = {largo,unidadlargo}
local superficie = ModuloTabla.elemento(pistas,nropista,'qualifiers','P186',1,'datavalue','value','id')
superficie = mw.wikibase.getLabel(superficie)
if nropista == 1 and superficie ~= nil then
superficie = '[['..superficie..']]' --enlazo una sola vez
end
return {numpista,largo,superficie}
end
function obtenerPistas(argumentos, frame)
local section = {
tipo = 'sección',
titulo = 'Pistas',
}
local content = ''
for i = 1,5 do
local auxpista = 'p'..i..'-número'
local auxlargo = 'p'..i..'-longitud-m'
local numpista = argumentos[auxpista] or obtenerPistasWikidata(i)[1]
local numlargo = argumentos[auxlargo] or obtenerPistasWikidata(i)[2]
if numlargo[2] ~= nil then
if string.find(numlargo[2],'Q3710') then
local aux = '{{convert|'..numlargo[1]..'|pie|m|disp=2}}'
numlargo = frame:preprocess(aux)
else
long = string.len(numlargo[1])
numlargo = string.sub(numlargo[1],2,long)..' m'
end
end
local auxsuperficie='p'..i..'-superficie'
local superficie = argumentos[auxsuperficie] or obtenerPistasWikidata(i)[3]
if numpista ~= nil then
content = content .. '<tr><td>'..numpista..'</td><td>'..numlargo..'</td><td>'..superficie..'</td></tr>'
end
end
if content ~= '' then
content = '<table class="infobox bordered" style="width:100%">'..
'<tr><th>Dirección</th><th>Largo</th><th>Superficie</th></tr>'..
content..
'</table>'
table.insert( section, {'', content} )
end
return section
end
function propiedad(idPropiedad, opciones, formato)
if idWikidata == nil then
return
end
local obj = mw.wikibase.getAllStatements(idWikidata, idPropiedad)
if opciones == 'subtitulo' then
--return ModuloTabla.tostring(obj)
local retornoelem = ModuloTabla.elemento(obj,1,'mainsnak','datavalue','value','text') or ''
return retornoelem
elseif opciones =='itemQ' then
local aux = ModuloTabla.elemento(obj,1,'mainsnak','datavalue','value','id')
if formato == "enlazar" then
return '[['..mw.wikibase.getLabel(aux)..']]'
else
return mw.wikibase.getLabel(aux)
end
elseif opciones == 'medida' then
local valor = ModuloTabla.elemento(obj,1,'mainsnak','datavalue','value','amount')
local unidadm = ModuloTabla.elemento(obj,1,'mainsnak','datavalue','value','unit')
return {valor,unidadm}
elseif opciones == 'valor' then
--return ModuloTabla.tostring(obj)
return ModuloTabla.elemento(obj,1,'mainsnak','datavalue','value')
elseif opciones == 'tabla' then
return obj
end
return ModuloTabla.tostring(obj)
end
return p