Aller au contenu

Module:Sports table/WL OT

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 1 mai 2020 à 17:56 et modifiée en dernier par FrenchPower (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 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

Utilisation Simple

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

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 MJ Pts V Vp Dp D BP BC BD
1 NomEquipeA 4 4 0 0 0 7 0 +7 12
2 NomEquipeB 4 3 1 0 0 8 2 +6 11
3 Club sportif des Terreaux 4 2 0 0 2 3 3 0 6
4 nomEQUIPE 4 0 0 1 3 2 4 −2 1
5 Drapeau du royaume d'Araucanie et de Patagonie Royaume d'Araucanie et de Patagonie 4 0 0 0 4 0 6 −6 0
Mis à jour après les matchs joués, au date non spécifiée. Source : Source manquante[réf. nécessaire]

Personnalisation

Index (liste) des Paramètres

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>'
	-- 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
	-- 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'
	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,32,'<abbr class="abbr" title="Matchs joués">MJ</abbr>')					-- Matches played col
	if full_table then
		tt = p_sub.colhead(tt,32,'<abbr class="abbr" title="Points">Pts</abbr>')					-- Points col
		tt = p_sub.colhead(tt,32,'<abbr class="abbr" title="Victoire">V</abbr>')					-- Win col
		tt = p_sub.colhead(tt,32,OTwin_head_text)
		tt = p_sub.colhead(tt,32,OTloss_head_text)
		tt = p_sub.colhead(tt,32,'<abbr class="abbr" title="Défaite">D</abbr>')					-- Loss col
		tt = p_sub.colhead(tt,32,'<abbr class="abbr" title="'..fa_word_plur..' pour">'..fa_letter..'P</abbr>')		-- For col
		tt = p_sub.colhead(tt,32,'<abbr class="abbr" title="'..fa_word_plur..' contre">'..fa_letter..'C</abbr>')	-- Against col
		if not do_ratio then
			tt = p_sub.colhead(tt,32,'<abbr class="abbr" title=" Différence de'..fa_word_sing..'">'..fa_letter..'D</abbr>')	-- Difference col
		else
			tt = p_sub.colhead(tt,36,'<abbr class="abbr" title="ratio de'..fa_word_sing..'">'..fa_letter..'R</abbr>')	-- Ratio col
		end
	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
 
	-- 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
	
	-- 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
 
	-- 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
	table.insert(t,'| style="'..ii_fw..bg_col..'" |'..matches..'\n') 		-- Played
	if full_table then
		table.insert(t,'| style="'..ii_fw..bg_col..'" |'..wins..'\n') 		-- Won
		table.insert(t,'| style="'..ii_fw..bg_col..'" |'..OTwins..'\n') 	-- Won in OT
		table.insert(t,'| style="'..ii_fw..bg_col..'" |'..OTlosses..'\n') 	-- Lost in OT
		table.insert(t,'| style="'..ii_fw..bg_col..'" |'..losses..'\n') 	-- Lost
		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
	-- 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')
 
	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', 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 = 'ACDEHOPQRTXYZ'
	
	-- 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