Modulo:Demografia/sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Moroboshi (discussione | contributi)
Nessun oggetto della modifica
Moroboshi (discussione | contributi)
ottimizzazioni al codice
Riga 1:
require("Module:No globals")
local getArgs = require('Module:Arguments').getArgs
 
local p = {}
 
-- =====================================================================
-- Converte una stringa di valori numerici separati da "," in una lista
-- Legge gli argomenti per caricare un array di valori numerici.
-- Prima tenta di leggere il parametro <list_name> che deve contenere una
-- Converte una stringalista di valori numerici separati da ",". in una lista
-- Se fallisce tenta di leggere i singoli valori
-- <base_name1>, <base_name2> .. <base_name20>
-- Eventuali valori non numerici sono ignorati
-- =====================================================================
local function read_array(args, base_name, list_name)
local array = {}
Riga 11 ⟶ 16:
array = mw.text.split(string.gsub(args[list_name], "%s", ""), ",")
end
-- mi assicuro di tenere solo i primi venti valori
-- se l'array ha lunghezza nulla uso il vecchio metodo di inserimento
if #array ==> 020 then
for i =1 21, #populationsarray do
array[#array+1i] = numbernil
end
end
-- se l'array ha lunghezza nulla usotento di leggere i valori con il vecchio metodo di inserimento
if #array == 0 then
for i= 1,20 do
local numberarray[i] = tonumber(args[base_name .. tonumber(i)])
if number then
array[#array+1] = number
end
end
end
-- converto in numeri
for i =1,#populations220 do
array[i] = array[i] and tonumber(array[i])
end
return array
end
-- =====================================================================
-- Fonde le due liste years e population in un'unica lista
-- =====================================================================
local function merge_years_population(years, populations)
local values1values = { }
for i =1,#populations do
values1 values[i] = { year = years[i], population = populations[i] }
end
return values
end
 
 
-- =====================================================================
-- Generazione del grafico demografico
-- =====================================================================
function p._demografia(args)
-- generazioneDefinizione base del grafico
local graph = {
version = 2,
Riga 159 ⟶ 186:
}
}
-- generazione del grafico
local titolo = args.titolo or args[1] or "Abitanti censiti<br />"
local populations = read_array(args, "p", "popolazione")
Riga 165 ⟶ 191:
local populations2 = read_array(args, "pb", "popolazione2")
local years2 = read_array(args, "b", "anni2")
graph['data'][1]['values'] = values1merge_years_population(years, populations)
--TODO error checking
graph['data'][2]['values'] = merge_years_population(years2, populations2)
local values1 = { }
graph['width'] = args.dimx and tonumber(args.dimx) and tonumber(args.dimx)
for i =1,#populations do
graph['height'] = args.dimy and tonumber(args.dimy) and tonumber(args.dimy)
values1[i] = { year = years[i], population = populations[i] }
end
graph['data'][1]['values'] = values1
local values2 = { }
for i =1,#populations2 do
values2[i] = { year = years2[i], population = populations2[i] }
end
graph['data'][2]['values'] = values2
if args.dimx then
local width = tonumber(args.dimx)
if width then graph['width'] = width end
end
if args.dimy then
local height = tonumber(args.dimy)
if height then graph['height'] = height end
end
--if true then return mw.text.jsonEncode(graph) end
local template_text = "Censimenti dal {{datum.min_year}} al {{datum.max_year}}"
if #values2years2 > 0 then
graph['marks'][5]['properties']['enter']['text']['template'] = template_text .. " e dati annuali"
else