• Welcome to the Kancolle Wiki!
  • If you have any questions regarding site content, account registration, etc., please visit the KanColle Wiki Discord

Changes

Jump to navigation Jump to search
no edit summary
Line 236: Line 236:  
   
 
   
 
mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton );
 
mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton );
  −
//Countdown timer
  −
;(function (module, mw, $, undefined) {
  −
  −
    'use strict';
  −
  −
    var translations = $.extend(true, {
  −
        // Catalan (Català)
  −
        ca: {
  −
            and: 'i',
  −
            second: 'segon',
  −
            seconds: 'segons',
  −
            minute: 'minut',
  −
            minutes: 'minuts',
  −
            hour: 'hora',
  −
            hours: 'hores',
  −
            day: 'dia',
  −
            days: 'dies'
  −
        },
  −
        // German (Deutsch)
  −
        de: {
  −
            and: 'und',
  −
            second: 'Sekunde',
  −
            seconds: 'Sekunden',
  −
            minute: 'Minute',
  −
            minutes: 'Minuten',
  −
            hour: 'Stunde',
  −
            hours: 'Stunden',
  −
            day: 'Tag',
  −
            days: 'Tage'
  −
        },
  −
        // English (English)
  −
        en: {
  −
            and: 'and',
  −
            second: 'second',
  −
            seconds: 'seconds',
  −
            minute: 'minute',
  −
            minutes: 'minutes',
  −
            hour: 'hour',
  −
            hours: 'hours',
  −
            day: 'day',
  −
            days: 'days'
  −
        },
  −
        // Spanish (Español)
  −
        es: {
  −
            and: 'y',
  −
            second: 'segundo',
  −
            seconds: 'segundos',
  −
            minute: 'minuto',
  −
            minutes: 'minutos',
  −
            hour: 'hora',
  −
            hours: 'horas',
  −
            day: 'día',
  −
            days: 'días'
  −
        },
  −
        // French (Français)
  −
        fr: {
  −
            and: 'et',
  −
            second: 'seconde',
  −
            seconds: 'secondes',
  −
            minute: 'minute',
  −
            minutes: 'minutes',
  −
            hour: 'heure',
  −
            hours: 'heures',
  −
            day: 'jour',
  −
            days: 'jours'
  −
        },
  −
        // Hungarian (Magyar)
  −
        hu: {
  −
            and: 'és',
  −
            second: 'másodperc',
  −
            seconds: 'másodperc',
  −
            minute: 'perc',
  −
            minutes: 'perc',
  −
            hour: 'óra',
  −
            hours: 'óra',
  −
            day: 'nap',
  −
            days: 'nap'
  −
        },
  −
        // Italian (Italiano)
  −
        it: {
  −
            and: 'e',
  −
            second: 'secondo',
  −
            seconds: 'secondi',
  −
            minute: 'minuto',
  −
            minutes: 'minuti',
  −
            hour: 'ora',
  −
            hours: 'ore',
  −
            day: 'giorno',
  −
            days: 'giorni'
  −
        },
  −
        // Japanese (日本語)
  −
        ja: {
  −
            and: '',
  −
            second: '秒',
  −
            seconds: '秒',
  −
            minute: '分',
  −
            minutes: '分',
  −
            hour: '時間',
  −
            hours: '時間',
  −
            day: '日',
  −
            days: '日'
  −
        },
  −
        // Malay (Bahasa Melayu)
  −
        ms: {
  −
            and: 'dan',
  −
            second: 'saat',
  −
            seconds: 'saat',
  −
            minute: 'minit',
  −
            minutes: 'minit',
  −
            hour: 'jam',
  −
            hours: 'jam',
  −
            day: 'hari',
  −
            days: 'hari'
  −
        },
  −
        // Dutch (Nederlands)
  −
        nl: {
  −
            and: 'en',
  −
            second: 'seconde',
  −
            seconds: 'seconden',
  −
            minute: 'minuut',
  −
            minutes: 'minuten',
  −
            hour: 'uur',
  −
            hours: 'uur',
  −
            day: 'dag',
  −
            days: 'dagen'
  −
        },
  −
        // Polish (Polski)
  −
        pl: {
  −
            and: 'i',
  −
            second: 'sekunda',
  −
            seconds: 'sekund(y)',
  −
            minute: 'minuta',
  −
            minutes: 'minut(y)',
  −
            hour: 'godzina',
  −
            hours: 'godzin(y)',
  −
            day: 'dzień',
  −
            days: 'dni'
  −
        },
  −
        // Portuguese (Português)
  −
        pt: {
  −
            and: 'e',
  −
            second: 'segundo',
  −
            seconds: 'segundos',
  −
            minute: 'minuto',
  −
            minutes: 'minutos',
  −
            hour: 'hora',
  −
            hours: 'horas',
  −
            day: 'dia',
  −
            days: 'dias'
  −
  −
        },
  −
        // Brazilian Portuguese (Português do Brasil)
  −
        'pt-br': {
  −
            and: 'e',
  −
            second: 'segundo',
  −
            seconds: 'segundos',
  −
            minute: 'minuto',
  −
            minutes: 'minutos',
  −
            hour: 'hora',
  −
            hours: 'horas',
  −
            day: 'dia',
  −
            days: 'dias'
  −
  −
        },
  −
        // Russian (русский)
  −
        ru: {
  −
            and: 'и',
  −
            second: 'секунда',
  −
            seconds: 'секунд',
  −
            minute: 'минута',
  −
            minutes: 'минут',
  −
            hour: 'час',
  −
            hours: 'часов',
  −
            day: 'день',
  −
            days: 'дней'
  −
        },
  −
        // Serbian (српски језик)
  −
        sr: {
  −
            and: 'i',
  −
            second: 'sekundu',
  −
            seconds: 'sekunde/-i',
  −
            minute: 'minutu',
  −
            minutes: 'minute/-a',
  −
            hour: 'sat',
  −
            hours: 'sata/-i',
  −
            day: 'dan',
  −
            days: 'dana'
  −
        },
  −
        // Vietnamese (Tiếng Việt)
  −
        vi: {
  −
            and: 'và',
  −
            second: 'giây',
  −
            seconds: 'giây',
  −
            minute: 'phút',
  −
            minutes: 'phút',
  −
            hour: 'giờ',
  −
            hours: 'giờ',
  −
            day: 'ngày',
  −
            days: 'ngày'
  −
        },
  −
        // Chinese (中文)
  −
        zh: {
  −
            and: ' ',
  −
            second: '秒',
  −
            seconds: '秒',
  −
            minute: '分',
  −
            minutes: '分',
  −
            hour: '小时',
  −
            hours: '小时',
  −
            day: '天',
  −
            days: '天'
  −
        }
  −
    }, module.translations || {}),
  −
    i18n = translations[
  −
        mw.config.get('wgContentLanguage')
  −
    ] || translations.en;
  −
  −
    var countdowns = [];
  −
  −
    var NO_LEADING_ZEROS = 1;
  −
  −
    function output (i, diff) {
  −
        /*jshint bitwise:false*/
  −
        var delta, result, parts = [];
  −
        delta = diff % 60;
  −
        parts.unshift(delta + ' ' + i18n[delta === 1 ? 'second' : 'seconds']);
  −
        diff = Math.floor(diff / 60);
  −
        delta = diff % 60;
  −
        parts.unshift(delta + ' ' + i18n[delta === 1 ? 'minute' : 'minutes']);
  −
        diff = Math.floor(diff / 60);
  −
        delta = diff % 24;
  −
        parts.unshift(delta + ' ' + i18n[delta === 1 ? 'hour'  : 'hours'  ]);
  −
        diff = Math.floor(diff / 24);
  −
        parts.unshift(diff  + ' ' + i18n[diff  === 1 ? 'day'    : 'days'  ]);
  −
        result = parts.pop();
  −
        if (countdowns[i].opts & NO_LEADING_ZEROS) {
  −
            while (parts.length && parts[0][0] === '0') {
  −
                parts.shift();
  −
            }
  −
        }
  −
        if (parts.length) {
  −
            result = parts.join(', ') + ' ' + i18n.and + ' ' + result;
  −
        }
  −
        countdowns[i].node.text(result);
  −
    }
  −
  −
    function end(i) {
  −
        var c = countdowns[i].node.parent();
  −
        switch (c.attr('data-end')) {
  −
            case 'remove':
  −
                c.remove();
  −
                return true;
  −
            case 'stop':
  −
                output(i, 0);
  −
                return true;
  −
            case 'toggle':
  −
                var toggle = c.attr('data-toggle');
  −
                if (toggle && $(toggle).length) {
  −
                    $(toggle).css('display', 'inline');
  −
                    c.css('display', 'none');
  −
                    return true;
  −
                }
  −
                break;
  −
            case 'callback':
  −
                var callback = c.attr('data-callback');
  −
                if (callback && $.isFunction(module[callback])) {
  −
                    output(i, 0);
  −
                    module[callback].call(c);
  −
                    return true;
  −
                }
  −
                break;
  −
        }
  −
        countdowns[i].countup = true;
  −
        output(i, 0);
  −
        return false;
  −
    }
  −
  −
    function update () {
  −
        var now = Date.now();
  −
        var countdownsToRemove = [];
  −
        $.each(countdowns.slice(0), function (i, countdown) {
  −
            var diff = Math.floor((countdown.date - now) / 1000);
  −
            if (diff <= 0 && !countdown.countup) {
  −
                if (end(i)) countdownsToRemove.push(i);
  −
            } else {
  −
                output(i, Math.abs(diff));
  −
            }
  −
        });
  −
        var x;
  −
        while((x = countdownsToRemove.pop()) !== undefined) {
  −
            countdowns.splice(x, 1);
  −
        }
  −
        if (countdowns.length) {
  −
            window.setTimeout(function () {
  −
                update();
  −
            }, 1000);
  −
        }
  −
    }
  −
  −
    function getOptions (node) {
  −
        /*jshint bitwise:false*/
  −
        var text = node.parent().attr('data-options'),
  −
            opts = 0;
  −
        if (text) {
  −
            if (/no-leading-zeros/.test(text)) {
  −
                opts |= NO_LEADING_ZEROS;
  −
            }
  −
        }
  −
        return opts;
  −
    }
  −
  −
    $(function () {
  −
        var countdown = $('.countdown');
  −
        if (!countdown.length) return;
  −
        $('.nocountdown').css('display', 'none');
  −
        countdown
  −
        .css('display', 'inline')
  −
        .find('.countdowndate')
  −
        .each(function () {
  −
            var $this = $(this),
  −
                date = (new Date($this.text())).valueOf();
  −
            if (isNaN(date)) {
  −
                $this.text('BAD DATE');
  −
                return;
  −
            }
  −
            countdowns.push({
  −
                node: $this,
  −
                opts: getOptions($this),
  −
                date: date,
  −
            });
  −
        });
  −
        if (countdowns.length) {
  −
            update();
  −
        }
  −
    });
  −
  −
}(window.countdownTimer = window.countdownTimer || {}, mediaWiki, jQuery));
  −
//
 

Navigation menu