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

Материал из Revera Wiki
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */
mw.loader.using('mediawiki.util').then(function() {
$(document).ready(function() {
     if (document.getElementById("reverinDateWidget")) {
     function isLeap(year) {
         var script = document.createElement("script");
         return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0);
        script.src = "https://revera.world/js/reverin-date.js";
        script.defer = true;
        document.body.appendChild(script);
     }
     }
    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();
});