Aller au contenu

Module:Sandbox2/Rousseaulambertlp

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 23 janvier 2018 à 15:06 et modifiée en dernier par Rousseaulambertlp (discuter | contributions) (date-ny). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[créer] [purger]
local p = {}
local getArgs = require('Module:Arguments').getArgs
local datePattern = "^(%d+)-(%d+)$"
-- local weatherTemplate = 'Template:Weather box'
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.data, 'Missing "NYdata" parameter')
    args.data = nil

--    local BAGPage = assert(args.BAGdata, 'Missing "BAGdata" parameter')
--    args.BAGdata = nil

    local monthlyHigh_bag, monthlyLow_bag = {}, {}
    local highSum_bag, highCount_bag = {}, {}
    local monthlyHigh_ny, monthlyLow_ny = {}, {}
    local highSum_ny, highCount_ny = {}, {}

	-- There is currently no established way to specify sources, suggestions needed
	-- For now, prepend the link to edit box to the first source
--	local source = args['source'] or args['source 1']
--	if source then source = '<br>' .. source end
--	args['source'] = '[[commons:Data:'.. dataPage ..'|edit data]]' .. source
--	args['source 1'] = nil

--    for key, row in pairs(mw.ext.BAGdata.get(BAGPage).BAGdata) 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)

   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)

--        if extHighTemp_bag ~= nil and (monthlyHigh_bag[month] == nil or monthlyHigh_bag[month] < extHighTemp_bag) then monthlyHigh_bag[month] = extHighTemp_bag end
--        recordAvg(highSum_bag, highCount_bag, month, extHighTemp_bag)
        if highTemp_ny ~= nil and (monthlyHigh_ny[month] == nil or monthlyHigh_ny[month] < highTemp_ny) then monthlyHigh_ny[month] = highTemp_ny end
        recordAvg(highSum_ny, highCount_ny, month, highTemp_ny)
    end

    local months = {'jan','fev','mar','avr','mai','jui','jul','aou','sep','oct','nov','dec'}
--    for i=1, 10 do args['S02V0' .. i] = monthlyHigh_bag[i] end
--    for i=10, 12 do args['S02V' .. i] = monthlyHigh_bag[i] end
    for i=1, 10 do args['S01V0' .. i] = monthlyHigh_ny[i] end
    for i=10, 12 do args['S01V' .. i] = monthlyHigh_ny[i] end
--    for i=1, 12 do args['tmin-' .. months[i]] = monthlyLow[i] end
--    for i=1, 12 do args[months[i] .. 'avg record high C'] = string.format("%.1f", highSum[i] / highCount[i]) end
--    for i=1, 12 do args[months[i] .. 'avg record low C'] = string.format("%.1f", lowSum[i] / lowCount[i]) end
--    for i=1, 12 do args[months[i] .. 'high C'] = string.format("%.1f", avgHighSum[i] / avgHighCount[i]) end
--    for i=1, 12 do args[months[i] .. 'low C'] = string.format("%.1f", avgLowSum[i] / avgLowCount[i]) end
--    for i=1, 12 do args['prec-' .. months[i]] = string.format("%.1f", precipSum[i] / precipCount[i]) end
--    for i=1, 12 do args[months[i] .. ' snow mm'] = string.format("%.1f", snowfallSum[i] / snowfallCount[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