Documentation[voir] [modifier] [historique] [purger]

Ce style pour le Module: Sports table basé sur Lua est destiné à construire des tableaux de groupe et de classement pour les compétitions avec un format victoire/défaite soit au bout du temps régulier, soit en prolongation (ou tirs aux buts).

Notez que ce module est largement utilisé, donc testez les changements potentiels de manière rigoureuse dans le bac à sable et assurez-vous qu'il existe un consensus avant de mettre en œuvre des changements majeurs. Le reste de cette documentation explique comment utiliser ce module avec le style WL OT dans un article ou un modèle, vérifiez la table des matières pour des éléments spécifiques.



Utilisation modifier

Utilisation Simple modifier

Dans sa version la plus simple, seuls quelques paramètres sont nécessaires pour créer le tableau. Les colonnes Différence (de buts) et Nombre de points sont calculées et créées automatiquement.

Dans un article modifier

Code: {{#invoke:Sports table|main|style=WL OT

|team1=AAA |team2=BBB |team3=CCC |team4=DDD |team5=EEE

|win_AAA=4 |loss_AAA=0 |gf_AAA=7 |ga_AAA=0
|win_BBB=3 |OTwin_BBB=1 |loss_BBB=0 |gf_BBB= 8 |ga_BBB=2
|win_CCC=2 |loss_CCC=2 |gf_CCC= 3 |ga_CCC=3
|win_DDD=0 |OTloss_DDD=1 |loss_DDD=3 |gf_DDD= 2 |ga_DDD=4
|win_EEE=0 |loss_EEE=4 |gf_EEE= 0 |ga_EEE=6

|name_AAA=NomEquipeA
|name_BBB=NomEquipeB
|name_CCC=[[Club sportif des Terreaux]]
|name_DDD=nomEQUIPE
|name_EEE={{Pays|Royaume d'Araucanie et de Patagonie}}
}}

Rendu
Rang Équipe Pts J G Vp Dp P Bp Bc Diff
1 NomEquipeA 12 4 4 0 0 0 7 0 +7
2 NomEquipeB 11 4 3 1 0 0 8 2 +6
3 Club sportif des Terreaux 6 4 2 0 0 2 3 3 0
4 nomEQUIPE 1 4 0 0 1 3 2 4 −2
5 Drapeau du royaume d'Araucanie et de Patagonie Royaume d'Araucanie et de Patagonie 0 4 0 0 0 4 0 6 −6
Mis à jour après les matchs joués, au date non spécifiée. Source : Source manquante[réf. nécessaire]

Personnalisation modifier

Index (liste) des Paramètres modifier

Paramètres généraux
Paramètre Usage Options / Exemple
Alternatives Syntaxe du code :
Gestion des dates Update
pour une compétition terminée (tableau définitif) Option: |update=complete
pour une compétition en cours (tableau à jour) Exemple: |update=1 Janvier 2018
pour une compétition future |update=future |start_date=1 Janvier 2323
Lien vers la source des données source Exemple: |source=[https://fr.wikipedia.org]
Règles d'établissement du classement,
pour affichage
class_rules Exemple: |class_rules= 1) Points; 2) Différence de buts; 3) Buts marqués; ...
gestion du nombre de points par type de résultat,
pour le calcul automatique
winpoints=
nombre de points pour une victoire (par défaut:3) |winpoints=5
|OTwinpoints=1.2
|OTlosspoints=0.3
|losspoints=-0.1
OTwinpoints= nombre de points pour une victoire après prolongation ou tirs au but (par défaut:2)
OTlosspoints= nombre de points pour une défaite après prolongation ou tirs au but (par défaut:1)
losspoints= nombre de points pour une défaite (par défaut:0)
Options d'affichage de l'en-tête postitle= nommage de la 1e colonne (par défaut: Position, abbréviation Pos.) Exemple: |postitle={{abbr|Clt.|Classement}}
group_header= nommage de la colonne des Groupes (2e colonne éventuelle).
OTwin_header= nommage de la colonne des victoires après prolongation
(par défaut: Victoire en prolongation, abbréviation Vp)
Exemple: |OTwin_header={{Abbr|VTaB|Victoire aux tirs au but}}
OTloss_header= nommage de la colonne des défaites après prolongation
(par défaut: Défaite en prolongation, abbréviation Vp)
Exemple: |OTloss_header={{Abbr|DTaB|Defaite aux tirs au but}}
Options d'affichage des données for_against_style= choix de l'unité de comptage des scores (pour, contre et différence) (par défault: buts) Option: |for_against_style=points
use_goal_ratio possibilité d'afficher un ratio pour/contre plutôt qu'une différence(par défault:no) Option: |use_goal_ratio=yes
formattage du tableau teamwidth= largeur de la colonne des équipes Exemple: |teamwidth=250
Paramètres par équipe pour chaque équipe TTT
Nom de l'équipe name_TTT=
Entrée des données win_TTT= nombre de victoires à l'issue du temps réglementaire.
OTwin_TTT= nombre de victoires après prolongations.
OTloss_TTT= nombre de défaites après prolongations.
loss_TTT= nombre de défaites à l'issue du temps réglementaire.
gf_TTT= nombre de buts/points pour.
gf_TTT= nombre de buts/points contre.
startpoints_TTT= nombre de points de l'équipe au début du championnat
bonuspoints_TTT= bonification du nombre de points de classement ou pénalité, si négatif
Paramètres de classement (jusqu'à 24 équipes)
position de chaque équipe référencée par son label |team1= |team2= |team3= ... Exemple: si l'équipe reférencée AAA est en ie position |teami=AAA
Il faut veiller à ce que tous les teami de 1 à N soient affectés.


-- Style for football tables
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 stuff
	local team_width = Args['teamwidth'] or '190'
	local sort_text = ''
	local sort_table_val = Args['sortable_table'] 	or 'no'
	if yesno(sort_table_val) then sort_text = 'sortable' end
	table.insert(t,'{|class="wikitable '..sort_text..'" style="text-align:center;"\n')            			-- Open table
	
	-- Custom header options
	local group_head_text = Args['group_header'] or '<abbr class="abbr" title="Groupe">Grp</abbr>'
	local OTwin_head_text = Args['OTwin_header'] or ' <abbr class="abbr" title="Victoire en prolongation">Vp</abbr>'
	local OTloss_head_text = Args['OTloss_header'] or '<abbr class="abbr" title="Défaite en prolongation">Dp</abbr>'
	local loss_first = Args['défaite_avant_nul'] or false
	local show_bonus_points = yesno(Args['show_bonus_points'] or 'no')
	local show_penal_points = yesno(Args['show_pénal_points'] or 'no')
	-- Use points instead of goals for/against
	local for_against_style = Args['for_against_style'] 	or 'buts'
	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=='b' or for_against_style=='but' or for_against_style=='buts' then
		fa_letter = 'B'
		fa_word_sing = 'buts'
		fa_word_plur = 'Buts'
	elseif for_against_style=='p' or for_against_style=='point' or for_against_style=='points' then
		fa_letter = 'P'
		fa_word_sing = 'points'
		fa_word_plur = 'Points'
	elseif for_against_style=='aucun' then
		hide_for_against = true
	else
		fa_letter = 'B'
		fa_word_sing = 'buts'
		fa_word_plur = 'Buts'
	end
	-- Whether to use goal ratio (goal average) instead
	local use_ratio_val = Args['use_goal_ratio'] 	or 'no'
	local do_ratio = false
	-- True if exist, false otherwise
	if yesno(use_ratio_val) then do_ratio = 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,32,pos_label)											-- Position col
	-- Add group header
	if full_table and group_col then
		tt = p_sub.colhead(tt,28,group_head_text)								-- Group col
	end
	tt = p_sub.colhead(tt,team_width,'Équipe'..VTE_text)						-- Team col
		tt = p_sub.colhead(tt,28,'<abbr class="abbr" title="Points">Pts</abbr>')				-- Points col
	tt = p_sub.colhead(tt,28,'<abbr class="abbr" title="Matchs joués">J</abbr>')				-- Matches played col
	if full_table then
		tt = p_sub.colhead(tt,28,'<abbr class="abbr" title="Matchs gagnés">G</abbr>','border-right-style:hidden;')				-- Win col
		if loss_first then
			tt = p_sub.colhead(tt,28,'<abbr class="abbr" title="Matchs perdus">P</abbr>','border-left-style:hidden;border-right-style:hidden;')				-- Loss col
			tt = p_sub.colhead(tt,28,OTwin_head_text,'border-left-style:hidden;')
			tt = p_sub.colhead(tt,28,OTloss_head_text,'border-left-style:hidden;')
		else
			tt = p_sub.colhead(tt,28,OTwin_head_text,'border-left-style:hidden;border-right-style:hidden;')
			tt = p_sub.colhead(tt,28,OTloss_head_text,'border-left-style:hidden;')
			tt = p_sub.colhead(tt,28,'<abbr class="abbr" title="Matchs perdus">P</abbr>','border-left-style:hidden;')				-- Loss col
		end
		if not hide_for_against then
			tt = p_sub.colhead(tt,28,'<abbr class="abbr" title="'..fa_word_plur..' pour">'..fa_letter..'p</abbr>','border-right-style:hidden;')		-- For col
			tt = p_sub.colhead(tt,28,'<abbr class="abbr" title="'..fa_word_plur..' contre">'..fa_letter..'c</abbr>','border-left-style:hidden;border-right-style:hidden;')	-- Against col
			if not do_ratio then
				tt = p_sub.colhead(tt,28,'<abbr class="abbr" title="Différence de '..fa_word_sing..'">Diff</abbr>','border-left-style:hidden;')	-- Difference col
			else
				tt = p_sub.colhead(tt,28,'<abbr class="abbr" title="Ratio de '..fa_word_msing..'">R'..fa_letter..'</abbr>','border-left-style:hidden;')	-- Ratio col
			end
		end
	end
	if show_bonus_points then
		tt = p_sub.colhead(tt,28,'<abbr title="Points de bonification">Bon</abbr>')			-- Bonus/Bonification points col
	end
	if show_penal_points then
		tt = p_sub.colhead(tt,28,'<abbr title="Points de pénalité">Pén</abbr>')			-- Pénalisation points 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['winpoints'])				or 3
	local OTwin_points = tonumber(Args['OTwinpoints'])			or 2
	local OTloss_points = tonumber(Args['OTlosspoints'])		or 1
	local loss_points = tonumber(Args['losspoints'])			or 0
	
	-- Order of draws and losses --
	local loss_first = Args['loss_before_draw']                 or false
 
	-- Get some input
	local wins = tonumber(Args['win_'..team_code_ii])			or 0
	local OTwins = tonumber(Args['OTwin_'..team_code_ii])		or 0
	local OTlosses = tonumber(Args['OTloss_'..team_code_ii])	or 0
	local losses = tonumber(Args['loss_'..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['pa_'..team_code_ii]) or 0
	local bonus_pts = tonumber(Args['bonuspoints_'..team_code_ii]) or 0
	local s_pts = 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 + OTwins + OTlosses + losses
	local points = win_points*wins + OTwin_points*OTwins + OTloss_points*OTlosses + loss_points*losses + s_pts +bonus_pts

	-- Show for/against
	local for_against_style = Args['style_pour_contre'] 	or 'buts'
	local hide_for_against = false
	for_against_style = string.lower(for_against_style)
	if for_against_style=='aucun' then
		hide_for_against = true
	end
	
	-- Comparison of for against
	local gcomp
	-- Whether to use goal ratio (goal average) instead
	local use_ratio_val = Args['use_goal_ratio'] 	or 'no'
	local skip_sign
	if yesno(use_ratio_val) then
		-- Now it is the goal ratio/goal average
		if gaig == 0 then
			gcomp = '&mdash;'
		else
			gcomp = mm._precision_format(gfor / gaig, 3)
		end
	else
		-- It's goal difference
		gcomp = gfor - gaig
		-- Formatting with signs
		if gcomp>0 then
			gcomp='+'..gcomp
		elseif gcomp < 0 then
			gcomp='&minus;'..-gcomp
		end
	end
	-- Show Bonif /Pénalités
	local show_bonus_points = yesno(Args['show_bonus_points'] or 'no')
	local show_penal_points = yesno(Args['show_pénal_points'] or 'no')
 
	-- 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
	
	-- Row building
		-- Add &minus; for negative point totals
	table.insert(t,'| style="font-weight: bold;'..bg_col..'" | ')
	if points<0 then
		table.insert(t,'&minus;'..-points..hth_string)
	else
		table.insert(t,points..hth_string)
	end
	table.insert(t,'\n')
	
	table.insert(t,'| style="'..ii_fw..bg_col..'" |'..matches..'\n') 		-- Played
	if full_table then
		table.insert(t,'| style="'..ii_fw..bg_col..';border-right-style:hidden;" |'..wins..'\n') 		-- Won
		
		if loss_first then
			table.insert(t,'| style="'..ii_fw..bg_col..';border-left-style:hidden;border-right-style:hidden;" |'..losses..'\n') 	-- Lost
			table.insert(t,'| style="'..ii_fw..bg_col..';border-left-style:hidden;" |'..OTwins..'\n') 		-- Won in OT
			table.insert(t,'| style="'..ii_fw..bg_col..';border-left-style:hidden;" |'..OTlosses..'\n') 	-- Lost in OT
		else
			table.insert(t,'| style="'..ii_fw..bg_col..'border-left-style:hidden;border-right-style:hidden;" |'..OTwins..'\n') 		-- Won in OT
			table.insert(t,'| style="'..ii_fw..bg_col..';border-left-style:hidden;" |'..OTlosses..'\n') 	-- Lost in OT
			table.insert(t,'| style="'..ii_fw..bg_col..'border-left-style:hidden;" |'..losses..'\n') 		-- Lost
		end
		if not hide_for_against then
			table.insert(t,'| style="'..ii_fw..bg_col..'border-right-style:hidden;" |'..gfor..'\n') 		-- GF
			table.insert(t,'| style="'..ii_fw..bg_col..'border-left-style:hidden;border-right-style:hidden;" |'..gaig..'\n')		-- GA
			table.insert(t,'| style="'..ii_fw..bg_col..'border-left-style:hidden;" |'..gcomp..'\n')      -- Goal comparison
		end
	end
	if show_bonus_points then
		if bonus_pts < 0 then
			table.insert(t,'| style="'..bg_col..'" | &minus;'..-bonus_pts..'\n')
		else
			table.insert(t,'| style="'..bg_col..'" | '..bonus_pts..'\n')
		end
	end
	if show_penal_points then
		if penal_pts < 0 then
			table.insert(t,'| style="'..bg_col..'" | &minus;'..-penal_pts..'\n')
		else
			table.insert(t,'| style="'..bg_col..'" | '..penal_pts..'\n')
		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 = {	A='Avance au prochain tour', C='Champion', D='Disqualifié', 
		E='Eliminé', H='Hôte', I='Invité', O='Vainqueur de la saison régulière', P='Promu', Q='Qualifié à la phase indiquée',
		R='Relegué', T='Qualifié, mais pas encore à la phase indiquée',
		X='?', Y='?', Z='?'}
	status_called = {	A=false, C=false, D=false, E=false, H=false, O=false, P=false,
		Q=false, R=false, T=false, X=false, Y=false, Z=false}
	local status_letters = 'ACDEHIOPQRTXYZ'
	
	-- Status position (before or after read and default)
	local stat_pos_val = Args['status_pos'] or ''
	local status_position = 'after' 	-- Default location
	stat_pos_val = string.lower(stat_pos_val)
	if stat_pos_val=='before' then
		status_position = 'before'
	elseif stat_pos_val=='after' then
		status_position = 'after'
	end
	
	-- Read in custom status options
	if Args['status_text_X'] then status_code.X = Args['status_text_X'] end
	if Args['status_text_Y'] then status_code.Y = Args['status_text_Y'] end
	if Args['status_text_Z'] then status_code.Z = Args['status_text_Z'] end
	
	return {code=status_code, called=status_called, letters=status_letters, position=status_position}
end

return pp