Jump to content

User:Alex 21/script-seriesoverview.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Alex 21 (talk | contribs) at 11:56, 3 March 2016 (Create). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
$(function($) {
	var portletlink = mw.util.addPortletLink('p-tb', '#', 'Series overview');
	$(portletlink).click( function(e) {
		e.preventDefault();
		var overview = document.getElementById('seriesoverview');
		if (overview === null) overview = document.getElementById('mw-content-text').getElementsByTagName('table')[0];

		var overview_template = ("{{Series overview\n"); var uk = 0; var i;

		var head = overview.rows[0].cells.length-3;
		var info = overview.rows[1].cells.length-2;
		if (head > 0) overview_template += ("| infoheader = "+overview.rows[0].cells[3].innerHTML+"\n");
		if (info > 0) {
			var letters = "ABCDE";
			for (i = 0; i < info; i++) overview_template += ("| info"+letters[i]+"      = "+overview.rows[1].cells[i+2].innerHTML+"\n");
		}
		if (head||info) overview_template += ("\n");

		for (i = 2; i < overview.rows.length; i++) {
			var R = overview.rows[i];
			var RC = R.cells;
			var startdate,enddate;
			
			var seasonLink = (RC[1].firstChild.href !== undefined ? RC[1].firstChild : RC[1].firstChild.firstChild);
			var link;
			if (!seasonLink) link = '';
			else link = decodeURIComponent(seasonLink.href.substr(seasonLink.href.lastIndexOf('/')+1).split('_').join(' ').split('.').join('%')).split('#');
			
			overview_template += ("| color"+(i-1)+"     = "+(RC[0].bgColor?RC[0].bgColor:toHex(RC[0].style.background?RC[0].style.background:RC[0].style.backgroundColor))+"\n");
			overview_template += ("| link"+(i-1)+"      = <includeonly>"+link[0]+"</includeonly>"+(link[1]?"#"+link[1]:"")+"\n");
			if (RC[2].innerHTML.toLowerCase().indexOf("tba") < 0) overview_template += ("| episodes"+(i-1)+"  = "+RC[2].innerHTML.replace(/<sup(.*)\/sup\>/g,'')+"\n");
			
			var reS = /([A-Za-z]*)\s*(\d{1,2}),\s*(\d{4})/.exec((RC[3].innerHTML.indexOf('<')>=0 ? RC[3].innerHTML.substr(0, RC[3].innerHTML.indexOf('<')) : RC[3].innerHTML).split('&nbsp;').join(' '));
				if (!reS) {
				reS = /(\d{1,2})\s*(.*)\s*(\d{4})/.exec((RC[3].innerHTML.indexOf('<')>=0 ? RC[3].innerHTML.substr(0, RC[3].innerHTML.indexOf('<')) : RC[3].innerHTML).split('&nbsp;').join(' '));
				if (reS) {temp = reS[1]; reS[1] = reS[2]; reS[2] = temp; uk = 1; }
			}
			if (reS) startdate = "{{Start date|"+reS[3]+"|"+(new Date(Date.parse(reS[1]+" 1, 2005")).getMonth()+1)+"|"+reS[2]+(uk?"|df=y":"")+"}}";
			
			var reE = /(.*)\s*(\d{1,2}),\s*(\d{4})/.exec((RC[4].innerHTML.indexOf('<')>=0 ? RC[4].innerHTML.substr(0, RC[4].innerHTML.indexOf('<')) : RC[4].innerHTML).split('&nbsp;').join(' '));
			if (!reE) {
				reE = /(\d{1,2})\s*(.*)\s*(\d{4})/.exec((RC[4].innerHTML.indexOf('<')>=0 ? RC[4].innerHTML.substr(0, RC[4].innerHTML.indexOf('<')) : RC[4].innerHTML).split('&nbsp;').join(' '));
				if (reE) {temp = reE[1]; reE[1] = reE[2]; reE[2] = temp; uk = 1; }
			}
			if (reE)  enddate = "{{End date|"+reE[3]+"|"+(new Date(Date.parse(reE[1]+" 1, 2005")).getMonth()+1)+"|"+reE[2]+(uk?"|df=y":"")+"}}";
			
			if (reS) overview_template += ("| start"+(i-1)+"     = "+startdate+"\n");
			if (reE) overview_template += ("| end"+(i-1)+"       = "+enddate+"\n");
			
			if (RC[5]) overview_template += ("| info"+(i-1)+"A     = "+RC[5].innerHTML.replace(/<sup(.*)\/sup\>/g,'')+"\n");
			if (RC[6]) overview_template += ("| info"+(i-1)+"B     = "+RC[6].innerHTML.replace(/<sup(.*)\/sup\>/g,'')+"\n");
			if (RC[7]) overview_template += ("| info"+(i-1)+"C     = "+RC[7].innerHTML.replace(/<sup(.*)\/sup\>/g,'')+"\n");
			if (RC[8]) overview_template += ("| info"+(i-1)+"D     = "+RC[8].innerHTML.replace(/<sup(.*)\/sup\>/g,'')+"\n");
			if (RC[9]) overview_template += ("| info"+(i-1)+"E     = "+RC[9].innerHTML.replace(/<sup(.*)\/sup\>/g,'')+"\n");
			
			if (i < overview.rows.length-1) overview_template += ("\n");
		}
		if (uk) overview_template += ("\n| uk	 = y\n");
		overview_template += ("}}");

		var textArea = document.createElement("textarea");
		textArea.innerHTML = overview_template;
		document.body.appendChild(textArea);
		textArea.select();
		document.execCommand('copy');
		document.body.removeChild(textArea);
		alert("Copied!");
		window.location = window.location.href.substr(0, window.location.href.indexOf('#'))+"?action=edit";

		function toHex(rgb) {
			rgb = rgb.split(',');
			rgb.r=parseInt(rgb[0].substring(4)).toString(16);
			rgb.g=parseInt(rgb[1]).toString(16);
			rgb.b=parseInt(rgb[2]).toString(16);
			var hex="#"+(rgb.r.length==1?'0':'')+rgb.r+(rgb.g.length==1?'0':'')+rgb.g+(rgb.b.length==1?'0':'')+rgb.b;
			return hex.toUpperCase();
		}
	});
});