Jump to content

MediaWiki:Common.js

From GoodToKnow
Revision as of 01:01, 3 November 2026 by GTKAdmin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* GoodToKnow original daily observances calendar */
(function () {
    'use strict';

    function updateCalendar() {
        var dateElement = document.getElementById('date-today');
        var observancesElement = document.getElementById('today-in-history');
        var sourceElement = document.querySelector('.todayisurl');

        if (!dateElement || !observancesElement) {
            return;
        }

        var now = new Date();
        var months = [
            'jan', 'feb', 'mar', 'apr', 'may', 'jun',
            'jul', 'aug', 'sep', 'oct', 'nov', 'dec'
        ];
        var month = months[now.getMonth()];
        var day = String(now.getDate());

        dateElement.textContent = 'Today is: ' +
            now.toLocaleDateString('en-US', {
                month: 'long',
                day: 'numeric'
            });

        if (sourceElement) {
            sourceElement.textContent =
                '- Source: https://nationaldaycalendar.com/' +
                now.toLocaleDateString('en-US', { month: 'long' }).toLowerCase() + '/';
        }

        fetch('/resources/assets/todayis.json')
            .then(function (response) {
                if (!response.ok) {
                    throw new Error('Calendar HTTP ' + response.status);
                }
                return response.json();
            })
            .then(function (data) {
                var entries = (data.month && data.month[month]) || [];
                var entry = entries.find(function (item) {
                    return String(item.date) === day;
                });

                observancesElement.textContent =
                    entry && Array.isArray(entry.day)
                        ? entry.day.join(', ')
                        : '';
            })
            .catch(function (error) {
                console.error('GoodToKnow calendar:', error);
            });
    }

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', updateCalendar);
    } else {
        updateCalendar();
    }
})();