MediaWiki:Common.js: Difference between revisions
MediaWiki interface page
More actions
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"));
});
}
})