Mòdul:Episode table![]()
A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi] UsageCreates one of three usages related to {{Episode table}} with the parameters defined in the documentation of the template: A standard episode table with
or
A row for a parted season with
A white background for references used in the header row of episode tables with
Categoria de seguiment-- This module implements {{Episode table}} and {{Episode table/part}}.
local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' )
--------------------------------------------------------------------------------
-- EpisodeTable class
-- The main class.
--------------------------------------------------------------------------------
local contrast_ratio = require('Module:Color contrast')._ratio
local EpisodeTable = {}
function EpisodeTable.cell(background, width, text, reference, textColor)
local cell = mw.html.create('th')
-- Width
local cell_width
if width == 'auto' then
cell_width = 'auto'
elseif tonumber(width) ~= nil then
cell_width = width .. '%'
else
cell_width = nil
end
-- Cell
cell:attr('scope','col')
:css('background',background or '#CCCCFF')
:css('width',cell_width)
:css('color',textColor)
:wikitext(text)
-- Reference
if reference and reference ~= '' then
cell:wikitext(" " .. EpisodeTable.reference(reference, background))
end
return cell
end
function EpisodeTable.reference(reference, background)
local link1_cr = contrast_ratio{'#0645AD', background or '#CCCCFF', ['error'] = 0}
local link2_cr = contrast_ratio{'#0B0080', background or '#CCCCFF', ['error'] = 0}
local refspan = mw.html.create('span')
:wikitext(reference)
if link1_cr < 7 or link2_cr < 7 then
refspan
:css('color','black')
:css('background-color','white')
:css('padding','1px')
:css('display','inline-block')
:css('line-height','50%')
end
return tostring(refspan)
end
function EpisodeTable.abbr(text,title)
local abbr = mw.html.create('abbr')
:attr('title',title)
:wikitext(text)
return tostring(abbr)
end
function EpisodeTable.part(frame,args)
local row = mw.html.create('tr')
if (args.c == nil or args.c == '') then args.c = '#CCCCFF' end
local black_cr = contrast_ratio{args.c or '#CCCCFF', 'black', ['error'] = 0}
local white_cr = contrast_ratio{'white', args.c or '#CCCCFF', ['error'] = 0}
local partTypes = {
{'act','Acte'},
{'chapter','Capítol'},
{'part','Part'},
{'volume','Volum'},
{'week','Setmana'},
}
local displaytext = ''
local isAnyPartSet = false
for k,v in pairs(partTypes) do
if args[v[1]] then
isAnyPartSet = true
displaytext = v[2] .. ' ' .. args[v[1]]
end
end
if args.subtitle then
displaytext = displaytext .. ((isAnyPartSet and ': ' or '') .. args.subtitle)
end
local plainText = require('Module:Plain text')._main
local displayTextAnchor = plainText(displaytext)
row:tag('td')
:attr('colspan', 13)
:attr('id', args.id or displayTextAnchor)
:css('text-align', 'center')
:css('background-color', args.c or '#CCCCFF')
:css('color', black_cr > white_cr and 'black' or 'white')
:wikitext("'''" .. displaytext .. "'''" .. (args.r and " " .. EpisodeTable.reference(args.r, args.c) or ''))
return tostring(row)
end
function EpisodeTable.new(frame,args)
args = args or {}
local categories = ''
local background = (args.background and args.background ~= '' and args.background ~= '#') and args.background or nil
-- Add # to background if necessary
if background ~= nil and HTMLcolor[background] == nil then
background = '#'..(mw.ustring.match(background, '^[%s#]*([a-fA-F0-9]*)[%s]*$') or '')
end
-- Default widths noted by local consensus
local defaultwidths = {};
defaultwidths.overall = 5;
defaultwidths.overall2 = 5;
defaultwidths.season = 5;
defaultwidths.series = 5;
defaultwidths.prodcode = 7;
defaultwidths.viewers = 10;
-- Create episode table
local root = mw.html.create('table')
-- Table width
local table_width = string.gsub(args.total_width or '','%%','')
if args.total_width == 'auto' or args.total_width == '' then
table_width = 'auto'
elseif tonumber(table_width) ~= nil then
table_width = table_width .. '%'
else
table_width = '100%'
end
root
:addClass('wikitable')
:addClass('plainrowheaders')
:addClass('wikiepisodetable')
:css('width', table_width)
-- Caption
if args.show_caption then
-- Visible caption option, with a tracking category
root:tag('caption'):wikitext(args.caption)
categories = categories .. '[[Categoria:Articles que fan servir la Plantilla:Episode table amb una descripció visible]]'
elseif args.caption then
-- If a visible caption isn't defined, then default to the screenreader-only caption
root:tag('caption'):wikitext(frame:expandTemplate{title='Screen reader-only',args={args.caption}})
end
-- Colour contrast; add to category only if it's in the mainspace
local title = mw.title.getCurrentTitle()
local black_cr = contrast_ratio{background, 'black', ['error'] = 0}
local white_cr = contrast_ratio{'white', background, ['error'] = 0}
if title.namespace == 0 and (args.background and args.background ~= '' and args.background ~= '#') and black_cr < 7 and white_cr < 7 then
categories = categories .. '[[Categoria:Articles que fan servir la Plantilla:Episode table amb una combinació de colors incorrecta]]'
end
-- Main row
local textColor = background and (black_cr > white_cr and 'black' or 'white') or 'black'
local mainRow = root:tag('tr')
mainRow
:css('color', textColor)
:css('text-align', 'center')
-- Cells
do
local used_season = false
local country = args.country ~= '' and args.country ~= nil
local viewers = 'Espectadors' .. ' ' .. (country and args.country or '') ..
((not args.viewers_type or args.viewers_type ~= '') and '<br />(' .. (args.viewers_type or 'milions') .. ')' or '')
local cellNames = {
{'overall','EpisodeNumber',EpisodeTable.abbr('Núm.','Número') ..
((args.season or args.series or args.EpisodeNumber2 or args.EpisodeNumber2Series or args.forceoverall) and '<br />'..(args.overall_type or 'total') or '')},
{'overall2','*',''},
{'season','EpisodeNumber2',EpisodeTable.abbr('Núm.','Número') .. ' de la<br />'..(args.season_type or 'temporada')},
{'series','EpisodeNumber2Series',EpisodeTable.abbr('Núm.','Número') .. ' en la<br />'..(args.series_type or 'sèrie')},
{'title','Title','Títol'},
{'aux1','Aux1',''},
{'director','DirectedBy','Direcció'},
{'writer','WrittenBy','Guió'},
{'aux2','Aux2',''},
{'aux3','Aux3',''},
{'airdate','OriginalAirDate','Data ' .. (args.released and 'd\'estrena' or 'd\'emissió') .. ' original'},
{'altdate','AltDate',''},
{'guests','Convidats','Convidat(s)'},
{'musicalguests','MusicalGuests','Convidat(s) musicals/entreteniment'},
{'prodcode','ProdCode','Codi de<br />' .. EpisodeTable.abbr('prod.','producció')},
{'viewers','Espectadors',viewers},
{'aux4','Aux4',''}
}
for k,v in pairs(cellNames) do
local thisCell = args[v[1]] or args[v[2]]
if thisCell and (v[1] ~= 'series' or (v[1] == 'series' and used_season == false)) then
if v[1] == 'season' then used_season = true end
if (k <= 3 and thisCell == '') then thisCell = '5' end
if (thisCell == '' and defaultwidths[v[1]]) then thisCell = defaultwidths[v[1]] end
local thisCellT = args[v[1] .. 'T'] or args[v[2] .. 'T']
local thisCellR = args[v[1] .. 'R'] or args[v[2] .. 'R']
mainRow:node(EpisodeTable.cell(background, thisCell, thisCellT or v[3], thisCellR, textColor))
end
end
-- Episodes
if args.episodes then
if args.anchor then
args.episodes = string.gsub(args.episodes, "(id=\")(ep%w+\")", "%1" .. args.anchor .. "%2")
end
root:node(args.episodes)
end
end
local templateStyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Module:Episode table/styles.css' }
}
return (((args.dontclose or '') ~= '') and mw.ustring.gsub(tostring(root), "</table>", "") or tostring(root)) .. categories .. templateStyles
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p = {}
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {
removeBlanks = false,
wrappers = 'Template:Episode table'
})
return EpisodeTable.new(frame,args)
end
function p.part(frame)
local args = require('Module:Arguments').getArgs(frame, {
removeBlanks = false,
wrappers = 'Template:Episode table/part'
})
return EpisodeTable.part(frame,args)
end
function p.ref(frame)
local args = require('Module:Arguments').getArgs(frame, {
removeBlanks = false,
})
return EpisodeTable.reference(args.r,args.b)
end
return p
|
Index:
pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve
Portal di Ensiklopedia Dunia