מדיה ויקי:סקריפטים/73.js

מתוך אקו-ויקי, מקום מפגש בנושאי אקולוגיה, חברה וכלכלה.
קפיצה לניווט קפיצה לחיפוש

הערה: לאחר השמירה, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload), או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר: להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh), או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: לפתוח תפריט ← הגדרות (במחשב מק: Opera ← העדפות) ואז ללחוץ על פרטיות ואבטחה ← מחק היסטוריית גלישה ← Cached images and files.
//original code by [[:en:User:Writ Keeper]], modified by [[:he:User:קיפודנחש]]
"use strict";
$( function()
{
	function convertTable( table )
	{
		var str = 
			$( "tr", table ).map( function( index, row ) {
				return ( $( "th,td", row )
					.map( function( index, cell ) {
						var clone = $( cell ).clone();
						clone.find( '*' ).filter( function() { return $( this ).css( 'display' ) == 'none'; } ).remove();
						return $.trim(clone.text())
							.replace(/,/mg, 'ˌ') // dirty trick: replace all commas with unicode 0x2cc, which looks somewhat similar
							.replace( /\s+/mg, ' ' ); // no newlines, tabs, etc.
					} )
					.toArray()
					.join( ',' ) );
			} )
			.toArray()
			.join( '\n' );
		return mw.util.rawurlencode( str );
	}

	$( '.wikitable' ).each( function( index, table )
	{
		var fileName = (table.id || 'table') + '.csv',
			linkText = (mw.config.get( 'wgUserLanguage' ) === 'he' ? 'יצוא כקובץ CSV' : 'Export as CSV'),
			linkTitle = (mw.config.get( 'wgUserLanguage' ) === 'he' ? 'שמור למחשב האישי קובץ בפורמט CSV, שניתן לייבא אחר כך לגיליון נתונים אלקטרוני' : 'Download a CSV file, which can be imported into a spreadsheet to your local computer');
			
		$( '<a>', { href: '#', download: fileName, title: linkTitle } )
			.text( linkText )
			.insertAfter( table )
			.click( function() { this.href = 'data:text/csv;charset=UTF-8,' + convertTable( table ); } );
	} );
} );