5441
редагування
Admin (обговорення | внесок) Немає опису редагування Мітка: Скасовано |
Admin (обговорення | внесок) Немає опису редагування Мітка: Ручний відкіт |
||
| Рядок 32: | Рядок 32: | ||
-- Отримуємо заголовки (перший рядок після {|) | -- Отримуємо заголовки (перший рядок після {|) | ||
local headers = {} | local headers = {} | ||
local first_row = | local first_row = mw.ustring.match(table_content, "{|[^\n]*\n!(.-)[\n]") | ||
if first_row then | if first_row then | ||
-- Розбиваємо по | -- Розбиваємо заголовки по || | ||
for header in mw.ustring.gmatch(first_row, " | for header in mw.ustring.gmatch(first_row, "([^|]+)") do | ||
local trimmed = mw.text.trim(header) | local trimmed = mw.text.trim(header) | ||
if trimmed ~= "" then | if trimmed ~= "" then | ||
| Рядок 178: | Рядок 170: | ||
---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ||
-- ГОЛОВНА ФУНКЦІЯ ДЛЯ ОТРИМАННЯ ТИТУЛІВ | -- ГОЛОВНА ФУНКЦІЯ ДЛЯ ОТРИМАННЯ ТИТУЛІВ У ВИГЛЯДІ ТАБЛИЦІ | ||
---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ||
function p.titles(frame) | function p.titles(frame) | ||
| Рядок 187: | Рядок 179: | ||
end | end | ||
local | -- Отримуємо дані з таблиці "Титули" | ||
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) | |||
-- Мапа дат турнірів (потрібно буде заповнити) | |||
local tournament_dates = { | |||
["Перший сезон"] = "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 | local results = {} | ||
-- Пропускаємо першу колонку (ім'я гравця) | -- Пропускаємо першу колонку (ім'я гравця) | ||
for i = 2, # | for i = 2, #titles_data.cells do | ||
local cell_value = | local cell_value = titles_data.cells[i] | ||
local header = | 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 | -- Отримуємо назву турніру без (фінал)/(рейтинг) | ||
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 # | if #results == 0 then | ||
return "''Відсутні''" | return "''Відсутні''" | ||
end | end | ||
return table.concat( | -- Генеруємо таблицю | ||
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 | ||