Module:Sandbox2/Rousseaulambertlp
Apparence
La documentation de ce module est générée par le modèle {{Documentation module}}.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
local p = {}
local getArgs = require('Module:Arguments').getArgs
local datePattern = "^(%d+)-(%d+)$"
local weatherTemplate = 'Modèle:Graphique_polygonal'
local wrapsTemplate = 'Utilisateur:Rousseaulambertlp/GraphBox'
function p.weathergraph( frame )
local args = getArgs(frame, { wrappers = wrapsTemplate })
local NYPage = assert(args.dataNY, 'Missing "NYdata" parameter')
args.dataNY = nil
local BAGPage = assert(args.dataBAG, 'Missing "BAGdata" parameter')
args.dataBAG = nil
local monthlyHigh_bag, monthlyLow_bag = {}, {}
local highSum_bag, highCount_bag = {}, {}
local lowSum_bag, lowCount_bag = {}, {}
local avgHighSum_bag, avgHighCount_bag = {}, {}
local avgLowSum_bag, avgLowCount_bag = {}, {}
local DJC_bag = {}
local monthlyHigh_ny, monthlyLow_ny = {}, {}
local highSum_ny, highCount_ny = {}, {}
local lowSum_ny, lowCount_ny = {}, {}
local avgHighSum_ny, avgHighCount_ny = {}, {}
local avgLowSum_ny, avgLowCount_ny = {}, {}
local DJC_ny = {}
for key, row in pairs(mw.ext.data.get(NYPage).data) do
local date_ny, highTemp_ny, avgHighTemp_ny, avgLowTemp_ny, lowTemp_ny, precip_ny, snowfall_ny, precipDays_ny, snowfallDays_ny = unpack(row)
local year, month = date_ny:match(datePattern)
month = tonumber(month)
recordAvg(avgHighSum_ny, avgHighCount_ny, month, avgHighTemp_ny)
recordAvg(avgLowSum_ny, avgLowCount_ny, month, avgLowTemp_ny)
end
for key, row in pairs(mw.ext.data.get(BAGPage).data) do
local date_bag, avgHighTemp_bag, avgLowTemp_bag, avgTemp_bag, extHighTemp_bag, extLowTemp_bag, precipTotalRain_bag, precipTotalSnow_bag, precipTotal_bag, snowGrndLastDay_bag, windDirMaxGust_bag, windSpeedMaxGust_bag = unpack(row)
local year, month = date_bag:match(datePattern)
month = tonumber(month)
recordAvg(avgHighSum_bag, avgHighCount_bag, month, avgHighTemp_bag)
recordAvg(avgLowSum_bag, avgLowCount_bag, month, avgLowTemp_bag)
end
for j=1, 12 do DJC_bag[j] = (((avgHighSum_bag[j] / avgHighCount_bag[j]) + (avgLowSum_bag[j] / avgLowCount_bag[j])) / 2) - 6 end
for i=1, 10 do args['S01V0' .. i] = string.format("%.1f", DJC_bag[i]) end
for i=10, 12 do args['S01V' .. i] = string.format("%.1f", DJC_bag[i]) end
--for i=1, 10 do args['S02V0' .. i] = string.format("%.1f", avgHighSum_ny[i] / avgHighCount_ny[i]) end
--for i=10, 12 do args['S02V' .. i] = string.format("%.1f", avgHighSum_ny[i] / avgHighCount_ny[i]) end
return frame:expandTemplate{ title = weatherTemplate, args = args }
end
function recordAvg(sumTbl, countTbl, month, value)
if value ~= nil then
sumTbl[month] = (sumTbl[month] or 0) + value
countTbl[month] = (countTbl[month] or 0) + 1
end
end
return p