ᱢᱳᱰᱩᱞ:Weather box
This template is used on 18000 pages, and changes to it will be widely noticed. Please test any changes in the template's /sandbox or /testcases subpages, or in a user subpage, and consider discussing changes at the talk page before implementing them. |
This module is rated as ready for general use. It has reached a mature form and is thought to be bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
This module is subject to page protection. It is a highly visible module in use by a very large number of articles, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is is protected from editing. |
Usage
ᱥᱟᱯᱲᱟᱣThis module is used by {{Weather box}}.
{{#invoke:Weather box|function_name}}
Edmonton City Centre (Blatchford Field) Airport (1981−2010)ᱨᱮᱭᱟᱜ ᱦᱚᱭᱼᱦᱤᱥᱤᱫ ᱵᱟᱵᱚᱛ ᱠᱟᱛᱷᱟ | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ᱪᱟᱸᱫᱚ | ᱡᱟᱱ | ᱯᱷᱮᱵᱽ | ᱢᱟᱨᱪ | ᱮᱯᱨᱤᱞ | ᱢᱮᱹ | ᱡᱩᱱ | ᱡᱩᱞᱟᱭ | ᱟᱜᱚᱥᱴ | ᱥᱮᱯ | ᱚᱠᱴᱚ | ᱱᱚᱵᱷᱮ | ᱰᱤᱥᱮ | ᱥᱮᱨᱢᱟ |
ᱡᱟᱹᱥᱛᱤ ᱨᱮᱠᱳᱨᱰ °ᱥᱮ (°ᱯᱷᱟ) | 11.7 (53.1) |
14.0 (57.2) |
23.9 (75.0) |
31.1 (88.0) |
32.3 (90.1) |
34.9 (94.8) |
34.6 (94.3) |
34.5 (94.1) |
33.9 (93.0) |
28.6 (83.5) |
21.7 (71.1) |
16.7 (62.1) |
34.9 (94.8) |
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱪᱮᱛᱟᱱ °ᱥᱮ (°ᱯᱷᱟ) | −6.0 (21.2) |
−2.7 (27.1) |
2.2 (36.0) |
11.2 (52.2) |
17.5 (63.5) |
21.0 (69.8) |
23.1 (73.6) |
22.6 (72.7) |
17.1 (62.8) |
10.4 (50.7) |
0.0 (32.0) |
−4.5 (23.9) |
9.3 (48.7) |
ᱫᱤᱱᱟᱹᱢ ᱮᱵᱷᱚᱨᱮᱡᱽ °ᱥᱮ (°ᱥᱮ) | −10.4 (13.3) |
−7.6 (18.3) |
−2.5 (27.5) |
5.4 (41.7) |
11.5 (52.7) |
15.5 (59.9) |
17.7 (63.9) |
16.9 (62.4) |
11.4 (52.5) |
5.1 (41.2) |
−4.1 (24.6) |
−8.8 (16.2) |
4.2 (39.6) |
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱞᱟᱛᱟᱨ °ᱥᱮ (°ᱯᱷᱟ) | −14.8 (5.4) |
−12.5 (9.5) |
−7.2 (19.0) |
−0.5 (31.1) |
5.4 (41.7) |
9.9 (49.8) |
12.3 (54.1) |
11.3 (52.3) |
5.8 (42.4) |
−0.2 (31.6) |
−8.2 (17.2) |
−13.1 (8.4) |
−1.0 (30.2) |
ᱥᱟᱱᱟᱢ ᱠᱷᱚᱱ ᱡᱚᱢ ᱨᱮᱠᱳᱨᱰ °ᱥᱮ (°ᱯᱷᱟ) | −44.4 (−47.9) |
−46.1 (−51.0) |
−36.1 (−33.0) |
−25.6 (−14.1) |
−12.2 (10.0) |
−1.1 (30.0) |
0.6 (33.1) |
−1.2 (29.8) |
−11.7 (10.9) |
−25.0 (−13.0) |
−34.1 (−29.4) |
−48.3 (−54.9) |
−48.3 (−54.9) |
ᱥᱟᱱᱟᱢ ᱠᱷᱚᱱ ᱡᱚᱢ ᱦᱚᱭ ᱨᱮᱭᱟᱜ ᱨᱮᱭᱟᱲ ᱨᱮᱠᱳᱨᱰ | −52.8 | −50.7 | −44.6 | −37.5 | −14.5 | 0.0 | 0.0 | −3.7 | −13.3 | −34.3 | −50.2 | −55.5 | −55.5 |
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ ᱢᱤᱢᱤ (ᱤᱧᱪᱤ) | 21.7 (0.85) |
12.0 (0.47) |
15.8 (0.62) |
28.8 (1.13) |
46.1 (1.81) |
77.5 (3.05) |
93.8 (3.69) |
61.9 (2.44) |
43.5 (1.71) |
21.7 (0.85) |
18.0 (0.71) |
15.0 (0.59) |
455.7 (17.94) |
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ ᱢᱤᱢᱤ (ᱤᱧᱪᱤ) | 1.3 (0.05) |
0.76 (0.03) |
1.7 (0.07) |
14.5 (0.57) |
40.7 (1.60) |
77.5 (3.05) |
93.8 (3.69) |
61.8 (2.43) |
42.4 (1.67) |
10.9 (0.43) |
1.6 (0.06) |
0.73 (0.03) |
347.8 (13.69) |
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱵᱚᱨᱚᱯᱷᱼᱡᱟᱹᱲᱤ ᱥᱮᱢᱤ (ᱤᱧᱪᱤ) | 24.5 (9.6) |
13.4 (5.3) |
17.4 (6.9) |
15.3 (6.0) |
4.9 (1.9) |
0.0 (0.0) |
0.0 (0.0) |
0.0 (0.0) |
1.0 (0.4) |
11.6 (4.6) |
19.1 (7.5) |
16.4 (6.5) |
123.5 (48.6) |
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ ᱢᱟᱦᱟᱸ (≥ 0.2 mm) | 11.0 | 7.9 | 8.3 | 8.8 | 11.0 | 14.2 | 14.6 | 11.1 | 9.8 | 8.0 | 8.8 | 9.4 | 122.9 |
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ ᱢᱟᱦᱟᱸ (≥ 0.2 mm) | 1.1 | 0.83 | 1.4 | 5.9 | 10.5 | 14.2 | 14.6 | 11.1 | 9.6 | 5.6 | 1.5 | 0.75 | 77.3 |
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱵᱚᱨᱚᱯᱷᱼᱡᱟᱹᱲᱤ ᱢᱟᱦᱟᱸ (≥ 0.2 cm) | 10.7 | 7.7 | 7.7 | 4.2 | 1.2 | 0.0 | 0.0 | 0.0 | 0.50 | 3.2 | 7.9 | 9.3 | 52.4 |
ᱮᱵᱷᱚᱨᱮᱡᱽ relative humidity (%) | 65.2 | 61.2 | 56.5 | 42.9 | 40.4 | 48.2 | 52.6 | 51.4 | 50.1 | 50.5 | 64.7 | 65.4 | 54.1 |
ᱮᱵᱷᱚᱨᱮᱡᱽ ᱪᱟᱸᱫᱚᱠᱤᱭᱟᱹ ᱥᱤᱛᱩᱝ ᱚᱠᱛᱚ | 100.8 | 121.7 | 176.3 | 244.2 | 279.9 | 285.9 | 307.5 | 282.3 | 192.7 | 170.8 | 98.4 | 84.5 | ᱒,᱓᱔᱔.᱘ |
ᱥᱤᱛᱩᱝ ᱟᱹᱥ ᱨᱮᱭᱟᱜ ᱥᱟᱭᱠᱚᱲᱟ | 40.2 | 44.1 | 48.1 | 58.2 | 56.8 | 56.2 | 60.2 | 61.5 | 50.4 | 52.0 | 37.8 | 36.0 | 50.1 |
ᱮᱵᱷᱚᱨᱮᱡᱽ ultraviolet index | 0 | 1 | 3 | 5 | 7 | 9 | 11 | 9 | 7 | 5 | 3 | 1 | 5 |
ᱯᱷᱮᱰᱟᱛ: Environment Canada,[᱑] Weather Atlas[᱒] |
References
- ↑ "Edmonton City Centre Airport". Canadian Climate Normals 1981−2010. Environment Canada. August 19, 2013. Retrieved September 10, 2013.
- ↑ "Monthly weather forecast and Climate: Edmonton, Canada". Weather Atlas. Retrieved March 12, 2019.
-- Implement [[Template:Weather box]].
local precision = require('Module:Math')._precision
local function stripToNil(text)
-- If text is a non-empty string, return its trimmed content.
-- Otherwise, return nothing (text is an empty string or is not a string).
if type(text) == 'string' then
return text:match('(%S.-)%s*$')
end
end
local function isAny(args, suffix)
local months = { 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' }
for _, month in ipairs(months) do
if stripToNil(args[month .. suffix]) then
return true
end
end
end
local function makeLabel(args, is_first, base, what)
local first
if isAny(args, ' ' .. what .. ' cm') then
first = 'ᱥᱮᱢᱤ'
else
if isAny(args, ' ' .. what .. ' mm') then
first = 'ᱢᱤᱢᱤ'
else
first = (what == 'snow' or
precision(args['Jan ' .. what .. ' inch'] or '0') < 1)
and 'ᱥᱮᱢᱤ'
or 'ᱢᱤᱢᱤ'
end
end
local second = 'ᱤᱧᱪᱤ'
if not stripToNil(args['metric first']) then
first, second = second, first
end
if is_first then
if stripToNil(args['single line']) then
first = first .. ' (' .. second .. ')'
end
else
first = second
end
return base .. ' ' .. first
end
local function makeSources(frame, args)
local source1 = stripToNil(args.source) or stripToNil(args['source 1'])
local source2 = stripToNil(args['source 2']) or stripToNil(args['source2'])
local result = '|-\n|colspan="14" style="text-align:center;font-size:95%;"|'
local text
if source1 or source2 then
if source1 and source2 then
text = 'ᱯᱷᱮᱰᱟᱛ ᱑: ' .. source1 .. '\n' .. result .. 'ᱯᱷᱮᱰᱟᱛ ᱒: ' .. source2
else
text = 'ᱯᱷᱮᱰᱟᱛ: ' .. (source1 and source1 or source2)
end
else
text = frame:expandTemplate({ title = 'citation needed', args = {date = stripToNil(args.date)} })
end
return result .. text .. '\n|}'
end
local function getDefinitions(frame, args)
-- Return a list of tables or strings that define each row.
local navbar = require('Module:Navbar')._navbar
local function _if(parm, a, b)
return stripToNil(args[parm]) and a or b or ''
end
local function _ifset(parm, a)
return stripToNil(args[parm]) and args[parm] or a
end
local function _ifany(suffix)
return isAny(args, suffix)
end
return {
----------- HEADER ----------
'{| class="wikitable ' .. _if('open', '', 'collapsible' .. _if('collapsed', ' collapsed')) ..
'" style="width:' .. _ifset('width', '100%') ..
'; text-align:center; line-height: 1.2em; margin:' ..
_ifset('margin', 'auto') .. ';"' ..
_if('open',
'\n|+ ' .. _if('location', args.location, '{{{location}}}') .. 'ᱨᱮᱭᱟᱜ ᱦᱚᱭᱼᱦᱤᱥᱤᱫ ᱵᱟᱵᱚᱛ ᱠᱟᱛᱷᱟ',
'\n|-' ..
'\n!colspan="14" | ' ..
_if('name',
navbar({_if('location', args.location, '{{{location}}}'), args.name, collapsible=1 .. 'ᱨᱮᱭᱟᱜ ᱦᱚᱭᱼᱦᱤᱥᱤᱫ ᱵᱟᱵᱚᱛ ᱠᱟᱛᱷᱟ'}),
_if('location', args.location, '{{{location}}}') .. 'ᱨᱮᱭᱟᱜ ᱦᱚᱭᱼᱦᱤᱥᱤᱫ ᱵᱟᱵᱚᱛ ᱠᱟᱛᱷᱟ'
)
) ..
[=[
|-
!scope="row" |ᱪᱟᱸᱫᱚ
!scope="col" |ᱡᱟᱱ
!scope="col" |ᱯᱷᱮᱵᱽ
!scope="col" |ᱢᱟᱨᱪ
!scope="col" |ᱮᱯᱨᱤᱞ
!scope="col" |ᱢᱮᱹ
!scope="col" |ᱡᱩᱱ
!scope="col" |ᱡᱩᱞᱟᱭ
!scope="col" |ᱟᱜᱚᱥᱴ
!scope="col" |ᱥᱮᱯ
!scope="col" |ᱚᱠᱴᱚ
!scope="col" |ᱱᱚᱵᱷᱮ
!scope="col" |ᱰᱤᱥᱮ
!scope="col" style="border-left-width:medium" |ᱥᱮᱨᱢᱟ
]=],
{---------- FIRST LINE MAXIMUM HUMIDEX ----------
WANTROW = _ifany(' maximum humidex') and (_ifset('metric first') or _ifset('single line')),
mode = 'basic',
group_name = 'maximum humidex',
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱥᱟᱱᱟᱢ ᱠᱷᱚᱱ ᱰᱷᱮᱨ ᱨᱮᱠᱳᱨᱰ [[:en:humidex|ᱞᱚᱦᱚᱫ]]',
annual_mode = 'max',
},
{---------- FIRST LINE RECORD HIGH TEMPERATURES ----------
WANTROW = _ifany(' record high C') or _ifany(' record high F'),
mode = 'temperature',
group_name = 'record high',
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱡᱟᱹᱥᱛᱤ ᱨᱮᱠᱳᱨᱰ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ') .. ')'),
annual_mode = 'max',
},
{---------- FIRST-SECOND LINE AVG MONTHLY MAXIMUM TEMPERATURES ----------
WANTROW = _ifany(' avg record high C') or _ifany(' avg record high F'),
mode = 'temperature',
group_name = 'avg record high',
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱪᱟᱸᱫᱚᱠᱤᱭᱟᱹ ᱮᱵᱷᱚᱨᱮᱡᱽ ᱪᱮᱛᱟᱱ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ') .. ')'),
annual_mode = 'max',
},
{---------- FIRST LINE AVERAGE HIGH TEMPERATURES ----------
WANTROW = _ifany(' high C') or _ifany(' high F'),
mode = 'temperature',
group_name = 'high',
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱪᱮᱛᱟᱱ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ') .. ')'),
annual_mode = 'avg',
},
{---------- FIRST LINE DAILY MEAN TEMPERATURES ----------
WANTROW = _ifany(' mean C') or _ifany(' mean F'),
mode = 'temperature',
group_name = 'mean',
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱫᱤᱱᱟᱹᱢ ᱮᱵᱷᱚᱨᱮᱡᱽ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. ')'),
annual_mode = 'avg',
},
{---------- FIRST LINE AVERAGE LOW TEMPERATURES ----------
WANTROW = _ifany(' low C') or _ifany(' low F'),
mode = 'temperature',
group_name = 'low',
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱞᱟᱛᱟᱨ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ') .. ')'),
annual_mode = 'avg',
},
{---------- FIRST-SECOND LINE AVG MONTHLY MINIMUM TEMPERATURES ----------
WANTROW = _ifany(' avg record low C') or _ifany(' avg record low F'),
mode = 'temperature',
group_name = 'avg record low',
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱪᱟᱸᱫᱚᱠᱤᱭᱟᱹ ᱮᱵᱷᱚᱨᱮᱡᱽ ᱠᱚᱢ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ') .. ')'),
annual_mode = 'min',
},
{---------- FIRST LINE RECORD LOW TEMPERATURES ----------
WANTROW = _ifany(' record low C') or _ifany(' record low F'),
mode = 'temperature',
group_name = 'record low',
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱥᱟᱱᱟᱢ ᱠᱷᱚᱱ ᱡᱚᱢ ᱨᱮᱠᱳᱨᱰ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ') .. ')'),
annual_mode = 'min',
},
{---------- FIRST LINE MINIMUM WIND CHILL ----------
WANTROW = _ifany(' chill') and (_ifset('metric first') or _ifset('single line')),
mode = 'basic',
group_name = 'chill',
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱥᱟᱱᱟᱢ ᱠᱷᱚᱱ ᱡᱚᱢ ᱦᱚᱭ ᱨᱮᱭᱟᱜ ᱨᱮᱭᱟᱲ ᱨᱮᱠᱳᱨᱰ',
annual_mode = 'min',
},
{---------- FIRST LINE TOTAL PRECIPITATION ----------
WANTROW = _ifany(' precipitation cm') or _ifany(' precipitation mm') or _ifany(' precipitation inch'),
mode = 'precipitation',
group_name = 'precipitation',
color_scheme = _ifset('precipitation colour', 'p'),
date_mode = true,
scale_factor = '1',
prefer_cm = precision(_ifset('Jan precipitation inch', '0')) < 1,
label = makeLabel(args, true, 'ᱮᱵᱷᱚᱨᱮᱡᱽ [[ᱡᱟᱹᱲᱤ|ᱫᱟᱜᱼᱡᱟᱹᱲᱤ]]', 'precipitation'),
annual_mode = 'sum',
},
{---------- FIRST LINE RAINFALL ----------
WANTROW = _ifany(' rain cm') or _ifany(' rain mm') or _ifany(' rain inch'),
mode = 'precipitation',
group_name = 'rain',
color_scheme = _ifset('rain colour', 'p'),
date_mode = true,
scale_factor = '1',
prefer_cm = precision(_ifset('Jan rain inch', '0')) < 1,
label = makeLabel(args, true, 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ', 'rain'),
annual_mode = 'sum',
},
{---------- FIRST LINE SNOWFALL ----------
WANTROW = _ifany(' snow cm') or _ifany(' snow mm') or _ifany(' snow inch'),
mode = 'precipitation',
group_name = 'snow',
prefer_cm = true,
color_scheme = _ifset('snow colour', 'p'),
date_mode = true,
scale_factor = '1',
label = makeLabel(args, true, 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱵᱚᱨᱚᱯᱷᱼᱡᱟᱹᱲᱤ', 'snow'),
annual_mode = 'sum',
},
{---------- SECOND LINE MAXIMUM HUMIDEX ----------
WANTROW = not _ifset('single line') and _ifany(' maximum humidex'),
mode = 'basic',
group_name = 'maximum humidex',
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱞᱚᱦᱚᱫ ᱩᱱᱩᱫᱩᱜ',
annual_mode = 'max',
second_line = true,
},
{---------- SECOND LINE RECORD HIGH TEMPERATURES ----------
WANTROW = not _ifset('single line') and (_ifany(' record high C') or _ifany(' record high F')),
mode = 'temperature',
group_name = 'record high',
second_line = true,
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱡᱟᱹᱥᱛᱤ ᱨᱮᱠᱳᱨᱰ °' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ'),
annual_mode = 'max',
},
{---------- SECOND LINE AVERAGE HIGH TEMPERATURES ----------
WANTROW = not _ifset('single line') and (_ifany(' high C') or _ifany(' high F')),
mode = 'temperature',
group_name = 'high',
second_line = true,
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱪᱮᱛᱟᱱ °' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ'),
annual_mode = 'avg',
},
{---------- SECOND LINE DAILY MEAN TEMPERATURES ----------
WANTROW = not _ifset('single line') and (_ifany(' mean C') or _ifany(' mean F')),
mode = 'temperature',
group_name = 'mean',
second_line = true,
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱫᱤᱱᱟᱹᱢ ᱮᱵᱷᱚᱨᱮᱡᱽ °' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ'),
show = _if('metric first', '2', '1'),
annual_mode = 'avg',
},
{---------- SECOND LINE AVERAGE LOW TEMPERATURES ----------
WANTROW = not _ifset('single line') and (_ifany(' low C') or _ifany(' low F')),
mode = 'temperature',
group_name = 'low',
second_line = true,
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱞᱟᱛᱟᱨ °' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ'),
show = _if('metric first', '2', '1'),
annual_mode = 'avg',
},
{---------- SECOND LINE RECORD LOW TEMPERATURES ----------
WANTROW = not _ifset('single line') and (_ifany(' record low C') or _ifany(' record low F')),
mode = 'temperature',
group_name = 'record low',
second_line = true,
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱥᱟᱱᱟᱢ ᱠᱷᱚᱱ ᱡᱚᱢ ᱨᱮᱠᱳᱨᱰ °' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ'),
show = _if('metric first', '2', '1'),
annual_mode = 'min',
},
{---------- SECOND LINE MINIMUM WIND CHILL ----------
WANTROW = not _ifset('single line') and (_ifany(' chill') and _if('metric first')),
mode = 'basic',
group_name = 'chill',
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = '[[:en:Wind chill|ᱦᱚᱭ ᱨᱮᱭᱟᱜ ᱨᱮᱭᱟᱲ]]',
annual_mode = 'min',
},
{---------- SECOND LINE TOTAL PRECIPITATION ----------
WANTROW = not _ifset('single line') and (_ifany(' precipitation cm') or _ifany(' precipitation mm') or _ifany(' precipitation inch')),
mode = 'precipitation',
group_name = 'precipitation',
second_line = true,
color_scheme = _ifset('precipitation colour', 'p'),
date_mode = true,
scale_factor = '1',
prefer_cm = precision(_ifset('Jan precipitation inch', '0')) < 1,
label = makeLabel(args, false, 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ', 'precipitation'),
annual_mode = 'sum',
},
{---------- SECOND LINE RAINFALL ----------
WANTROW = not _ifset('single line') and (_ifany(' rain cm') or _ifany(' rain mm') or _ifany(' rain inch')),
mode = 'precipitation',
group_name = 'rain',
second_line = true,
color_scheme = _ifset('rain colour', 'p'),
date_mode = true,
scale_factor = '1',
prefer_cm = precision(_ifset('Jan rain inch', '0')) < 1,
label = makeLabel(args, false, 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ', 'rain'),
annual_mode = 'sum',
},
{---------- SECOND LINE SNOWFALL ----------
WANTROW = not _ifset('single line') and (_ifany(' snow cm') or _ifany(' snow mm') or _ifany(' snow inch')),
mode = 'precipitation',
group_name = 'snow',
second_line = true,
prefer_cm = true,
color_scheme = _ifset('snow colour', 'p'),
date_mode = true,
scale_factor = '1',
label = makeLabel(args, false, 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱵᱚᱨᱚᱯᱷᱼᱡᱟᱹᱲᱤ', 'snow'),
annual_mode = 'sum',
},
{---------- PRECIPITATION DAYS ----------
WANTROW = _ifany(' precipitation days'),
mode = 'basic',
group_name = 'precipitation days',
color_scheme = _ifset('precip days colour', 'd'),
date_mode = true,
scale_factor = '1',
label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ ᱢᱟᱦᱟᱸ' .. _if('unit precipitation days', ' <span style="font-size:90%;" class="nowrap">(≥ ' .. _ifset('unit precipitation days', '') .. ')</span>'),
annual_mode = 'sum',
},
{---------- RAINY DAYS ----------
WANTROW = _ifany(' rain days'),
mode = 'basic',
group_name = 'rain days',
color_scheme = _ifset('precip days colour', 'd'),
date_mode = true,
scale_factor = '1',
label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱟᱜᱼᱡᱟᱹᱲᱤ ᱢᱟᱦᱟᱸ' .. _if('unit rain days', ' <span style="font-size:90%;" class="nowrap">(≥ ' .. _ifset('unit rain days', '') .. ')</span>'),
annual_mode = 'sum',
},
{---------- SNOWY DAYS ----------
WANTROW = _ifany(' snow days'),
mode = 'basic',
group_name = 'snow days',
color_scheme = _ifset('precip days colour', 'd'),
date_mode = true,
scale_factor = '1',
label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱵᱚᱨᱚᱯᱷᱼᱡᱟᱹᱲᱤ ᱢᱟᱦᱟᱸ' .. _if('unit snow days', ' <span style="font-size:90%;" class="nowrap">(≥ ' .. _ifset('unit snow days', '') .. ')</span>'),
annual_mode = 'sum',
},
{---------- PERCENT RELATIVE HUMIDITY ----------
WANTROW = _ifany(' humidity'),
mode = 'basic',
group_name = 'humidity',
color_scheme = _ifset('humidity colour', 'h'),
scale_factor = '1',
label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ [[:en:relative humidity|relative humidity]] (%)' ..
_if('time day', ' <span style="font-size:90%;" class="nowrap">(at {{{time day}}})</span>') ..
_if('daily', ' <span style="font-size:90%;" class="nowrap">(daily average)</span>'),
annual_mode = 'avg',
},
{---------- AFTERNOON PERCENT RELATIVE HUMIDITY ----------
WANTROW = _ifany(' afthumidity'),
mode = 'basic',
group_name = 'afthumidity',
color_scheme = _ifset('humidity colour', 'h'),
scale_factor = '1',
label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱟᱹᱭᱩᱵ [[:en:relative humidity|relative humidity]] (%)' ..
_if('time day', ' <span style="font-size:90%;" class="nowrap">(at {{{time day}}})</span>') ..
_if('daily', ' <span style="font-size:90%;" class="nowrap">(ᱫᱤᱱᱟᱹᱢ ᱮᱵᱷᱚᱨᱮᱡᱽ)</span>'),
annual_mode = 'avg',
},
{---------- FIRST LINE AVERAGE DEW POINT ----------
WANTROW = _ifany(' dew point C') or _ifany(' dew point F'),
mode = 'temperature',
group_name = 'dew point',
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱥᱤᱥᱤᱨ ᱴᱩᱰᱟᱹᱜ °' .. _if('metric first', 'ᱥᱮ', 'ᱯᱷᱟ') .. _if('single line', ' (°' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ') .. ')'),
annual_mode = 'avg',
},
{---------- SECOND LINE AVERAGE DEW POINT----------
WANTROW = not _ifset('single line') and (_ifany(' dew point C') or _ifany(' dew point F')),
mode = 'temperature',
group_name = 'dew point',
second_line = true,
color_scheme = _ifset('temperature colour', 't'),
scale_factor = '1',
label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱥᱤᱥᱤᱨ ᱴᱩᱰᱟᱹᱜ °' .. _if('metric first', 'ᱯᱷᱟ', 'ᱥᱮ'),
show = _if('metric first', '2', '1'),
annual_mode = 'avg',
},
{---------- MONTHLY SUNSHINE HOURS ----------
WANTROW = _ifany(' sun'),
mode = 'basic',
group_name = 'sun',
color_scheme = _ifset('sun colour', 's'),
date_mode = true,
scale_factor = '1',
label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱪᱟᱸᱫᱚᱠᱤᱭᱟᱹ [[:en:Sunshine duration|ᱥᱤᱛᱩᱝ ᱚᱠᱛᱚ]]',
annual_mode = 'sum',
},
{---------- DAILY SUNSHINE HOURS ----------
WANTROW = _ifany('d sun'),
mode = 'basic',
group_name = 'd sun',
color_scheme = _ifset('sun colour', 's'),
include_space = false,
scale_factor = '30.44',
label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱤᱱᱟᱹᱢ ᱥᱤᱛᱩᱝ ᱴᱟᱲᱟᱝ',
annual_mode = 'avg',
},
{---------- DAILY DAYLIGHT HOURS ----------
WANTROW = _ifany(' light'),
mode = 'basic',
group_name = ' light',
color_scheme = _ifset('sun colour', 's'),
include_space = false,
scale_factor = '30.44',
label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ ᱫᱤᱱᱟᱹᱢ [[:en:Daytime|ᱢᱟᱨᱥᱟᱞ ᱴᱟᱲᱟᱝ]]',
annual_mode = 'avg',
},
{---------- PERCENT SUNSHINE ----------
WANTROW = _ifany(' percentsun'),
mode = 'basic',
group_name = 'percentsun',
color_scheme = _ifset('sun colour', 's'),
scale_factor = '7.2',
label = 'ᱥᱤᱛᱩᱝ ᱟᱹᱥ ᱨᱮᱭᱟᱜ ᱥᱟᱭᱠᱚᱲᱟ',
annual_mode = 'avg',
},
{---------- ULTRAVIOLET INDEX ----------
WANTROW = _ifany(' uv'),
mode = 'basic',
group_name = 'uv',
color_scheme = _ifset('uv colour', 'u'),
scale_factor = '1',
label = 'ᱮᱵᱷᱚᱨᱮᱡᱽ [[:en:ultraviolet index|ultraviolet index]]',
annual_mode = 'avg',
},
----------- SOURCES ----------
makeSources(frame, args),
}
end
local function makeFrame(self_args, parent_args)
-- Kludge to pass arguments for a single row to buildRow.
-- Later: Refactor buildRow so this is not needed.
return {
args = self_args,
getParent = function (self) return makeFrame(parent_args, nil) end,
}
end
local function main(frame)
local buildRow = require('Module:Weather box/row').buildRow
local args = frame:getParent().args
local results = {}
for i, def in ipairs(getDefinitions(frame, args)) do
local row
if type(def) == 'string' then
row = def
elseif def.WANTROW then
row = buildRow(makeFrame(def, args))
else
row = ''
end
results[i] = row
end
return '<div>\n'..table.concat(results)..'\n</div>' -- prevent Scribunto from inserting a blank line before the table
end
return {
main = main,
}