Module:Sports table/CricketRT

-- Style for cricket 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 '180'
    local sort_text = yesno(Args['sortable_table'] or 'no') and ' sortable' or ''
    --local show_played = not yesno(Args['hide_played'] or 'no')

	table.insert(t,'{|class="wikitable'..sort_text..'" style="text-align:center;"\n')            			-- Open table

	-- Table title
	if Args['title'] then
        table.insert(t,'|+ ' .. Args['title'] .. '\n')
	end

    --Header specific options
	local team_head_text = Args['team_header'] or 'Team'
    local tie_head_text = Args['tie_header'] or '<abbr title="Tied">T</abbr>'
    local draw_head_text = Args['draw_header'] or '<abbr title="Drawn">D</abbr>'
    local nr_head_text = Args['nr_header'] or '<abbr title="No result">NR</abbr>'
    local bonus_head_text = Args['bonus_header'] or '<abbr title="Bonus Points">BP</abbr>'
    local quot_head_text = Args['quot_header'] or '<abbr title="Runs Per Wicket Ratio">[[Runs Per Wicket Ratio|Quot]]</abbr>'
    -- 
    local loss_first = yesno(Args['loss_before_tie']  or 'yes')
    local show_nr = yesno(Args['show_nr'] or 'yes')
    local show_bonus = yesno(Args['show_bonus'] or 'yes')
   local show_quot = yesno(Args['show_quot'] or 'yes')

    -- What to rank the teams by
    --local ranking_style = Args['ranking_style'] or 'pts'

    -- Initialize
    local tt = {}
	tt.count = 0 		-- Up by one after every call

    tt.tab_text = t		-- Actual text

	-- Actual headers
    if pos_label ~= nil then
        tt = p_sub.colhead(tt,28,pos_label)								-- Position col
    end

    tt = p_sub.colhead(tt, team_width, team_head_text..VTE_text)        -- Team col

    tt = p_sub.colhead(tt,32,'<abbr title="Played">Pld</abbr>')			-- Matches played col
	
	if full_table then

        tt = p_sub.colhead(tt,32,'<abbr title="Won">W</abbr>')			-- Win col
		
        if loss_first then
            tt = p_sub.colhead(tt,32,'<abbr title="Lost">L</abbr>')		-- Loss col
            tt = p_sub.colhead(tt,32,tie_head_text)					    -- Tie col
            tt = p_sub.colhead(tt,32,draw_head_text)					-- Draw col
		else
            tt = p_sub.colhead(tt,32,tie_head_text)					    -- Tie col
            tt = p_sub.colhead(tt,32,draw_head_text)					-- Draw col            
            tt = p_sub.colhead(tt,32, '<abbr title="Lost">L</abbr>')   -- Loss col
        end
        if show_nr then
            tt = p_sub.colhead(tt,32,nr_head_text)	                    --No result col
        end
        if show_bonus then
            tt = p_sub.colhead(tt,32,bonus_head_text)
--Bonus Points col
       end
 end

    tt = p_sub.colhead(tt, 32, '<abbr title="Points">Pts</abbr>')       -- Points col
	
	if full_table then
    if show_quot then
            tt = p_sub.colhead(tt,28,quot_head_text)	                    -- Quot col
    end
        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 16
  	local tie_points = tonumber(Args['tiepoints'])            or 8
    local draw_points = tonumber(Args['drawpoints'])          or 5
	local nr_points = tonumber(Args['nrpoints'])          or 5
    local bonus_points = tonumber(Args['bonuspoints'])          or 5
	local loss_points = tonumber(Args['losspoints'])          or 0


    -- table options, to match those in the header        
    local loss_first = yesno(Args['loss_before_tie']  or 'yes')
    local show_tie = yesno(Args['show_tie'] or 'yes')
    local show_nr = yesno(Args['show_nr'] or 'yes')
    local show_bonus = yesno(Args['show_bonus'] or 'yes')
    local show_quot = yesno(Args['show_quot'] or 'yes')
    -- Get some input
    local wins = tonumber(Args['win_'..team_code_ii])       or 0
	local ties = tonumber(Args['tie_'..team_code_ii])       or 0
	local draws = tonumber(Args['draw_'..team_code_ii])      or 0
 	local losses = tonumber(Args['loss_'..team_code_ii])    or 0
	local noresults = tonumber(Args['nr_'..team_code_ii])  or 0
    local bonuspoints = tonumber(Args['bonus_'..team_code_ii])  or 0
    local quot = tonumber(Args['quot_'..team_code_ii])  or 0

	local hth_local = Args['hth_'..team_code_ii]               or nil  --?
	
	-- Then calculate some values
    local matches = wins + losses + draws + ties + noresults 

    local points = win_points*wins + loss_points*losses + tie_points*ties + draw_points*draws + nr_points*noresults + bonuspoints
    
    -- 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 'pts'
	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

-- Set Quotient.
    if quot ~= nil then
        quot = mm._precision_format(quot, 3)
    elseif (quot==0) then
       quot = '&mdash;'
    else
        quot = mm._precision_format(quot, 3)
    end
	
	-- Row building
    table.insert(t,'| style="'..ii_fw..bg_col..'" |'..matches..'\n') 		-- Played

	if full_table then
		-- Use actual values if wins, ties, and losses are not numeric
		if (wins == 0 and ties == 0 and losses == 0 and draws ==0 and noresults == 0) then
            local function numorval(s)
				return s and((s == '' and 0) or tonumber(s) or s) or 0
			end
            wins = numorval(Args['win_'..team_code_ii])
            ties = numorval(Args['tie_'..team_code_ii])
            losses = numorval(Args['loss_'..team_code_ii])
            draws = numorval(Args['draw_'..team_code_ii])
            noresults = numorval(Args['nr_'..team_code_ii])
        end
        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..'" |'..ties..'\n') 	        -- Ties
            table.insert(t,'| style="'..ii_fw..bg_col..'" |'..draws..'\n') 	        -- draws
        else
            table.insert(t,'| style="'..ii_fw..bg_col..'" |'..ties..'\n') 	        -- Ties
            table.insert(t,'| style="'..ii_fw..bg_col..'" |'..draws..'\n') 	        -- draws
            table.insert(t,'| style="'..ii_fw..bg_col..'" |'..losses..'\n')         -- Lost
        end
        if show_nr then
            table.insert(t,'| style="'..ii_fw..bg_col..'" |'.. noresults..'\n')         -- Noresults
        end
       if show_bonus then
            table.insert(t,'| style="'..ii_fw..bg_col..'" |'.. bonuspoints..'\n')       
  -- Bonus Points
        end
	end
	if points<0 then
        table.insert(t,'| style="'..pts_fw..bg_col..'" | &minus;'..-points..pts_string..'\n')
	else
		table.insert(t,'| style="'..pts_fw..bg_col..'" | '..points..pts_string..'\n')

if full_table then
        if show_quot then
            table.insert(t,'| style="'..ii_fw..bg_col..'" |'..quot..'\n')  --Runs Per Wicket Ratio
       end
	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', G='Guest', H='Host', O='Play-off winner', P='Promoted', Q='Qualified for the phase indicated',
		R='Relegated', T='Qualified, but not yet for 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
	
	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.

  1. 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:
  2. 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.
  3. 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.
  4. 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.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.