首頁
關於我們
隨機
新手使用指南
貢獻分數
建立新頁面
最近修改
特殊頁面
社群入口
設定
關於合眾百科 Unitedbook
免責聲明
搜尋
使用者選單
討論
貢獻
建立賬號
登入
正在編輯
模組:Weather box/colors
警告:
您尚未登入。 若您進行任何的編輯您的 IP 位址將會被公開。 若您
登入
或
建立帳號
,您的編輯將會以您的使用者名稱標示,並能擁有另外的益處。
防垃圾訊息檢查用。
請勿
填寫此欄位!
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
摘要:
請注意,所有於合眾百科 Unitedbook所做的貢獻會依據CC BY-NC-SA(創用CC 姓名標示─非商業性─相同方式分享)授權條款發佈(詳情請見
合眾百科:版權
)。若您不希望您的著作被任意修改與散佈,請勿在此發表文章。
您同時向我們保證在此的著作內容是您自行撰寫,或是取自不受版權保護的公開領域或自由資源。
請勿在未經授權的情況下發表文章!
取消
編輯說明
(在新視窗開啟)
此頁面使用了以下模板:
模組:Weather box/colors/doc
(
編輯
)