MediaWiki:Test.js: различия между версиями

Страница интерфейса MediaWiki
Нет описания правки
Нет описания правки
 
(не показано 180 промежуточных версий этого же участника)
Строка 1: Строка 1:
function getCurrentDateTime() {
(function(){
    var now = new Date();
if(typeof mw==='undefined') return;
    return now.toLocaleString();
 
}
var map={
"Клише":"#ff4d4d",
"властью":"#4dff4d",
"ответственность":"#4d4dff",
"Стандартные Рабочие Процедуры":"#ff4dff",
"ядерный":"#ffa500",
"станции":"#4dffff",
"ГСБ":"#b84dff",
"диск":"#4dff88",
"СРП/КЗ":"#ffb6c1",
"банановая кожурка":"#ffff4d"
};


function getFormattedTime() {
function esc(s){return s.replace(/[.*+?^${}()|[\]\\]/g,'\\$&');}
    var now = new Date();
    return now.toTimeString().split(' ')[0];
}


function getDayOfWeek() {
function walk(node){
    var days = ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"];
if(node.nodeType===3){
    return days[new Date().getDay()];
var t=node.nodeValue, r=t;
for(var k in map){
r=r.replace(new RegExp(esc(k),'g'),'<span style="color:'+map[k]+'">'+k+'</span>');
}
}
 
if(r!==t){
function getMonth() {
var s=document.createElement('span');
    var months = ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"];
s.innerHTML=r;
    return months[new Date().getMonth()];
node.parentNode.replaceChild(s,node);
}
}
function isLeapYear(year) {
    return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
}
}
function getDateDifference(date1, date2) {
    var diff = Math.abs(date1 - date2);
    var days = Math.ceil(diff / (1000 * 60 * 60 * 24));
    return days;
}
}


function updateDynamicContent() {
var nodes=document.querySelectorAll('.mw-parser-output p, .mw-parser-output li');
    var container = document.getElementById("dynamic-date-info");
for(var i=0;i<nodes.length;i++){
    if (!container) {
var cn=nodes[i].childNodes;
        container = document.createElement("div");
for(var j=0;j<cn.length;j++) walk(cn[j]);
        container.id = "dynamic-date-info";
        document.body.appendChild(container);
    }
    var now = new Date();
    var currentYear = now.getFullYear();
    var someDate = new Date(2025, 0, 1);
    container.innerHTML = "<div>Текущее время: " + getFormattedTime() + "</div>" +
                          "<div>Сегодня: " + getDayOfWeek() + ", " + now.getDate() + " " + getMonth() + " " + now.getFullYear() + "</div>" +
                          "<div>Текущий год: " + currentYear + "</div>" +
                          "<div>Этот год является високосным: " + (isLeapYear(currentYear) ? "Да" : "Нет") + "</div>" +
                          "<div>Дней до 1 января 2025 года: " + getDateDifference(now, someDate) + "</div>";
}
}
 
})();
setInterval(updateDynamicContent, 300000);
updateDynamicContent();

Текущая версия от 11:16, 17 января 2026

(function(){
if(typeof mw==='undefined') return;

var map={
"Клише":"#ff4d4d",
"властью":"#4dff4d",
"ответственность":"#4d4dff",
"Стандартные Рабочие Процедуры":"#ff4dff",
"ядерный":"#ffa500",
"станции":"#4dffff",
"ГСБ":"#b84dff",
"диск":"#4dff88",
"СРП/КЗ":"#ffb6c1",
"банановая кожурка":"#ffff4d"
};

function esc(s){return s.replace(/[.*+?^${}()|[\]\\]/g,'\\$&');}

function walk(node){
if(node.nodeType===3){
var t=node.nodeValue, r=t;
for(var k in map){
r=r.replace(new RegExp(esc(k),'g'),'<span style="color:'+map[k]+'">'+k+'</span>');
}
if(r!==t){
var s=document.createElement('span');
s.innerHTML=r;
node.parentNode.replaceChild(s,node);
}
}
}

var nodes=document.querySelectorAll('.mw-parser-output p, .mw-parser-output li');
for(var i=0;i<nodes.length;i++){
var cn=nodes[i].childNodes;
for(var j=0;j<cn.length;j++) walk(cn[j]);
}
})();