Модуль:RatingFIDETable (Bk;rl,&RatingFIDETable)
Перейти к навигации
Перейти к поиску
local p = {}
function p.GetTable(frame)
local args = frame:getParent().args
local TypeTable = args['Тип'] or frame.args['Тип'] or "Игроки"
local Quantity = args['Количество'] or frame.args['Количество'] or 20
local Tabular = mw.ext.data.get("FIDE Top 100 Players.tab")
if TypeTable == "Игроки" then
Tabular = mw.ext.data.get("FIDE Top 100 Players.tab")
elseif TypeTable == "Женщины" then
Tabular = mw.ext.data.get("FIDE Top 100 Women.tab")
elseif TypeTable == "Юниоры" then
Tabular = mw.ext.data.get("FIDE Top 100 Juniors.tab")
elseif TypeTable == "Девушки" then
Tabular = mw.ext.data.get("FIDE Top 100 Girls.tab")
elseif TypeTable == "Страны Игроки" then
Tabular = mw.ext.data.get("FIDE Contry Players.tab")
elseif TypeTable == "Страны Женщины" then
Tabular = mw.ext.data.get("FIDE Contry Women.tab")
end
if Tabular == nil then return "Нет таблицы с данными" end
Quantity = tonumber(Quantity)
if Quantity < 0 then Quantity = 20 end
if Quantity > #Tabular.data then Quantity = #Tabular.data end
local HTML = mw.html.create('table')
local TempRow
local NumRow = 0
if TypeTable == "Страны Игроки" or TypeTable == "Страны Женщины" then
HTML:attr('class', 'standard sortable')
if TypeTable == "Страны Игроки" then
TempRow = HTML:tag('th'):attr('colspan', 6):wikitext(Quantity..' лучших стран по среднему рейтингу'..'<br>'..'10 лучших из активных шахматистов по состоянию на ' .. string.match(Tabular.sources, "(%d+%.%d+%.%d+)") .. '<ref>['..Tabular.sources..']</ref>:')
elseif TypeTable == "Страны Женщины" then
TempRow = HTML:tag('th'):attr('colspan', 6):wikitext(Quantity..' лучших стран по среднему рейтингу'..'<br>'..'10 лучших из активных шахматисток по состоянию на ' .. string.match(Tabular.sources, "(%d+%.%d+%.%d+)") .. '<ref>['..Tabular.sources..']</ref>:')
end
TempRow = HTML:tag('tr'):addClass("bright"):attr('align', 'center')
TempRow:tag('th'):wikitext("№")
TempRow:tag('th'):wikitext("Страна")
TempRow:tag('th'):wikitext("Средний<br>рейтинг")
local Rating = nil
local Player = {}
local WikiPath
local WikiName
for k,v in pairs(Tabular.data) do
if k > Quantity then break end
TempRow = HTML:tag('tr')
TempRow:tag('td'):wikitext(v[1]):attr('align', 'center')
local Flag
Flag = '{{флаг|'..v[2]..'}} '
WikiPath = mw.wikibase.getSitelink(v[3]) or mw.wikibase.getSitelink(v[3], 'enwiki') or v[3]
WikiName = mw.wikibase.getLabel(v[3]) or v[3]
TempRow:tag('td'):wikitext(Flag .. '[['.. WikiPath ..'|'.. WikiName .. ']]')
TempRow:tag('td'):wikitext(v[4]):attr('align', 'right')
end
else
HTML:attr('class', 'standard sortable')
if TypeTable == "Игроки" then
TempRow = HTML:tag('th'):attr('colspan', 7):wikitext(Quantity..' лучших из активных шахматистов по состоянию на ' .. string.match(Tabular.sources, "(%d+%.%d+%.%d+)") .. '<ref>['..Tabular.sources..']</ref>:')
elseif TypeTable == "Женщины" then
TempRow = HTML:tag('th'):attr('colspan', 7):wikitext(Quantity..' лучших из активных шахматисток по состоянию на ' .. string.match(Tabular.sources, "(%d+%.%d+%.%d+)") .. '<ref>['..Tabular.sources..']</ref>:')
elseif TypeTable == "Юниоры" then
TempRow = HTML:tag('th'):attr('colspan', 7):wikitext(Quantity..' лучших из активных юниоров по состоянию на ' .. string.match(Tabular.sources, "(%d+%.%d+%.%d+)") .. '<ref>['..Tabular.sources..']</ref>:')
elseif TypeTable == "Девушки" then
TempRow = HTML:tag('th'):attr('colspan', 7):wikitext(Quantity..' лучших из активных юниорок по состоянию на ' .. string.match(Tabular.sources, "(%d+%.%d+%.%d+)") .. '<ref>['..Tabular.sources..']</ref>:')
end
TempRow = HTML:tag('tr'):addClass("bright"):attr('align', 'center')
TempRow:tag('th'):wikitext("№")
TempRow:tag('th'):wikitext("{{comment|Прогресс|Изменение позиции по сравнению с позицией в среднем рейтинге за 12 месяцев|}}")
if TypeTable == "Игроки" or TypeTable == "Юниоры" then
TempRow:tag('th'):wikitext("Шахматист")
elseif TypeTable == "Женщины" or TypeTable == "Девушки" then
TempRow:tag('th'):wikitext("Шахматистка")
end
TempRow:tag('th'):wikitext("Г. р.")
TempRow:tag('th'):wikitext("Рейтинг")
TempRow:tag('th'):wikitext("{{comment|Средний<br>рейтинг|Средний рейтинг за 12 месяцев|}}")
TempRow:tag('th'):wikitext("{{comment|Изм.|Изменение рейтинга по сравнению со средним рейтингом за 12 месяцев|}}")
local Rating = nil
local Player = {}
local WikiPath
local WikiName
for k,v in pairs(Tabular.data) do
if k > Quantity then break end
TempRow = HTML:tag('tr')
TempRow:tag('td'):wikitext(v[1]):attr('align', 'center')
if v[2] == nil then
TempRow:tag('td'):wikitext("")
else
if v[2] > v[1] then
TempRow:tag('td'):wikitext("{{Увеличение}}"..v[2] - v[1]):attr('align', 'center')
elseif v[2] < v[1] then
TempRow:tag('td'):wikitext("{{Уменьшение}}"..v[1] - v[2]):attr('align', 'center')
else
TempRow:tag('td'):wikitext("{{Без изменения}}"):attr('align', 'center')
end
end
local Flag
if v[6]=='FID' then
Flag = '[[Файл:Fidelogo.jpg|22px|Выступает под флагом ФИДЕ]] '
else
Flag = '{{флаг|'..v[6]..'}} '
end
if v[5] == nil then
WikiPath = v[3]
WikiName = v[3]
TempRow:tag('td'):wikitext(Flag .. '{{Не переведено 5|'.. WikiPath ..'|'.. WikiPath ..'||'.. WikiPath .. '}}')
else
WikiPath = mw.wikibase.getSitelink(v[5]) or mw.wikibase.getSitelink(v[5], 'enwiki') or v[3]
WikiName = mw.wikibase.getLabel(v[5]) or v[3]
TempRow:tag('td'):wikitext(Flag .. '[['.. WikiPath ..'|'.. WikiName .. ']]')
end
TempRow:tag('td'):wikitext(v[10]):attr('align', 'center')
TempRow:tag('td'):wikitext(v[8]):attr('align', 'right')
TempRow:tag('td'):wikitext(v[9]):attr('align', 'right')
if v[9]== nil or v[8]==v[9] then
TempRow:tag('td'):wikitext()
elseif v[8]<v[9] then
TempRow:tag('td'):wikitext(v[8]-v[9]):attr('align', 'right')
else
TempRow:tag('td'):wikitext('+'.. v[8]-v[9]):attr('align', 'right')
end
end
end
return frame:preprocess( tostring(HTML) )
end
return p