Module:Setlist/Songs: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
Tag: Reverted
No edit summary
Tag: Reverted
Line 90: Line 90:
}
}


-- Определяем цвета альбомов
local albumColors = {
local albumColors = {
     ["Twenty One Pilots"] = "#87B22A",
     ["Twenty One Pilots"] = "#87B22A",
Line 101: Line 100:
}
}


-- Определяем ссылки для альбомов
local albumLinks = {
local albumLinks = {
     ["Twenty One Pilots"] = "Twenty One Pilots (album)",
     ["Twenty One Pilots"] = "Twenty One Pilots (album)",
Line 111: Line 109:
     ["Johnny Boy"] = "Johnny Boy",
     ["Johnny Boy"] = "Johnny Boy",
}
}
-- Вспомогательная функция для проверки наличия элемента в таблице
local function tableContains(table, element)
    for _, value in ipairs(table) do
        if value == element then
            return true
        end
    end
    return false
end
-- Функция для фильтрации песен на основе года в названии страницы
local function filterSongsByPageName(songs, pageName)
    local filteredSongs = {}
    -- Проверяем, заканчивается ли название страницы на .2009, .2010, .2011 или .2012
    local isPre2013 = pageName:match("%.20(09|10|11|12)$")
    for song, albums in pairs(songs) do
        local filteredAlbums = {}
        for _, album in ipairs(albums) do
            if isPre2013 then
                -- До 2013 года: песни из Vessel и Regional At Best показываем только в Regional At Best
                if album == "Vessel" and tableContains(albums, "Regional At Best") then
                    -- Пропускаем Vessel, если песня есть в Regional At Best
                elseif album == "Regional At Best" then
                    table.insert(filteredAlbums, album)
                else
                    table.insert(filteredAlbums, album)
                end
            else
                -- После 2012 года: песни из Regional At Best и Vessel показываем только в Vessel
                if album == "Regional At Best" and tableContains(albums, "Vessel") then
                    -- Пропускаем Regional At Best, если песня есть в Vessel
                elseif album == "Vessel" then
                    table.insert(filteredAlbums, album)
                else
                    table.insert(filteredAlbums, album)
                end
            end
        end
        filteredSongs[song] = filteredAlbums
    end
    return filteredSongs
end
-- Основная функция для возврата данных
local function getData(frame)
    -- Получаем название текущей страницы
    local pageName = frame:getParent():getTitle()
    local filteredSongs = filterSongsByPageName(songs, pageName)
    return {
        songs = filteredSongs,
        albumColors = albumColors,
        albumLinks = albumLinks,
    }
end


return {
return {
    getData = getData,
     songs = songs,
     songs = songs,
     albumColors = albumColors,
     albumColors = albumColors,
     albumLinks = albumLinks,
     albumLinks = albumLinks,
}
}

Navigation menu