<?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-06-13T19:56:39Z</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;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 19:49, 11 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: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(&amp;#039;Module:Setlist/AlbumSelector&amp;#039;)&lt;br /&gt;
local data = mw.loadData(&amp;#039;Module:Setlist/Songs&amp;#039;)&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[&amp;#039;complete&amp;#039;] and args[&amp;#039;complete&amp;#039;]: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 = &amp;#039;{| 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&amp;#039;&lt;br /&gt;
        wikitext = wikitext .. &amp;#039;&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&amp;#039;&lt;br /&gt;
        wikitext = wikitext .. &amp;#039;|}&amp;#039;&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[&amp;#039;song&amp;#039;..i]&lt;br /&gt;
        if song and song ~= &amp;#039;&amp;#039; then&lt;br /&gt;
            local label = args[&amp;#039;label&amp;#039;..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(&amp;#039;Module:Setlist/AlbumSelector&amp;#039;)&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 &amp;#039;&amp;#039;&lt;br /&gt;
                wikitext = wikitext .. &amp;#039;&amp;lt;!-- Debug: Song &amp;#039; .. title .. &amp;#039; assigned to &amp;#039; .. selectedAlbum .. &amp;#039; --&amp;gt;&amp;#039;&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 &amp;#039;{| 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&amp;#039;&lt;br /&gt;
&lt;br /&gt;
    -- Добавляем надпись для неполного сетлиста&lt;br /&gt;
    if complete == &amp;quot;uncomplete&amp;quot; then&lt;br /&gt;
        wikitext = wikitext .. &amp;#039;&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&amp;#039;&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 ~= &amp;#039;&amp;#039;) and (&amp;#039;&amp;lt;span class=&amp;quot;setlist-label&amp;quot;&amp;gt;&amp;#039;..songobj.label..&amp;#039;&amp;lt;/span&amp;gt;&amp;#039;) or &amp;#039;&amp;#039;&lt;br /&gt;
        wikitext = wikitext .. &amp;#039;&amp;lt;div class=&amp;quot;setlist-row&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;setlist-song&amp;quot;&amp;gt;&amp;#039;..numtxt..&amp;#039; [[&amp;#039;..songobj.title..&amp;#039;]]&amp;lt;/span&amp;gt;&amp;#039;..label..&amp;#039;&amp;lt;/div&amp;gt;\n&amp;#039;&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;#039;&amp;lt;div class=&amp;quot;ring-container7&amp;quot; style=&amp;quot;margin:1.2em auto 1.1em auto;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
    wikitext = wikitext .. &amp;#039;&amp;lt;div class=&amp;quot;ring2&amp;quot; style=&amp;quot;&amp;#039;..gradient..&amp;#039;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
    wikitext = wikitext .. &amp;#039;&amp;lt;div class=&amp;quot;center2&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
    wikitext = wikitext .. &amp;#039;&amp;lt;div class=&amp;quot;imagemap-content2&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
    wikitext = wikitext .. &amp;#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;\n&amp;#039;&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 &amp;#039;[[&amp;#039;..link..&amp;#039;|&amp;#039;..album..&amp;#039;]]&amp;#039; or album)&lt;br /&gt;
        local uniqid = &amp;quot;myDivision&amp;quot;..albumIdx&lt;br /&gt;
        wikitext = wikitext .. &amp;#039;\n{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-top:1em; border-collapse:separate; border-spacing:4px; border:hidden;&amp;quot;&amp;#039;&lt;br /&gt;
        wikitext = wikitext .. &amp;#039;\n| style=&amp;quot;background:&amp;#039;..color..&amp;#039;; border:hidden;&amp;quot; |&amp;#039;&lt;br /&gt;
        wikitext = wikitext .. &amp;#039;\n| style=&amp;quot;border:hidden;&amp;quot; | &amp;#039;..displayText&lt;br /&gt;
        wikitext = wikitext .. &amp;#039;\n| style=&amp;quot;border:hidden;&amp;quot; | &amp;lt;span class=&amp;quot;mw-customtoggle-&amp;#039;..uniqid..&amp;#039;&amp;quot;&amp;gt;(&amp;#039;..tostring(#arr)..&amp;#039;)&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
        wikitext = wikitext .. &amp;#039;\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-&amp;#039;..uniqid..&amp;#039;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
        for _, entry in ipairs(arr) do&lt;br /&gt;
            wikitext = wikitext .. &amp;#039;&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;&amp;#039;..entry.title..&amp;#039;&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;\n&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
        wikitext = wikitext .. &amp;#039;&amp;lt;/div&amp;gt;\n|}\n&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    wikitext = wikitext .. &amp;#039;|}&amp;#039;&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>