67 692
contributi
m (Test) |
(Link to HT Sezione ID) |
||
(53 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 86: | 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 AstroRA = nil | ||
local AstroD = nil | local AstroD = nil | ||
local ListProp = {} | |||
local PageName | |||
if not Item then | if not Item then | ||
Riga 103: | Riga 107: | ||
end | end | ||
ExcludeP = {P3 = true, P7 = 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 114: | 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')) | if (mw.wikibase.getLabelByLang(ItemQ, 'it')) then | ||
local ITLabel | local ITLabel | ||
local ITValue | local ITValue | ||
Riga 123: | Riga 127: | ||
end | end | ||
ITValue = mw.wikibase.getLabelByLang(ItemQ, 'it') | ITValue = mw.wikibase.getLabelByLang(ItemQ, 'it') | ||
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 | ||
Riga 138: | Riga 145: | ||
end | end | ||
for _, Property in | --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 148: | Riga 158: | ||
elseif (Property == "P80" or Property == "P82") then | elseif (Property == "P80" or Property == "P82") then | ||
--Right Ascension or Declination | --Right Ascension or Declination | ||
if Property == "P80" then | if Property == "P80" then | ||
--Right ascension | --Right ascension | ||
Riga 187: | Riga 173: | ||
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]) | ||
Riga 198: | Riga 185: | ||
--OperatorName = string.gsub("[[Flotta Stellare|Flotta Stellare]]", "|.+]]", ""):gsub("%[%[", "") .. " - " | --OperatorName = string.gsub("[[Flotta Stellare|Flotta Stellare]]", "|.+]]", ""):gsub("%[%[", "") .. " - " | ||
OperatorName = string.gsub(PropValue, "|.+]]", ""):gsub("%[%[", "") .. " - " | OperatorName = string.gsub(PropValue, "|.+]]", ""):gsub("%[%[", "") .. " - " | ||
--mw.smw.set("OperatorName1=" .. OperatorName) | |||
end | 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 212: | 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 | 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 | ||
Year = LabelOrLink(SnakValue.qualifiers['P73'][1].datavalue.value['id']) | |||
Assignment = Year .. " " | |||
end | end | ||
Riga 232: | 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 257: | 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 266: | Riga 277: | ||
GenericItem = LabelOrLink(Value['id']) | GenericItem = LabelOrLink(Value['id']) | ||
end | end | ||
--mw.smw.set("OperatorName6=" .. OperatorName) | |||
-- Prefix | -- 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 | ||
mw.smw.set(" | --mw.smw.set("OperatorName8=" .. OperatorName .. " ( " .. Property) | ||
GenericItem = GenericItem .. "[[Category:" .. OperatorName .. mw.wikibase.getEntity(Value['id']).labels['it'].value .. "]]" | GenericItem = GenericItem .. "[[Category:" .. OperatorName .. mw.wikibase.getEntity(Value['id']).labels['it'].value .. "]]" | ||
GenericItem = mw.text.nowiki(GenericItem) .. mw.text.nowiki( | --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 | ||
Riga 289: | Riga 299: | ||
if SnakValue.qualifiers and SnakValue.qualifiers['P19'] then | if SnakValue.qualifiers and SnakValue.qualifiers['P19'] then | ||
GenericItem = GenericItem .. " " .. SnakValue.qualifiers['P19'][1].datavalue.value | 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 363: | 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 372: | 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 399: | 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 459: | 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 535: | 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 549: | Riga 582: | ||
mw.smw.set(QualiName .. "=" .. QualiValue) | mw.smw.set(QualiName .. "=" .. QualiValue) | ||
end | end | ||
-- | |||
if QualiProp == "P86" then | |||
--Sezione ID, add link to page | |||
QualiValue = frame:expandTemplate{title = 'HTSezioneID', args = {QualiValue}} | |||
end | |||
QualiString = QualiString .. "<li " .. "title='" .. QualiProp .. "'>'''" .. string.gsub(QualiName, "HyperTrek", "HT") .. "''': " .. QualiValue .. "</li>" | QualiString = QualiString .. "<li " .. "title='" .. QualiProp .. "'>'''" .. string.gsub(QualiName, "HyperTrek", "HT") .. "''': " .. QualiValue .. "</li>" | ||
end | end |