모듈:Pie chart

설명문서 [편집] [역사] [새로고침]
{{파이|#000|1크기 = 10}}
{{파이|너비 = 10em|#000|1크기 = 10|skyblue|2크기 = 30|gray|3크기 = 40}}
{{파이|#000|1크기 = 33|#ddd|2크기 = 33|red|3크기 = 10}}
{{파이
|너비 = 7em
|높이 = 10em
|#000|1크기 = 10
|skyblue|2크기 = 30
|gray|3크기 = 40
|yellow|4크기 = 20
}}
연습장이나 사용자 문서에서 틀의 사용이나 수정을 연습할 수 있습니다.
분류는 /설명문서에 넣어주세요.

local getArgs = require('Module:Arguments').getArgs

local pie = {}

function pie.perToDeg(percent)
    return percent * 3.6
end

function pie.main(frame)
	local args = getArgs(frame)
    local return_ = ""
    local sumdeg = 0
    local percent = {}
	local width, height
	if nil == args['높이'] and nil == args['너비'] then
		width, height = '300px', '300px'
	elseif nil == args['너비'] then
		width, height = '300px', args['높이']
	elseif nil == args['높이'] then
		width, height = args['너비'], args['너비']
	else
		width, height = args['너비'], args['높이']
	end
			
    local j = 1
	while nil ~= args[j..'크기'] do
		percent[j] = args[j..'크기']
        j = j + 1
	end
    local i = 1
    while i < j do
        appdeg = sumdeg + pie.perToDeg(percent[i])
        result = args[i].." "..sumdeg.."deg "..appdeg.."deg,"
        sumdeg = pie.perToDeg(percent[i]) + sumdeg
        return_ = return_..result
        i = i + 1
    end
    if sumdeg < 360 then
        return_ = return_..[[#e9e9e9 ]]..sumdeg..[[deg 360deg]]
    else
        return_ = string.gsub(return_, ",$", "")
    end
    
    return mw.html.create('div'):css('width', width):css('height', height):tag('div'):css('border-radius', '50%'):css('background', 'conic-gradient('..return_..')'):cssText('width:inherit;height:inherit;'):allDone()
end

return pie