Module:ComplForColorModules: Difference between revisions
Appearance
Content deleted Content added
mNo edit summary |
Please stop attempting to overturn consensus established at TfD |
||
Line 1: | Line 1: | ||
local p = {} |
|||
function p.LegendText (AColors, Labels, NLabels, ColWidth, IsTemplate, OutlineColor) |
|||
local SA = require "Module:SimpleArgs" |
|||
ColWidth = mw.text.trim(ColWidth) |
|||
local MC = require "Module:Multicol" |
|||
if ColWidth and #ColWidth == 0 then |
|||
local TNTT = require "Module:TNTTools" |
|||
ColWidth = nil |
|||
end |
|||
local I18n = 'ComplForColorModules' |
|||
--local MoreOneNoData = "Found 2 legends of \"Value not assigned\" or \"Data not available\"" |
|||
--local FoundNLegendsExpectedN = "Found $1 legends, expected $2" |
|||
--local Color = "Color" |
|||
--local Legend = "legend" |
|||
local function I18nStr (S, ...) |
|||
return TNTT.GetMsgP (I18n, S, {...}) |
|||
end |
|||
function p.ColorNameInvFromS0 (S) |
|||
local IsInv = false |
|||
local ColorName = '' |
|||
local Params = {} |
|||
if S ~= '' then |
|||
for w in S:gmatch("([^_]+)") do |
|||
table.insert(Params, w) |
|||
end |
|||
ColorName = Params[1] |
|||
end |
|||
local PN = table.getn(Params) |
|||
if (PN == 2) and (Params[2]=='i') then |
|||
IsInv = true |
|||
end |
|||
return ColorName, IsInv, Params |
|||
end |
|||
function p.ColorNameInv (args) |
|||
local S = SA.RStr_Par (args, 1) |
|||
local ColorName, IsInv, Params = p.ColorNameInvFromS0 (S) |
|||
return ColorName, IsInv |
|||
end |
|||
function p.GetLabels(Args, NArgs, N, Pos) |
|||
local Labels, NLabels = SA.StrTab_NPar (Args, NArgs, Pos) |
|||
local OutlineColor = Args['outline'] or '' |
|||
if (NLabels ~= 0) and (NLabels ~= N) then |
|||
function NoDataFound (i) |
|||
if string.sub(Labels[i],1,2) == '--' then |
|||
return 1 |
|||
else |
|||
return 0 |
|||
end |
|||
end |
|||
local NoDataFoundCount = NoDataFound (1) |
|||
NoDataFoundCount = NoDataFoundCount + NoDataFound (NLabels) |
|||
if NoDataFoundCount == 2 then |
|||
error (I18nStr ('MoreOneNoData')) |
|||
else |
|||
N = N + NoDataFoundCount |
|||
end |
|||
if (NLabels ~= 0) and (NLabels ~= N) then |
|||
error (I18nStr ('FoundNLegendsExpectedN', tostring(NLabels), tostring(N))) |
|||
else |
|||
return Labels, NLabels, OutlineColor |
|||
end |
|||
else |
|||
return Labels, NLabels, OutlineColor |
|||
end |
|||
end |
|||
function SColor (Color) |
|||
if string.sub(Color,1,1) == '#' then --the usual |
|||
return string.sub(Color,2,100) |
|||
else |
|||
return Color |
|||
end |
|||
end |
|||
function p.Box(Color,WriteColor) |
|||
if WriteColor == '-' then |
|||
WriteColor = Color |
|||
elseif WriteColor == 'a' then |
|||
WriteColor = Color..'ff' --Alpha channel |
|||
end |
|||
local TheBox = '<span style="background-color:'..Color..'; border:1px solid gray;" title="'..TNTT.GetStrP(I18n,'Color')..': '..SColor(Color)..'"> </span>' |
|||
if WriteColor ~='' then |
|||
TheBox = TheBox..' '..WriteColor..' ' |
|||
end |
|||
return TheBox |
|||
end |
|||
function p.TextWithTooltip (Text, Tooltip) |
|||
if Tooltip ~= '' then |
|||
return '<span title="'..Tooltip..'">'..Text..'</span>' |
|||
else |
|||
return Text |
|||
end |
|||
end |
|||
function p.LegendColor(Color, Text, Tooltip) |
|||
if Text == '' then |
|||
Text = SColor(Color) |
|||
end |
|||
return '<li style="list-style-type: none; list-style-image: none;"><span style="border:1px solid gray; background:'..Color..'; margin-right:0.3em; vertical-align: middle; webkit-print-color-adjust:exact; color-adjust:exact; display:inline-block; width:1.05em; height:1em;"></span>'..p.TextWithTooltip(Text,Tooltip)..'</li>' |
|||
end |
|||
function LegendCode(Color, Text, OutlineColor) |
|||
local SOutlineColor = '' |
|||
if OutlineColor ~= '' then |
|||
SOutlineColor = '|outline='..OutlineColor |
|||
end |
|||
return '{{'..TNTT.GetStrP(I18n,'Legend')..'|'..Color..'|'..Text..SOutlineColor..'}}' |
|||
end |
|||
function p.LegendText (AColors, Labels, NLabels, NCols, IsTemplate, OutlineColor) |
|||
function NoDataFound (i) |
function NoDataFound (i) |
||
if string.sub(Labels[i],1,2) == '--' then |
if string.sub(Labels[i],1,2) == '--' then |
||
Line 139: | Line 32: | ||
table.insert(Show, p.LegendColor(AColors[i],Text,'')) |
table.insert(Show, p.LegendColor(AColors[i],Text,'')) |
||
end |
end |
||
SShow = table.concat(Show,"\n") |
|||
if ColWidth then |
|||
local frame = mw.getCurrentFrame() |
|||
SShow = frame:expandTemplate{title="div col",args={colwidth=ColWidth}} .. SShow |
|||
SShow = SShow .. frame:expandTemplate{title="div col end"} |
|||
end |
|||
for i=1, table.getn(AColors) do |
for i=1, table.getn(AColors) do |
||
if WithLabels then Text = Labels[i] end |
if WithLabels then Text = Labels[i] end |
||
table.insert(Codes, ' '..LegendCode(AColors[i],Text,OutlineColor)) |
table.insert(Codes, ' '..LegendCode(AColors[i],Text,OutlineColor)) |
||
end |
end |
||
local SCodes = |
local SCodes = '<pre>\n' |
||
if ColWidth then |
|||
SCodes = SCodes .. require("Module:Template invocation").invocation("div col",{colwidth=ColWidth}) .. "\n" |
|||
end |
|||
SCodes = SCodes .. table.concat(Codes,"\n") |
|||
if ColWidth and #ColWidth ~= 0 then |
|||
SCodes = SCodes .. "\n{{div col end}}" |
|||
end |
|||
SCodes = SCodes .. "\n</pre>" |
|||
return SShow..'\n'..SCodes |
return SShow..'\n'..SCodes |
||
end |
end |
Revision as of 20:03, 12 November 2019
This module is used by Module:BrewerColors and Module:ChartColors.
To translate or review the translation of the module to your language, edit carefully Data:I18n/ComplForColorModules.tab.
function p.LegendText (AColors, Labels, NLabels, ColWidth, IsTemplate, OutlineColor)
ColWidth = mw.text.trim(ColWidth)
if ColWidth and #ColWidth == 0 then
ColWidth = nil
end
function NoDataFound (i)
if string.sub(Labels[i],1,2) == '--' then
return true
else
return false
end
end
local Show, Codes = {}, {}
local Text = ''
local WithLabels = NLabels > 0
if WithLabels then
function DelBegin (i)
Labels[i] = string.sub(Labels[i], 3, 1000)
end
local Gray = '#b3b3b3' -- A 40% gray
if NoDataFound(1) then
table.insert(AColors, 1, Gray)
DelBegin(1)
elseif NoDataFound(NLabels) then
table.insert(AColors, Gray)
DelBegin(NLabels)
end
end
for i=1, table.getn(AColors) do
if WithLabels then Text = Labels[i] end
table.insert(Show, p.LegendColor(AColors[i],Text,''))
end
SShow = table.concat(Show,"\n")
if ColWidth then
local frame = mw.getCurrentFrame()
SShow = frame:expandTemplate{title="div col",args={colwidth=ColWidth}} .. SShow
SShow = SShow .. frame:expandTemplate{title="div col end"}
end
for i=1, table.getn(AColors) do
if WithLabels then Text = Labels[i] end
table.insert(Codes, ' '..LegendCode(AColors[i],Text,OutlineColor))
end
local SCodes = '<pre>\n'
if ColWidth then
SCodes = SCodes .. require("Module:Template invocation").invocation("div col",{colwidth=ColWidth}) .. "\n"
end
SCodes = SCodes .. table.concat(Codes,"\n")
if ColWidth and #ColWidth ~= 0 then
SCodes = SCodes .. "\n{{div col end}}"
end
SCodes = SCodes .. "\n</pre>"
return SShow..'\n'..SCodes
end
return p