Modulo:Quickbar/sandbox
Aspetto
La documentazione per questo modulo può essere creata in Modulo:Quickbar/sandbox/man
local quickbar = {}
local getArgs = require('Module:Arguments').getArgs
local function is_defined(s)
if s and s ~= '' then return s end
return nil
end
function quickbar.Quickbar_header ( frame )
args = getArgs(frame)
if is_defined(args) and is_defined(args[1]) then
local output = mw.html.create('tr')
output
:tag('td')
:attr('colspan', is_defined(args['colspan']) or '2')
:addClass('qbHeader')
:wikitext(args[1] or '')
return tostring(output)
end
return nil
end
function quickbar.Quickbar_site ( frame )
-- Assumo la chiamata mediante #invoke, quindi usa gli argomenti passati al template invocante.
args = getArgs(frame)
if is_defined(args) and is_defined(args[1]) and is_defined(args[2]) then
return quickbar.Quickbar_header{'['..args[2]..' <small>'..args[1]..'</small>]'}
end
return nil
end
function quickbar.Quickbar_item ( frame )
args = getArgs(frame)
if is_defined(args) and is_defined(args[1]) and is_defined(args[2]) then
local output = mw.html.create('tr')
output
:tag('th')
:addClass('qbRowHeader')
:wikitext(args['heading'] or args[1] or '')
:done()
:tag('td')
:addClass('printNoLink qbRowValue')
:wikitext(args['value'] or args[2] or '')
return tostring(output)
end
return nil
end
function quickbar.Quickbar_image ( frame )
args = getArgs(frame)
if not is_defined(args) then return nil end
local heading = mw.html.create('')
if is_defined(args['heading']) then
heading
:tag('div')
:addClass('qbHeader')
:wikitext(args['heading'])
:done()
end
local output = mw.html.create('tr')
local extraClasses = args['class'] or ''
if #extraClasses > 0 then extraClasses = ' '.. extraClasses end
output
:tag('td')
:attr('colspan', is_defined(args['colspan']) or '2')
:addClass('qbImageCell')
:node(heading)
:tag('div')
:addClass('qbImage' .. extraClasses)
:wikitext(args['image'] or '')
return tostring(output)
end
function quickbar.coa_and_flag ( frame )
local Wikibase = require('Module:Wikibase')
local stemma = Wikibase.stemma()
local stemma_titolo = Wikibase.stemma_titolo()
local wikistemma = '[[File:'..stemma..'|70x70px|center|'..stemma_titolo..']]'
local bandiera = Wikibase.bandiera()
local bandiera_titolo = Wikibase.bandiera_titolo()
local wikibandiera = '[[File:'..bandiera..'|70x70px|center|border|'..bandiera_titolo..']]'
--Mostra stemma e bandiera affiancate quando entrambe presenti, o il solo stemma se la bandiera è mancante
if is_defined(stemma) then
if is_defined(bandiera) then
return quickbar.Quickbar_image{
heading='Stemma e Bandiera',
image='<div width="100%"><div style="display:inline-block;width: 50%;">'..wikistemma..'</div><div style="display:inline-block;width: 50%;">'..wikibandiera..'</div></div>'
}
else
return quickbar.Quickbar_image{
heading='Stemma',
image=wikistemma
}
end
--Mostra la sola bandiera quando lo stemma è mancante
elseif is_defined(bandiera) then
return quickbar.Quickbar_image{
heading='Bandiera',
image=wikibandiera
}
end
return nil
end
function quickbar.currency ( frame )
args = getArgs(frame)
if is_defined(args) and is_defined(args[1]) then
return args[1]
end
local mWikidata = require('Module:Wikidata')
local nome = mWikidata._getProperty({ 'P38', n = 1 })
if is_defined(nome) then
nome = nome:gsub("^%l", string.upper)
else
return nil
end
local codice = mWikidata._getProperty({ 'P498', n = 1, from = mWikidata._getProperty({ 'P38', n = 1, formatting = 'raw' }) })
if is_defined(codice) and (codice ~= "''nessun valore''") then
return nome .. ' (' .. codice .. ') '
else
return nome
end
end
function quickbar.capital ( frame )
args = getArgs(frame)
if is_defined(args) and is_defined(args[1]) then
return args[1]
end
local mWikidata = require('Module:Wikidata')
local capitale = mWikidata._getProperty({ 'P36', n = 1 })
if is_defined(capitale) then
return capitale
else
return nil
end
end
function quickbar.area ( frame )
args = getArgs(frame)
if is_defined(args) and is_defined(args[1]) then
return args[1]
end
local mWikidata = require('Module:Wikidata')
local area = mWikidata._getProperty({ 'P2046', n = 1 })
if is_defined(area) then
local prec = 0
if tonumber(area) < 1000 then prec = 2 end
return string.gsub( string.gsub( require('Modulo:Formatnum it').main({area, prec}), "(,%d-)0+$", "%1"), "(,)$", "") .. ' km²'
else
return nil
end
end
function quickbar.UTC_Format ( frame )
return (((frame[1]:gsub(":00","")):gsub("±00","")):gsub("−","-")):gsub("([%+%-])0","%1")
end
function quickbar.UTC ( frame )
args = getArgs(frame)
if is_defined(args) and is_defined(args.UTC) then
return args.UTC
end
local mWikidata = require('Module:Wikidata')
local qconfig = mw.loadData( 'Modulo:Quickbar/Configurazione');
local UTC_data = mWikidata._getProperty({'P421', qualifier='P1264', qualifiervalue='Q1777301'}, true)
if UTC_data == nil or #UTC_data == 0 then
UTC_data = mWikidata._getProperty({'P421'}, true)
end
if UTC_data == nil then
return ''
end
for index, value in ipairs(UTC_data) do
if qconfig.UTC[value] then
UTC_data[index] = qconfig.UTC[value]
end
end
if #UTC_data == 1 then
if string.match(UTC_data[1], "^UTC") then
UTC_data[1] = quickbar.UTC_Format({UTC_data[1]})
return UTC_data[1]
else
return ''
end
end
if #UTC_data > 1 then
local UTC_first = UTC_data[1]:match('^UTC ?(.*)') or UTC_data[1]
UTC_first = quickbar.UTC_Format({UTC_first})
local UTC_last = UTC_data[#UTC_data]:match('^UTC ?(.*)') or UTC_data[#UTC_data]
UTC_last = quickbar.UTC_Format({UTC_last})
return 'UTC da ' .. UTC_first .. ' a ' .. UTC_last
end
return ''
end
-- -- GESTISCO MAPPA DI LOCALIZZAZIONE --
-- Estrai latitudine e longitudine, preferendo quelli passati dall'utente
local function fetch_coords(args)
local wikibase = require('Modulo:Wikibase')
local latitude, longitude
-- User provided
if is_defined(args['lat']) or is_defined(args['long']) then
-- If any , use all of them
latitude = args['lat']
longitude = args['long']
else
-- If none, all from wikidata
latitude = wikibase.latitudine()
longitude = wikibase.longitudine()
end
-- Final check
latitude = is_defined(latitude) and latitude or ''
longitude = is_defined(longitude) and longitude or ''
return latitude, longitude
end
-- Determina la mappa da usare
local function determine_map(args)
local map = args['map']
if is_defined(map) then
return string.lower(map)
else
local wdGetProperty = require('Modulo:Wikidata')._getProperty
local countryId = wdGetProperty({ 'P17', n = 1, formatting = 'raw' })
local iso_code = wdGetProperty({ 'P297', n = 1, from = countryId })
return string.lower(iso_code) -- Ensure lowercase
end
end
-- Genera la mappa di localizzazione usata nel quickbar (via template quickbar image)
function quickbar.localizzazione(frame)
local args = getArgs(frame)
local latitude, longitude = fetch_coords(args)
local iso_code = determine_map(args)
local label = args['nome'] or mw.title.getCurrentTitle().text
if latitude ~= '' and longitude ~= '' and iso_code ~= '' then
-- Gestisco i parametri per il modulo Location map
local locMap = require('Modulo:Location map').locationMap
local locMapFrame = {}
locMapFrame.args = {
map = iso_code,
lat = tonumber(latitude),
long = tonumber(longitude),
name = label,
label = "'''" .. label .. "'''",
width = 250
}
-- Creo il Quickbar image
local quickbarImageArgs = {
heading = 'Posizione',
image = locMap( locMapFrame ),
class = 'dFlex',
}
return quickbar.Quickbar_image( quickbarImageArgs )
end
return ''
end
return quickbar