모듈:Bar chart

이 모듈에 대한 설명문서는 모듈:Bar chart/설명문서에서 만들 수 있습니다

--[[]]


local getArgs = require('Module:Arguments').getArgs
local round = require('Module:Math')._round
local ustring = mw.ustring
local p = {}

function p.main(frame)
	local args = getArgs(frame)
	local color, value, cont, percent, relative = {}, {}, {}, {}, {}
	
	local barClass = args['막대속성'] or ""
	local contClass = args['내용속성'] or ""
	local valueClass = args['값속성'] or ""
	local barStyle = args['막대모양'] or ""
	local barHeight = args['막대높이'] or "2em"
	local showValue = args['값보이기'] or args['값표시'] or 'false'
	if showValue == "false" then
		valueClass = valueClass.." ".."hidden_value"
	end
	
	local rawLen = 3
	
	local i = rawLen + 1
	local j = 1

	while args[i] and args[i] ~= 'end' do
		value[j] = string.gsub(args[i] or '-1', ',', '') + 0
		cont[j] = args[i+2] or ""
		color[j] = args[i+1] or ''
		i = i + 3
		j = j + 1
	end
	
	local end_ = j - 1
	local return_ = ""
	local sum , maxval = 0, 0
	
	for j = 1, end_ do
		if value[j] ~= -1 then
			sum = sum + value[j]
		end
		if value[j] > maxval then
        	maxval = value[j]
    	end
	end
	
	for j = 1, end_ do
		if value[j] ~= -1 then
			percent[j] = round(value[j]/sum * 100, 4)
			relative[j] = round(value[j]/maxval * 100, 4)
		end
	end
	

    local contbox, barbox = "", ""
	for j = 1, end_ do
		if -1 ~= value[j] then
			contbox = contbox..ustring.format([[<div class="cont %s" style="height: %s; line-height: %s;margin: 0 0.5em 0.8em;">%s</div>]], contClass, barHeight, barHeight, cont[j])
			barbox = barbox..ustring.format([[<div class="bar %s" style="padding-left:%s%%; height: %s;background: %s;margin:0 0 0.8em 0;%s"><div class="value %s" style="line-height: %s;">%s</div></div>]], barClass, relative[j], barHeight, color[j], barStyle, valueClass, barHeight, value[j] )
		end
	end
	return [[<div style="" class="contbox">]]..contbox..[[</div>]]..[[<div class="barbox" style="width:100%">]]..barbox..[[</div>]]
end

return p