Gebruiker:MakiBoy/Gadget-LogCounter.js: verschil tussen versies

Uit Wikikids
Naar navigatie springen Naar zoeken springen
Regel 1: Regel 1:
 
// [[User:MakiBoy/Gadget-LogCounter.js]] gemaakt door [[User:MakiBoy]]
 
// [[User:MakiBoy/Gadget-LogCounter.js]] gemaakt door [[User:MakiBoy]]
  
var version = '1.3';
+
var version = '2.0';
  
 
function parseNumber(number) {
 
function parseNumber(number) {
Regel 11: Regel 11:
 
     document.title = "LogCounter - WikiKids";
 
     document.title = "LogCounter - WikiKids";
  
     table = `<table class="wikitable">
+
     var table = document.createElement('table');
        <thead>
+
    table.classList.add('wikitable');
            <tr>
 
                <th>Paginatitel</th>
 
                <th>Laatst bezocht</th>
 
                <th>Normaal</th>
 
                <th>Hoofdpagina</th>
 
                <th>Totaal aantal</th>
 
            </tr>
 
        </thead>
 
        <tbody>
 
            ${pages.map((function (page) {
 
        var totalVisitors = page.normalVisitors + page.mainPageVisitors;
 
        var pageTitle = page.title.replace(/_/g, ' ');
 
        return `<tr>
 
                    <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>
 
                </tr>`;
 
    })).join('')}
 
            <tr>
 
                <td colspan="2">Totaal aantal bezoekers:</td>
 
                <td colspan="4"><b>${parseNumber(pages.reduce((function (total, page) {
 
        return total + page.normalVisitors + page.mainPageVisitors;
 
    }), 0))}</b></td>
 
            </tr>
 
        </tbody>
 
    </table>`;
 
  
     document.getElementById('bodyContent').innerHTML = table;
+
    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.lastVisited}</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);
 
}
 
}
  

Versie van 13 jan 2023 15:52

// [[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.lastVisited}</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);
}
Afkomstig van Wikikids , de interactieve Nederlandstalige Internet-encyclopedie voor en door kinderen. "https://wikikids.nl/index.php?title=Gebruiker:MakiBoy/Gadget-LogCounter.js&oldid=759820"