Anonimo

Modulo:DTGenerico: differenze tra le versioni

Da Wikitrek.
m
nessun oggetto della modifica
mNessun oggetto della modifica
mNessun oggetto della modifica
 
(114 versioni intermedie di uno stesso utente non sono mostrate)
Riga 7: Riga 7:
--local OperatorTree = require('Modulo:DTFunzioniComuni').OperatorTree
--local OperatorTree = require('Modulo:DTFunzioniComuni').OperatorTree
local PropertiesOnTree = require('Modulo:DTFunzioniComuni').PropertiesOnTree
local PropertiesOnTree = require('Modulo:DTFunzioniComuni').PropertiesOnTree
 
local ShipNameCore = require('Modulo:FunzioniGeneriche').ShipNameCore
local p = {}
local p = {}
function p.QFromP(Property)
function p.QFromP(Property)
Riga 19: Riga 20:
function p.DIVImage(frame)
function p.DIVImage(frame)
local ImageFileName
local ImageFileName
local ImageProperties = {"P11", "P37"}
local Item = mw.wikibase.getEntity()
local Item = mw.wikibase.getEntity()
Riga 25: Riga 27:
end
end
local Markup
local Markup = ""
-- TODO
-- TODO
Riga 35: Riga 37:
-- </gallery>
-- </gallery>
if Item['claims']['P37'] then
for _, Property in pairs(ImageProperties) do
if Item['claims'][Property] then
local FileTitle
local FileTitle
local FileCaption
local FileCaption
local FileName = Item['claims']['P37'][1].mainsnak.datavalue['value']
local FileName = Item['claims'][Property][1].mainsnak.datavalue['value']
File = mw.title.new( FileName, "File" )
File = mw.title.new( FileName, "File" )
--local FileTitle = "File:" .. Item['claims']['P37'][1].mainsnak.datavalue['value']
FileTitle = "File:" .. FileName
FileTitle = "File:" .. FileName
if File.exists then
if File.exists then
Riga 49: Riga 51:
end
end
--Markup = "<div class='separatorebox'>'''Immagine'''</div>" ..  "<div class='contenitoreimgbox'>[[File:" .. Item['claims']['P37'][1].mainsnak.datavalue['value'] .. "|100%]]</div>"
Markup = Markup .. "<div class='separatorebox'>'''Immagine'''</div>" ..  "<div class='contenitoreimgbox'>[[" .. FileTitle .. "|alt=" .. FileCaption .. Property .. "|" .. FileCaption .. "]]<br /><span style='font-size: smaller;'>" .. FileCaption .. "</span></div>"
--Markup = "<div class='separatorebox'>'''Immagine'''</div>" ..  "<div class='contenitoreimgbox'>[[" .. FileTitle .. "|alt={{" .. FileTitle .. "}}|{{" .. FileTitle .. "}}" .. "]]</div>"
end
Markup = "<div class='separatorebox'>'''Immagine'''</div>" ..  "<div class='contenitoreimgbox'>[[" .. FileTitle .. "|alt=" .. FileCaption .. "|" .. FileCaption .. "]]<br /><span style='font-size: smaller;'>" .. FileCaption .. "</span></div>"
else
Markup = ""
end
end
return Markup
return Markup
end
end
function p.Title(frame)
function p.Title(frame)
Riga 89: Riga 87:
local Item = mw.wikibase.getEntity()
local Item = mw.wikibase.getEntity()
local ItemQ = mw.wikibase.getEntityIdForCurrentPage()
local ItemQ = mw.wikibase.getEntityIdForCurrentPage()
local InstanceQ
local IsEpisode = false
local IsEpisode = false
local OperatorName
local OperatorName = ""
local AstroRA = nil
local AstroD = nil
local ListProp = {}
local PageName
if not Item then
if not Item then
Riga 104: Riga 107:
end
end
ExcludeP = {P3 = true, P7 = true, P14 = false, P21 = IsEpisode, P23 = true, P26 = true, P30 = true, P37 = true,  P46 = true, P58 = true, P68 = true, P52 = true, P79 = true, P90 = true}
ExcludeP = {P3 = true, P7 = true, P8 = true, P11 = true, P21 = IsEpisode, P23 = true, P26 = true, P37 = true,  P46 = true, P58 = true, P68 = true, P52 = true, P79 = true, P90 = true, P104 = true, P162 = true}
AllP = mw.wikibase.orderProperties(Item:getProperties())
AllP = mw.wikibase.orderProperties(Item:getProperties())
Riga 115: Riga 118:
AllRows[#AllRows + 1] = {"In originale:", {mw.wikibase.getLabelByLang(ItemQ, 'en')}}
AllRows[#AllRows + 1] = {"In originale:", {mw.wikibase.getLabelByLang(ItemQ, 'en')}}
end
end
if (mw.wikibase.getLabelByLang(ItemQ, 'it')) and (mw.wikibase.getLabelByLang(ItemQ, 'it')) ~= PageTitle.text then
if (mw.wikibase.getLabelByLang(ItemQ, 'it')) then
local ITLabel
local ITLabel
local ITValue
local ITValue
Riga 124: Riga 127:
end
end
ITValue = mw.wikibase.getLabelByLang(ItemQ, 'it')
ITValue = mw.wikibase.getLabelByLang(ItemQ, 'it')
AllRows[#AllRows + 1] = {ITLabel .. ":", {ITValue}}
if AddSemantic then
if AddSemantic then
mw.smw.set(ITLabel .. "=" .. ITValue)
mw.smw.set(ITLabel .. "=" .. ITValue)
end
PageName = ITValue
if (mw.wikibase.getLabelByLang(ItemQ, 'it')) ~= PageTitle.text then
AllRows[#AllRows + 1] = {ITLabel .. ":", {ITValue}}
end
end
end
end
for _, Property in pairs(AllP) do
--Process AKA
if Item.aliases ~= nil and Item.aliases["it"] ~= nil then
local AccValues = {}
for _, Alias in pairs(Item.aliases["it"]) do
table.insert(AccValues, Alias.value)
end
table.insert(AllRows, {"Alias:", AccValues})
end
--mw.smw.set("AllP=" .. table.concat(AllP, ","))
for _, Property in ipairs(AllP) do
table.insert(ListProp, Property)
if (not ExcludeP[Property]) and Item.claims[Property][1].mainsnak.datatype ~= 'external-id' then
if (not ExcludeP[Property]) and Item.claims[Property][1].mainsnak.datatype ~= 'external-id' then
-- START specific property
if Property == "P46" then
if Property == "P46" then
-- Collection
-- Collection
Riga 137: Riga 156:
--Previous or Next
--Previous or Next
CollectionTable = string.char(10) .. MakeNavTable(Item.claims, nil)
CollectionTable = string.char(10) .. MakeNavTable(Item.claims, nil)
elseif (Property == "P80" or Property == "P82") then
--Right Ascension or Declination
if Property == "P80" then
--Right ascension
AstroRA = Item.claims[Property][1].mainsnak.datavalue.value.amount
else
--Declination
AstroD = Item.claims[Property][1].mainsnak.datavalue.value.amount
end
if (AstroRA ~= nil and AstroD ~= nil) then
AllRows[#AllRows + 1] = {{"P80 e P82", "Coordinate celesti"}, {p.SkyMapLink(AstroRA, AstroD)}}
end
elseif Property == "P14" then
elseif Property == "P14" then
--Instance
--Instance
POnTree = {{"P40", 3, false}, {"P41", 3, false}, {"P88", 3, false}}
POnTree = {{"P40", 3, false}, {"P41", 3, false}, {"P88", 3, false}}
for _, Prop in pairs(POnTree) do
for _, Prop in pairs(POnTree) do
local PropValue = table.concat(PropertiesOnTree(Prop[1], Prop[2], Prop[3], true))
--local PropValue = table.concat(PropertiesOnTree(Prop[1], Prop[2], Prop[3], true))
local PropValue = PropertiesOnTree(Prop[1], Prop[2], Prop[3], true)
if (PropValue ~= nil) and (PropValue ~= "") then
if (PropValue ~= nil) and (PropValue ~= "") then
local PropName = mw.wikibase.getLabelByLang(Prop[1], 'it') or mw.wikibase.getLabel(Prop[1])
local PropName = mw.wikibase.getLabelByLang(Prop[1], 'it') or mw.wikibase.getLabel(Prop[1])
--AllRows[#AllRows + 1] = {{Prop[1], PropName .. ":"}, {PropValue}}
--AllRows[#AllRows + 1] = {{Prop[1], PropName .. ":"}, {PropValue}}
AllRows[#AllRows + 1] = {{Prop[1], PropName}, {PropValue}}
AllRows[#AllRows + 1] = {{Prop[1], PropName}, {PropValue}}
--[==[if Prop[1] == "P41" then
if Prop[1] == "P41" then
OperatorName = mw.wikibase.getEntity(Value['id']).labels['it'].value .. "]]"
--String to be used with P88 Naval Class
end]==]
--OperatorName = string.sub(PropValue, 2, -2)
--OperatorName = string.sub("[[Flotta Stellare]]", 3, -3)
--OperatorName = string.gsub("[[Flotta Stellare|Flotta Stellare]]", "|.+]]", ""):gsub("%[%[", "") .. " - "
OperatorName = string.gsub(PropValue, "|.+]]", ""):gsub("%[%[", "") .. " - "
--mw.smw.set("OperatorName1=" .. OperatorName)
end
if AddSemantic then
if AddSemantic then
mw.smw.set(PropName .. "=" .. PropValue)
--mw.smw.set(PropName .. "=" .. PropValue)
end
end
end
end
end
InstanceQ = Item.claims[Property][1].mainsnak.datavalue.value.id
if InstanceQ == "Q876" or InstanceQ == "Q78" then
--Spaceship or starship
mw.smw.set("Nome=" .. ShipNameCore(PageName))
end
end
Riga 162: Riga 207:
mw.smw.set("Operatore=" .. OperatorTree(frame))
mw.smw.set("Operatore=" .. OperatorTree(frame))
end]==]
end]==]
--mw.smw.set("OperatorName2=" .. OperatorName)
-- END specific property
else
else
-- Unspecified Property
-- START Unspecified Property
local Header = {Property, (mw.wikibase.getLabelByLang(Property, 'it') or mw.wikibase.getLabel(Property))} -- .. ":"} -- or {Property, mw.wikibase.getLabel(Property) .. ":"} --'-' .. Property .. ":"}
local Header = {Property, (mw.wikibase.getLabelByLang(Property, 'it') or mw.wikibase.getLabel(Property))} -- .. ":"} -- or {Property, mw.wikibase.getLabel(Property) .. ":"} --'-' .. Property .. ":"}
local Values = Item['claims'][Property]
local Values = Item['claims'][Property]
local AccValues = {}
local AccValues = {}
for _, SnakValue in pairs(Values) do
local Year = ""
--mw.smw.set("OperatorName3=" .. OperatorName)
for _, SnakValue in ipairs(Values) do
local Value = SnakValue.mainsnak.datavalue['value']
local Value = SnakValue.mainsnak.datavalue['value']
--mw.smw.set("OperatorName4=" .. OperatorName)
if (type(Value) == "table") then
if (type(Value) == "table") then
if Property == "P72" then --CASE Assigments
-- DataValue is an array
if Property == "P72" then
--CASE Assigments
local Assignment = ""
local Assignment = ""
local AssLabel = ""
if SnakValue.qualifiers ~= nil then
if SnakValue.qualifiers ~= nil then
-- Timeline year
-- Timeline year
if SnakValue.qualifiers['P73'] ~= nil then
if SnakValue.qualifiers['P73'] ~= nil then
Assignment = LabelOrLink(SnakValue.qualifiers['P73'][1].datavalue.value['id']) .. " "
Year = LabelOrLink(SnakValue.qualifiers['P73'][1].datavalue.value['id'])
Assignment = Year .. " "
end
end
Riga 182: Riga 236:
Assignment = Assignment .. SnakValue.qualifiers['P15'][1].datavalue.value .. " "
Assignment = Assignment .. SnakValue.qualifiers['P15'][1].datavalue.value .. " "
end
end
end
-- If Wikitrek label (P20) is present, force it
if SnakValue.qualifiers ~= nil and SnakValue.qualifiers['P20'] ~= nil then
AssLabel = SnakValue.qualifiers['P20'][1].datavalue.value
end
end
if AddSemantic then
if AddSemantic then
Assignment = Assignment .. LabelOrLink(Value['id'], "Assegnazione", true)
Assignment = Assignment .. LabelOrLink(Value['id'], "Assegnazione", true, AssLabel)
else
else
Assignment = Assignment .. LabelOrLink(Value['id'])
Assignment = Assignment .. LabelOrLink(Value['id'], "", false, AssLabel)
end
end
if SnakValue.qualifiers ~= nil then
if SnakValue.qualifiers ~= nil then
-- Suffix
if SnakValue.qualifiers['P19'] ~= nil then
Assignment = Assignment .. " " .. SnakValue.qualifiers['P19'][1].datavalue.value --.. " "
end
-- Rank
-- Rank
if SnakValue.qualifiers['P76'] then
if SnakValue.qualifiers['P76'] then
Riga 202: Riga 265:
end
end
--AccValues[#AccValues + 1] = LabelOrLink(SnakValue.qualifiers['P73'][1].datavalue.value['id']) .. " " .. LabelOrLink(Value['id']) .. ", " .. LabelOrLink(SnakValue.qualifiers['P76'][1].datavalue.value['id']) .. ", " .. LabelOrLink(SnakValue.qualifiers['P77'][1].datavalue.value['id'])
--AccValues[#AccValues + 1] = LabelOrLink(SnakValue.qualifiers['P73'][1].datavalue.value['id']) .. " " .. LabelOrLink(Value['id']) .. ", " .. LabelOrLink(SnakValue.qualifiers['P76'][1].datavalue.value['id']) .. ", " .. LabelOrLink(SnakValue.qualifiers['P77'][1].datavalue.value['id'])
AccValues[#AccValues + 1] = Assignment
--AccValues[#AccValues + 1] = Assignment
table.insert(AccValues, Assignment)
table.sort(AccValues)
elseif Value['entity-type'] == 'item' then
elseif Value['entity-type'] == 'item' then
--mw.smw.set("OperatorName5=" .. OperatorName)
-- Process a generic Item
-- Process a generic Item
local GenericItem
local GenericItem
Riga 211: Riga 277:
GenericItem = LabelOrLink(Value['id'])
GenericItem = LabelOrLink(Value['id'])
end
end
--mw.smw.set("OperatorName6=" .. OperatorName)
-- Prefix
if SnakValue.qualifiers and SnakValue.qualifiers['P15'] then
if SnakValue.qualifiers and SnakValue.qualifiers['P15'] then
GenericItem = SnakValue.qualifiers['P15'][1].datavalue.value .. " " .. GenericItem
GenericItem = SnakValue.qualifiers['P15'][1].datavalue.value .. " " .. GenericItem
end
end
--mw.smw.set("OperatorName7=" .. OperatorName .. " ( " .. Property)
--Naval class
--Naval class
if Property == "P88" then
if Property == "P88" then
GenericItem = GenericItem .. "[[Category:" .. mw.wikibase.getEntity(Value['id']).labels['it'].value .. "]]"
--mw.smw.set("OperatorName8=" .. OperatorName .. " ( " .. Property)
GenericItem = GenericItem .. "[[Category:" .. OperatorName .. mw.wikibase.getEntity(Value['id']).labels['it'].value .. "]]"
--GenericItem = mw.text.nowiki(GenericItem) .. " -" .. mw.text.nowiki(OperatorName) .. "- "
end
end
--mw.smw.set("OperatorName9=" .. OperatorName)
--P141 - Related Category
--P141 - Related Category
--Category needs to be linked, not added to the page
--Category needs to be linked, not added to the page
if Property == "P141" then
if Property == "P141" then
GenericItem = string.gsub(GenericItem, "%[%[", "[[:")
GenericItem = string.gsub(GenericItem, "%[%[", "[[:")
end
-- Suffix
if SnakValue.qualifiers and SnakValue.qualifiers['P19'] then
GenericItem = GenericItem .. " " .. SnakValue.qualifiers['P19'][1].datavalue.value
end
if SnakValue.qualifiers and SnakValue.qualifiers['P73'] ~= nil and Year == "" then
GenericItem = GenericItem .. " (" .. LabelOrLink(SnakValue.qualifiers['P73'][1].datavalue.value['id']) .. ")"
end
end
Riga 235: Riga 313:
local YearLink = ""
local YearLink = ""
local PrintDate
local PrintDate
local QualiString
local QualiString = ""
if string.sub(Instant, 7, 8) == "00" or string.sub(Instant, 10, 11) == "00" then
if string.sub(Instant, 7, 8) == "00" or string.sub(Instant, 10, 11) == "00" then
Riga 253: Riga 331:
YearLink = LabelOrLink(SnakValue.qualifiers['P74'][1].datavalue.value['id'], nil, nil, PrintDate)
YearLink = LabelOrLink(SnakValue.qualifiers['P74'][1].datavalue.value['id'], nil, nil, PrintDate)
end
end
QualiString = p.ProcessQualifiers(SnakValue)
QualiString = " " .. "(" .. p.ProcessQualifiers(SnakValue) .. ")"
end
end
if YearLink == "" then
if YearLink == "" then
AccValues[#AccValues + 1] = PrintDate
AccValues[#AccValues + 1] = PrintDate .. QualiString
else
else
AccValues[#AccValues + 1] = YearLink
AccValues[#AccValues + 1] = YearLink .. QualiString
end
end
Riga 299: Riga 377:
AccValues[#AccValues + 1] = 'Unspecified TABLE'
AccValues[#AccValues + 1] = 'Unspecified TABLE'
end
end
elseif SnakValue.mainsnak.datatype == 'url' then
--URL, URI or URN
local URLString
URLString = SnakValue.mainsnak.datavalue.value
if SnakValue.qualifiers['P20'][1].datavalue.value ~= nil then
--Label is present
URLString = "[" .. URLString .. " " .. mw.text.nowiki(SnakValue.qualifiers['P20'][1].datavalue.value) .. "]"
end
table.insert(AccValues, URLString)
else
else
-- String items
-- String items
Riga 308: Riga 395:
end
end
AllRows[#AllRows + 1] = {Header, AccValues}
AllRows[#AllRows + 1] = {Header, AccValues}
-- END Unspecified Property
end
end
end
end
end
end
mw.smw.set("ListProp=" .. table.concat(ListProp, ", "))
HTMLTable = TableFromArray(AllRows)
HTMLTable = TableFromArray(AllRows)
Riga 335: Riga 425:
if Item.claims['P46'] then
if Item.claims['P46'] then
-- Arc
-- Arc
if CollectionTable == nil then
CollectionTable = ""
end
CollectionTable = CollectionTable .. string.char(10) .. MakeNavTable(Item.claims["P46"][1].qualifiers, "Arco: " .. Item.claims["P46"][1].mainsnak.datavalue.value)
CollectionTable = CollectionTable .. string.char(10) .. MakeNavTable(Item.claims["P46"][1].qualifiers, "Arco: " .. Item.claims["P46"][1].mainsnak.datavalue.value)
end
end
Riga 356: Riga 449:
end
end
end
end
 
--- Function to expand template contained within description,
-- if present
-- @param frame Data from MW session
-- @return String Text containing URL to SkyMap
function p.SkyMapLink(RA, D)
-- Example
-- http://my.sky-map.org/v2?ra=0.709946185638474&de=41.22867547300068&zoom=5&show_grid=1&show_constellation_lines=1&show_constellation_boundaries=1&show_const_names=0&show_galaxies=1&show_box=1&box_ra=0.71166664&box_de=41.266666&box_width=682.6667008&box_height=682.6667008&box_var_size=1
-- https://secure.sky-map.org/v2
-- return "https://secure.sky-map.org/v2?ra=" .. RA .. "&de=" .. D
local URI
local Int
local Frac
local DMS = {}
-- Zoom value 7 is the standard one when searching object in WikiSky
URI = "http://www.wikisky.org/v2?ra=" .. RA .. "&de=" .. D .. "&zoom=7"
for _, Coord in pairs({RA, D}) do
Int, Frac = math.modf(Coord)
table.insert(DMS, Int)
Int, Frac = math.modf(math.abs(Frac) * 60)
table.insert(DMS, Int)
Int, Frac = math.modf(math.abs(Frac) * 60)
if Frac > 0.5 then
Int = Int + 1
end
table.insert(DMS, Int)
end
--return "[" .. URI .. " " ..  table.concat(DMS, "<sup>s</sup> ") .. "]"
return "[" .. URI .. " " .. DMS[1] .. "<sup>h</sup> " .. DMS[2] .. "<sup>m</sup> " .. DMS[3] .. "<sup>s</sup>, " .. DMS[4] .. "° " .. DMS[5] .. "′ " .. DMS[6] .. "″]"
end
--- Function to expand template contained within description,
--- Function to expand template contained within description,
-- if present
-- if present
Riga 363: Riga 488:
function p.DescrWithTemplate(frame)
function p.DescrWithTemplate(frame)
local RawDescription = mw.wikibase.getDescription()
local RawDescription = mw.wikibase.getDescription()
local Pattern = "{{.*}}"
local Pattern = "{{.-}}"
--[==[
--[==[
Riga 401: Riga 526:
end
end
return table.concat(QualiValue, string.char(10))
return table.concat(QualiValue, ", ") --string.char(10))
--[=[
--[=[
Riga 439: Riga 564:
ImageString = "[[File:Menu.png|left|middle|30px|HyperTrek logo]]"
ImageString = "[[File:Menu.png|left|middle|30px|HyperTrek logo]]"
DataString = "Informazioni originali lette dal database di <h2 class='hiddenheaderbold'>HyperTrek</h2> datato " .. frame:expandTemplate{title = 'TimeL', args = {Tipo='ITMedia', Istante=HTNodes.mainsnak.datavalue.value.time}} .. " con i seguenti dettagli: "
DataString = "Informazioni originali lette dal database di <h2 class='hiddenheaderbold'>HyperTrek</h2> datato " .. frame:expandTemplate{title = 'TimeL', args = {Tipo='ITMedia', Istante=HTNodes.mainsnak.datavalue.value.time}} .. " con i seguenti dettagli: "
if AddSemantic then
mw.smw.set(mw.wikibase.getLabelByLang('P79', 'it') .. "=" .. Item.claims['P79'][1].mainsnak.datavalue.value.time)
end
 
 
for _, Qualifier in pairs(HTNodes.qualifiers) do
for _, Qualifier in pairs(HTNodes.qualifiers) do
Riga 450: Riga 579:
end
end
QualiString = QualiString .. "<li " .. "title='" .. QualiProp .. "'>'''" .. QualiName .. "''': " .. QualiValue .. "</li>"
if AddSemantic then
if AddSemantic then
mw.smw.set(QualiName .. "=" .. QualiValue)
mw.smw.set(QualiName .. "=" .. QualiValue)
end
end
--QualiString = QualiString .. "<li " .. "title='" .. QualiProp .. "'>'''" .. QualiName .. "''': " .. QualiValue .. "</li>"
QualiString = QualiString .. "<li " .. "title='" .. QualiProp .. "'>'''" .. string.gsub(QualiName, "HyperTrek", "HT") .. "''': " .. QualiValue .. "</li>"
end
end