<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://twentyonewiki.info/index.php?action=history&amp;feed=atom&amp;title=Module%3ASetlist2</id>
	<title>Module:Setlist2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://twentyonewiki.info/index.php?action=history&amp;feed=atom&amp;title=Module%3ASetlist2"/>
	<link rel="alternate" type="text/html" href="https://twentyonewiki.info/index.php?title=Module:Setlist2&amp;action=history"/>
	<updated>2026-04-12T09:58:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://twentyonewiki.info/index.php?title=Module:Setlist2&amp;diff=10755&amp;oldid=prev</id>
		<title>Buburka Rinderbuy: Buburka Rinderbuy moved page Module:Setlist to Module:Setlist2</title>
		<link rel="alternate" type="text/html" href="https://twentyonewiki.info/index.php?title=Module:Setlist2&amp;diff=10755&amp;oldid=prev"/>
		<updated>2025-07-09T17:27:13Z</updated>

		<summary type="html">&lt;p&gt;Buburka Rinderbuy moved page &lt;a href=&quot;/index.php/Module:Setlist&quot; class=&quot;mw-redirect&quot; title=&quot;Module:Setlist&quot;&gt;Module:Setlist&lt;/a&gt; to &lt;a href=&quot;/index.php/Module:Setlist2&quot; title=&quot;Module:Setlist2&quot;&gt;Module:Setlist2&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:27, 9 July 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Buburka Rinderbuy</name></author>
	</entry>
	<entry>
		<id>https://twentyonewiki.info/index.php?title=Module:Setlist2&amp;diff=10753&amp;oldid=prev</id>
		<title>Buburka Rinderbuy: 1 revision imported: Module:Setlist</title>
		<link rel="alternate" type="text/html" href="https://twentyonewiki.info/index.php?title=Module:Setlist2&amp;diff=10753&amp;oldid=prev"/>
		<updated>2025-07-09T17:24:20Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported: Module:Setlist&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:24, 9 July 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Buburka Rinderbuy</name></author>
	</entry>
	<entry>
		<id>https://twentyonewiki.info/index.php?title=Module:Setlist2&amp;diff=10752&amp;oldid=prev</id>
		<title>2001:1970:48C0:AF00:4995:2ABE:C195:DAEE at 08:35, 9 July 2025</title>
		<link rel="alternate" type="text/html" href="https://twentyonewiki.info/index.php?title=Module:Setlist2&amp;diff=10752&amp;oldid=prev"/>
		<updated>2025-07-09T08:35:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local function svg_arc(cx, cy, r, start_angle, end_angle, color, href)&lt;br /&gt;
    local function polarToCartesian(cx, cy, r, angle)&lt;br /&gt;
        local angle_rad = math.rad(angle - 90)&lt;br /&gt;
        return cx + r * math.cos(angle_rad), cy + r * math.sin(angle_rad)&lt;br /&gt;
    end&lt;br /&gt;
    local x1, y1 = polarToCartesian(cx, cy, r, start_angle)&lt;br /&gt;
    local x2, y2 = polarToCartesian(cx, cy, r, end_angle)&lt;br /&gt;
    local largeArcFlag = ((end_angle - start_angle) % 360) &amp;gt; 180 and 1 or 0&lt;br /&gt;
    local path = string.format(&lt;br /&gt;
        &amp;quot;M %.2f %.2f A %.2f %.2f 0 %d 1 %.2f %.2f L %.2f %.2f Z&amp;quot;,&lt;br /&gt;
        x1, y1, r, r, largeArcFlag, x2, y2, cx, cy&lt;br /&gt;
    )&lt;br /&gt;
    return string.format(&lt;br /&gt;
        '&amp;lt;a xlink:href=&amp;quot;/wiki/%s&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;%s&amp;quot; fill=&amp;quot;%s&amp;quot; stroke=&amp;quot;#fff&amp;quot; stroke-width=&amp;quot;0.5&amp;quot;/&amp;gt;&amp;lt;/a&amp;gt;',&lt;br /&gt;
        href, path, color&lt;br /&gt;
    )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local data = mw.loadData('Module:Setlist/Songs')&lt;br /&gt;
&lt;br /&gt;
function p.fromArgs(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local complete = (args['complete'] or &amp;quot;yes&amp;quot;):lower() == &amp;quot;yes&amp;quot;&lt;br /&gt;
    local list = {}&lt;br /&gt;
    for i = 1, 50 do&lt;br /&gt;
        local song = args['song'..i]&lt;br /&gt;
        if song and song ~= '' then&lt;br /&gt;
            local label = args['label'..i] or &amp;quot;&amp;quot;&lt;br /&gt;
            table.insert(list, { title = mw.text.trim(song), label = label })&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Группируем песни по альбомам&lt;br /&gt;
    local albumSongs = {}&lt;br /&gt;
    local albumOrder = {}&lt;br /&gt;
    for idx, songobj in ipairs(list) do&lt;br /&gt;
        local title = songobj.title&lt;br /&gt;
        local label = songobj.label&lt;br /&gt;
        local albums = data.songs[title]&lt;br /&gt;
        if albums then&lt;br /&gt;
            for _, album in ipairs(albums) do&lt;br /&gt;
                if not albumSongs[album] then&lt;br /&gt;
                    albumSongs[album] = {}&lt;br /&gt;
                    table.insert(albumOrder, album)&lt;br /&gt;
                end&lt;br /&gt;
                table.insert(albumSongs[album], {title = title, label = label, num = idx})&lt;br /&gt;
            end&lt;br /&gt;
        else&lt;br /&gt;
            if not albumSongs[&amp;quot;?&amp;quot;] then&lt;br /&gt;
                albumSongs[&amp;quot;?&amp;quot;] = {}&lt;br /&gt;
                table.insert(albumOrder, &amp;quot;?&amp;quot;)&lt;br /&gt;
            end&lt;br /&gt;
            table.insert(albumSongs[&amp;quot;?&amp;quot;], {title = title, label = label, num = idx})&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- 1. Основной сетлист&lt;br /&gt;
    local wikitext = '{| class=&amp;quot;setlist-table setlist-anim&amp;quot; style=&amp;quot;margin-top:1.6em;&amp;quot;\n|-\n| style=&amp;quot;padding:0.7em 1.2em;&amp;quot; |\n'&lt;br /&gt;
    for idx, songobj in ipairs(list) do&lt;br /&gt;
        local numtxt = complete and (idx..&amp;quot;.&amp;quot;) or &amp;quot;*&amp;quot;&lt;br /&gt;
        local label = (songobj.label and songobj.label ~= '') and ('&amp;lt;span class=&amp;quot;setlist-label&amp;quot;&amp;gt;'..songobj.label..'&amp;lt;/span&amp;gt;') or ''&lt;br /&gt;
        wikitext = wikitext .. '&amp;lt;div class=&amp;quot;setlist-row&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;setlist-song&amp;quot;&amp;gt;'..numtxt..' [['..songobj.title..']]&amp;lt;/span&amp;gt;'..label..'&amp;lt;/div&amp;gt;\n'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- 2. SVG круговая диаграмма (кликабельная)&lt;br /&gt;
    local total = 0&lt;br /&gt;
    for _, album in ipairs(albumOrder) do&lt;br /&gt;
        total = total + #albumSongs[album]&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local svg = {'&amp;lt;svg width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; viewBox=&amp;quot;0 0 50 50&amp;quot; style=&amp;quot;vertical-align:middle;&amp;quot;&amp;gt;'}&lt;br /&gt;
    local angle = 0&lt;br /&gt;
    for _, album in ipairs(albumOrder) do&lt;br /&gt;
        local count = #albumSongs[album]&lt;br /&gt;
        local percent = count / total * 100&lt;br /&gt;
        local sweep = percent * 3.6&lt;br /&gt;
        local color = data.albumColors[album] or &amp;quot;#ccc&amp;quot;&lt;br /&gt;
        local href = (data.albumLinks[album] or album):gsub(&amp;quot; &amp;quot;, &amp;quot;_&amp;quot;)&lt;br /&gt;
        table.insert(svg, svg_arc(25,25,25,angle,angle+sweep,color,href))&lt;br /&gt;
        angle = angle + sweep&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(svg, '&amp;lt;/svg&amp;gt;')&lt;br /&gt;
    wikitext = wikitext .. table.concat(svg, '\n')&lt;br /&gt;
&lt;br /&gt;
    -- 3. Блоки по альбомам&lt;br /&gt;
    for albumIdx, album in ipairs(albumOrder) do&lt;br /&gt;
        local arr = albumSongs[album]&lt;br /&gt;
        local color = data.albumColors and data.albumColors[album] or &amp;quot;#eee&amp;quot;&lt;br /&gt;
        local link = data.albumLinks and data.albumLinks[album] or album&lt;br /&gt;
        local uniqid = &amp;quot;myDivision&amp;quot;..albumIdx&lt;br /&gt;
        wikitext = wikitext .. '\n{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-top:1em; border-collapse:separate; border-spacing:4px; border:hidden;&amp;quot;'&lt;br /&gt;
        wikitext = wikitext .. '\n| style=&amp;quot;background:'..color..'; border:hidden;&amp;quot; |'&lt;br /&gt;
        wikitext = wikitext .. '\n| style=&amp;quot;border:hidden;&amp;quot; | [['..link..'|'..album..']]'&lt;br /&gt;
        wikitext = wikitext .. '\n| style=&amp;quot;border:hidden;&amp;quot; | &amp;lt;span class=&amp;quot;mw-customtoggle-'..uniqid..'&amp;quot;&amp;gt;('..tostring(#arr)..')&amp;lt;/span&amp;gt;'&lt;br /&gt;
        wikitext = wikitext .. '\n| style=&amp;quot;border:hidden;&amp;quot; |\n&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; id=&amp;quot;mw-customcollapsible-'..uniqid..'&amp;quot;&amp;gt;'&lt;br /&gt;
        for _, entry in ipairs(arr) do&lt;br /&gt;
            wikitext = wikitext .. '&amp;lt;span class=&amp;quot;collapsible-setlist-row&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;collapsible-setlist-symbol&amp;quot;&amp;gt;○&amp;lt;/span&amp;gt;&amp;lt;small&amp;gt;'..entry.title..'&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;\n'&lt;br /&gt;
        end&lt;br /&gt;
        wikitext = wikitext .. '&amp;lt;/div&amp;gt;\n|}\n'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    wikitext = wikitext .. '|}'&lt;br /&gt;
    return wikitext&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>2001:1970:48C0:AF00:4995:2ABE:C195:DAEE</name></author>
	</entry>
</feed>