Модуль:FetchData3: відмінності між версіями

нема опису редагування
Немає опису редагування
Немає опису редагування
Рядок 170: Рядок 170:


----------------------------------------------------------------------
----------------------------------------------------------------------
-- ГОЛОВНА ФУНКЦІЯ ДЛЯ ОТРИМАННЯ ТИТУЛІВ
-- ГОЛОВНА ФУНКЦІЯ ДЛЯ ОТРИМАННЯ ТИТУЛІВ У ВИГЛЯДІ ТАБЛИЦІ
----------------------------------------------------------------------
----------------------------------------------------------------------
function p.titles(frame)
function p.titles(frame)
Рядок 179: Рядок 179:
     end
     end
      
      
     local data, err = get_player_row("Титули", name)
    -- Отримуємо дані з таблиці "Титули"
     local titles_data, err1 = get_player_row("Титули", name)
    if not titles_data then
        return err1 or "''Відсутні''"
    end
   
    -- Отримуємо дані з таблиці "Призовий_фонд"
    local prize_data, err2 = get_player_row("Призовий_фонд", name)
      
      
     if not data then
     -- Мапа дат турнірів (потрібно буде заповнити)
         return err or "Немає титулів"
    local tournament_dates = {
     end
        ["Перший сезон"] = "30.05.2023",
        ["Другий сезон"] = "15.08.2023",
        ["Третій сезон"] = "30.10.2023",
        ["Четвертий сезон"] = "15.01.2024",
        ["П'ятий сезон"] = "30.03.2024",
        ["Шостий сезон"] = "15.06.2024",
        ["Сьомий сезон"] = "30.08.2024",
         ["Восьмий сезон"] = "15.11.2024",
        ["Дев'ятий сезон"] = "28.02.2025",
        ["Mafia Closed Cup I"] = "15.07.2024",
        ["Mafia Closed Cup I Online"] = "01.08.2024",
        ["Фінал Року"] = "31.12.2024"
     }
      
      
     local titles = {}
     local results = {}
      
      
     -- Пропускаємо першу колонку (ім'я гравця)
     -- Пропускаємо першу колонку (ім'я гравця)
     for i = 2, #data.cells do
     for i = 2, #titles_data.cells do
         local cell_value = data.cells[i]
         local cell_value = titles_data.cells[i]
         local header = data.headers[i]
         local header = titles_data.headers[i]
          
          
         if cell_value and cell_value ~= "" and header then
         if cell_value and cell_value ~= "" and cell_value ~= "-" and header then
             local medal = get_medal_icon(cell_value)
             local medal = get_medal_icon(cell_value)
              
              
             if medal then
             if medal then
                 local tournament = get_tournament_link(header)
                -- Отримуємо назву турніру без (фінал)/(рейтинг)
                 table.insert(titles, string.format("* %s '''%s'''", medal, tournament))
                 local clean_header = mw.ustring.gsub(header, "%s*%(фінал%)%s*", "")
                 clean_header = mw.ustring.gsub(clean_header, "%s*%(рейтинг%)%s*", "")
                clean_header = mw.text.trim(clean_header)
               
                -- Отримуємо призові з таблиці "Призовий_фонд"
                local prize_amount = "0 ₴"
                if prize_data then
                    for j = 3, #prize_data.headers do
                        local prize_header = mw.text.trim(prize_data.headers[j])
                        if prize_header == clean_header then
                            local prize_value = prize_data.cells[j]
                            if prize_value and prize_value ~= "" and prize_value ~= "-" then
                                prize_amount = prize_value .. " ₴"
                            end
                            break
                        end
                    end
                end
               
                -- Отримуємо дату турніру
                local date = tournament_dates[clean_header] or "01.01.2023"
               
                -- Форматуємо посилання на турнір
                local tournament_link = get_tournament_link(header)
               
                -- Текст місця
                local place_text = ""
                if cell_value == "1" then
                    place_text = "1-е місце"
                elseif cell_value == "2" then
                    place_text = "2-е місце"
                elseif cell_value == "3" then
                    place_text = "3-є місце"
                elseif cell_value == "4" then
                    place_text = "Фіналіст"
                elseif cell_value == "S" or mw.ustring.match(cell_value, "^S%d") then
                    place_text = "Найкращий"
                end
               
                table.insert(results, {
                    date = date,
                    place = place_text,
                    medal = medal,
                    tournament = tournament_link,
                    prize = prize_amount
                })
             end
             end
         end
         end
     end
     end
      
      
     if #titles == 0 then
     if #results == 0 then
         return "''Відсутні''"
         return "''Відсутні''"
     end
     end
      
      
     return table.concat(titles, "\n")
    -- Генеруємо таблицю
    local table_html = {
        '{| class="wikitable sortable" style="width: calc(100% - 470px);"',
        '! Дата !! Місце !! Турнір !! Призові',
        '|-'
    }
   
    for _, result in ipairs(results) do
        table.insert(table_html, string.format(
            '| style="text-align:left;" | %s || style="text-align:left;" | %s || style="text-align:left; padding-left:10px;" | %s %s || style="text-align:right;" | %s',
            result.date,
            result.place,
            result.medal,
            result.tournament,
            result.prize
        ))
        table.insert(table_html, '|-')
    end
   
    table.insert(table_html, '|}')
   
     return table.concat(table_html, '\n')
end
end


return p
return p