Módulo:EventoMisión

De Wikipedia, la enciclopedia libre
Icono de documentación de módulo Documentación del módulo[ver] [editar] [historial] [purgar]

A continuación se muestra la documentación transcluida desde la subpágina /doc. [salta a la caja de código]


Este módulo obtiene la fecha y hora de diferentes eventos acontecidos (o por acontecer) en una misión espacial. Para una documentación más completa diríjase a la plantilla asociada: {{EventoMisión}}



Esta documentación está transcluida desde Módulo:EventoMisión/doc.
Por favor, añade las categorías en la subpágina de documentación y los interwikis en Wikidata. Subpáginas de este módulo.

local Date = require('Módulo:Date')._Date
local CurrentDate = require('Módulo:Date')._current

local p = {}

function p.Obtener(frame)
	local args = frame.args;
	
	local cases = {
		lanzamiento = function () return lanzamientoAterrizaje(frame, 'Q797476') end,
		aterrizaje = function () return lanzamientoAterrizaje(frame, 'Q844947,Q1642255') end,   --aterrizaje,splashdown
		acople = function () return acopleDesacople(frame, 'P580') end,
		desacople = function () return acopleDesacople(frame, 'P582') end,
		default = function () return 'DATO NO ENCONTRADO' end
	}
	
	if cases[args.evento] then
		return cases[args.evento]()
	else
		return cases['default']()
	end
end


function lanzamientoAterrizaje(frame, valor)
	local entidad = (frame.args.entidad ~= nil and frame.args.entidad ~= '') and ('|entidad='..frame.args.entidad) or '';
	
	local fecha = frame:preprocess('{{propiedad|P793'..entidad..'|filtro valor='..valor..'|calificador=P585|enlace=no}}');
	local hora = frame:preprocess('{{propiedad|P793'..entidad..'|filtro valor='..valor..'|calificador=P4241|enlace=no}}');
	
	local final = fecha
	local paraFecha = fecha
	
	local sep = (frame.args.sep ~= nil and frame.args.sep ~= '') and ' '..frame.args.sep..' ' or ', '
	local plan = (frame.args.plan ~= nil and frame.args.plan ~= '') and frame.args.plan or 'sí'
	local tbd = (frame.args.tbd ~= nil and frame.args.tbd ~= '') and frame.args.tbd or 'sí'
	local salto = (frame.args.salto ~= nil and frame.args.salto ~= '') and frame.args.salto or 'no'
	local salto = salto=='sí' and '<br>' or ''
	
	if(frame.args.hora ~= nil and frame.args.hora ~= 'no' and hora ~= '') then
		paraFecha = paraFecha ..', '.. hora
		final = final ..sep..salto.. hora .. ' UTC'
	end
	
	mw.log(paraFecha)
	local diff = Date(paraFecha) - Date(CurrentDate)	
	mw.logObject(diff)
	if(plan~='no' and (diff==nil or (not diff.isnegative))) then
		if(hora ~= '') then
			final = final .. ' (planeado)' 
		else
			final = final ..salto.. ' (planeado)' 
		end
	end
	
	if(fecha == '') then
		return (tbd=="sí") and 'TBD' or ''
	end
	
	return final
end


function acopleDesacople(frame, calif)
	local entidad = (frame.args.entidad ~= nil and frame.args.entidad ~= '') and ('|entidad='..frame.args.entidad) or '';
	
	local fecha = frame:preprocess('{{propiedad|P793'..entidad..'|filtro valor=Q557450|calificador='..calif..'|enlace=no}}');
	local final = fecha;
	
	local plan = (frame.args.plan ~= nil and frame.args.plan ~= '') and frame.args.plan or 'sí'
	local tbd = (frame.args.tbd ~= nil and frame.args.tbd ~= '') and frame.args.tbd or 'sí'
	local salto = (frame.args.salto ~= nil and frame.args.salto ~= '') and frame.args.salto or 'no'
	local salto = salto=='sí' and '<br>' or ''
	
	local diff = Date(final) - Date(CurrentDate)
	if(plan~='no' and (diff==nil or (not diff.isnegative))) then
		final = final ..salto.. ' (planeado)' 
	end
	
	if(fecha == '') then
		return (tbd=="sí") and 'TBD' or ''
	end
	
	return final
end

return p