<?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%3ASetlistbox</id>
	<title>Module:Setlistbox - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://twentyonewiki.info/index.php?action=history&amp;feed=atom&amp;title=Module%3ASetlistbox"/>
	<link rel="alternate" type="text/html" href="https://twentyonewiki.info/index.php?title=Module:Setlistbox&amp;action=history"/>
	<updated>2026-04-12T04:03:56Z</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:Setlistbox&amp;diff=10921&amp;oldid=prev</id>
		<title>Buburka Rinderbuy: 1 revision imported: Module:Setlistbox</title>
		<link rel="alternate" type="text/html" href="https://twentyonewiki.info/index.php?title=Module:Setlistbox&amp;diff=10921&amp;oldid=prev"/>
		<updated>2025-07-11T23:49:31Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported: Module:Setlistbox&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:49, 11 July 2025&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key twenizlx_mw1497-mw20_:diff::1.12:old-10920:rev-10921 --&gt;
&lt;/table&gt;</summary>
		<author><name>Buburka Rinderbuy</name></author>
	</entry>
	<entry>
		<id>https://twentyonewiki.info/index.php?title=Module:Setlistbox&amp;diff=10920&amp;oldid=prev</id>
		<title>2001:1970:48C0:AF00:4995:2ABE:C195:DAEE at 23:48, 11 July 2025</title>
		<link rel="alternate" type="text/html" href="https://twentyonewiki.info/index.php?title=Module:Setlistbox&amp;diff=10920&amp;oldid=prev"/>
		<updated>2025-07-11T23:48:59Z</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;
-- Подключаем модуль-помощник для выбора альбома&lt;br /&gt;
local albumSelector = require('Module:Setlist/AlbumSelector')&lt;br /&gt;
local data = mw.loadData('Module:Setlist/Songs')&lt;br /&gt;
&lt;br /&gt;
-- Вспомогательная функция для проверки наличия элемента в таблице&lt;br /&gt;
local function table_contains(table, element)&lt;br /&gt;
    for _, value in ipairs(table) do&lt;br /&gt;
        if value == element then&lt;br /&gt;
            return true&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return false&lt;br /&gt;
end&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'] and args['complete']:lower() or &amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Если complete=&amp;quot;unknown&amp;quot;, возвращаем только надпись и пустую таблицу&lt;br /&gt;
    if complete == &amp;quot;unknown&amp;quot; then&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;
        wikitext = wikitext .. '&amp;lt;div style=&amp;quot;font-style:italic; margin-bottom:0.8em;&amp;quot;&amp;gt;Setlist is unknown.&amp;lt;/div&amp;gt;\n'&lt;br /&gt;
        wikitext = wikitext .. '|}'&lt;br /&gt;
        return wikitext&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Собираем список песен из аргументов&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;
    local preferredAlbum = albumSelector.getAlbumForSong(frame) -- Получаем предпочтительный альбом на основе года&lt;br /&gt;
&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 albumSelector = require('Module:Setlist/AlbumSelector')&lt;br /&gt;
        local albums = albumSelector.getAlbumForSong(title) or data.songs[title]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        if albums then&lt;br /&gt;
            local selectedAlbum&lt;br /&gt;
            -- Проверяем, есть ли песня в обоих альбомах Regional At Best и Vessel&lt;br /&gt;
            if #albums &amp;gt; 1 and table_contains(albums, &amp;quot;Regional At Best&amp;quot;) and table_contains(albums, &amp;quot;Vessel&amp;quot;) then&lt;br /&gt;
                selectedAlbum = preferredAlbum&lt;br /&gt;
                -- Отладочный комментарий для проверки&lt;br /&gt;
                wikitext = wikitext or ''&lt;br /&gt;
                wikitext = wikitext .. '&amp;lt;!-- Debug: Song ' .. title .. ' assigned to ' .. selectedAlbum .. ' --&amp;gt;'&lt;br /&gt;
            else&lt;br /&gt;
                selectedAlbum = albums[1] -- Берем первый альбом, если песня не в обоих&lt;br /&gt;
            end&lt;br /&gt;
            if not albumSongs[selectedAlbum] then&lt;br /&gt;
                albumSongs[selectedAlbum] = {}&lt;br /&gt;
                table.insert(albumOrder, selectedAlbum)&lt;br /&gt;
            end&lt;br /&gt;
            table.insert(albumSongs[selectedAlbum], {title = title, label = label, num = idx})&lt;br /&gt;
        else&lt;br /&gt;
            if not albumSongs[&amp;quot;Non-Album&amp;quot;] then&lt;br /&gt;
                albumSongs[&amp;quot;Non-Album&amp;quot;] = {}&lt;br /&gt;
                table.insert(albumOrder, &amp;quot;Non-Album&amp;quot;)&lt;br /&gt;
            end&lt;br /&gt;
            table.insert(albumSongs[&amp;quot;Non-Album&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 = wikitext or '{| 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;
&lt;br /&gt;
    -- Добавляем надпись для неполного сетлиста&lt;br /&gt;
    if complete == &amp;quot;uncomplete&amp;quot; then&lt;br /&gt;
        wikitext = wikitext .. '&amp;lt;div style=&amp;quot;font-style:italic; margin-bottom:0.8em;&amp;quot;&amp;gt;The complete setlist is unknown,&amp;lt;br&amp;gt;and the order of the songs may be incorrect.&amp;lt;/div&amp;gt;\n'&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Выводим список песен&lt;br /&gt;
    for idx, songobj in ipairs(list) do&lt;br /&gt;
        local numtxt = (complete == &amp;quot;yes&amp;quot;) 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. Кольцевая диаграмма&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;
    local start = 0&lt;br /&gt;
    local gradientParts = {}&lt;br /&gt;
    for _, album in ipairs(albumOrder) do&lt;br /&gt;
        local count = #albumSongs[album]&lt;br /&gt;
        local percent = total &amp;gt; 0 and (count / total * 100) or 0 -- Предотвращаем деление на ноль&lt;br /&gt;
        local finish = start + percent&lt;br /&gt;
        local color = data.albumColors and data.albumColors[album] or &amp;quot;#ccc&amp;quot;&lt;br /&gt;
        table.insert(gradientParts, string.format(&amp;quot;%s %.2f%% %.2f%%&amp;quot;, color, start, finish))&lt;br /&gt;
        start = finish&lt;br /&gt;
    end&lt;br /&gt;
    local gradient = &amp;quot;background: conic-gradient(&amp;quot; .. table.concat(gradientParts, &amp;quot;, &amp;quot;) .. &amp;quot;);&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Вставляем кольцевую диаграмму&lt;br /&gt;
    wikitext = wikitext .. '&amp;lt;div class=&amp;quot;ring-container7&amp;quot; style=&amp;quot;margin:1.2em auto 1.1em auto;&amp;quot;&amp;gt;'&lt;br /&gt;
    wikitext = wikitext .. '&amp;lt;div class=&amp;quot;ring2&amp;quot; style=&amp;quot;'..gradient..'&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;'&lt;br /&gt;
    wikitext = wikitext .. '&amp;lt;div class=&amp;quot;center2&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;'&lt;br /&gt;
    wikitext = wikitext .. '&amp;lt;div class=&amp;quot;imagemap-content2&amp;quot;&amp;gt;'&lt;br /&gt;
    wikitext = wikitext .. '&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;\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;
        -- Убираем ссылку для Non-Album&lt;br /&gt;
        local link = (album == &amp;quot;Non-Album&amp;quot;) and album or (data.albumLinks and data.albumLinks[album] or album)&lt;br /&gt;
        local displayText = (album == &amp;quot;Non-Album&amp;quot;) and album or (data.albumLinks and data.albumLinks[album] and '[['..link..'|'..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; | '..displayText&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>