Шаблон:Aligned table: различия между версиями

Материал из Тептар — свободной энциклопедии
Перейти к навигации Перейти к поиску
Нет описания правки
(Содержимое страницы заменено на «{{#invoke:aligned table|table}}<noinclude> {{doc}} </noinclude>»)
Метка: замена
 
Строка 1: Строка 1:
-- This module implements {{aligned table}}
{{#invoke:aligned table|table}}<noinclude>
local p = {}
{{doc}}
 
</noinclude>
local function isnotempty(s)
return s and s:match( '^%s*(.-)%s*$' ) ~= ''
end
 
function p.table(frame)
local args = (frame.args[3] ~= nil) and frame.args or frame:getParent().args
local entries = {}
local colclass = {}
local colstyle = {}
local cols = tonumber(args['cols']) or 2
 
-- create the root table
local root = mw.html.create('table')
 
-- add table style for fullwidth
if isnotempty(args['fullwidth']) then
root
:css('width', '100%')
:css('border-collapse', 'collapse')
:css('border-spacing', '0px 0px')
:css('border', 'none')
end
 
-- add table classes
if isnotempty(args['class']) then
root:addClass(args['class'])
end
 
-- add table style
if isnotempty(args['style']) then
root:cssText(args['style'])
end
 
-- build arrays with the column styles and classes
if isnotempty(args['leftright']) then
colstyle[1] = 'text-align:left;'
colstyle[2] = 'text-align:right;'
end
for i = 1,cols do
colclass[ i ] = colclass[ i ] or ''
colstyle[ i ] = colstyle[ i ] or ''
if isnotempty(args['colstyle']) then
colstyle[ i ] = args['colstyle'] .. ';' .. colstyle[ i ]
end
if isnotempty(args['colalign' .. tostring(i)]) then
colstyle[ i ] = 'text-align:' .. args['colalign' .. tostring(i)] .. ';' .. colstyle[ i ]
elseif isnotempty(args['col' .. tostring(i) .. 'align']) then
colstyle[ i ] = 'text-align:' .. args['col' .. tostring(i) .. 'align'] .. ';' .. colstyle[ i ]
elseif isnotempty(args['align' .. tostring(i)]) then
colstyle[ i ] = 'text-align:' .. args['align' .. tostring(i)] .. ';' .. colstyle[ i ]
end
if isnotempty(args['colnowrap' .. tostring(i)]) then
colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ]
elseif isnotempty(args['col' .. tostring(i) .. 'nowrap']) then
colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ]
elseif isnotempty(args['nowrap' .. tostring(i)]) then
colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ]
end
if isnotempty(args['colwidth' .. tostring(i)]) then
colstyle[ i ] = 'width:' .. args['colwidth' .. tostring(i)] .. ';' .. colstyle[ i ]
elseif isnotempty(args['col' .. tostring(i) .. 'width']) then
colstyle[ i ] = 'width:' .. args['col' .. tostring(i) .. 'width'] .. ';' .. colstyle[ i ]
elseif isnotempty(args['colwidth']) then
colstyle[ i ] = 'width:' .. args['colwidth'] .. ';' .. colstyle[ i ]
end
if isnotempty(args['colstyle' .. tostring(i)]) then
colstyle[ i ] = colstyle[ i ] .. args['colstyle' .. tostring(i)]
elseif isnotempty(args['col' .. tostring(i) .. 'style']) then
colstyle[ i ] = colstyle[ i ] .. args['col' .. tostring(i) .. 'style']
elseif isnotempty(args['style' .. tostring(i)]) then
colstyle[ i ] = colstyle[ i ] .. args['style' .. tostring(i)]
end
if isnotempty(args['colclass' .. tostring(i)]) then
colclass[ i ] =  args['colclass' .. tostring(i)]
elseif isnotempty(args['col' .. tostring(i) .. 'class']) then
colclass[ i ] =  args['col' .. tostring(i) .. 'class']
elseif isnotempty(args['class' .. tostring(i)]) then
colclass[ i ] =  args['class' .. tostring(i)]
end
end
-- compute the maximum cell index
local cellcount = 0
for k, v in pairs( args ) do
if type( k ) == 'number' then
cellcount = math.max(cellcount, k)
end
end
-- compute the number of rows
local rows = math.ceil(cellcount / cols)
 
-- build the table content
if isnotempty(args['title']) then
local caption = root:tag('caption')
caption:cssText(args['titlestyle'])
caption:wikitext(args['title'])
end
if isnotempty(args['above']) then
local row = root:tag('tr')
local cell = row:tag('th')
cell:attr('colspan', cols)
cell:cssText(args['abovestyle'])
cell:wikitext(args['above'])
end
for j=1,rows do
-- start a new row
local row = root:tag('tr')
row:css('vertical-align', 'top')
-- loop over the cells in each row
for i=1,cols do
local cell
if isnotempty(args['row' .. tostring(j) .. 'header']) then
cell = row:tag('th')
else
cell = row:tag('td')
end
if args['class' .. tostring(j) .. '.' .. tostring(i)] then
cell:addClass(args['class' .. tostring(j) .. '.' .. tostring(i)])
else
if args['rowclass' .. tostring(j)] then
cell:addClass(args['rowclass' .. tostring(j)])
elseif args['row' .. tostring(j) .. 'class'] then
cell:addClass(args['row' .. tostring(j) .. 'class'])
end
if colclass[i] ~= '' then
cell:addClass(colclass[i])
end
end
if args['style' .. tostring(j) .. '.' .. tostring(i)] then
cell:cssText(args['style' .. tostring(j) .. '.' .. tostring(i)])
else
if args['rowstyle' .. tostring(j)] then
cell:cssText(args['rowstyle' .. tostring(j)])
elseif args['row' .. tostring(j) .. 'style'] then
cell:cssText(args['row' .. tostring(j) .. 'style'])
end
if isnotempty(colstyle[i]) then
cell:cssText(colstyle[i])
end
end
cell:wikitext(args[cols*(j - 1) + i] or '')
end
end
-- return the root table
return tostring(root)
end
 
return p

Текущая версия от 14:30, 18 июня 2020

Документация

Шаблон служит для создания простых таблиц там, где стандартная таблица разметки невозможна, или слишком громоздка. Этот шаблон не должен быть использован для замены стандартной таблицы разметки в статьях.

Полный синтаксис[править код]

{{Aligned table
| cols =
| fullwidth =
| class =
| style =
| colwidth =
| leftright =
| colstyle =
| rowstyle =

<!-- для Cth column: -->
| colCwidth =
| colCclass =
| colCalign =
| colCstyle =
| colCnowrap =

<!-- для Rth row: -->
| rowRclass =
| rowRstyle =
| rowRheader =

<!-- для cell R,C: -->
| classR.C =
| styleR.C =

| (cell 1,1) | (cell 1,2) | ... | ...
| (cell 2,1) | (cell 2,2) | ... | ...
}}

Параметры[править код]

Параметр Описание Пример Дефолт
class CSS/HTML для всей таблицы
  • |class=wikitable
  • |class=infobox
  • |class=sortable nowrap
  • |class=sidebar
  • none
    cols Количество столбцов в таблице |cols=4 2
    style CSS стиль для всей таблицы|style=line-height:2.0em; нет
    Параметр Описание Пример Дефолт
    fullwidth Устанавливает 100% ширину таблицы |fullwidth=on нет
    colwidth Ширина столбцов (или включите "width:" в colstyle). |colwidth=6.0em
    |colwidth=25%
    нет
    colstyle CSS стиль для каждого столбца |colstyle=background:#aaa "
    rowstyle CSS стиль для каждой строки |rowstyle=text-align:center; "
    leftright Любое значение ("on", "true", "yes", и т.д.) установит |col1align=left и |col2align=right. Это удобно для 2-колоночной таблицы. |leftright=on нет
    colCwidth Ширина столбца C (или включить "width:" in colCstyle). |col2width=9.0em
    |col3width=35%
    нет
    colCclass Class применяется для столбца C. |col1class=navbox-group "
    colCalign Выравнивание (left / right / center) для содержимого столбца C (или установите "text-align:" в colCstyle). |col4align=right нет
    colCnowrap Любое значение ("on", "true", "yes" и т.д.) добавит "white-space:nowrap;" to column C cell styling (для предотвращения выхода строки; или включите "nowrap" в colCclass или "white-space:nowrap;" в colCstyle). |col5nowrap=on "
    colCstyle CSS стиль для колонки C. |col4style=font-style:italic "
    colCheader Установите любое значение (например, Y), чтобы изменить клетки данных в таблице заголовков. |col1header=on нет
    rowRclass Class для строки R. |row10class=navbox-abovebelow нет
    rowRstyle CSS стиль для строки R. |row2style=font-weight:bold "
    rowRheader Любое значение (e.g. Y) изменит ячейки данных в таблице заголовков. |row1header=on нет
    classR.C Class1.2 применяется к строкe 1 и колонке 2 и отменяет любые другие атрибуты класса: (rowRclass, colCclass). |class1.2=adr нет
    styleR.C Class5.3 применяется к ячейке в строке 5 и колонке 3 и отменяет любой более общий стиль: (leftright, colCalign, rowRstyle, etc). |style5.3=text-align:right "
    Пустой Если параметр отсутствует, то берется следующая ячейка в таблице. | Malta | Zaire

    Примеры[править код]

    {{Aligned table
    |cols=3 |class=wikitable
    | A | 1 | a
    | B | 2 | b
    }}
    
    A 1 a
    B 2 b
    {{Aligned table
    |cols=4 |class=wikitable
    |col1align=center |col2align=center
    |col3align=right  |col4align=right
    | AAA | aa    | 123  | 12345
    | B   | bbbbb | 1234 | 2
    }}
    
    AAA aa 123 12345
    B bbbbb 1234 2
    {{Aligned table
    |class=wikitable |style=width:20em;
    |col1align=center |col2align=right
    | AAA | 123
    | B   | 2
    }}
    
    AAA 123
    B 2
    {{Aligned table
    |cols=3 |class=wikitable sortable
    |row1header=y
    | U | # | l
    | A | 1 | a
    | B | 2 | b
    }}
    
    U # l
    A 1 a
    B 2 b