Gebruiker:Rots61/Gadget-LogTheCounter.js: verschil tussen versies

Uit Wikikids
Naar navigatie springen Naar zoeken springen
(fix)
 
(20 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 1: Regel 1:
 
/* jshint sub:true maxerr:100000 */
 
/* jshint sub:true maxerr:100000 */
// [[User:MakiBoy/Gadget-LogTheCounter.js]] gemaakt door [[User:Rots61]]
+
// [[User:Rots61/Gadget-LogTheCounter.js]] gemaakt door [[User:Rots61]]
  
 
/*
 
/*
Regel 8: Regel 8:
  
 
*/
 
*/
 +
function addZero(number) {
 +
return number < 10 ? "0" + number : number;
 +
}
  
 
function saveitlogthecounter() {
 
function saveitlogthecounter() {
 
if (Array.isArray(allPages)) {
 
if (Array.isArray(allPages)) {
 
         allPages = JSON.stringify(allPages);
 
         allPages = JSON.stringify(allPages);
    }
 
function addZero(number) {
 
return number < 10 ? "0" + number : number;
 
 
     }
 
     }
 
     date = new Date();
 
     date = new Date();
Regel 38: Regel 38:
 
                     if (data.edit.result == "Success") {
 
                     if (data.edit.result == "Success") {
 
                         mw.notify("Hele pagina opgeslagen!", { autoHide: false });
 
                         mw.notify("Hele pagina opgeslagen!", { autoHide: false });
 +
                        deleteDataOnServer();
 
                     } else {
 
                     } else {
                         mw.notify("Opslaan mislukt", { autoHide: false });
+
                         mw.notify("Opslaan mislukt, stuur Rots61 aub direct een berichtje.", { autoHide: false });
 
                     }
 
                     }
 
                     console.log(data.edit);
 
                     console.log(data.edit);
 
                     document.getElementsByTagName("h1")[0].textContent = "Opslaan gelukt!";
 
                     document.getElementsByTagName("h1")[0].textContent = "Opslaan gelukt!";
 
                 });
 
                 });
            document.getElementById('infopaginaLogTheCounter').innerHTML = '<a href="/Wikikids:Statistieken/Logs/' + date + '/info" title="' + date + '">Pagina</a>';
 
            document.getElementById('addinfotoinfopagelogthecounter').innerHTML = JSON.stringify(informatieLogTheCounter);
 
 
         });       
 
         });       
 
     api.get({
 
     api.get({
Regel 68: Regel 67:
 
                         mw.notify("Pagina opgeslagen!", { autoHide: false });
 
                         mw.notify("Pagina opgeslagen!", { autoHide: false });
 
                     } else {
 
                     } else {
                         mw.notify("Opslaan mislukt 2", { autoHide: false });
+
                         mw.notify("Opslaan mislukt 2, stuur Rots61 aub direct een berichtje.", { autoHide: false });
 
                     }
 
                     }
 
                     console.log(data.edit);
 
                     console.log(data.edit);
 
                 });
 
                 });
 
         });
 
         });
     var settings = {
+
}
  "url": "https://wikikids.martvanweeghel.nl/rots61/delete",
+
 
  "method": "DELETE",
+
function deleteDataOnServer() {
 +
     var settings2 = {
 +
  "url": "https://wikikids.dekenos.nl/pages/delete",
 +
  "method": "POST",
 
  "timeout": 0,
 
  "timeout": 0,
 
  "headers": {
 
  "headers": {
    "Host": "wikikids.martvanweeghel.nl",
+
    "Host": "wikikids.dekenos.nl",
 
    "Content-Type": "application/json"
 
    "Content-Type": "application/json"
 
  },
 
  },
 
  "data": JSON.stringify({
 
  "data": JSON.stringify({
    "message": tx
+
    "message": 'oke'
 
  }),
 
  }),
 
};
 
};
+
$.ajax(settings2).done(function (response) {
$.ajax(settings).done(function (response) {
+
mw.notify("Reseten statistieken2 gelukt", { autoHide: false });
  mw.notify("Reseten statistieken gelukt", { autoHide: false });
+
window.onbeforeunload = null;
 +
window.location.href = '/';
 
}).catch(function (error) {
 
}).catch(function (error) {
mw.notify('Resetten mislukt', {autoHide: false});
+
if (error.responseText || JSON.parse(error.responseText).succes) {
console.log(error);
+
mw.notify("Reseten statistieken2 gelukt", { autoHide: false });
 +
window.onbeforeunload = null;
 +
window.location.href = '/';
 +
} else {
 +
mw.notify('Resetten mislukt, stuur Rots61 aub direct een berichtje.', {autoHide: false});
 +
}
 
});
 
});
 
}
 
}
 
 
function getPagesLogTheCounter() {
 
function getPagesLogTheCounter() {
 
     var pages = [];
 
     var pages = [];
 
     var request = new XMLHttpRequest();
 
     var request = new XMLHttpRequest();
     request.open('GET', 'https://wikikids.martvanweeghel.nl/pages', false);
+
     request.open('GET', 'https://wikikids.dekenos.nl/pages', false);
 
     request.send(null);
 
     request.send(null);
 
     if (request.status === 200) {
 
     if (request.status === 200) {
 
         pages = JSON.parse(request.responseText);
 
         pages = JSON.parse(request.responseText);
 
     }
 
     }
 +
    console.log(pages);
 
     // Sorteer de pagina's op het aantal bezoekers (hoog naar laag) (page.normalVisitors + page.mainPageVisitors)
 
     // Sorteer de pagina's op het aantal bezoekers (hoog naar laag) (page.normalVisitors + page.mainPageVisitors)
 
     pages.sort(function (a, b) {
 
     pages.sort(function (a, b) {
Regel 109: Regel 117:
 
}
 
}
  
var allPages;
 
var informatieLogTheCounter = {"Starttime":'9999-99-99T13:27:00.170Z', "Endtime":new Date().toISOString()};
 
var tx;
 
$.when(
 
$.ready,
 
mw.loader.using(['mediawiki.user', 'mediawiki.api'])
 
).then(function() {
 
 
if (mw.config.get('wgNamespaceNumber') === -1 && mw.config.get('wgTitle') === "LogTheCounter") {
 
if (mw.config.get('wgNamespaceNumber') === -1 && mw.config.get('wgTitle') === "LogTheCounter") {
 
document.title = 'Opslaan WikiStatistieken';
 
document.title = 'Opslaan WikiStatistieken';
document.getElementById('bodyContent').innerHTML = 'Pagina gereserveerd voor het opslaan van LogCounter. <br><span id="logthecounterx5"></span><button id="logthecounterbutton" onclick="goforitLogTheCounter();">Activeer deze functie</button><br>';
+
document.getElementById('bodyContent').innerHTML = `Op deze pagina kun je de Statistieken van WikiKids reseten, dit doen we elke zaterdag (\'s middags: tussen 13u en 19u).
console.log(!mw.user.options.exists('userjs-ltc'));
+
Als je op deze onderstaande knop drukt, moet je ongeveer 5 seconden wachten. Door op de knop te drukken doe je 2 bewerkingen. <br>
console.log(!mw.user.options.get('userjs-ltc'));
+
<span style="color: red;">Zodra de acties zijn uitgevoerd, wordt je doorgestuurd naar de hoofdpagina,
 +
als dat niet gebeurt, <a href="https://wikikids.nl/index.php?title=Overleg_gebruiker:Rots61&action=edit&section=new">klik hier</a> (KLIK). </span>
 +
Want dan zijn de statistieken niet opgeslagen. <br>
 +
<span id="logthecounterx5"></span><button id="logthecounterbutton" onclick="goforitLogTheCounter();" disabled>Activeer deze functie</button><br><br><br>
 +
Wil je geen meldingen meer ontvangen op zaterdag? Dan kun je je <a href="https://wikikids.nl/Speciaal:Voorkeuren#mw-prefsection-gadgets">hier (KLIK)</a> uitschrijven. Maak het vakje voor <b>WikiStats Opslaan</b> wit, en klik op opslaan. `;
 +
document.getElementById('firstHeading').innerHTML = 'Special:LogTheCounter (WikiStats opslaan)';
 +
 
 
if (!mw.user.options.exists('userjs-ltc')) {
 
if (!mw.user.options.exists('userjs-ltc')) {
document.getElementById('logthecounterx5').innerHTML = 'Je bent nog niet gemachtigd om de statistieken op te slaan. ';
+
document.getElementById('logthecounterx5').innerHTML = 'De statistieken zijn al opgeslagen of het is niet tussen tussen 13:00 en 19:00 op zaterdag.<br>';
document.getElementById('logthecounterbutton').disabled = true;  
 
 
} else {
 
} else {
 
tx = mw.user.options.get('userjs-ltc').slice(3,6);
 
tx = mw.user.options.get('userjs-ltc').slice(3,6);
 +
document.getElementById('logthecounterbutton').disabled = false;
 
}
 
}
 
}
 
}
});
+
checkDate();
 +
function checkDate() {
 +
let now = new Date();
 +
if (now.getUTCDay() !== 6) return;
 +
if (now.getUTCHours() < 11) return;
 +
if (now.getUTCHours() > 18) return;
 +
let date = now.getFullYear() + "" + addZero((now.getMonth() + 1)) + "" + addZero(now.getDate());
 +
new mw.Api().get( {
 +
  action: "query",
 +
  titles: [ "WikiKids:Statistieken/Logs/" + date],
 +
} ).then( function( ret ) {
 +
  $.each( ret.query.pages, function() {
 +
  console.log(this);
 +
  if ( this.missing !== "" ) {
 +
 
 +
    } else {
 +
    ltc_showMessage();
 +
    }
 +
    } );
 +
}, function( error ) {
 +
    ltc_showMessage();
 +
} );
 +
}
 +
 
 +
var allPages;
 +
var informatieLogTheCounter = {"Endtime":new Date().toISOString()};
 +
var tx;
 +
 
  
 
function goforitLogTheCounter(){
 
function goforitLogTheCounter(){
 +
window.onbeforeunload = function() {
 +
return true;
 +
};
 
     allPages = getPagesLogTheCounter();
 
     allPages = getPagesLogTheCounter();
 
     let now = new Date();
 
     let now = new Date();
Regel 142: Regel 179:
 
for (var x = 0; x < allPages.length; x++) {
 
for (var x = 0; x < allPages.length; x++) {
 
deleteit('t','title', x);
 
deleteit('t','title', x);
if (informatieLogTheCounter['Starttime'] > allPages[x]['updatedAt']) {
+
if (allPages[x]['mPV'] === 0) {
informatieLogTheCounter['Starttime'] = allPages[x]['updatedAt'];
+
delete allPages[x]['mPV'];
}
 
if ((allPages[x]['normalVisitors'] + allPages[x]['mainPageVisitors']) <= 5) {
 
delete allPages[x]['updatedAt'];
 
} else {
 
deleteit('uA','updatedAt', x);
 
}
 
if (allPages[x]['mainPageVisitors'] === 0) {
 
delete allPages[x]['mainPageVisitors'];
 
 
} else {
 
} else {
 
if (!(allPages[x].t.includes('Zoeken:') || allPages[x].t.includes('X:'))) {
 
if (!(allPages[x].t.includes('Zoeken:') || allPages[x].t.includes('X:'))) {
informatieLogTheCounter['Totalviews'] += allPages[x]['mainPageVisitors'];
+
informatieLogTheCounter['Totalviews'] += allPages[x]['mPV'];
 
}
 
}
deleteit('mPV', 'mainPageVisitors', x);
 
 
}
 
}
if (allPages[x]['normalVisitors'] === 0) {
+
if (allPages[x]['nV'] === 0) {
delete allPages[x]['normalVisitors'];
+
delete allPages[x]['nV'];
 
} else {
 
} else {
 
if (!(allPages[x].t.includes('Zoeken:') || allPages[x].t.includes('X:'))) {
 
if (!(allPages[x].t.includes('Zoeken:') || allPages[x].t.includes('X:'))) {
informatieLogTheCounter['Totalviews'] += allPages[x]['normalVisitors'];
+
informatieLogTheCounter['Totalviews'] += allPages[x]['nV'];
 
}
 
}
deleteit('nV','normalVisitors', x);
 
 
}
 
}
 
if (!(allPages[x].t.includes('Zoeken:') || allPages[x].t.includes('X:'))) {
 
if (!(allPages[x].t.includes('Zoeken:') || allPages[x].t.includes('X:'))) {
Regel 178: Regel 205:
 
         Object.getOwnPropertyDescriptor(allPages[x], old_key));
 
         Object.getOwnPropertyDescriptor(allPages[x], old_key));
 
     delete allPages[x][old_key];
 
     delete allPages[x][old_key];
 +
}
 +
 +
function ltc_showMessage() {
 +
try {
 +
document.getElementById('logthecounterbutton').disabled = false;
 +
document.getElementById('logthecounterx5').innerHTML = '';
 +
} catch (err) {
 +
}
 +
document.getElementById('siteNotice').innerHTML = '<a style="background:yellow" href="https://wikikids.nl/Speciaal:LogTheCounter">Klik hier om de statistieken op te slaan. (KLIK)</a>';
 
}
 
}

Huidige versie van 8 feb 2025 om 20:30

/* jshint sub:true maxerr:100000 */
// [[User:Rots61/Gadget-LogTheCounter.js]] gemaakt door [[User:Rots61]]

/*

var api = new mw.Api();
api.saveOption('userjs-ltc', 'x').then( x =>console.log(x));

*/
function addZero(number) {
	return number < 10 ? "0" + number : number;
}

function saveitlogthecounter() {
	if (Array.isArray(allPages)) {
        allPages = JSON.stringify(allPages);
    }
    date = new Date();
    date = date.getFullYear() + "" + addZero((date.getMonth() + 1)) + "" + addZero(date.getDate());
    api.get({
        action: 'query',
        prop: 'info',
        intoken: 'edit',
        titles: 'kaslv', //Pagina moet niet bestaan. 
    }).done(
        function (data) {
            edit_token = data.query.pages['-1'].edittoken;
        }).done(function (data) {
            api.post({
                'action': 'edit',
                'title': "Wikikids:Statistieken/Logs/" + date,
                'text': allPages,
                'summary': "Pagina opgeslagen met LogTheCounter.",
                'bot': true,
                'token': edit_token,
            }).done(
                function (data) {
                    if (data.edit.result == "Success") {
                        mw.notify("Hele pagina opgeslagen!", { autoHide: false });
                        deleteDataOnServer();
                    } else {
                        mw.notify("Opslaan mislukt, stuur Rots61 aub direct een berichtje.", { autoHide: false });
                    }
                    console.log(data.edit);
                    document.getElementsByTagName("h1")[0].textContent = "Opslaan gelukt!";
                });
        });      
    api.get({
        action: 'query',
        prop: 'info',
        intoken: 'edit',
        titles: 'kaslv', //Pagina moet niet bestaan. 
    }).done(
        function (data) {
            edit_token = data.query.pages['-1'].edittoken;
        }).done(function (data) {
            api.post({
                'action': 'edit',
                'title': "Wikikids:Statistieken/Logs/" + date + "/info",
                'text': JSON.stringify(informatieLogTheCounter),
                'summary': "Pagina opgeslagen met LogTheCounter.",
                'bot': true,
                'token': edit_token,
            }).done(
                function (data) {
                    if (data.edit.result == "Success") {
                        mw.notify("Pagina opgeslagen!", { autoHide: false });
                    } else {
                        mw.notify("Opslaan mislukt 2, stuur Rots61 aub direct een berichtje.", { autoHide: false });
                    }
                    console.log(data.edit);
                });
        });
}

function deleteDataOnServer() {
    var settings2 = {
	  "url": "https://wikikids.dekenos.nl/pages/delete",
	  "method": "POST",
	  "timeout": 0,
	  "headers": {
	    "Host": "wikikids.dekenos.nl",
	    "Content-Type": "application/json"
	  },
	  "data": JSON.stringify({
	    "message": 'oke'
	  }),
	};
	$.ajax(settings2).done(function (response) {
		mw.notify("Reseten statistieken2 gelukt", { autoHide: false });
		window.onbeforeunload = null;
		window.location.href = '/';
	}).catch(function (error) {
		if (error.responseText || JSON.parse(error.responseText).succes) {
			mw.notify("Reseten statistieken2 gelukt", { autoHide: false });
			window.onbeforeunload = null;
			window.location.href = '/';
		} else {
			mw.notify('Resetten mislukt, stuur Rots61 aub direct een berichtje.', {autoHide: false});
		}
	});
}
function getPagesLogTheCounter() {
    var pages = [];
    var request = new XMLHttpRequest();
    request.open('GET', 'https://wikikids.dekenos.nl/pages', false);
    request.send(null);
    if (request.status === 200) {
        pages = JSON.parse(request.responseText);
    }
    console.log(pages);
    // Sorteer de pagina's op het aantal bezoekers (hoog naar laag) (page.normalVisitors + page.mainPageVisitors)
    pages.sort(function (a, b) {
   		return b.normalVisitors + b.mainPageVisitors - a.normalVisitors - a.mainPageVisitors;
    });
    return pages;
}

if (mw.config.get('wgNamespaceNumber') === -1 && mw.config.get('wgTitle') === "LogTheCounter") {
	document.title = 'Opslaan WikiStatistieken';
	document.getElementById('bodyContent').innerHTML = `Op deze pagina kun je de Statistieken van WikiKids reseten, dit doen we elke zaterdag (\'s middags: tussen 13u en 19u). 
			Als je op deze onderstaande knop drukt, moet je ongeveer 5 seconden wachten. Door op de knop te drukken doe je 2 bewerkingen. <br>
			<span style="color: red;">Zodra de acties zijn uitgevoerd, wordt je doorgestuurd naar de hoofdpagina, 
			als dat niet gebeurt, <a href="https://wikikids.nl/index.php?title=Overleg_gebruiker:Rots61&action=edit&section=new">klik hier</a> (KLIK). </span>
			Want dan zijn de statistieken niet opgeslagen. <br>
			<span id="logthecounterx5"></span><button id="logthecounterbutton" onclick="goforitLogTheCounter();" disabled>Activeer deze functie</button><br><br><br>
			Wil je geen meldingen meer ontvangen op zaterdag? Dan kun je je <a href="https://wikikids.nl/Speciaal:Voorkeuren#mw-prefsection-gadgets">hier (KLIK)</a> uitschrijven. Maak het vakje voor <b>WikiStats Opslaan</b> wit, en klik op opslaan. `;
	document.getElementById('firstHeading').innerHTML = 'Special:LogTheCounter (WikiStats opslaan)';

	if (!mw.user.options.exists('userjs-ltc')) {
		document.getElementById('logthecounterx5').innerHTML = 'De statistieken zijn al opgeslagen of het is niet tussen tussen 13:00 en 19:00 op zaterdag.<br>';
	} else {
		tx = mw.user.options.get('userjs-ltc').slice(3,6);
		document.getElementById('logthecounterbutton').disabled = false; 
	}
}
checkDate(); 
function checkDate() {
	let now = new Date();
	if (now.getUTCDay() !== 6) return;
	if (now.getUTCHours() < 11) return;
	if (now.getUTCHours() > 18) return;
	let date = now.getFullYear() + "" + addZero((now.getMonth() + 1)) + "" + addZero(now.getDate());
	new mw.Api().get( {
	   action: "query",
	   titles: [ "WikiKids:Statistieken/Logs/" + date],
	} ).then( function( ret ) {
	   $.each( ret.query.pages, function() {
	   		console.log(this);
	   		if ( this.missing !== "" ) {
	   			
	    	} else {
	    		ltc_showMessage();
	    	}
	    } );
	}, function( error ) {
	    ltc_showMessage();
	} );
}

var allPages;
var informatieLogTheCounter = {"Endtime":new Date().toISOString()};
var tx;


function goforitLogTheCounter(){
	window.onbeforeunload = function() {
		return true;
	};
    allPages = getPagesLogTheCounter();
    let now = new Date();
	let onejan = new Date(now.getFullYear(), 0, 1);
	let week = Math.ceil((((now.getTime() - onejan.getTime()) / 86400000) + onejan.getDay() + 1) / 7);

	informatieLogTheCounter["Types"] = 'Mobiel';
    informatieLogTheCounter["Jaar-Week"] = now.getFullYear() + '' + week;
    informatieLogTheCounter["Totalpages"] = 0;
    informatieLogTheCounter['Totalviews'] = 0;
	for (var x = 0; x < allPages.length; x++) {
		deleteit('t','title', x);
		if (allPages[x]['mPV'] === 0) {
			delete allPages[x]['mPV'];
		} else {
			if (!(allPages[x].t.includes('Zoeken:') || allPages[x].t.includes('X:'))) {
				informatieLogTheCounter['Totalviews'] += allPages[x]['mPV'];
			}
		}
		if (allPages[x]['nV'] === 0) {
			delete allPages[x]['nV'];
		} else {
			if (!(allPages[x].t.includes('Zoeken:') || allPages[x].t.includes('X:'))) {
			informatieLogTheCounter['Totalviews'] += allPages[x]['nV'];
			}
		}
		if (!(allPages[x].t.includes('Zoeken:') || allPages[x].t.includes('X:'))) {
			informatieLogTheCounter["Totalpages"] += 1;
		}
	}
	console.log(allPages); 
	saveitlogthecounter();
}

function deleteit(new_key, old_key, x){
	Object.defineProperty(allPages[x], new_key,
        Object.getOwnPropertyDescriptor(allPages[x], old_key));
    delete allPages[x][old_key];
}

function ltc_showMessage() {
	try {
	document.getElementById('logthecounterbutton').disabled = false; 
	document.getElementById('logthecounterx5').innerHTML = '';
	} catch (err) {
	}
	document.getElementById('siteNotice').innerHTML = '<a style="background:yellow" href="https://wikikids.nl/Speciaal:LogTheCounter">Klik hier om de statistieken op te slaan. (KLIK)</a>';
}
Afkomstig van Wikikids , de interactieve Nederlandstalige Internet-encyclopedie voor en door kinderen. "https://wikikids.nl/index.php?title=Gebruiker:Rots61/Gadget-LogTheCounter.js&oldid=918465"