Module:Sports table/Fencing
Documentation for this module may be created at Module:Sports table/Fencing/doc
Documentation for this module may be created at Module:Sports table/Fencing/doc
-- Style for fencing 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 '170'
local sort_text = yesno(Args['sortable_table'] or 'no') and 'sortable' or ''
local show_played = yesno(Args['show_played'] or 'no') and true or false
local show_touches = yesno(Args['show_touches'] or 'yes')
local show_bouts = yesno(Args['show_bouts'] or 'no')
local show_points = yesno(Args['show_points'] or 'no')
-- Custom header
local group_head_text = Args['group_header'] or '<abbr title="Group">Grp</abbr>'
table.insert(t,'{|class="wikitable '..sort_text..'" style="text-align:center;"\n') -- Open table
-- 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) -- Group col
end
tt = p_sub.colhead(tt,team_width,(Args['team_header'] or 'Team')..VTE_text) -- Team col
if show_played then
tt = p_sub.colhead(tt,28,'<abbr title="Matches">M</abbr>') -- Matches played col
end
if full_table then
tt = p_sub.colhead(tt,28,'<abbr title="Won">W</abbr>') -- Win col
tt = p_sub.colhead(tt,28,'<abbr title="Lost">L</abbr>') -- Loss col
end
if show_points then
tt = p_sub.colhead(tt,28,'<abbr title="Points">Pts</abbr>') -- Points col
end
if full_table then
if show_touches then
tt = p_sub.colhead(tt,32,'<abbr title="Touches for">TF</abbr>') -- Touches
tt = p_sub.colhead(tt,32,'<abbr title="Touches against">TA</abbr>') -- Touched
end
if show_bouts then
tt = p_sub.colhead(tt,28,'<abbr title="Bouts won">BW</abbr>') -- Bouts won col
tt = p_sub.colhead(tt,28,'<abbr title="Bouts lost">BL</abbr>') -- Bouts lost 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 2
local loss_points = tonumber(Args['losspoints']) or 0
-- Get some input
local wins = tonumber(Args['win_'..team_code_ii]) or 0
local losses = tonumber(Args['loss_'..team_code_ii]) or 0
local tf = tonumber(Args['tf_'..team_code_ii]) or 0
local ta = tonumber(Args['ta_'..team_code_ii]) or 0
local bw = tonumber(Args['bw_'..team_code_ii]) or 0
local bl = tonumber(Args['bl_'..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 + losses
local points = win_points*wins + loss_points*losses + s_pts
-- 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['ranking_style'] or 'wins'
local win_fw, win_string, pts_fw, pts_string
ranking_style = string.lower(ranking_style)
if ranking_style=='p' or ranking_style=='pts' or ranking_style=='points' then
-- Based on points
win_fw=ii_fw
win_string = ''
pts_fw = 'font-weight: bold;'
pts_string = hth_string
else
-- Based on wins
win_fw = 'font-weight: bold;'
win_string = hth_string
pts_fw=ii_fw
pts_string = ''
end
-- Show maches, touches, bouts, and points
local show_played = yesno(Args['show_played'] or 'no') and true or false
local show_touches = yesno(Args['show_touches'] or 'yes')
local show_bouts = yesno(Args['show_bouts'] or 'no')
local show_points = yesno(Args['show_points'] or 'no')
-- Now that we are done calculating, show actual input values
if tonumber(Args['win_'..team_code_ii] or 0) == nil then
wins = Args['win_'..team_code_ii]
end
if tonumber(Args['loss_'..team_code_ii] or 0) == nil then
losses = Args['loss_'..team_code_ii]
end
local function numorval(s)
return s and ((s == '' and 0) or tonumber(s) or s) or 0
end
tf = numorval(Args['tf_'..team_code_ii])
ta = numorval(Args['ta_'..team_code_ii])
bw = numorval(Args['bw_'..team_code_ii])
bl = numorval(Args['bl_'..team_code_ii])
-- Row building
if show_played then
table.insert(t,'| style="'..ii_fw..bg_col..'" |'..matches..'\n') -- Played
end
if full_table then
table.insert(t,'| style="'..win_fw..bg_col..'" |'..wins..win_string..'\n') -- Won
table.insert(t,'| style="'..ii_fw..bg_col..'" |'..losses..'\n') -- Lost
end
if show_points then
if points<0 then
table.insert(t,'| style="'..pts_fw..bg_col..'" | −'..-points..pts_string..'\n')
else
table.insert(t,'| style="'..pts_fw..bg_col..'" | '..points..pts_string..'\n')
end
end
if full_table then
if show_touches then
table.insert(t,'| style="'..ii_fw..bg_col..'" |'..tf..'\n') -- Touches
table.insert(t,'| style="'..ii_fw..bg_col..'" |'..ta..'\n') -- Touched
end
if show_bouts then
table.insert(t,'| style="'..ii_fw..bg_col..'" |'..bw..'\n') -- Bouts won
table.insert(t,'| style="'..ii_fw..bg_col..'" |'..bl..'\n') -- Bouts lost
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='Advances to a further round', C='Champion', D='Disqualified',
E='Eliminated', H='Host', O='Play-off winner', P='Promoted', Q='Qualified to the phase indicated',
R='Relegated', T='Qualified, but not yet to the particular phase indicated'}
local status_letters = (Args['status_order'] or '') .. 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-- Status position (before or after read and default)
local stat_pos_val = string.lower(Args['status_pos'] or '')
local status_position = 'after' -- Default location
if stat_pos_val=='before' then
status_position = 'before'
elseif stat_pos_val=='after' then
status_position = 'after'
end
-- Read in custom status options
for l in mw.text.gsplit(status_letters, '') do
status_called[l] = false
status_code[l] = status_code[l] or '?'
status_letters = mw.ustring.gsub(status_letters, '(' .. l ..'.-)' .. l, '%1')
if Args['status_text_' .. l] then
status_code[l] = Args['status_text_' .. l]
end
end
return {code=status_code, called=status_called, letters=status_letters, position=status_position}
end
return pp
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.