Modulo:Demografia: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Moroboshi (discussione | contributi)
refactoring
Moroboshi (discussione | contributi)
fix posizione modulo
 
(9 versioni intermedie di 2 utenti non mostrate)
Riga 1:
local mWikidata = require('Modulo:Wikidata/sandbox')
local mChart = require('Modulo:Graph/sandbox')
 
local p = {}
Riga 48 ⟶ 49:
 
local function get_wikidata(from)
local claims = mWikidata._getClaims({'P1082', 'P585', from=from, rank='normal'})
if not(claims) or #claims==0 then return nil end
--if true then return mw.text.jsonEncode(claims[1],mw.text.JSON_PRETTY) end
local raw_data = {}
 
for _,claim in ipairs(claims) do
claims = mWikidata._getClaims('P1082', { from = from, rank = 'normal' }) or {}
raw_data[#raw_data+1] = { year=mWikidata._formatQualifiers(claim, 'P585', {}),
for _, claim in ipairs(claims) do
population=tonumber(mWikidata._formatStatement(claim, {})) or 0 }
if raw_data[#raw_data ==+ 01] = then{
population = population=tonumber(mWikidata._formatStatement(claim, {})) or 0 },
raw_data[#raw_data+1]year = { year=mWikidata._formatQualifiers(claim, 'P585', {}),
end }
end
table.sort(raw_data, comp_year)
 
return raw_data
end
Riga 83 ⟶ 87:
end
 
local function p._demografiadraw_graph(raw_data, args, default)
local raw_datapopulations = read_array(args){}
local from_wikidatayears = false{}
for i,datad in ipairs(raw_data) do
if #raw_data == 0 then
years[i], populations[i] = d.year, d.population
raw_data = get_wikidata(args.from)
from_wikidata = true
-- if true then return mw.text.jsonEncode(raw_data, mw.text.JSON_PRETTY) end
end
local is_thousandgraph = false{
if #raw_data == 0 then return '' end
graphwidth = tonumber(args.dimx) or default.dimx,
local popmax = max_pop(raw_data)
graphheight = tonumber(args.dimy) or 280,
local is_thousand = false
ygrid = true,
if from_wikidata and popmax >= 900000 then
popmaxymax = args.popmax /or 1000tostring(default.popmax),
xtitle = 'anni',
for i,data in ipairs(raw_data) do
ytitle = 'popolazione',
raw_data[i].population = raw_data[i].population / 1000
y = { populations is_thousand = true},
endx = years,
graph_type = 'rect',
end
seriesTitles = {'Popolazione'},
-- calcolo default per la popolazione
colors = {'#4682B4'},
local default = default_table(popmax, #raw_data)
showValue = true
-- generazione del grafico
}
local graph_json = mChart.chart_json(graph)
if args.raw then return graph_json end
return mw.getCurrentFrame():extensionTag('graph', graph_json)
end
 
local function draw_timeline(raw_data, args, default)
local graph = {}
dump(graph, 'Colors=\n id:lightgrey value:gray(0.9)\n id:darkgrey value:gray(0.7)\n id:sfondo value:rgb(1,1,1)\n id:barra value:rgb(0.6,0.7,0.8)\n\n')
dump(graph, 'ImageSize = width:', args.dimx or tostring(default.dimx), ' height:', args.dmydimy or '373', '\n')
dump(graph, 'PlotArea = left:50 bottom:50 top:30 right:30\nDateFormat = x.y\n')
dump(graph, 'Period = from:0 till:', args.popmax or tostring(default.popmax), '\n')
Riga 115 ⟶ 124:
dump(graph, 'BarData=\n')
for _,data in ipairs(raw_data) do
dump(graph, string.format(' bar: %ds text:%ds\n', data.year, data.year))
end
dump(graph, '\n')
dump(graph, 'PlotData=\n color:barra width:20 align:left\n\n')
for _,data in ipairs(raw_data) do
dump(graph, string.format(' bar:%ds from:0 till:%d\n', data.year, data.population))
end
dump(graph, '\n')
Riga 127 ⟶ 136:
for _,data in ipairs(raw_data) do
local p_formatted = lang:formatNum(math.floor(data.population + 0,5) )
dump(graph, string.format(' bar: %ds at: %d fontsize:S text: %s shift:(-10,5)|n.d. shift:(-8,5)\n',
data.year, data.population, p_formatted))
end
Riga 140 ⟶ 149:
draw_graph = mw.getCurrentFrame():extensionTag('timeline', table.concat(graph))
end
return draw_graph
local titolo = "''Abitanti censiti''\n"
end
 
function p._demografia(args)
local graph
local raw_data = read_array(args)
local from_wikidata = false
if #raw_data == 0 then return '' end
raw_data = get_wikidata(args.from)
from_wikidata = true
-- if true then return mw.text.jsonEncode(claims[1]raw_data, mw.text.JSON_PRETTY) end
end
if not(claims) or #claimsraw_data == 0 then return nil'' end
local popmax = max_pop(raw_data)
local is_thousand = false
if from_wikidata and popmax >= 900000 then
popmax = popmax / 1000
for i,data in ipairs(raw_data) do
raw_data[i].population = raw_data[i].population / 1000
is_thousand = true
end
end
-- calcolo default per la popolazione
local default = default_table(popmax, #raw_data)
-- generazione del grafico
local titolo = "''Abitanti censiti''\n<br />"
if is_thousand then
titolo = "''Abitanti censiti (migliaia)''\n<br />"
end
if args.titolo then
titolo = "''" .. args.titolo .. "''\n<br />"
end
if args.graph then
graph = draw_graph(raw_data, args, default)
else
graph = draw_timeline(raw_data, args, default)
end
return titolo .. draw_graphgraph
end