/* Get correct download button by OS */
let ready = ( callback ) => {
if ( document.readyState != "loading" ) callback();
else document.addEventListener( "DOMContentLoaded", callback );
}
ready( () => {
let downloader = document.getElementsByClassName( 'downloader' );
for ( let element of downloader ) {
let version = element.dataset.version;
if ( version == '0.49.19.1' ) {
let url = "https://github.com/MegaMek/mekhq/releases/download/v" + version + "/MekHQ-" + version + ".tar.gz";
let platform = " Linux/Unix";
if ( navigator.userAgent.indexOf( "Win" ) != -1 ) {
url = "https://github.com/MegaMek/mekhq/releases/download/v" + version + "/mekhq-windows-" + version + ".zip";
platform = " Windows";
} else if ( navigator.userAgent.indexOf( "Mac OS X" ) != -1 ) {
platform = " Mac OSX";
}
updateDownloadLinks( element, version, url, platform );
} else {
let url = "https://github.com/MegaMek/mekhq/releases/download/v" + version + "/MekHQ-" + version + ".tar.gz";
updateDownloadLinks( element, version, url, null );
}
}
loadDownloadStats( "megamek-download-stats", "megamek" );
loadDownloadStats( "megameklab-download-stats", "megameklab" );
loadDownloadStats( "mekhq-download-stats", "mekhq" );
setInterval( function () { loadXMLDoc(); }, 1000 );
} );
function updateDownloadLinks( element, version, url, platform ) {
let downloadLink = element.getElementsByClassName( 'download_link' )[ 0 ];
let versionText = element.getElementsByClassName( 'version_display' )[ 0 ];
let platformText = element.getElementsByClassName( 'version_platform' )[ 0 ];
downloadLink.href = url;
versionText.innerHTML = version;
if ( platformText ) {
platformText.innerHTML = platform;
}
}
function isDarkModeEnabled() {
return window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches
}
const toggleSwitch = document.querySelector( '.theme-switch input[type="checkbox"]' );
toggleSwitch.addEventListener( 'change', switchTheme, false );
function switchTheme( e ) {
if ( e.target.checked ) {
document.documentElement.setAttribute( 'data-theme', 'dark' );
localStorage.setItem( 'theme', 'dark' ); //add this
}
else {
document.documentElement.setAttribute( 'data-theme', 'light' );
localStorage.setItem( 'theme', 'light' ); //add this
}
}
const currentTheme = localStorage.getItem( 'theme' ) ? localStorage.getItem( 'theme' ) : null;
if ( currentTheme ) {
document.documentElement.setAttribute( 'data-theme', currentTheme );
if ( currentTheme === 'dark' ) {
toggleSwitch.checked = true;
}
} else if ( isDarkModeEnabled() ) {
toggleSwitch.checked = true
document.documentElement.setAttribute( 'data-theme', 'dark' );
}
function loadDownloadStats( elementId, repoName ) {
let element = document.getElementById( elementId );
if ( element ) {
fetch( "https://api.github.com/repos/megamek/" + repoName + "/releases" )
.then( ( response ) => response.json() )
.then( ( response ) => addStatsToElement( element, response ) )
.catch( ( error ) => console.log( error ) );
}
}
function addStatsToElement( element, releases ) {
while ( element.lastChild ) { element.removeChild( element.lastChild ) };
releases.forEach( ( release ) => {
let child = document.createElement( "li" );
let text = "" + release.tag_name + "";
let totalDownloads = 0;
release.assets.forEach( ( asset ) => {
totalDownloads += asset.download_count;
} )
text += ": " + totalDownloads + "";
child.className = "list-group-item";
child.innerHTML = text;
element.appendChild( child );
} );
}
function loadXMLDoc() {
let servers = document.getElementById( "servers" )
if ( servers ) {
fetch( 'https://api.megamek.org/servers.js' )
.then( ( response ) => response.text() )
.then( ( response ) => {
servers.innerHTML = response;
} )
}
}