Module:CareerList: Difference between revisions

477 bytes removed ,  13 March 2023
no edit summary
No edit summary
No edit summary
local p = {}
 
-- загрузка конфигурационного файла
local cfg = mw.loadData('Module:CareerList/config')
 
local function getSiteLink(site)
-- функция для определения ссылки на сайт
site = mw.ustring.lower(site)
local function getSiteLink(site, id)
if local url = cfg[site].url or then''
returnlocal id = cfg[site].url:gsub(id or '$1', id)
return url:gsub('$1', id)
end
end
 
local function makeCell(args, bgcolor)
-- функция для создания ячейки таблицы
local site = args.site or ''
local function makeCell(row, bg)
local cellid = {}args.id or ''
local sitealias = rowargs.site:loweralias or mw.title.getCurrentTitle().text
local notes = args.notes or 'N/A'
 
local link = getSiteLink(site):gsub('$1', id)
-- Ячейка 1
local bg = (site == 'Website') and '#E7E7E7' or '#DADADA'
cell[1] = mw.html.create('td')
local rowbg = (bgcolor == '#FFFFFF') and '#F3F3F3' or '#FFFFFF'
:css('background-color', cfg[site].bg[bg])
return string.format([[
:wikitext(cfg[site].text)
<tr style="background-color: %s;">
<td style="background-color: %s;">%s</td>
-- Ячейка 2
<td style="background-color: %s;"><a href="%s">%s</a></td>
cell[2] = mw.html.create('td')
<td>%s</td>
:wikitext('[[' .. row.site .. '|' .. row.alias .. ']]')
<td>%s</td>
 
</tr>
-- Ячейка 3
]], bgcolor, bg, site, rowbg, link, alias, alias, notes)
cell[3] = mw.html.create('td')
:wikitext('[[' .. getSiteLink(site, row.id) .. '|' .. row.id .. ']]')
 
-- Ячейка 4
cell[4] = mw.html.create('td')
:wikitext(row.alias == '' and mw.title.getCurrentTitle().text or row.alias)
 
-- Ячейка 5
cell[5] = mw.html.create('td')
:wikitext(row.notes == '' and 'N/A' or row.notes)
 
return cell
end
 
function p.tablemain(frame)
local listargs = frame.args.list
if not local list then= args.list or ''
returnlocal title = args.title or ''
local bgcolor = '#F2F2F2'
end
local rows = ''
 
for row in mw.ustring.gmatch(list, '{{CareerListCell(.-)}}') do
-- Разбиение на строки
local rows = rows .. makeCell(mw.text.split(listrow, '\n|'), bgcolor)
bgcolor = (bgcolor == '#FFFFFF') and '#F3F3F3' or '#FFFFFF'
local cells = {}
 
-- Создание ячеек
for i, row in ipairs(rows) do
local values = mw.text.split(row, '|')
local bg = i % 2 == 0 and 2 or 1
cells[i] = makeCell({
site = values[1],
id = values[2],
alias = values[3] or '',
notes = values[4] or ''
}, bg)
end
 
-- Создание таблицы
local html = mw.html.create()
html
:tag('table')
:addClass('wikitable careerlist')
:css('background-color', '#F2F2F2')
:css('width', '100%')
:css('max-width', 'none')
:css('table-layout', 'fixed')
:wikitext('\n|-')
 
-- Заголовок таблицы
for i, header in ipairs(cfg.header) do
html
:tag('th')
:css('background-color', '#F2F2F2')
:wikitext(header)
end
 
-- Строки таблицы
for i, row in ipairs(cells) do
html:wikitext('\n|-')
for j, cell in ipairs(row) do
html:addChild(cell)
end
return string.format([[
end
<table class="wikitable" style="width: 100%; margin: 1em 0; background-color: %s;">
 
<caption>%s</caption>
return tostring(html)
<tr>
<th style="width: 15%;">Type</th>
<th style="width: 35%;">Name</th>
<th style="width: 35%;">Alias</th>
<th style="width: 15%;">Notes</th>
</tr>
%s
</table>
]], bgcolor, title, rows)
end