Gebruiker:MakiBoy/Gadget-LogCounter.js
Naar navigatie springen
Naar zoeken springen
Let op! Nadat je de veranderingen hebt opgeslagen, moet je de cache van je browser nog legen om ze daadwerkelijk te zien.
Mozilla (incl. Firefox) | ctrl-shift-r |
IE | ctrl-f5 |
Opera | f5 |
Safari | cmd-r |
Konqueror | f5 |
// [[User:MakiBoy/Gadget-LogCounter.js]] gemaakt door [[User:MakiBoy]]
var version = '2.0';
function parseNumber(number) {
return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
}
function showProject(pages) {
document.getElementsByTagName("h1")[0].textContent = "Speciaal:LogCounter";
document.title = "LogCounter - WikiKids";
var table = document.createElement('table');
table.classList.add('wikitable');
var tableHead = document.createElement('thead');
var tableHeadRow = document.createElement('tr');
var tableHeadTitles = ['Paginatitel', 'Laatst bezocht', 'Normaal', 'Hoofdpagina', 'Totaal aantal'];
var tableBody = document.createElement('tbody');
var currentPage = 1;
var rowsPerPage = 10;
var totalPages = Math.ceil(pages.length / rowsPerPage);
function showPage(pageNumber) {
currentPage = pageNumber;
tableBody.innerHTML = '';
var start = (currentPage - 1) * rowsPerPage;
var end = start + rowsPerPage;
var paginatedItems = pages.slice(start, end);
paginatedItems.forEach(function (page) {
var row = document.createElement('tr');
var totalVisitors = page.normalVisitors + page.mainPageVisitors;
var pageTitle = page.title.replace(/_/g, ' ');
row.innerHTML = `<td><a href="/${page.title}?x=N">${pageTitle}</a></td>
<td>${page.date}</td>
<td>${parseNumber(page.normalVisitors)}</td>
<td>${parseNumber(page.mainPageVisitors)}</td>
<td>${parseNumber(totalVisitors)}</td>`;
tableBody.appendChild(row);
});
}
showPage(1);
var pagination = document.createElement('div');
pagination.classList.add('pagination');
var prevButton = document.createElement('button');
prevButton.textContent = 'Vorige';
prevButton.addEventListener('click', function () {
if (currentPage > 1) {
showPage(currentPage - 1);
}
});
pagination.appendChild(prevButton);
var nextButton = document.createElement('button');
nextButton.textContent = 'Volgende';
nextButton.addEventListener('click', function () {
if (currentPage < totalPages) {
showPage(currentPage + 1);
}
});
pagination.appendChild(nextButton);
var pageCounter = document.createElement('span');
pageCounter.textContent = `Pagina ${currentPage} van ${totalPages}`;
pagination.appendChild(pageCounter);
tableHeadTitles.forEach(function (title) {
var tableHeadCell = document.createElement('th');
tableHeadCell.textContent = title;
tableHeadRow.appendChild(tableHeadCell);
});
tableHead.appendChild(tableHeadRow);
table.appendChild(tableHead);
table.appendChild(tableBody);
table.appendChild(pagination);
document.getElementById('bodyContent') && document.getElementById('bodyContent').appendChild(table);
}
function getPages() {
var pages = [];
var request = new XMLHttpRequest();
request.open('GET', 'https://wikikids.martvanweeghel.nl/pages', false);
request.send(null);
if (request.status === 200) {
pages = JSON.parse(request.responseText);
}
// 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') === "LogCounter") {
document.getElementById("footer-places").innerHTML += '<li id="footer-places-gadget-LogCounter">Script gemaakt door <a href="/User:MakiBoy" title="Gebruiker:MakiBoy">MakiBoy</a>, versie: ' + version + '</li>';
var allPages = getPages();
showProject(allPages);
}