Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MediaWiki:Common.js: Difference between revisions

MediaWiki interface page
LightSwitch (talk | contribs)
No edit summary
NekoPillow (talk | contribs)
No edit summary
Line 11: Line 11:


UserTagsJS.modules.inactive = 92; // 92 days
UserTagsJS.modules.inactive = 92; // 92 days
//----- [ Home Clock ] -----//
function clock_init(clock_update) {
    var __public = {};
    var realTime, localTime;
    var dstRangeStart, dstRangeEnd, tzOffset, dstOffset, tzOffsetFinal, isDST;
   
    // - clock_sync() - Sync the clock with the server and get timezone info
    function clock_sync() {
        jQuery.get("//worldtimeapi.org/api/timezone/America/New_York", function(a) {
            localTime = +new Date();
            realTime = +new Date(a.utc_datetime);
            dstRangeStart = +new Date(a.dst_from);
            dstRangeEnd = +new Date(a.dst_until);
            tzOffset = a.raw_offset;
            dstOffset = a.dst_offset;
            isDST = a.dst;
            clock_tick();
        });
    }
    // - clock_tick() - Updating the clock
    function clock_tick() {
        var _currentTime = +new Date();
        var _diffTime = _currentTime-localTime;
        localTime = _currentTime;
       
        if(Math.abs(_diffTime)>2000) clock_sync();
        else {
            realTime += _diffTime;
           
            if(!isDST && realTime>=dstRangeStart && realTime<dstRangeEnd) isDST = true;
            else if(isDST && realTime>=dstRangeEnd) isDST = false;
           
            tzOffsetFinal = tzOffset*1000;
            if(isDST) tzOffsetFinal += dstOffset*1000;
           
            clock_update(realTime);
setTimeout(clock_tick, 1000-realTime%1000);
        }
    }
    // - clock_pad() - Pad Zero in front of the number
    function clock_pad(str) {
return ("0"+str).substr(-2);
}
    clock_sync();
    // + this.format() - Print the date in specified format
    __public.format = function(format) {
        var clock = new Date(realTime+tzOffsetFinal);
       
        var month_short_arr = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
       
var get = "getUTC";
// Year
format = format.replace(/(?<!%)%Y/g,clock[get+"FullYear"]()); // Y - 4 digits | 2020
// Month
format = format.replace(/(?<!%)%m/g,clock_pad(clock[get+"Month"]()+1)); // m - padding 0 | 01
format = format.replace(/(?<!%)%n/g,clock[get+"Month"]()+1); // n - no padding | 1
format = format.replace(/(?<!%)%n/g,month_short_arr[clock[get+"Month"]()]); // M - Short textual | Jan
// Day
format = format.replace(/(?<!%)%d/g,clock_pad(clock[get+"Date"]())); // d - padding 0 | 01
format = format.replace(/(?<!%)%j/g,clock[get+"Date"]()); // j - no padding | 1
// Hour
format = format.replace(/(?<!%)%H/g,clock_pad(clock[get+"Hours"]())); // H - 24-h | padding 0 | 01 13
format = format.replace(/(?<!%)%G/g,clock[get+"Hours"]()); // G - 24-h | no padding | 1 13
// Minutes
format = format.replace(/(?<!%)%i/g,clock_pad(clock[get+"Minutes"]())); // i - padding 0 | 01
// Seconds
format = format.replace(/(?<!%)%s/g,clock_pad(clock[get+"Seconds"]())); // s - padding 0 | 01
return format.replace("%%","%");
}
return __public;
}
//----- [ jQuery onLoad ] -----//
$(function() {
    var _pagename = mw.config.get('wgPageName');
   
    if(_pagename == "Growtopia_Wiki") {
        var _clock = clock_init(function(time) {
            $("#gtw-clock #c-time").html(_clock.format("%H:%i:%s"));
            $("#gtw-clock #c-date").html(_clock.format("%j %M %Y"));
        });
    }
})

Revision as of 18:06, 27 July 2020

window.UserTagsJS = {
	modules: {},
	tags: {
		founder: { u: 'Founder', order: -1/0 },
	}
};

UserTagsJS.modules.custom = {
	'SpaceManiac': ['founder'] // NOTE: order of list here does NOT matter
};

UserTagsJS.modules.inactive = 92; // 92 days

//----- [ Home Clock ] -----//
function clock_init(clock_update) {
    var __public = {};
    var realTime, localTime;
    var dstRangeStart, dstRangeEnd, tzOffset, dstOffset, tzOffsetFinal, isDST;
    
    // - clock_sync() - Sync the clock with the server and get timezone info
    function clock_sync() {
        jQuery.get("//worldtimeapi.org/api/timezone/America/New_York", function(a) {
            localTime = +new Date();
            realTime = +new Date(a.utc_datetime);
            dstRangeStart = +new Date(a.dst_from);
            dstRangeEnd = +new Date(a.dst_until);
            tzOffset = a.raw_offset;
            dstOffset = a.dst_offset;
            isDST = a.dst;
            clock_tick();
        });
    }
    // - clock_tick() - Updating the clock
    function clock_tick() {
        var _currentTime = +new Date();
        var _diffTime = _currentTime-localTime;
        localTime = _currentTime;
        
        if(Math.abs(_diffTime)>2000) clock_sync();
        else {
            realTime += _diffTime;
            
            if(!isDST && realTime>=dstRangeStart && realTime<dstRangeEnd) isDST = true;
            else if(isDST && realTime>=dstRangeEnd) isDST = false;
            
            tzOffsetFinal = tzOffset*1000;
            if(isDST) tzOffsetFinal += dstOffset*1000;
            
            clock_update(realTime);
			setTimeout(clock_tick, 1000-realTime%1000);
        }
    }
    // - clock_pad() - Pad Zero in front of the number
    function clock_pad(str) {
		return ("0"+str).substr(-2);
	}
    clock_sync();

    // + this.format() - Print the date in specified format
    __public.format = function(format) {
        var clock = new Date(realTime+tzOffsetFinal);
        
        var month_short_arr = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
        
		var get = "getUTC";
		// Year
		format = format.replace(/(?<!%)%Y/g,clock[get+"FullYear"]());				// Y - 4 digits | 2020
		// Month
		format = format.replace(/(?<!%)%m/g,clock_pad(clock[get+"Month"]()+1));		// m - padding 0 | 01
		format = format.replace(/(?<!%)%n/g,clock[get+"Month"]()+1);				// n - no padding | 1
		format = format.replace(/(?<!%)%n/g,month_short_arr[clock[get+"Month"]()]); // M - Short textual | Jan
		// Day
		format = format.replace(/(?<!%)%d/g,clock_pad(clock[get+"Date"]()));		// d - padding 0 | 01
		format = format.replace(/(?<!%)%j/g,clock[get+"Date"]());					// j - no padding | 1
		// Hour
		format = format.replace(/(?<!%)%H/g,clock_pad(clock[get+"Hours"]()));		// H - 24-h | padding 0 | 01 13
		format = format.replace(/(?<!%)%G/g,clock[get+"Hours"]());					// G - 24-h | no padding | 1 13
		// Minutes
		format = format.replace(/(?<!%)%i/g,clock_pad(clock[get+"Minutes"]()));		// i - padding 0 | 01
		// Seconds
		format = format.replace(/(?<!%)%s/g,clock_pad(clock[get+"Seconds"]()));		// s - padding 0 | 01
		
		return format.replace("%%","%");
	}
	return __public;
}

//----- [ jQuery onLoad ] -----//
$(function() {
    var _pagename = mw.config.get('wgPageName');
    
    if(_pagename == "Growtopia_Wiki") {
        var _clock = clock_init(function(time) {
            $("#gtw-clock #c-time").html(_clock.format("%H:%i:%s"));
            $("#gtw-clock #c-date").html(_clock.format("%j %M %Y"));
        });
    }
})