Modulo:DTFunzioniComuni: differenze tra le versioni

Da Wikitrek.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
mNessun oggetto della modifica
Riga 160: Riga 160:
local AZCategory = ''
local AZCategory = ''
if AZInstancesMember[CurrentItem.claims['P14']] ~= nil then
if AZInstancesMember[CurrentItem.claims['P14'].mainsnak.datavalue.value.id] ~= nil then
-- Generate auto A-Z Category
-- Generate auto A-Z Category
-- TDOO generate 09 for numeric labels
-- TDOO generate 09 for numeric labels
local FirstLetter = string.upper(string.sub(wikibase.getLabel(), 1, 1))
local FirstLetter = string.upper(string.sub(wikibase.getLabel(), 1, 1))
AZCategory = "[[Category:" .. AZInstancesMember[CurrentItem.claims['P14']] .. " - " .. FirstLetter .. "]]"
AZCategory = "[[Category:" .. AZInstancesMember[CurrentItem.claims['P14']] .. " - " .. FirstLetter .. "]]"
return "TRUE" .. (table.concat(p.PropertiesOnTree("P69", 1, true))) .. AZCategory
return "TRUE" .. (table.concat(p.PropertiesOnTree("P68", 1, true))) .. AZCategory
else
else
return "FALSE" .. table.concat(p.PropertiesOnTree("P69", 2, true))
return "FALSE" .. table.concat(p.PropertiesOnTree("P68", 2, true))
end
end
end
end

Versione delle 17:59, 8 gen 2022

La documentazione per questo modulo può essere creata in Modulo:DTFunzioniComuni/man

-- Keyword: wikitrek

local LabelOrLink = require('Modulo:DTBase').LabelOrLink

local p = {}
function p.ImmagineDaFile(Frame)
    local item = mw.wikibase.getEntityIdForCurrentPage()
	if not item then return '' end
	
	local results = {}
	local statements = mw.wikibase.getBestStatements(item, 'P3')
	for _, statement in pairs(statements) do
		if statement.mainsnak.snaktype == 'value' then
			local Immagine = statement.mainsnak.datavalue.value
			
			if Immagine then
				results[#results + 1] = '[[File:' .. Immagine .. '|' .. Frame.args.OpzioniImmagine .. ']]'
			else
				results[#results + 1] = 'VUOTO'
			end
		else
			results[#results + 1] = 'ERRORE'
		end
	end
	return table.concat(results, ', ')
end
function p.Date(frame)
	local entity = mw.wikibase.getEntity()
	-- local snak = entity['claims']['P2'][1]

    -- return entity['claims']['P2'][1].value
    return entity.claims['P2'].value
end
function p.Network(frame)
	local entity = mw.wikibase.getEntity()
	local snak = entity['claims']['P2'][1]['qualifiers']['P4'][1]

    return mw.wikibase.renderSnak( snak )
end
function p.URL(frame)
    return mw.wikibase.getEntityUrl()
end
function p.List(frame)
	local entity = mw.wikibase.getEntity()
	local snak = entity['claims']['P2']
	local result = ''
	for index, value in next, snak do
		result = result .. mw.wikibase.renderSnak(value)
	end
end
function p.LinkFromPage(frame)
	local item = mw.wikibase.getEntityIdForCurrentPage()
	if not item then return '' end
	local results = {}
	local statements = mw.wikibase.getBestStatements(item, 'P7')
	for _, statement in pairs(statements) do
		if statement.mainsnak.snaktype == 'value' then
			local value = statement.mainsnak.datavalue.value
			local sitelink = value
			local label = null
			if sitelink then
				if label then
					results[#results + 1] = '[[' .. sitelink .. '|' .. label .. ']]'
				else
					results[#results + 1] = '[[' .. sitelink .. ']]'
				end
			elseif label then
				results[#results + 1] = label
			end
		end
	end
	return table.concat(results, ', ')
end
--- Three dashes indicate the beginning of a function or field documented
-- using the LDoc format
-- @param Property The property whose values are returned
-- @param Depth How far to go on the tree: 1 - item only, 2 - item and Instance, 3 - item, Instance and Instance of Instance
-- @param Aggregate Wether to aggregate results or return the first found
-- @param SkipItem Don't return value for current item, Instance and Instance of Instance only
-- @return Table withs strings or wikilinks
function p.PropertiesOnTree(Property, Depth, Aggregate, SkipItem)
	local CurrentItem = mw.wikibase.getEntity()
	local InstanceItem = nil
	local InstanceInstanceItem = nil
	local ResultsArray = {}
	--local ItemQ = mw.wikibase.getEntityIdForCurrentPage()
	if not CurrentItem then
		CurrentItem = mw.wikibase.getEntity('Q1')
	end
	
	if Depth == nil or Depth < 1 then
		Depth = 1
	end
	if Depth > 3 then
		Depth = 3
	end
	if SkipItem == nil then
		SkipItem = false
	end
	
	if Depth > 1 and CurrentItem['claims']['P14'] then
		--Set instance of
		--ResultsArray[#ResultsArray + 1] = ">1"
		InstanceItem = mw.wikibase.getEntity(CurrentItem['claims']['P14'][1].mainsnak.datavalue.value['id'])
		if Depth > 2 and InstanceItem['claims']['P14'] then
			--Set instance of instance
			--ResultsArray[#ResultsArray + 1] = ">2"
			InstanceInstanceItem = mw.wikibase.getEntity(InstanceItem['claims']['P14'][1].mainsnak.datavalue.value['id'])
		end
	end
	
	--[=[
	ResultsArray[#ResultsArray + 1] = Property .. " - " .. Depth .. " - " .. tostring(Aggregate)
	ResultsArray[#ResultsArray + 1] = Property .. " - " .. Depth .. " - " .. tostring(InstanceInstanceItem)
	
	if CurrentItem.claims[Property] then
		ResultsArray[#ResultsArray + 1] = LabelOrLink(CurrentItem.claims[Property][1].mainsnak.datavalue.value.id)
		if not Aggregate then
			return resultsArray
		end 
	end]=]
	
	local QList = {}
	if SkipItem then
		QList = {InstanceItem, InstanceInstanceItem}
	else
		QList = {CurrentItem, InstanceItem, InstanceInstanceItem}
	end
	
	--for _, Item in pairs({CurrentItem, InstanceItem, InstanceInstanceItem}) do
	for _, Item in pairs(QList) do
		--ResultsArray[#ResultsArray + 1] = "For - " .. Item.id 
		if Item ~= nil and Item.claims[Property] then
			--ResultsArray[#ResultsArray + 1] = Item.id .. " - " .. Property
			--ResultsArray[#ResultsArray + 1] = LabelOrLink(Item.claims[Property][1].mainsnak.datavalue.value.id)
			local Values = Item.claims[Property]
			for _, SnakValue in pairs(Values) do
				if SnakValue.mainsnak.datavalue.value.amount ~= nil then
					ResultsArray[#ResultsArray + 1] = string.format('%u', SnakValue.mainsnak.datavalue.value.amount)
				elseif SnakValue.mainsnak.datavalue.value.id ~= nil then
					ResultsArray[#ResultsArray + 1] = LabelOrLink(SnakValue.mainsnak.datavalue.value.id)
				else
					ResultsArray[#ResultsArray + 1] = SnakValue.mainsnak.datavalue.value
				end
			end
			if not Aggregate then
				return ResultsArray
			end
		end
	end
	
	return ResultsArray
end
function p.SeriesTree(frame)
	return table.concat(p.PropertiesOnTree("P16", 3, false), "</br>")
end
function p.CategoryTree(frame)
	local AZInstancesMember = {Q23 = "Personaggi", Q18 = "Specie", Q95 = "Pianeti", Q19 = "Cast"}
	local CurrentItem = mw.wikibase.getEntity()
	local AZCategory = ''
	
	if AZInstancesMember[CurrentItem.claims['P14'].mainsnak.datavalue.value.id] ~= nil then
		-- Generate auto A-Z Category
		-- TDOO generate 09 for numeric labels
		local FirstLetter = string.upper(string.sub(wikibase.getLabel(), 1, 1))
		AZCategory = "[[Category:" .. AZInstancesMember[CurrentItem.claims['P14']] .. " - " .. FirstLetter .. "]]"
		return "TRUE" .. (table.concat(p.PropertiesOnTree("P68", 1, true))) .. AZCategory
	else
		return "FALSE" .. table.concat(p.PropertiesOnTree("P68", 2, true))
	end
end
function p.UpperCategoryTree(frame)
	return table.concat(p.PropertiesOnTree("P69", 1, true))
end
function p.IconTree(frame)
	local ImageName
	
	--return table.concat(p.PropertiesOnTree("P3", 3, false), "</br>")
	ImageName = p.PropertiesOnTree("P3", 3, false)[1]
	if ImageName == nil or ImageName == '' then
		local CurrentItem
		
		CurrentItem = mw.wikibase.getEntity()
		-- Takes icon from SERIES P16
		ImageName = mw.wikibase.getEntity(CurrentItem.claims['P16'][1].mainsnak.datavalue.value.id).claims['P3'][1].mainsnak.datavalue.value
	end
	
	return ImageName
end
function p.SeasonTree(frame)
	return table.concat(p.PropertiesOnTree("P18", 3, false), "</br>")
end
function p.AffiliationTree(frame)
	return table.concat(p.PropertiesOnTree("P40", 3, false), "</br>")
end
function p.OperatorTree(frame)
	return table.concat(p.PropertiesOnTree("P41", 3, false), "</br>")
end
return p