<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://goodoldtv.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AEpisode_table</id>
	<title>Module:Episode table - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://goodoldtv.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AEpisode_table"/>
	<link rel="alternate" type="text/html" href="http://goodoldtv.com/index.php?title=Module:Episode_table&amp;action=history"/>
	<updated>2026-05-02T07:09:18Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>http://goodoldtv.com/index.php?title=Module:Episode_table&amp;diff=1494&amp;oldid=prev</id>
		<title>Adminpeter: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://goodoldtv.com/index.php?title=Module:Episode_table&amp;diff=1494&amp;oldid=prev"/>
		<updated>2017-03-08T08:49:23Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{Episode table}} and {{Episode table/part}}.&lt;br /&gt;
&lt;br /&gt;
local HTMLcolor = mw.loadData( &amp;#039;Module:Color contrast/colors&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- EpisodeTable class&lt;br /&gt;
-- The main class.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local contrast_ratio = require(&amp;#039;Module:Color contrast&amp;#039;)._ratio&lt;br /&gt;
local EpisodeTable = {}&lt;br /&gt;
&lt;br /&gt;
function EpisodeTable.cell(background, width, text, reference)&lt;br /&gt;
	local cell = mw.html.create(&amp;#039;th&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- Cell&lt;br /&gt;
	cell:attr(&amp;#039;scope&amp;#039;,&amp;#039;col&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;background&amp;#039;,background or &amp;#039;#CCCCFF&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;width&amp;#039;,width ~= &amp;#039;&amp;#039; and width .. &amp;#039;%&amp;#039; or nil)&lt;br /&gt;
		:wikitext(text)&lt;br /&gt;
	&lt;br /&gt;
	-- Reference&lt;br /&gt;
	if reference then&lt;br /&gt;
		cell:wikitext(&amp;quot;&amp;amp;#8202;&amp;quot; .. EpisodeTable.reference(reference, background))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return cell&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function EpisodeTable.reference(reference, background)&lt;br /&gt;
	local link1_cr = contrast_ratio{&amp;#039;#0645AD&amp;#039;, background or &amp;#039;#CCCCFF&amp;#039;, [&amp;#039;error&amp;#039;] = 0}&lt;br /&gt;
	local link2_cr = contrast_ratio{&amp;#039;#0B0080&amp;#039;, background or &amp;#039;#CCCCFF&amp;#039;, [&amp;#039;error&amp;#039;] = 0}&lt;br /&gt;
	&lt;br /&gt;
	local refspan = mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
		:wikitext(reference)&lt;br /&gt;
	&lt;br /&gt;
	if link1_cr &amp;lt; 7 or link2_cr &amp;lt; 7 then&lt;br /&gt;
		refspan&lt;br /&gt;
			:css(&amp;#039;background-color&amp;#039;,&amp;#039;white&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;padding&amp;#039;,&amp;#039;1px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;display&amp;#039;,&amp;#039;inline-block&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;line-height&amp;#039;,&amp;#039;50%&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return tostring(refspan)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function EpisodeTable.abbr(text,title)&lt;br /&gt;
	local abbr = mw.html.create(&amp;#039;abbr&amp;#039;)&lt;br /&gt;
		:attr(&amp;#039;title&amp;#039;,title)&lt;br /&gt;
		:wikitext(text)&lt;br /&gt;
	return tostring(abbr)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function EpisodeTable.part(frame,args)&lt;br /&gt;
	local row = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	local black_cr = contrast_ratio{args.c, &amp;#039;black&amp;#039;, [&amp;#039;error&amp;#039;] = 0}&lt;br /&gt;
	local white_cr = contrast_ratio{&amp;#039;white&amp;#039;, args.c, [&amp;#039;error&amp;#039;] = 0}&lt;br /&gt;
	&lt;br /&gt;
	local displaytext = (not args.nopart and &amp;#039;Part &amp;#039; or &amp;#039;&amp;#039;) .. (args.p or &amp;#039;&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	row:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
		:attr(&amp;#039;colspan&amp;#039;,13)&lt;br /&gt;
		:css(&amp;#039;text-align&amp;#039;,&amp;#039;center&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;background-color&amp;#039;, args.c)&lt;br /&gt;
		:css(&amp;#039;color&amp;#039;, black_cr &amp;gt; white_cr and &amp;#039;black&amp;#039; or &amp;#039;white&amp;#039;)&lt;br /&gt;
		:wikitext(&amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. frame:expandTemplate({title=&amp;#039;Visible anchor&amp;#039;,args={displaytext}}) .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. (args.r or &amp;#039;&amp;#039;))&lt;br /&gt;
	&lt;br /&gt;
	return tostring(row)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function EpisodeTable.new(args)&lt;br /&gt;
	args = args or {}&lt;br /&gt;
	local categories = &amp;#039;&amp;#039;&lt;br /&gt;
	local background = (args.background and args.background ~= &amp;#039;&amp;#039; and args.background ~= &amp;#039;#&amp;#039;) and args.background or nil&lt;br /&gt;
	&lt;br /&gt;
	-- Add # to background if necessary&lt;br /&gt;
	if background ~= nil and HTMLcolor[background] == nil then&lt;br /&gt;
		background = &amp;#039;#&amp;#039;..(mw.ustring.match(background, &amp;#039;^[%s#]*([a-fA-F0-9]*)[%s]*$&amp;#039;) or &amp;#039;&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Create episode table&lt;br /&gt;
	local root = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	root&lt;br /&gt;
		:addClass(&amp;#039;wikitable&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;plainrowheaders&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;wikiepisodetable&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;width&amp;#039;, args.total_width and string.gsub(args.total_width,&amp;#039;%%&amp;#039;,&amp;#039;&amp;#039;) .. &amp;#039;%&amp;#039; or &amp;#039;100%&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- Caption&lt;br /&gt;
	if args.caption then&lt;br /&gt;
		root:tag(&amp;#039;caption&amp;#039;):wikitext(args.caption)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Colour contrast; add to category only if it&amp;#039;s in the mainspace&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
	local black_cr = contrast_ratio{background, &amp;#039;black&amp;#039;, [&amp;#039;error&amp;#039;] = 0}&lt;br /&gt;
	local white_cr = contrast_ratio{&amp;#039;white&amp;#039;, background, [&amp;#039;error&amp;#039;] = 0}&lt;br /&gt;
	&lt;br /&gt;
	if title.namespace == 0 and (args.background and args.background ~= &amp;#039;&amp;#039; and args.background ~= &amp;#039;#&amp;#039;) and black_cr &amp;lt; 7 and white_cr &amp;lt; 7 then&lt;br /&gt;
		categories = categories .. &amp;#039;[[Category:Articles using Template:Episode table with invalid colour combination]]&amp;#039; &lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Main row&lt;br /&gt;
	local mainRow = root:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	mainRow&lt;br /&gt;
		:css(&amp;#039;color&amp;#039;, background and (black_cr &amp;gt; white_cr and &amp;#039;black&amp;#039; or &amp;#039;white&amp;#039;) or &amp;#039;black&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- Cells&lt;br /&gt;
	do&lt;br /&gt;
		local used_season = false&lt;br /&gt;
		local country = args.country ~= &amp;#039;&amp;#039; and args.country ~= nil&lt;br /&gt;
		local viewers = (country and args.country or &amp;#039;&amp;#039;) .. &amp;#039; &amp;#039; .. (country and &amp;#039;v&amp;#039; or &amp;#039;V&amp;#039;) .. &amp;#039;iewers&amp;#039; ..&lt;br /&gt;
			((not args.viewers_type or args.viewers_type ~= &amp;#039;&amp;#039;) and &amp;#039;&amp;lt;br /&amp;gt;(&amp;#039; .. (args.viewers_type or &amp;#039;millions&amp;#039;) .. &amp;#039;)&amp;#039; or &amp;#039;&amp;#039;)&lt;br /&gt;
		&lt;br /&gt;
		local cellNames = {&lt;br /&gt;
			{&amp;#039;overall&amp;#039;,&amp;#039;EpisodeNumber&amp;#039;,EpisodeTable.abbr(&amp;#039;No.&amp;#039;,&amp;#039;Number&amp;#039;) ..&lt;br /&gt;
				((args.season or args.series or args.EpisodeNumber2 or args.EpisodeNumber2Series or args.forceoverall) and &amp;#039;&amp;lt;br /&amp;gt;overall&amp;#039; or &amp;#039;&amp;#039;)},&lt;br /&gt;
			{&amp;#039;season&amp;#039;,&amp;#039;EpisodeNumber2&amp;#039;,EpisodeTable.abbr(&amp;#039;No.&amp;#039;,&amp;#039;Number&amp;#039;) .. &amp;#039; in&amp;lt;br /&amp;gt;season&amp;#039;},&lt;br /&gt;
			{&amp;#039;series&amp;#039;,&amp;#039;EpisodeNumber2Series&amp;#039;,EpisodeTable.abbr(&amp;#039;No.&amp;#039;,&amp;#039;Number&amp;#039;) .. &amp;#039; in&amp;lt;br /&amp;gt;series&amp;#039;},&lt;br /&gt;
			{&amp;#039;title&amp;#039;,&amp;#039;Title&amp;#039;,&amp;#039;Title&amp;#039;},&lt;br /&gt;
			{&amp;#039;aux1&amp;#039;,&amp;#039;Aux1&amp;#039;,&amp;#039;&amp;#039;},&lt;br /&gt;
			{&amp;#039;director&amp;#039;,&amp;#039;DirectedBy&amp;#039;,&amp;#039;Directed by&amp;#039;},&lt;br /&gt;
			{&amp;#039;writer&amp;#039;,&amp;#039;WrittenBy&amp;#039;,&amp;#039;Written by&amp;#039;},&lt;br /&gt;
			{&amp;#039;aux2&amp;#039;,&amp;#039;Aux2&amp;#039;,&amp;#039;&amp;#039;},&lt;br /&gt;
			{&amp;#039;aux3&amp;#039;,&amp;#039;Aux3&amp;#039;,&amp;#039;&amp;#039;},&lt;br /&gt;
			{&amp;#039;airdate&amp;#039;,&amp;#039;OriginalAirDate&amp;#039;,&amp;#039;Original &amp;#039; .. (args.released and &amp;#039;release&amp;#039; or &amp;#039;air&amp;#039;) .. &amp;#039; date&amp;#039;},&lt;br /&gt;
			{&amp;#039;altdate&amp;#039;,&amp;#039;AltDate&amp;#039;,&amp;#039;&amp;#039;},&lt;br /&gt;
			{&amp;#039;prodcode&amp;#039;,&amp;#039;ProdCode&amp;#039;,EpisodeTable.abbr(&amp;#039;Prod.&amp;#039;,&amp;#039;Production&amp;#039;) .. &amp;#039;&amp;lt;br /&amp;gt;code&amp;#039;},&lt;br /&gt;
			{&amp;#039;viewers&amp;#039;,&amp;#039;Viewers&amp;#039;,viewers},&lt;br /&gt;
			{&amp;#039;aux4&amp;#039;,&amp;#039;Aux4&amp;#039;,&amp;#039;&amp;#039;}&lt;br /&gt;
		}&lt;br /&gt;
	&lt;br /&gt;
		for k,v in pairs(cellNames) do&lt;br /&gt;
			local thisCell = args[v[1]] or args[v[2]]&lt;br /&gt;
			if thisCell and (v[1] ~= &amp;#039;series&amp;#039; or (v[1] == &amp;#039;series&amp;#039; and used_season == false)) then&lt;br /&gt;
				if v[1] == &amp;#039;season&amp;#039; then used_season = true end&lt;br /&gt;
				if (k &amp;lt;= 3 and thisCell == &amp;#039;&amp;#039;) then thisCell = &amp;#039;5&amp;#039; end&lt;br /&gt;
				&lt;br /&gt;
				local thisCellT = args[v[1] .. &amp;#039;T&amp;#039;] or args[v[2] .. &amp;#039;T&amp;#039;]&lt;br /&gt;
				local thisCellR = args[v[1] .. &amp;#039;R&amp;#039;] or args[v[2] .. &amp;#039;R&amp;#039;]&lt;br /&gt;
				mainRow:node(EpisodeTable.cell(background, thisCell, thisCellT or v[3], thisCellR))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		-- Episodes&lt;br /&gt;
		root:node(args.episodes)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return tostring(root) .. categories&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Exports&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
		removeBlanks = false,&lt;br /&gt;
		wrappers = &amp;#039;Template:Episode table&amp;#039;&lt;br /&gt;
	})&lt;br /&gt;
	return EpisodeTable.new(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.part(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
		removeBlanks = false,&lt;br /&gt;
		wrappers = &amp;#039;Template:Episode table/part&amp;#039;&lt;br /&gt;
	})&lt;br /&gt;
	return EpisodeTable.part(frame,args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.ref(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
		removeBlanks = false,&lt;br /&gt;
	})&lt;br /&gt;
	return EpisodeTable.reference(args.r,args.b)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Adminpeter</name></author>
	</entry>
</feed>