local p = {}
local lib = require('Module:Feature')
local icons_data = require ('Module:IconData/alliances')
function p.getTodoTable(frame)
local tableNode = mw.html.create('table')
tableNode
:addClass('pc-block service-table')
:cssText('width: 100%; display: table; margin: 0 auto; text-align: center;')
:newline()
tableNode
:tag('tr')
:css('white-space', 'nowrap')
:tag('th')
:wikitext('Задача')
:done()
:tag('th')
:wikitext('Описание')
:done()
:tag('th')
:wikitext('Ответственный')
:done()
:tag('th')
:wikitext('Статус')
:done()
:done()
local list = mw.loadData('Module:Tools/todo')
local statuses = mw.loadData('Module:Tools/todo/statuses')
local member = ""
local status = ""
for k, v in ipairs(list) do
if v[3] == "" or v[3] == nil then
member = "Все желающие"
else
member = mw.ustring.format('[[Участник:%s|%s]]', v[3], v[3])
end
if v[4] == 1 then
status = mw.ustring.format('{{Цвет|обы|%s}}', statuses[v[4]])
elseif v[4] == 2 then
status = mw.ustring.format('{{Цвет|жел|%s}}', statuses[v[4]])
elseif v[4] == 3 then
status = mw.ustring.format('{{Цвет|зел|%s}}', statuses[v[4]])
end
local rowNode = mw.html.create('tr')
rowNode
:tag('td')
:css('color', '#25a6f2')
:wikitext(mw.ustring.format('%s', v[1]))
:done()
:tag('td')
:css('text-align', 'left')
:wikitext(mw.ustring.format('%s', v[2]))
:done()
:tag('td')
:wikitext(mw.ustring.format('%s', member))
:done()
:tag('td')
:wikitext(mw.ustring.format('%s', status))
:done()
:done()
tableNode:node(rowNode):newline()
end
return frame:preprocess(tostring(tableNode))
end
function p.getNoveltyHeroes(frame)
local divNode = mw.html.create('div')
local str = ""
divNode
:cssText('display: flex; flex-flow: row wrap; justify-content: space-evenly;')
:newline()
local data = mw.loadData('Module:Tools/novelty')
for k, v in lib.getSortedKeys(data['heroes']) do
if k < 6 then
str = str .. mw.ustring.format('{{sih|hero=%s|size=60px}}', v[1])
else
str = str .. mw.ustring.format('<div style="margin-bottom: -4px; margin-right: 10px;">[[Новые герои|Все герои]]</div>')
end
end
divNode
:wikitext(mw.ustring.format('%s', str))
:done()
return frame:preprocess(tostring(divNode))
end
function p.getFullNoveltyHeroes(frame)
local tableNode = mw.html.create('table')
tableNode
:addClass('custom-table')
:cssText('width: 100%; display: table; margin: 0 auto; text-align: center;')
:newline()
tableNode
:tag('tr')
:css('white-space', 'nowrap')
:tag('th')
:wikitext('Дата')
:done()
:tag('th')
:wikitext('Имя героя')
:done()
:tag('th')
:wikitext('Иконка')
:done()
:tag('th')
:wikitext('Раса')
:done()
:tag('th')
:wikitext('Класс')
:done()
:tag('th')
:wikitext('Альянс')
:done()
:done()
local data = mw.loadData('Module:Tools/novelty')
local data_heroes = mw.loadData('Module:HeroData/data')
local races = mw.loadData('Module:HeroData/races')
local classes = mw.loadData('Module:HeroData/classes')
local alliances = mw.loadData('Module:HeroData/alliances')
local icon = ""
for k, v in lib.pairsByAlphabeticalKeys(data['heroes']) do
if data_heroes[v[1]]['race'] ~= nil then
race = races[data_heroes[v[1]]['race']]
else
race = "-"
end
if data_heroes[v[1]]['class'] ~= nil then
class = classes[data_heroes[v[1]]['class']]
else
class = "-"
end
if data_heroes[v[1]]['alliance'] ~= nil then
alliance = alliances[data_heroes[v[1]]['alliance']]
else
alliance = "-"
end
if icons_data[alliance] ~= nil then
icon = icons_data[alliance]
else
return "-"
end
local rowNode = mw.html.create('tr')
rowNode
:tag('td')
:wikitext(mw.ustring.format('%s', v[2]))
:done()
:tag('td')
:wikitext(mw.ustring.format('[[%s]]', v[1]))
:done()
:tag('td')
:wikitext(mw.ustring.format('{{sih|hero=%s|size=45px}}', v[1]))
:done()
:tag('td')
:wikitext(mw.ustring.format('[[:Категория:%s (раса)|%s]]', race, race))
:done()
:tag('td')
:wikitext(mw.ustring.format('[[:Категория:%s (класс)|%s]]', class, class))
:done()
:tag('td')
:wikitext(mw.ustring.format('[[Файл:%s|%s|link=:Категория:%s (альянс)]]', icon, "45px", alliance))
:done()
:done()
tableNode:node(rowNode):newline()
end
return frame:preprocess(tostring(tableNode))
end
function p.getNoveltyBosses(frame)
local divNode = mw.html.create('div')
local str = ""
divNode
:cssText('display: flex; flex-flow: row wrap; justify-content: space-evenly;')
:newline()
local data = mw.loadData('Module:Tools/novelty')
for k, v in ipairs(data['bosses']) do
if k < 6 then
str = str .. mw.ustring.format('{{sib|boss=%s|size=60px|border=3px ridge #3d8ac2}}', v[1])
else
str = str .. mw.ustring.format('<div style="margin-bottom: -4px; margin-right: 10px;">[[Новые боссы|Все боссы]]</div>')
end
end
divNode
:wikitext(mw.ustring.format('%s', str))
:done()
return frame:preprocess(tostring(divNode))
end
function p.getNoveltyItems(frame)
local divNode = mw.html.create('div')
local str = ""
divNode
:cssText('display: flex; flex-flow: row wrap; justify-content: space-evenly;')
:newline()
local data = mw.loadData('Module:Tools/novelty')
for k, v in ipairs(data['items']) do
if k < 6 then
str = str .. mw.ustring.format('{{sii|item=%s|size=60px}}', v[1])
else
str = str .. mw.ustring.format('<div style="margin-bottom: -4px; margin-right: 10px;">[[Новые предметы|Все предметы]]</div>')
end
end
divNode
:wikitext(mw.ustring.format('%s', str))
:done()
return frame:preprocess(tostring(divNode))
end
function p.getNoveltyRecipes(frame)
local divNode = mw.html.create('div')
local str = ""
divNode
:cssText('display: flex; flex-flow: row wrap; justify-content: space-evenly;')
:newline()
local data = mw.loadData('Module:Tools/novelty')
for k, v in ipairs(data['recipes']) do
if k < 6 then
str = str .. mw.ustring.format('{{sii|item=%s|size=60px}}', v[1])
else
str = str .. mw.ustring.format('<div style="margin-bottom: -4px; margin-right: 10px;">[[Новые рецепты|Все рецепты]]</div>')
end
end
divNode
:wikitext(mw.ustring.format('%s', str))
:done()
return frame:preprocess(tostring(divNode))
end
return p