Editing
Module:Weather box/colors
From Thetacola Wiki
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local w = {} local math_mod = require('Module:Math') local function hex( value ) return string.format("%02X", value) end local function format_line( background, text_color ) return "background: #" .. background .. "; color:#" .. text_color .. ";" end local function range_pos( value, start, stop ) if start < stop then if value < start then return 0 elseif value > stop then return 1 else return (value - start) / (stop - start) end else if value < stop then return 1 elseif value > start then return 0 else return (start - value) / (start - stop) end end end function w.color_d( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._days_color( val ) end function w.color_pastel( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._pastel_color( val ) end function w.color_t( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._temperature_color( val ) end function w.color_green( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._green_color( val ) end function w.color_s( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._sunshine_color( val ) end function w.color_h( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._humidity_color( val ) end function w.color_p( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._precipitation_color( val ) end function w.color_u( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._uv_color( val ) end function w._days_color( val ) local item, background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end item = hex( range_pos( val, 20, 0 )*255 ) background = item .. item item = hex( range_pos( val, 40, 20 )*255 ) background = background .. item if val >= 12 then text_color = "FFFFFF" else text_color = "000000" end return format_line( background, text_color ) end function w._green_color( val ) local item1, item2, background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end item1 = hex( range_pos( val, 165.6, 0 )*255 ) item2 = hex( range_pos( val, 300, 165.61 )*207 + 48 ) background = item1 .. item2 .. item1 if val >= 200 then text_color = "FFFFFF" else text_color = "000000" end return format_line( background, text_color ) end function w._temperature_color( val ) local item, background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end if val < 4.5 then item = range_pos( val, -42.75, 4.5 )*255 background = hex( item ) else item = range_pos( val, 60, 41.5 )*255 background = hex( item ) end if val <= 4.5 then item = range_pos( val, -42.75, 4.5 )*255 background = background .. hex( item ) else item = range_pos( val, 41.5, 4.5 )*255 background = background .. hex( item ) end if val < -42.78 then item = range_pos( val, -90, -42.78 )*255 background = background .. hex( item ) else item = range_pos( val, 23, 4.5 )*255 background = background .. hex( item ) end if val < -23.3 or val >= 37.8 then text_color = "FFFFFF" else text_color = "000000" end return format_line( background, text_color ) end function w._precipitation_color( val ) local item, background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end item = hex( range_pos( val, 165.6, 0 )*255 ) background = item .. item item = hex( range_pos( val, 300, 165.61 )*207 + 48 ) background = background .. item if val > 90 then text_color = "FFFFFF" else text_color = "000000" end return format_line( background, text_color ) end function w._humidity_color( val ) local item, background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end item = hex( range_pos( val, 66.67, 0 )*255 ) background = item .. item item = hex( range_pos( val, 133.33, 66.667 )*255 ) background = background .. item if val >= 40 then text_color = "FFFFFF" else text_color = "000000" end return format_line( background, text_color ) end function w._sunshine_color( val ) local item, background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end if val < 90 then item = hex( range_pos( val, 0, 90 )*170 ) elseif val < 180 then item = hex( range_pos( val, 90, 180 )*42.5 + 170 ) else item = hex( range_pos( val, 180, 360 )*42.5 + 212.5 ) end background = item .. item if val < 90 then item = hex( range_pos( val, 0, 90 )*170 ) elseif val < 270 then item = hex( range_pos( val, 150, 90 )*170 ) else item = hex( range_pos( val, 270, 720 )*255 ) end background = background .. item if val < 80 then text_color = "FFFFFF" else text_color = "000000" end return format_line( background, text_color ) end function w._pastel_color( val ) local background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end if val < -15 or val >= 39 then text_color = "FFFFFF" else text_color = "000000" end if val >= 51 then background = 'EE2200' else val = math_mod._round( (val + 25.5)/3, 0 ) if val == 1 then background = 'BB00CC' elseif val == 2 then background = 'CC00EE' elseif val == 3 then background = 'CC33EE' elseif val == 4 then background = 'CC55EE' elseif val == 5 then background = 'DD66EE' elseif val == 6 then background = 'DD77EE' elseif val == 7 then background = 'DD99EE' elseif val == 8 then background = 'DDAAEE' elseif val == 9 then background = 'DDBBEE' elseif val == 10 then background = 'EECCFF' elseif val == 11 then background = 'FFDDFF' elseif val == 12 then background = 'F1F1F1' elseif val == 13 then background = 'FFEEBB' elseif val == 14 then background = 'FFFFCC' elseif val == 15 then background = 'FFFFBB' elseif val == 16 then background = 'FFFFAA' elseif val == 17 then background = 'FFFF88' elseif val == 18 then background = 'FFCC33' elseif val == 19 then background = 'FFBB33' elseif val == 20 then background = 'FF9900' elseif val == 21 then background = 'FF8844' elseif val == 22 then background = 'FF6633' elseif val == 23 then background = 'FF5522' elseif val == 24 then background = 'FF4422' elseif val == 25 then background = 'EE4400' else background = 'AA00AA' end end return format_line( background, text_color ) end function w._uv_color( val ) local background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end if val < 3 then background = "3EA72D" elseif val >= 3 and val < 6 then background = "FFF300" elseif val >= 6 and val < 8 then background = "F18B00" elseif val >= 8 and val < 11 then background = "E53210" else background = "B567A4" end if val < 3 then text_color = "FFFFFF" elseif val >= 3 and val < 8 then text_color = "000000" else text_color = "FFFFFF" end return format_line( background, text_color ) end function w._none_color() return format_line( "FAFAFA", "000000" ) end function w.interpret_color_code( code ) code = code:lower() if code == 't' then return w._temperature_color elseif code == 'pastel' then return w._pastel_color elseif code == 'green' then return w._green_color elseif code == 'h' then return w._humidity_color elseif code == 's' then return w._sunshine_color elseif code == 'p' then return w._precipitation_color elseif code == 'd' then return w._days_color elseif code == 'u' then return w._uv_color elseif code == 'none' then return w._none_color else error( 'Unknown color scheme option' ) end end return w
Summary:
Please note that all contributions to Thetacola Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Project:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Bad documentation
(
edit
)
Template:High-use
(
edit
)
Template:High use
(
edit
)
Template:Improve documentation
(
edit
)
Template:Module other
(
edit
)
Template:Module rating
(
edit
)
Template:Ombox
(
edit
)
Template:Subpage other
(
edit
)
Module:Arguments
(
edit
)
Module:Effective protection level
(
edit
)
Module:High-use
(
edit
)
Module:Message box
(
edit
)
Module:Message box/configuration
(
edit
)
Module:Message box/ombox.css
(
edit
)
Module:Transclusion count
(
edit
)
Module:Transclusion count/data/W
(
edit
)
Module:Unsubst
(
edit
)
Module:Weather box/colors/doc
(
edit
)
Module:Yesno
(
edit
)
Navigation menu
Page actions
Module
Discussion
Read
Edit source
History
Page actions
Module
Discussion
More
Tools
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Search
Tools
What links here
Related changes
Special pages
Page information