Модуль:MatchTable
[просмотр] [просмотр кода] [история] [обновить]
Модуль-оболочка для вывода таблиц матчей. Главное назначение — отрисовывать таблицы по указанию мощного модуля TournamentResults, но может генерировать таблички и в чистом виде, если их заполнять вручную, поскольку из-за архитектурных особенностей прямого выхода на базу данных не имеет.
Параметры
Функция group
Рисует таблицы групповых раундов, автоматически подсчитывая количество участвовавших команд и очки.
number_of_rounds =Количество кругов, один или два.compact = yesЕсли параметр задан, то в таблице не отображаются колонки «И», «В», «Н» и «П».team1,team2и т. д. — трёхбуквенные коды участвовавших команд.score1_2— счёт матча с участием указанных команд. Принимает также ссылки вида [[Матч|0:0]], корректно учитывая счёт в результатахbold1,bold2и т. д. — выделение жирным шрифтом нужных команд.color1,color2и т. д. — цвета ячеек указанных команд.
Функция playoff
Более простая функция, поскольку здесь не нужно ничего подсчитывать.
s1_team1 =,s1_team2 =участники первого противостояния.s2_team1 =,s2_team2 =участники второго противостояния.- и т. д.
s1_score =,s2_score =счёт первого матча, счёт второго матча.s2_bold2 =выделение жирным шрифтом нужной команды на нужной строке.s1_color2 =выделение цветом нужной команды на нужной строке.
Функция _rating
Нужна для отрисовывания сворачиваемых таблиц рейтингов мест в группах, но напрямую не вызывается, поскольку для её составления нужен доступ к БД. Является внутренней функцией модуля TournamentResults.
Примеры использования
{{#invoke:MatchTable|playoff
|s1_team1 = ДОМ |s1_team2 = ЧАД |s1_score = 2:1(ET) |s1_color1 = lightgreen |s1_color2 = lightsalmon
|s2_team1 = АБХ |s2_team2 = АВИ |s2_score = [[Финал ЧТМ-2014|5:1]] |s2_color1 = |s2_color2 =
}}
{{#invoke:MatchTable|group
| number_of_rounds = 1
| compact = yes
|team1 = БАГ |color1 = lightgreen | bold1 = yes
|team2 = СКН |color2 = lightsalmon
|team3 = АВИ |color3 = lightsalmon
|team4 = ГАЛ |color4 = lightsalmon
|score1_2 = [[Финал ЧТМ-2014|5:1]]
|score1_3 = 4:0
|score1_4 = 3:2
|score2_3 = 5:1
|score2_4 = 4:1
|score3_4 = 0:0
}}
Пожалуйста, добавляйте категории на страницу документации.
-- =======================================
-- Модуль:MatchTable
-- Оболочка для вывода таблиц матчей
-- =======================================
local p = {}
-- Подключаем твою базу данных команд
local teamsData = require('Модуль:Data/Teams')
-- Вспомогательная функция: очищает параметр от пробелов.
-- Если параметр пустой, возвращает nil (удобно для проверок).
local function cleanParam(param)
if param then
local trimmed = mw.text.trim(param)
if trimmed ~= '' then
return trimmed
end
end
return nil
end
-- Функция для вывода таблицы плей-офф
function p.playoff(frame)
-- Получаем аргументы из шаблона (или напрямую из #invoke для тестов)
local args = frame:getParent().args
if next(args) == nil then
args = frame.args
end
-- Создаём каркас таблицы с помощью mw.html
local tbl = mw.html.create('table')
:attr('border', '1')
:attr('cellspacing', '1')
:attr('cellpadding', '1')
:addClass('article-table')
:css('width', '500px')
-- Определяем количество строк
local row_count = tonumber(cleanParam(args.number_of_strings))
-- Если number_of_strings не задан, считаем автоматически по наличию sX_team1
if not row_count then
row_count = 0
while cleanParam(args['s' .. (row_count + 1) .. '_team1']) do
row_count = row_count + 1
end
end
-- Генерируем строки таблицы
for i = 1, row_count do
-- Считываем параметры строки
local t1_code = cleanParam(args['s' .. i .. '_team1']) or '?'
local t2_code = cleanParam(args['s' .. i .. '_team2']) or '?'
local score = cleanParam(args['s' .. i .. '_score']) or '—'
local color1 = cleanParam(args['s' .. i .. '_color1'])
local color2 = cleanParam(args['s' .. i .. '_color2'])
-- Получаем короткие имена команд из базы
local t1_name = teamsData.getName(t1_code, 'short')
local t2_name = teamsData.getName(t2_code, 'short')
-- Добавляем строку (<tr>)
local tr = tbl:tag('tr')
-- 1. Ячейка: Флаг первой команды
local td_t1_img = tr:tag('td')
:attr('align', 'center')
:css('white-space', 'nowrap')
:wikitext(string.format('[[Файл:%s.jpg|50x100px]]', t1_code))
if color1 then td_t1_img:css('background-color', color1) end
-- 2. Ячейка: Название первой команды
local td_t1_name = tr:tag('td')
:attr('align', 'center')
:css('white-space', 'nowrap')
:wikitext(string.format('[[%s]]', t1_name))
if color1 then td_t1_name:css('background-color', color1) end
-- 3. Ячейка: Счёт матча (всегда без цвета)
tr:tag('td')
:attr('align', 'center')
:wikitext(score)
-- 4. Ячейка: Название второй команды
local td_t2_name = tr:tag('td')
:attr('align', 'center')
:css('white-space', 'nowrap')
:wikitext(string.format('[[%s]]', t2_name))
if color2 then td_t2_name:css('background-color', color2) end
-- 5. Ячейка: Флаг второй команды
local td_t2_img = tr:tag('td')
:attr('align', 'center')
:css('white-space', 'nowrap')
:wikitext(string.format('[[Файл:%s.jpg|50x100px]]', t2_code))
if color2 then td_t2_img:css('background-color', color2) end
end
-- Возвращаем готовый HTML-код таблицы
return tostring(tbl)
end
return p