<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-table-csv.js</id>
	<title>MediaWiki:Gadget-table-csv.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-table-csv.js"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-table-csv.js&amp;action=history"/>
	<updated>2026-05-28T06:07:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-table-csv.js&amp;diff=927&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;$(function () { 	function cellToString(cell) { 		var $cell = $(cell).clone(); 		$cell.find(&#039;a&#039;).replaceWith(function(){ 			var $e = $(this); 			if ($e.text() === &#039;&#039;) { //the handles normal linked images 				return $e.attr(&#039;title&#039;); 			} 			return $e.text(); 		}); 		$cell.find(&#039;img&#039;).replaceWith(function(){ //any extra images without a link 			return $(this).attr(&#039;alt&#039;) 		}) 		return &#039;&quot;\&#039;&#039;+$cell.text().trim()+&#039;&quot;&#039;; 	} 	 	function sanitisePagename() { 		var pn = mw.config.g...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-table-csv.js&amp;diff=927&amp;oldid=prev"/>
		<updated>2024-10-13T01:02:52Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;$(function () { 	function cellToString(cell) { 		var $cell = $(cell).clone(); 		$cell.find(&amp;#039;a&amp;#039;).replaceWith(function(){ 			var $e = $(this); 			if ($e.text() === &amp;#039;&amp;#039;) { //the handles normal linked images 				return $e.attr(&amp;#039;title&amp;#039;); 			} 			return $e.text(); 		}); 		$cell.find(&amp;#039;img&amp;#039;).replaceWith(function(){ //any extra images without a link 			return $(this).attr(&amp;#039;alt&amp;#039;) 		}) 		return &amp;#039;&amp;quot;\&amp;#039;&amp;#039;+$cell.text().trim()+&amp;#039;&amp;quot;&amp;#039;; 	} 	 	function sanitisePagename() { 		var pn = mw.config.g...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;$(function () {&lt;br /&gt;
	function cellToString(cell) {&lt;br /&gt;
		var $cell = $(cell).clone();&lt;br /&gt;
		$cell.find(&amp;#039;a&amp;#039;).replaceWith(function(){&lt;br /&gt;
			var $e = $(this);&lt;br /&gt;
			if ($e.text() === &amp;#039;&amp;#039;) { //the handles normal linked images&lt;br /&gt;
				return $e.attr(&amp;#039;title&amp;#039;);&lt;br /&gt;
			}&lt;br /&gt;
			return $e.text();&lt;br /&gt;
		});&lt;br /&gt;
		$cell.find(&amp;#039;img&amp;#039;).replaceWith(function(){ //any extra images without a link&lt;br /&gt;
			return $(this).attr(&amp;#039;alt&amp;#039;)&lt;br /&gt;
		})&lt;br /&gt;
		return &amp;#039;&amp;quot;\&amp;#039;&amp;#039;+$cell.text().trim()+&amp;#039;&amp;quot;&amp;#039;;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function sanitisePagename() {&lt;br /&gt;
		var pn = mw.config.get(&amp;#039;wgPageName&amp;#039;);&lt;br /&gt;
		pn = pn.replaceAll(/[\/\\:?*&amp;lt;&amp;gt;&amp;quot;|]/gi, &amp;#039;-&amp;#039;);&lt;br /&gt;
		return pn;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function downloadTableCSV(event) {&lt;br /&gt;
		var $targ = $(event.currentTarget);&lt;br /&gt;
		var $table = $targ.parents(&amp;#039;table.wikitable&amp;#039;).first();&lt;br /&gt;
		var data = [];&lt;br /&gt;
		var rowspans = [];&lt;br /&gt;
		// set up rowspans array&lt;br /&gt;
		$table.find(&amp;#039;&amp;gt;tr, &amp;gt;*&amp;gt;tr&amp;#039;).first().find(&amp;#039;&amp;gt;th,&amp;gt;td&amp;#039;).each(function(i,e) {&lt;br /&gt;
			// account for colspan in headers&lt;br /&gt;
			// we are assuming all rows have the same number of columns&lt;br /&gt;
			var cspan = $(e).attr(&amp;#039;colspan&amp;#039;);&lt;br /&gt;
			cspan = parseInt(cspan)&lt;br /&gt;
			if (cspan === NaN) {&lt;br /&gt;
				cspan = 1;&lt;br /&gt;
			}&lt;br /&gt;
			for (var j=1; j&amp;lt;cspan; j++) {&lt;br /&gt;
				rowspans.push(0);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		&lt;br /&gt;
		$table.find(&amp;#039;&amp;gt;tr, &amp;gt;*&amp;gt;tr&amp;#039;).each(function(i,e){&lt;br /&gt;
			var row = [];&lt;br /&gt;
			var i_real = 0;&lt;br /&gt;
			$(e).find(&amp;#039;td,th&amp;#039;).each(function(i2,e2){&lt;br /&gt;
				while (true) {&lt;br /&gt;
					while (i_real &amp;gt;= rowspans.length) {&lt;br /&gt;
						rowspans.push(0);&lt;br /&gt;
					}&lt;br /&gt;
					if (rowspans[i_real] &amp;gt; 1) {&lt;br /&gt;
						rowspans[i_real]--;&lt;br /&gt;
						i_real++;&lt;br /&gt;
						row.push(&amp;#039;&amp;quot;&amp;quot;&amp;#039;);&lt;br /&gt;
					} else {&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				row.push(cellToString(e2));&lt;br /&gt;
			 	var cspan = $(e2).attr(&amp;#039;colspan&amp;#039;);&lt;br /&gt;
				cspan = parseInt(cspan);&lt;br /&gt;
				if (cspan !== NaN) {&lt;br /&gt;
					for (var i = 1; i &amp;lt; cspan; i++) {&lt;br /&gt;
						row.push(&amp;#039;&amp;quot;&amp;quot;&amp;#039;);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				var rspan = $(e2).attr(&amp;#039;rowspan&amp;#039;);&lt;br /&gt;
				rspan = parseInt(rspan);&lt;br /&gt;
				if (rspan === NaN) {&lt;br /&gt;
					rspan = 1;&lt;br /&gt;
				}&lt;br /&gt;
				rowspans[i_real] = rspan;&lt;br /&gt;
				i_real++;&lt;br /&gt;
			});&lt;br /&gt;
			data.push(row.join(&amp;#039;,&amp;#039;));&lt;br /&gt;
		});&lt;br /&gt;
		var b = new Blob([data.join(&amp;#039;\n&amp;#039;)], {type:&amp;#039;text/csv&amp;#039;});&lt;br /&gt;
		$table.find(&amp;#039;a.rsw-gadget-csv-download&amp;#039;).attr({&lt;br /&gt;
			href: window.URL.createObjectURL(b),&lt;br /&gt;
			download: sanitisePagename()+&amp;#039;.table&amp;#039;+$table.attr(&amp;#039;data-rsw-csv-num&amp;#039;)+&amp;#039;.csv&amp;#039;&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	 function init() {&lt;br /&gt;
		var $tables = $(&amp;#039;#mw-content-text .mw-parser-output table.wikitable:not(.infobox)&amp;#039;);&lt;br /&gt;
		if ($tables.length===0) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		$tables.each(function(i,e){&lt;br /&gt;
			$(e).attr(&amp;#039;data-rsw-csv-num&amp;#039;, i).append(&lt;br /&gt;
				$(&amp;#039;&amp;lt;caption&amp;gt;&amp;#039;).append(&lt;br /&gt;
					$(&amp;#039;&amp;lt;a&amp;gt;&amp;#039;).text(&amp;#039;Download CSV&amp;#039;).addClass(&amp;#039;rsw-gadget-csv-download&amp;#039;)&lt;br /&gt;
				).attr(&amp;#039;title&amp;#039;, &amp;#039;Download this table as a CSV&amp;#039;)&lt;br /&gt;
			);&lt;br /&gt;
		});&lt;br /&gt;
		$tables.find(&amp;#039;a.rsw-gadget-csv-download&amp;#039;).on(&amp;#039;click&amp;#039;, downloadTableCSV);&lt;br /&gt;
	}&lt;br /&gt;
	init()&lt;br /&gt;
})&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>