MediaWiki:Common.js: различия между версиями
Luciana (обсуждение | вклад) Нет описания правки |
Luciana (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */ | /* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */ | ||
$(document).ready(function() { | |||
function isLeap(year) { | |||
return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0); | |||
} | } | ||
function getReverinDate() { | |||
const now = new Date(); | |||
const earthYear = now.getFullYear(); | |||
const earthTotalDays = isLeap(earthYear) ? 366 : 365; | |||
const startOfYear = new Date(earthYear, 0, 1); | |||
const D_z = Math.floor((now - startOfYear) / (1000 * 60 * 60 * 24)) + 1; | |||
const D_offset = 49; // 18 февраля - 49-й день | |||
const reverinYear = (D_z >= D_offset ? earthYear : earthYear - 1); | |||
const D_r = ((D_z - D_offset + earthTotalDays) % earthTotalDays) + 1; | |||
// Длины лун (месяцев) | |||
const monthLengths = [30, 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, (isLeap(reverinYear) ? 30 : 29)]; | |||
const monthNames = ["Любимец", "Жрец", "Хранитель", "Правитель", "Воитель", | |||
"Хозяин", "Купец", "Творец", "Плут", "Колдун", "Отшельник", "Наставник"]; | |||
// Дни недели в Реверинском календаре | |||
const weekDays = ["Вивидис", "Аспирис", "Альтис", "Эквилис", "Либерис", "Реновис", "Мистерис"]; | |||
// Определяем месяц и день | |||
let dayCount = D_r; | |||
let monthIndex = 0; | |||
while (monthIndex < monthLengths.length && dayCount > monthLengths[monthIndex]) { | |||
dayCount -= monthLengths[monthIndex]; | |||
monthIndex++; | |||
} | |||
// Определяем день недели | |||
const weekDayIndex = (D_r - 1) % 7; | |||
const reverinWeekDay = weekDays[weekDayIndex]; | |||
// Выводим результат | |||
const dateText = `${reverinWeekDay}, ${dayCount} ${monthNames[monthIndex]}, ${reverinYear}`; | |||
// Проверяем, есть ли контейнер в боковой панели | |||
let sidebar = document.getElementById("p-navigation"); | |||
if (sidebar) { | |||
let dateDiv = document.createElement("div"); | |||
dateDiv.id = "reverinDateWidget"; | |||
dateDiv.style.padding = "10px"; | |||
dateDiv.style.borderTop = "1px solid #ccc"; | |||
dateDiv.innerText = dateText; | |||
sidebar.appendChild(dateDiv); | |||
} | |||
} | |||
getReverinDate(); | |||
}); | }); |
Версия от 17:14, 25 февраля 2025
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */ $(document).ready(function() { function isLeap(year) { return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0); } function getReverinDate() { const now = new Date(); const earthYear = now.getFullYear(); const earthTotalDays = isLeap(earthYear) ? 366 : 365; const startOfYear = new Date(earthYear, 0, 1); const D_z = Math.floor((now - startOfYear) / (1000 * 60 * 60 * 24)) + 1; const D_offset = 49; // 18 февраля - 49-й день const reverinYear = (D_z >= D_offset ? earthYear : earthYear - 1); const D_r = ((D_z - D_offset + earthTotalDays) % earthTotalDays) + 1; // Длины лун (месяцев) const monthLengths = [30, 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, (isLeap(reverinYear) ? 30 : 29)]; const monthNames = ["Любимец", "Жрец", "Хранитель", "Правитель", "Воитель", "Хозяин", "Купец", "Творец", "Плут", "Колдун", "Отшельник", "Наставник"]; // Дни недели в Реверинском календаре const weekDays = ["Вивидис", "Аспирис", "Альтис", "Эквилис", "Либерис", "Реновис", "Мистерис"]; // Определяем месяц и день let dayCount = D_r; let monthIndex = 0; while (monthIndex < monthLengths.length && dayCount > monthLengths[monthIndex]) { dayCount -= monthLengths[monthIndex]; monthIndex++; } // Определяем день недели const weekDayIndex = (D_r - 1) % 7; const reverinWeekDay = weekDays[weekDayIndex]; // Выводим результат const dateText = `${reverinWeekDay}, ${dayCount} ${monthNames[monthIndex]}, ${reverinYear}`; // Проверяем, есть ли контейнер в боковой панели let sidebar = document.getElementById("p-navigation"); if (sidebar) { let dateDiv = document.createElement("div"); dateDiv.id = "reverinDateWidget"; dateDiv.style.padding = "10px"; dateDiv.style.borderTop = "1px solid #ccc"; dateDiv.innerText = dateText; sidebar.appendChild(dateDiv); } } getReverinDate(); });