MediaWiki:Gadget-otd.js

Wikipedia, Entziklopedia askea

Oharra: Gorde ondoren zure nabigatzailearen katxea ekidin beharko duzu aldaketak ikusteko. Mozilla / Firefox / Safari: Shift tekla sakatu birkargatzeko momentuan, edo Ctrl-Shift-R sakatu (Cmd-Shift-R Apple Mac baten); IE: Ctrl tekla sakatu birkargatzeko momentuan, edo Ctrl-F5 sakatu; Konqueror:: Birkargatzeko klik egin, edo F5 sakatu, besterik ez; Opera erabiltzaileek Tresnak-Hobespenak atalera jo eta katxea garbitzeko aukera hautatu.

(function () {
	const tfa = document.getElementById( 'efemerideak' );
	if (!tfa) return;
    const tfaHeading = document.getElementById( 'efemerideak-heading' );
	let curYear = tfa.dataset.year;
	let curMonth = tfa.dataset.month;
	let curDay = tfa.dataset.day;
    function capitalizeFirstLetter(string) {
        return string.charAt(0).toUpperCase() + string.slice(1);
    }
    
    function today() {
        const currentDate = new Date();
        const day = currentDate.getDate()
        const month = currentDate.getMonth() + 1
        const year = currentDate.getFullYear();
        return `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`;
    }
    function humanMonth( m ) {
        return [
            'urtarrila',
            'otsaila',
            'martxoa',
            'apirila',
            'maiatza',
            'ekaina',
            'uztaila',
            'abuztua',
            'iraila',
            'urria',
            'azaroa',
            'abendua'
        ][ m ];
    }

	function fetchTFA(month, day) {
		const url = `/api/rest_v1/page/html/Txantiloi%3A${capitalizeFirstLetter(humanMonth(month))}_${day}`;
		try {
			return fetch( url ).then((r) => r.text()).then(( html ) => {
				const doc = (new DOMParser()).parseFromString(html, "text/html");
				return doc.querySelector( 'body' ).firstChild;
			} );
		} catch ( error ) {
			return Promise.resolve( null );
		}
	};

    const tfaBody = document.getElementById( 'efemerideak-content' );
	const btn = document.createElement( 'input' );
	const click = () => {
        const date = new Date( btn.valueAsNumber );
        const y = date.getFullYear();
        const m = date.getMonth();
        const d = date.getDate()
		fetchTFA( m, d ).then((element) => {
            tfaBody.innerHTML = '';
			tfaBody.append( element );
            tfaHeading.querySelector( 'span' ).textContent = `${y}ko ${humanMonth(m)}ren ${d}a`;
		} );
	}
    btn.type = 'date';
    btn.setAttribute( 'value', `${curYear}-${curMonth.padStart(2, '0')}-${curDay.padStart(2, '0')}` );
    btn.setAttribute( 'max', today() );
    tfaHeading.appendChild(btn);
	btn.addEventListener( 'input', click);
}())