Módulo:Sports table/WDL
Este módulo basado en Lua (Módulo:Sports table) es empleado para construir tablas de posiciones de grupos y/o de ligas para eventos deportivos con un formato victoria-empate-derrota. El resto de esta documentación explica cómo se configura el módulo. Consulte las páginas de estilo individuales para la instrucción del uso detallado.
Uso
Uso básico
En su forma más simple, solo se necesitan varios parámetros para construir una tabla.
En un artículo
El código escrito | {{#invoke:Sports table|main|style=WDL
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lo que se ve |
Fuente: [cita requerida] |
El comando principal es {{#invoke:Sports table|main|style=WDL}} que básicamente permite invocar el modelo y permite configurar todo lo que quiera. A continuación, se enumeran las posiciones de los equipos como |team1=
, |team2=
,... etc, cuantos sean necesario para elaborar la tabla. Puedes utilizar nombres de equipo completo sin espacios si lo deseas, pero usar códigos (como en el ejemplo) puede hacerlo más fácil. Para un equipo TTT (Hay que reemplazar el código TTT por el del equipo que se quiera colocar) se definen: |win_TTT=
para las victorias, |draw_TTT=
para los empates, |loss_TTT=
para las derrotas, |gf_TTT=
para los goles marcados, y |ga_TTT=
para los goles recibidos. Si no definen estos números, automáticamente el módulo supone que es 0. Sin embargo, es una buena práctica incluirlos de todas formas y alinear las columnas con espacios apropiados (como en el ejemplo) resultando el código más fácil de leer. El último paso consiste en definir el parámetro |name_TTT=
que determinará el nombre que aparece en la tabla, se pueden usar tanto enlaces wiki como plantillas. Ver #fecha para ver como cambiar la fecha de actualización.
En plantilla
El código escrito | {{#invoke:Sports table|main|style=WDL
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lo que se ve |
Fuente: [cita requerida] |
El código es básicamente el mismo, solo se agregan dos líneas. El parámetro |showteam={{{showteam}}}
, se usaría para remarcar a un determinado equipo (ver #remarcar equipo y tabla parcial), el parámetro |only_pld_pts={{{only_pld_pts}}}
, se usaría para una tabla truncada (ver #apariencia), el parámetro |show_matches={{{show_matches}}}
se usaría para crear una pequeña tabla con los resultados de los equipos que forman el grupo (ver #partidos). El parámetro |template_name=
crea unos botones V, D y E para redirigir hacia la página de la plantilla (así se puede acceder fácilmente desde cualquier artículo en donde esté indicado).
Personalización
En estas tablas se pueden personalizar varias cosas.
Puntos
El código escrito | {{#invoke:Sports table|main|style=WDL
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lo que se ve |
Fuente: [cita requerida] |
Por defecto, una victoria vale 3 puntos, un empate 1 punto y una derrota 0 puntos, estos valores se pueden sobrescribir si se necesita a través de los parámetros |winpoints=
para los triunfos, |drawpoints=
para los empates y |losspoints=
para las derrotas. Los equipos pueden también comenzar la temporada con puntos de bonificación o penalización, estos pueden ser incluidos mediante el parámetro |adjust_points_TTT=
para un equipo específico.
Opciones de encabezado (puntos a favor / en contra y otros encabezados personalizados)
El código escrito | {{#invoke:Sports table|main|style=WDL
| ||||||||||
Lo que se ve |
Fuente: [cita requerida] |
Para deportes en los que se usan puntos a favor y en contra, en vez de goles, colocar el parámetro {para|for_against_style|puntos}} y cambiará las columnas de GF y GC por PF (puntos a favor) y PC (puntos en contra). El texto que pone E (empate o draw en inglés) puede cambiarse mediante el parámetro |draw_header=
y el texto de la columna equipo (team) puede cambiarse usando |team_header=
. Por último, La columna Grp (grupo o group en inglés) puede modificarse a través del parámetro |group_header=
al igual que hacemos con los otros dos anteriores.
Alterar orden entre derrotas y empates
El código escrito | {{#invoke:Sports table|main|style=WDL|loss_before_draw=true
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lo que se ve |
Fuente: [cita requerida] |
De forma predeterminada, los empates se enumeran antes que las derrotas. Para colocar primero las derrotas, hay que añadir el parámetro |loss_before_draw=true
.
Opciones de pie de página
El código escrito | {{#invoke:Sports table|main|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lo que se ve |
Fuente: Wikipedia Criterios de clasificación: 1) puntos; 2) diferencia de goles; 3) número de goles marcados. |
La información de pie de página se puede personalizar (aunque las notas y el estado se insertarán automáticamente si se llaman, mirar XXX y YYY). La fecha de actualización está definida por el parámetro |update=
, ver más abajo para más detalles. Si no se da ninguna fuente, se muestra una etiqueta de citación necesaria, no obstante, a través del parámetro |source=
se puede proporcionar un enlace real. Las reglas de clasificación pueden mostrarse con el parámetro |class_rules=
ya sea directamente o a través de un wikilink a una sección de reglas de desempate. El uso del parámetro |only_pld_pts=no_hide_class_rules
suprime las reglas de clasificación (solo se debe utilizar cuando hay muchas plantillas que forman varios grupos en una página y las reglas se enumeran en otra parte de dicha página).
Fecha
La descripción por defecto muestra partido(s), esto se puede cambiar llamando con el parametro |matches_text=
para cualquier otro término.
- Temporada activa
El código escrito | {{#invoke:Sports table|main|
| ||||||||||
Lo que se ve |
Fuente: [cita requerida] |
Cuando la temporada está activa, el pie de página debe incluir la fecha del último partido jugado que se incluye en la tabla. Se consigue a través del parámetro |update=fecha
- Temporada terminada
El código escrito | {{#invoke:Sports table|main|
| ||||||||||
Lo que se ve |
Fuente: [cita requerida] |
Cuando todos los partidos se han jugado, la temporada está terminada y la linea update puede ser eliminada estableciendo el parámetro |update=completo
.
- Temporada futura
El código escrito | {{#invoke:Sports table|main|
| ||||||||||
What it looks like |
Fuente: [cita requerida] |
Antes de que comience la temporada, debería indicarse la fecha del primer partido a través del parámetro |update=futuro
y estableciendo la fecha de inicio con |start_date=
.
Apariencia
Usando el parámetro |only_pld_pts=
conseguimos que la tabla se haga más pequeña, lo que puede dar lugar a un ancho no deseado y saltos de línea en el pie de página. Esto puede corregirse con el parámetro |stack_footer=
. Mediante |stack_footer=yes
(en vez de yes, se puede poner: y, t, true o 1 una variante de de mayúsculas o minúsculas de las mismas) cada nueva información, como "fuente" y estados, se mostrará en una nueva fila.
- Sin stack_footer
El código escrito | {{#invoke:Sports table|main|
| ||||||||
Lo que se ve |
|
- Con stack_footer
El código escrito | {{#invoke:Sports table|main|
| ||||||||
Lo que se ve |
|
-- Estilo para tablas de fútbol
local pp = {}
function pp.header(t,Args,p_sub,pos_label,group_col,VTE_text,full_table,results_header_txt)
-- Load relevant modules
local yesno = require('Module:Yesno')
-- Create table header
-- Pre stufff
local team_width = Args['anchura_equipo'] or '190'
local sort_text = ''
local sort_table_val = Args['tabla_clasificable'] or 'no'
local rounds_won = yesno(Args['mostrar_rg'] or Args['rondas_ganadas'] or 'no')
if yesno(sort_table_val) then sort_text = 'sortable' end
table.insert(t,'{| class="wikitable'..sort_text..'" style="text-align:center; margin-left: auto; margin-right: auto; font-size: 90%;"\n') -- Open table
-- Custom header options
local draw_head_text = Args['cabecera_empate'] or '<abbr title="Empatados">E</abbr>'
local bgcolor_head = Args['cabecera_bgcolor'] or nil
bgcolor_head = {liga1='#cbd0d8', liga2='#c50219'}
local bg_header = nil
-- Get head background colour
if bgcolor_head then
bg_header = Args['cabecera_bgcolor'] or '#F5F5F5'
bg_header = 'background-color:'..bg_header..';' -- Full style tag
end
if not bgcolor_head then bgcolor_head = 'background-color:#F5F5F5;' end -- Becomes default if undefined
local group_head_text = Args['cabecera_grupo'] or '<abbr title="Grupo">Grp.</abbr>'
local team_head_text = Args['cabecera_equipo'] or 'Equipo'
local rw_head_text = Args['cabecera_rg'] or '<abbr title="Rondas ganadas">RG</abbr>'
local loss_first = Args['perdido_antes_empate'] or false
-- What to rank the teams by
local ranking_style = Args['estilo_ranking'] or 'pts'
local show_points, show_perc = false
ranking_style = string.lower(ranking_style)
if ranking_style=='g' or ranking_style=='ganado' or ranking_style=='ganados' then
-- Based on wins
elseif ranking_style=='porc' or ranking_style=='porcentaje' or ranking_style=='%' then
-- Based on percentage
show_perc = true
else
-- Based on points
show_points = true
end
-- Use points instead of goals for/against
local for_against_style = Args['estilo_competicion'] or 'goles'
local fa_letter, fa_word_sing, fa_word_plur
local hide_for_against = false
-- First convert to lower case if it is a string
for_against_style = string.lower(for_against_style)
if for_against_style=='g' or for_against_style=='gol' or for_against_style=='goles' then
fa_letter = 'G'
fa_word_sing = 'Gol'
fa_word_plur = 'Goles'
elseif for_against_style=='p' or for_against_style=='punto' or for_against_style=='puntos' then
fa_letter = 'P'
fa_word_sing = 'Punto'
fa_word_plur = 'Puntos'
elseif for_against_style=='none' then
hide_for_against = true
else
fa_letter = 'G'
fa_word_sing = 'Gol'
fa_word_plur = 'Goles'
end
-- Whether to use goal ratio (goal average) instead
local use_ratio_val = Args['usar_ratio_goles'] or 'no'
local do_ratio = false
-- True if exist, false otherwise
if yesno(use_ratio_val) then do_ratio = true end
-- Whether to use goal percentage instead
local use_percentage_val = Args['usar_porcentaje_goles'] or 'no'
local do_percentage = false
-- True if exist, false otherwise
if yesno(use_percentage_val) then do_percentage = true end
-- Initialize
local tt = {}
tt.count = 0 -- Up by one after every call
tt.tab_text = t -- Actual text
-- Actual headers
tt = p_sub.colhead(tt,28,pos_label) -- Position col
-- Add group header
if full_table and group_col then
tt = p_sub.colhead(tt,28,group_head_text,bgcolor_head) -- Group col
end
tt = p_sub.colhead(tt,team_width,team_head_text..VTE_text) -- Team col
if show_points then
tt = p_sub.colhead(tt,28,'<abbr title="Puntos">Pts.</abbr>') -- Points col
tt = p_sub.colhead(tt,28,'<abbr title="Partidos jugados">PJ</abbr>') -- Matches played col
if full_table then
tt = p_sub.colhead(tt,28,'<abbr title="Ganados">G</abbr>') -- Win col
if loss_first then
tt = p_sub.colhead(tt,28,'<abbr title="Perdidos">P</abbr>') -- Loss col
tt = p_sub.colhead(tt,28,draw_head_text) -- Draw col
else
tt = p_sub.colhead(tt,28,draw_head_text) -- Draw col
tt = p_sub.colhead(tt,28,'<abbr title="Perdidos">P</abbr>') -- Loss col
end
if rounds_won then
tt = p_sub.colhead(tt,28,rw_head_text) -- Rounds won
end
if not hide_for_against then
tt = p_sub.colhead(tt,28,'<abbr title="'..fa_word_plur..' a favor">'..fa_letter..'F</abbr>') -- For col
tt = p_sub.colhead(tt,28,'<abbr title="'..fa_word_plur..' en contra">'..fa_letter..'C</abbr>') -- Against col
if do_ratio then
tt = p_sub.colhead(tt,28,'<abbr title="'..fa_word_sing..' ratio">'..fa_letter..'R</abbr>') -- Ratio col
elseif do_percentage then
tt = p_sub.colhead(tt,28,'<abbr title="'..fa_word_sing..' porcentaje">%</abbr>') -- Percentage col
else
tt = p_sub.colhead(tt,28,'<abbr title="Diferencia">Dif.</abbr>') -- Difference col
end
end
end
elseif show_perc then
tt = p_sub.colhead(tt,28,'<abbr title="Porcentaje ganados">PCT</abbr>') -- Win percentage col
end
if full_table then
tt.count = tt.count+1
table.insert(tt.tab_text,results_header_txt)
end
return tt
end
function pp.row(frame,t,Args,p_sub,notes_exist,hth_id_list,full_table,rand_val,team_list,team_code_ii,ii_start,ii_end,ii_fw,bg_col,N_teams,ii,ii_show)
-- Build the inner parts of individual rows
-- Sub-module usage
local mm = require('Module:Math')
local yesno = require('Module:Yesno')
-- Get custom/default options for in table
local win_points = tonumber(args['puntos_ganado']) or 3
local draw_points = tonumber(args['puntos_empate']) or 1
local loss_points = tonumber(args['puntos_perdido']) or 0
local rw_points = tonumber(args['puntos_rg']) or 1
-- Order of draws and losses --
local loss_first = Args['perdido_antes_empate'] or false
-- Optional rounds won
local rounds_won = yesno(Args['mostrar_rg'] or Args['rondas_ganadas'] or 'no')
-- Get some input
local wins = tonumber(Args['win_'..team_code_ii]) or tonumber(Args['ganados_'..team_code_ii]) or 0
local draws = tonumber(Args['empates_'..team_code_ii]) or tonumber(Args['draw_'..team_code_ii]) or 0
local losses = tonumber(Args['loss_'..team_code_ii]) or tonumber(Args['perdidos_'..team_code_ii]) or 0
local rw = tonumber(Args['rg_'..team_code_ii]) or 0
local gfor = tonumber(Args['gf_'..team_code_ii]) or tonumber(Args['pf_'..team_code_ii]) or 0
local gaig = tonumber(Args['ga_'..team_code_ii]) or tonumber(Args['gc_'..team_code_ii]) or tonumber(Args['pc_'..team_code_ii]) or tonumber(Args['pa_'..team_code_ii]) or 0
local s_pts = tonumber(Args['ajustar_puntos_'..team_code_ii]) or tonumber(Args['puntos_inicio_'..team_code_ii]) or tonumber(Args['adjust_points_'..team_code_ii]) or tonumber(Args['startpoints_'..team_code_ii]) or 0
local hth_local = Args['hth_'..team_code_ii] or nil
-- Then calculate some values
local matches = wins + draws + losses
local points = win_points*wins + draw_points*draws + loss_points*losses + rw_points*rw + s_pts
-- Show for/against
local for_against_style = Args['estilo_competicion'] or 'goles'
local hide_for_against = false
for_against_style = string.lower(for_against_style)
if for_against_style=='none' then
hide_for_against = true
end
-- Comparison of for against
local gcomp
-- Whether to use goal ratio (goal average) or goal percentage instead
local use_ratio_val = Args['usar_ratio_goles'] or 'no'
local use_percentage_val = Args['usar_porcentaje_goles'] or 'no'
local skip_sign
if yesno(use_ratio_val) then
-- Now it is the goal ratio/goal average
if gaig == 0 then
gcomp = '—'
else
gcomp = mm._precision_format(gfor / gaig, 3)
end
elseif yesno(use_percentage_val) then
-- Now it is the percentage
if gaig == 0 then
gcomp = '—'
else
gcomp = mm._precision_format(100 * gfor / gaig , 1)
end
else
-- It's goal difference
gcomp = gfor - gaig
-- Formatting with signs
if gcomp>0 then
gcomp='+'..gcomp
elseif gcomp < 0 then
gcomp='−'..-gcomp
end
end
-- Some local vars
local hth_string
local tt_return = p_sub.hth(frame,Args,full_table,hth_id_list,hth_local,notes_exist,team_list,team_code_ii,ii_start,ii_end,rand_val)
hth_string = tt_return.str
hth_id_list = tt_return.list
notes_exist = tt_return.notes_exist
-- What to rank the teams by
local ranking_style = Args['estilo_ranking'] or 'pts'
local rank_points, rank_perc = false
local win_fw, win_string
ranking_style = string.lower(ranking_style)
if ranking_style=='g' or ranking_style=='ganado' or ranking_style=='ganados' then
-- Based on wins
win_fw = 'font-weight: bold;'
win_string = hth_string
elseif ranking_style=='porc' or ranking_style=='porcentaje' or ranking_style=='%' then
-- Based on percentage
rank_perc = true
win_fw=ii_fw
win_string = ''
else
-- Based on points
rank_points = true
win_fw=ii_fw
win_string = ''
end
-- Row building
if rank_points then
-- Add − for negative point totals
if points<0 then
table.insert(t,'| style="font-weight: bold;'..bg_col..'" | −'..-points..hth_string..'\n')
else
table.insert(t,'| style="font-weight: bold;'..bg_col..'" | '..points..hth_string..'\n')
end
elseif rank_perc then
table.insert(t,'| style="font-weight: bold;'..bg_col..'" | '..win_perc..hth_string..'\n')
end
table.insert(t,'| style="'..ii_fw..bg_col..'" |'..matches..'\n') -- Played
if full_table then
table.insert(t,'| style="'..win_fw..bg_col..'" |'..wins..win_string..'\n') -- Won
if loss_first then
table.insert(t,'| style="'..ii_fw..bg_col..'" |'..losses..'\n') -- Lost
table.insert(t,'| style="'..ii_fw..bg_col..'" |'..draws..'\n') -- Drawn
else
table.insert(t,'| style="'..ii_fw..bg_col..'" |'..draws..'\n') -- Drawn
table.insert(t,'| style="'..ii_fw..bg_col..'" |'..losses..'\n') -- Lost
end
if rounds_won then
table.insert(t,'| style="'..ii_fw..bg_col..'" |'..rw..'\n') -- Rounds won
end
if not hide_for_against then
table.insert(t,'| style="'..ii_fw..bg_col..'" |'..gfor..'\n') -- GF
table.insert(t,'| style="'..ii_fw..bg_col..'" |'..gaig..'\n') -- GA
table.insert(t,'| style="'..ii_fw..bg_col..'" |'..gcomp..'\n') -- Goal comparison
end
end
return {t=t, notes_exist=notes_exist, hth_id_list=hth_id_list}
end
function pp.status(Args)
-- Declare status options
-- ------------------------------------------------------------
-- NOTE: If you add to status_code, also add to status_called and status_letters!!
-- Or functionality will be compromised
-- ------------------------------------------------------------
local status_code, status_called = {}
status_code = { C='Campeón', E='Eliminado', G='Ganador del play-off',
A='Ascendido', H='Anfitrión', D='Descendido',
X='?', Y='?', Z='?'}
status_called = { A=false, C=false, D=false, E=false, G=false, H=false, O=false,
X=false, Y=false, Z=false}
local status_letters = 'ACDEGHOTXYZ'
-- Status position (before or after read and default)
local stat_pos_val = Args['estado_posicion'] or ''
local status_position = 'despues' -- Default location
stat_pos_val = string.lower(stat_pos_val)
if stat_pos_val=='antes' then
status_position = 'antes'
elseif stat_pos_val=='despues' then
status_position = 'despues'
end
-- Read in custom status options
if Args['estado_texto_X'] then status_code.X = Args['estado_texto_X'] end
if Args['estado_texto_Y'] then status_code.Y = Args['estado_texto_Y'] end
if Args['estado_texto_Z'] then status_code.Z = Args['estado_texto_Z'] end
return {code=status_code, called=status_called, letters=status_letters, position=status_position}
end
return pp