Modul:Infoboks småplanet
Utseende
- Modul:Infoboks småplanet • Modul:Infoboks småplanet/sandkasse • forskjellig (diff)
local p = {}
local wiki =
{
langcode = mw.language.getContentLanguage().code
}
local getArgs = require('Modul:Arguments').getArgs
local getValue = require('Modul:Sandkasse/Cocu/Wikidata').getValue
local getRawValue = require('Modul:Sandkasse/Cocu/Wikidata').getRawValue
local getDateValue = require('Modul:Sandkasse/Cocu/Wikidata').getDateValue
local Pgname = require('Modul:String').replace
local S1 = '<table class="infoboks"><tr class="hode overskrift"><th colspan="4">'
local S2 = '</th></tr>'
local I1 = '<tr class="bilde" valign="top"><td colspan="4" class="sentrert">'
local I2 = '</td></tr>'
local R1 = '<tr class="rad" valign="top"><th colspan="2" width="">'
local R2 = '</th><td colspan="2" class="">'
local R3 = '</td></tr>'
local DR1 = '<tr class="rad" valign="top"><td colspan="4" class="center">'
local DR2 = '</td></tr>'
local H1 = '<tr class="overskrift" valign="top"><td colspan="4">'
local H2 = '</td></tr>'
function dump( out )
if type( out ) == 'table' then
local s = '{ '
for k,v in pairs( out ) do
if type( k ) ~= 'number' then k = '"'..k..'"' end
s = s .. '['..k..'] = ' .. dump( v ) .. ','
end
return s .. '} '
else
return tostring( out )
end
end
-- SETTER SAMMEN SEKSJONENE
function p.infoboks(frame)
if not mw.wikibase then
return ""
end
local artikkel = mw.wikibase.getEntityObject()
if not artikkel then
return ""
end
local claims = artikkel.claims
if not claims then
return ""
end
return p._startSection(frame)
.. p._imageSection(frame)
.. p._discoverySection(frame)
.. p._orbitSection( frame )
.. p._physicsSection( frame )
.. p._atmosphereSection( frame )
.. p._sourceSection( frame )
.. p._nextSection( frame )
.. p._endSection( frame )
end
-- DEFINERER DE ULIKE SEKSJONENE, HVORDAN DE SER UT OG HVORDAN DE FÅR INFORMASJON
-- STARTSEKSJONEN
function p._startSection( frame )
if frame.args['navn'] ~= "" then PgName = frame.args['navn']
else PgName = Pgname({args = {[1] = mw.title.getCurrentTitle().baseText, [2] = '%s%(.*%)', [3] = '', ['plain'] = 'false'}})
end
return S1 .. PgName .. S2
end
-- BILDESEKSJON
-- FINNER BILDE FRA WIKIDATA OG PLASSERER DET I EN EGEN BILDERAD
function p._imageSection(frame)
local p18 = mw.wikibase.getEntityObject().claims.P18
if not p18 then
if mw.text.trim(frame.args["bilde"]) == "" then
return "[[Kategori:Artikler i astronomiprosjektet som trenger bilde]]"
end
end
if mw.text.trim(frame.args["bilde"]) ~= "" then
ImageFile = mw.text.trim(frame.args["bilde"])
else
ImageFile = p18[1].mainsnak.datavalue.value
end
if mw.text.trim(frame.args["bildetekst"]) ~= "" then
if mw.text.trim(frame.args["bilde"]) ~= "" then
ImageText = '<br />' .. mw.text.trim(frame.args["bildetekst"])
else
ImageText = ""
end
else
ImageText = ""
end
if mw.text.trim(frame.args["bildebredde"]) ~= "" then
ImageWidth = '|' .. mw.text.trim(frame.args["bildebredde"])
else
ImageWidth = ""
end
return I1 .. '[[Fil:' .. ImageFile .. '|frameless' .. ImageWidth .. ']]' .. ImageText .. I2
end
-- OPPDAGELSESSEKSJONEN
-- OPPDAGER(E)
function p._discoverer(frame)
local discoverer = frame.args["oppdager"]
local p61 = mw.wikibase.getEntityObject().claims.P61
if discoverer ~= "" and discoverer ~= nil then
argDiscoverer = discoverer
elseif p61 then
if not mw.wikibase.label('Q' .. p61[1].mainsnak.datavalue.value["numeric-id"]) then
return ""
else
argDiscoverer = getValue({args = {[1] = 'P61', [2] = 'hent_wikidata'}})
end
else return ""
end
return R1 .. 'Oppdaget av' .. R2 .. argDiscoverer .. R3
end
-- OPPDAGELSESSTIDSPUNKT
function p._discovered(frame)
local formatISOdate = require('Modul:ISOtilNorskdato').formatIsoDate
local p575 = mw.wikibase.getEntityObject().claims.P575
if not p575 then
if mw.text.trim(frame.args["oppdaget"]) == "" then
return ""
end
end
local discovered_value = mw.wikibase.getEntityObject().claims.P575[1].mainsnak.datavalue.value["time"]
local discovered_date = string.sub(discovered_value,2,11)
local year_cat = string.sub(discovered_date,1,4)
local category = '[[Kategori:Himmellegemer oppdaget i ' .. year_cat .. ']]'
if mw.text.trim(frame.args["oppdaget"]) ~= "" then
argDiscovered = formatISOdate(mw.text.trim(frame.args["oppdaget"]))
else
argDiscovered = formatISOdate(discovered_date)
end
return R1 .. 'Oppdaget' .. R2 .. argDiscovered .. R3 .. category
end
-- FUNNSTED
function p._location(frame)
local p65 = mw.wikibase.getEntityObject().claims.P65
if p65 then
if not mw.wikibase.label('Q' .. p65[1].mainsnak.datavalue.value["numeric-id"]) then
if mw.text.trim(frame.args["funnsted"]) == "" then
return ""
end
end
elseif not p65 then
if mw.text.trim(frame.args["funnsted"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["funnsted"]) ~= "" then
return R1 .. 'Oppdaget fra' .. R2 .. mw.text.trim(frame.args["funnsted"]) ..R3
else
return R1 .. 'Oppdaget fra' .. R2 .. getValue({args = {[1] = 'P65', [2] = 'hent_wikidata'}}) .. R3
end
end
-- SMÅPLANETNAVN (KAN IKKE HENTES FRA WIKIDATA)
function p._minorname(frame)
if mw.text.trim(frame.args["småplanetnavn"]) == "" then
return ""
else
return R1 .. '[[Småplanetnavn]]' .. R2 .. mw.text.trim(frame.args["småplanetnavn"]) .. R3
end
end
-- OVERGANGSNAVN
function p._tempname(frame)
local p490 = mw.wikibase.getEntityObject().claims.P490
if not p490 then
if mw.text.trim(frame.args["overgangsnavn"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["overgangsnavn"]) ~= "" then
return R1 .. 'Overgangsnavn' .. R2 .. mw.text.trim(frame.args["overgangsnavn"]) .. R3
else
return R1 .. 'Overgangsnavn' .. R2 .. getValue({args = {[1] = 'P490', [2] = 'hent_wikidata'}}) .. R3
end
end
-- OPPKALT
function p._named(frame)
local p138 = mw.wikibase.getEntityObject().claims.P138
if not p138 then
if mw.text.trim(frame.args["oppkalt"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["oppkalt"]) ~= "" then
return R1 .. 'Oppkalt etter' .. R2 .. mw.text.trim(frame.args["oppkalt"]) .. R3
else
return R1 .. 'Oppkalt etter' .. R2 .. getValue({args = {[1] = 'P138', [2] = 'hent_wikidata'}}) .. R3
end
end
-- OBJEKTTYPE
function p._objtype(frame)
local p31= mw.wikibase.getEntityObject().claims.P31
if not p31 then
if mw.text.trim(frame.args["objekttype"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["objekttype"]) ~= "" then
return R1 .. 'Objekttype' .. R2 .. mw.text.trim(frame.args["objekttype"]) .. R3
else
return R1 .. 'Objekttype' .. R2 .. getValue({args = {[1] = 'P31', [2] = 'hent_wikidata'}}) .. R3
end
end
-- GRUPPETILHØRIGHET
function p._group(frame)
local p196= mw.wikibase.getEntityObject().claims.P196
if not p196 then
if mw.text.trim(frame.args["gruppe"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["gruppe"]) ~= "" then
argGroup = mw.text.trim(frame.args["gruppe"])
else
argGroup = getValue({args = {[1] = 'P196', [2] = 'hent_wikidata'}})
end
if mw.text.trim(frame.args["familie"]) ~= "" then
return R1 .. '[[Smålegemer i solsystemet|Gruppe]]<br /> [[Asteroidefamilie|Familie]]' .. R2 ..
argGroup .. '<br />' .. mw.text.trim(frame.args["familie"]) .. R3
elseif mw.wikibase.getEntityObject().claims.P744 then
return R1 .. '[[Smålegemer i solsystemet|Gruppe]]<br /> [[Asteroidefamilie|Familie]]' .. R2 ..
argGroup .. '<br />' .. getValue({args = {[1] = "P744", [2] = 'hent_wikidata'}}) .. R3
else
return R1 .. '[[Smålegemer i solsystemet|Gruppe]]' .. R2 .. argGroup .. R3
end
end
-- SETTER SAMMEN INFORMASJONEN I OPPDAGELSESSEKSJONEN
function p._discoverySection( frame )
-- ANGIR OM SEKSJONEN SKAL VISES, OG HVILKEN OVERSKRIFT SOM I TILFELLE SKAL VISES
if p._discoverer(frame) ~= "" or p._discovered(frame) ~= "" or p._location(frame) ~= "" or p._tempname(frame) ~= "" or
p._named(frame) ~= "" or p._objtype(frame) ~= "" or p._group(frame) then
HeaderDiscovery = H1 .. 'Oppdagelse' .. mw.text.trim(frame.args["ref_oppdagelse"]) .. H2
else
return ""
end
-- ANGIR REKKEFØLGEN I OPPDAGELSESSEKSJONEN
local DiscoverySection =
HeaderDiscovery
.. p._discoverer(frame)
.. p._discovered(frame)
.. p._location(frame)
.. p._minorname(frame)
.. p._tempname(frame)
.. p._named(frame)
.. p._objtype(frame)
.. p._group(frame)
return DiscoverySection
end
-- BANESEKSJONEN
-- MODERLEGEME
function p._parent( frame )
local p397= mw.wikibase.getEntityObject().claims.P397
if not p397 then
if mw.text.trim(frame.args["moderlegeme"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["moderlegeme"]) ~= "" then
return R1 .. 'Moderlegeme' .. R2 .. mw.text.trim(frame.args["moderlegeme"]) .. R3
else
return R1 .. 'Moderlegeme' .. R2 .. getValue({args = {[1] = 'P397', [2] = 'hent_wikidata'}}) .. R3
end
end
-- SATELLITTER
function p._satellites( frame )
local p398= mw.wikibase.getEntityObject().claims.P398
if not p398 then
if mw.text.trim(frame.args["satellitter"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["satellitter"]) ~= "" then
return R1 .. '[[Naturlig satellitt|Satellitter]]' .. R2 .. mw.text.trim(frame.args["satellitter"]) .. R3
else
return R1 .. '[[Naturlig satellitt|Satellitter]]' .. R2 .. getValue({args = {[1] = 'P398', [2] = 'hent_wikidata'}}) .. R3
end
end
-- AVSTAND
function p._distance( frame )
if mw.text.trim(frame.args["avstandkm"]) and mw.text.trim(frame.args["avstandae"]) == "" then
return ""
end
local kilometer = tonumber(149597870.691)
if mw.text.trim(frame.args["avstandkm"]) ~= "" then
argDistKM = mw.text.trim(frame.args["avstandkm"])
argDistAE = tonumber(argDistKm / kilometer)
argDist = argDistKM .. ' [[Kilometer|km]]<br />' .. argDistAE .. ' [[Astronomisk enhet|AE]]'
elseif mw.text.trim(frame.args["avstandae"]) ~= "" then
argDistAE = mw.text.trim(frame.args["avstandae"])
argDistKM = tonumber(argDistAE * kilometer)
argDist = argDistAE .. ' [[Astronomisk enhet|AE]]<br />' .. argDistKM .. ' [[Kilometer|km]]'
end
if mw.text.trim(frame.args["moderlegeme"]) then
DistText = 'Avstand fra ' .. mw.text.trim(frame.args["moderlegeme"])
elseif mw.wikibase.getEntityObject().claims.P397 then
DistText = 'Avstand fra ' .. getValue({args = {[1] = 'P397', [2] = 'hent_wikidata'}})
else
DistText = 'Avstand fra [[solen]'
end
return R1 .. DistText .. R2 .. argDist .. R3
end
-- APHEL
function p._aphel( frame )
local p2243= mw.wikibase.getEntityObject().claims.P2243
if not p2243 then
if mw.text.trim(frame.args["aphel"]) == "" then
return ""
end
end
local p2243 = getValue({args = {[1] = 'P2243', [2] = 'hent_wikidata'}})
if string.sub(p2243,-18,-1) == ' astronomisk enhet' then
p2243 = string.sub(p2243,1,-19) .. ' AE'
else
p2243 = p2243
end
if mw.text.trim(frame.args["aphel"]) ~= "" then
return R1 .. '[[Aphelium]]' .. R2 .. mw.text.trim(frame.args["aphel"]) .. R3
else
return R1 .. '[[Aphelium]]' .. R2 .. p2243 .. R3
end
end
-- PERIHEL
function p._perihel( frame )
local p2244= mw.wikibase.getEntityObject().claims.P2244
if not p2244 then
if mw.text.trim(frame.args["perihel"]) == "" then
return ""
end
end
local p2244 = getValue({args = {[1] = 'P2244', [2] = 'hent_wikidata'}})
if string.sub(p2244,-18,-1) == ' astronomisk enhet' then
p2244 = string.sub(p2244,1,-19) .. ' AE'
else
p2244 = p2244
end
if mw.text.trim(frame.args["perihel"]) ~= "" then
return R1 .. '[[Perihelium]]' .. R2 .. mw.text.trim(frame.args["perihel"]) .. R3
else
return R1 .. '[[Perihelium]]' .. R2 .. p2244 .. R3
end
end
-- STORE HALVAKSE
function p._semimajoraxis( frame )
local p2233= mw.wikibase.getEntityObject().claims.P2233
if not p2233 then
if mw.text.trim(frame.args["store halvakse"]) == "" then
return ""
end
end
local p2233 = getValue({args = {[1] = 'P2233', [2] = 'hent_wikidata'}})
if string.sub(p2233,-18,-1) == ' astronomisk enhet' then
p2233 = string.sub(p2233,1,-19) .. ' AE'
else
p2233 = p2233
end
if mw.text.trim(frame.args["store halvakse"]) ~= "" then
return R1 .. '[[Store halvakse]]' .. R2 .. mw.text.trim(frame.args["store halvakse"]) .. R3
else
return R1 .. '[[Store halvakse]]' .. R2 .. p2233 .. R3
end
end
-- EKSENTRISITET
function p._eccentricity( frame )
local p1096= mw.wikibase.getEntityObject().claims.P1096
if not p1096 then
if mw.text.trim(frame.args["eksentrisitet"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["eksentrisitet"]) ~= "" then
return R1 .. '[[Baneeksentrisitet|Eksentrisitet]]' .. R2 .. mw.text.trim(frame.args["eksentrisitet"]) ..R3
else
return R1 .. '[[Baneeksentrisitet|Eksentrisitet]]' .. R2 .. getValue({args = {[1] = 'P1096', [2] = 'hent_wikidata'}}) .. R3
end
end
-- OMLØPSTID
function p._orbitalperiod( frame )
local p2146= mw.wikibase.getEntityObject().claims.P2146
if not p2146 then
if mw.text.trim(frame.args["omløpstid"]) == "" then
return ""
end
end
local p2146 = getValue({args = {[1] = 'P2146', [2] = 'hent_wikidata'}})
if string.sub(p2146,-4,-1) == ' dag' then
p2146 = string.sub(p2146,1,-5) .. ' dager'
else
p2146 = p2146
end
if mw.text.trim(frame.args["omløpstid"]) ~= "" then
return R1 .. '[[Omløpstid]]' .. R2 .. mw.text.trim(frame.args["omløpstid"]) .. R3
else
return R1 .. '[[Omløpstid]]' .. R2 .. p2146 .. R3
end
end
-- DRAKONISK
function p._draconiticperiod( frame )
if mw.text.trim(frame.args["omløpstid"]) ~= "" then
if mw.text.trim(frame.args["drakonisk"]) ~= "" then
return R1 .. ' ([[Omløpstid|drakonisk]])' .. R2 .. mw.text.trim(frame.args["drakonisk"]) ..R3
else
return ""
end
else
return ""
end
end
-- TROPISK
function p._tropicalperiod( frame )
if mw.text.trim(frame.args["omløpstid"]) ~= "" then
if mw.text.trim(frame.args["tropisk"]) ~= "" then
return R1 .. ' ([[Omløpstid|tropisk]])' .. R2 .. mw.text.trim(frame.args["tropisk"]) .. R3
else
return ""
end
else
return ""
end
end
-- SYNODISK
function p._synodicalperiod( frame )
if mw.text.trim(frame.args["synodisk"]) ~= "" then
return R1 .. '([[Omløpstid|Synodisk omløpstid]])' .. R2 .. mw.text.trim(frame.args["synodisk"]) .. R3
else
return ""
end
end
-- SIDERISK OMLØP
function p._siderealperiod( frame )
if mw.text.trim(frame.args["siderisk"]) ~= "" then
return R1 .. '([[Omløpstid|Siderisk omløpstid]])' .. R2 .. mw.text.trim(frame.args["siderisk"]) .. R3
else
return ""
end
end
-- GJENNOMSNITTSFART
function p._avgspeed( frame )
if mw.text.trim(frame.args["gjennomsnittsfart"]) ~= "" then
argAvgSpeed = mw.text.trim(frame.args["gjennomsnittsfart"])
else
return ""
end
if mw.text.trim(frame.args["gjennomsnittsfart_enhet"]) ~= "" then
argAvgSpeed = argAvgSpeed .. ' ' .. mw.text.trim(frame.args["gjennomsnittsfart_enhet"])
else
argAvgSpeed = argAvgSpeed .. ' km/s'
end
return R1 .. 'Gjennomsnittlig banefart' .. R2 .. argAvgSpeed .. R3
end
-- ANOMALISTISK
function p._anomaly( frame )
local p2325 = mw.wikibase.getEntityObject().claims.P2325
if not p2325 then
if mw.text.trim(frame.args["anomalistisk"]) == "" then
return ""
end
end
local p2325 = getValue({args = {[1] = 'P2325', [2] = 'hent_wikidata'}})
if string.sub(p2325,-5,-1) == ' grad' then
p2325 = string.sub(p2325,1,-6) .. '°'
else
p2325 = p2325
end
--if frame.args["midlere_anomali"] ~= nil and mw.text.trim(frame.args["midlere_anomali"]) ~= "" then
if mw.text.trim(frame.args["anomalistisk"]) ~= "" then
return R1 .. '[[Midlere anomali|Midlere anomali]]' .. R2 .. mw.text.trim(frame.args["anomalistisk"]) .. '°' .. R3
else
return R1 .. '[[Midlere anomali|Midlere anomali]]' .. R2 .. p2325 .. R3
end
end
-- INKLINASJON
function p._inclination( frame )
local p2045 = mw.wikibase.getEntityObject().claims.P2045
if not p2045 then
if mw.text.trim(frame.args["inklinasjon"]) == "" then
return ""
end
end
local p2045 = getValue({args = {[1] = 'P2045', [2] = 'hent_wikidata'}})
if string.sub(p2045,-5,-1) == ' grad' then
p2045 = string.sub(p2045,1,-6) .. '°'
else
p2045 = p2045
end
if mw.text.trim(frame.args["inklinasjon"]) ~= "" then
return R1 .. '[[Inklinasjon]]' .. R2 .. mw.text.trim(frame.args["inklinasjon"]) .. '°' .. R3
else
return R1 .. '[[Inklinasjon]]' .. R2 .. p2045 .. R3
end
end
-- BANEPLANKNUTE
function p._ascendingnode( frame )
local p2213 = mw.wikibase.getEntityObject().claims.P2213
if not p2213 then
if mw.text.trim(frame.args["baneplanknute"]) == "" then
return ""
end
end
local p2213 = getValue({args = {[1] = 'P2213', [2] = 'hent_wikidata'}})
if string.sub(p2213,-5,-1) == ' grad' then
p2213 = string.sub(p2213,1,-6) .. '°'
else
p2213 = p2213
end
if mw.text.trim(frame.args["baneplanknute"]) ~= "" then
return R1 .. '[[Baneplanknute|Lengden til oppstigende knute]]' .. R2 .. mw.text.trim(frame.args["baneplanknute"]) .. '°' .. R3
else
return R1 .. '[[Baneplanknute|Lengden til oppstigende knute]]' .. R2 .. p2213 .. R3
end
end
-- PERIHELARGUMENT
function p._perihelargument( frame )
local p2248 = mw.wikibase.getEntityObject().claims.P2248
if not p2248 then
if mw.text.trim(frame.args["perihelargument"]) == "" then
return ""
end
end
local p2248 = getValue({args = {[1] = 'P2248', [2] = 'hent_wikidata'}})
if string.sub(p2248,-5,-1) == ' grad' then
p2248 = string.sub(p2248,1,-6) .. '°'
else
p2248 = p2248
end
if mw.text.trim(frame.args["perihelargument"]) ~= "" then
return R1 .. '[[Perihelargument]]' .. R2 .. mw.text.trim(frame.args["perihelargument"]) .. '°' .. R3
else
return R1 .. '[[Perihelargument]]' .. R2 .. p2248 .. R3
end
end
-- BANEDIAGRAM
-- FINNER BILDE FRA WIKIDATA OG PLASSERER DET I EN EGEN BILDERAD
function p._orbitdiagram(frame)
local p491= mw.wikibase.getEntityObject().claims.P491
if not p491 then
if mw.text.trim(frame.args["banediagram"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["banediagram"]) ~= "" then
OrbitDiagram = mw.text.trim(frame.args["banediagram"])
else
OrbitDiagram = p491[1].mainsnak.datavalue.value
end
return I1 .. '[[Fil:' .. OrbitDiagram .. '|frameless]]' .. I2
end
-- EPOKE
function p._epoch( frame )
if mw.text.trim(frame.args["epoke"]) ~= "" then
return '<br /><small>[[Epoke (astronomi)|Epoke]] ' .. mw.text.trim(frame.args["epoke"]) .. '</small>'
else
return ""
end
end
-- SETTER SAMMEN INFORMASJONEN I BANESEKSJONEN
function p._orbitSection( frame )
-- ANGIR OM SEKSJONEN SKAL VISES, OG HVILKEN OVERSKRIFT SOM I TILFELLE SKAL VISES
if p._parent(frame) ~= "" or p._satellites(frame) ~= "" or p._distance(frame) ~= "" or p._aphel( frame ) ~= ""
or p._perihel( frame ) ~= "" or p._semimajoraxis( frame ) ~= "" or p._eccentricity( frame ) ~= ""
or p._orbitalperiod( frame ) ~= "" or p._draconiticperiod( frame ) ~= "" or p._tropicalperiod( frame ) ~= ""
or p._synodicalperiod( frame ) ~= "" or p._siderealperiod( frame ) ~= "" or p._avgspeed( frame ) ~= ""
or p._anomaly( frame ) ~= "" or p._inclination( frame ) ~= "" or p._ascendingnode( frame ) ~= ""
or p._perihelargument( frame ) ~= "" or p._orbitdiagram( frame ) ~= "" then
HeaderOrbit = H1 .. '[[Bane]]egenskaper' .. mw.text.trim(frame.args["bane_ref"]) .. p._epoch( frame ) .. H2
else
return ""
end
-- ANGIR REKKEFØLGEN I BANESEKSJONEN
local OrbitSection =
HeaderOrbit
.. p._parent(frame)
.. p._satellites(frame)
.. p._distance(frame)
.. p._aphel( frame )
.. p._perihel( frame )
.. p._semimajoraxis( frame )
.. p._eccentricity( frame )
.. p._orbitalperiod( frame )
.. p._draconiticperiod( frame )
.. p._tropicalperiod( frame )
.. p._synodicalperiod (frame )
.. p._siderealperiod( frame )
.. p._avgspeed( frame )
.. p._anomaly( frame )
.. p._inclination( frame )
.. p._ascendingnode( frame )
.. p._perihelargument( frame )
.. p._orbitdiagram( frame )
return OrbitSection
end
-- FYSIKKSEKSJONEN
-- DIMENSJONER
function p._dimensions( frame )
if mw.text.trim(frame.args["dimensjoner"]) == "" then
return ""
elseif mw.text.trim(frame.args["dimensjoner"]) ~= "" then
argDimension = mw.text.trim(frame.args["dimensjoner"])
end
if mw.text.trim(frame.args["dimensjoner_ref"]) ~= "" then
argDimension = argDimension .. mw.text.trim(frame.args["dimensjoner_ref"])
end
return R1 .. 'Dimensjoner' .. R2 .. argDimension .. R3
end
-- GJENNOMSNITTSDIAMETER
function p._avgdiameter( frame )
if mw.text.trim(frame.args["gjennomsnittsdiameter"]) == "" then
return ""
else
return R1 .. 'Gjennomsnittlig diameter' .. R2 .. mw.text.trim(frame.args["gjennomsnittsdiameter"]) .. ' km' .. R3
end
end
-- GJENNOMSNITTSRADIUS
function p._avgradius( frame )
if mw.text.trim(frame.args["gjennomsnittsradius"]) == "" then
return ""
else
return R1 .. 'Gjennomsnittlig radius' .. R2 .. mw.text.trim(frame.args["gjennomsnittsradius"]) .. ' km' .. R3
end
end
-- EKVATORDIAMETER
function p._equatordiameter( frame )
if mw.text.trim(frame.args["ekvatordiameter"]) == "" then
return ""
else
return R1 .. 'Ekvatordiameter' .. R2 .. mw.text.trim(frame.args["ekvatordiameter"]) .. ' km' .. R3
end
end
-- EKVATORRADIUS
function p._equatorradius( frame )
if mw.text.trim(frame.args["ekvatorradius"]) == "" then
return ""
else
return R1 .. 'Ekvatorradius' .. R2 .. mw.text.trim(frame.args["ekvatorradius"]) .. ' km' .. R3
end
end
-- POLDIAMETER
function p._polardiameter( frame )
if mw.text.trim(frame.args["poldiameter"]) == "" then
return ""
else
return R1 .. 'Poldiameter' .. R2 .. mw.text.trim(frame.args["poldiameter"]) .. ' km' .. R3
end
end
-- POLRADIUS
function p._polarradius( frame )
if mw.text.trim(frame.args["polradius"]) == "" then
return ""
else
return R1 .. 'Polradius' .. R2 .. mw.text.trim(frame.args["polradius"]) .. ' km' .. R3
end
end
-- FLATTRYKTHET
function p._flattening( frame )
local p1102= mw.wikibase.getEntityObject().claims.P1102
if not p1102 then
if mw.text.trim(frame.args["flattrykthet"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["flattrykthet"]) ~= "" then
return R1 .. '[[Flattrykthet]]' .. R2 .. mw.text.trim(frame.args["flattrykthet"]) .. R3
else
return R1 .. '[[Flattrykthet]]' .. R2 .. getValue({args = {[1] = 'P1102', [2] = 'hent_wikidata'}}) .. R3
end
end
-- OVERFLATEAREAL
function p._surfacearea( frame )
if mw.text.trim(frame.args["overflateareal"]) == "" then
return ""
else
return R1 .. 'Overflatens [[areal]]' .. R2 .. mw.text.trim(frame.args["overflateareal"]) .. ' [[Kvadratkilometer|km²]]' .. R3
end
end
-- VOLUM
function p._volume( frame )
if mw.text.trim(frame.args["volum"]) == "" then
return ""
else
return R1 .. '[[Volum]]' .. R2 .. mw.text.trim(frame.args["volum"]) .. ' [[kubikkilometer|km³]]' .. R3
end
end
-- MASSE
function p._mass( frame )
local p2067= mw.wikibase.getEntityObject().claims.P2067
if not p2067 then
if mw.text.trim(frame.args["masse"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["masse"]) ~= "" then
return R1 .. '[[Masse]]' .. R2 .. mw.text.trim(frame.args["masse"]) ..R3
else
return R1 .. '[[Masse]]' .. R2 .. getValue({args = {[1] = 'P2067', [2] = 'hent_wikidata'}}) .. R3
end
end
-- TETTHET
function p._density( frame )
if mw.text.trim(frame.args["tetthet"]) == "" then
return ""
else
return R1 .. '[[Tetthet|Middeltetthet]]' .. R2 .. mw.text.trim(frame.args["tetthet"]) .. ' g/cm³' .. R3
end
end
-- GRAVITASJON
function p._gravity( frame )
if mw.text.trim(frame.args["gravitasjon"]) ~= "" then
argGravity = mw.text.trim(frame.args["gravitasjon"])
else
return ""
end
if mw.text.trim(frame.args["gravitasjon_enhet"]) ~= "" then
argGravity = argGravity .. ' ' .. mw.text.trim(frame.args["gravitasjon_enhet"])
else
argGravity = argGravity .. ' m/s²'
end
return R1 .. '[[Tyngdekraft|Gravitasjon]] ved ekvator' .. R2 .. argGravity .. R3
end
-- UNNSLIPNINGSHASTIGHET
function p._escapevelocity( frame )
if mw.text.trim(frame.args["unnslipningshastighet"]) == "" then
return ""
else
return R1 .. '[[Unnslipningshastighet]]' .. R2 .. mw.text.trim(frame.args["unnslipningshastighet"]) .. ' km/s' .. R3
end
end
-- ROTASJON
function p._rotation( frame )
if mw.text.trim(frame.args["rotasjon"]) == "" then
return ""
else
return R1 .. '[[Rotasjonsperiode]]' .. R2 .. mw.text.trim(frame.args["rotasjon"])
.. mw.text.trim(frame.args["rotasjon_ref"]) .. R3
end
end
-- SIDERISK ROTASJON
function p._siderealrotation( frame )
if mw.text.trim(frame.args["siderisk_rot"]) == "" then
return ""
else
return R1 .. '[[Rotasjonsperiode|Sidersik rotasjonsperiode]]' .. R2 .. mw.text.trim(frame.args["siderisk_rot"]) .. R3
end
end
-- ROTASJONSHASTIGHET
function p._rotationvelocity( frame )
if mw.text.trim(frame.args["rotasjonshastighet"]) == "" then
return ""
else
return R1 .. 'Rotasjonshastighet ved ekvator' .. R2 .. mw.text.trim(frame.args["rotasjonshastighet"]) .. R3
end
end
-- REKTASCENSJON
function p._rightasc( frame )
if mw.text.trim(frame.args["rektascensjon"]) == "" then
return ""
else
return R1 .. '[[Rektascensjon]] ved nordpolen' .. R2 .. mw.text.trim(frame.args["rektascensjon"]) .. R3
end
end
-- AKSEHELNING
function p._axialtilt( frame )
if mw.text.trim(frame.args["aksehelning"]) == "" then
return ""
else
return R1 .. '[[Aksehelning]]' .. R2 .. mw.text.trim(frame.args["aksehelning"]) .. '°' .. R3
end
end
-- OVERFLATEREFLEKSJON
function p._albedo( frame )
if mw.text.trim(frame.args["albedo"]) == "" then
return ""
else
return R1 .. '[[Albedo|Overflaterefleksjon]]' .. R2 .. mw.text.trim(frame.args["albedo"]) .. R3
end
end
-- TEMPERATURER
function p._surfacetemperature( frame )
if mw.text.trim(frame.args["tempnavn1"]) == "" and mw.text.trim(frame.args["tempnavn2"]) == "" and mw.text.trim(frame.args["tempnavn3"]) == "" and mw.text.trim(frame.args["tempnavn4"]) == "" then
return ""
end
if mw.text.trim(frame.args["tempnavn1"]) == "" then
argMintemp1 = ""
argSnittemp1 = ""
argMaxtemp1 = ""
tempRow1 = ""
argTemp1 = ""
else
argTemp1 = '<br /><div style="float: right; font-size:smaller;">' .. mw.text.trim(frame.args["tempnavn1"]) .. ': </div>'
if mw.text.trim(frame.args["mintemp1"]) == "" then
argMintemp1 = '<div style="float: left; font-size:smaller; text-align:center;">–</div>'
else
argMintemp1 = '<div style="float: left; font-size:smaller; text-align:center;">' .. mw.text.trim(frame.args["mintemp1"]) .. '</div>'
end
if mw.text.trim(frame.args["snittemp1"]) == "" then
argSnittemp1 = '<small>–</small>'
else
argSnittemp1 = mw.text.trim(frame.args["snittemp1"])
end
if mw.text.trim(frame.args["maxtemp1"]) == "" then
argMaxtemp1 = '<div style="float: right; font-size:smaller; text-align:center;">–</div>'
else
argMaxtemp1 = '<div style="float: right; font-size:smaller; text-align:center;">' .. mw.text.trim(frame.args["maxtemp1"]) .. '</div>'
end
end
if mw.text.trim(frame.args["tempnavn2"]) == "" then
argMintemp2 = ""
argSnittemp2 = ""
argMaxtemp2 = ""
tempRow2 = ""
argTemp2 = ""
else
argTemp2 = '<br /><div style="float: right; font-size:smaller;">' .. mw.text.trim(frame.args["tempnavn2"]) .. ': </div>'
if mw.text.trim(frame.args["mintemp2"]) == "" then
argMintemp2 = '<div style="text-align:center; font-size:smaller;"><div style="float: left;">–</div>'
else
argMintemp2 = '<div style="text-align:center;"><div style="float: left;">' .. mw.text.trim(frame.args["mintemp2"]) .. '</div>'
end
if mw.text.trim(frame.args["snittemp2"]) == "" then
argSnittemp2 = '–'
else
argSnittemp2 = mw.text.trim(frame.args["snittemp2"])
end
if mw.text.trim(frame.args["maxtemp2"]) == "" then
argMaxtemp2 = '<div style="float: right;">–</div></div>'
else
argMaxtemp2 = '<div style="float: right;">' .. mw.text.trim(frame.args["maxtemp2"]) .. '</div></div>'
end
end
if mw.text.trim(frame.args["tempnavn3"]) == "" then
argMintemp3 = ""
argSnittemp3 = ""
argMaxtemp3 = ""
tempRow3 = ""
argTemp3= ""
else
argTemp3 = '<br /><div style="float: right; font-size:smaller;">' .. mw.text.trim(frame.args["tempnavn3"]) .. ': </div>'
if mw.text.trim(frame.args["mintemp3"]) == "" then
argMintemp3 = '<div style="text-align:center; font-size:smaller;"><div style="float: left;">–</div>'
else
argMintemp3 = '<div style="text-align:center;"><div style="float: left;">' .. mw.text.trim(frame.args["mintemp3"]) .. '</div>'
end
if mw.text.trim(frame.args["snittemp3"]) == "" then
argSnittemp3 = '–'
else
argSnittemp3 = mw.text.trim(frame.args["snittemp3"])
end
if mw.text.trim(frame.args["maxtemp3"]) == "" then
argMaxtemp3 = '<div style="float: right;">–</div></div>'
else
argMaxtemp3 = '<div style="float: right;">' .. mw.text.trim(frame.args["maxtemp3"]) .. '</div></div>'
end
end
if mw.text.trim(frame.args["tempnavn4"]) == "" then
argMintemp4 = ""
argSnittemp4 = ""
argMaxtemp4 = ""
tempRow4 = ""
argTemp4= ""
else
argTemp4 = '<br /><div style="float: right; font-size:smaller;">' .. mw.text.trim(frame.args["tempnavn4"]) .. ': </div>'
if mw.text.trim(frame.args["mintemp4"]) == "" then
argMintemp4 = '<div style="text-align:center; font-size:smaller;"><div style="float: left;">–</div>'
else
argMintemp4 = '<div style="text-align:center;"><div style="float: left;">' .. mw.text.trim(frame.args["mintemp4"]) .. '</div>'
end
if mw.text.trim(frame.args["snittemp4"]) == "" then
argSnittemp4 = '–'
else
argSnittemp4 = mw.text.trim(frame.args["snittemp4"])
end
if mw.text.trim(frame.args["maxtemp4"]) == "" then
argMaxtemp4 = '<div style="float: right;">–</div></div>'
else
argMaxtemp4 = '<div style="float: right;">' .. mw.text.trim(frame.args["maxtemp4"]) .. '</div></div>'
end
end
local tempHeader = '<div style="text-align:center; font-size:smaller;"><div style="float: left;">min.</div>snitt<div style="float: right;">max</div></div>'
local tempRow1 = argMintemp1 .. argSnittemp1 .. argMaxtemp1
local tempRow2 = argMintemp2 .. argSnittemp2 .. argMaxtemp2
local tempRow3 = argMintemp3 .. argSnittemp3 .. argMaxtemp3
local tempRow4 = argMintemp4 .. argSnittemp4 .. argMaxtemp4
return R1 .. '[[Temperatur|Overflatetemperatur]]' .. argTemp1 .. argTemp2 .. argTemp3 .. R2 .. tempHeader .. tempRow1 .. tempRow2 .. tempRow3 .. tempRow4 .. R3
end
-- ENKELTTEMPERATUR
function p._singletemp( frame )
if mw.text.trim(frame.args["enkelttemperatur"]) == "" then
return ""
else
return R1 .. '[[Temperatur]]' .. R2 .. mw.text.trim(frame.args["enkelttemperatur"]) .. R3
end
end
-- SPEKTRALKLASSE
function p._spectralclass( frame )
local p215= mw.wikibase.getEntityObject().claims.P215
if not p215 then
if mw.text.trim(frame.args["spektralklasse"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["spektralklasse"]) ~= "" then
return R1 .. '[[Asteroidespektralklasser|Spektralklasse]]' .. R2 .. mw.text.trim(frame.args["spektralklasse"]) .. R3
else
return R1 .. '[[Asteroidespektralklasser|Spektralklasse]]' .. R2 .. getValue({args = {[1] = 'P215', [2] = 'hent_wikidata'}}) .. R3
end
end
-- VISMAG_V
function p._vismagv( frame )
local p1215= mw.wikibase.getEntityObject().claims.P1215
if not p1215 then
if mw.text.trim(frame.args["vismag_v"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["vismag_v"]) ~= "" then
return R1 .. '[[Tilsynelatende størrelsesklasse]]' .. R2 .. mw.text.trim(frame.args["vismag_v"]) .. R3
else
return R1 .. '[[Tilsynelatende størrelsesklasse]]' .. R2 .. getValue({args = {[1] = 'P1215', [2] = 'hent_wikidata'}}) .. R3
end
end
-- ABS_MAG
function p._absmag( frame )
local p1457= mw.wikibase.getEntityObject().claims.P1457
if not p1457 then
if mw.text.trim(frame.args["abs_mag"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["abs_mag"]) ~= "" then
return R1 .. '[[Absolutt størrelsesklasse]] (MV)' .. R2 .. mw.text.trim(frame.args["abs_mag"]) .. R3
else
return R1 .. '[[Absolutt størrelsesklasse]] (MV)' .. R2 .. getValue({args = {[1] = 'P1457', [2] = 'hent_wikidata'}}) .. R3
end
end
-- VINKELDIAMETER
function p._aungularsize( frame )
if mw.text.trim(frame.args["vinkeldiameter"]) == "" then
return ""
else
return R1 .. '[[Vinkeldiameter]]' .. R2 .. mw.text.trim(frame.args["vinkeldiameter"]) .. R3
end
end
-- SETTER SAMMEN INFORMASJONEN I FYSIKKSEKSJONEN
function p._physicsSection( frame )
-- ANGIR OM SEKSJONEN SKAL VISES, OG HVILKEN OVERSKRIFT SOM I TILFELLE SKAL VISES
if p._dimensions( frame ) ~= "" or p._avgdiameter( frame ) ~= "" or p._avgradius( frame ) ~= ""
or p._equatordiameter( frame ) ~= "" or p._equatorradius( frame ) ~= "" or p._polardiameter( frame ) ~= ""
or p._polarradius( frame ) ~= "" or p._flattening( frame ) ~= "" or p._surfacearea( frame ) ~= ""
or p._volume( frame ) ~= "" or p._mass( frame ) ~= "" or p._density( frame ) ~= ""
or p._gravity( frame ) ~= "" or p._escapevelocity( frame ) ~= "" or p._rotation( frame ) ~= ""
or p._siderealrotation( frame ) ~= "" or p._rotationvelocity( frame ) ~= "" or p._rightasc( frame ) ~= ""
or p._axialtilt( frame ) ~= "" or p._albedo( frame ) ~= "" or p._surfacetemperature( frame ) ~= ""
or p._singletemp( frame ) ~= "" or p._spectralclass( frame ) ~= "" or p._vismagv( frame ) ~= ""
or p._absmag( frame ) ~= "" or p._aungularsize( frame ) ~= "" then
HeaderPhysics = H1 .. 'Fysiske egenskaper' .. H2
else
return ""
end
return HeaderPhysics
.. p._dimensions(frame)
.. p._avgdiameter( frame )
.. p._avgradius( frame )
.. p._equatordiameter( frame )
.. p._equatorradius( frame )
.. p._polardiameter( frame )
.. p._polarradius( frame )
.. p._flattening( frame )
.. p._surfacearea( frame )
.. p._volume( frame )
.. p._mass( frame )
.. p._density( frame )
.. p._gravity( frame )
.. p._escapevelocity( frame )
.. p._rotation( frame )
.. p._siderealrotation( frame )
.. p._rotationvelocity( frame )
.. p._rightasc( frame )
.. p._axialtilt( frame )
.. p._albedo( frame )
.. p._surfacetemperature( frame )
.. p._singletemp( frame )
.. p._spectralclass( frame )
.. p._vismagv( frame )
.. p._absmag( frame )
.. p._aungularsize( frame )
end
-- ATMOSFÆRESEKSJONEN
-- SKALAHØYDE
function p._scalehight( frame )
if mw.text.trim(frame.args["skalahøyde"]) == "" then
return ""
else
return R1 .. '[[Skalahøyde]]' .. R2 .. mw.text.trim(frame.args["skalahøyde"]) .. R3
end
end
-- TRYKK
function p._pressure( frame )
if mw.text.trim(frame.args["trykk"]) == "" then
return ""
else
return R1 .. '[[Atmosfærisk trykk]]' .. R2 .. mw.text.trim(frame.args["trykk"]) .. ' [[Pascal (enhet)|Pascal]]' .. R3
end
end
-- ATMOSFÆRISK SAMMENSETNING
function p._atmcomposition( frame )
if mw.text.trim(frame.args["sammensetning"]) == "" then
return ""
else
return R1 .. 'Sammensetning' .. R2 .. mw.text.trim(frame.args["sammensetning"]) .. R3
end
end
-- SETTER SAMMEN INFORMASJONEN I ATMOSFÆRESEKSJONEN
function p._atmosphereSection( frame )
-- ANGIR OM SEKSJONEN SKAL VISES, OG HVILKEN OVERSKRIFT SOM I TILFELLE SKAL VISES
if p._scalehight( frame ) ~= "" or p._pressure( frame ) ~= "" or p._atmcomposition( frame ) ~= "" then
HeaderAtmosphere = H1 .. 'Atmosfæriske egenskaper' .. mw.text.trim(frame.args["atmosfære_ref"]) .. H2
else
return ""
end
return HeaderAtmosphere
.. p._scalehight( frame )
.. p._pressure( frame )
.. p._atmcomposition( frame )
end
-- KILDESEKSJONEN
-- JPL-DATA
function p._JPLid( frame )
local p716= mw.wikibase.getEntityObject().claims.P716
if not p716 then
if mw.text.trim(frame.args["JPL-id"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["JPL-id"]) ~= "" then
argJPLid = mw.text.trim(frame.args["JPL-id"])
else
argJPLid = getValue({args = {[1] = 'P716', [2] = 'hent_wikidata'}})
end
return R1 .. '[[Jet Propulsion Laboratory|JPL-id]]' .. R2 .. '[http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=' .. argJPLid .. ' lenke]' .. R3
end
-- SETTER SAMMEN INFORMASJONEN I KILDESEKSJONEN
function p._sourceSection( frame )
-- ANGIR OM SEKSJONEN SKAL VISES, OG HVILKEN OVERSKRIFT SOM I TILFELLE SKAL VISES
if p._JPLid(frame) ~= "" then
HeaderSource = H1 .. 'Kilder' .. H2
else
HeaderSource = ""
end
-- ANGIR REKKEFØLGEN I OPPDAGELSESSEKSJONEN
local SourceSection =
HeaderSource
.. p._JPLid(frame)
return SourceSection
end
-- NESTE-SEKSJONEN
-- FORRIGE
function p._previous( frame )
local p155 = mw.wikibase.getEntityObject().claims.P155
if not p155 then
return ""
else
return getValue({args = {[1] = 'P155', [2] = 'hent_wikidata'}})
end
end
-- NESTE
function p._next( frame )
local p156 = mw.wikibase.getEntityObject().claims.P156
if not p156 then
return ""
else
return getValue({args = {[1] = 'P156', [2] = 'hent_wikidata'}})
end
end
-- SETTER SAMMEN INFORMASJONEN I NESTESEKSJONEN
function p._nextSection( frame )
if p._previous(frame) ~= "" and p._next(frame) == "" then
return '<tr valign="top" class="rad"><td colspan="4"><hr>' .. '<div class="sentrert">'
.. '← Forrige<br />' .. p._previous(frame) .. '</div></td></tr>'
elseif p._previous(frame) == "" and p._next(frame) ~= "" then
return '<tr valign="top" class="rad"><td colspan="4"><hr>' .. '<div class="sentrert">'
.. 'Neste →<br />' .. p._next(frame) .. '</div></td></tr>'
elseif p._previous(frame) ~= "" and p._next(frame) ~= "" then
return '<tr valign="top" class="rad"><td colspan="4"><hr>' .. '<div class="sentrert">'
.. '← Forrige – Neste →<br />' .. p._previous(frame) .. ' – ' .. p._next(frame) .. '</div></td></tr>'
else
return ""
end
end
-- SLUTTSEKSJONEN
-- COMMONSKATEGORI
function p._comcat( frame )
local p373= mw.wikibase.getEntityObject().claims.P373
if not p373 then
if mw.text.trim(frame.args["comcat"]) == "" then
return ""
end
end
if mw.text.trim(frame.args["comcat"]) ~= "" then
argComCat = mw.text.trim(frame.args["comcat"])
else
argComCat = getValue({args = {[1] = 'P373', [2] = 'hent_wikidata'}})
end
if frame.args['navn'] ~= "" then PgName = frame.args['navn']
else PgName = Pgname({args = {[1] = mw.title.getCurrentTitle().baseText, [2] = '%s%(.*%)', [3] = '', ['plain'] = 'false'}})
end
return '<div class="sentrert nowrap">[[:commons:' .. argComCat .. '|' .. PgName .. ' på Commons]]</div>'
end
-- SLUTTKOMMENTAR
function p._endcomment( frame )
return "" --'<div class="sentrert"><small>Deler av informasjonen i infoboksen er hentet fra [[Wikidata]].</small></div>'
end
-- SETTER SAMMEN INFORMASJONEN I SLUTTSEKSJONEN
function p._endSection( frame )
endSectionStart = '<tr class="skjult"><td></td><td></td><td></td><td></td></tr>'
endSectionEnd = '</td></tr></table>'
if p._comcat(frame) or p._endcomment(frame) ~= "" then
endSectionMiddle = '<tr valign="top" class="rad"><td colspan="4"><hr>'
else
endSectionMiddle = ""
end
return endSectionStart .. endSectionMiddle .. p._comcat(frame) .. p._endcomment(frame) .. endSectionEnd
end
return p