מדיה ויקי:Gadget-rcSlider.js

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

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload), או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר: להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh), או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: לפתוח תפריט ← הגדרות (במחשב מק: Opera ← העדפות) ואז ללחוץ על פרטיות ואבטחה ← מחק היסטוריית גלישה ← Cached images and files.
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) ==='Recentchanges' && !mw.user.options.get('usenewrc')) {
	var processedDates = false,
	    months=["בינואר", "בפברואר", "במרץ", "באפריל", "במאי", "ביוני", "ביולי", "באוגוסט", "בספטמבר", "באוקטובר", "בנובמבר" ,"בדצמבר"],
	    timeoutId;
	function textToDate( dateParts, timeParts ) {
		return new Date( parseInt( dateParts[2] ), months.indexOf( dateParts[1] ), parseInt( dateParts[0] ), timeParts[0], timeParts[1] ); 
	}
	function dateToText( date ) {
		return date.toLocaleDateString() + ' '+date.toLocaleTimeString()
	}

	function initDates(){
		if (processedDates) return;
		processedDates = true;
		$('h4').each( function(i, dHead ) {
			var $dHead = $( dHead );
			var dateParts = $dHead.text().split(' ');
			$dHead.next().children().each(function( j, change ) {
				$(change).data( 'date', textToDate( dateParts, $( change ).children( '.mw-changeslist-date' ).text().split( ':' ) ).getTime() );
			});
		});
	}

	var startDate = textToDate($('h4:last').text().split(' '), $( '.mw-changeslist-date:last' ).text().split( ':' ) ),
	    endDate = textToDate($('h4:first').text().split(' '), $( '.mw-changeslist-date:first' ).text().split( ':' ) );

	var currRange = $( '<div>' ).css({ 'direction': 'ltr', 'text-align':'center'}).insertAfter( '.mw-recentchanges-table' );
	$('<div>').css({'width': '80%', 'margin': 'auto'}).slider({
		range: true,
		animate: true,
		min: startDate.getTime(),
		max: endDate.getTime(),
		values: [ startDate.getTime(), endDate.getTime() ],
		slide: function( event, ui ) {
			initDates();
			clearTimeout( timeoutId );
			currRange.html( dateToText( new Date(ui.values[0]) ) + " &mdash; " + dateToText( new Date(ui.values[1]) ) );
			timeoutId = setTimeout(function(){
				var sDateTime = new Date( ui.values[0] ).getTime(),
				    eDateTime = new Date( ui.values[1] ).getTime();

				var selChanges = $( '.special li' ).filter(function(){
					var changeDate = $( this ).data( 'date' );
					return (changeDate>=sDateTime && changeDate<=eDateTime);
				});
				selChanges.show();
				currRange.html(currRange.html()+' (#'+selChanges.length+')')
				$( '.special li' ).not( selChanges ).hide();
			}, 50);	
		}
		})
		.insertAfter('.mw-recentchanges-table');
}