<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nl">
		<id>http://wiki.vuilnisbak.xyz/index.php?action=history&amp;feed=atom&amp;title=Module%3AWeatherBox</id>
		<title>Module:WeatherBox - Bewerkingsoverzicht</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.vuilnisbak.xyz/index.php?action=history&amp;feed=atom&amp;title=Module%3AWeatherBox"/>
		<link rel="alternate" type="text/html" href="http://wiki.vuilnisbak.xyz/index.php?title=Module:WeatherBox&amp;action=history"/>
		<updated>2026-05-06T15:54:44Z</updated>
		<subtitle>Bewerkingsoverzicht voor deze pagina op de wiki</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>http://wiki.vuilnisbak.xyz/index.php?title=Module:WeatherBox&amp;diff=1065&amp;oldid=prev</id>
		<title>Admin: 1 versie geïmporteerd</title>
		<link rel="alternate" type="text/html" href="http://wiki.vuilnisbak.xyz/index.php?title=Module:WeatherBox&amp;diff=1065&amp;oldid=prev"/>
				<updated>2015-06-03T15:41:27Z</updated>
		
		<summary type="html">&lt;p&gt;1 versie geïmporteerd&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nieuwe pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;w = {};&lt;br /&gt;
math_mod = require( &amp;quot;Module:Math&amp;quot; );&lt;br /&gt;
wbc = require( &amp;quot;Module:WeatherBoxColors&amp;quot; );  &lt;br /&gt;
&lt;br /&gt;
function checkFlag( flag )&lt;br /&gt;
    if flag == nil then&lt;br /&gt;
        return nil;&lt;br /&gt;
    elseif type( flag ) == 'boolean' then&lt;br /&gt;
        return flag;        &lt;br /&gt;
    elseif type( flag ) == 'string' then&lt;br /&gt;
        flag = flag:lower();&lt;br /&gt;
        if flag == '0' or flag == 'false' or&lt;br /&gt;
                flag == '' or flag == 'no' or&lt;br /&gt;
                flag == 'n' then&lt;br /&gt;
            return false;&lt;br /&gt;
        else&lt;br /&gt;
            return true;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return error( 'Flag type not valid' );&lt;br /&gt;
    end    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function w.buildRow( frame )&lt;br /&gt;
    local mode = (frame.args.mode or 'basic'):lower();&lt;br /&gt;
    local group_name = frame.args.group_name;&lt;br /&gt;
    local first_value_string, second_value_string;&lt;br /&gt;
    local first_value_number, second_value_number, color_values;&lt;br /&gt;
    local color_scheme = frame.args.color_scheme or 't';&lt;br /&gt;
    local scale_factor = math_mod._cleanNumber( frame.args.scale_factor) or 1;&lt;br /&gt;
    local date_mode = checkFlag( frame.args.date_mode or false );&lt;br /&gt;
    local label = frame.args.label or '';&lt;br /&gt;
    local annual_mode = (frame.args.annual_mode or 'avg'):lower();&lt;br /&gt;
    local include_space = checkFlag( frame.args.include_space or true );&lt;br /&gt;
    local second_line = checkFlag( frame.args.second_line ) or false;&lt;br /&gt;
    local prefer_cm = checkFlag( frame.args.prefer_cm ) or false;&lt;br /&gt;
    local result;&lt;br /&gt;
&lt;br /&gt;
    local pframe = frame:getParent();&lt;br /&gt;
    local imperial_first = checkFlag( frame.args['imperial first'] );&lt;br /&gt;
    if imperial_first == nil then imperial_first = checkFlag( pframe.args['imperial first'] ); end&lt;br /&gt;
        &lt;br /&gt;
    local metric_first = checkFlag( frame.args['metric first'] );&lt;br /&gt;
    if metric_first == nil then metric_first = checkFlag( pframe.args['metric first'] ); end&lt;br /&gt;
&lt;br /&gt;
    local single_line = checkFlag( frame.args['single line'] );&lt;br /&gt;
    if single_line == nil then single_line = checkFlag( pframe.args['single line'] ); end&lt;br /&gt;
&lt;br /&gt;
    if imperial_first == nil and metric_first ~= nil then&lt;br /&gt;
        imperial_first = not metric_first;&lt;br /&gt;
    else&lt;br /&gt;
        imperial_first = true;&lt;br /&gt;
    end    &lt;br /&gt;
&lt;br /&gt;
    if mode == 'basic' then&lt;br /&gt;
        first_value_string, first_value_number = getInputs( pframe, group_name, &lt;br /&gt;
            nil, include_space );&lt;br /&gt;
        second_value_string = nil;&lt;br /&gt;
        second_value_number = nil;&lt;br /&gt;
    elseif mode == 'temperature' then&lt;br /&gt;
        first_value_string, first_value_number = getInputs( pframe, group_name, &lt;br /&gt;
            {'C'}, include_space );&lt;br /&gt;
        second_value_string, second_value_number = getInputs( pframe, group_name, &lt;br /&gt;
            {'F'}, include_space );&lt;br /&gt;
        first_value_string, first_value_number, second_value_string, second_value_number =&lt;br /&gt;
            reconcileTemperature( first_value_string, first_value_number, &lt;br /&gt;
                second_value_string, second_value_number )&lt;br /&gt;
    elseif mode == &amp;quot;precipitation&amp;quot; then&lt;br /&gt;
        first_value_string, first_value_number, variant = getInputs( pframe, group_name, &lt;br /&gt;
            {'cm', 'mm'}, include_space );&lt;br /&gt;
        second_value_string, second_value_number = getInputs( pframe, group_name, &lt;br /&gt;
            {'inch'}, include_space );        &lt;br /&gt;
        first_value_string, first_value_number, second_value_string, second_value_number,&lt;br /&gt;
            variant =&lt;br /&gt;
            reconcilePrecipitation( first_value_string, first_value_number, &lt;br /&gt;
                second_value_string, second_value_number, variant, prefer_cm )&lt;br /&gt;
    else&lt;br /&gt;
        error( 'Requested mode not recognized' );&lt;br /&gt;
    end  &lt;br /&gt;
    &lt;br /&gt;
    local good = false;&lt;br /&gt;
    for i = 1,13 do&lt;br /&gt;
        if first_value_string[i] ~= nil and first_value_string[i] ~= '' then&lt;br /&gt;
            good = true;&lt;br /&gt;
            break;&lt;br /&gt;
        end&lt;br /&gt;
    end        &lt;br /&gt;
    if not good then&lt;br /&gt;
        return '';&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if first_value_string[13] == nil or first_value_string[13] == '' then&lt;br /&gt;
        first_value_string[13], first_value_number[13] = getAnnualValue( first_value_number, annual_mode );&lt;br /&gt;
    end&lt;br /&gt;
    if second_value_string ~= nil then&lt;br /&gt;
        if second_value_string[13] == nil or second_value_string[13] == '' then&lt;br /&gt;
            second_value_string[13], second_value_number[13] = getAnnualValue( second_value_number, annual_mode );&lt;br /&gt;
        end&lt;br /&gt;
        if mode == 'precipitation' then&lt;br /&gt;
            for i = 1,12 do&lt;br /&gt;
                if variant[i] ~= 0 then&lt;br /&gt;
                    variant[13] = variant[i];&lt;br /&gt;
                    break;&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end                        &lt;br /&gt;
    end   &lt;br /&gt;
&lt;br /&gt;
    color_scheme = wbc.interpret_color_code( color_scheme );&lt;br /&gt;
&lt;br /&gt;
    color_values = {};&lt;br /&gt;
    month_adj = { 31/30, 28/30, 31/30, 1, 31/30, 1, &lt;br /&gt;
        31/30, 31/30, 1, 31/30, 1, 31/30, 12.175 };&lt;br /&gt;
    local adj;&lt;br /&gt;
    for i = 1,13 do        &lt;br /&gt;
        if first_value_number[i] ~= nil and first_value_number[i] ~= -9999 then&lt;br /&gt;
            adj = scale_factor;&lt;br /&gt;
            if date_mode then &lt;br /&gt;
                adj = adj / month_adj[i];&lt;br /&gt;
            end&lt;br /&gt;
            if mode == &amp;quot;precipitation&amp;quot; then&lt;br /&gt;
                if variant[i] == 1 then&lt;br /&gt;
                    adj = adj * 10;&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            table.insert( color_values, color_scheme( first_value_number[i] * adj ) );               &lt;br /&gt;
        else&lt;br /&gt;
            table.insert( color_values, color_scheme( nil ) );&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local lang = mw.getContentLanguage();&lt;br /&gt;
    for i = 1,13 do&lt;br /&gt;
        if first_value_number[i] ~= nil and first_value_number[i] ~= -9999 then&lt;br /&gt;
            if math.abs(first_value_number[i]) &amp;gt;= 1000 then&lt;br /&gt;
                first_value_string[i] = lang:formatNum( math.abs(first_value_number[i]) );&lt;br /&gt;
                if first_value_number[i] &amp;lt; 0 then&lt;br /&gt;
                    first_value_string[i] = '−' .. first_value_string[i];&lt;br /&gt;
                end&lt;br /&gt;
            elseif first_value_number[i] &amp;lt; 0 then&lt;br /&gt;
                first_value_string[i] = '−' .. first_value_string[i]:sub(2);&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if second_value_number ~= nil then&lt;br /&gt;
            if second_value_number[i] ~= nil and second_value_number[i] ~= -9999 then&lt;br /&gt;
                if math.abs(first_value_number[i]) &amp;gt;= 1000 then&lt;br /&gt;
                    second_value_string[i] = lang:formatNum( math.abs(second_value_number[i]) );&lt;br /&gt;
                    if second_value_number[i] &amp;lt; 0 then&lt;br /&gt;
                        second_value_string[i] = '−' .. second_value_string[i];&lt;br /&gt;
                    end&lt;br /&gt;
                elseif second_value_number[i] &amp;lt; 0 then&lt;br /&gt;
                    second_value_string[i] = '−' .. second_value_string[i]:sub(2);&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end              &lt;br /&gt;
&lt;br /&gt;
    if imperial_first and second_value_string ~= nil then&lt;br /&gt;
        local t = first_value_string;&lt;br /&gt;
        first_value_string = second_value_string;&lt;br /&gt;
        second_value_string = t;&lt;br /&gt;
    end    &lt;br /&gt;
&lt;br /&gt;
    if not single_line then&lt;br /&gt;
        if second_line and second_value_string ~= nil then&lt;br /&gt;
            first_value_string = second_value_string;&lt;br /&gt;
        end&lt;br /&gt;
        second_value_string = nil;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return makeLine( label, first_value_string, second_value_string, color_values, color_scheme );&lt;br /&gt;
end    &lt;br /&gt;
&lt;br /&gt;
function makeLine( label, first_value_string, second_value_string, color_values, color_scheme )&lt;br /&gt;
    local result, color_str, value_str;&lt;br /&gt;
    &lt;br /&gt;
    result = {'|- \n! height=&amp;quot;16&amp;quot; | ', label,  &amp;quot;\n&amp;quot;}&lt;br /&gt;
    for i = 1,13 do&lt;br /&gt;
        color_str = color_values[i];&lt;br /&gt;
&lt;br /&gt;
        if i == 13 then&lt;br /&gt;
            table.insert( result, table.concat( {'|style=&amp;quot;', color_str, ' border-left-width:medium&amp;quot; | '} ) );&lt;br /&gt;
        else&lt;br /&gt;
            table.insert( result, table.concat( {'|style=&amp;quot;', color_str, '&amp;quot; | '} ) );&lt;br /&gt;
        end                &lt;br /&gt;
&lt;br /&gt;
        value_str = first_value_string[i];&lt;br /&gt;
        if value_str ~= '' and value_str ~= nil then &lt;br /&gt;
            table.insert( result, value_str );&lt;br /&gt;
            if second_value_string ~= nil then&lt;br /&gt;
                value_str = second_value_string[i];&lt;br /&gt;
                if value_str ~= '' and value_str ~= nil then &lt;br /&gt;
                    table.insert( result, &amp;quot;&amp;lt;br /&amp;gt; (&amp;quot; .. value_str .. &amp;quot;)&amp;quot; );&lt;br /&gt;
                end    &lt;br /&gt;
            end&lt;br /&gt;
        else&lt;br /&gt;
            table.insert( result, '—' );&lt;br /&gt;
        end        &lt;br /&gt;
    &lt;br /&gt;
        table.insert( result, &amp;quot;\n&amp;quot; ); &lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return table.concat( result );&lt;br /&gt;
end  &lt;br /&gt;
&lt;br /&gt;
function getInputs( frame, group_name, suffix, include_space )&lt;br /&gt;
    local month_names = { 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',&lt;br /&gt;
        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'year' };&lt;br /&gt;
    local str, str2, val;&lt;br /&gt;
    &lt;br /&gt;
    local output_string = {};&lt;br /&gt;
    local output_value = {};&lt;br /&gt;
    local variant = {};&lt;br /&gt;
    if suffix == nil then&lt;br /&gt;
        for _, mon in ipairs( month_names ) do&lt;br /&gt;
            if include_space then&lt;br /&gt;
                str = ( frame.args[ mon .. ' ' .. group_name ] or '' );&lt;br /&gt;
            else&lt;br /&gt;
                str = ( frame.args[ mon .. group_name ] or '' );&lt;br /&gt;
            end                &lt;br /&gt;
            val, str2 = math_mod._cleanNumber( str );&lt;br /&gt;
            if val ~= nil then &lt;br /&gt;
                table.insert( output_string, str2 );&lt;br /&gt;
                table.insert( output_value, val );&lt;br /&gt;
            else&lt;br /&gt;
                table.insert( output_string, str );&lt;br /&gt;
                table.insert( output_value, -9999 );&lt;br /&gt;
            end                &lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        local updated = false;&lt;br /&gt;
        for _, mon in ipairs( month_names ) do&lt;br /&gt;
            updated = false;&lt;br /&gt;
            for i, suf in ipairs( suffix ) do&lt;br /&gt;
                if include_space then&lt;br /&gt;
                    str = frame.args[ mon .. ' ' .. group_name .. ' ' .. suf ];&lt;br /&gt;
                else&lt;br /&gt;
                    str = frame.args[ mon .. group_name .. ' ' .. suf ];&lt;br /&gt;
                end                    &lt;br /&gt;
                if str ~= nil and str ~= '' then &lt;br /&gt;
                    val, str2 = math_mod._cleanNumber( str );&lt;br /&gt;
                    if val ~= nil then &lt;br /&gt;
                        table.insert( output_string, str2 );&lt;br /&gt;
                        table.insert( output_value, val );&lt;br /&gt;
                    else&lt;br /&gt;
                        table.insert( output_string, str );&lt;br /&gt;
                        table.insert( output_value, -9999 );&lt;br /&gt;
                    end                &lt;br /&gt;
                    table.insert( variant, i );&lt;br /&gt;
                    updated = true;&lt;br /&gt;
                    break;&lt;br /&gt;
                end                &lt;br /&gt;
            end&lt;br /&gt;
            if not updated then&lt;br /&gt;
                table.insert( output_string, '' );&lt;br /&gt;
                table.insert( output_value, -9999 );&lt;br /&gt;
                table.insert( variant, 0 );&lt;br /&gt;
            end            &lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
        &lt;br /&gt;
    return output_string, output_value, variant;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getAnnualValue( values, mode )&lt;br /&gt;
    local total = 0;&lt;br /&gt;
    local val = 0;&lt;br /&gt;
    &lt;br /&gt;
    if mode == 'avg' or mode == 'sum' then&lt;br /&gt;
        local p1, p2;&lt;br /&gt;
        p1 = 0;&lt;br /&gt;
        for i = 1, 12 do&lt;br /&gt;
            val = values[i];&lt;br /&gt;
            if val == -9999 then&lt;br /&gt;
                return '', -9999;&lt;br /&gt;
            end            &lt;br /&gt;
            &lt;br /&gt;
            p2 = math_mod._precision( val );&lt;br /&gt;
            if p2 &amp;gt; p1 then&lt;br /&gt;
                p1 = p2;&lt;br /&gt;
            end&lt;br /&gt;
            &lt;br /&gt;
            total = total + val;&lt;br /&gt;
        end&lt;br /&gt;
        if mode == 'avg' then&lt;br /&gt;
            total = math_mod._round( total / 12, p1 + 1 );&lt;br /&gt;
        end&lt;br /&gt;
        return tostring( total ), total;&lt;br /&gt;
    elseif mode == 'min' then&lt;br /&gt;
        local min_val = nil;&lt;br /&gt;
        for i = 1, 12 do&lt;br /&gt;
            val = values[i];&lt;br /&gt;
            if val ~= -9999 then&lt;br /&gt;
                if min_val == nil or val &amp;lt; min_val then&lt;br /&gt;
                    min_val = val;&lt;br /&gt;
                end                &lt;br /&gt;
            end            &lt;br /&gt;
        end&lt;br /&gt;
        return tostring( min_val ), min_val;&lt;br /&gt;
    elseif mode == 'max' then&lt;br /&gt;
        local max_val = nil;&lt;br /&gt;
        for i = 1, 12 do&lt;br /&gt;
            val = values[i];&lt;br /&gt;
            if val ~= -9999 then&lt;br /&gt;
                if max_val == nil or val &amp;gt; max_val then&lt;br /&gt;
                    max_val = val;&lt;br /&gt;
                end                &lt;br /&gt;
            end            &lt;br /&gt;
        end&lt;br /&gt;
        return tostring(max_val), max_val;&lt;br /&gt;
    else&lt;br /&gt;
        error( 'Unrecognized Annual Mode' );&lt;br /&gt;
    end&lt;br /&gt;
end        &lt;br /&gt;
&lt;br /&gt;
function reconcileTemperature( C_degree_strings, C_degree_values, F_degree_strings, F_degree_values )&lt;br /&gt;
    local p;&lt;br /&gt;
    for i = 1,13 do&lt;br /&gt;
        if C_degree_strings[i] == '' then&lt;br /&gt;
            if F_degree_values[i] ~= -9999 then&lt;br /&gt;
                p = math.max( 0, math_mod._precision( F_degree_strings[i] ) );&lt;br /&gt;
                C_degree_values[i] = math_mod._round( (F_degree_values[i] - 32)*5/9, p );&lt;br /&gt;
                C_degree_strings[i] = tostring( C_degree_values[i] );&lt;br /&gt;
            end            &lt;br /&gt;
        elseif F_degree_strings[i] == '' then&lt;br /&gt;
            if C_degree_values[i] ~= -9999 then&lt;br /&gt;
                p = math.max( 0, math_mod._precision( C_degree_strings[i] ) );&lt;br /&gt;
                F_degree_values[i] = math_mod._round( C_degree_values[i]*9/5 + 32, p );&lt;br /&gt;
                F_degree_strings[i] = tostring( F_degree_values[i] );&lt;br /&gt;
            end                        &lt;br /&gt;
        end        &lt;br /&gt;
    end&lt;br /&gt;
    return C_degree_strings, C_degree_values, F_degree_strings, F_degree_values;&lt;br /&gt;
end    &lt;br /&gt;
&lt;br /&gt;
function reconcilePrecipitation( M_degree_strings, M_degree_values, &lt;br /&gt;
        I_degree_strings, I_degree_values, variant, prefer_cm )&lt;br /&gt;
    local p;&lt;br /&gt;
    &lt;br /&gt;
    local v_class = 0;&lt;br /&gt;
    for i = 1,13 do&lt;br /&gt;
        if variant[i] == 1 then&lt;br /&gt;
            v_class = 1;&lt;br /&gt;
        elseif variant[i] == 2 then&lt;br /&gt;
            v_class = 2;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if v_class == 0 then&lt;br /&gt;
        if prefer_cm then&lt;br /&gt;
            v_class = 1;&lt;br /&gt;
        else&lt;br /&gt;
            v_class = 2;&lt;br /&gt;
        end        &lt;br /&gt;
    end&lt;br /&gt;
    for i = 1,13 do&lt;br /&gt;
        if M_degree_strings[i] == '' then&lt;br /&gt;
            if I_degree_values[i] ~= -9999 then&lt;br /&gt;
                if v_class == 1 then &lt;br /&gt;
                    p = math.max( 0, math_mod._precision( I_degree_strings[i] ) );&lt;br /&gt;
                    M_degree_values[i] = math_mod._round( I_degree_values[i]*2.54, p );&lt;br /&gt;
                    variant[i] = v_class;&lt;br /&gt;
                else &lt;br /&gt;
                    p = math.max( 0, math_mod._precision( I_degree_strings[i] ) ) - 1;&lt;br /&gt;
                    M_degree_values[i] = math_mod._round( I_degree_values[i]*25.4, p );&lt;br /&gt;
                    variant[i] = v_class;&lt;br /&gt;
                end                &lt;br /&gt;
                M_degree_strings[i] = tostring( M_degree_values[i] );&lt;br /&gt;
            end            &lt;br /&gt;
        elseif I_degree_strings[i] == '' then&lt;br /&gt;
            if M_degree_values[i] ~= -9999 then&lt;br /&gt;
                if variant[i] == 1 then&lt;br /&gt;
                    p = math.max( 0, math_mod._precision( M_degree_strings[i] ) ) + 1;&lt;br /&gt;
                    I_degree_values[i] = M_degree_values[i]/2.54;&lt;br /&gt;
                else&lt;br /&gt;
                    p = math.max( 0, math_mod._precision( M_degree_strings[i] ) ) + 2;&lt;br /&gt;
                    I_degree_values[i] = M_degree_values[i]/25.4;&lt;br /&gt;
                end                    &lt;br /&gt;
                I_degree_values[i] = math_mod._round( I_degree_values[i], p );&lt;br /&gt;
                I_degree_strings[i] = tostring( I_degree_values[i] );&lt;br /&gt;
            end                        &lt;br /&gt;
        end  &lt;br /&gt;
    end&lt;br /&gt;
    return M_degree_strings, M_degree_values, I_degree_strings, I_degree_values, variant;&lt;br /&gt;
end    &lt;br /&gt;
&lt;br /&gt;
return w;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>