User:RhinosF1/global.js

From Miraheze Meta, Miraheze's central coordination wiki

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
mw.loader.load('//meta.miraheze.org/w/index.php?title=MediaWiki:UserInfo.js&action=raw&ctype=text/javascript');
function parseHttpHeaders( httpHeaders ) {
   return httpHeaders.split( "\n" ).map( function ( x ) {
          return x.split(/: */, 2);
   } ).filter( function ( x ) {
          return x[0];
   } ).reduce( function ( ac, x ) {
          ac[x[0]] = x[1];
          return ac;
   }, {} );
}

var req = new XMLHttpRequest();
req.open( 'GET', document.location, false );
req.send( null );

var headers = parseHttpHeaders(req.getAllResponseHeaders());

function showBackendPerformance() {
	var respTime = mw.config.get( 'wgBackendResponseTime' ),
		backend = 'PHP7',
		server = mw.config.get( 'wgHostname' ),
		cp = headers['x-served-by'].replace( /.miraheze.org|^mw[0-9]+|\s|,/g, '' ),
		dbname = mw.config.get( 'wgDBname' ),
		caption  = respTime.toString() + 'ms (<strong>' + backend + '</strong> via ' + dbname + '@' + server + ' / ' + cp + ')';

		if ( mw.config.get( 'skin' ) === 'cosmos' ){
			$( '<li>' ).html( caption ).appendTo( '#p-tb ul' );
		} else {
			$( '<li>' ).html( caption ).prependTo( '#p-personal ul' );
		}
}
$( document ).ready( showBackendPerformance );


$.when(mw.loader.using( [ "mediawiki.api" ] )).then( function () {
    return new mw.Api()
      .get( {
        action: "query",
        meta: "siteinfo",
        siprop: "statistics",
        format: "json",
      } )
      .then( function ( data ) {
			var jobs = data.query.statistics.jobs,
			caption = 'Queued Jobs: ' + jobs;
			if ( mw.config.get( 'skin' ) === 'cosmos' ) {
				$( '<li>').html(caption).appendTo( '#p-tb ul' );
			} else {
				$( '<li>' ).html(caption).prependTo( '#p-personal ul' );
			}
		} );
} );