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

нема опису редагування
Немає опису редагування
Мітка: Скасовано
Немає опису редагування
Мітка: Скасовано
Рядок 106: Рядок 106:
         return nil
         return nil
     elseif value == "1" then
     elseif value == "1" then
         return "[[Файл:Gold.png|1-е Місце]]"
         return "[[Файл:Gold.png|1-е]]"
     elseif value == "2" then
     elseif value == "2" then
         return "[[Файл:Silver.png|2-е Місце]]"
         return "[[Файл:Silver.png|2-е]]"
     elseif value == "3" then
     elseif value == "3" then
         return "[[Файл:Bronze.png|3-е Місце]]"
         return "[[Файл:Bronze.png|3-е]]"
     elseif value == "4" then
     elseif value == "4" then
         return "[[Файл:Finalist.png|Фіналіст]]"
         return "[[Файл:Finalist.png|Участь]]"
     elseif value == "S" or mw.ustring.match(value, "^S%d") then
     elseif value == "S" or mw.ustring.match(value, "^S%d") then
         return "[[Файл:Star.png|Найкращий]]"
         return "[[Файл:Star.png|Кращий]]"
     else
     else
         return nil
         return nil
Рядок 177: Рядок 177:
     -- Для інших турнірів просто повертаємо назву
     -- Для інших турнірів просто повертаємо назву
     return string.format("[[%s]]", header_name)
     return string.format("[[%s]]", header_name)
end
-- DEBUG функція для перевірки
function p.debug_prizes(frame)
    local name = frame.args.player
    local prize_data = get_player_row("Призовий_фонд", name)
   
    if not prize_data then
        return "Гравця не знайдено в таблиці Призовий_фонд"
    end
   
    local result = {"Заголовки та значення:"}
    for i = 1, #prize_data.headers do
        table.insert(result, string.format("%d. '%s' = '%s'", i, prize_data.headers[i], prize_data.cells[i] or "nil"))
    end
   
    return table.concat(result, "\n")
end
end


Рядок 213: Рядок 196:
      
      
     -- Отримуємо дані з таблиці "Призовий_фонд"
     -- Отримуємо дані з таблиці "Призовий_фонд"
     local prize_data, err2 = get_player_row("Призовий_фонд", name)
     local prize_data = get_player_row("Призовий_фонд", name)
   
    -- Створюємо мапу призових для швидкого доступу
    local prize_map = {}
    if prize_data then
        for j = 1, #prize_data.headers do
            local header = prize_data.headers[j]
            local value = prize_data.cells[j] or ""
            prize_map[header] = value
        end
    end
      
      
     -- Мапа дат турнірів (потрібно буде заповнити)
     -- Мапа дат турнірів
     local tournament_dates = {
     local tournament_dates = {
         ["Перший сезон"] = "30.05.2023",
         ["Перший сезон"] = "09.09.2023",
         ["Другий сезон"] = "15.08.2023",
         ["Другий сезон"] = "28.10.2023",
         ["Третій сезон"] = "30.10.2023",
         ["Третій сезон"] = "23.12.2023",
         ["Четвертий сезон"] = "15.01.2024",
         ["Четвертий сезон"] = "10.02.2024",
         ["П'ятий сезон"] = "30.03.2024",
         ["П'ятий сезон"] = "06.04.2024",
         ["Шостий сезон"] = "15.06.2024",
         ["Шостий сезон"] = "11.05.2024",
         ["Сьомий сезон"] = "30.08.2024",
         ["Сьомий сезон"] = "06.07.2024",
         ["Восьмий сезон"] = "15.11.2024",
         ["Восьмий сезон"] = "10.08.2024",
         ["Дев'ятий сезон"] = "28.02.2025",
         ["Дев'ятий сезон"] = "28.09.2024",
         ["Mafia Closed Cup I"] = "15.07.2024",
         ["Mafia Closed Cup I"] = "12.11.2023",
         ["Mafia Closed Cup I Online"] = "01.08.2024",
         ["Mafia Closed Cup I Online"] = "28.01.2024",
         ["Фінал Року"] = "31.12.2024"
         ["Фінал Року"] = "13.10.2024"
     }
     }
      
      
Рядок 242: Рядок 235:
              
              
             if medal then
             if medal then
                 -- Отримуємо назву турніру без (фінал)/(рейтинг)
                 -- Визначаємо назву колонки в таблиці "Призовий_фонд"
                 local clean_header = mw.ustring.gsub(header, "%s*%(фінал%)%s*", "")
                -- Прибираємо (фінал) та (рейтинг) з назви
                 clean_header = mw.ustring.gsub(clean_header, "%s*%(рейтинг%)%s*", "")
                 local prize_column_name = mw.ustring.gsub(header, "%s*%(фінал%)%s*", "")
                 clean_header = mw.text.trim(clean_header)
                 prize_column_name = mw.ustring.gsub(prize_column_name, "%s*%(рейтинг%)%s*", "")
                 prize_column_name = mw.text.trim(prize_column_name)
               
                -- Нормалізуємо апостроф (є два види: ' та ')
                prize_column_name = mw.ustring.gsub(prize_column_name, "'", "'")
               
                -- Отримуємо призові з мапи
                local prize_value = prize_map[prize_column_name]
               
                -- Якщо не знайшли, пробуємо з іншим апострофом
                if not prize_value then
                    prize_column_name = mw.ustring.gsub(prize_column_name, "'", "'")
                    prize_value = prize_map[prize_column_name]
                end
                  
                  
                -- Отримуємо призові з таблиці "Призовий_фонд"
                 local prize_amount = "0 ₴"
                 local prize_amount = "0 ₴"
                 if prize_data then
                 if prize_value and prize_value ~= "" and prize_value ~= "-" and prize_value ~= "0" then
                    for j = 3, #prize_data.headers do
                    prize_amount = prize_value .. " ₴"
                        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
                 end
                  
                  
                 -- Отримуємо дату турніру
                 -- Отримуємо дату турніру
                 local date = tournament_dates[clean_header] or "01.01.2023"
                 local date = tournament_dates[prize_column_name] or "01.01.2023"
                  
                  
                 -- Форматуємо посилання на турнір
                 -- Форматуємо посилання на турнір
Рядок 271: Рядок 267:
                 local place_text = ""
                 local place_text = ""
                 if cell_value == "1" then
                 if cell_value == "1" then
                     place_text = "1-е місце"
                     place_text = "1-е"
                 elseif cell_value == "2" then
                 elseif cell_value == "2" then
                     place_text = "2-е місце"
                     place_text = "2-е"
                 elseif cell_value == "3" then
                 elseif cell_value == "3" then
                     place_text = "3-є місце"
                     place_text = "3-є"
                 elseif cell_value == "4" then
                 elseif cell_value == "4" then
                     place_text = "Фіналіст"
                     place_text = "Участь"
                 elseif cell_value == "S" or mw.ustring.match(cell_value, "^S%d") then
                 elseif cell_value == "S" or mw.ustring.match(cell_value, "^S%d") then
                     place_text = "Найкращий"
                     place_text = "Кращий"
                 end
                 end