모듈:Pie chart

하늘 (토론 | 기여)님의 2021년 8월 22일 (일) 16:13 판 (Cerulean (토론)의 1346937판 편집을 되돌림)
설명문서 [편집] [역사] [새로고침]
{{파이|#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 = '300px'
		height = '300px'
	elseif nil == args['너비'] then
		width = '300px'
		height = args['높이']
	elseif nil == args['높이'] then
		width = args['너비']
		height = args['너비']
	else
		width = args['너비']
		height = 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
    
    local root = mw.html.create('div'):css('width', width):css('height', height)
    root:tag('div'):css('border-radius', '50%'):css('background', 'conic-gradient('..return_..')'):cssText('width:inherit;height:inherit;')
    return root
end

return pie